diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 8a56d15615..f1ccd42e62 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -6468,3 +6468,5 @@ Sorry for the inconvenience."; "VoiceChat.TapToViewCameraVideo" = "Tap to view camera video"; "VoiceChat.TapToViewScreenVideo" = "Tap to view screen sharing"; + +"WallpaperPreview.WallpaperColors" = "Colors"; diff --git a/submodules/AuthTransferUI/Sources/AuthTransferConfirmationScreen.swift b/submodules/AuthTransferUI/Sources/AuthTransferConfirmationScreen.swift index a7af260f9e..d5b76addce 100644 --- a/submodules/AuthTransferUI/Sources/AuthTransferConfirmationScreen.swift +++ b/submodules/AuthTransferUI/Sources/AuthTransferConfirmationScreen.swift @@ -30,7 +30,7 @@ public final class AuthDataTransferSplashScreen: ViewController { self.presentationData = context.sharedContext.currentPresentationData.with { $0 } let defaultTheme = NavigationBarTheme(rootControllerTheme: self.presentationData.theme) - let navigationBarTheme = NavigationBarTheme(buttonColor: defaultTheme.buttonColor, disabledButtonColor: defaultTheme.disabledButtonColor, primaryTextColor: defaultTheme.primaryTextColor, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: defaultTheme.badgeBackgroundColor, badgeStrokeColor: defaultTheme.badgeStrokeColor, badgeTextColor: defaultTheme.badgeTextColor) + let navigationBarTheme = NavigationBarTheme(buttonColor: defaultTheme.buttonColor, disabledButtonColor: defaultTheme.disabledButtonColor, primaryTextColor: defaultTheme.primaryTextColor, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: defaultTheme.badgeBackgroundColor, badgeStrokeColor: defaultTheme.badgeStrokeColor, badgeTextColor: defaultTheme.badgeTextColor) super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: navigationBarTheme, strings: NavigationBarStrings(back: self.presentationData.strings.Common_Back, close: self.presentationData.strings.Common_Close))) @@ -80,7 +80,7 @@ public final class AuthDataTransferSplashScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - (self.displayNode as! AuthDataTransferSplashScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationHeight, transition: transition) + (self.displayNode as! AuthDataTransferSplashScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/AuthTransferUI/Sources/AuthTransferScanScreen.swift b/submodules/AuthTransferUI/Sources/AuthTransferScanScreen.swift index c06059be3f..5fbd877788 100644 --- a/submodules/AuthTransferUI/Sources/AuthTransferScanScreen.swift +++ b/submodules/AuthTransferUI/Sources/AuthTransferScanScreen.swift @@ -90,7 +90,7 @@ public final class AuthTransferScanScreen: ViewController { self.presentationData = context.sharedContext.currentPresentationData.with { $0 } - let navigationBarTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: .white, primaryTextColor: .white, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) + let navigationBarTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: .white, primaryTextColor: .white, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: navigationBarTheme, strings: NavigationBarStrings(back: self.presentationData.strings.Common_Back, close: self.presentationData.strings.Common_Close))) @@ -205,7 +205,7 @@ public final class AuthTransferScanScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - (self.displayNode as! AuthTransferScanScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationHeight, transition: transition) + (self.displayNode as! AuthTransferScanScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutController.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutController.swift index 560dd508be..0c67b6e05c 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutController.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutController.swift @@ -115,11 +115,7 @@ public final class BotCheckoutController: ViewController { } override public func loadDisplayNode() { - let displayNode = BotCheckoutControllerNode(controller: self, navigationBar: self.navigationBar!, updateNavigationOffset: { [weak self] offset in - if let strongSelf = self { - strongSelf.navigationOffset = offset - } - }, context: self.context, invoice: self.invoice, messageId: self.messageId, inputData: self.inputData, present: { [weak self] c, a in + let displayNode = BotCheckoutControllerNode(controller: self, navigationBar: self.navigationBar!, context: self.context, invoice: self.invoice, messageId: self.messageId, inputData: self.inputData, present: { [weak self] c, a in self?.present(c, in: .window(.root), with: a) }, dismissAnimated: { [weak self] in self?.dismiss() @@ -150,7 +146,7 @@ public final class BotCheckoutController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition, additionalInsets: UIEdgeInsets()) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition, additionalInsets: UIEdgeInsets()) } @objc private func cancelPressed() { diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift index ad1356d7d0..884fd4f68a 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutControllerNode.swift @@ -538,7 +538,7 @@ final class BotCheckoutControllerNode: ItemListControllerNode, PKPaymentAuthoriz private var passwordTip: String? private var passwordTipDisposable: Disposable? - init(controller: BotCheckoutController?, navigationBar: NavigationBar, updateNavigationOffset: @escaping (CGFloat) -> Void, context: AccountContext, invoice: TelegramMediaInvoice, messageId: MessageId, inputData: Promise, present: @escaping (ViewController, Any?) -> Void, dismissAnimated: @escaping () -> Void, completed: @escaping (String, MessageId?) -> Void) { + init(controller: BotCheckoutController?, navigationBar: NavigationBar, context: AccountContext, invoice: TelegramMediaInvoice, messageId: MessageId, inputData: Promise, present: @escaping (ViewController, Any?) -> Void, dismissAnimated: @escaping () -> Void, completed: @escaping (String, MessageId?) -> Void) { self.controller = controller self.context = context self.messageId = messageId @@ -598,7 +598,7 @@ final class BotCheckoutControllerNode: ItemListControllerNode, PKPaymentAuthoriz self.inProgressDimNode.isUserInteractionEnabled = false self.inProgressDimNode.backgroundColor = self.presentationData.theme.list.plainBackgroundColor.withAlphaComponent(0.5) - super.init(controller: nil, navigationBar: navigationBar, updateNavigationOffset: updateNavigationOffset, state: signal) + super.init(controller: nil, navigationBar: navigationBar, state: signal) self.arguments = arguments diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift index 64d7b0cf5f..a1f316815e 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutInfoController.swift @@ -144,7 +144,7 @@ final class BotCheckoutInfoController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func cancelPressed() { diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift index 637962b491..a5d7cb506d 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutNativeCardEntryController.swift @@ -142,7 +142,7 @@ final class BotCheckoutNativeCardEntryController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func cancelPressed() { diff --git a/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift b/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift index 6a0fcc693b..8f555ac9ac 100644 --- a/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift +++ b/submodules/BotPaymentsUI/Sources/BotCheckoutWebInteractionController.swift @@ -75,7 +75,7 @@ final class BotCheckoutWebInteractionController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } override var presentationController: UIPresentationController? { diff --git a/submodules/BotPaymentsUI/Sources/BotReceiptController.swift b/submodules/BotPaymentsUI/Sources/BotReceiptController.swift index 7469586563..b8b2036b2b 100644 --- a/submodules/BotPaymentsUI/Sources/BotReceiptController.swift +++ b/submodules/BotPaymentsUI/Sources/BotReceiptController.swift @@ -48,11 +48,7 @@ public final class BotReceiptController: ViewController { } override public func loadDisplayNode() { - let displayNode = BotReceiptControllerNode(controller: nil, navigationBar: self.navigationBar!, updateNavigationOffset: { [weak self] offset in - if let strongSelf = self { - strongSelf.navigationOffset = offset - } - }, context: self.context, messageId: self.messageId, dismissAnimated: { [weak self] in + let displayNode = BotReceiptControllerNode(controller: nil, navigationBar: self.navigationBar!, context: self.context, messageId: self.messageId, dismissAnimated: { [weak self] in self?.dismiss() }) @@ -79,7 +75,7 @@ public final class BotReceiptController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition, additionalInsets: UIEdgeInsets()) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition, additionalInsets: UIEdgeInsets()) } @objc private func cancelPressed() { diff --git a/submodules/BotPaymentsUI/Sources/BotReceiptControllerNode.swift b/submodules/BotPaymentsUI/Sources/BotReceiptControllerNode.swift index 522e9f91bf..dbffb11746 100644 --- a/submodules/BotPaymentsUI/Sources/BotReceiptControllerNode.swift +++ b/submodules/BotPaymentsUI/Sources/BotReceiptControllerNode.swift @@ -280,7 +280,7 @@ final class BotReceiptControllerNode: ItemListControllerNode { private let actionButtonPanelSeparator: ASDisplayNode private let actionButton: BotCheckoutActionButton - init(controller: ItemListController?, navigationBar: NavigationBar, updateNavigationOffset: @escaping (CGFloat) -> Void, context: AccountContext, messageId: MessageId, dismissAnimated: @escaping () -> Void) { + init(controller: ItemListController?, navigationBar: NavigationBar, context: AccountContext, messageId: MessageId, dismissAnimated: @escaping () -> Void) { self.context = context self.dismissAnimated = dismissAnimated @@ -304,7 +304,7 @@ final class BotReceiptControllerNode: ItemListControllerNode { self.actionButton = BotCheckoutActionButton(activeFillColor: self.presentationData.theme.list.itemAccentColor, foregroundColor: self.presentationData.theme.list.plainBackgroundColor) self.actionButton.setState(.active(self.presentationData.strings.Common_Done)) - super.init(controller: controller, navigationBar: navigationBar, updateNavigationOffset: updateNavigationOffset, state: signal) + super.init(controller: controller, navigationBar: navigationBar, state: signal) self.dataRequestDisposable = (context.engine.payments.requestBotPaymentReceipt(messageId: messageId) |> deliverOnMainQueue).start(next: { [weak self] receipt in if let strongSelf = self { diff --git a/submodules/CallListUI/Sources/CallListController.swift b/submodules/CallListUI/Sources/CallListController.swift index dc53949168..2f9faa7e85 100644 --- a/submodules/CallListUI/Sources/CallListController.swift +++ b/submodules/CallListUI/Sources/CallListController.swift @@ -273,7 +273,7 @@ public final class CallListController: TelegramBaseController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func callPressed() { diff --git a/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift b/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift index 4c9001312c..ec7421a578 100644 --- a/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift +++ b/submodules/ChatImportUI/Sources/ChatImportActivityScreen.swift @@ -814,7 +814,7 @@ public final class ChatImportActivityScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func beginImport() { diff --git a/submodules/ChatListUI/Sources/ChatListController.swift b/submodules/ChatListUI/Sources/ChatListController.swift index babc8ab979..5cb9fd7fbf 100644 --- a/submodules/ChatListUI/Sources/ChatListController.swift +++ b/submodules/ChatListUI/Sources/ChatListController.swift @@ -1134,7 +1134,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController return } let count = ChatControllerCount.with({ $0 }) - if count != 0 { + if count > 1 { strongSelf.present(textAlertController(context: strongSelf.context, title: "", text: "ChatControllerCount \(count)", actions: [TextAlertAction(type: .defaultAction, title: "OK", action: {})]), in: .window(.root)) } }) @@ -1400,8 +1400,10 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController tabContainerOffset += layout.statusBarHeight ?? 0.0 tabContainerOffset += 44.0 + 20.0 } + + let navigationBarHeight = self.navigationBar?.frame.maxY ?? 0.0 - transition.updateFrame(node: self.tabContainerNode, frame: CGRect(origin: CGPoint(x: 0.0, y: self.visualNavigationInsetHeight - self.additionalHeight - 46.0 + tabContainerOffset), size: CGSize(width: layout.size.width, height: 46.0))) + transition.updateFrame(node: self.tabContainerNode, frame: CGRect(origin: CGPoint(x: 0.0, y: navigationBarHeight - self.additionalNavigationBarHeight - 46.0 + tabContainerOffset), size: CGSize(width: layout.size.width, height: 46.0))) self.tabContainerNode.update(size: CGSize(width: layout.size.width, height: 46.0), sideInset: layout.safeInsets.left, filters: self.tabContainerData?.0 ?? [], selectedFilter: self.chatListDisplayNode.containerNode.currentItemFilter, isReordering: self.chatListDisplayNode.isReorderingFilters || (self.chatListDisplayNode.containerNode.currentItemNode.currentState.editing && !self.chatListDisplayNode.didBeginSelectingChatsWhileEditing), isEditing: false, transitionFraction: self.chatListDisplayNode.containerNode.transitionFraction, presentationData: self.presentationData, transition: .animated(duration: 0.4, curve: .spring)) if let tabContainerData = self.tabContainerData { self.chatListDisplayNode.inlineTabContainerNode.isHidden = !tabContainerData.1 || tabContainerData.0.count <= 1 @@ -1410,7 +1412,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController } self.chatListDisplayNode.inlineTabContainerNode.update(size: CGSize(width: layout.size.width, height: 40.0), sideInset: layout.safeInsets.left, filters: self.tabContainerData?.0 ?? [], selectedFilter: self.chatListDisplayNode.containerNode.currentItemFilter, isReordering: self.chatListDisplayNode.isReorderingFilters || (self.chatListDisplayNode.containerNode.currentItemNode.currentState.editing && !self.chatListDisplayNode.didBeginSelectingChatsWhileEditing), isEditing: false, transitionFraction: self.chatListDisplayNode.containerNode.transitionFraction, presentationData: self.presentationData, transition: .animated(duration: 0.4, curve: .spring)) - self.chatListDisplayNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, visualNavigationHeight: self.visualNavigationInsetHeight, cleanNavigationBarHeight: self.cleanNavigationHeight, transition: transition) + self.chatListDisplayNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, visualNavigationHeight: navigationBarHeight, cleanNavigationBarHeight: self.cleanNavigationHeight, transition: transition) } override public func navigationStackConfigurationUpdated(next: [ViewController]) { diff --git a/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift b/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift index 4bb50c8669..cbb766ae94 100644 --- a/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift +++ b/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift @@ -515,7 +515,7 @@ public enum ChatListSearchEntry: Comparable, Identifiable { let header = ChatListSearchItemHeader(type: .messages, theme: presentationData.theme, strings: presentationData.strings, actionTitle: nil, action: nil) let selection: ChatHistoryMessageSelection = selected.flatMap { .selectable(selected: $0) } ?? .none if let tagMask = tagMask, tagMask != .photoOrVideo { - return ListMessageItem(presentationData: ChatPresentationData(theme: ChatPresentationThemeData(theme: presentationData.theme, wallpaper: .builtin(WallpaperSettings())), fontSize: presentationData.fontSize, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, disableAnimations: presentationData.disableAnimations, largeEmoji: false, chatBubbleCorners: PresentationChatBubbleCorners(mainRadius: 0.0, auxiliaryRadius: 0.0, mergeBubbleCorners: false)), context: context, chatLocation: .peer(peer.peerId), interaction: listInteraction, message: message, selection: selection, displayHeader: enableHeaders && !displayCustomHeader, customHeader: nil, hintIsLink: tagMask == .webPage, isGlobalSearchResult: true) + return ListMessageItem(presentationData: ChatPresentationData(theme: ChatPresentationThemeData(theme: presentationData.theme, wallpaper: .builtin(nil, WallpaperSettings())), fontSize: presentationData.fontSize, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, disableAnimations: presentationData.disableAnimations, largeEmoji: false, chatBubbleCorners: PresentationChatBubbleCorners(mainRadius: 0.0, auxiliaryRadius: 0.0, mergeBubbleCorners: false)), context: context, chatLocation: .peer(peer.peerId), interaction: listInteraction, message: message, selection: selection, displayHeader: enableHeaders && !displayCustomHeader, customHeader: nil, hintIsLink: tagMask == .webPage, isGlobalSearchResult: true) } else { return ChatListItem(presentationData: presentationData, context: context, peerGroupId: .root, filterData: nil, index: ChatListIndex(pinningIndex: nil, messageIndex: message.index), content: .peer(messages: [message], peer: peer, combinedReadState: readState, isRemovedFromTotalUnreadCount: false, presence: nil, summaryInfo: ChatListMessageTagSummaryInfo(), embeddedState: nil, inputActivities: nil, promoInfo: nil, ignoreUnreadBadge: true, displayAsMessage: false, hasFailedMessages: false), editing: false, hasActiveRevealControls: false, selected: false, header: tagMask == nil ? header : nil, enableContextActions: false, hiddenOffset: false, interaction: interaction) } diff --git a/submodules/ContactListUI/Sources/ContactsController.swift b/submodules/ContactListUI/Sources/ContactsController.swift index aecb825611..df4c849526 100644 --- a/submodules/ContactListUI/Sources/ContactsController.swift +++ b/submodules/ContactListUI/Sources/ContactsController.swift @@ -419,7 +419,7 @@ public class ContactsController: ViewController { self.validLayout = layout - self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func activateSearch() { diff --git a/submodules/ContactListUI/Sources/InviteContactsController.swift b/submodules/ContactListUI/Sources/InviteContactsController.swift index bf20344656..4a62814ed5 100644 --- a/submodules/ContactListUI/Sources/InviteContactsController.swift +++ b/submodules/ContactListUI/Sources/InviteContactsController.swift @@ -199,7 +199,7 @@ public class InviteContactsController: ViewController, MFMessageComposeViewContr override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func activateSearch() { diff --git a/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift index da30560db6..a71f96627e 100644 --- a/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift +++ b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift @@ -339,7 +339,7 @@ public final class AuthorizationSequenceCountrySelectionController: ViewControll override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func cancelPressed() { diff --git a/submodules/Display/Source/LegacyPresentedController.swift b/submodules/Display/Source/LegacyPresentedController.swift index 6403a8088a..9d81b122c0 100644 --- a/submodules/Display/Source/LegacyPresentedController.swift +++ b/submodules/Display/Source/LegacyPresentedController.swift @@ -122,7 +122,7 @@ open class LegacyPresentedController: ViewController { override open func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } override open func dismiss(completion: (() -> Void)? = nil) { diff --git a/submodules/Display/Source/NavigationBar.swift b/submodules/Display/Source/NavigationBar.swift index 9123374a6d..441e3f8c80 100644 --- a/submodules/Display/Source/NavigationBar.swift +++ b/submodules/Display/Source/NavigationBar.swift @@ -5,8 +5,8 @@ private let titleFont = Font.with(size: 17.0, design: .regular, weight: .semibol private var backArrowImageCache: [Int32: UIImage] = [:] -class SparseNode: ASDisplayNode { - override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { +public final class SparseNode: ASDisplayNode { + override public func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { let result = super.hitTest(point, with: event) if result != self.view { return result @@ -32,16 +32,18 @@ public final class NavigationBarTheme { public let disabledButtonColor: UIColor public let primaryTextColor: UIColor public let backgroundColor: UIColor + public let enableBackgroundBlur: Bool public let separatorColor: UIColor public let badgeBackgroundColor: UIColor public let badgeStrokeColor: UIColor public let badgeTextColor: UIColor - public init(buttonColor: UIColor, disabledButtonColor: UIColor, primaryTextColor: UIColor, backgroundColor: UIColor, separatorColor: UIColor, badgeBackgroundColor: UIColor, badgeStrokeColor: UIColor, badgeTextColor: UIColor) { + public init(buttonColor: UIColor, disabledButtonColor: UIColor, primaryTextColor: UIColor, backgroundColor: UIColor, enableBackgroundBlur: Bool, separatorColor: UIColor, badgeBackgroundColor: UIColor, badgeStrokeColor: UIColor, badgeTextColor: UIColor) { self.buttonColor = buttonColor self.disabledButtonColor = disabledButtonColor self.primaryTextColor = primaryTextColor self.backgroundColor = backgroundColor + self.enableBackgroundBlur = enableBackgroundBlur self.separatorColor = separatorColor self.badgeBackgroundColor = badgeBackgroundColor self.badgeStrokeColor = badgeStrokeColor @@ -49,7 +51,7 @@ public final class NavigationBarTheme { } public func withUpdatedSeparatorColor(_ color: UIColor) -> NavigationBarTheme { - return NavigationBarTheme(buttonColor: self.buttonColor, disabledButtonColor: self.disabledButtonColor, primaryTextColor: self.primaryTextColor, backgroundColor: self.backgroundColor, separatorColor: color, badgeBackgroundColor: self.badgeBackgroundColor, badgeStrokeColor: self.badgeStrokeColor, badgeTextColor: self.badgeTextColor) + return NavigationBarTheme(buttonColor: self.buttonColor, disabledButtonColor: self.disabledButtonColor, primaryTextColor: self.primaryTextColor, backgroundColor: self.backgroundColor, enableBackgroundBlur: self.enableBackgroundBlur, separatorColor: color, badgeBackgroundColor: self.badgeBackgroundColor, badgeStrokeColor: self.badgeStrokeColor, badgeTextColor: self.badgeTextColor) } } @@ -116,63 +118,73 @@ enum NavigationPreviousAction: Equatable { } public final class NavigationBackgroundNode: ASDisplayNode { + private var _color: UIColor public var color: UIColor { - didSet { - if !self.color.isEqual(oldValue) { - self.backgroundNode.backgroundColor = self.color - self.updateBackgroundBlur() - } + get { + return self._color + } set(value) { + self.updateColor(color: value, transition: .immediate) } } + private let enableBlur: Bool + private var effectView: UIVisualEffectView? private let backgroundNode: ASDisplayNode - public init(color: UIColor) { - self.color = color + public init(color: UIColor, enableBlur: Bool = true) { + self._color = .clear + self.enableBlur = enableBlur self.backgroundNode = ASDisplayNode() - self.backgroundNode.backgroundColor = self.color super.init() self.addSubnode(self.backgroundNode) - self.updateBackgroundBlur() + self.updateColor(color: color, transition: .immediate) } - private func updateBackgroundBlur() { - if self.color.alpha > 0.1 && self.color.alpha < 0.95 { - self.effectView?.removeFromSuperview() - self.effectView = nil - - if self.color.lightness > 0.6 { - if #available(iOS 13.0, *) { - self.effectView = UIVisualEffectView(effect: UIBlurEffect(style: .systemUltraThinMaterialLight)) + private func updateBackgroundBlur(forceKeepBlur: Bool) { + if self.enableBlur && ((self.color.alpha > 0.1 && self.color.alpha < 0.95) || forceKeepBlur) { + if self.effectView == nil { + let effectView: UIVisualEffectView + if self.color.lightness > 0.6 { + effectView = UIVisualEffectView(effect: UIBlurEffect(style: .light)) } else { - self.effectView = UIVisualEffectView(effect: UIBlurEffect(style: .light)) + effectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) + } + + for subview in effectView.subviews { + if subview.description.contains("_UIVisualEffectSubview") { + subview.isHidden = true + } } - } else { - if #available(iOS 13.0, *) { - self.effectView = UIVisualEffectView(effect: UIBlurEffect(style: .systemUltraThinMaterialDark)) - } else { - self.effectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) - } - } - if let effectView = self.effectView { if let sublayer = effectView.layer.sublayers?[0], let filters = sublayer.filters { + let allowedKeys: [String] = [ + "colorSaturate", + "gaussianBlur" + ] sublayer.filters = filters.filter { filter in guard let filter = filter as? NSObject else { return true } - if String(describing: filter) != "gaussianBlur" { + let filterName = String(describing: filter) + if !allowedKeys.contains(filterName) { return false } + /*if filterName == "colorSaturate" { + filter.setValue(2.8 as NSNumber, forKey: "inputAmount") + } else if filterName == "gaussianBlur" { + filter.setValue(5.0 as NSNumber, forKey: "inputRadius") + }*/ return true } } + effectView.frame = self.bounds + self.effectView = effectView self.view.insertSubview(effectView, at: 0) } } else if let effectView = self.effectView { @@ -181,6 +193,17 @@ public final class NavigationBackgroundNode: ASDisplayNode { } } + public func updateColor(color: UIColor, forceKeepBlur: Bool = false, transition: ContainedViewLayoutTransition) { + if self._color.isEqual(color) { + return + } + self._color = color + + transition.updateBackgroundColor(node: self.backgroundNode, color: self.color) + + self.updateBackgroundBlur(forceKeepBlur: forceKeepBlur) + } + public func update(size: CGSize, transition: ContainedViewLayoutTransition) { let contentFrame = CGRect(origin: CGPoint(), size: size) transition.updateFrame(node: self.backgroundNode, frame: contentFrame) @@ -202,7 +225,7 @@ open class NavigationBar: ASDisplayNode { var presentationData: NavigationBarPresentationData - private var validLayout: (CGSize, CGFloat, CGFloat, CGFloat, CGFloat, CGFloat, Bool)? + private var validLayout: (size: CGSize, defaultHeight: CGFloat, additionalTopHeight: CGFloat, additionalContentHeight: CGFloat, additionalBackgroundHeight: CGFloat, leftInset: CGFloat, rightInset: CGFloat, appearsHidden: Bool)? private var requestedLayout: Bool = false var requestContainerLayout: (ContainedViewLayoutTransition) -> Void = { _ in } @@ -389,40 +412,6 @@ open class NavigationBar: ASDisplayNode { var previousItemBackListenerKey: Int? private func updateAccessibilityElements() { - /*if !self.isNodeLoaded { - return - } - var accessibilityElements: [AnyObject] = [] - - if self.leftButtonNode.supernode != nil { - accessibilityElements.append(self.leftButtonNode) - } - if self.titleNode.supernode != nil { - accessibilityElements.append(self.titleNode) - } - if let titleView = self.titleView, titleView.superview != nil { - accessibilityElements.append(titleView) - } - if self.rightButtonNode.supernode != nil { - accessibilityElements.append(self.rightButtonNode) - } - - var updated = false - if let currentAccessibilityElements = self.accessibilityElements { - if currentAccessibilityElements.count != accessibilityElements.count { - updated = true - } else { - for i in 0 ..< accessibilityElements.count { - let element = currentAccessibilityElements[i] as AnyObject - if element !== accessibilityElements[i] { - updated = true - } - } - } - } - if updated { - self.accessibilityElements = accessibilityElements - }*/ } override open var accessibilityElements: [Any]? { @@ -716,12 +705,19 @@ open class NavigationBar: ASDisplayNode { self.updateAccessibilityElements() } - private let backgroundNode: NavigationBackgroundNode + public let backgroundNode: NavigationBackgroundNode public let backButtonNode: NavigationButtonNode public let badgeNode: NavigationBarBadgeNode public let backButtonArrow: ASImageNode public let leftButtonNode: NavigationButtonNode public let rightButtonNode: NavigationButtonNode + public let additionalContentNode: SparseNode + + public func reattachAdditionalContentNode() { + if self.additionalContentNode.supernode !== self { + self.insertSubnode(self.additionalContentNode, aboveSubnode: self.clippingNode) + } + } private var _transitionState: NavigationBarTransitionState? var transitionState: NavigationBarTransitionState? { @@ -833,12 +829,14 @@ open class NavigationBar: ASDisplayNode { self.stripeNode.backgroundColor = self.presentationData.theme.separatorColor self.backgroundNode = NavigationBackgroundNode(color: self.presentationData.theme.backgroundColor) + self.additionalContentNode = SparseNode() super.init() self.addSubnode(self.backgroundNode) self.addSubnode(self.buttonsContainerNode) self.addSubnode(self.clippingNode) + self.addSubnode(self.additionalContentNode) self.backgroundColor = nil self.isOpaque = false @@ -928,16 +926,16 @@ open class NavigationBar: ASDisplayNode { if let validLayout = self.validLayout, self.requestedLayout { self.requestedLayout = false - self.updateLayout(size: validLayout.0, defaultHeight: validLayout.1, additionalHeight: validLayout.2, additionalBackgroundHeight: validLayout.3, leftInset: validLayout.4, rightInset: validLayout.5, appearsHidden: validLayout.6, transition: .immediate) + self.updateLayout(size: validLayout.size, defaultHeight: validLayout.defaultHeight, additionalTopHeight: validLayout.additionalTopHeight, additionalContentHeight: validLayout.additionalContentHeight, additionalBackgroundHeight: validLayout.additionalBackgroundHeight, leftInset: validLayout.leftInset, rightInset: validLayout.rightInset, appearsHidden: validLayout.appearsHidden, transition: .immediate) } } - func updateLayout(size: CGSize, defaultHeight: CGFloat, additionalHeight: CGFloat, additionalBackgroundHeight: CGFloat, leftInset: CGFloat, rightInset: CGFloat, appearsHidden: Bool, transition: ContainedViewLayoutTransition) { + func updateLayout(size: CGSize, defaultHeight: CGFloat, additionalTopHeight: CGFloat, additionalContentHeight: CGFloat, additionalBackgroundHeight: CGFloat, leftInset: CGFloat, rightInset: CGFloat, appearsHidden: Bool, transition: ContainedViewLayoutTransition) { if self.layoutSuspended { return } - self.validLayout = (size, defaultHeight, additionalHeight, additionalBackgroundHeight, leftInset, rightInset, appearsHidden) + self.validLayout = (size, defaultHeight, additionalTopHeight, additionalContentHeight, additionalBackgroundHeight, leftInset, rightInset, appearsHidden) let backgroundFrame = CGRect(origin: CGPoint(), size: CGSize(width: size.width, height: size.height + additionalBackgroundHeight)) if self.backgroundNode.frame != backgroundFrame { @@ -951,6 +949,7 @@ open class NavigationBar: ASDisplayNode { let backButtonInset: CGFloat = leftInset + 27.0 transition.updateFrame(node: self.clippingNode, frame: CGRect(origin: CGPoint(), size: size)) + transition.updateFrame(node: self.additionalContentNode, frame: CGRect(origin: CGPoint(), size: size)) transition.updateFrame(node: self.buttonsContainerNode, frame: CGRect(origin: CGPoint(), size: size)) var expansionHeight: CGFloat = 0.0 if let contentNode = self.contentNode { @@ -958,12 +957,12 @@ open class NavigationBar: ASDisplayNode { switch contentNode.mode { case .replacement: expansionHeight = contentNode.height - defaultHeight - contentNodeFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: size.height)) + contentNodeFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: size.height - additionalContentHeight)) case .expansion: expansionHeight = contentNode.height let additionalExpansionHeight: CGFloat = self.secondaryContentNode != nil && appearsHidden ? NavigationBar.defaultSecondaryContentHeight : 0.0 - contentNodeFrame = CGRect(origin: CGPoint(x: 0.0, y: size.height - expansionHeight - apparentAdditionalHeight - additionalExpansionHeight), size: CGSize(width: size.width, height: expansionHeight)) + contentNodeFrame = CGRect(origin: CGPoint(x: 0.0, y: size.height - additionalContentHeight - expansionHeight - apparentAdditionalHeight - additionalExpansionHeight), size: CGSize(width: size.width, height: expansionHeight)) if appearsHidden { if self.secondaryContentNode != nil { contentNodeFrame.origin.y += NavigationBar.defaultSecondaryContentHeight @@ -974,10 +973,10 @@ open class NavigationBar: ASDisplayNode { contentNode.updateLayout(size: contentNodeFrame.size, leftInset: leftInset, rightInset: rightInset, transition: transition) } - transition.updateFrame(node: self.stripeNode, frame: CGRect(x: 0.0, y: size.height, width: size.width, height: UIScreenPixel)) + transition.updateFrame(node: self.stripeNode, frame: CGRect(x: 0.0, y: size.height + additionalBackgroundHeight, width: size.width, height: UIScreenPixel)) - let nominalHeight: CGFloat = defaultHeight - additionalHeight - let contentVerticalOrigin = size.height - nominalHeight - expansionHeight - additionalHeight - apparentAdditionalHeight + let nominalHeight: CGFloat = defaultHeight + let contentVerticalOrigin = additionalTopHeight var leftTitleInset: CGFloat = leftInset + 1.0 var rightTitleInset: CGFloat = rightInset + 1.0 @@ -1184,8 +1183,8 @@ open class NavigationBar: ASDisplayNode { let node = NavigationButtonNode() node.updateManualText(self.backButtonNode.manualText) node.color = accentColor - if let (size, defaultHeight, _, _, _, _, _) = self.validLayout { - let _ = node.updateLayout(constrainedSize: CGSize(width: size.width, height: defaultHeight)) + if let validLayout = self.validLayout { + let _ = node.updateLayout(constrainedSize: CGSize(width: validLayout.size.width, height: validLayout.defaultHeight)) node.frame = self.backButtonNode.frame } return node @@ -1207,8 +1206,8 @@ open class NavigationBar: ASDisplayNode { } node.updateItems(items) node.color = accentColor - if let (size, defaultHeight, _, _, _, _, _) = self.validLayout { - let _ = node.updateLayout(constrainedSize: CGSize(width: size.width, height: defaultHeight)) + if let validLayout = self.validLayout { + let _ = node.updateLayout(constrainedSize: CGSize(width: validLayout.size.width, height: validLayout.defaultHeight)) node.frame = self.backButtonNode.frame } return node diff --git a/submodules/Display/Source/TabBarContollerNode.swift b/submodules/Display/Source/TabBarContollerNode.swift index 50757aa762..93bf14dac1 100644 --- a/submodules/Display/Source/TabBarContollerNode.swift +++ b/submodules/Display/Source/TabBarContollerNode.swift @@ -12,7 +12,6 @@ final class TabBarControllerNode: ASDisplayNode { private var theme: TabBarControllerTheme let tabBarNode: TabBarNode private let disabledOverlayNode: ASDisplayNode - private let navigationBar: NavigationBar? private var toolbarNode: ToolbarNode? private let toolbarActionSelected: (ToolbarActionOption) -> Void private let disabledPressed: () -> Void @@ -27,9 +26,8 @@ final class TabBarControllerNode: ASDisplayNode { } } - init(theme: TabBarControllerTheme, navigationBar: NavigationBar?, itemSelected: @escaping (Int, Bool, [ASDisplayNode]) -> Void, contextAction: @escaping (Int, ContextExtractedContentContainingNode, ContextGesture) -> Void, swipeAction: @escaping (Int, TabBarItemSwipeDirection) -> Void, toolbarActionSelected: @escaping (ToolbarActionOption) -> Void, disabledPressed: @escaping () -> Void) { + init(theme: TabBarControllerTheme, itemSelected: @escaping (Int, Bool, [ASDisplayNode]) -> Void, contextAction: @escaping (Int, ContextExtractedContentContainingNode, ContextGesture) -> Void, swipeAction: @escaping (Int, TabBarItemSwipeDirection) -> Void, toolbarActionSelected: @escaping (ToolbarActionOption) -> Void, disabledPressed: @escaping () -> Void) { self.theme = theme - self.navigationBar = navigationBar self.tabBarNode = TabBarNode(theme: theme, itemSelected: itemSelected, contextAction: contextAction, swipeAction: swipeAction) self.disabledOverlayNode = ASDisplayNode() self.disabledOverlayNode.backgroundColor = theme.backgroundColor.withAlphaComponent(0.5) diff --git a/submodules/Display/Source/TabBarController.swift b/submodules/Display/Source/TabBarController.swift index 6adad68208..64665cd01b 100644 --- a/submodules/Display/Source/TabBarController.swift +++ b/submodules/Display/Source/TabBarController.swift @@ -87,7 +87,6 @@ open class TabBarController: ViewController { } } - public private(set) var controllers: [ViewController] = [] private let _ready = Promise() @@ -115,14 +114,6 @@ open class TabBarController: ViewController { var currentController: ViewController? - open override var navigationBarRequiresEntireLayoutUpdate: Bool { - if let currentController = currentController { - return currentController.navigationBarRequiresEntireLayoutUpdate - } else { - return false - } - } - private let pendingControllerDisposable = MetaDisposable() private var theme: TabBarControllerTheme @@ -130,7 +121,7 @@ open class TabBarController: ViewController { public init(navigationBarPresentationData: NavigationBarPresentationData, theme: TabBarControllerTheme) { self.theme = theme - super.init(navigationBarPresentationData: navigationBarPresentationData) + super.init(navigationBarPresentationData: nil) self.scrollToTop = { [weak self] in guard let strongSelf = self else { @@ -151,7 +142,6 @@ open class TabBarController: ViewController { } public func updateTheme(navigationBarPresentationData: NavigationBarPresentationData, theme: TabBarControllerTheme) { - self.navigationBar?.updatePresentationData(navigationBarPresentationData) if self.theme !== theme { self.theme = theme if self.isNodeLoaded { @@ -193,7 +183,7 @@ open class TabBarController: ViewController { } override open func loadDisplayNode() { - self.displayNode = TabBarControllerNode(theme: self.theme, navigationBar: self.navigationBar, itemSelected: { [weak self] index, longTap, itemNodes in + self.displayNode = TabBarControllerNode(theme: self.theme, itemSelected: { [weak self] index, longTap, itemNodes in if let strongSelf = self { if longTap, let controller = strongSelf.controllers[index] as? TabBarContainedController { controller.presentTabBarPreviewingController(sourceNodes: itemNodes) @@ -302,37 +292,16 @@ open class TabBarController: ViewController { if let _selectedIndex = self._selectedIndex, _selectedIndex < self.controllers.count { self.currentController = self.controllers[_selectedIndex] } - - var displayNavigationBar = false + if let currentController = self.currentController { currentController.willMove(toParent: self) self.tabBarControllerNode.currentControllerNode = currentController.displayNode - currentController.navigationBar?.isHidden = true self.addChild(currentController) currentController.didMove(toParent: self) - - currentController.navigationBar?.layoutSuspended = true - currentController.navigationItem.setTarget(self.navigationItem) - displayNavigationBar = currentController.displayNavigationBar - self.navigationBar?.setContentNode(currentController.navigationBar?.contentNode, animated: false) - self.navigationBar?.setSecondaryContentNode(currentController.navigationBar?.secondaryContentNode) + currentController.displayNode.recursivelyEnsureDisplaySynchronously(true) self.statusBar.statusBarStyle = currentController.statusBar.statusBarStyle - if let navigationBarPresentationData = currentController.navigationBar?.presentationData { - self.navigationBar?.updatePresentationData(navigationBarPresentationData) - } } else { - self.navigationItem.title = nil - self.navigationItem.leftBarButtonItem = nil - self.navigationItem.rightBarButtonItem = nil - self.navigationItem.titleView = nil - self.navigationItem.backBarButtonItem = nil - self.navigationBar?.setContentNode(nil, animated: false) - self.navigationBar?.setSecondaryContentNode(nil) - displayNavigationBar = false - } - if self.displayNavigationBar != displayNavigationBar { - self.setDisplayNavigationBar(displayNavigationBar) } if let layout = self.validLayout { diff --git a/submodules/Display/Source/ViewController.swift b/submodules/Display/Source/ViewController.swift index abdf10f2b3..924cd07fe6 100644 --- a/submodules/Display/Source/ViewController.swift +++ b/submodules/Display/Source/ViewController.swift @@ -74,6 +74,16 @@ public enum TabBarItemContextActionType { } @objc open class ViewController: UIViewController, ContainableController { + public struct NavigationLayout { + public var navigationFrame: CGRect + public var defaultContentHeight: CGFloat + + public init(navigationFrame: CGRect, defaultContentHeight: CGFloat) { + self.navigationFrame = navigationFrame + self.defaultContentHeight = defaultContentHeight + } + } + private var validLayout: ContainerViewLayout? public var currentlyAppliedLayout: ContainerViewLayout? { return self.validLayout @@ -194,35 +204,28 @@ public enum TabBarItemContextActionType { open var hasActiveInput: Bool = false private var navigationBarOrigin: CGFloat = 0.0 - - public var navigationOffset: CGFloat = 0.0 { - didSet { - if let navigationBar = self.navigationBar { - var navigationBarFrame = navigationBar.frame - navigationBarFrame.origin.y = self.navigationBarOrigin + self.navigationOffset - navigationBar.frame = navigationBarFrame - } - } - } - - open var navigationHeight: CGFloat { - if let navigationBar = self.navigationBar { - return navigationBar.frame.maxY + + open func navigationLayout(layout: ContainerViewLayout) -> NavigationLayout { + let statusBarHeight: CGFloat = layout.statusBarHeight ?? 0.0 + var defaultNavigationBarHeight: CGFloat + if self._presentedInModal { + defaultNavigationBarHeight = 56.0 } else { - return 0.0 + defaultNavigationBarHeight = 44.0 } - } - - open var navigationInsetHeight: CGFloat { - if let navigationBar = self.navigationBar { - var height = navigationBar.frame.maxY - if let contentNode = navigationBar.contentNode, case .expansion = contentNode.mode { - height += contentNode.nominalHeight - contentNode.height - } - return height - } else { - return 0.0 + let navigationBarHeight: CGFloat = statusBarHeight + (self.navigationBar?.contentHeight(defaultHeight: defaultNavigationBarHeight) ?? defaultNavigationBarHeight) + + var navigationBarFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: layout.size.width, height: navigationBarHeight)) + + navigationBarFrame.size.height += self.additionalNavigationBarHeight + + if !self.displayNavigationBar { + navigationBarFrame.origin.y = -navigationBarFrame.size.height } + + self.navigationBarOrigin = navigationBarFrame.origin.y + + return NavigationLayout(navigationFrame: navigationBarFrame, defaultContentHeight: defaultNavigationBarHeight) } open var cleanNavigationHeight: CGFloat { @@ -236,21 +239,11 @@ public enum TabBarItemContextActionType { return 0.0 } } - - open var visualNavigationInsetHeight: CGFloat { - if let navigationBar = self.navigationBar { - let height = navigationBar.frame.maxY - if let contentNode = navigationBar.contentNode, case .expansion = contentNode.mode { - //height += contentNode.height - } - return height - } else { - return 0.0 - } + + open var additionalNavigationBarHeight: CGFloat { + return 0.0 } - public var additionalNavigationBarHeight: CGFloat = 0.0 - public var additionalSideInsets: UIEdgeInsets = UIEdgeInsets() private let _ready = Promise(true) @@ -375,42 +368,31 @@ public enum TabBarItemContextActionType { } open func updateNavigationBarLayout(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { - self.applyNavigationBarLayout(layout, additionalBackgroundHeight: 0.0, transition: transition) + self.applyNavigationBarLayout(layout, navigationLayout: self.navigationLayout(layout: layout), additionalBackgroundHeight: 0.0, transition: transition) } - public func applyNavigationBarLayout(_ layout: ContainerViewLayout, additionalBackgroundHeight: CGFloat, transition: ContainedViewLayoutTransition) { + public func applyNavigationBarLayout(_ layout: ContainerViewLayout, navigationLayout: NavigationLayout, additionalBackgroundHeight: CGFloat, transition: ContainedViewLayoutTransition) { let statusBarHeight: CGFloat = layout.statusBarHeight ?? 0.0 - var defaultNavigationBarHeight: CGFloat - if self._presentedInModal { - defaultNavigationBarHeight = 56.0 - } else { - defaultNavigationBarHeight = 44.0 - } - let navigationBarHeight: CGFloat = statusBarHeight + (self.navigationBar?.contentHeight(defaultHeight: defaultNavigationBarHeight) ?? defaultNavigationBarHeight) - let navigationBarOffset: CGFloat - if statusBarHeight.isZero { - navigationBarOffset = 0.0 - } else { - navigationBarOffset = 0.0 - } - var navigationBarFrame = CGRect(origin: CGPoint(x: 0.0, y: navigationBarOffset), size: CGSize(width: layout.size.width, height: navigationBarHeight)) + var navigationBarFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: layout.size.width, height: navigationLayout.navigationFrame.maxY)) if !self.displayNavigationBar { navigationBarFrame.origin.y = -navigationBarFrame.size.height } self.navigationBarOrigin = navigationBarFrame.origin.y - navigationBarFrame.origin.y += self.navigationOffset if let navigationBar = self.navigationBar { if let contentNode = navigationBar.contentNode, case .expansion = contentNode.mode, !self.displayNavigationBar { - navigationBarFrame.origin.y += contentNode.height + statusBarHeight + navigationBarFrame.origin.y -= navigationLayout.defaultContentHeight + navigationBarFrame.size.height += contentNode.height + navigationLayout.defaultContentHeight + statusBarHeight + //navigationBarFrame.origin.y += contentNode.height + statusBarHeight } if let _ = navigationBar.contentNode, let _ = navigationBar.secondaryContentNode, !self.displayNavigationBar { - navigationBarFrame.origin.y += NavigationBar.defaultSecondaryContentHeight + navigationBarFrame.size.height += NavigationBar.defaultSecondaryContentHeight + //navigationBarFrame.origin.y += NavigationBar.defaultSecondaryContentHeight } - navigationBar.updateLayout(size: navigationBarFrame.size, defaultHeight: defaultNavigationBarHeight, additionalHeight: 0.0, additionalBackgroundHeight: additionalBackgroundHeight, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, appearsHidden: !self.displayNavigationBar, transition: transition) + navigationBar.updateLayout(size: navigationBarFrame.size, defaultHeight: navigationLayout.defaultContentHeight, additionalTopHeight: statusBarHeight, additionalContentHeight: self.additionalNavigationBarHeight, additionalBackgroundHeight: additionalBackgroundHeight, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, appearsHidden: !self.displayNavigationBar, transition: transition) if !transition.isAnimated { navigationBar.layer.cancelAnimationsRecursive(key: "bounds") navigationBar.layer.cancelAnimationsRecursive(key: "position") diff --git a/submodules/GalleryUI/Sources/GalleryController.swift b/submodules/GalleryUI/Sources/GalleryController.swift index b65f7d7c67..91075c1e42 100644 --- a/submodules/GalleryUI/Sources/GalleryController.swift +++ b/submodules/GalleryUI/Sources/GalleryController.swift @@ -323,8 +323,8 @@ public struct GalleryConfiguration { } public class GalleryController: ViewController, StandalonePresentableController { - public static let darkNavigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: UIColor(white: 0.0, alpha: 0.6), separatorColor: UIColor(white: 0.0, alpha: 0.8), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) - public static let lightNavigationTheme = NavigationBarTheme(buttonColor: UIColor(rgb: 0x007ee5), disabledButtonColor: UIColor(rgb: 0xd0d0d0), primaryTextColor: .black, backgroundColor: UIColor(red: 0.968626451, green: 0.968626451, blue: 0.968626451, alpha: 1.0), separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) + public static let darkNavigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: UIColor(white: 0.0, alpha: 0.6), enableBackgroundBlur: false, separatorColor: UIColor(white: 0.0, alpha: 0.8), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) + public static let lightNavigationTheme = NavigationBarTheme(buttonColor: UIColor(rgb: 0x007ee5), disabledButtonColor: UIColor(rgb: 0xd0d0d0), primaryTextColor: .black, backgroundColor: UIColor(red: 0.968626451, green: 0.968626451, blue: 0.968626451, alpha: 1.0), enableBackgroundBlur: false, separatorColor: UIColor(red: 0.6953125, green: 0.6953125, blue: 0.6953125, alpha: 1.0), badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) private var galleryNode: GalleryControllerNode { return self.displayNode as! GalleryControllerNode @@ -1291,7 +1291,7 @@ public class GalleryController: ViewController, StandalonePresentableController super.containerLayoutUpdated(layout, transition: transition) self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) if !self.adjustedForInitialPreviewingLayout && self.isPresentedInPreviewingContext() { self.adjustedForInitialPreviewingLayout = true diff --git a/submodules/GalleryUI/Sources/SecretMediaPreviewController.swift b/submodules/GalleryUI/Sources/SecretMediaPreviewController.swift index 931d409726..815dbeecf5 100644 --- a/submodules/GalleryUI/Sources/SecretMediaPreviewController.swift +++ b/submodules/GalleryUI/Sources/SecretMediaPreviewController.swift @@ -497,7 +497,7 @@ public final class SecretMediaPreviewController: ViewController { super.containerLayoutUpdated(layout, transition: transition) self.controllerNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } override public func dismiss(completion: (() -> Void)? = nil) { diff --git a/submodules/GameUI/Sources/GameController.swift b/submodules/GameUI/Sources/GameController.swift index d9cbd217e1..5b77a2a9f8 100644 --- a/submodules/GameUI/Sources/GameController.swift +++ b/submodules/GameUI/Sources/GameController.swift @@ -79,7 +79,7 @@ public final class GameController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } override public var presentationController: UIPresentationController? { diff --git a/submodules/GradientBackground/Sources/GradientBackground.swift b/submodules/GradientBackground/Sources/GradientBackground.swift index bdc227d368..1e82731be4 100644 --- a/submodules/GradientBackground/Sources/GradientBackground.swift +++ b/submodules/GradientBackground/Sources/GradientBackground.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit public protocol GradientBackgroundNode: ASDisplayNode { + func updateColors(colors: [UIColor]) func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) func animateEvent(transition: ContainedViewLayoutTransition) } diff --git a/submodules/GradientBackground/Sources/SoftwareGradientBackground.swift b/submodules/GradientBackground/Sources/SoftwareGradientBackground.swift index e87ac14ac4..7184859206 100644 --- a/submodules/GradientBackground/Sources/SoftwareGradientBackground.swift +++ b/submodules/GradientBackground/Sources/SoftwareGradientBackground.swift @@ -121,10 +121,16 @@ final class SoftwareGradientBackgroundNode: ASDisplayNode, GradientBackgroundNod private let contentView: UIImageView private var validPhase: Int? + private var invalidated: Bool = false private var validLayout: CGSize? - private var timer: Timer? + private var colors: [UIColor] = [ + UIColor(rgb: 0x7FA381), + UIColor(rgb: 0xFFF5C5), + UIColor(rgb: 0x336F55), + UIColor(rgb: 0xFBE37D) + ] private struct PhaseTransitionKey: Hashable { var width: Int @@ -144,73 +150,9 @@ final class SoftwareGradientBackgroundNode: ASDisplayNode, GradientBackgroundNod self.view.addSubview(self.contentView) self.phase = 0 - - self.backgroundColor = .white - - /*if #available(iOS 10.0, *) { - let timer = Timer(timeInterval: 1.0, repeats: true, block: { [weak self] _ in - guard let strongSelf = self else { - return - } - strongSelf.phase += 1 - if let size = strongSelf.validLayout { - strongSelf.updateLayout(size: size, transition: .animated(duration: 0.5, curve: .spring)) - } - }) - self.timer = timer - RunLoop.main.add(timer, forMode: .common) - }*/ } deinit { - self.timer?.invalidate() - } - - private func generateAndCachePhaseTransition(key: PhaseTransitionKey) { - DispatchQueue.global().async { [weak self] in - let basePositions: [CGPoint] = [ - CGPoint(x: 0.80, y: 0.10), - CGPoint(x: 0.60, y: 0.20), - CGPoint(x: 0.35, y: 0.25), - CGPoint(x: 0.25, y: 0.60), - CGPoint(x: 0.20, y: 0.90), - CGPoint(x: 0.40, y: 0.80), - CGPoint(x: 0.65, y: 0.75), - CGPoint(x: 0.75, y: 0.40) - ] - - let colors: [UIColor] = [ - UIColor(rgb: 0x7FA381), - UIColor(rgb: 0xFFF5C5), - UIColor(rgb: 0x336F55), - UIColor(rgb: 0xFBE37D) - ] - - var images: [UIImage] = [] - - let previousPositions = gatherPositions(shiftArray(array: basePositions, offset: key.fromPhase % 8)) - let positions = gatherPositions(shiftArray(array: basePositions, offset: key.toPhase % 8)) - - let startTime = CFAbsoluteTimeGetCurrent() - for i in 0 ..< key.numberOfFrames { - let t = key.curve.solve(at: CGFloat(i) / CGFloat(key.numberOfFrames - 1)) - - let morphedPositions = Array(zip(previousPositions, positions).map { previous, current -> CGPoint in - return interpolatePoints(previous, current, at: t) - }) - - images.append(generateGradient(size: CGSize(width: key.width, height: key.height), colors: colors, positions: morphedPositions)) - } - print("Animation cached in \((CFAbsoluteTimeGetCurrent() - startTime) * 1000.0) ms") - - DispatchQueue.main.async { - guard let strongSelf = self else { - return - } - strongSelf.cachedPhaseTransition.removeAll() - strongSelf.cachedPhaseTransition[key] = images - } - } } public func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) { @@ -230,40 +172,27 @@ final class SoftwareGradientBackgroundNode: ASDisplayNode, GradientBackgroundNod CGPoint(x: 0.75, y: 0.40) ] - let colors: [UIColor] = [ - UIColor(rgb: 0x7FA381), - UIColor(rgb: 0xFFF5C5), - UIColor(rgb: 0x336F55), - UIColor(rgb: 0xFBE37D) - ] - let positions = gatherPositions(shiftArray(array: basePositions, offset: self.phase % 8)) if let validPhase = self.validPhase { - if validPhase != self.phase { + if validPhase != self.phase || self.invalidated { self.validPhase = self.phase + self.invalidated = false let previousPositions = gatherPositions(shiftArray(array: basePositions, offset: validPhase % 8)) if case let .animated(duration, curve) = transition { var images: [UIImage] = [] - let cacheKey = PhaseTransitionKey(width: Int(imageSize.width), height: Int(imageSize.height), fromPhase: validPhase, toPhase: self.phase, numberOfFrames: Int(duration * 60), curve: curve) - if let current = self.cachedPhaseTransition[cacheKey] { - images = current - } else { - let startTime = CFAbsoluteTimeGetCurrent() - let maxFrame = Int(duration * 30) - for i in 0 ..< maxFrame { - let t = curve.solve(at: CGFloat(i) / CGFloat(maxFrame - 1)) + let maxFrame = Int(duration * 30) + for i in 0 ..< maxFrame { + let t = curve.solve(at: CGFloat(i) / CGFloat(maxFrame - 1)) - let morphedPositions = Array(zip(previousPositions, positions).map { previous, current -> CGPoint in - return interpolatePoints(previous, current, at: t) - }) + let morphedPositions = Array(zip(previousPositions, positions).map { previous, current -> CGPoint in + return interpolatePoints(previous, current, at: t) + }) - images.append(generateGradient(size: imageSize, colors: colors, positions: morphedPositions)) - } - print("Animation generated in \((CFAbsoluteTimeGetCurrent() - startTime) * 1000.0) ms") + images.append(generateGradient(size: imageSize, colors: self.colors, positions: morphedPositions)) } self.contentView.image = images.last @@ -284,6 +213,14 @@ final class SoftwareGradientBackgroundNode: ASDisplayNode, GradientBackgroundNod transition.updateFrame(view: self.contentView, frame: CGRect(origin: CGPoint(), size: size)) } + public func updateColors(colors: [UIColor]) { + self.colors = colors + self.invalidated = true + if let size = self.validLayout { + self.updateLayout(size: size, transition: .immediate) + } + } + public func animateEvent(transition: ContainedViewLayoutTransition) { if self.phase == 0 { self.phase = 7 diff --git a/submodules/HashtagSearchUI/Sources/HashtagSearchController.swift b/submodules/HashtagSearchUI/Sources/HashtagSearchController.swift index 1bbf864d87..693401351e 100644 --- a/submodules/HashtagSearchUI/Sources/HashtagSearchController.swift +++ b/submodules/HashtagSearchUI/Sources/HashtagSearchController.swift @@ -126,6 +126,6 @@ public final class HashtagSearchController: TelegramBaseController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/ImportStickerPackUI/Sources/ImportStickerPackController.swift b/submodules/ImportStickerPackUI/Sources/ImportStickerPackController.swift index 4720502686..a90b7dbe85 100644 --- a/submodules/ImportStickerPackUI/Sources/ImportStickerPackController.swift +++ b/submodules/ImportStickerPackUI/Sources/ImportStickerPackController.swift @@ -101,7 +101,7 @@ public final class ImportStickerPackController: ViewController, StandalonePresen override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/InstantPageUI/Sources/InstantPageController.swift b/submodules/InstantPageUI/Sources/InstantPageController.swift index 474edd941a..a4502426d2 100644 --- a/submodules/InstantPageUI/Sources/InstantPageController.swift +++ b/submodules/InstantPageUI/Sources/InstantPageController.swift @@ -182,6 +182,6 @@ public final class InstantPageController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift index 0f8f16c9c3..fa8909089b 100644 --- a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift +++ b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift @@ -462,6 +462,6 @@ public class InstantPageGalleryController: ViewController, StandalonePresentable super.containerLayoutUpdated(layout, transition: transition) self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/InstantPageUI/Sources/InstantPageReferenceController.swift b/submodules/InstantPageUI/Sources/InstantPageReferenceController.swift index 4768118441..fbf69ad4c7 100644 --- a/submodules/InstantPageUI/Sources/InstantPageReferenceController.swift +++ b/submodules/InstantPageUI/Sources/InstantPageReferenceController.swift @@ -74,6 +74,6 @@ final class InstantPageReferenceController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/InviteLinksUI/Sources/InviteLinkQRCodeController.swift b/submodules/InviteLinksUI/Sources/InviteLinkQRCodeController.swift index aec9ecee79..a13cdeb9a7 100644 --- a/submodules/InviteLinksUI/Sources/InviteLinkQRCodeController.swift +++ b/submodules/InviteLinksUI/Sources/InviteLinkQRCodeController.swift @@ -143,7 +143,7 @@ public final class InviteLinkQRCodeController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } class Node: ViewControllerTracingNode, UIScrollViewDelegate { diff --git a/submodules/ItemListUI/Sources/ItemListController.swift b/submodules/ItemListUI/Sources/ItemListController.swift index 73a09858ce..8f57656f5d 100644 --- a/submodules/ItemListUI/Sources/ItemListController.swift +++ b/submodules/ItemListUI/Sources/ItemListController.swift @@ -444,11 +444,7 @@ open class ItemListController: ViewController, KeyShortcutResponder, Presentable } |> map { ($0.presentationData, $1) } - let displayNode = ItemListControllerNode(controller: self, navigationBar: self.navigationBar!, updateNavigationOffset: { [weak self] offset in - if let strongSelf = self { - strongSelf.navigationOffset = offset - } - }, state: nodeState) + let displayNode = ItemListControllerNode(controller: self, navigationBar: self.navigationBar!, state: nodeState) displayNode.dismiss = { [weak self] in self?.presentingViewController?.dismiss(animated: true, completion: nil) } @@ -476,7 +472,7 @@ open class ItemListController: ViewController, KeyShortcutResponder, Presentable self.validLayout = layout - (self.displayNode as! ItemListControllerNode).containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, transition: transition, additionalInsets: self.additionalInsets) + (self.displayNode as! ItemListControllerNode).containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, transition: transition, additionalInsets: self.additionalInsets) } @objc func leftNavigationButtonPressed() { diff --git a/submodules/ItemListUI/Sources/ItemListControllerNode.swift b/submodules/ItemListUI/Sources/ItemListControllerNode.swift index d988e238ba..25c3bcc01c 100644 --- a/submodules/ItemListUI/Sources/ItemListControllerNode.swift +++ b/submodules/ItemListUI/Sources/ItemListControllerNode.swift @@ -227,7 +227,7 @@ public final class ItemListControllerNodeView: UITracingLayerView { weak var controller: ItemListController? } -open class ItemListControllerNode: ASDisplayNode, UIScrollViewDelegate { +open class ItemListControllerNode: ASDisplayNode { private var _ready = ValuePromise() open var ready: Signal { return self._ready.get() @@ -261,8 +261,7 @@ open class ItemListControllerNode: ASDisplayNode, UIScrollViewDelegate { private var appliedEnsureVisibleItemTag: ItemListItemTag? private var afterLayoutActions: [() -> Void] = [] - - public let updateNavigationOffset: (CGFloat) -> Void + public var dismiss: (() -> Void)? public var visibleEntriesUpdated: ((ItemListNodeVisibleEntries) -> Void)? @@ -282,9 +281,8 @@ open class ItemListControllerNode: ASDisplayNode, UIScrollViewDelegate { var alwaysSynchronous = false - public init(controller: ItemListController?, navigationBar: NavigationBar, updateNavigationOffset: @escaping (CGFloat) -> Void, state: Signal<(ItemListPresentationData, (ItemListNodeState, Any)), NoError>) { + public init(controller: ItemListController?, navigationBar: NavigationBar, state: Signal<(ItemListPresentationData, (ItemListNodeState, Any)), NoError>) { self.navigationBar = navigationBar - self.updateNavigationOffset = updateNavigationOffset self.listNode = ListView() self.leftOverlayNode = ASDisplayNode() @@ -820,11 +818,6 @@ open class ItemListControllerNode: ASDisplayNode, UIScrollViewDelegate { self.searchNode?.scrollToTop() } - open func scrollViewDidScroll(_ scrollView: UIScrollView) { - let distanceFromEquilibrium = scrollView.contentOffset.y - scrollView.contentSize.height / 3.0 - self.updateNavigationOffset(-distanceFromEquilibrium) - } - open func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) { targetContentOffset.pointee = scrollView.contentOffset diff --git a/submodules/JoinLinkPreviewUI/Sources/JoinLinkPreviewController.swift b/submodules/JoinLinkPreviewUI/Sources/JoinLinkPreviewController.swift index ea5de677db..e44ea25125 100644 --- a/submodules/JoinLinkPreviewUI/Sources/JoinLinkPreviewController.swift +++ b/submodules/JoinLinkPreviewUI/Sources/JoinLinkPreviewController.swift @@ -117,7 +117,7 @@ public final class JoinLinkPreviewController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func join() { diff --git a/submodules/LanguageLinkPreviewUI/Sources/LanguageLinkPreviewController.swift b/submodules/LanguageLinkPreviewUI/Sources/LanguageLinkPreviewController.swift index fb69b70373..56d168908f 100644 --- a/submodules/LanguageLinkPreviewUI/Sources/LanguageLinkPreviewController.swift +++ b/submodules/LanguageLinkPreviewUI/Sources/LanguageLinkPreviewController.swift @@ -107,7 +107,7 @@ public final class LanguageLinkPreviewController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func activate() { diff --git a/submodules/LegacyUI/Sources/LegacyController.swift b/submodules/LegacyUI/Sources/LegacyController.swift index df58f2cbe3..5fdeaa4f3a 100644 --- a/submodules/LegacyUI/Sources/LegacyController.swift +++ b/submodules/LegacyUI/Sources/LegacyController.swift @@ -478,7 +478,7 @@ open class LegacyController: ViewController, PresentableController { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) if let legacyTelegramController = self.legacyController as? TGViewController { var duration: TimeInterval = 0.0 if case let .animated(transitionDuration, _) = transition { diff --git a/submodules/LocationUI/Sources/LocationDistancePickerScreen.swift b/submodules/LocationUI/Sources/LocationDistancePickerScreen.swift index ece1421f38..bb338c6e11 100644 --- a/submodules/LocationUI/Sources/LocationDistancePickerScreen.swift +++ b/submodules/LocationUI/Sources/LocationDistancePickerScreen.swift @@ -115,7 +115,7 @@ final class LocationDistancePickerScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/LocationUI/Sources/LocationPickerController.swift b/submodules/LocationUI/Sources/LocationPickerController.swift index 0d9fb08ea1..cabb04b08d 100644 --- a/submodules/LocationUI/Sources/LocationPickerController.swift +++ b/submodules/LocationUI/Sources/LocationPickerController.swift @@ -319,7 +319,7 @@ public final class LocationPickerController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func cancelPressed() { diff --git a/submodules/LocationUI/Sources/LocationViewController.swift b/submodules/LocationUI/Sources/LocationViewController.swift index e99daa8f99..54fcf2468a 100644 --- a/submodules/LocationUI/Sources/LocationViewController.swift +++ b/submodules/LocationUI/Sources/LocationViewController.swift @@ -495,7 +495,7 @@ public final class LocationViewController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func cancelPressed() { diff --git a/submodules/PasscodeUI/Sources/PasscodeEntryController.swift b/submodules/PasscodeUI/Sources/PasscodeEntryController.swift index ad96c44ada..7c61f2a950 100644 --- a/submodules/PasscodeUI/Sources/PasscodeEntryController.swift +++ b/submodules/PasscodeUI/Sources/PasscodeEntryController.swift @@ -267,7 +267,7 @@ public final class PasscodeEntryController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } public override func dismiss(completion: (() -> Void)? = nil) { diff --git a/submodules/PasscodeUI/Sources/PasscodeSetupController.swift b/submodules/PasscodeUI/Sources/PasscodeSetupController.swift index 33a9f3cb4a..47873beb62 100644 --- a/submodules/PasscodeUI/Sources/PasscodeSetupController.swift +++ b/submodules/PasscodeUI/Sources/PasscodeSetupController.swift @@ -143,7 +143,7 @@ public final class PasscodeSetupController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func nextPressed() { diff --git a/submodules/PassportUI/Sources/Form/FormController.swift b/submodules/PassportUI/Sources/Form/FormController.swift index d0ce8c2905..aebd1cea99 100644 --- a/submodules/PassportUI/Sources/Form/FormController.swift +++ b/submodules/PassportUI/Sources/Form/FormController.swift @@ -45,6 +45,6 @@ public class FormController Void)? = nil) { diff --git a/submodules/PassportUI/Sources/SecureIdDocumentGalleryController.swift b/submodules/PassportUI/Sources/SecureIdDocumentGalleryController.swift index ce02da88e0..8216885c40 100644 --- a/submodules/PassportUI/Sources/SecureIdDocumentGalleryController.swift +++ b/submodules/PassportUI/Sources/SecureIdDocumentGalleryController.swift @@ -254,7 +254,7 @@ class SecureIdDocumentGalleryController: ViewController, StandalonePresentableCo super.containerLayoutUpdated(layout, transition: transition) self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) if firstLayout { firstLayout = false diff --git a/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationController.swift b/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationController.swift index 9760ad783d..2fcb198ecb 100644 --- a/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationController.swift +++ b/submodules/PasswordSetupUI/Sources/SetupTwoStepVerificationController.swift @@ -39,7 +39,7 @@ public class SetupTwoStepVerificationController: ViewController { self.presentationData = context.sharedContext.currentPresentationData.with { $0 } - super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: NavigationBarTheme(buttonColor: self.presentationData.theme.rootController.navigationBar.accentTextColor, disabledButtonColor: self.presentationData.theme.rootController.navigationBar.disabledButtonColor, primaryTextColor: self.presentationData.theme.rootController.navigationBar.primaryTextColor, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear), strings: NavigationBarStrings(presentationStrings: self.presentationData.strings))) + super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: NavigationBarTheme(buttonColor: self.presentationData.theme.rootController.navigationBar.accentTextColor, disabledButtonColor: self.presentationData.theme.rootController.navigationBar.disabledButtonColor, primaryTextColor: self.presentationData.theme.rootController.navigationBar.primaryTextColor, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear), strings: NavigationBarStrings(presentationStrings: self.presentationData.strings))) self.statusBar.statusBarStyle = self.presentationData.theme.rootController.statusBarStyle.style @@ -151,7 +151,7 @@ public class SetupTwoStepVerificationController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func nextPressed() { diff --git a/submodules/PasswordSetupUI/Sources/TwoFactorAuthDataInputScreen.swift b/submodules/PasswordSetupUI/Sources/TwoFactorAuthDataInputScreen.swift index a4f3dcc72a..aa7100dcd0 100644 --- a/submodules/PasswordSetupUI/Sources/TwoFactorAuthDataInputScreen.swift +++ b/submodules/PasswordSetupUI/Sources/TwoFactorAuthDataInputScreen.swift @@ -34,7 +34,7 @@ public final class TwoFactorDataInputScreen: ViewController { self.presentationData = context.sharedContext.currentPresentationData.with { $0 } let defaultTheme = NavigationBarTheme(rootControllerTheme: self.presentationData.theme) - let navigationBarTheme = NavigationBarTheme(buttonColor: defaultTheme.buttonColor, disabledButtonColor: defaultTheme.disabledButtonColor, primaryTextColor: defaultTheme.primaryTextColor, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: defaultTheme.badgeBackgroundColor, badgeStrokeColor: defaultTheme.badgeStrokeColor, badgeTextColor: defaultTheme.badgeTextColor) + let navigationBarTheme = NavigationBarTheme(buttonColor: defaultTheme.buttonColor, disabledButtonColor: defaultTheme.disabledButtonColor, primaryTextColor: defaultTheme.primaryTextColor, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: defaultTheme.badgeBackgroundColor, badgeStrokeColor: defaultTheme.badgeStrokeColor, badgeTextColor: defaultTheme.badgeTextColor) super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: navigationBarTheme, strings: NavigationBarStrings(back: self.presentationData.strings.Common_Back, close: self.presentationData.strings.Common_Close))) @@ -410,7 +410,7 @@ public final class TwoFactorDataInputScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - (self.displayNode as! TwoFactorDataInputScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationHeight, transition: transition) + (self.displayNode as! TwoFactorDataInputScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/PasswordSetupUI/Sources/TwoFactorAuthSplashScreen.swift b/submodules/PasswordSetupUI/Sources/TwoFactorAuthSplashScreen.swift index af6154e147..95dc652d89 100644 --- a/submodules/PasswordSetupUI/Sources/TwoFactorAuthSplashScreen.swift +++ b/submodules/PasswordSetupUI/Sources/TwoFactorAuthSplashScreen.swift @@ -28,7 +28,7 @@ public final class TwoFactorAuthSplashScreen: ViewController { self.presentationData = context.sharedContext.currentPresentationData.with { $0 } let defaultTheme = NavigationBarTheme(rootControllerTheme: self.presentationData.theme) - let navigationBarTheme = NavigationBarTheme(buttonColor: defaultTheme.buttonColor, disabledButtonColor: defaultTheme.disabledButtonColor, primaryTextColor: defaultTheme.primaryTextColor, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: defaultTheme.badgeBackgroundColor, badgeStrokeColor: defaultTheme.badgeStrokeColor, badgeTextColor: defaultTheme.badgeTextColor) + let navigationBarTheme = NavigationBarTheme(buttonColor: defaultTheme.buttonColor, disabledButtonColor: defaultTheme.disabledButtonColor, primaryTextColor: defaultTheme.primaryTextColor, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: defaultTheme.badgeBackgroundColor, badgeStrokeColor: defaultTheme.badgeStrokeColor, badgeTextColor: defaultTheme.badgeTextColor) super.init(navigationBarPresentationData: NavigationBarPresentationData(theme: navigationBarTheme, strings: NavigationBarStrings(back: self.presentationData.strings.Common_Back, close: self.presentationData.strings.Common_Close))) @@ -70,7 +70,7 @@ public final class TwoFactorAuthSplashScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - (self.displayNode as! TwoFactorAuthSplashScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationHeight, transition: transition) + (self.displayNode as! TwoFactorAuthSplashScreenNode).containerLayoutUpdated(layout: layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/PeerAvatarGalleryUI/Sources/AvatarGalleryController.swift b/submodules/PeerAvatarGalleryUI/Sources/AvatarGalleryController.swift index 4b0324d822..97db198c76 100644 --- a/submodules/PeerAvatarGalleryUI/Sources/AvatarGalleryController.swift +++ b/submodules/PeerAvatarGalleryUI/Sources/AvatarGalleryController.swift @@ -689,7 +689,7 @@ public class AvatarGalleryController: ViewController, StandalonePresentableContr super.containerLayoutUpdated(layout, transition: transition) self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) if !self.adjustedForInitialPreviewingLayout && self.isPresentedInPreviewingContext() { self.adjustedForInitialPreviewingLayout = true diff --git a/submodules/PeerInfoUI/Sources/ChannelMembersSearchController.swift b/submodules/PeerInfoUI/Sources/ChannelMembersSearchController.swift index d93591f208..e0b9298316 100644 --- a/submodules/PeerInfoUI/Sources/ChannelMembersSearchController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelMembersSearchController.swift @@ -132,7 +132,7 @@ public final class ChannelMembersSearchController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func activateSearch() { diff --git a/submodules/PeerInfoUI/Sources/SecretChatKeyController.swift b/submodules/PeerInfoUI/Sources/SecretChatKeyController.swift index fb309cd499..a5a15bbc79 100644 --- a/submodules/PeerInfoUI/Sources/SecretChatKeyController.swift +++ b/submodules/PeerInfoUI/Sources/SecretChatKeyController.swift @@ -48,6 +48,6 @@ public final class SecretChatKeyController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/SearchBarNode/Sources/SearchBarNode.swift b/submodules/SearchBarNode/Sources/SearchBarNode.swift index 82424af16f..b3ce398a96 100644 --- a/submodules/SearchBarNode/Sources/SearchBarNode.swift +++ b/submodules/SearchBarNode/Sources/SearchBarNode.swift @@ -26,7 +26,6 @@ private func generateBackground(foregroundColor: UIColor, diameter: CGFloat) -> }, opaque: false)?.stretchableImage(withLeftCapWidth: Int(diameter / 2.0), topCapHeight: Int(diameter / 2.0)) } - public struct SearchBarToken { public struct Style { public let backgroundColor: UIColor @@ -620,8 +619,8 @@ public final class SearchBarNodeTheme: Equatable { self.keyboard = keyboard } - public init(theme: PresentationTheme, hasSeparator: Bool = true) { - self.background = theme.rootController.navigationBar.backgroundColor + public init(theme: PresentationTheme, hasBackground: Bool = true, hasSeparator: Bool = true) { + self.background = hasBackground ? theme.rootController.navigationBar.backgroundColor : .clear self.separator = hasSeparator ? theme.rootController.navigationBar.separatorColor : theme.rootController.navigationBar.backgroundColor self.inputFill = theme.rootController.navigationSearchBar.inputFillColor self.placeholder = theme.rootController.navigationSearchBar.inputPlaceholderTextColor @@ -714,7 +713,7 @@ public class SearchBarNode: ASDisplayNode, UITextFieldDelegate { public var tokensUpdated: (([SearchBarToken]) -> Void)? - private let backgroundNode: ASDisplayNode + private let backgroundNode: NavigationBackgroundNode private let separatorNode: ASDisplayNode private let textBackgroundNode: ASDisplayNode private var activityIndicator: ActivityIndicator? @@ -813,8 +812,9 @@ public class SearchBarNode: ASDisplayNode, UITextFieldDelegate { self.forceSeparator = forceSeparator self.cancelText = cancelText - self.backgroundNode = ASDisplayNode() - self.backgroundNode.isLayerBacked = true + self.backgroundNode = NavigationBackgroundNode(color: theme.background) + self.backgroundNode.isUserInteractionEnabled = false + //self.backgroundNode.isHidden = true self.separatorNode = ASDisplayNode() self.separatorNode.isLayerBacked = true @@ -887,7 +887,7 @@ public class SearchBarNode: ASDisplayNode, UITextFieldDelegate { self.cancelButton.setAttributedTitle(NSAttributedString(string: self.cancelText ?? strings.Common_Cancel, font: self.cancelText != nil ? Font.semibold(17.0) : Font.regular(17.0), textColor: theme.accent), for: []) } if self.theme != theme { - self.backgroundNode.backgroundColor = theme.background + self.backgroundNode.color = theme.background if self.fieldStyle != .modern || self.forceSeparator { self.separatorNode.backgroundColor = theme.separator } @@ -914,6 +914,7 @@ public class SearchBarNode: ASDisplayNode, UITextFieldDelegate { self.validLayout = (boundingSize, leftInset, rightInset) self.backgroundNode.frame = self.bounds + self.backgroundNode.update(size: self.backgroundNode.bounds.size, transition: .immediate) transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: self.bounds.size.height), size: CGSize(width: self.bounds.size.width, height: UIScreenPixel))) let verticalOffset: CGFloat = boundingSize.height - 82.0 diff --git a/submodules/SearchUI/Sources/SearchDisplayController.swift b/submodules/SearchUI/Sources/SearchDisplayController.swift index 5fb7675977..7e65520a4a 100644 --- a/submodules/SearchUI/Sources/SearchDisplayController.swift +++ b/submodules/SearchUI/Sources/SearchDisplayController.swift @@ -37,8 +37,8 @@ public final class SearchDisplayController { private var isSearchingDisposable: Disposable? - public init(presentationData: PresentationData, mode: SearchDisplayControllerMode = .navigation, placeholder: String? = nil, hasSeparator: Bool = false, contentNode: SearchDisplayControllerContentNode, cancel: @escaping () -> Void) { - self.searchBar = SearchBarNode(theme: SearchBarNodeTheme(theme: presentationData.theme, hasSeparator: hasSeparator), strings: presentationData.strings, fieldStyle: .modern, forceSeparator: hasSeparator) + public init(presentationData: PresentationData, mode: SearchDisplayControllerMode = .navigation, placeholder: String? = nil, hasBackground: Bool = false, hasSeparator: Bool = false, contentNode: SearchDisplayControllerContentNode, cancel: @escaping () -> Void) { + self.searchBar = SearchBarNode(theme: SearchBarNodeTheme(theme: presentationData.theme, hasBackground: hasBackground, hasSeparator: hasSeparator), strings: presentationData.strings, fieldStyle: .modern, forceSeparator: hasSeparator) self.backgroundNode = BackgroundNode() self.backgroundNode.backgroundColor = presentationData.theme.chatList.backgroundColor self.backgroundNode.allowsGroupOpacity = true diff --git a/submodules/SettingsUI/Sources/BubbleSettings/BubbleSettingsController.swift b/submodules/SettingsUI/Sources/BubbleSettings/BubbleSettingsController.swift index 2e218df33b..7cbf65a1f8 100644 --- a/submodules/SettingsUI/Sources/BubbleSettings/BubbleSettingsController.swift +++ b/submodules/SettingsUI/Sources/BubbleSettings/BubbleSettingsController.swift @@ -392,7 +392,7 @@ final class BubbleSettingsController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/SettingsUI/Sources/ChangePhoneNumberIntroController.swift b/submodules/SettingsUI/Sources/ChangePhoneNumberIntroController.swift index b01109917d..17ea963f66 100644 --- a/submodules/SettingsUI/Sources/ChangePhoneNumberIntroController.swift +++ b/submodules/SettingsUI/Sources/ChangePhoneNumberIntroController.swift @@ -133,7 +133,7 @@ public final class ChangePhoneNumberIntroController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - (self.displayNode as! ChangePhoneNumberIntroControllerNode).containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + (self.displayNode as! ChangePhoneNumberIntroControllerNode).containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func cancelPressed() { diff --git a/submodules/SettingsUI/Sources/Language Selection/LocalizationListController.swift b/submodules/SettingsUI/Sources/Language Selection/LocalizationListController.swift index dfaca96c32..f96efea62d 100644 --- a/submodules/SettingsUI/Sources/Language Selection/LocalizationListController.swift +++ b/submodules/SettingsUI/Sources/Language Selection/LocalizationListController.swift @@ -145,7 +145,7 @@ public class LocalizationListController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, transition: transition) } @objc private func editPressed() { diff --git a/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptions.swift b/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptions.swift index e56e371194..566da4ec52 100644 --- a/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptions.swift +++ b/submodules/SettingsUI/Sources/Notifications/Exceptions/NotificationExceptions.swift @@ -157,7 +157,7 @@ public class NotificationExceptionsController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func removeAllPressed() { diff --git a/submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroController.swift b/submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroController.swift index 4de91ff54d..76c2e339a9 100644 --- a/submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroController.swift +++ b/submodules/SettingsUI/Sources/Privacy and Security/PrivacyIntroController.swift @@ -178,6 +178,6 @@ final class PrivacyIntroController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceController.swift b/submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceController.swift index d06773453a..8dc5f78b0d 100644 --- a/submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceController.swift +++ b/submodules/SettingsUI/Sources/Terms of Service/TermsOfServiceController.swift @@ -145,7 +145,7 @@ public class TermsOfServiceController: ViewController, StandalonePresentableCont override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } override public func viewDidAppear(_ animated: Bool) { diff --git a/submodules/SettingsUI/Sources/Text Size/TextSizeSelectionController.swift b/submodules/SettingsUI/Sources/Text Size/TextSizeSelectionController.swift index ade8d233f3..c8cee23e4d 100644 --- a/submodules/SettingsUI/Sources/Text Size/TextSizeSelectionController.swift +++ b/submodules/SettingsUI/Sources/Text Size/TextSizeSelectionController.swift @@ -567,7 +567,7 @@ final class TextSizeSelectionController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift b/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift index d758463866..998ed754a7 100644 --- a/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift +++ b/submodules/SettingsUI/Sources/Themes/SettingsThemeWallpaperNode.swift @@ -74,9 +74,12 @@ final class SettingsThemeWallpaperNode: ASDisplayNode { self.backgroundNode.frame = CGRect(origin: CGPoint(), size: size) self.imageNode.frame = CGRect(origin: CGPoint(), size: size) - if case .builtin = wallpaper { + if case let .builtin(gradient, _) = wallpaper { if self.gradientNode == nil { let gradientNode = createGradientBackgroundNode() + if let gradient = gradient { + gradientNode.updateColors(colors: gradient.colors.map { UIColor(rgb: $0) }) + } self.gradientNode = gradientNode self.addSubnode(gradientNode) } diff --git a/submodules/SettingsUI/Sources/Themes/ThemeAccentColorController.swift b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorController.swift index 21c9950124..2b742f81d8 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeAccentColorController.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorController.swift @@ -439,7 +439,7 @@ final class ThemeAccentColorController: ViewController { var wallpaper: TelegramWallpaper func extractBuiltinWallpaper(_ currentWallpaper: TelegramWallpaper) { - if case let .builtin(settings) = currentWallpaper { + if case let .builtin(_, settings) = currentWallpaper { var defaultPatternWallpaper: TelegramWallpaper? for wallpaper in wallpapers { @@ -617,6 +617,6 @@ final class ThemeAccentColorController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift index 40495d30bd..6c3af69366 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeAccentColorControllerNode.swift @@ -479,11 +479,11 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate suggestedWallpaper = .color(color.argb) backgroundColors = (color, nil) default: - suggestedWallpaper = .builtin(WallpaperSettings()) + suggestedWallpaper = .builtin(nil, WallpaperSettings()) } wallpaper = suggestedWallpaper } else { - wallpaper = state.initialWallpaper ?? .builtin(WallpaperSettings()) + wallpaper = state.initialWallpaper ?? .builtin(nil, WallpaperSettings()) wallpaperImage = chatControllerBackgroundImage(theme: nil, wallpaper: wallpaper, mediaBox: context.sharedContext.accountManager.mediaBox, knockoutMode: false) } @@ -701,7 +701,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate } self.colorPanelNode.updateState({ _ in - return WallpaperColorPanelNodeState(selection: colorPanelCollapsed ? .none : .first, firstColor: firstColor, defaultColor: defaultColor, secondColor: secondColor, secondColorAvailable: self.state.section != .accent, rotateAvailable: self.state.section == .background, rotation: self.state.rotation ?? 0, preview: false, simpleGradientGeneration: self.state.section == .messages) + return WallpaperColorPanelNodeState(selection: colorPanelCollapsed ? .none : .index(0), firstColor: firstColor, defaultColor: defaultColor, secondColor: secondColor, secondColorAvailable: self.state.section != .accent, rotateAvailable: self.state.section == .background, rotation: self.state.rotation, preview: false, simpleGradientGeneration: self.state.section == .messages, multiColors: []) }, animated: animated) needsLayout = true @@ -714,7 +714,7 @@ final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate self.colorPanelNode.updateState({ current in var updated = current - updated.selection = colorPanelCollapsed ? .none : .first + updated.selection = colorPanelCollapsed ? .none : .index(0) return updated }, animated: animated) } diff --git a/submodules/SettingsUI/Sources/Themes/ThemeColorsGridController.swift b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridController.swift index 99d25dbc70..93322d08ab 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeColorsGridController.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeColorsGridController.swift @@ -177,6 +177,6 @@ final class ThemeColorsGridController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/SettingsUI/Sources/Themes/ThemeGridController.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridController.swift index 9444ef01e6..9ab87b1ff7 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeGridController.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeGridController.swift @@ -339,7 +339,7 @@ final class ThemeGridController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, transition: transition) } func activateSearch() { diff --git a/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift index 75476d20eb..35662a8959 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeGridControllerNode.swift @@ -56,6 +56,14 @@ final class ThemeGridControllerInteraction { } private struct ThemeGridControllerEntry: Comparable, Identifiable { + enum StableId: Hashable { + case builtin([UInt32]) + case color(UInt32) + case gradient(UInt32, UInt32) + case file(Int64, UInt32, Int32) + case image(String) + } + let index: Int let wallpaper: TelegramWallpaper let isEditable: Bool @@ -69,26 +77,21 @@ private struct ThemeGridControllerEntry: Comparable, Identifiable { return lhs.index < rhs.index } - var stableId: Int64 { + var stableId: StableId { switch self.wallpaper { - case .builtin: - return 0 + case let .builtin(gradient, _): + return .builtin(gradient?.colors ?? []) case let .color(color): - return (Int64(1) << 32) | Int64(bitPattern: UInt64(color)) + return .color(color) case let .gradient(topColor, bottomColor, _): - var hash: UInt32 = topColor - hash = hash &* 31 &+ bottomColor - return (Int64(2) << 32) | Int64(hash) + return .gradient(topColor, bottomColor) case let .file(id, _, _, _, _, _, _, _, settings): - var hash: Int = id.hashValue - hash = hash &* 31 &+ (settings.color?.hashValue ?? 0) - hash = hash &* 31 &+ (settings.intensity?.hashValue ?? 0) - return (Int64(3) << 32) | Int64(hash) + return .file(id, settings.color ?? 0, settings.intensity ?? 0) case let .image(representations, _): if let largest = largestImageRepresentation(representations) { - return (Int64(4) << 32) | Int64(largest.resource.id.hashValue) + return .image(largest.resource.id.uniqueId) } else { - return 0 + return .image("") } } } @@ -260,9 +263,20 @@ final class ThemeGridControllerNode: ASDisplayNode { self.currentState = ThemeGridControllerNodeState(editing: false, selectedIndices: Set()) self.statePromise = ValuePromise(self.currentState, ignoreRepeated: true) - + + let defaultWallpaper = presentationData.theme.chat.defaultWallpaper + let wallpapersPromise = Promise<[TelegramWallpaper]>() - wallpapersPromise.set(telegramWallpapers(postbox: context.account.postbox, network: context.account.network)) + wallpapersPromise.set(telegramWallpapers(postbox: context.account.postbox, network: context.account.network) + |> map { wallpapers in + var wallpapers = wallpapers + if !wallpapers.contains(where: { + $0.isBasicallyEqual(to: defaultWallpaper) + }) { + wallpapers.insert(defaultWallpaper, at: 0) + } + return wallpapers + }) self.wallpapersPromise = wallpapersPromise let deletedWallpaperSlugsValue = Atomic>(value: Set()) @@ -350,8 +364,10 @@ final class ThemeGridControllerNode: ASDisplayNode { var index = 1 var isSelectedEditable = true - if case .builtin = presentationData.chatWallpaper { - isSelectedEditable = false + if case let .builtin(gradient, _) = presentationData.chatWallpaper { + if gradient == nil { + isSelectedEditable = false + } } else if presentationData.chatWallpaper.isBasicallyEqual(to: presentationData.theme.chat.defaultWallpaper) { isSelectedEditable = false } @@ -359,10 +375,24 @@ final class ThemeGridControllerNode: ASDisplayNode { var defaultWallpaper: TelegramWallpaper? if !presentationData.chatWallpaper.isBasicallyEqual(to: presentationData.theme.chat.defaultWallpaper) { - if case .builtin = presentationData.theme.chat.defaultWallpaper { - } else { + let entry = ThemeGridControllerEntry(index: 1, wallpaper: presentationData.theme.chat.defaultWallpaper, isEditable: false, isSelected: false) + if !entries.contains(where: { $0.stableId == entry.stableId }) { defaultWallpaper = presentationData.theme.chat.defaultWallpaper - entries.insert(ThemeGridControllerEntry(index: 1, wallpaper: presentationData.theme.chat.defaultWallpaper, isEditable: false, isSelected: false), at: 1) + entries.insert(entry, at: index) + index += 1 + } + } + + if !entries.contains(where: { entry in + if case .builtin = entry.wallpaper { + return true + } else { + return false + } + }) { + let entry = ThemeGridControllerEntry(index: 1, wallpaper: .builtin(nil, WallpaperSettings(motion: true)), isEditable: false, isSelected: false) + if !entries.contains(where: { $0.stableId == entry.stableId }) { + entries.insert(entry, at: index) index += 1 } } @@ -392,13 +422,18 @@ final class ThemeGridControllerNode: ASDisplayNode { isDefault = true } var isEditable = true - if case .builtin = wallpaper { - isEditable = false + if case let .builtin(gradient, _) = wallpaper { + if gradient == nil { + isEditable = false + } } if !selected && !isDefault { - entries.append(ThemeGridControllerEntry(index: index, wallpaper: wallpaper, isEditable: isEditable, isSelected: false)) + let entry = ThemeGridControllerEntry(index: index, wallpaper: wallpaper, isEditable: isEditable, isSelected: false) + if !entries.contains(where: { $0.stableId == entry.stableId }) { + entries.append(entry) + index += 1 + } } - index += 1 } let previous = previousEntries.swap(entries) diff --git a/submodules/SettingsUI/Sources/Themes/ThemePreviewController.swift b/submodules/SettingsUI/Sources/Themes/ThemePreviewController.swift index 6ef7bd7077..dd72374307 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemePreviewController.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemePreviewController.swift @@ -479,7 +479,7 @@ public final class ThemePreviewController: ViewController { self.validLayout = layout - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func actionPressed() { diff --git a/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift index c1bb641a8e..526a95a9b5 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeSettingsController.swift @@ -632,7 +632,7 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The effectiveWallpaper = wallpaper } else { let theme = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: reference, accentColor: accentColor?.color, bubbleColors: accentColor?.customBubbleColors, wallpaper: accentColor?.wallpaper) - effectiveWallpaper = theme?.chat.defaultWallpaper ?? .builtin(WallpaperSettings()) + effectiveWallpaper = theme?.chat.defaultWallpaper ?? .builtin(nil, WallpaperSettings()) } return (accentColor, effectiveWallpaper) } @@ -643,7 +643,7 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The if let wallpaper = cachedWallpaper?.wallpaper, case let .file(file) = wallpaper { return (accentColor, wallpaper) } else { - return (accentColor, .builtin(WallpaperSettings())) + return (accentColor, .builtin(nil, WallpaperSettings())) } } } else { @@ -833,7 +833,7 @@ public func themeSettingsController(context: AccountContext, focusOnItemTag: The } else { theme = makePresentationTheme(mediaBox: context.sharedContext.accountManager.mediaBox, themeReference: generalThemeReference, accentColor: accentColor?.accentColor, bubbleColors: accentColor?.customBubbleColors, wallpaper: accentColor?.wallpaper) } - effectiveWallpaper = theme?.chat.defaultWallpaper ?? .builtin(WallpaperSettings()) + effectiveWallpaper = theme?.chat.defaultWallpaper ?? .builtin(nil, WallpaperSettings()) } let wallpaperSignal: Signal diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperColorPanelNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperColorPanelNode.swift index 3bb307b4ab..b1efed722d 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperColorPanelNode.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperColorPanelNode.swift @@ -89,9 +89,13 @@ private class ColorInputFieldNode: ASDisplayNode, UITextFieldDelegate { private var validLayout: (CGSize, Bool)? private var skipEndEditing = false + + private let displaySwatch: Bool - init(theme: PresentationTheme) { + init(theme: PresentationTheme, displaySwatch: Bool = true) { self.theme = theme + + self.displaySwatch = displaySwatch self.textBackgroundNode = ASImageNode() self.textBackgroundNode.image = textInputBackgroundImage(fieldColor: theme.chat.inputPanel.inputBackgroundColor, strokeColor: theme.chat.inputPanel.inputStrokeColor, diameter: 33.0) @@ -303,8 +307,15 @@ private class ColorInputFieldNode: ASDisplayNode, UITextFieldDelegate { let swatchFrame = CGRect(origin: CGPoint(x: 6.0, y: 6.0), size: CGSize(width: 21.0, height: 21.0)) transition.updateFrame(node: self.swatchNode, frame: swatchFrame) transition.updateFrame(node: self.borderNode, frame: swatchFrame) + + self.swatchNode.isHidden = !self.displaySwatch - let textPadding: CGFloat = condensed ? 31.0 : 37.0 + let textPadding: CGFloat + if self.displaySwatch { + textPadding = condensed ? 31.0 : 37.0 + } else { + textPadding = 6.0 + } transition.updateFrame(node: self.textBackgroundNode, frame: CGRect(x: 0.0, y: 0.0, width: size.width, height: size.height)) transition.updateFrame(node: self.textFieldNode, frame: CGRect(x: textPadding + 10.0, y: 1.0, width: size.width - (21.0 + textPadding), height: size.height - 2.0)) @@ -321,10 +332,9 @@ private class ColorInputFieldNode: ASDisplayNode, UITextFieldDelegate { } } -enum WallpaperColorPanelNodeSelectionState { +enum WallpaperColorPanelNodeSelectionState: Equatable { case none - case first - case second + case index(Int) } struct WallpaperColorPanelNodeState { @@ -337,6 +347,53 @@ struct WallpaperColorPanelNodeState { var rotation: Int32 var preview: Bool var simpleGradientGeneration: Bool + + var multiColors: [UIColor] +} + +private final class ColorSampleItemNode: ASImageNode { + private struct State: Equatable { + var color: UInt32 + var size: CGSize + } + + private var action: () -> Void + private var validState: State? + + private let selectionNode: ASImageNode + + init(action: @escaping () -> Void) { + self.action = action + + self.selectionNode = ASImageNode() + self.selectionNode.isUserInteractionEnabled = false + + super.init() + + self.addSubnode(self.selectionNode) + + self.isUserInteractionEnabled = true + self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tapGesture(_:)))) + } + + @objc private func tapGesture(_ recognizer: UITapGestureRecognizer) { + if case .ended = recognizer.state { + self.action() + } + } + + func update(size: CGSize, color: UIColor, isSelected: Bool) { + self.selectionNode.frame = CGRect(origin: CGPoint(), size: size).insetBy(dx: 2.0, dy: 2.0) + self.selectionNode.isHidden = !isSelected + + let state = State(color: color.rgb, size: size) + if self.validState != state { + self.validState = state + + self.image = generateFilledCircleImage(diameter: size.width, color: color, strokeColor: UIColor(white: 0.0, alpha: 0.1), strokeWidth: UIScreenPixel, backgroundColor: nil) + self.selectionNode.image = generateFilledCircleImage(diameter: self.selectionNode.frame.width, color: color, strokeColor: .white, strokeWidth: 2.0, backgroundColor: nil) + } + } } final class WallpaperColorPanelNode: ASDisplayNode { @@ -344,7 +401,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { private var state: WallpaperColorPanelNodeState - private let backgroundNode: ASDisplayNode + private let backgroundNode: NavigationBackgroundNode private let topSeparatorNode: ASDisplayNode private let bottomSeparatorNode: ASDisplayNode private let firstColorFieldNode: ColorInputFieldNode @@ -355,7 +412,11 @@ final class WallpaperColorPanelNode: ASDisplayNode { private let doneButton: HighlightableButtonNode private let colorPickerNode: WallpaperColorPickerNode + private var sampleItemNodes: [ColorSampleItemNode] = [] + private let multiColorFieldNode: ColorInputFieldNode + var colorsChanged: ((UIColor?, UIColor?, Bool) -> Void)? + var multiColorsChanged: (([UIColor]) -> Void)? var colorSelected: (() -> Void)? var rotate: (() -> Void)? @@ -367,8 +428,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { init(theme: PresentationTheme, strings: PresentationStrings) { self.theme = theme - self.backgroundNode = ASDisplayNode() - self.backgroundNode.backgroundColor = theme.chat.inputPanel.panelBackgroundColor + self.backgroundNode = NavigationBackgroundNode(color: theme.chat.inputPanel.panelBackgroundColor) self.topSeparatorNode = ASDisplayNode() self.topSeparatorNode.backgroundColor = theme.chat.inputPanel.panelSeparatorColor @@ -389,8 +449,9 @@ final class WallpaperColorPanelNode: ASDisplayNode { self.firstColorFieldNode = ColorInputFieldNode(theme: theme) self.secondColorFieldNode = ColorInputFieldNode(theme: theme) + self.multiColorFieldNode = ColorInputFieldNode(theme: theme, displaySwatch: false) - self.state = WallpaperColorPanelNodeState(selection: .first, firstColor: nil, secondColor: nil, secondColorAvailable: false, rotateAvailable: false, rotation: 0, preview: false, simpleGradientGeneration: false) + self.state = WallpaperColorPanelNodeState(selection: .index(0), firstColor: nil, secondColor: nil, secondColorAvailable: false, rotateAvailable: false, rotation: 0, preview: false, simpleGradientGeneration: false, multiColors: []) super.init() @@ -398,6 +459,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { self.addSubnode(self.topSeparatorNode) self.addSubnode(self.bottomSeparatorNode) self.addSubnode(self.firstColorFieldNode) + self.addSubnode(self.multiColorFieldNode) self.addSubnode(self.secondColorFieldNode) self.addSubnode(self.doneButton) self.addSubnode(self.colorPickerNode) @@ -424,7 +486,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { strongSelf.colorRemoved?() strongSelf.updateState({ current in var updated = current - updated.selection = .first + updated.selection = .index(0) if let defaultColor = current.defaultColor, updated.secondColor == nil { updated.firstColor = nil } else { @@ -441,7 +503,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { strongSelf.updateState({ current in var updated = current if updated.selection != .none { - updated.selection = .first + updated.selection = .index(0) } return updated }) @@ -465,7 +527,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { strongSelf.updateState({ current in var updated = current if updated.selection != .none { - updated.selection = .first + updated.selection = .index(0) } updated.secondColor = nil return updated @@ -477,7 +539,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { strongSelf.firstColorFieldNode.setSkipEndEditingIfNeeded() strongSelf.updateState({ current in var updated = current - updated.selection = .second + updated.selection = .index(1) return updated }) @@ -491,12 +553,20 @@ final class WallpaperColorPanelNode: ASDisplayNode { var updated = current updated.preview = true switch strongSelf.state.selection { - case .first: - updated.firstColor = color - case .second: - updated.secondColor = color - default: - break + case .index(0): + updated.firstColor = color + case .index(1): + updated.secondColor = color + default: + break + } + switch strongSelf.state.selection { + case let .index(index): + if updated.multiColors.count > index { + updated.multiColors[index] = color + } + default: + break } return updated }, updateLayout: false) @@ -508,12 +578,20 @@ final class WallpaperColorPanelNode: ASDisplayNode { var updated = current updated.preview = false switch strongSelf.state.selection { - case .first: - updated.firstColor = color - case .second: - updated.secondColor = color - default: - break + case .index(0): + updated.firstColor = color + case .index(1): + updated.secondColor = color + default: + break + } + switch strongSelf.state.selection { + case let .index(index): + if updated.multiColors.count > index { + updated.multiColors[index] = color + } + default: + break } return updated }, updateLayout: false) @@ -523,7 +601,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { func updateTheme(_ theme: PresentationTheme) { self.theme = theme - self.backgroundNode.backgroundColor = self.theme.chat.inputPanel.panelBackgroundColor + self.backgroundNode.color = self.theme.chat.inputPanel.panelBackgroundColor self.topSeparatorNode.backgroundColor = self.theme.chat.inputPanel.panelSeparatorColor self.bottomSeparatorNode.backgroundColor = self.theme.chat.inputPanel.panelSeparatorColor self.firstColorFieldNode.updateTheme(theme) @@ -534,8 +612,8 @@ final class WallpaperColorPanelNode: ASDisplayNode { var updateLayout = updateLayout let previousFirstColor = self.state.firstColor let previousSecondColor = self.state.secondColor + let previousMultiColors = self.state.multiColors let previousPreview = self.state.preview - let previousRotation = self.state.rotation self.state = f(self.state) let firstColor: UIColor @@ -559,29 +637,67 @@ final class WallpaperColorPanelNode: ASDisplayNode { self.secondColorFieldNode.setColor(secondColor, update: false) } - var firstColorWasRemovable = self.firstColorFieldNode.isRemovable + let firstColorWasRemovable = self.firstColorFieldNode.isRemovable self.firstColorFieldNode.isRemovable = self.state.secondColor != nil || (self.state.defaultColor != nil && self.state.firstColor != nil) if firstColorWasRemovable != self.firstColorFieldNode.isRemovable { updateLayout = true } if updateLayout, let size = self.validLayout { - switch self.state.selection { - case .first: + if self.state.multiColors.isEmpty { + switch self.state.selection { + case .index(0): self.colorPickerNode.color = firstColor - case .second: + case .index(1): if let secondColor = secondColor { self.colorPickerNode.color = secondColor } default: break + } + } else { + switch self.state.selection { + case let .index(index): + self.colorPickerNode.color = self.state.multiColors[index] + default: + break + } } self.updateLayout(size: size, transition: animated ? .animated(duration: 0.3, curve: .easeInOut) : .immediate) } - - if self.state.firstColor?.argb != previousFirstColor?.argb || self.state.secondColor?.argb != previousSecondColor?.argb || self.state.preview != previousPreview { - self.colorsChanged?(firstColorIsDefault ? nil : firstColor, secondColor, !self.state.preview) + + if self.state.multiColors.isEmpty { + if self.state.firstColor?.argb != previousFirstColor?.argb || self.state.secondColor?.argb != previousSecondColor?.argb || self.state.preview != previousPreview { + self.colorsChanged?(firstColorIsDefault ? nil : firstColor, secondColor, !self.state.preview) + } + } else { + switch state.selection { + case let .index(index): + self.multiColorFieldNode.setColor(self.state.multiColors[index], update: false) + default: + break + } + + for i in 0 ..< state.multiColors.count { + if i < self.sampleItemNodes.count { + self.sampleItemNodes[i].update(size: self.sampleItemNodes[i].bounds.size, color: state.multiColors[i], isSelected: state.selection == .index(i)) + } + } + + var updated = false + if self.state.multiColors.count != previousMultiColors.count { + updated = true + } else { + for i in 0 ..< self.state.multiColors.count { + if !self.state.multiColors[i].isEqual(previousMultiColors[i]) { + updated = true + } + } + } + if updated { + self.multiColorsChanged?(self.state.multiColors) + } } } @@ -630,8 +746,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { self.rotateButton.alpha = 0.0 self.swapButton.alpha = 0.0 - - let buttonOffset: CGFloat = (rightInsetWithButton - 13.0) / 2.0 + var buttonFrame = self.addButton.frame buttonFrame.origin.x = size.width self.addButton.frame = buttonFrame @@ -651,6 +766,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { let separatorHeight = UIScreenPixel let topPanelHeight: CGFloat = 47.0 transition.updateFrame(node: self.backgroundNode, frame: CGRect(x: 0.0, y: 0.0, width: size.width, height: topPanelHeight)) + self.backgroundNode.update(size: self.backgroundNode.bounds.size, transition: transition) transition.updateFrame(node: self.topSeparatorNode, frame: CGRect(x: 0.0, y: 0.0, width: size.width, height: separatorHeight)) transition.updateFrame(node: self.bottomSeparatorNode, frame: CGRect(x: 0.0, y: topPanelHeight, width: size.width, height: separatorHeight)) @@ -712,20 +828,78 @@ final class WallpaperColorPanelNode: ASDisplayNode { } transition.updateTransformRotation(node: self.rotateButton, angle: degreesToRadians(CGFloat(self.state.rotation)), beginWithCurrentState: true, completion: nil) - - self.firstColorFieldNode.isRemovable = self.state.secondColor != nil || (self.state.defaultColor != nil && self.state.firstColor != nil) - self.secondColorFieldNode.isRemovable = true - - self.firstColorFieldNode.isSelected = self.state.selection == .first - self.secondColorFieldNode.isSelected = self.state.selection == .second - - let firstFieldFrame = CGRect(x: leftInset, y: (topPanelHeight - fieldHeight) / 2.0, width: self.state.secondColor != nil ? floorToScreenPixels((size.width - fieldSpacing) / 2.0) - leftInset : size.width - leftInset - (self.state.secondColorAvailable ? rightInsetWithButton : rightInset), height: fieldHeight) - transition.updateFrame(node: self.firstColorFieldNode, frame: firstFieldFrame) - self.firstColorFieldNode.updateLayout(size: firstFieldFrame.size, condensed: condensedLayout, transition: transition) - - let secondFieldFrame = CGRect(x: firstFieldFrame.maxX + fieldSpacing, y: (topPanelHeight - fieldHeight) / 2.0, width: firstFieldFrame.width, height: fieldHeight) - transition.updateFrame(node: self.secondColorFieldNode, frame: secondFieldFrame) - self.secondColorFieldNode.updateLayout(size: secondFieldFrame.size, condensed: condensedLayout, transition: transition) + + if self.state.multiColors.isEmpty { + self.firstColorFieldNode.isHidden = false + self.secondColorFieldNode.isHidden = false + self.rotateButton.isHidden = false + self.swapButton.isHidden = false + self.multiColorFieldNode.isHidden = true + + self.firstColorFieldNode.isRemovable = self.state.secondColor != nil || (self.state.defaultColor != nil && self.state.firstColor != nil) + self.secondColorFieldNode.isRemovable = true + + self.firstColorFieldNode.isSelected = self.state.selection == .index(0) + self.secondColorFieldNode.isSelected = self.state.selection == .index(1) + + let firstFieldFrame = CGRect(x: leftInset, y: (topPanelHeight - fieldHeight) / 2.0, width: self.state.secondColor != nil ? floorToScreenPixels((size.width - fieldSpacing) / 2.0) - leftInset : size.width - leftInset - (self.state.secondColorAvailable ? rightInsetWithButton : rightInset), height: fieldHeight) + transition.updateFrame(node: self.firstColorFieldNode, frame: firstFieldFrame) + self.firstColorFieldNode.updateLayout(size: firstFieldFrame.size, condensed: condensedLayout, transition: transition) + + let secondFieldFrame = CGRect(x: firstFieldFrame.maxX + fieldSpacing, y: (topPanelHeight - fieldHeight) / 2.0, width: firstFieldFrame.width, height: fieldHeight) + transition.updateFrame(node: self.secondColorFieldNode, frame: secondFieldFrame) + self.secondColorFieldNode.updateLayout(size: secondFieldFrame.size, condensed: condensedLayout, transition: transition) + + for itemNode in self.sampleItemNodes { + itemNode.removeFromSupernode() + } + self.sampleItemNodes.removeAll() + } else { + self.firstColorFieldNode.isHidden = true + self.secondColorFieldNode.isHidden = true + self.rotateButton.isHidden = true + self.swapButton.isHidden = true + self.multiColorFieldNode.isHidden = false + + let sampleItemSize: CGFloat = 32.0 + let sampleItemSpacing: CGFloat = 15.0 + + var nextSampleX = leftInset + + for i in 0 ..< self.state.multiColors.count { + let itemNode: ColorSampleItemNode + if self.sampleItemNodes.count < i { + itemNode = self.sampleItemNodes[i] + } else { + itemNode = ColorSampleItemNode(action: { [weak self] in + guard let strongSelf = self else { + return + } + let index = i + strongSelf.updateState({ state in + var state = state + state.selection = .index(index) + return state + }) + }) + self.sampleItemNodes.append(itemNode) + self.insertSubnode(itemNode, aboveSubnode: self.multiColorFieldNode) + } + + if i != 0 { + nextSampleX += sampleItemSpacing + } + itemNode.frame = CGRect(origin: CGPoint(x: nextSampleX, y: (topPanelHeight - sampleItemSize) / 2.0), size: CGSize(width: sampleItemSize, height: sampleItemSize)) + nextSampleX += sampleItemSize + itemNode.update(size: itemNode.bounds.size, color: self.state.multiColors[i], isSelected: self.state.selection == .index(i)) + } + + let fieldX = nextSampleX + sampleItemSpacing + + let fieldFrame = CGRect(x: fieldX, y: (topPanelHeight - fieldHeight) / 2.0, width: size.width - fieldX - leftInset, height: fieldHeight) + transition.updateFrame(node: self.multiColorFieldNode, frame: fieldFrame) + self.multiColorFieldNode.updateLayout(size: fieldFrame.size, condensed: false, transition: transition) + } let colorPickerSize = CGSize(width: size.width, height: size.height - topPanelHeight - separatorHeight) transition.updateFrame(node: self.colorPickerNode, frame: CGRect(origin: CGPoint(x: 0.0, y: topPanelHeight + separatorHeight), size: colorPickerSize)) @@ -764,7 +938,7 @@ final class WallpaperColorPanelNode: ASDisplayNode { self.updateState({ current in var updated = current - updated.selection = .second + updated.selection = .index(1) let firstColor = current.firstColor ?? current.defaultColor if let color = firstColor { diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperColorsPanelNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperColorsPanelNode.swift new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/submodules/SettingsUI/Sources/Themes/WallpaperColorsPanelNode.swift @@ -0,0 +1 @@ + diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryController.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryController.swift index ea73251cd8..1180349c67 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryController.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryController.swift @@ -165,8 +165,10 @@ public class WallpaperGalleryController: ViewController { private var overlayNode: WallpaperGalleryOverlayNode? private var toolbarNode: WallpaperGalleryToolbarNode? private var patternPanelNode: WallpaperPatternPanelNode? + private var colorsPanelNode: WallpaperColorPanelNode? private var patternPanelEnabled = false + private var colorsPanelEnabled = false public init(context: AccountContext, source: WallpaperListSource) { self.context = context @@ -284,6 +286,8 @@ public class WallpaperGalleryController: ViewController { self.toolbarNode?.updateThemeAndStrings(theme: self.presentationData.theme, strings: self.presentationData.strings) self.patternPanelNode?.updateTheme(self.presentationData.theme) self.patternPanelNode?.backgroundColors = self.presentationData.theme.overallDarkAppearance ? (self.presentationData.theme.list.blocksBackgroundColor, nil, nil) : nil + + self.colorsPanelNode?.updateTheme(self.presentationData.theme) } func dismiss(forceAway: Bool) { @@ -374,6 +378,7 @@ public class WallpaperGalleryController: ViewController { dismissed = true if let centralItemNode = strongSelf.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode { let options = centralItemNode.options + let gradientColors = centralItemNode.colors if !strongSelf.entries.isEmpty { let entry = strongSelf.entries[centralItemNode.index] switch entry { @@ -398,7 +403,7 @@ public class WallpaperGalleryController: ViewController { let autoNightModeTriggered = strongSelf.presentationData.autoNightModeTriggered let _ = (updatePresentationThemeSettingsInteractively(accountManager: strongSelf.context.sharedContext.accountManager, { current in var themeSpecificChatWallpapers = current.themeSpecificChatWallpapers - var wallpaper = wallpaper.isBasicallyEqual(to: strongSelf.presentationData.theme.chat.defaultWallpaper) ? nil : wallpaper + let wallpaper = wallpaper.isBasicallyEqual(to: strongSelf.presentationData.theme.chat.defaultWallpaper) ? nil : wallpaper let themeReference: PresentationThemeReference if autoNightModeTriggered { themeReference = current.automaticThemeSwitchSetting.theme @@ -505,6 +510,15 @@ public class WallpaperGalleryController: ViewController { settings.motion = options.contains(.motion) updatedWallpaper = updatedWallpaper.withUpdatedSettings(settings) } + if case let .builtin(_, settings) = updatedWallpaper { + var gradient: TelegramWallpaper.Gradient? + if let gradientColors = gradientColors { + if gradientColors != defaultBuiltinWallpaperGradientColors.map({ $0.rgb }) { + gradient = TelegramWallpaper.Gradient(colors: gradientColors) + } + } + updatedWallpaper = .builtin(gradient, settings) + } applyWallpaper(updatedWallpaper) } default: @@ -560,6 +574,32 @@ public class WallpaperGalleryController: ViewController { strongSelf.containerLayoutUpdated(layout, transition: .animated(duration: 0.3, curve: .spring)) } } + + node.requestColorsPanel = { [weak self] colors in + if let strongSelf = self, let (layout, _) = strongSelf.validLayout { + strongSelf.colorsPanelEnabled = colors != nil + strongSelf.galleryNode.scrollView.isScrollEnabled = colors == nil + if let colors = colors { + strongSelf.colorsPanelNode?.updateState({ _ in + return WallpaperColorPanelNodeState( + selection: .index(0), + firstColor: colors[0], + defaultColor: colors[0], + secondColor: colors[1], + secondColorAvailable: true, + rotateAvailable: false, + rotation: 0, + preview: false, + simpleGradientGeneration: false, + multiColors: colors + ) + }, animated: false) + } else { + //strongSelf.updateEntries(pattern: .color(0), preview: false) + } + strongSelf.containerLayoutUpdated(layout, transition: .animated(duration: 0.3, curve: .spring)) + } + } if let entry = self.currentEntry(), case let .wallpaper(wallpaper, _) = entry, case let .file(_, _, _, _, true, _, _, _ , settings) = wallpaper, let color = settings.color { if self.patternPanelNode?.backgroundColors != nil, let snapshotView = self.patternPanelNode?.scrollNode.view.snapshotContentTree() { @@ -633,7 +673,7 @@ public class WallpaperGalleryController: ViewController { super.containerLayoutUpdated(layout, transition: transition) self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) self.overlayNode?.frame = self.galleryNode.bounds transition.updateFrame(node: self.toolbarNode!, frame: CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - 49.0 - layout.intrinsicInsets.bottom), size: CGSize(width: layout.size.width, height: 49.0 + layout.intrinsicInsets.bottom))) @@ -658,17 +698,48 @@ public class WallpaperGalleryController: ViewController { currentPatternPanelNode = patternPanelNode self.overlayNode?.insertSubnode(patternPanelNode, belowSubnode: self.toolbarNode!) } + + let currentColorsPanelNode: WallpaperColorPanelNode + if let current = self.colorsPanelNode { + currentColorsPanelNode = current + } else { + let colorsPanelNode = WallpaperColorPanelNode(theme: self.presentationData.theme, strings: self.presentationData.strings) + self.colorsPanelNode = colorsPanelNode + currentColorsPanelNode = colorsPanelNode + self.overlayNode?.insertSubnode(colorsPanelNode, belowSubnode: self.toolbarNode!) + + colorsPanelNode.multiColorsChanged = { [weak self] colors in + guard let strongSelf = self else { + return + } + guard let centralItemNode = strongSelf.galleryNode.pager.centralItemNode() as? WallpaperGalleryItemNode else { + return + } + centralItemNode.updateColors(colors: colors) + } + } let panelHeight: CGFloat = 235.0 + var patternPanelFrame = CGRect(x: 0.0, y: layout.size.height, width: layout.size.width, height: panelHeight) if self.patternPanelEnabled { patternPanelFrame.origin = CGPoint(x: 0.0, y: layout.size.height - bottomInset - panelHeight) bottomInset += panelHeight } - bottomInset += 66.0 transition.updateFrame(node: currentPatternPanelNode, frame: patternPanelFrame) currentPatternPanelNode.updateLayout(size: patternPanelFrame.size, transition: transition) + + var colorsPanelFrame = CGRect(x: 0.0, y: layout.size.height, width: layout.size.width, height: panelHeight) + if self.colorsPanelEnabled { + colorsPanelFrame.origin = CGPoint(x: 0.0, y: layout.size.height - bottomInset - panelHeight) + bottomInset += panelHeight + } + + transition.updateFrame(node: currentColorsPanelNode, frame: colorsPanelFrame) + currentColorsPanelNode.updateLayout(size: colorsPanelFrame.size, transition: transition) + + bottomInset += 66.0 self.validLayout = (layout, bottomInset) if !hadLayout { diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift index 22f41f7bc2..b37958f817 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperGalleryItem.swift @@ -99,6 +99,8 @@ final class WallpaperGalleryItemNode: GalleryItemNode { private var blurButtonNode: WallpaperOptionButtonNode private var motionButtonNode: WallpaperOptionButtonNode private var patternButtonNode: WallpaperOptionButtonNode + private var colorsButtonNode: WallpaperOptionButtonNode + private var playButtonNode: HighlightableButtonNode private let messagesContainerNode: ASDisplayNode private var messageNodes: [ListViewItemNode]? @@ -113,9 +115,12 @@ final class WallpaperGalleryItemNode: GalleryItemNode { let actionButton = Promise(nil) var action: (() -> Void)? var requestPatternPanel: ((Bool) -> Void)? + var requestColorsPanel: (([UIColor]?) -> Void)? - private var validLayout: ContainerViewLayout? + private var validLayout: (ContainerViewLayout, CGFloat)? private var validOffset: CGFloat? + + private var gradientColors: [UIColor]? init(context: AccountContext) { self.context = context @@ -142,6 +147,34 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.motionButtonNode.setEnabled(false) self.patternButtonNode = WallpaperOptionButtonNode(title: self.presentationData.strings.WallpaperPreview_Pattern, value: .check(false)) self.patternButtonNode.setEnabled(false) + + self.colorsButtonNode = WallpaperOptionButtonNode(title: self.presentationData.strings.WallpaperPreview_WallpaperColors, value: .colors(false, [.clear])) + self.playButtonNode = HighlightableButtonNode() + + self.playButtonNode.setImage(generateImage(CGSize(width: 48.0, height: 48.0), rotatedContext: { size, context in + context.clear(CGRect(origin: CGPoint(), size: size)) + context.setFillColor(UIColor.white.cgColor) + + let diameter = size.width + + let factor = diameter / 50.0 + + let size = CGSize(width: 15.0, height: 18.0) + context.translateBy(x: (diameter - size.width) / 2.0 + 1.5, y: (diameter - size.height) / 2.0) + if (diameter < 40.0) { + context.translateBy(x: size.width / 2.0, y: size.height / 2.0) + context.scaleBy(x: factor, y: factor) + context.translateBy(x: -size.width / 2.0, y: -size.height / 2.0) + } + let _ = try? drawSvgPath(context, path: "M1.71891969,0.209353049 C0.769586558,-0.350676705 0,0.0908839327 0,1.18800046 L0,16.8564753 C0,17.9569971 0.750549162,18.357187 1.67393713,17.7519379 L14.1073836,9.60224049 C15.0318735,8.99626906 15.0094718,8.04970371 14.062401,7.49100858 L1.71891969,0.209353049 ") + context.fillPath() + if (diameter < 40.0) { + context.translateBy(x: size.width / 2.0, y: size.height / 2.0) + context.scaleBy(x: 1.0 / 0.8, y: 1.0 / 0.8) + context.translateBy(x: -size.width / 2.0, y: -size.height / 2.0) + } + context.translateBy(x: -(diameter - size.width) / 2.0 - 1.5, y: -(diameter - size.height) / 2.0) + }), for: []) super.init() @@ -162,10 +195,14 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.addSubnode(self.blurButtonNode) self.addSubnode(self.motionButtonNode) self.addSubnode(self.patternButtonNode) + self.addSubnode(self.colorsButtonNode) + self.addSubnode(self.playButtonNode) self.blurButtonNode.addTarget(self, action: #selector(self.toggleBlur), forControlEvents: .touchUpInside) self.motionButtonNode.addTarget(self, action: #selector(self.toggleMotion), forControlEvents: .touchUpInside) self.patternButtonNode.addTarget(self, action: #selector(self.togglePattern), forControlEvents: .touchUpInside) + self.colorsButtonNode.addTarget(self, action: #selector(self.toggleColors), forControlEvents: .touchUpInside) + self.playButtonNode.addTarget(self, action: #selector(self.togglePlay), forControlEvents: .touchUpInside) } deinit { @@ -185,6 +222,18 @@ final class WallpaperGalleryItemNode: GalleryItemNode { return nil } } + + func updateColors(colors: [UIColor]) { + if self.gradientColors == nil { + return + } + self.gradientColors = colors + self.nativeNode.update(wallpaper: .builtin(TelegramWallpaper.Gradient(colors: colors.map { + $0.rgb + }), WallpaperSettings(blur: false, motion: false, color: nil, bottomColor: nil, intensity: nil, rotation: nil))) + + self.colorsButtonNode.colors = colors + } override func ready() -> Signal { return self._ready.get() @@ -238,7 +287,12 @@ final class WallpaperGalleryItemNode: GalleryItemNode { switch entry { case let .wallpaper(wallpaper, message): switch wallpaper { - case .builtin: + case let .builtin(gradient, _): + if self.gradientColors == nil { + self.gradientColors = gradient?.colors.map({ color in + return UIColor(rgb: color) + }) ?? defaultBuiltinWallpaperGradientColors + } displaySize = CGSize(width: 1308.0, height: 2688.0).fitted(CGSize(width: 1280.0, height: 1280.0)).dividedByScreenScale().integralFloor contentSize = displaySize signal = settingsBuiltinWallpaperImage(account: self.context.account) @@ -538,19 +592,21 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.colorDisposable.set((colorSignal |> deliverOnMainQueue).start(next: { [weak self] color in - self?.statusNode.backgroundNodeColor = color - self?.patternButtonNode.buttonColor = color - self?.blurButtonNode.buttonColor = color - self?.motionButtonNode.buttonColor = color + guard let strongSelf = self else { + return + } + strongSelf.statusNode.backgroundNodeColor = color + strongSelf.patternButtonNode.buttonColor = color + strongSelf.blurButtonNode.buttonColor = color + strongSelf.motionButtonNode.buttonColor = color + strongSelf.colorsButtonNode.buttonColor = color + + strongSelf.playButtonNode.setBackgroundImage(generateFilledCircleImage(diameter: 48.0, color: color), for: []) })) - - if let layout = self.validLayout { - //self.updateButtonsLayout(layout: layout, offset: CGPoint(), transition: animated ? .animated(duration: 0.2, curve: .easeInOut) : .immediate) - } } else if self.arguments.patternEnabled != previousArguments.patternEnabled { self.patternButtonNode.isSelected = self.arguments.patternEnabled - if let layout = self.validLayout { + if let (layout, _) = self.validLayout { self.updateButtonsLayout(layout: layout, offset: CGPoint(), transition: .immediate) self.updateMessagesLayout(layout: layout, offset: CGPoint(), transition: .immediate) } @@ -563,7 +619,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { return } self.validOffset = offset - if let layout = self.validLayout { + if let (layout, _) = self.validLayout { self.updateWrapperLayout(layout: layout, offset: offset, transition: .immediate) self.updateButtonsLayout(layout: layout, offset: CGPoint(x: offset, y: 0.0), transition: .immediate) self.updateMessagesLayout(layout: layout, offset: CGPoint(x: offset, y: 0.0), transition:.immediate) @@ -571,7 +627,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { } func updateDismissTransition(_ value: CGFloat) { - if let layout = self.validLayout { + if let (layout, _) = self.validLayout { self.updateButtonsLayout(layout: layout, offset: CGPoint(x: 0.0, y: value), transition: .immediate) self.updateMessagesLayout(layout: layout, offset: CGPoint(x: 0.0, y: value), transition: .immediate) } @@ -594,8 +650,16 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.setMotionEnabled(newValue.contains(.motion), animated: false) self.motionButtonNode.isSelected = newValue.contains(.motion) + + if let (layout, _) = self.validLayout { + self.updateButtonsLayout(layout: layout, offset: CGPoint(), transition: .immediate) + } } } + + var colors: [UInt32]? { + return self.gradientColors?.map({ $0.rgb }) + } @objc func toggleBlur() { let value = !self.blurButtonNode.isSelected @@ -607,7 +671,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { let blurRadius: CGFloat = 45.0 var animated = animated - if animated, let layout = self.validLayout { + if animated, let (layout, _) = self.validLayout { animated = min(layout.size.width, layout.size.height) > 321.0 } else { animated = false @@ -653,6 +717,10 @@ final class WallpaperGalleryItemNode: GalleryItemNode { let value = !self.motionButtonNode.isSelected self.motionButtonNode.setSelected(value, animated: true) self.setMotionEnabled(value, animated: true) + + if let (layout, navigationBarHeight) = self.validLayout { + self.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: .animated(duration: 0.2, curve: .easeInOut)) + } } var isPatternEnabled: Bool { @@ -665,6 +733,20 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.requestPatternPanel?(value) } + + @objc private func toggleColors() { + guard let currentGradientColors = self.gradientColors else { + return + } + let value = !self.colorsButtonNode.isSelected + self.colorsButtonNode.setSelected(value, animated: false) + + self.requestColorsPanel?(value ? currentGradientColors : nil) + } + + @objc private func togglePlay() { + self.nativeNode.animateEvent(transition: .animated(duration: 0.5, curve: .spring)) + } private func preparePatternEditing() { if let entry = self.entry, case let .wallpaper(wallpaper, _) = entry, case let .file(file) = wallpaper { @@ -730,6 +812,8 @@ final class WallpaperGalleryItemNode: GalleryItemNode { let patternButtonSize = self.patternButtonNode.measure(layout.size) let blurButtonSize = self.blurButtonNode.measure(layout.size) let motionButtonSize = self.motionButtonNode.measure(layout.size) + let colorsButtonSize = self.colorsButtonNode.measure(layout.size) + let playButtonSize = CGSize(width: 48.0, height: 48.0) let maxButtonWidth = max(patternButtonSize.width, max(blurButtonSize.width, motionButtonSize.width)) let buttonSize = CGSize(width: maxButtonWidth, height: 30.0) @@ -738,6 +822,8 @@ final class WallpaperGalleryItemNode: GalleryItemNode { var additionalYOffset: CGFloat = 0.0 if self.patternButtonNode.isSelected { additionalYOffset = -235.0 + } else if self.colorsButtonNode.isSelected { + additionalYOffset = -235.0 } let leftButtonFrame = CGRect(origin: CGPoint(x: floor(layout.size.width / 2.0 - buttonSize.width - 10.0) + offset.x, y: layout.size.height - 49.0 - layout.intrinsicInsets.bottom - 54.0 + offset.y + additionalYOffset), size: buttonSize) @@ -752,6 +838,14 @@ final class WallpaperGalleryItemNode: GalleryItemNode { var motionFrame = centerButtonFrame var motionAlpha: CGFloat = 0.0 + + var colorsFrame = CGRect(origin: CGPoint(x: rightButtonFrame.maxX - colorsButtonSize.width, y: rightButtonFrame.minY), size: colorsButtonSize) + var colorsAlpha: CGFloat = 0.0 + + let playFrame = CGRect(origin: CGPoint(x: centerButtonFrame.midX - playButtonSize.width / 2.0, y: centerButtonFrame.midY - playButtonSize.height / 2.0), size: playButtonSize) + var playAlpha: CGFloat = 0.0 + + let centerOffset: CGFloat = 32.0 if let entry = self.entry { switch entry { @@ -767,8 +861,19 @@ final class WallpaperGalleryItemNode: GalleryItemNode { motionFrame = rightButtonFrame case let .wallpaper(wallpaper, _): switch wallpaper { - case .builtin: + case let .builtin(gradient, _): + self.colorsButtonNode.colors = self.gradientColors + motionAlpha = 1.0 + if self.motionButtonNode.isSelected { + motionFrame = leftButtonFrame.offsetBy(dx: -centerOffset, dy: 0.0) + colorsFrame = colorsFrame.offsetBy(dx: centerOffset, dy: 0.0) + playAlpha = 1.0 + } else { + motionFrame = leftButtonFrame + playAlpha = 0.0 + } + colorsAlpha = 1.0 case .color: patternAlpha = 1.0 if self.patternButtonNode.isSelected { @@ -811,11 +916,18 @@ final class WallpaperGalleryItemNode: GalleryItemNode { transition.updateFrame(node: self.motionButtonNode, frame: motionFrame) transition.updateAlpha(node: self.motionButtonNode, alpha: motionAlpha * alpha) + + transition.updateFrame(node: self.colorsButtonNode, frame: colorsFrame) + transition.updateAlpha(node: self.colorsButtonNode, alpha: colorsAlpha * alpha) + + transition.updateFrame(node: self.playButtonNode, frame: playFrame) + transition.updateAlpha(node: self.playButtonNode, alpha: playAlpha * alpha) + transition.updateSublayerTransformScale(node: self.playButtonNode, scale: max(0.1, playAlpha)) } private func updateMessagesLayout(layout: ContainerViewLayout, offset: CGPoint, transition: ContainedViewLayoutTransition) { var bottomInset: CGFloat = 115.0 - if self.patternButtonNode.isSelected { + if self.patternButtonNode.isSelected || self.colorsButtonNode.isSelected { bottomInset = 350.0 } @@ -926,7 +1038,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { } var additionalYOffset: CGFloat = 0.0 - if self.patternButtonNode.isSelected { + if self.patternButtonNode.isSelected || self.colorsButtonNode.isSelected { additionalYOffset = -190.0 } @@ -935,7 +1047,7 @@ final class WallpaperGalleryItemNode: GalleryItemNode { self.updateButtonsLayout(layout: layout, offset: CGPoint(x: offset, y: 0.0), transition: transition) self.updateMessagesLayout(layout: layout, offset: CGPoint(x: offset, y: 0.0), transition: transition) - self.validLayout = layout + self.validLayout = (layout, navigationBarHeight) } override func visibilityUpdated(isVisible: Bool) { diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperOptionButtonNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperOptionButtonNode.swift index b57c724bfc..3ed6dbb6eb 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperOptionButtonNode.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperOptionButtonNode.swift @@ -9,6 +9,21 @@ import CheckNode enum WallpaperOptionButtonValue { case check(Bool) case color(Bool, UIColor) + case colors(Bool, [UIColor]) +} + +private func generateColorsImage(diameter: CGFloat, colors: [UIColor]) -> UIImage? { + return generateImage(CGSize(width: diameter, height: diameter), rotatedContext: { size, context in + context.clear(CGRect(origin: CGPoint(), size: size)) + context.addEllipse(in: CGRect(origin: CGPoint(), size: size)) + context.clip() + for i in 0 ..< min(colors.count, 4) { + let x = i % 2 + let y = i / 2 + context.setFillColor(colors[i].cgColor) + context.fill(CGRect(origin: CGPoint(x: CGFloat(x) * size.width / 2.0, y: CGFloat(y) * size.height / 2.0), size: CGSize(width: size.width / 2.0, height: size.height / 2.0))) + } + }) } final class WallpaperOptionButtonNode: HighlightTrackingButtonNode { @@ -23,16 +38,18 @@ final class WallpaperOptionButtonNode: HighlightTrackingButtonNode { override var isSelected: Bool { get { switch self._value { - case let .check(selected), let .color(selected, _): - return selected + case let .check(selected), let .color(selected, _), let .colors(selected, _): + return selected } } set { switch self._value { - case .check: - self._value = .check(newValue) - case let .color(_, color): - self._value = .color(newValue, color) + case .check: + self._value = .check(newValue) + case let .color(_, color): + self._value = .color(newValue, color) + case let .colors(_, colors): + self._value = .colors(newValue, colors) } self.checkNode.setSelected(newValue, animated: false) } @@ -56,14 +73,18 @@ final class WallpaperOptionButtonNode: HighlightTrackingButtonNode { super.init() switch value { - case let .check(selected): - self.checkNode.isHidden = false - self.colorNode.isHidden = true - self.checkNode.selected = selected - case let .color(_, color): - self.checkNode.isHidden = true - self.colorNode.isHidden = false - self.colorNode.image = generateFilledCircleImage(diameter: 18.0, color: color) + case let .check(selected): + self.checkNode.isHidden = false + self.colorNode.isHidden = true + self.checkNode.selected = selected + case let .color(_, color): + self.checkNode.isHidden = true + self.colorNode.isHidden = false + self.colorNode.image = generateFilledCircleImage(diameter: 18.0, color: color) + case let .colors(_, colors): + self.checkNode.isHidden = true + self.colorNode.isHidden = false + self.colorNode.image = generateColorsImage(diameter: 18.0, colors: colors) } self.addSubnode(self.backgroundNode) @@ -129,9 +150,50 @@ final class WallpaperOptionButtonNode: HighlightTrackingButtonNode { } } } + + var colors: [UIColor]? { + get { + switch self._value { + case let .colors(_, colors): + return colors + default: + return nil + } + } + set { + if let colors = newValue { + switch self._value { + case let .colors(selected, current): + if current.count == colors.count { + var updated = false + for i in 0 ..< current.count { + if !current[i].isEqual(colors[i]) { + updated = true + break + } + } + if !updated { + return + } + } + self._value = .colors(selected, colors) + self.colorNode.image = generateColorsImage(diameter: 18.0, colors: colors) + default: + break + } + } + } + } func setSelected(_ selected: Bool, animated: Bool = false) { - self._value = .check(selected) + switch self._value { + case .check: + self._value = .check(selected) + case let .color(_, color): + self._value = .color(selected, color) + case let .colors(_, colors): + self._value = .colors(selected, colors) + } self.checkNode.setSelected(selected, animated: animated) } diff --git a/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift b/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift index 3e00ffa2ce..ef72a560ee 100644 --- a/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift +++ b/submodules/SettingsUI/Sources/Themes/WallpaperPatternPanelNode.swift @@ -165,7 +165,7 @@ final class WallpaperPatternPanelNode: ASDisplayNode { private let context: AccountContext private var theme: PresentationTheme - private let backgroundNode: ASDisplayNode + private let backgroundNode: NavigationBackgroundNode private let topSeparatorNode: ASDisplayNode let scrollNode: ASScrollNode @@ -206,8 +206,7 @@ final class WallpaperPatternPanelNode: ASDisplayNode { self.context = context self.theme = theme - self.backgroundNode = ASDisplayNode() - self.backgroundNode.backgroundColor = self.theme.chat.inputPanel.panelBackgroundColor + self.backgroundNode = NavigationBackgroundNode(color: theme.chat.inputPanel.panelBackgroundColor) self.topSeparatorNode = ASDisplayNode() self.topSeparatorNode.backgroundColor = self.theme.chat.inputPanel.panelSeparatorColor @@ -337,7 +336,7 @@ final class WallpaperPatternPanelNode: ASDisplayNode { func updateTheme(_ theme: PresentationTheme) { self.theme = theme - self.backgroundNode.backgroundColor = self.theme.chat.inputPanel.panelBackgroundColor + self.backgroundNode.color = self.theme.chat.inputPanel.panelBackgroundColor self.topSeparatorNode.backgroundColor = self.theme.chat.inputPanel.panelSeparatorColor self.sliderView?.backColor = self.theme.list.disclosureArrowColor @@ -418,6 +417,7 @@ final class WallpaperPatternPanelNode: ASDisplayNode { self.validLayout = size transition.updateFrame(node: self.backgroundNode, frame: CGRect(x: 0.0, y: 0.0, width: size.width, height: size.height)) + self.backgroundNode.update(size: self.backgroundNode.bounds.size, transition: transition) transition.updateFrame(node: self.topSeparatorNode, frame: CGRect(x: 0.0, y: 0.0, width: size.width, height: UIScreenPixel)) let titleSize = self.titleNode.updateLayout(self.bounds.size) diff --git a/submodules/ShareController/Sources/ShareController.swift b/submodules/ShareController/Sources/ShareController.swift index 9cd775674c..d5bb6e81b8 100644 --- a/submodules/ShareController/Sources/ShareController.swift +++ b/submodules/ShareController/Sources/ShareController.swift @@ -845,7 +845,7 @@ public final class ShareController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func saveToCameraRoll(messages: [Message]) { diff --git a/submodules/StickerPackPreviewUI/Sources/StickerPackPreviewController.swift b/submodules/StickerPackPreviewUI/Sources/StickerPackPreviewController.swift index aa483d713b..4cfa82d782 100644 --- a/submodules/StickerPackPreviewUI/Sources/StickerPackPreviewController.swift +++ b/submodules/StickerPackPreviewUI/Sources/StickerPackPreviewController.swift @@ -280,7 +280,7 @@ public final class StickerPackPreviewController: ViewController, StandalonePrese override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/StickerPackPreviewUI/Sources/StickerPreviewController.swift b/submodules/StickerPackPreviewUI/Sources/StickerPreviewController.swift index d4aad4b91c..7281977304 100644 --- a/submodules/StickerPackPreviewUI/Sources/StickerPreviewController.swift +++ b/submodules/StickerPackPreviewUI/Sources/StickerPreviewController.swift @@ -69,7 +69,7 @@ public final class StickerPreviewController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } public func updateItem(_ item: StickerPackItem) { diff --git a/submodules/SyncCore/Sources/TelegramWallpaper.swift b/submodules/SyncCore/Sources/TelegramWallpaper.swift index 0e1e5a4b9e..9cc301caa2 100644 --- a/submodules/SyncCore/Sources/TelegramWallpaper.swift +++ b/submodules/SyncCore/Sources/TelegramWallpaper.swift @@ -75,7 +75,23 @@ public struct WallpaperSettings: PostboxCoding, Equatable { } public enum TelegramWallpaper: OrderedItemListEntryContents, Equatable { - case builtin(WallpaperSettings) + public struct Gradient: Equatable, PostboxCoding { + public var colors: [UInt32] + + public init(colors: [UInt32]) { + self.colors = colors + } + + public init(decoder: PostboxDecoder) { + self.colors = decoder.decodeInt32ArrayForKey("colors").map({ UInt32(bitPattern: $0) }) + } + + public func encode(_ encoder: PostboxEncoder) { + encoder.encodeInt32Array(self.colors.map({ Int32(bitPattern: $0) }), forKey: "colors") + } + } + + case builtin(Gradient?, WallpaperSettings) case color(UInt32) case gradient(UInt32, UInt32, WallpaperSettings) case image([TelegramMediaImageRepresentation], WallpaperSettings) @@ -84,8 +100,9 @@ public enum TelegramWallpaper: OrderedItemListEntryContents, Equatable { public init(decoder: PostboxDecoder) { switch decoder.decodeInt32ForKey("v", orElse: 0) { case 0: + let gradient = decoder.decodeObjectForKey("gradient", decoder: { Gradient(decoder: $0) }) as? Gradient let settings = decoder.decodeObjectForKey("settings", decoder: { WallpaperSettings(decoder: $0) }) as? WallpaperSettings ?? WallpaperSettings() - self = .builtin(settings) + self = .builtin(gradient, settings) case 1: self = .color(UInt32(bitPattern: decoder.decodeInt32ForKey("c", orElse: 0))) case 2: @@ -118,8 +135,13 @@ public enum TelegramWallpaper: OrderedItemListEntryContents, Equatable { public func encode(_ encoder: PostboxEncoder) { switch self { - case let .builtin(settings): + case let .builtin(gradient, settings): encoder.encodeInt32(0, forKey: "v") + if let gradient = gradient { + encoder.encodeObject(gradient, forKey: "gradient") + } else { + encoder.encodeNil(forKey: "gradient") + } encoder.encodeObject(settings, forKey: "settings") case let .color(color): encoder.encodeInt32(1, forKey: "v") @@ -149,8 +171,8 @@ public enum TelegramWallpaper: OrderedItemListEntryContents, Equatable { public static func ==(lhs: TelegramWallpaper, rhs: TelegramWallpaper) -> Bool { switch lhs { - case let .builtin(settings): - if case .builtin(settings) = rhs { + case let .builtin(gradient, settings): + if case .builtin(gradient, settings) = rhs { return true } else { return false @@ -184,8 +206,8 @@ public enum TelegramWallpaper: OrderedItemListEntryContents, Equatable { public func isBasicallyEqual(to wallpaper: TelegramWallpaper) -> Bool { switch self { - case .builtin: - if case .builtin = wallpaper { + case let .builtin(gradient, _): + if case .builtin(gradient, _) = wallpaper { return true } else { return false @@ -219,7 +241,7 @@ public enum TelegramWallpaper: OrderedItemListEntryContents, Equatable { public var settings: WallpaperSettings? { switch self { - case let .builtin(settings), let .gradient(_, _, settings), let .image(_, settings), let .file(_, _, _, _, _, _, _, _, settings): + case let .builtin(_, settings), let .gradient(_, _, settings), let .image(_, settings), let .file(_, _, _, _, _, _, _, _, settings): return settings default: return nil @@ -228,8 +250,8 @@ public enum TelegramWallpaper: OrderedItemListEntryContents, Equatable { public func withUpdatedSettings(_ settings: WallpaperSettings) -> TelegramWallpaper { switch self { - case .builtin: - return .builtin(settings) + case let .builtin(gradient, _): + return .builtin(gradient, settings) case .color: return self case let .gradient(topColor, bottomColor, _): diff --git a/submodules/TelegramBaseController/Sources/LocationBroadcastNavigationAccessoryPanel.swift b/submodules/TelegramBaseController/Sources/LocationBroadcastNavigationAccessoryPanel.swift index c8cfbbf9c4..d99edd3a58 100644 --- a/submodules/TelegramBaseController/Sources/LocationBroadcastNavigationAccessoryPanel.swift +++ b/submodules/TelegramBaseController/Sources/LocationBroadcastNavigationAccessoryPanel.swift @@ -29,7 +29,7 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { private let tapAction: () -> Void private let close: () -> Void - private let contentNode: NavigationBackgroundNode + private let contentNode: ASDisplayNode private let iconNode: ASImageNode private let wavesNode: LiveLocationWavesNode @@ -49,8 +49,8 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { self.tapAction = tapAction self.close = close - - self.contentNode = NavigationBackgroundNode(color: self.theme.rootController.navigationBar.backgroundColor) + + self.contentNode = ASDisplayNode() self.iconNode = ASImageNode() self.iconNode.isLayerBacked = true @@ -100,7 +100,6 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { self.theme = presentationData.theme self.strings = presentationData.strings - self.contentNode.color = self.theme.rootController.navigationBar.backgroundColor self.iconNode.image = PresentationResourcesRootController.navigationLiveLocationIcon(self.theme) self.wavesNode.color = self.theme.rootController.navigationBar.accentTextColor @@ -112,7 +111,6 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { self.validLayout = (size, leftInset, rightInset) transition.updateFrame(node: self.contentNode, frame: CGRect(origin: CGPoint(), size: size)) - self.contentNode.update(size: self.contentNode.bounds.size, transition: transition) let titleString = NSAttributedString(string: self.strings.Conversation_LiveLocation, font: titleFont, textColor: self.theme.rootController.navigationBar.primaryTextColor) var subtitleString: NSAttributedString? @@ -178,7 +176,7 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { let closeButtonSize = self.closeButton.measure(CGSize(width: 100.0, height: 100.0)) transition.updateFrame(node: self.closeButton, frame: CGRect(origin: CGPoint(x: bounds.size.width - 18.0 - closeButtonSize.width - rightInset, y: minimizedTitleFrame.minY + 8.0), size: closeButtonSize)) - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: size.height - UIScreenPixel), size: CGSize(width: size.width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: UIScreenPixel))) } func update(peers: [Peer], mode: LocationBroadcastNavigationAccessoryPanelMode, canClose: Bool) { @@ -191,9 +189,16 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { func animateIn(_ transition: ContainedViewLayoutTransition) { self.clipsToBounds = true let contentPosition = self.contentNode.layer.position + transition.animatePosition(node: self.contentNode, from: CGPoint(x: contentPosition.x, y: contentPosition.y - 37.0), completion: { [weak self] _ in self?.clipsToBounds = false }) + + guard let (size, _, _) = self.validLayout else { + return + } + + transition.animatePositionAdditive(node: self.separatorNode, offset: CGPoint(x: 0.0, y: size.height)) } func animateOut(_ transition: ContainedViewLayoutTransition, completion: @escaping () -> Void) { @@ -203,6 +208,12 @@ final class LocationBroadcastNavigationAccessoryPanel: ASDisplayNode { self?.clipsToBounds = false completion() }) + + guard let (size, _, _) = self.validLayout else { + return + } + + transition.updatePosition(node: self.separatorNode, position: self.separatorNode.position.offsetBy(dx: 0.0, dy: size.height)) } @objc func closePressed() { diff --git a/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryContainerNode.swift b/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryContainerNode.swift index 3d28f11440..cb350ed7be 100644 --- a/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryContainerNode.swift +++ b/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryContainerNode.swift @@ -8,7 +8,7 @@ import TelegramPresentationData import AccountContext public final class MediaNavigationAccessoryContainerNode: ASDisplayNode, UIGestureRecognizerDelegate { - public let backgroundNode: NavigationBackgroundNode + public let backgroundNode: ASDisplayNode public let headerNode: MediaNavigationAccessoryHeaderNode private let currentHeaderHeight: CGFloat = MediaNavigationAccessoryHeaderNode.minimizedHeight @@ -18,7 +18,7 @@ public final class MediaNavigationAccessoryContainerNode: ASDisplayNode, UIGestu init(context: AccountContext) { self.presentationData = context.sharedContext.currentPresentationData.with { $0 } - self.backgroundNode = NavigationBackgroundNode(color: self.presentationData.theme.rootController.navigationBar.backgroundColor) + self.backgroundNode = ASDisplayNode() self.headerNode = MediaNavigationAccessoryHeaderNode(presentationData: self.presentationData) super.init() @@ -30,14 +30,20 @@ public final class MediaNavigationAccessoryContainerNode: ASDisplayNode, UIGestu func updatePresentationData(_ presentationData: PresentationData) { self.presentationData = presentationData - - self.backgroundNode.color = self.presentationData.theme.rootController.navigationBar.backgroundColor + self.headerNode.updatePresentationData(presentationData) } - + + func animateIn(transition: ContainedViewLayoutTransition) { + self.headerNode.animateIn(transition: transition) + } + + func animateOut(transition: ContainedViewLayoutTransition) { + self.headerNode.animateOut(transition: transition) + } + func updateLayout(size: CGSize, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition) { transition.updateFrame(node: self.backgroundNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: size.width, height: self.currentHeaderHeight))) - self.backgroundNode.update(size: self.backgroundNode.bounds.size, transition: transition) let headerHeight = self.currentHeaderHeight transition.updateFrame(node: self.headerNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: size.width, height: headerHeight))) diff --git a/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryHeaderNode.swift b/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryHeaderNode.swift index 8979e66e8b..5b54602285 100644 --- a/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryHeaderNode.swift +++ b/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryHeaderNode.swift @@ -266,8 +266,8 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi self.scrollNode.addSubnode(self.previousItemNode) self.scrollNode.addSubnode(self.nextItemNode) - self.addSubnode(self.leftMaskNode) - self.addSubnode(self.rightMaskNode) + //self.addSubnode(self.leftMaskNode) + //self.addSubnode(self.rightMaskNode) self.addSubnode(self.closeButton) self.addSubnode(self.rateButton) @@ -415,6 +415,22 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi self.playNext?() } } + + func animateIn(transition: ContainedViewLayoutTransition) { + guard let (size, _, _) = self.validLayout else { + return + } + + transition.animatePositionAdditive(node: self.separatorNode, offset: CGPoint(x: 0.0, y: size.height)) + } + + func animateOut(transition: ContainedViewLayoutTransition) { + guard let (size, _, _) = self.validLayout else { + return + } + + transition.updatePosition(node: self.separatorNode, position: self.separatorNode.position.offsetBy(dx: 0.0, dy: size.height)) + } public func updateLayout(size: CGSize, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition) { self.validLayout = (size, leftInset, rightInset) @@ -466,7 +482,7 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, UIScrollVi transition.updateFrame(node: self.actionButton, frame: CGRect(origin: CGPoint(x: leftInset, y: 0.0), size: CGSize(width: 40.0, height: 37.0))) transition.updateFrame(node: self.scrubbingNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 37.0 - 2.0), size: CGSize(width: size.width, height: 2.0))) - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: minHeight - UIScreenPixel), size: CGSize(width: size.width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: UIScreenPixel))) self.accessibilityAreaNode.frame = CGRect(origin: CGPoint(x: self.actionButton.frame.maxX, y: 0.0), size: CGSize(width: self.rateButton.frame.minX - self.actionButton.frame.maxX, height: minHeight)) } diff --git a/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryPanel.swift b/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryPanel.swift index 5f6aa9da2b..6745a22108 100644 --- a/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryPanel.swift +++ b/submodules/TelegramBaseController/Sources/MediaNavigationAccessoryPanel.swift @@ -61,6 +61,9 @@ public final class MediaNavigationAccessoryPanel: ASDisplayNode { public func animateIn(transition: ContainedViewLayoutTransition) { self.clipsToBounds = true let contentPosition = self.containerNode.layer.position + + self.containerNode.animateIn(transition: transition) + transition.animatePosition(node: self.containerNode, from: CGPoint(x: contentPosition.x, y: contentPosition.y - 37.0), completion: { [weak self] _ in self?.clipsToBounds = false }) @@ -69,6 +72,9 @@ public final class MediaNavigationAccessoryPanel: ASDisplayNode { public func animateOut(transition: ContainedViewLayoutTransition, completion: @escaping () -> Void) { self.clipsToBounds = true let contentPosition = self.containerNode.layer.position + + self.containerNode.animateOut(transition: transition) + transition.animatePosition(node: self.containerNode, to: CGPoint(x: contentPosition.x, y: contentPosition.y - 37.0), removeOnCompletion: false, completion: { [weak self] _ in self?.clipsToBounds = false completion() diff --git a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift index 95bfc3281d..c5b8d24f32 100644 --- a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift +++ b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift @@ -94,19 +94,7 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { private var presentationDataDisposable: Disposable? private var playlistPreloadDisposable: Disposable? - override open var navigationHeight: CGFloat { - return super.navigationHeight + self.additionalHeight - } - - override open var navigationInsetHeight: CGFloat { - return super.navigationInsetHeight + self.additionalHeight - } - - override open var visualNavigationInsetHeight: CGFloat { - return super.visualNavigationInsetHeight + self.additionalHeight - } - - public var additionalHeight: CGFloat { + override open var additionalNavigationBarHeight: CGFloat { var height: CGFloat = 0.0 if let _ = self.groupCallAccessoryPanel { height += 50.0 @@ -120,10 +108,6 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { return height } - open var primaryNavigationHeight: CGFloat { - return super.navigationHeight - } - public init(context: AccountContext, navigationBarPresentationData: NavigationBarPresentationData?, mediaAccessoryPanelVisibility: MediaAccessoryPanelVisibility, locationBroadcastPanelSource: LocationBroadcastPanelSource, groupCallPanelSource: GroupCallPanelSource) { self.context = context self.presentationData = context.sharedContext.currentPresentationData.with { $0 } @@ -376,11 +360,25 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { required public init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + private var suspendNavigationBarLayout: Bool = false + private var suspendedNavigationBarLayout: ContainerViewLayout? + private var additionalNavigationBarBackgroundHeight: CGFloat = 0.0 + + override open func updateNavigationBarLayout(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { + if self.suspendNavigationBarLayout { + self.suspendedNavigationBarLayout = layout + return + } + self.applyNavigationBarLayout(layout, navigationLayout: self.navigationLayout(layout: layout), additionalBackgroundHeight: self.additionalNavigationBarBackgroundHeight, transition: transition) + } override open func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { + self.suspendNavigationBarLayout = true + super.containerLayoutUpdated(layout, transition: transition) - var navigationHeight = super.navigationHeight + var navigationHeight = super.navigationLayout(layout: layout).navigationFrame.maxY - self.additionalNavigationBarHeight if !self.displayNavigationBar { navigationHeight = 0.0 } @@ -409,11 +407,7 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { activeCall: CachedChannelData.ActiveCall(id: groupCallPanelData.info.id, accessHash: groupCallPanelData.info.accessHash, title: groupCallPanelData.info.title, scheduleTimestamp: groupCallPanelData.info.scheduleTimestamp, subscribedToScheduled: groupCallPanelData.info.subscribedToScheduled) ) }) - if let navigationBar = self.navigationBar { - self.displayNode.insertSubnode(groupCallAccessoryPanel, aboveSubnode: navigationBar) - } else { - self.displayNode.addSubnode(groupCallAccessoryPanel) - } + self.navigationBar?.additionalContentNode.addSubnode(groupCallAccessoryPanel) self.groupCallAccessoryPanel = groupCallAccessoryPanel groupCallAccessoryPanel.frame = panelFrame @@ -560,11 +554,7 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { strongSelf.present(controller, in: .window(.root), with: ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) } }) - if let navigationBar = self.navigationBar { - self.displayNode.insertSubnode(locationBroadcastAccessoryPanel, aboveSubnode: navigationBar) - } else { - self.displayNode.addSubnode(locationBroadcastAccessoryPanel) - } + self.navigationBar?.additionalContentNode.addSubnode(locationBroadcastAccessoryPanel) self.locationBroadcastAccessoryPanel = locationBroadcastAccessoryPanel locationBroadcastAccessoryPanel.frame = panelFrame @@ -806,11 +796,9 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { } mediaAccessoryPanel.frame = panelFrame if let dismissingPanel = self.dismissingPanel { - self.displayNode.insertSubnode(mediaAccessoryPanel, aboveSubnode: dismissingPanel) - } else if let navigationBar = self.navigationBar { - self.displayNode.insertSubnode(mediaAccessoryPanel, belowSubnode: navigationBar) + self.navigationBar?.additionalContentNode.insertSubnode(mediaAccessoryPanel, aboveSubnode: dismissingPanel) } else { - self.displayNode.addSubnode(mediaAccessoryPanel) + self.navigationBar?.additionalContentNode.addSubnode(mediaAccessoryPanel) } self.mediaAccessoryPanel = (mediaAccessoryPanel, type) mediaAccessoryPanel.updateLayout(size: panelFrame.size, leftInset: layout.safeInsets.left, rightInset: layout.safeInsets.right, transition: .immediate) @@ -842,6 +830,12 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { } }) } + + self.suspendNavigationBarLayout = false + if let suspendedNavigationBarLayout = self.suspendedNavigationBarLayout { + self.suspendedNavigationBarLayout = suspendedNavigationBarLayout + self.applyNavigationBarLayout(suspendedNavigationBarLayout, navigationLayout: self.navigationLayout(layout: layout), additionalBackgroundHeight: self.additionalNavigationBarBackgroundHeight, transition: transition) + } } open var keyShortcuts: [KeyShortcut] { diff --git a/submodules/TelegramCallsUI/Sources/CallController.swift b/submodules/TelegramCallsUI/Sources/CallController.swift index 6f47d375ab..3fde19a833 100644 --- a/submodules/TelegramCallsUI/Sources/CallController.swift +++ b/submodules/TelegramCallsUI/Sources/CallController.swift @@ -343,7 +343,7 @@ public final class CallController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } override public func dismiss(completion: (() -> Void)? = nil) { diff --git a/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift b/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift index 4f8fe95685..12e61cca8d 100644 --- a/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift +++ b/submodules/TelegramCallsUI/Sources/GroupCallNavigationAccessoryPanel.swift @@ -131,7 +131,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { private var audioLevelGenerators: [PeerId: FakeAudioLevelGenerator] = [:] private var audioLevelGeneratorTimer: SwiftSignalKit.Timer? - private let backgroundNode: NavigationBackgroundNode + private let backgroundNode: ASDisplayNode private let separatorNode: ASDisplayNode private let membersDisposable = MetaDisposable() @@ -176,7 +176,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.avatarsContext = AnimatedAvatarSetContext() self.avatarsNode = AnimatedAvatarSetNode() - self.backgroundNode = NavigationBackgroundNode(color: .clear) + self.backgroundNode = ASDisplayNode() self.separatorNode = ASDisplayNode() self.separatorNode.isLayerBacked = true @@ -284,8 +284,7 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.theme = presentationData.theme self.strings = presentationData.strings self.dateTimeFormat = presentationData.dateTimeFormat - - self.backgroundNode.color = self.theme.rootController.navigationBar.backgroundColor + self.separatorNode.backgroundColor = presentationData.theme.chat.historyNavigation.strokeColor self.joinButtonTitleNode.attributedText = NSAttributedString(string: self.joinButtonTitleNode.attributedText?.string ?? "", font: Font.with(size: 15.0, design: .round, weight: .semibold, traits: [.monospacedNumbers]), textColor: self.isScheduled ? .white : presentationData.theme.chat.inputPanel.actionControlForegroundColor) @@ -634,9 +633,8 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self.joinButton.isHidden = self.currentData?.groupCall != nil self.micButton.isHidden = self.currentData?.groupCall == nil - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: size.width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: UIScreenPixel))) transition.updateFrame(node: self.backgroundNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: size.width, height: panelHeight))) - self.backgroundNode.update(size: self.backgroundNode.bounds.size, transition: transition) } public func animateIn(_ transition: ContainedViewLayoutTransition) { @@ -645,6 +643,12 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { transition.animatePosition(node: self.contentNode, from: CGPoint(x: contentPosition.x, y: contentPosition.y - 50.0), completion: { [weak self] _ in self?.clipsToBounds = false }) + + guard let (size, _, _) = self.validLayout else { + return + } + + transition.animatePositionAdditive(node: self.separatorNode, offset: CGPoint(x: 0.0, y: size.height)) } public func animateOut(_ transition: ContainedViewLayoutTransition, completion: @escaping () -> Void) { @@ -654,6 +658,12 @@ public final class GroupCallNavigationAccessoryPanel: ASDisplayNode { self?.clipsToBounds = false completion() }) + + guard let (size, _, _) = self.validLayout else { + return + } + + transition.updatePosition(node: self.separatorNode, position: self.separatorNode.position.offsetBy(dx: 0.0, dy: size.height)) } func rightButtonSnapshotViews() -> (background: UIView, foreground: UIView)? { diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift index 13f3e435e7..c08aea26d4 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift @@ -98,7 +98,7 @@ final class VoiceChatCameraPreviewController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index 7fefabb76f..2250aace90 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -5815,7 +5815,7 @@ public final class VoiceChatController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) self.validLayout = layout - self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift b/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift index a0f81d690a..51f0bb4938 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatJoinScreen.swift @@ -183,7 +183,7 @@ public final class VoiceChatJoinScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } class Node: ViewControllerTracingNode, UIScrollViewDelegate { diff --git a/submodules/TelegramCore/Sources/Wallpapers.swift b/submodules/TelegramCore/Sources/Wallpapers.swift index 4557a74894..46899116f4 100644 --- a/submodules/TelegramCore/Sources/Wallpapers.swift +++ b/submodules/TelegramCore/Sources/Wallpapers.swift @@ -19,14 +19,14 @@ public func telegramWallpapers(postbox: Postbox, network: Network, forceUpdate: if case let .file(file) = wallpaper, !file.isDefault { } else if !addedBuiltin { addedBuiltin = true - items.append(.builtin(WallpaperSettings())) + items.append(.builtin(nil, WallpaperSettings())) } items.append(wallpaper) } if !addedBuiltin { addedBuiltin = true - items.append(.builtin(WallpaperSettings())) + items.append(.builtin(nil, WallpaperSettings())) } if items == current { @@ -60,7 +60,7 @@ public func telegramWallpapers(postbox: Postbox, network: Network, forceUpdate: let configuration = transaction.retrieveItemCacheEntry(id: ItemCacheEntryId(collectionId: Namespaces.CachedItemCollection.cachedWallpapersConfiguration, key: ValueBoxKey(length: 0))) as? CachedWallpapersConfiguration let items = transaction.getOrderedListItems(collectionId: Namespaces.OrderedItemList.CloudWallpapers) if items.count == 0 { - return ([.builtin(WallpaperSettings())], 0) + return ([.builtin(nil, WallpaperSettings())], 0) } else { return (items.map { $0.contents as! TelegramWallpaper }, configuration?.hash) } diff --git a/submodules/TelegramPermissionsUI/Sources/PermissionController.swift b/submodules/TelegramPermissionsUI/Sources/PermissionController.swift index 9639657c4c..4bd56eb471 100644 --- a/submodules/TelegramPermissionsUI/Sources/PermissionController.swift +++ b/submodules/TelegramPermissionsUI/Sources/PermissionController.swift @@ -39,7 +39,7 @@ public final class PermissionController: ViewController { let navigationBarPresentationData: NavigationBarPresentationData if splashScreen { - navigationBarPresentationData = NavigationBarPresentationData(theme: NavigationBarTheme(buttonColor: self.presentationData.theme.rootController.navigationBar.accentTextColor, disabledButtonColor: self.presentationData.theme.rootController.navigationBar.disabledButtonColor, primaryTextColor: self.presentationData.theme.rootController.navigationBar.primaryTextColor, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear), strings: NavigationBarStrings(presentationStrings: self.presentationData.strings)) + navigationBarPresentationData = NavigationBarPresentationData(theme: NavigationBarTheme(buttonColor: self.presentationData.theme.rootController.navigationBar.accentTextColor, disabledButtonColor: self.presentationData.theme.rootController.navigationBar.disabledButtonColor, primaryTextColor: self.presentationData.theme.rootController.navigationBar.primaryTextColor, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear), strings: NavigationBarStrings(presentationStrings: self.presentationData.strings)) } else { navigationBarPresentationData = NavigationBarPresentationData(presentationData: self.presentationData) } @@ -89,7 +89,7 @@ public final class PermissionController: ViewController { let navigationBarPresentationData: NavigationBarPresentationData if self.splashScreen { - navigationBarPresentationData = NavigationBarPresentationData(theme: NavigationBarTheme(buttonColor: self.presentationData.theme.rootController.navigationBar.accentTextColor, disabledButtonColor: self.presentationData.theme.rootController.navigationBar.disabledButtonColor, primaryTextColor: self.presentationData.theme.rootController.navigationBar.primaryTextColor, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear), strings: NavigationBarStrings(presentationStrings: self.presentationData.strings)) + navigationBarPresentationData = NavigationBarPresentationData(theme: NavigationBarTheme(buttonColor: self.presentationData.theme.rootController.navigationBar.accentTextColor, disabledButtonColor: self.presentationData.theme.rootController.navigationBar.disabledButtonColor, primaryTextColor: self.presentationData.theme.rootController.navigationBar.primaryTextColor, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear), strings: NavigationBarStrings(presentationStrings: self.presentationData.strings)) } else { navigationBarPresentationData = NavigationBarPresentationData(presentationData: self.presentationData) } @@ -253,7 +253,7 @@ public final class PermissionController: ViewController { self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Cancel, style: .plain, target: self, action: #selector(self.cancelPressed)) } - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.splashScreen ? 0.0 : self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.splashScreen ? 0.0 : self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func nextPressed() { diff --git a/submodules/TelegramPresentationData/Sources/ComponentsThemes.swift b/submodules/TelegramPresentationData/Sources/ComponentsThemes.swift index 727c893857..89c256b65c 100644 --- a/submodules/TelegramPresentationData/Sources/ComponentsThemes.swift +++ b/submodules/TelegramPresentationData/Sources/ComponentsThemes.swift @@ -45,9 +45,9 @@ public extension TabBarControllerTheme { } public extension NavigationBarTheme { - convenience init(rootControllerTheme: PresentationTheme, hideBackground: Bool = false, hideBadge: Bool = false) { + convenience init(rootControllerTheme: PresentationTheme, enableBackgroundBlur: Bool = true, hideBackground: Bool = false, hideBadge: Bool = false) { let theme = rootControllerTheme.rootController.navigationBar - self.init(buttonColor: theme.buttonColor, disabledButtonColor: theme.disabledButtonColor, primaryTextColor: theme.primaryTextColor, backgroundColor: hideBackground ? .clear : theme.backgroundColor, separatorColor: hideBackground ? .clear : theme.separatorColor, badgeBackgroundColor: hideBadge ? .clear : theme.badgeBackgroundColor, badgeStrokeColor: hideBadge ? .clear : theme.badgeStrokeColor, badgeTextColor: hideBadge ? .clear : theme.badgeTextColor) + self.init(buttonColor: theme.buttonColor, disabledButtonColor: theme.disabledButtonColor, primaryTextColor: theme.primaryTextColor, backgroundColor: hideBackground ? .clear : theme.backgroundColor, enableBackgroundBlur: enableBackgroundBlur, separatorColor: hideBackground ? .clear : theme.separatorColor, badgeBackgroundColor: hideBadge ? .clear : theme.badgeBackgroundColor, badgeStrokeColor: hideBadge ? .clear : theme.badgeStrokeColor, badgeTextColor: hideBadge ? .clear : theme.badgeTextColor) } } diff --git a/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift index e5bf1fd51d..947be27426 100644 --- a/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultDarkPresentationTheme.swift @@ -231,18 +231,6 @@ public func customizeDefaultDarkPresentationTheme(theme: PresentationTheme, edit } public func makeDefaultDarkPresentationTheme(extendingThemeReference: PresentationThemeReference? = nil, preview: Bool) -> PresentationTheme { - let rootTabBar = PresentationThemeRootTabBar( - backgroundColor: UIColor(rgb: 0x1c1c1d, alpha: 0.5), - separatorColor: UIColor(rgb: 0x3d3d40), - iconColor: UIColor(rgb: 0x828282), - selectedIconColor: UIColor(rgb: 0xffffff), - textColor: UIColor(rgb: 0x828282), - selectedTextColor: UIColor(rgb: 0xffffff), - badgeBackgroundColor: UIColor(rgb: 0xffffff), - badgeStrokeColor: UIColor(rgb: 0x1c1c1d), - badgeTextColor: UIColor(rgb: 0x000000) - ) - let rootNavigationBar = PresentationThemeRootNavigationBar( buttonColor: UIColor(rgb: 0xffffff), disabledButtonColor: UIColor(rgb: 0x525252), @@ -250,7 +238,7 @@ public func makeDefaultDarkPresentationTheme(extendingThemeReference: Presentati secondaryTextColor: UIColor(rgb: 0xffffff, alpha: 0.5), controlColor: UIColor(rgb: 0x767676), accentTextColor: UIColor(rgb: 0xffffff), - backgroundColor: UIColor(rgb: 0x1c1c1d, alpha: 0.7).withMultipliedBrightnessBy(1.1), + backgroundColor: UIColor(rgb: 0x1d1d1d, alpha: 0.94), separatorColor: UIColor(rgb: 0x3d3d40), badgeBackgroundColor: UIColor(rgb: 0xffffff), badgeStrokeColor: UIColor(rgb: 0x1c1c1d), @@ -263,6 +251,18 @@ public func makeDefaultDarkPresentationTheme(extendingThemeReference: Presentati clearButtonForegroundColor: UIColor(rgb: 0xffffff) ) + let rootTabBar = PresentationThemeRootTabBar( + backgroundColor: rootNavigationBar.backgroundColor, + separatorColor: UIColor(rgb: 0x3d3d40), + iconColor: UIColor(rgb: 0x828282), + selectedIconColor: UIColor(rgb: 0xffffff), + textColor: UIColor(rgb: 0x828282), + selectedTextColor: UIColor(rgb: 0xffffff), + badgeBackgroundColor: UIColor(rgb: 0xffffff), + badgeStrokeColor: UIColor(rgb: 0x1c1c1d), + badgeTextColor: UIColor(rgb: 0x000000) + ) + let navigationSearchBar = PresentationThemeNavigationSearchBar( backgroundColor: UIColor(rgb: 0x1c1c1d), accentColor: UIColor(rgb: 0xffffff), @@ -439,8 +439,8 @@ public func makeDefaultDarkPresentationTheme(extendingThemeReference: Presentati ) let inputPanel = PresentationThemeChatInputPanel( - panelBackgroundColor: UIColor(rgb: 0x1c1c1d, alpha: 0.5), - panelBackgroundColorNoWallpaper: UIColor(rgb: 0x000000, alpha: 0.5), + panelBackgroundColor: rootNavigationBar.backgroundColor, + panelBackgroundColorNoWallpaper: UIColor(rgb: 0x000000, alpha: 0.94), panelSeparatorColor: UIColor(rgb: 0x3d3d40), panelControlAccentColor: UIColor(rgb: 0xffffff), panelControlColor: UIColor(rgb: 0x808080), diff --git a/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift b/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift index 7c75392bf3..7a2cbbb96c 100644 --- a/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift +++ b/submodules/TelegramPresentationData/Sources/DefaultDayPresentationTheme.swift @@ -44,7 +44,7 @@ public func customizeDefaultDayTheme(theme: PresentationTheme, editing: Bool, ti suggestedWallpaper = .gradient(topColor.argb, bottomColor.argb, WallpaperSettings()) } else { bubbleColors = (UIColor(rgb: 0xe1ffc7), nil) - suggestedWallpaper = .builtin(WallpaperSettings()) + suggestedWallpaper = .builtin(nil, WallpaperSettings()) } } } @@ -345,7 +345,7 @@ public func makeDefaultDayPresentationTheme(extendingThemeReference: Presentatio secondaryTextColor: UIColor(rgb: 0x787878), controlColor: UIColor(rgb: 0x7e8791), accentTextColor: UIColor(rgb: 0x007ee5), - backgroundColor: UIColor(rgb: 0xffffff, alpha: 0.75), + backgroundColor: UIColor(rgb: 0xf7f7f7, alpha: 0.86), separatorColor: UIColor(rgb: 0xc8c7cc), badgeBackgroundColor: UIColor(rgb: 0xff3b30), badgeStrokeColor: UIColor(rgb: 0xff3b30), @@ -713,7 +713,7 @@ public func makeDefaultDayPresentationTheme(extendingThemeReference: Presentatio ) let chat = PresentationThemeChat( - defaultWallpaper: day ? .color(0xffffff) : .builtin(WallpaperSettings()), + defaultWallpaper: day ? .color(0xffffff) : .builtin(nil, WallpaperSettings(motion: true)), message: day ? messageDay : message, serviceMessage: day ? serviceMessageDay : serviceMessage, inputPanel: inputPanel, @@ -806,3 +806,10 @@ public func makeDefaultDayPresentationTheme(extendingThemeReference: Presentatio preview: preview ) } + +public let defaultBuiltinWallpaperGradientColors: [UIColor] = [ + UIColor(rgb: 0x7FA381), + UIColor(rgb: 0xFFF5C5), + UIColor(rgb: 0x336F55), + UIColor(rgb: 0xFBE37D) +] diff --git a/submodules/TelegramPresentationData/Sources/PresentationData.swift b/submodules/TelegramPresentationData/Sources/PresentationData.swift index 75e1d1a4bc..486b75f56b 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationData.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationData.swift @@ -496,7 +496,7 @@ public func chatServiceBackgroundColor(wallpaper: TelegramWallpaper, mediaBox: M } else { switch wallpaper { case .builtin: - return .single(UIColor(rgb: 0x748391, alpha: 0.45)) + return .single(UIColor(rgb: 0x000000, alpha: 0.2)) case let .color(color): return .single(serviceColor(with: UIColor(argb: color))) case let .gradient(topColor, bottomColor, _): @@ -681,7 +681,7 @@ public func defaultPresentationData() -> PresentationData { let chatBubbleCorners = PresentationChatBubbleCorners(mainRadius: CGFloat(themeSettings.chatBubbleSettings.mainRadius), auxiliaryRadius: CGFloat(themeSettings.chatBubbleSettings.auxiliaryRadius), mergeBubbleCorners: themeSettings.chatBubbleSettings.mergeBubbleCorners) - return PresentationData(strings: defaultPresentationStrings, theme: defaultPresentationTheme, autoNightModeTriggered: false, chatWallpaper: .builtin(WallpaperSettings()), chatFontSize: chatFontSize, chatBubbleCorners: chatBubbleCorners, listsFontSize: listsFontSize, dateTimeFormat: dateTimeFormat, nameDisplayOrder: nameDisplayOrder, nameSortOrder: nameSortOrder, disableAnimations: themeSettings.disableAnimations, largeEmoji: themeSettings.largeEmoji) + return PresentationData(strings: defaultPresentationStrings, theme: defaultPresentationTheme, autoNightModeTriggered: false, chatWallpaper: .builtin(nil, WallpaperSettings()), chatFontSize: chatFontSize, chatBubbleCorners: chatBubbleCorners, listsFontSize: listsFontSize, dateTimeFormat: dateTimeFormat, nameDisplayOrder: nameDisplayOrder, nameSortOrder: nameSortOrder, disableAnimations: themeSettings.disableAnimations, largeEmoji: themeSettings.largeEmoji) } public extension PresentationData { diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 4b15b773c9..766aa6e0fe 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -2072,4011 +2072,4021 @@ public final class PresentationStrings: Equatable { } public var Settings_Tips: String { return self._s[1730]! } public var Channel_AdminLog_TitleAllEvents: String { return self._s[1731]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1732]! } - public var VoiceChat_YouCanNowSpeak: String { return self._s[1735]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[1737]! } + public var WallpaperPreview_WallpaperColors: String { return self._s[1732]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1733]! } + public var VoiceChat_YouCanNowSpeak: String { return self._s[1736]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[1738]! } public func UserInfo_LinkForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1738]!, self._r[1738]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1739]!, self._r[1739]!, [_0, _1]) } - public var AutoDownloadSettings_MaxVideoSize: String { return self._s[1739]! } - public var ExplicitContent_AlertTitle: String { return self._s[1740]! } - public var Channel_UpdatePhotoItem: String { return self._s[1742]! } - public var ChatList_AutoarchiveSuggestion_Text: String { return self._s[1744]! } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[1745]! } + public var AutoDownloadSettings_MaxVideoSize: String { return self._s[1740]! } + public var ExplicitContent_AlertTitle: String { return self._s[1741]! } + public var Channel_UpdatePhotoItem: String { return self._s[1743]! } + public var ChatList_AutoarchiveSuggestion_Text: String { return self._s[1745]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[1746]! } public func Call_BatteryLow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1746]!, self._r[1746]!, [_0]) + return formatWithArgumentRanges(self._s[1747]!, self._r[1747]!, [_0]) } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[1747]! } - public var WallpaperPreview_PatternPaternApply: String { return self._s[1748]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1749]! } - public var CommentsGroup_ErrorAccessDenied: String { return self._s[1750]! } - public var Appearance_AccentColor: String { return self._s[1752]! } - public var GroupInfo_SharedMedia: String { return self._s[1753]! } - public var Login_PhonePlaceholder: String { return self._s[1754]! } - public var Appearance_TextSize_Automatic: String { return self._s[1755]! } - public var EmptyGroupInfo_Line2: String { return self._s[1756]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[1748]! } + public var WallpaperPreview_PatternPaternApply: String { return self._s[1749]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1750]! } + public var CommentsGroup_ErrorAccessDenied: String { return self._s[1751]! } + public var Appearance_AccentColor: String { return self._s[1753]! } + public var GroupInfo_SharedMedia: String { return self._s[1754]! } + public var Login_PhonePlaceholder: String { return self._s[1755]! } + public var Appearance_TextSize_Automatic: String { return self._s[1756]! } + public var EmptyGroupInfo_Line2: String { return self._s[1757]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1758]!, self._r[1758]!, [_1, _2]) } - public var VoiceChat_TapToAddPhotoOrBio: String { return self._s[1758]! } - public var Conversation_ClearChannel: String { return self._s[1759]! } - public var Appearance_AppIconDefaultX: String { return self._s[1761]! } - public var EditProfile_NameAndPhotoOrVideoHelp: String { return self._s[1762]! } - public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[1763]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1764]! } + public var VoiceChat_TapToAddPhotoOrBio: String { return self._s[1759]! } + public var Conversation_ClearChannel: String { return self._s[1760]! } + public var Appearance_AppIconDefaultX: String { return self._s[1762]! } + public var EditProfile_NameAndPhotoOrVideoHelp: String { return self._s[1763]! } + public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[1764]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1765]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1765]!, self._r[1765]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1766]!, self._r[1766]!, [_1, _2]) } - public var ChatList_EmptyChatListEditFilter: String { return self._s[1766]! } - public var ChatSettings_ConnectionType_UseProxy: String { return self._s[1769]! } - public var Chat_PinnedMessagesHiddenText: String { return self._s[1770]! } + public var ChatList_EmptyChatListEditFilter: String { return self._s[1767]! } + public var ChatSettings_ConnectionType_UseProxy: String { return self._s[1770]! } + public var Chat_PinnedMessagesHiddenText: String { return self._s[1771]! } public func Message_PinnedGenericMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1771]!, self._r[1771]!, [_0]) - } - public func Location_ProximityTip(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1772]!, self._r[1772]!, [_0]) } - public var UserInfo_NotificationsEnable: String { return self._s[1773]! } - public var Checkout_PayWithTouchId: String { return self._s[1774]! } - public var SharedMedia_ViewInChat: String { return self._s[1775]! } - public func Notification_CreatedChatWithTitle(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1776]!, self._r[1776]!, [_0, _1]) + public func Location_ProximityTip(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1773]!, self._r[1773]!, [_0]) } - public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1777]! } + public var UserInfo_NotificationsEnable: String { return self._s[1774]! } + public var Checkout_PayWithTouchId: String { return self._s[1775]! } + public var SharedMedia_ViewInChat: String { return self._s[1776]! } + public func Notification_CreatedChatWithTitle(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_0, _1]) + } + public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1778]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1778]!, self._r[1778]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1779]!, self._r[1779]!, [_1, _2]) } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1780]!, self._r[1780]!, [_0]) + return formatWithArgumentRanges(self._s[1781]!, self._r[1781]!, [_0]) } - public var Conversation_PeerNearbyText: String { return self._s[1782]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[1783]! } - public var PhotoEditor_Skip: String { return self._s[1784]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[1785]! } - public var ChatList_EmptyChatList: String { return self._s[1786]! } - public var Channel_BanUser_Unban: String { return self._s[1787]! } + public var Conversation_PeerNearbyText: String { return self._s[1783]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[1784]! } + public var PhotoEditor_Skip: String { return self._s[1785]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[1786]! } + public var ChatList_EmptyChatList: String { return self._s[1787]! } + public var Channel_BanUser_Unban: String { return self._s[1788]! } public func Message_GenericForwardedPsa(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1788]!, self._r[1788]!, [_0]) + return formatWithArgumentRanges(self._s[1789]!, self._r[1789]!, [_0]) } - public var Appearance_TextSize_Apply: String { return self._s[1789]! } + public var Appearance_TextSize_Apply: String { return self._s[1790]! } public func Conversation_MessageViewCommentsFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1790]!, self._r[1790]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1791]!, self._r[1791]!, [_1, _2]) } - public var Login_InfoFirstNamePlaceholder: String { return self._s[1791]! } - public var VoiceOver_Chat_YourSticker: String { return self._s[1792]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1793]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1795]! } - public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1796]! } - public var TwoFactorSetup_Email_SkipConfirmationTitle: String { return self._s[1797]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[1792]! } + public var VoiceOver_Chat_YourSticker: String { return self._s[1793]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1794]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1796]! } + public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1797]! } + public var TwoFactorSetup_Email_SkipConfirmationTitle: String { return self._s[1798]! } public func PUSH_MESSAGE_QUIZ(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1798]!, self._r[1798]!, [_1]) + return formatWithArgumentRanges(self._s[1799]!, self._r[1799]!, [_1]) } - public var VoiceOver_Chat_GoToOriginalMessage: String { return self._s[1800]! } - public var State_WaitingForNetwork: String { return self._s[1801]! } - public var AccessDenied_CameraRestricted: String { return self._s[1802]! } - public var ChatSettings_Appearance: String { return self._s[1803]! } - public var ScheduledMessages_BotActionUnavailable: String { return self._s[1804]! } - public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[1805]! } - public var Channel_DiscussionGroupAdd: String { return self._s[1806]! } - public var Conversation_SelectMessages: String { return self._s[1808]! } - public var Map_NoPlacesNearby: String { return self._s[1809]! } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1810]! } - public var GroupRemoved_Title: String { return self._s[1811]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1813]! } - public var VoiceChat_Mute: String { return self._s[1814]! } - public var Paint_Marker: String { return self._s[1815]! } - public var Widget_ChatsGalleryTitle: String { return self._s[1816]! } + public var VoiceOver_Chat_GoToOriginalMessage: String { return self._s[1801]! } + public var State_WaitingForNetwork: String { return self._s[1802]! } + public var AccessDenied_CameraRestricted: String { return self._s[1803]! } + public var ChatSettings_Appearance: String { return self._s[1804]! } + public var ScheduledMessages_BotActionUnavailable: String { return self._s[1805]! } + public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[1806]! } + public var Channel_DiscussionGroupAdd: String { return self._s[1807]! } + public var Conversation_SelectMessages: String { return self._s[1809]! } + public var Map_NoPlacesNearby: String { return self._s[1810]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1811]! } + public var GroupRemoved_Title: String { return self._s[1812]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1814]! } + public var VoiceChat_Mute: String { return self._s[1815]! } + public var Paint_Marker: String { return self._s[1816]! } + public var Widget_ChatsGalleryTitle: String { return self._s[1817]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1817]!, self._r[1817]!, [_1]) + return formatWithArgumentRanges(self._s[1818]!, self._r[1818]!, [_1]) } - public var SocksProxySetup_ShareProxyList: String { return self._s[1818]! } - public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[1819]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1819]! } + public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[1820]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1820]!, self._r[1820]!, [_0]) + return formatWithArgumentRanges(self._s[1821]!, self._r[1821]!, [_0]) } - public var EditTheme_ErrorInvalidCharacters: String { return self._s[1821]! } - public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[1822]! } - public var Notifications_GroupNotificationsAlert: String { return self._s[1823]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[1824]! } - public var Compose_NewGroup: String { return self._s[1825]! } + public var EditTheme_ErrorInvalidCharacters: String { return self._s[1822]! } + public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[1823]! } + public var Notifications_GroupNotificationsAlert: String { return self._s[1824]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[1825]! } + public var Compose_NewGroup: String { return self._s[1826]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1826]!, self._r[1826]!, [_0]) + return formatWithArgumentRanges(self._s[1827]!, self._r[1827]!, [_0]) } - public var Location_LiveLocationRequired_Description: String { return self._s[1828]! } - public var Conversation_ClearGroupHistory: String { return self._s[1829]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1832]! } - public var VoiceOver_BotKeyboard: String { return self._s[1833]! } - public var Channel_BanUser_BlockFor: String { return self._s[1834]! } - public var Bot_Start: String { return self._s[1835]! } - public var Your_card_has_expired: String { return self._s[1836]! } - public var Channel_About_Title: String { return self._s[1837]! } - public var VoiceChat_EditTitleTitle: String { return self._s[1838]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1839]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[1841]! } - public var Conversation_FileDropbox: String { return self._s[1842]! } - public var ChatList_Search_NoResultsFitlerMusic: String { return self._s[1843]! } - public var Month_GenNovember: String { return self._s[1844]! } - public var IntentsSettings_SuggestByShare: String { return self._s[1845]! } + public var Location_LiveLocationRequired_Description: String { return self._s[1829]! } + public var Conversation_ClearGroupHistory: String { return self._s[1830]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1833]! } + public var VoiceOver_BotKeyboard: String { return self._s[1834]! } + public var Channel_BanUser_BlockFor: String { return self._s[1835]! } + public var Bot_Start: String { return self._s[1836]! } + public var Your_card_has_expired: String { return self._s[1837]! } + public var Channel_About_Title: String { return self._s[1838]! } + public var VoiceChat_EditTitleTitle: String { return self._s[1839]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1840]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[1842]! } + public var Conversation_FileDropbox: String { return self._s[1843]! } + public var ChatList_Search_NoResultsFitlerMusic: String { return self._s[1844]! } + public var Month_GenNovember: String { return self._s[1845]! } + public var IntentsSettings_SuggestByShare: String { return self._s[1846]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1846]!, self._r[1846]!, [_0]) + return formatWithArgumentRanges(self._s[1847]!, self._r[1847]!, [_0]) } - public var StickerPack_Add: String { return self._s[1847]! } - public var Theme_ErrorNotFound: String { return self._s[1848]! } - public var Wallpaper_SearchShort: String { return self._s[1850]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1851]! } - public var ConversationProfile_UsersTooMuchError: String { return self._s[1852]! } - public var ChatList_FolderAllChats: String { return self._s[1853]! } - public var VoiceChat_EndConfirmationEnd: String { return self._s[1854]! } - public var Passport_Authorize: String { return self._s[1855]! } + public var StickerPack_Add: String { return self._s[1848]! } + public var Theme_ErrorNotFound: String { return self._s[1849]! } + public var Wallpaper_SearchShort: String { return self._s[1851]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1852]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[1853]! } + public var ChatList_FolderAllChats: String { return self._s[1854]! } + public var VoiceChat_EndConfirmationEnd: String { return self._s[1855]! } + public var Passport_Authorize: String { return self._s[1856]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1856]!, self._r[1856]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1857]!, self._r[1857]!, [_1, _2]) } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1857]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1858]! } public func PUSH_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1858]!, self._r[1858]!, [_1]) + return formatWithArgumentRanges(self._s[1859]!, self._r[1859]!, [_1]) } - public var LocalGroup_ButtonTitle: String { return self._s[1859]! } - public var VoiceOver_Stickers: String { return self._s[1861]! } - public var UserInfo_GroupsInCommon: String { return self._s[1862]! } - public var LoginPassword_Title: String { return self._s[1864]! } - public var Wallpaper_Set: String { return self._s[1865]! } - public var Stats_InteractionsTitle: String { return self._s[1866]! } + public var LocalGroup_ButtonTitle: String { return self._s[1860]! } + public var VoiceOver_Stickers: String { return self._s[1862]! } + public var UserInfo_GroupsInCommon: String { return self._s[1863]! } + public var LoginPassword_Title: String { return self._s[1865]! } + public var Wallpaper_Set: String { return self._s[1866]! } + public var Stats_InteractionsTitle: String { return self._s[1867]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1868]!, self._r[1868]!, [_0]) + return formatWithArgumentRanges(self._s[1869]!, self._r[1869]!, [_0]) } - public var Conversation_MessageDialogEdit: String { return self._s[1869]! } - public var Paint_Outlined: String { return self._s[1870]! } + public var Conversation_MessageDialogEdit: String { return self._s[1870]! } + public var Paint_Outlined: String { return self._s[1871]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1871]!, self._r[1871]!, [_0]) - } - public func Conversation_SetReminder_RemindTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1872]!, self._r[1872]!, [_0]) } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1873]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1874]! } - public var Appearance_ColorThemeNight: String { return self._s[1875]! } - public var ChannelInfo_Stats: String { return self._s[1876]! } - public var Widget_ShortcutsGalleryTitle: String { return self._s[1877]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1878]! } - public var MediaPicker_TimerTooltip: String { return self._s[1879]! } - public var ChatImportActivity_ErrorNotAdmin: String { return self._s[1880]! } - public var Common_ChoosePhoto: String { return self._s[1881]! } - public var Media_LimitedAccessTitle: String { return self._s[1882]! } - public var ChatSettings_AutoDownloadVideos: String { return self._s[1883]! } - public var PeerInfo_PaneGroups: String { return self._s[1884]! } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[1886]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1887]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1888]! } - public var OldChannels_ChannelsHeader: String { return self._s[1889]! } - public var MuteFor_Forever: String { return self._s[1890]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1891]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[1893]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1894]! } - public var ContactInfo_Job: String { return self._s[1895]! } - public var Passport_Language_mk: String { return self._s[1896]! } - public var EditTheme_ShortLink: String { return self._s[1897]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1900]! } - public var Month_GenApril: String { return self._s[1902]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[1904]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1905]! } - public var EditTheme_Create_Preview_OutgoingText: String { return self._s[1906]! } - public var EditTheme_Title: String { return self._s[1907]! } - public var Conversation_LinkDialogCopy: String { return self._s[1908]! } + public func Conversation_SetReminder_RemindTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1873]!, self._r[1873]!, [_0]) + } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1874]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1875]! } + public var Appearance_ColorThemeNight: String { return self._s[1876]! } + public var ChannelInfo_Stats: String { return self._s[1877]! } + public var Widget_ShortcutsGalleryTitle: String { return self._s[1878]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1879]! } + public var MediaPicker_TimerTooltip: String { return self._s[1880]! } + public var ChatImportActivity_ErrorNotAdmin: String { return self._s[1881]! } + public var Common_ChoosePhoto: String { return self._s[1882]! } + public var Media_LimitedAccessTitle: String { return self._s[1883]! } + public var ChatSettings_AutoDownloadVideos: String { return self._s[1884]! } + public var PeerInfo_PaneGroups: String { return self._s[1885]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[1887]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1888]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1889]! } + public var OldChannels_ChannelsHeader: String { return self._s[1890]! } + public var MuteFor_Forever: String { return self._s[1891]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1892]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[1894]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1895]! } + public var ContactInfo_Job: String { return self._s[1896]! } + public var Passport_Language_mk: String { return self._s[1897]! } + public var EditTheme_ShortLink: String { return self._s[1898]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1901]! } + public var Month_GenApril: String { return self._s[1903]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[1905]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1906]! } + public var EditTheme_Create_Preview_OutgoingText: String { return self._s[1907]! } + public var EditTheme_Title: String { return self._s[1908]! } + public var Conversation_LinkDialogCopy: String { return self._s[1909]! } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1909]!, self._r[1909]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1910]!, self._r[1910]!, [_1, _2]) } - public var Passport_ForgottenPassword: String { return self._s[1910]! } - public var WallpaperSearch_Recent: String { return self._s[1911]! } - public var ChatSettings_Title: String { return self._s[1916]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1917]! } + public var Passport_ForgottenPassword: String { return self._s[1911]! } + public var WallpaperSearch_Recent: String { return self._s[1912]! } + public var ChatSettings_Title: String { return self._s[1917]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1918]! } public func StickerPackActionInfo_AddedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1918]!, self._r[1918]!, [_0]) + return formatWithArgumentRanges(self._s[1919]!, self._r[1919]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[1919]! } - public var LastSeen_WithinAMonth: String { return self._s[1920]! } - public var VoiceChat_Live: String { return self._s[1921]! } - public var PeerInfo_ButtonCall: String { return self._s[1922]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[1923]! } - public var Group_Username_InvalidStartsWithNumber: String { return self._s[1924]! } - public var Call_AudioRouteHide: String { return self._s[1925]! } - public var DialogList_SavedMessages: String { return self._s[1926]! } - public var ChatList_Context_Mute: String { return self._s[1927]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1928]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[1920]! } + public var LastSeen_WithinAMonth: String { return self._s[1921]! } + public var VoiceChat_Live: String { return self._s[1922]! } + public var PeerInfo_ButtonCall: String { return self._s[1923]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[1924]! } + public var Group_Username_InvalidStartsWithNumber: String { return self._s[1925]! } + public var Call_AudioRouteHide: String { return self._s[1926]! } + public var DialogList_SavedMessages: String { return self._s[1927]! } + public var ChatList_Context_Mute: String { return self._s[1928]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1929]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1929]!, self._r[1929]!, [_0]) + return formatWithArgumentRanges(self._s[1930]!, self._r[1930]!, [_0]) } - public var VoiceChat_StatusMutedForYou: String { return self._s[1930]! } - public var Passport_Language_et: String { return self._s[1931]! } - public var Conversation_MessageLeaveCommentShort: String { return self._s[1932]! } - public var PhotoEditor_CropReset: String { return self._s[1933]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1934]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1935]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[1936]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1939]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1941]! } - public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[1942]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[1944]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1946]! } - public var Map_YouAreHere: String { return self._s[1948]! } - public var Core_ServiceUserStatus: String { return self._s[1949]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1952]! } - public var VoiceChat_StartRecording: String { return self._s[1953]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[1954]! } - public var MediaPicker_Videos: String { return self._s[1956]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1958]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1959]! } - public var SharedMedia_CategoryMedia: String { return self._s[1960]! } + public var VoiceChat_StatusMutedForYou: String { return self._s[1931]! } + public var Passport_Language_et: String { return self._s[1932]! } + public var Conversation_MessageLeaveCommentShort: String { return self._s[1933]! } + public var PhotoEditor_CropReset: String { return self._s[1934]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1935]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1936]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[1937]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1940]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1942]! } + public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[1943]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[1945]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1947]! } + public var Map_YouAreHere: String { return self._s[1949]! } + public var Core_ServiceUserStatus: String { return self._s[1950]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1953]! } + public var VoiceChat_StartRecording: String { return self._s[1954]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[1955]! } + public var MediaPicker_Videos: String { return self._s[1957]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1959]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1960]! } + public var SharedMedia_CategoryMedia: String { return self._s[1961]! } public func MediaPicker_Nof(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1961]!, self._r[1961]!, [_0]) + return formatWithArgumentRanges(self._s[1962]!, self._r[1962]!, [_0]) } - public var ChatSettings_AutoPlayGifs: String { return self._s[1962]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[1963]! } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[1964]! } - public var Conversation_JoinVoiceChatAsListener: String { return self._s[1965]! } - public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1966]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[1963]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[1964]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[1965]! } + public var Conversation_JoinVoiceChatAsListener: String { return self._s[1966]! } + public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1967]! } public func Chat_SlowmodeTooltip(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1967]!, self._r[1967]!, [_0]) + return formatWithArgumentRanges(self._s[1968]!, self._r[1968]!, [_0]) } - public var Web_Error: String { return self._s[1968]! } - public var PhotoEditor_SkinTool: String { return self._s[1969]! } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[1970]! } - public var AutoremoveSetup_TimerInfoChat: String { return self._s[1971]! } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[1973]! } - public var PasscodeSettings_Help: String { return self._s[1974]! } - public var Appearance_ColorTheme: String { return self._s[1975]! } + public var Web_Error: String { return self._s[1969]! } + public var PhotoEditor_SkinTool: String { return self._s[1970]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[1971]! } + public var AutoremoveSetup_TimerInfoChat: String { return self._s[1972]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[1974]! } + public var PasscodeSettings_Help: String { return self._s[1975]! } + public var Appearance_ColorTheme: String { return self._s[1976]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1976]!, self._r[1976]!, [_0]) + return formatWithArgumentRanges(self._s[1977]!, self._r[1977]!, [_0]) } - public var InviteLink_DeleteAllRevokedLinks: String { return self._s[1977]! } + public var InviteLink_DeleteAllRevokedLinks: String { return self._s[1978]! } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1978]!, self._r[1978]!, [_1]) + return formatWithArgumentRanges(self._s[1979]!, self._r[1979]!, [_1]) } - public var InviteLink_QRCode_Title: String { return self._s[1979]! } - public var GroupInfo_LeftStatus: String { return self._s[1980]! } - public var EditTheme_Preview: String { return self._s[1981]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1982]! } + public var InviteLink_QRCode_Title: String { return self._s[1980]! } + public var GroupInfo_LeftStatus: String { return self._s[1981]! } + public var EditTheme_Preview: String { return self._s[1982]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1983]! } public func AutoDownloadSettings_PreloadVideoInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1983]!, self._r[1983]!, [_0]) + return formatWithArgumentRanges(self._s[1984]!, self._r[1984]!, [_0]) } - public var NotificationsSound_Keys: String { return self._s[1984]! } - public var VoiceChat_StatusWantsToSpeak: String { return self._s[1985]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1986]! } - public var ChatList_Context_MarkAsUnread: String { return self._s[1987]! } - public var DialogList_AdNoticeAlert: String { return self._s[1988]! } - public var UserInfo_Invite: String { return self._s[1989]! } - public var Checkout_Email: String { return self._s[1990]! } - public var Stats_GroupActionsTitle: String { return self._s[1991]! } - public var Coub_TapForSound: String { return self._s[1992]! } - public var Conversation_AutoremoveTimerRemovedUserYou: String { return self._s[1993]! } - public var Theme_ThemeChangedText: String { return self._s[1994]! } - public var Call_ExternalCallInProgressMessage: String { return self._s[1995]! } - public var AutoremoveSetup_TimerInfoChannel: String { return self._s[1996]! } - public var Settings_ApplyProxyAlertEnable: String { return self._s[1997]! } - public var ScheduledMessages_ScheduledToday: String { return self._s[1998]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1999]! } + public var NotificationsSound_Keys: String { return self._s[1985]! } + public var VoiceChat_StatusWantsToSpeak: String { return self._s[1986]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1987]! } + public var ChatList_Context_MarkAsUnread: String { return self._s[1988]! } + public var DialogList_AdNoticeAlert: String { return self._s[1989]! } + public var UserInfo_Invite: String { return self._s[1990]! } + public var Checkout_Email: String { return self._s[1991]! } + public var Stats_GroupActionsTitle: String { return self._s[1992]! } + public var Coub_TapForSound: String { return self._s[1993]! } + public var Conversation_AutoremoveTimerRemovedUserYou: String { return self._s[1994]! } + public var Theme_ThemeChangedText: String { return self._s[1995]! } + public var Call_ExternalCallInProgressMessage: String { return self._s[1996]! } + public var AutoremoveSetup_TimerInfoChannel: String { return self._s[1997]! } + public var Settings_ApplyProxyAlertEnable: String { return self._s[1998]! } + public var ScheduledMessages_ScheduledToday: String { return self._s[1999]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[2000]! } public func VoiceChat_InviteMemberToChannelFirstText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2000]!, self._r[2000]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2001]!, self._r[2001]!, [_1, _2]) } - public var Call_ReportIncludeLogDescription: String { return self._s[2001]! } - public var Settings_FrequentlyAskedQuestions: String { return self._s[2003]! } - public var Call_VoiceOver_VoiceCallMissed: String { return self._s[2004]! } - public var Channel_MessagePhotoRemoved: String { return self._s[2005]! } - public var Passport_Email_Delete: String { return self._s[2006]! } + public var Call_ReportIncludeLogDescription: String { return self._s[2002]! } + public var Settings_FrequentlyAskedQuestions: String { return self._s[2004]! } + public var Call_VoiceOver_VoiceCallMissed: String { return self._s[2005]! } + public var Channel_MessagePhotoRemoved: String { return self._s[2006]! } + public var Passport_Email_Delete: String { return self._s[2007]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2007]!, self._r[2007]!, [_1]) + return formatWithArgumentRanges(self._s[2008]!, self._r[2008]!, [_1]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2008]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2009]! } public func Conversation_AutoremoveTimerRemovedUser(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2009]!, self._r[2009]!, [_1]) + return formatWithArgumentRanges(self._s[2010]!, self._r[2010]!, [_1]) } - public var Channel_AdminLog_CanAddAdmins: String { return self._s[2010]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[2012]! } - public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[2013]! } - public var Common_of: String { return self._s[2014]! } - public var VoiceChat_CreateNewVoiceChatText: String { return self._s[2015]! } - public var VoiceChat_StartRecordingStart: String { return self._s[2016]! } - public var PeerInfo_ButtonUnmute: String { return self._s[2019]! } + public var Channel_AdminLog_CanAddAdmins: String { return self._s[2011]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[2013]! } + public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[2014]! } + public var Common_of: String { return self._s[2015]! } + public var VoiceChat_CreateNewVoiceChatText: String { return self._s[2016]! } + public var VoiceChat_StartRecordingStart: String { return self._s[2017]! } + public var PeerInfo_ButtonUnmute: String { return self._s[2020]! } public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2020]!, self._r[2020]!, [_0]) + return formatWithArgumentRanges(self._s[2021]!, self._r[2021]!, [_0]) } - public var Privacy_ContactsReset_ContactsDeleted: String { return self._s[2021]! } - public var ChatList_AddChatsToFolder: String { return self._s[2022]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2023]! } - public var Settings_Title: String { return self._s[2025]! } - public var AutoDownloadSettings_Contacts: String { return self._s[2027]! } - public var Appearance_BubbleCornersSetting: String { return self._s[2028]! } - public var InviteLink_OtherAdminsLinks: String { return self._s[2029]! } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2030]! } - public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[2032]! } - public var WallpaperPreview_CropBottomText: String { return self._s[2033]! } - public var SecretTimer_VideoDescription: String { return self._s[2034]! } - public var VoiceOver_Chat_AnimatedSticker: String { return self._s[2035]! } - public var WallpaperPreview_Blurred: String { return self._s[2036]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2037]! } - public var ChatListFolder_ExcludedSectionHeader: String { return self._s[2039]! } - public var Conversation_CancelForwardSelectChat: String { return self._s[2040]! } - public var DialogList_PasscodeLockHelp: String { return self._s[2041]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2042]! } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2043]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2044]! } - public var Passport_FieldAddressTranslationHelp: String { return self._s[2045]! } - public var SocksProxySetup_Connection: String { return self._s[2046]! } - public var Passport_Address_TypePassportRegistration: String { return self._s[2047]! } - public var Contacts_PermissionsAllowInSettings: String { return self._s[2048]! } - public var Conversation_Unpin: String { return self._s[2049]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2050]! } - public var TwoFactorSetup_Hint_Placeholder: String { return self._s[2051]! } - public var Call_ReportSkip: String { return self._s[2052]! } + public var Privacy_ContactsReset_ContactsDeleted: String { return self._s[2022]! } + public var ChatList_AddChatsToFolder: String { return self._s[2023]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2024]! } + public var Settings_Title: String { return self._s[2026]! } + public var AutoDownloadSettings_Contacts: String { return self._s[2028]! } + public var Appearance_BubbleCornersSetting: String { return self._s[2029]! } + public var InviteLink_OtherAdminsLinks: String { return self._s[2030]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2031]! } + public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[2033]! } + public var WallpaperPreview_CropBottomText: String { return self._s[2034]! } + public var SecretTimer_VideoDescription: String { return self._s[2035]! } + public var VoiceOver_Chat_AnimatedSticker: String { return self._s[2036]! } + public var WallpaperPreview_Blurred: String { return self._s[2037]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2038]! } + public var ChatListFolder_ExcludedSectionHeader: String { return self._s[2040]! } + public var Conversation_CancelForwardSelectChat: String { return self._s[2041]! } + public var DialogList_PasscodeLockHelp: String { return self._s[2042]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2043]! } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2044]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2045]! } + public var Passport_FieldAddressTranslationHelp: String { return self._s[2046]! } + public var SocksProxySetup_Connection: String { return self._s[2047]! } + public var Passport_Address_TypePassportRegistration: String { return self._s[2048]! } + public var Contacts_PermissionsAllowInSettings: String { return self._s[2049]! } + public var Conversation_Unpin: String { return self._s[2050]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2051]! } + public var TwoFactorSetup_Hint_Placeholder: String { return self._s[2052]! } + public var Call_ReportSkip: String { return self._s[2053]! } public func VoiceOver_Chat_PhotoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2053]!, self._r[2053]!, [_0]) + return formatWithArgumentRanges(self._s[2054]!, self._r[2054]!, [_0]) } public func VoiceOver_Chat_Caption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2055]!, self._r[2055]!, [_0]) + return formatWithArgumentRanges(self._s[2056]!, self._r[2056]!, [_0]) } - public var AutoNightTheme_Automatic: String { return self._s[2056]! } - public var Passport_Language_az: String { return self._s[2058]! } + public var AutoNightTheme_Automatic: String { return self._s[2057]! } + public var Passport_Language_az: String { return self._s[2059]! } public func Conversation_AutoremoveChanged(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2059]!, self._r[2059]!, [_0]) + return formatWithArgumentRanges(self._s[2060]!, self._r[2060]!, [_0]) } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[2060]! } - public var Watch_UserInfo_Unmute: String { return self._s[2061]! } - public var Channel_Stickers_YourStickers: String { return self._s[2062]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2063]! } - public var PeerInfo_AutoremoveMessagesDisabled: String { return self._s[2064]! } - public var Tour_Text1: String { return self._s[2065]! } - public var Common_Delete: String { return self._s[2066]! } - public var Settings_EditPhoto: String { return self._s[2067]! } - public var Common_Edit: String { return self._s[2068]! } - public var ShareMenu_ShareTo: String { return self._s[2070]! } - public var Passport_Identity_ExpiryDate: String { return self._s[2071]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[2061]! } + public var Watch_UserInfo_Unmute: String { return self._s[2062]! } + public var Channel_Stickers_YourStickers: String { return self._s[2063]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2064]! } + public var PeerInfo_AutoremoveMessagesDisabled: String { return self._s[2065]! } + public var Tour_Text1: String { return self._s[2066]! } + public var Common_Delete: String { return self._s[2067]! } + public var Settings_EditPhoto: String { return self._s[2068]! } + public var Common_Edit: String { return self._s[2069]! } + public var ShareMenu_ShareTo: String { return self._s[2071]! } + public var Passport_Identity_ExpiryDate: String { return self._s[2072]! } public func Channel_AdminLog_MutedNewMembers(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2072]!, self._r[2072]!, [_1]) + return formatWithArgumentRanges(self._s[2073]!, self._r[2073]!, [_1]) } - public var Preview_DeleteGif: String { return self._s[2073]! } - public var WallpaperPreview_PatternPaternDiscard: String { return self._s[2074]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2075]! } - public var Conversation_ViewReply: String { return self._s[2076]! } - public var Stats_LoadingText: String { return self._s[2077]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2078]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2079]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2080]! } + public var Preview_DeleteGif: String { return self._s[2074]! } + public var WallpaperPreview_PatternPaternDiscard: String { return self._s[2075]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2076]! } + public var Conversation_ViewReply: String { return self._s[2077]! } + public var Stats_LoadingText: String { return self._s[2078]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2079]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2080]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2081]! } public func Passport_Phone_UseTelegramNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2081]!, self._r[2081]!, [_0]) - } - public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2082]!, self._r[2082]!, [_0]) } + public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2083]!, self._r[2083]!, [_0]) + } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2084]!, self._r[2084]!, [_0]) + return formatWithArgumentRanges(self._s[2085]!, self._r[2085]!, [_0]) } - public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[2085]! } - public var InviteLink_Share: String { return self._s[2087]! } + public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[2086]! } + public var InviteLink_Share: String { return self._s[2088]! } public func Conversation_ImportProgress(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2089]!, self._r[2089]!, [_0]) + return formatWithArgumentRanges(self._s[2090]!, self._r[2090]!, [_0]) } - public var IntentsSettings_MainAccount: String { return self._s[2090]! } - public var Group_MessagePhotoRemoved: String { return self._s[2093]! } - public var Conversation_ContextMenuSelect: String { return self._s[2094]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2096]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2097]! } - public var Contacts_PermissionsEnable: String { return self._s[2098]! } - public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[2099]! } - public var Common_NotNow: String { return self._s[2100]! } - public var Notification_CreatedChannel: String { return self._s[2101]! } - public var Stats_ViewsBySourceTitle: String { return self._s[2103]! } - public var InviteLink_ContextShare: String { return self._s[2104]! } - public var Appearance_AppIconClassic: String { return self._s[2105]! } - public var PhotoEditor_QualityTool: String { return self._s[2106]! } - public var ClearCache_ClearCache: String { return self._s[2107]! } - public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[2108]! } - public var AutoDownloadSettings_Videos: String { return self._s[2109]! } - public var GroupPermission_Duration: String { return self._s[2110]! } - public var ChatList_Read: String { return self._s[2111]! } + public var IntentsSettings_MainAccount: String { return self._s[2091]! } + public var Group_MessagePhotoRemoved: String { return self._s[2094]! } + public var Conversation_ContextMenuSelect: String { return self._s[2095]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2097]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2098]! } + public var Contacts_PermissionsEnable: String { return self._s[2099]! } + public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[2100]! } + public var Common_NotNow: String { return self._s[2101]! } + public var Notification_CreatedChannel: String { return self._s[2102]! } + public var Stats_ViewsBySourceTitle: String { return self._s[2104]! } + public var InviteLink_ContextShare: String { return self._s[2105]! } + public var Appearance_AppIconClassic: String { return self._s[2106]! } + public var PhotoEditor_QualityTool: String { return self._s[2107]! } + public var ClearCache_ClearCache: String { return self._s[2108]! } + public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[2109]! } + public var AutoDownloadSettings_Videos: String { return self._s[2110]! } + public var GroupPermission_Duration: String { return self._s[2111]! } + public var ChatList_Read: String { return self._s[2112]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2112]!, self._r[2112]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2113]!, self._r[2113]!, [_1, _2]) } public func ScheduleVoiceChat_ScheduleTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2113]!, self._r[2113]!, [_0]) + return formatWithArgumentRanges(self._s[2114]!, self._r[2114]!, [_0]) } - public var CallFeedback_Send: String { return self._s[2114]! } - public var Channel_Stickers_Searching: String { return self._s[2115]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[2116]! } - public var FastTwoStepSetup_HintSection: String { return self._s[2117]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2118]! } - public var EditTheme_CreateTitle: String { return self._s[2120]! } - public var Application_Name: String { return self._s[2121]! } - public var Paint_Stickers: String { return self._s[2122]! } - public var Appearance_ThemePreview_Chat_1_Text: String { return self._s[2123]! } - public var Call_StatusFailed: String { return self._s[2124]! } - public var Stickers_FavoriteStickers: String { return self._s[2125]! } - public var ClearCache_Clear: String { return self._s[2126]! } - public var Passport_Language_mn: String { return self._s[2127]! } - public var WallpaperPreview_PreviewTopText: String { return self._s[2128]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2129]! } - public var Call_VoiceOver_VideoCallOutgoing: String { return self._s[2131]! } - public var TwoFactorSetup_Hint_Text: String { return self._s[2133]! } - public var WallpaperPreview_PatternIntensity: String { return self._s[2134]! } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2135]! } - public var Passport_Address_AddBankStatement: String { return self._s[2136]! } + public var CallFeedback_Send: String { return self._s[2115]! } + public var Channel_Stickers_Searching: String { return self._s[2116]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[2117]! } + public var FastTwoStepSetup_HintSection: String { return self._s[2118]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2119]! } + public var EditTheme_CreateTitle: String { return self._s[2121]! } + public var Application_Name: String { return self._s[2122]! } + public var Paint_Stickers: String { return self._s[2123]! } + public var Appearance_ThemePreview_Chat_1_Text: String { return self._s[2124]! } + public var Call_StatusFailed: String { return self._s[2125]! } + public var Stickers_FavoriteStickers: String { return self._s[2126]! } + public var ClearCache_Clear: String { return self._s[2127]! } + public var Passport_Language_mn: String { return self._s[2128]! } + public var WallpaperPreview_PreviewTopText: String { return self._s[2129]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2130]! } + public var Call_VoiceOver_VideoCallOutgoing: String { return self._s[2132]! } + public var TwoFactorSetup_Hint_Text: String { return self._s[2134]! } + public var WallpaperPreview_PatternIntensity: String { return self._s[2135]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2136]! } + public var Passport_Address_AddBankStatement: String { return self._s[2137]! } public func Conversation_TitleRepliesFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2139]!, self._r[2139]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2140]!, self._r[2140]!, [_1, _2]) } - public var ChatListFolderSettings_RecommendedNewFolder: String { return self._s[2140]! } - public var UserInfo_ShareContact: String { return self._s[2141]! } - public var Passport_Identity_NamePlaceholder: String { return self._s[2142]! } - public var Channel_ErrorAdminsTooMuch: String { return self._s[2144]! } - public var Call_RateCall: String { return self._s[2145]! } - public var Contacts_AccessDeniedError: String { return self._s[2146]! } - public var Invite_ChannelsTooMuch: String { return self._s[2147]! } - public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[2148]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2149]! } - public var InviteLink_Create_TimeLimitInfo: String { return self._s[2150]! } - public var Cache_NoLimit: String { return self._s[2153]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2154]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2158]! } - public var Notification_Exceptions_MessagePreviewAlwaysOff: String { return self._s[2159]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2160]! } - public var Privacy_PaymentsClear_AllInfoCleared: String { return self._s[2161]! } - public var Privacy_Calls_IntegrationHelp: String { return self._s[2162]! } + public var ChatListFolderSettings_RecommendedNewFolder: String { return self._s[2141]! } + public var UserInfo_ShareContact: String { return self._s[2142]! } + public var Passport_Identity_NamePlaceholder: String { return self._s[2143]! } + public var Channel_ErrorAdminsTooMuch: String { return self._s[2145]! } + public var Call_RateCall: String { return self._s[2146]! } + public var Contacts_AccessDeniedError: String { return self._s[2147]! } + public var Invite_ChannelsTooMuch: String { return self._s[2148]! } + public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[2149]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2150]! } + public var InviteLink_Create_TimeLimitInfo: String { return self._s[2151]! } + public var Cache_NoLimit: String { return self._s[2154]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2155]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2159]! } + public var Notification_Exceptions_MessagePreviewAlwaysOff: String { return self._s[2160]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2161]! } + public var Privacy_PaymentsClear_AllInfoCleared: String { return self._s[2162]! } + public var Privacy_Calls_IntegrationHelp: String { return self._s[2163]! } public func PUSH_VIDEO_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2163]!, self._r[2163]!, [_1]) + return formatWithArgumentRanges(self._s[2164]!, self._r[2164]!, [_1]) } - public var VoiceOver_Media_PlaybackRateFast: String { return self._s[2164]! } - public var Theme_ThemeChanged: String { return self._s[2165]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2167]! } - public var AutoDownloadSettings_MediaTypes: String { return self._s[2168]! } + public var VoiceOver_Media_PlaybackRateFast: String { return self._s[2165]! } + public var Theme_ThemeChanged: String { return self._s[2166]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2168]! } + public var AutoDownloadSettings_MediaTypes: String { return self._s[2169]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2169]!, self._r[2169]!, [_0]) + return formatWithArgumentRanges(self._s[2170]!, self._r[2170]!, [_0]) } - public var Channel_AdminLog_InfoPanelTitle: String { return self._s[2170]! } - public var Passport_Language_da: String { return self._s[2172]! } - public var Chat_SlowmodeSendError: String { return self._s[2173]! } - public var Application_Update: String { return self._s[2175]! } - public var SocksProxySetup_SaveProxy: String { return self._s[2176]! } + public var Channel_AdminLog_InfoPanelTitle: String { return self._s[2171]! } + public var Passport_Language_da: String { return self._s[2173]! } + public var Chat_SlowmodeSendError: String { return self._s[2174]! } + public var Application_Update: String { return self._s[2176]! } + public var SocksProxySetup_SaveProxy: String { return self._s[2177]! } public func PUSH_AUTH_REGION(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2177]!, self._r[2177]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2178]!, self._r[2178]!, [_1, _2]) } - public var Privacy_AddNewPeer: String { return self._s[2179]! } - public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[2181]! } - public var Channel_Members_Title: String { return self._s[2182]! } - public var StickerPacks_ActionDelete: String { return self._s[2183]! } - public var Conversation_ScheduledVoiceChat: String { return self._s[2184]! } - public var Settings_LogoutConfirmationText: String { return self._s[2186]! } - public var Chat_UnsendMyMessages: String { return self._s[2187]! } - public var PeerInfo_ReportProfilePhoto: String { return self._s[2188]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2190]! } - public var ChatListFilter_AddChatsTitle: String { return self._s[2191]! } - public var Passport_FloodError: String { return self._s[2192]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[2193]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[2194]! } - public var CallSettings_TabIconDescription: String { return self._s[2195]! } - public var Group_Setup_HistoryHeader: String { return self._s[2197]! } + public var Privacy_AddNewPeer: String { return self._s[2180]! } + public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[2182]! } + public var Channel_Members_Title: String { return self._s[2183]! } + public var StickerPacks_ActionDelete: String { return self._s[2184]! } + public var Conversation_ScheduledVoiceChat: String { return self._s[2185]! } + public var Settings_LogoutConfirmationText: String { return self._s[2187]! } + public var Chat_UnsendMyMessages: String { return self._s[2188]! } + public var PeerInfo_ReportProfilePhoto: String { return self._s[2189]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2191]! } + public var ChatListFilter_AddChatsTitle: String { return self._s[2192]! } + public var Passport_FloodError: String { return self._s[2193]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[2194]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[2195]! } + public var CallSettings_TabIconDescription: String { return self._s[2196]! } + public var Group_Setup_HistoryHeader: String { return self._s[2198]! } public func Channel_AdminLog_AllowedNewMembersToSpeak(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2198]!, self._r[2198]!, [_1]) + return formatWithArgumentRanges(self._s[2199]!, self._r[2199]!, [_1]) } - public var TwoStepAuth_EmailTitle: String { return self._s[2199]! } - public var GroupInfo_Permissions_Removed: String { return self._s[2200]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[2201]! } - public var Contacts_Title: String { return self._s[2203]! } + public var TwoStepAuth_EmailTitle: String { return self._s[2200]! } + public var GroupInfo_Permissions_Removed: String { return self._s[2201]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[2202]! } + public var Contacts_Title: String { return self._s[2204]! } public func Notification_Invited(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2204]!, self._r[2204]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2205]!, self._r[2205]!, [_0, _1]) } - public var ChatList_PeerTypeBot: String { return self._s[2207]! } + public var ChatList_PeerTypeBot: String { return self._s[2208]! } public func Channel_AdminLog_SetSlowmode(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2208]!, self._r[2208]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2209]!, self._r[2209]!, [_1, _2]) } - public var Appearance_ThemePreview_Chat_6_Text: String { return self._s[2209]! } + public var Appearance_ThemePreview_Chat_6_Text: String { return self._s[2210]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2210]!, self._r[2210]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2211]!, self._r[2211]!, [_1, _2, _3]) } - public var Camera_PhotoMode: String { return self._s[2212]! } + public var Camera_PhotoMode: String { return self._s[2213]! } public func PUSH_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2213]!, self._r[2213]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2214]!, self._r[2214]!, [_1, _2, _3]) } - public var ContactInfo_PhoneLabelPager: String { return self._s[2214]! } - public var SettingsSearch_Synonyms_FAQ: String { return self._s[2215]! } - public var Call_CallAgain: String { return self._s[2216]! } - public var TwoStepAuth_PasswordSet: String { return self._s[2217]! } - public var VoiceChat_EditDescriptionPlaceholder: String { return self._s[2218]! } + public var ContactInfo_PhoneLabelPager: String { return self._s[2215]! } + public var SettingsSearch_Synonyms_FAQ: String { return self._s[2216]! } + public var Call_CallAgain: String { return self._s[2217]! } + public var TwoStepAuth_PasswordSet: String { return self._s[2218]! } + public var VoiceChat_EditDescriptionPlaceholder: String { return self._s[2219]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2219]!, self._r[2219]!, [_0]) + return formatWithArgumentRanges(self._s[2220]!, self._r[2220]!, [_0]) } - public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[2220]! } - public var ClearCache_FreeSpaceDescription: String { return self._s[2221]! } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2222]! } - public var Group_LeaveGroup: String { return self._s[2223]! } - public var Channel_Setup_LinkTypePrivate: String { return self._s[2225]! } - public var GroupInfo_LabelAdmin: String { return self._s[2227]! } - public var CheckoutInfo_ErrorStateInvalid: String { return self._s[2229]! } - public var Notification_PassportValuePersonalDetails: String { return self._s[2230]! } + public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[2221]! } + public var ClearCache_FreeSpaceDescription: String { return self._s[2222]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2223]! } + public var Group_LeaveGroup: String { return self._s[2224]! } + public var Channel_Setup_LinkTypePrivate: String { return self._s[2226]! } + public var GroupInfo_LabelAdmin: String { return self._s[2228]! } + public var CheckoutInfo_ErrorStateInvalid: String { return self._s[2230]! } + public var Notification_PassportValuePersonalDetails: String { return self._s[2231]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2231]!, self._r[2231]!, [_0]) + return formatWithArgumentRanges(self._s[2232]!, self._r[2232]!, [_0]) } - public var Stats_GroupNewMembersBySourceTitle: String { return self._s[2232]! } - public var Appearance_Preview: String { return self._s[2233]! } - public var VoiceOver_Chat_Contact: String { return self._s[2234]! } - public var Passport_Language_th: String { return self._s[2235]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2237]! } - public var LastSeen_Offline: String { return self._s[2240]! } - public var Map_OpenInHereMaps: String { return self._s[2241]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2242]! } - public var InviteLink_ContextEdit: String { return self._s[2244]! } - public var AutoDownloadSettings_Reset: String { return self._s[2245]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[2246]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[2247]! } + public var Stats_GroupNewMembersBySourceTitle: String { return self._s[2233]! } + public var Appearance_Preview: String { return self._s[2234]! } + public var VoiceOver_Chat_Contact: String { return self._s[2235]! } + public var Passport_Language_th: String { return self._s[2236]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2238]! } + public var LastSeen_Offline: String { return self._s[2241]! } + public var Map_OpenInHereMaps: String { return self._s[2242]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2243]! } + public var InviteLink_ContextEdit: String { return self._s[2245]! } + public var AutoDownloadSettings_Reset: String { return self._s[2246]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[2247]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[2248]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2248]!, self._r[2248]!, [_0]) - } - public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2249]!, self._r[2249]!, [_0]) } - public var Passport_Identity_EditDriversLicense: String { return self._s[2250]! } - public var ChatListFolder_NameNonMuted: String { return self._s[2251]! } - public var Username_Placeholder: String { return self._s[2252]! } + public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2250]!, self._r[2250]!, [_0]) + } + public var Passport_Identity_EditDriversLicense: String { return self._s[2251]! } + public var ChatListFolder_NameNonMuted: String { return self._s[2252]! } + public var Username_Placeholder: String { return self._s[2253]! } public func PUSH_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2253]!, self._r[2253]!, [_1]) + return formatWithArgumentRanges(self._s[2254]!, self._r[2254]!, [_1]) } - public var Passport_Language_it: String { return self._s[2254]! } - public var Checkout_NewCard_SaveInfo: String { return self._s[2255]! } + public var Passport_Language_it: String { return self._s[2255]! } + public var Checkout_NewCard_SaveInfo: String { return self._s[2256]! } public func Channel_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2256]!, self._r[2256]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2257]!, self._r[2257]!, [_1, _2]) } - public var NotificationsSound_Pulse: String { return self._s[2257]! } - public var VoiceOver_DismissContextMenu: String { return self._s[2259]! } - public var MessagePoll_NoVotes: String { return self._s[2262]! } - public var Message_Wallpaper: String { return self._s[2263]! } - public var Conversation_JoinVoiceChat: String { return self._s[2264]! } - public var Appearance_Other: String { return self._s[2265]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2267]! } - public var Group_PublicLink_Placeholder: String { return self._s[2271]! } - public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2272]! } - public var VoiceOver_Recording_StopAndPreview: String { return self._s[2273]! } - public var ChatListFolder_NameBots: String { return self._s[2274]! } - public var Conversation_StopPollConfirmation: String { return self._s[2275]! } - public var UserInfo_DeleteContact: String { return self._s[2276]! } + public var NotificationsSound_Pulse: String { return self._s[2258]! } + public var VoiceOver_DismissContextMenu: String { return self._s[2260]! } + public var MessagePoll_NoVotes: String { return self._s[2263]! } + public var Message_Wallpaper: String { return self._s[2264]! } + public var Conversation_JoinVoiceChat: String { return self._s[2265]! } + public var Appearance_Other: String { return self._s[2266]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2268]! } + public var Group_PublicLink_Placeholder: String { return self._s[2272]! } + public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2273]! } + public var VoiceOver_Recording_StopAndPreview: String { return self._s[2274]! } + public var ChatListFolder_NameBots: String { return self._s[2275]! } + public var Conversation_StopPollConfirmation: String { return self._s[2276]! } + public var UserInfo_DeleteContact: String { return self._s[2277]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2277]!, self._r[2277]!, [_0]) + return formatWithArgumentRanges(self._s[2278]!, self._r[2278]!, [_0]) } - public var Wallpaper_Wallpaper: String { return self._s[2279]! } + public var Wallpaper_Wallpaper: String { return self._s[2280]! } public func PUSH_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2280]!, self._r[2280]!, [_1]) + return formatWithArgumentRanges(self._s[2281]!, self._r[2281]!, [_1]) } - public var LoginPassword_ForgotPassword: String { return self._s[2281]! } - public var FeaturedStickerPacks_Title: String { return self._s[2282]! } - public var Paint_Pen: String { return self._s[2283]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2284]! } - public var ChatListFolderSettings_Info: String { return self._s[2285]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2286]! } - public var PhotoEditor_CurvesAll: String { return self._s[2288]! } + public var LoginPassword_ForgotPassword: String { return self._s[2282]! } + public var FeaturedStickerPacks_Title: String { return self._s[2283]! } + public var Paint_Pen: String { return self._s[2284]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2285]! } + public var ChatListFolderSettings_Info: String { return self._s[2286]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2287]! } + public var PhotoEditor_CurvesAll: String { return self._s[2289]! } public func Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2290]!, self._r[2290]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2291]!, self._r[2291]!, [_1, _2, _3]) } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2292]! } - public var Message_ImageExpired: String { return self._s[2293]! } - public var Call_ConnectionErrorMessage: String { return self._s[2294]! } - public var SearchImages_NoImagesFound: String { return self._s[2296]! } - public var PeerInfo_PaneGifs: String { return self._s[2297]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2298]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2299]! } - public var PhotoEditor_VignetteTool: String { return self._s[2300]! } - public var Passport_Language_dz: String { return self._s[2301]! } - public var Notifications_ChannelNotificationsHelp: String { return self._s[2302]! } - public var Conversation_BlockUser: String { return self._s[2303]! } - public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2306]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2308]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2293]! } + public var Message_ImageExpired: String { return self._s[2294]! } + public var Call_ConnectionErrorMessage: String { return self._s[2295]! } + public var SearchImages_NoImagesFound: String { return self._s[2297]! } + public var PeerInfo_PaneGifs: String { return self._s[2298]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2299]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2300]! } + public var PhotoEditor_VignetteTool: String { return self._s[2301]! } + public var Passport_Language_dz: String { return self._s[2302]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[2303]! } + public var Conversation_BlockUser: String { return self._s[2304]! } + public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2307]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2309]! } public func Time_MonthOfYear_m8(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2309]!, self._r[2309]!, [_0]) + return formatWithArgumentRanges(self._s[2310]!, self._r[2310]!, [_0]) } - public var KeyCommand_NewMessage: String { return self._s[2310]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2313]! } + public var KeyCommand_NewMessage: String { return self._s[2311]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2314]! } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2315]!, self._r[2315]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2316]!, self._r[2316]!, [_1, _2]) } - public var ContactList_Context_StartSecretChat: String { return self._s[2316]! } - public var VoiceOver_Chat_File: String { return self._s[2317]! } - public var ChatList_EditFolder: String { return self._s[2319]! } - public var Appearance_BubbleCorners_Title: String { return self._s[2320]! } - public var PeerInfo_PaneAudio: String { return self._s[2321]! } - public var ChatListFolder_CategoryContacts: String { return self._s[2323]! } - public var VoiceOver_ScheduledMessages: String { return self._s[2324]! } + public var ContactList_Context_StartSecretChat: String { return self._s[2317]! } + public var VoiceOver_Chat_File: String { return self._s[2318]! } + public var ChatList_EditFolder: String { return self._s[2320]! } + public var Appearance_BubbleCorners_Title: String { return self._s[2321]! } + public var PeerInfo_PaneAudio: String { return self._s[2322]! } + public var ChatListFolder_CategoryContacts: String { return self._s[2324]! } + public var VoiceOver_ScheduledMessages: String { return self._s[2325]! } public func Login_InvalidPhoneEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2325]!, self._r[2325]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[2326]!, self._r[2326]!, [_1, _2, _3, _4, _5]) } - public var ChatList_PeerTypeChannel: String { return self._s[2326]! } - public var VoiceOver_Navigation_Search: String { return self._s[2327]! } - public var Settings_Search: String { return self._s[2328]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2329]! } - public var Login_PhoneBannedError: String { return self._s[2330]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2331]! } - public var Passport_Language_fa: String { return self._s[2332]! } - public var Settings_About: String { return self._s[2333]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2334]! } - public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2335]! } - public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2336]! } + public var ChatList_PeerTypeChannel: String { return self._s[2327]! } + public var VoiceOver_Navigation_Search: String { return self._s[2328]! } + public var Settings_Search: String { return self._s[2329]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2330]! } + public var Login_PhoneBannedError: String { return self._s[2331]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2332]! } + public var Passport_Language_fa: String { return self._s[2333]! } + public var Settings_About: String { return self._s[2334]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2335]! } + public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2336]! } + public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2337]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2337]!, self._r[2337]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2338]!, self._r[2338]!, [_1, _2, _3]) } - public var Common_OK: String { return self._s[2338]! } - public var Contacts_SortBy: String { return self._s[2339]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[2340]! } + public var Common_OK: String { return self._s[2339]! } + public var Contacts_SortBy: String { return self._s[2340]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[2341]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2342]!, self._r[2342]!, [_0]) + return formatWithArgumentRanges(self._s[2343]!, self._r[2343]!, [_0]) } - public var CallFeedback_IncludeLogs: String { return self._s[2345]! } + public var CallFeedback_IncludeLogs: String { return self._s[2346]! } public func External_OpenIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2346]!, self._r[2346]!, [_0]) + return formatWithArgumentRanges(self._s[2347]!, self._r[2347]!, [_0]) } - public var Passcode_AppLockedAlert: String { return self._s[2348]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2349]! } - public var Channel_NotificationLoading: String { return self._s[2351]! } - public var Passport_Identity_DocumentNumber: String { return self._s[2352]! } - public var VoiceOver_Chat_PagePreview: String { return self._s[2353]! } - public var VoiceOver_Chat_OpenHint: String { return self._s[2354]! } - public var Weekday_ShortFriday: String { return self._s[2355]! } - public var Conversation_TitleMute: String { return self._s[2356]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2357]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[2358]! } - public var DialogList_LanguageTooltip: String { return self._s[2360]! } - public var BroadcastGroups_IntroTitle: String { return self._s[2361]! } - public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2362]! } + public var Passcode_AppLockedAlert: String { return self._s[2349]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2350]! } + public var Channel_NotificationLoading: String { return self._s[2352]! } + public var Passport_Identity_DocumentNumber: String { return self._s[2353]! } + public var VoiceOver_Chat_PagePreview: String { return self._s[2354]! } + public var VoiceOver_Chat_OpenHint: String { return self._s[2355]! } + public var Weekday_ShortFriday: String { return self._s[2356]! } + public var Conversation_TitleMute: String { return self._s[2357]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2358]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[2359]! } + public var DialogList_LanguageTooltip: String { return self._s[2361]! } + public var BroadcastGroups_IntroTitle: String { return self._s[2362]! } + public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2363]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2363]!, self._r[2363]!, [_0]) + return formatWithArgumentRanges(self._s[2364]!, self._r[2364]!, [_0]) } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2365]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2366]! } - public var Settings_EditVideo: String { return self._s[2367]! } - public var VoiceOver_Common_Off: String { return self._s[2368]! } - public var Stickers_FrequentlyUsed: String { return self._s[2369]! } - public var GroupPermission_Title: String { return self._s[2370]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2371]! } - public var Appearance_ThemeCarouselDay: String { return self._s[2372]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2366]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2367]! } + public var Settings_EditVideo: String { return self._s[2368]! } + public var VoiceOver_Common_Off: String { return self._s[2369]! } + public var Stickers_FrequentlyUsed: String { return self._s[2370]! } + public var GroupPermission_Title: String { return self._s[2371]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2372]! } + public var Appearance_ThemeCarouselDay: String { return self._s[2373]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2373]!, self._r[2373]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2374]!, self._r[2374]!, [_1, _2]) } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2374]! } - public var Tour_Title6: String { return self._s[2375]! } - public var EmptyGroupInfo_Title: String { return self._s[2376]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2375]! } + public var Tour_Title6: String { return self._s[2376]! } + public var EmptyGroupInfo_Title: String { return self._s[2377]! } public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2377]!, self._r[2377]!, [_0]) + return formatWithArgumentRanges(self._s[2378]!, self._r[2378]!, [_0]) } - public var Passport_Language_sk: String { return self._s[2378]! } - public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2379]! } - public var Preview_SaveToCameraRoll: String { return self._s[2380]! } + public var Passport_Language_sk: String { return self._s[2379]! } + public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2380]! } + public var Preview_SaveToCameraRoll: String { return self._s[2381]! } public func VoiceChat_YouCanNowSpeakIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2381]!, self._r[2381]!, [_0]) + return formatWithArgumentRanges(self._s[2382]!, self._r[2382]!, [_0]) } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[2382]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2383]! } - public var Conversation_ContextMenuMore: String { return self._s[2384]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2385]! } - public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2386]! } - public var CallFeedback_ReasonSilentLocal: String { return self._s[2388]! } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[2383]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2384]! } + public var Conversation_ContextMenuMore: String { return self._s[2385]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2386]! } + public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2387]! } + public var CallFeedback_ReasonSilentLocal: String { return self._s[2389]! } public func Channel_AdminLog_UnmutedMutedParticipant(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2389]!, self._r[2389]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2390]!, self._r[2390]!, [_1, _2]) } - public var UserInfo_NotificationsDisable: String { return self._s[2390]! } + public var UserInfo_NotificationsDisable: String { return self._s[2391]! } public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2392]!, self._r[2392]!, [_0]) + return formatWithArgumentRanges(self._s[2393]!, self._r[2393]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2393]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2394]! } public func Date_ChatDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2395]!, self._r[2395]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2396]!, self._r[2396]!, [_1, _2]) } - public var WallpaperSearch_ColorPrefix: String { return self._s[2396]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2397]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2397]!, self._r[2397]!, [_0]) + return formatWithArgumentRanges(self._s[2398]!, self._r[2398]!, [_0]) } - public var Conversation_RestrictedMedia: String { return self._s[2399]! } - public var Group_MessageVideoUpdated: String { return self._s[2400]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2401]! } - public var GroupInfo_DeleteAndExit: String { return self._s[2402]! } - public var TwoFactorSetup_Email_Action: String { return self._s[2403]! } - public var Media_ShareThisVideo: String { return self._s[2405]! } - public var DialogList_Replies: String { return self._s[2407]! } + public var Conversation_RestrictedMedia: String { return self._s[2400]! } + public var Group_MessageVideoUpdated: String { return self._s[2401]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2402]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2403]! } + public var TwoFactorSetup_Email_Action: String { return self._s[2404]! } + public var Media_ShareThisVideo: String { return self._s[2406]! } + public var DialogList_Replies: String { return self._s[2408]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2408]!, self._r[2408]!, [_0]) + return formatWithArgumentRanges(self._s[2409]!, self._r[2409]!, [_0]) } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2409]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[2410]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2411]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2410]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[2411]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2412]! } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2412]!, self._r[2412]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2413]!, self._r[2413]!, [_1, _2]) } public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2413]!, self._r[2413]!, [_0]) + return formatWithArgumentRanges(self._s[2414]!, self._r[2414]!, [_0]) } - public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2414]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2415]! } - public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2416]! } - public var Channel_Members_InviteLink: String { return self._s[2417]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2418]! } - public var WatchRemote_AlertText: String { return self._s[2419]! } + public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2415]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2416]! } + public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2417]! } + public var Channel_Members_InviteLink: String { return self._s[2418]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2419]! } + public var WatchRemote_AlertText: String { return self._s[2420]! } public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2420]!, self._r[2420]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2421]!, self._r[2421]!, [_1, _2]) } - public var Conversation_Pin: String { return self._s[2421]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2422]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2423]! } - public var Conversation_CancelForwardTitle: String { return self._s[2424]! } + public var Conversation_Pin: String { return self._s[2422]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2423]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2424]! } + public var Conversation_CancelForwardTitle: String { return self._s[2425]! } public func Notification_PinnedPollMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2425]!, self._r[2425]!, [_0]) + return formatWithArgumentRanges(self._s[2426]!, self._r[2426]!, [_0]) } - public var Appearance_AppIconFilled: String { return self._s[2426]! } - public var StickerPack_ErrorNotFound: String { return self._s[2427]! } + public var Appearance_AppIconFilled: String { return self._s[2427]! } + public var StickerPack_ErrorNotFound: String { return self._s[2428]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_1]) + return formatWithArgumentRanges(self._s[2429]!, self._r[2429]!, [_1]) } - public var Passport_Identity_AddIdentityCard: String { return self._s[2429]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[2430]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2431]!, self._r[2431]!, [_1]) + return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_1]) } - public var Call_Camera: String { return self._s[2432]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2433]! } - public var Group_Location_Info: String { return self._s[2434]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[2435]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2436]! } + public var Call_Camera: String { return self._s[2433]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2434]! } + public var Group_Location_Info: String { return self._s[2435]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[2436]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2437]! } public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2437]!, self._r[2437]!, [_0]) + return formatWithArgumentRanges(self._s[2438]!, self._r[2438]!, [_0]) } - public var Weekday_Yesterday: String { return self._s[2438]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2439]! } - public var InviteLink_Create_UsersLimit: String { return self._s[2440]! } + public var Weekday_Yesterday: String { return self._s[2439]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2440]! } + public var InviteLink_Create_UsersLimit: String { return self._s[2441]! } public func Notification_VoiceChatScheduledTodayChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2441]!, self._r[2441]!, [_0]) + return formatWithArgumentRanges(self._s[2442]!, self._r[2442]!, [_0]) } - public var ArchivedPacksAlert_Title: String { return self._s[2442]! } - public var PeerInfo_PaneMembers: String { return self._s[2443]! } - public var PhotoEditor_SelectCoverFrame: String { return self._s[2444]! } + public var ArchivedPacksAlert_Title: String { return self._s[2443]! } + public var PeerInfo_PaneMembers: String { return self._s[2444]! } + public var PhotoEditor_SelectCoverFrame: String { return self._s[2445]! } public func Location_ProximityAlertSetTextGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2445]!, self._r[2445]!, [_0]) + return formatWithArgumentRanges(self._s[2446]!, self._r[2446]!, [_0]) } - public var ContactInfo_PhoneLabelMain: String { return self._s[2446]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[2447]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2447]!, self._r[2447]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2448]!, self._r[2448]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2448]! } - public var Channel_DiscussionGroup: String { return self._s[2449]! } - public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2450]! } - public var InviteLink_Create_TimeLimit: String { return self._s[2452]! } - public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2453]! } - public var VoiceOver_MessageContextForward: String { return self._s[2454]! } - public var SocksProxySetup_TypeNone: String { return self._s[2455]! } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2457]! } - public var ProfilePhoto_OpenInEditor: String { return self._s[2459]! } - public var WallpaperSearch_ColorPurple: String { return self._s[2460]! } - public var ChatListFolder_IncludeChatsTitle: String { return self._s[2461]! } - public var Group_Username_InvalidTooShort: String { return self._s[2462]! } - public var Location_ProximityNotification_DistanceM: String { return self._s[2463]! } - public var VoiceChat_EditTitleText: String { return self._s[2464]! } + public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2449]! } + public var Channel_DiscussionGroup: String { return self._s[2450]! } + public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2451]! } + public var InviteLink_Create_TimeLimit: String { return self._s[2453]! } + public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2454]! } + public var VoiceOver_MessageContextForward: String { return self._s[2455]! } + public var SocksProxySetup_TypeNone: String { return self._s[2456]! } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2458]! } + public var ProfilePhoto_OpenInEditor: String { return self._s[2460]! } + public var WallpaperSearch_ColorPurple: String { return self._s[2461]! } + public var ChatListFolder_IncludeChatsTitle: String { return self._s[2462]! } + public var Group_Username_InvalidTooShort: String { return self._s[2463]! } + public var Location_ProximityNotification_DistanceM: String { return self._s[2464]! } + public var VoiceChat_EditTitleText: String { return self._s[2465]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2465]!, self._r[2465]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[2466]!, self._r[2466]!, [_0, _1, _2]) } - public var Passport_Language_tk: String { return self._s[2466]! } - public var ConvertToSupergroup_Title: String { return self._s[2467]! } - public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2468]! } - public var Cache_KeepMediaHelp: String { return self._s[2469]! } - public var Channel_Management_Title: String { return self._s[2470]! } + public var Passport_Language_tk: String { return self._s[2467]! } + public var ConvertToSupergroup_Title: String { return self._s[2468]! } + public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2469]! } + public var Cache_KeepMediaHelp: String { return self._s[2470]! } + public var Channel_Management_Title: String { return self._s[2471]! } public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2471]!, self._r[2471]!, [_1]) + return formatWithArgumentRanges(self._s[2472]!, self._r[2472]!, [_1]) } - public var Conversation_ForwardChats: String { return self._s[2472]! } - public var Passport_Language_bg: String { return self._s[2473]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2474]! } - public var Permissions_PrivacyPolicy: String { return self._s[2475]! } - public var VoiceOver_Chat_YourMusic: String { return self._s[2476]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2477]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2478]! } - public var Conversation_ContextMenuOpenChannel: String { return self._s[2479]! } - public var Report_AdditionalDetailsPlaceholder: String { return self._s[2480]! } - public var Activity_UploadingVideo: String { return self._s[2481]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2483]! } - public var Widget_LongTapToEdit: String { return self._s[2484]! } - public var VoiceChat_InviteLink_Listener: String { return self._s[2486]! } - public var SocksProxySetup_Credentials: String { return self._s[2487]! } - public var Preview_SaveGif: String { return self._s[2488]! } - public var Cache_Photos: String { return self._s[2489]! } - public var Channel_AdminLogFilter_EventsCalls: String { return self._s[2490]! } - public var Conversation_ContextMenuCancelEditing: String { return self._s[2491]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[2492]! } + public var Conversation_ForwardChats: String { return self._s[2473]! } + public var Passport_Language_bg: String { return self._s[2474]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2475]! } + public var Permissions_PrivacyPolicy: String { return self._s[2476]! } + public var VoiceOver_Chat_YourMusic: String { return self._s[2477]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2478]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2479]! } + public var Conversation_ContextMenuOpenChannel: String { return self._s[2480]! } + public var Report_AdditionalDetailsPlaceholder: String { return self._s[2481]! } + public var Activity_UploadingVideo: String { return self._s[2482]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2484]! } + public var Widget_LongTapToEdit: String { return self._s[2485]! } + public var VoiceChat_InviteLink_Listener: String { return self._s[2487]! } + public var SocksProxySetup_Credentials: String { return self._s[2488]! } + public var Preview_SaveGif: String { return self._s[2489]! } + public var Cache_Photos: String { return self._s[2490]! } + public var Channel_AdminLogFilter_EventsCalls: String { return self._s[2491]! } + public var Conversation_ContextMenuCancelEditing: String { return self._s[2492]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[2493]! } public func VoiceChat_RemoveAndBanPeerConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2493]!, self._r[2493]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2494]!, self._r[2494]!, [_1, _2]) } - public var Passport_Language_lt: String { return self._s[2494]! } - public var Passport_DeleteDocument: String { return self._s[2496]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2497]! } + public var Passport_Language_lt: String { return self._s[2495]! } + public var Passport_DeleteDocument: String { return self._s[2497]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2498]! } public func Location_ProximityNotification_NotifyLong(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2498]!, self._r[2498]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2499]!, self._r[2499]!, [_1, _2]) } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[2499]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[2500]! } public func PeopleNearby_VisibleUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2500]!, self._r[2500]!, [_0]) + return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_0]) } - public var AccessDenied_VideoCallCamera: String { return self._s[2501]! } + public var AccessDenied_VideoCallCamera: String { return self._s[2502]! } public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2502]!, self._r[2502]!, [_0]) + return formatWithArgumentRanges(self._s[2503]!, self._r[2503]!, [_0]) } - public var PhotoEditor_SharpenTool: String { return self._s[2503]! } + public var PhotoEditor_SharpenTool: String { return self._s[2504]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2504]!, self._r[2504]!, [_1]) + return formatWithArgumentRanges(self._s[2505]!, self._r[2505]!, [_1]) } - public var DialogList_Unpin: String { return self._s[2505]! } - public var Stickers_NoStickersFound: String { return self._s[2506]! } - public var UserInfo_AddContact: String { return self._s[2508]! } + public var DialogList_Unpin: String { return self._s[2506]! } + public var Stickers_NoStickersFound: String { return self._s[2507]! } + public var UserInfo_AddContact: String { return self._s[2509]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2510]!, self._r[2510]!, [_0]) - } - public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2511]!, self._r[2511]!, [_0]) } - public var CallFeedback_VideoReasonDistorted: String { return self._s[2512]! } - public var Tour_Text2: String { return self._s[2513]! } + public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2512]!, self._r[2512]!, [_0]) + } + public var CallFeedback_VideoReasonDistorted: String { return self._s[2513]! } + public var Tour_Text2: String { return self._s[2514]! } public func Conversation_TitleCommentsFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2515]!, self._r[2515]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2516]!, self._r[2516]!, [_1, _2]) } - public var InviteLink_DeleteAllRevokedLinksAlert_Text: String { return self._s[2517]! } - public var Paint_Delete: String { return self._s[2518]! } + public var InviteLink_DeleteAllRevokedLinksAlert_Text: String { return self._s[2518]! } + public var Paint_Delete: String { return self._s[2519]! } public func Call_VoiceChatInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2519]!, self._r[2519]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2520]!, self._r[2520]!, [_1, _2]) } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2520]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2521]! } public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2522]!, self._r[2522]!, [_0]) + return formatWithArgumentRanges(self._s[2523]!, self._r[2523]!, [_0]) } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2523]! } - public var Notification_CallOutgoingShort: String { return self._s[2524]! } - public var Checkout_PasswordEntry_Title: String { return self._s[2525]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2526]! } - public var Notification_MessageLifetime1m: String { return self._s[2527]! } - public var BlockedUsers_AddNew: String { return self._s[2529]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[2530]! } - public var Settings_SaveEditedPhotos: String { return self._s[2531]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[2532]! } - public var Channel_AboutItem: String { return self._s[2533]! } - public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2534]! } - public var Privacy_Calls_P2PNever: String { return self._s[2536]! } - public var Passport_Language_uk: String { return self._s[2537]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2538]! } - public var Conversation_Moderate_Report: String { return self._s[2539]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2540]! } - public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2541]! } - public var Permissions_SiriText_v0: String { return self._s[2542]! } - public var Theme_Colors_Background: String { return self._s[2543]! } - public var Notification_CallMissed: String { return self._s[2544]! } - public var Stats_ZoomOut: String { return self._s[2545]! } - public var Profile_AddToExisting: String { return self._s[2546]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2549]! } - public var VoiceChat_RemovePeerRemove: String { return self._s[2550]! } - public var Undo_DeletedChannel: String { return self._s[2551]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2524]! } + public var Notification_CallOutgoingShort: String { return self._s[2525]! } + public var Checkout_PasswordEntry_Title: String { return self._s[2526]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2527]! } + public var Notification_MessageLifetime1m: String { return self._s[2528]! } + public var BlockedUsers_AddNew: String { return self._s[2530]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[2531]! } + public var Settings_SaveEditedPhotos: String { return self._s[2532]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[2533]! } + public var Channel_AboutItem: String { return self._s[2534]! } + public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2535]! } + public var Privacy_Calls_P2PNever: String { return self._s[2537]! } + public var Passport_Language_uk: String { return self._s[2538]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2539]! } + public var Conversation_Moderate_Report: String { return self._s[2540]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2541]! } + public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2542]! } + public var Permissions_SiriText_v0: String { return self._s[2543]! } + public var Theme_Colors_Background: String { return self._s[2544]! } + public var Notification_CallMissed: String { return self._s[2545]! } + public var Stats_ZoomOut: String { return self._s[2546]! } + public var Profile_AddToExisting: String { return self._s[2547]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2550]! } + public var VoiceChat_RemovePeerRemove: String { return self._s[2551]! } + public var Undo_DeletedChannel: String { return self._s[2552]! } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2552]!, self._r[2552]!, [_0]) + return formatWithArgumentRanges(self._s[2553]!, self._r[2553]!, [_0]) } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2553]! } - public var Map_LiveLocationGroupDescription: String { return self._s[2554]! } - public var Passport_InfoFAQ_URL: String { return self._s[2555]! } - public var IntentsSettings_SuggestedChats: String { return self._s[2558]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2554]! } + public var Map_LiveLocationGroupDescription: String { return self._s[2555]! } + public var Passport_InfoFAQ_URL: String { return self._s[2556]! } + public var IntentsSettings_SuggestedChats: String { return self._s[2559]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2559]!, self._r[2559]!, [_1]) + return formatWithArgumentRanges(self._s[2560]!, self._r[2560]!, [_1]) } - public var State_connecting: String { return self._s[2560]! } - public var Passport_Identity_Country: String { return self._s[2561]! } - public var Passport_PasswordDescription: String { return self._s[2562]! } - public var ChatList_PsaLabel_covid: String { return self._s[2563]! } + public var State_connecting: String { return self._s[2561]! } + public var Passport_Identity_Country: String { return self._s[2562]! } + public var Passport_PasswordDescription: String { return self._s[2563]! } + public var ChatList_PsaLabel_covid: String { return self._s[2564]! } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2564]!, self._r[2564]!, [_1]) + return formatWithArgumentRanges(self._s[2565]!, self._r[2565]!, [_1]) } - public var Contacts_AddPeopleNearby: String { return self._s[2565]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2566]! } - public var ClearCache_Description: String { return self._s[2567]! } - public var Localization_LanguageName: String { return self._s[2568]! } + public var Contacts_AddPeopleNearby: String { return self._s[2566]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2567]! } + public var ClearCache_Description: String { return self._s[2568]! } + public var Localization_LanguageName: String { return self._s[2569]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2569]!, self._r[2569]!, [_0]) + return formatWithArgumentRanges(self._s[2570]!, self._r[2570]!, [_0]) } - public var Conversation_AddMembers: String { return self._s[2570]! } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2571]! } - public var UserInfo_CreateNewContact: String { return self._s[2572]! } - public var Channel_Stickers_NotFound: String { return self._s[2574]! } - public var Message_FakeAccount: String { return self._s[2575]! } - public var Watch_Message_Poll: String { return self._s[2576]! } - public var Group_Members_Title: String { return self._s[2577]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[2578]! } + public var Conversation_AddMembers: String { return self._s[2571]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2572]! } + public var UserInfo_CreateNewContact: String { return self._s[2573]! } + public var Channel_Stickers_NotFound: String { return self._s[2575]! } + public var Message_FakeAccount: String { return self._s[2576]! } + public var Watch_Message_Poll: String { return self._s[2577]! } + public var Group_Members_Title: String { return self._s[2578]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[2579]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2579]!, self._r[2579]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2580]!, self._r[2580]!, [_0, _1]) } - public var VoiceChat_CancelConfirmationText: String { return self._s[2580]! } - public var BroadcastGroups_Convert: String { return self._s[2581]! } - public var Login_InfoDeletePhoto: String { return self._s[2582]! } - public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2583]! } - public var InstantPage_FeedbackButton: String { return self._s[2584]! } - public var Appearance_PreviewReplyText: String { return self._s[2585]! } - public var Passport_FieldPhoneHelp: String { return self._s[2586]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2587]! } - public var Media_SendingOptionsTooltip: String { return self._s[2588]! } - public var ScheduledMessages_ScheduledOnline: String { return self._s[2589]! } - public var Notifications_Badge: String { return self._s[2590]! } - public var VoiceOver_Chat_VideoMessage: String { return self._s[2591]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2592]! } + public var VoiceChat_CancelConfirmationText: String { return self._s[2581]! } + public var BroadcastGroups_Convert: String { return self._s[2582]! } + public var Login_InfoDeletePhoto: String { return self._s[2583]! } + public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2584]! } + public var InstantPage_FeedbackButton: String { return self._s[2585]! } + public var Appearance_PreviewReplyText: String { return self._s[2586]! } + public var Passport_FieldPhoneHelp: String { return self._s[2587]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2588]! } + public var Media_SendingOptionsTooltip: String { return self._s[2589]! } + public var ScheduledMessages_ScheduledOnline: String { return self._s[2590]! } + public var Notifications_Badge: String { return self._s[2591]! } + public var VoiceOver_Chat_VideoMessage: String { return self._s[2592]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2593]! } public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2594]!, self._r[2594]!, [_0]) + return formatWithArgumentRanges(self._s[2595]!, self._r[2595]!, [_0]) } - public var Passport_InfoLearnMore: String { return self._s[2595]! } - public var EnterPasscode_EnterTitle: String { return self._s[2596]! } - public var Appearance_EditTheme: String { return self._s[2597]! } - public var EditTheme_Expand_BottomInfo: String { return self._s[2598]! } - public var Stats_FollowersTitle: String { return self._s[2599]! } - public var Passport_Identity_SurnamePlaceholder: String { return self._s[2600]! } - public var Channel_Subscribers_Title: String { return self._s[2601]! } - public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2602]! } - public var ChatImportActivity_ErrorGeneric: String { return self._s[2603]! } - public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2604]! } - public var EditTheme_Create_Preview_IncomingText: String { return self._s[2605]! } - public var Conversation_AddToReadingList: String { return self._s[2606]! } - public var VoiceChat_EditBioPlaceholder: String { return self._s[2607]! } + public var Passport_InfoLearnMore: String { return self._s[2596]! } + public var EnterPasscode_EnterTitle: String { return self._s[2597]! } + public var Appearance_EditTheme: String { return self._s[2598]! } + public var EditTheme_Expand_BottomInfo: String { return self._s[2599]! } + public var Stats_FollowersTitle: String { return self._s[2600]! } + public var Passport_Identity_SurnamePlaceholder: String { return self._s[2601]! } + public var Channel_Subscribers_Title: String { return self._s[2602]! } + public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2603]! } + public var ChatImportActivity_ErrorGeneric: String { return self._s[2604]! } + public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2605]! } + public var EditTheme_Create_Preview_IncomingText: String { return self._s[2606]! } + public var Conversation_AddToReadingList: String { return self._s[2607]! } + public var VoiceChat_EditBioPlaceholder: String { return self._s[2608]! } public func Notifications_ExceptionsChangeSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2608]!, self._r[2608]!, [_0]) + return formatWithArgumentRanges(self._s[2609]!, self._r[2609]!, [_0]) } - public var Group_AdminLog_EmptyText: String { return self._s[2609]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[2610]! } - public var Watch_Location_Current: String { return self._s[2611]! } - public var PrivacyPolicy_Title: String { return self._s[2612]! } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2619]! } - public var Channel_TypeSetup_Title: String { return self._s[2623]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[2624]! } - public var Passport_Language_ja: String { return self._s[2625]! } - public var ReportPeer_ReasonSpam: String { return self._s[2626]! } - public var Widget_GalleryDescription: String { return self._s[2627]! } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[2628]! } - public var VoiceChat_ChangePhoto: String { return self._s[2630]! } - public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2631]! } - public var Channel_AdminLog_ChangeInfo: String { return self._s[2632]! } - public var ChatListFolder_NameNonContacts: String { return self._s[2633]! } + public var Group_AdminLog_EmptyText: String { return self._s[2610]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[2611]! } + public var Watch_Location_Current: String { return self._s[2612]! } + public var PrivacyPolicy_Title: String { return self._s[2613]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2620]! } + public var Channel_TypeSetup_Title: String { return self._s[2624]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[2625]! } + public var Passport_Language_ja: String { return self._s[2626]! } + public var ReportPeer_ReasonSpam: String { return self._s[2627]! } + public var Widget_GalleryDescription: String { return self._s[2628]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[2629]! } + public var VoiceChat_ChangePhoto: String { return self._s[2631]! } + public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2632]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[2633]! } + public var ChatListFolder_NameNonContacts: String { return self._s[2634]! } public func InviteLink_ExpiresIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2634]!, self._r[2634]!, [_0]) + return formatWithArgumentRanges(self._s[2635]!, self._r[2635]!, [_0]) } - public var Call_Audio: String { return self._s[2635]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2636]! } - public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2637]! } - public var Settings_PrivacySettings: String { return self._s[2638]! } - public var InviteLink_UsageLimitReached: String { return self._s[2639]! } - public var Stats_Followers: String { return self._s[2640]! } - public var Notifications_AddExceptionTitle: String { return self._s[2641]! } - public var TwoFactorSetup_Password_Title: String { return self._s[2642]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2643]! } - public var OldChannels_NoticeText: String { return self._s[2644]! } - public var Conversation_SavedMessages: String { return self._s[2645]! } - public var Intents_ErrorLockedText: String { return self._s[2646]! } + public var Call_Audio: String { return self._s[2636]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2637]! } + public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2638]! } + public var Settings_PrivacySettings: String { return self._s[2639]! } + public var InviteLink_UsageLimitReached: String { return self._s[2640]! } + public var Stats_Followers: String { return self._s[2641]! } + public var Notifications_AddExceptionTitle: String { return self._s[2642]! } + public var TwoFactorSetup_Password_Title: String { return self._s[2643]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2644]! } + public var OldChannels_NoticeText: String { return self._s[2645]! } + public var Conversation_SavedMessages: String { return self._s[2646]! } + public var Intents_ErrorLockedText: String { return self._s[2647]! } public func Conversation_PeerNearbyTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2648]!, self._r[2648]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2649]!, self._r[2649]!, [_1, _2]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2649]! } - public var Appearance_ThemeNightBlue: String { return self._s[2650]! } - public var Notification_ChannelInviterSelf: String { return self._s[2651]! } - public var Conversation_ForwardTooltip_SavedMessages_Many: String { return self._s[2652]! } - public var InviteLink_Create_TimeLimitExpiryDateNever: String { return self._s[2654]! } - public var Watch_UserInfo_Service: String { return self._s[2655]! } - public var ChatList_Context_Back: String { return self._s[2656]! } - public var Passport_Email_Title: String { return self._s[2657]! } - public var Stats_GroupTopAdmin_Promote: String { return self._s[2658]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2650]! } + public var Appearance_ThemeNightBlue: String { return self._s[2651]! } + public var Notification_ChannelInviterSelf: String { return self._s[2652]! } + public var Conversation_ForwardTooltip_SavedMessages_Many: String { return self._s[2653]! } + public var InviteLink_Create_TimeLimitExpiryDateNever: String { return self._s[2655]! } + public var Watch_UserInfo_Service: String { return self._s[2656]! } + public var ChatList_Context_Back: String { return self._s[2657]! } + public var Passport_Email_Title: String { return self._s[2658]! } + public var Stats_GroupTopAdmin_Promote: String { return self._s[2659]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2659]!, self._r[2659]!, [_1]) + return formatWithArgumentRanges(self._s[2660]!, self._r[2660]!, [_1]) } - public var Conversation_UnsupportedMedia: String { return self._s[2660]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2661]! } - public var Privacy_TopPeersHelp: String { return self._s[2663]! } - public var Privacy_Forwards_AlwaysLink: String { return self._s[2664]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2665]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2666]! } + public var Conversation_UnsupportedMedia: String { return self._s[2661]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2662]! } + public var Privacy_TopPeersHelp: String { return self._s[2664]! } + public var Privacy_Forwards_AlwaysLink: String { return self._s[2665]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2666]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[2667]! } public func Location_ProximityNotification_AlreadyClose(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2667]!, self._r[2667]!, [_0]) + return formatWithArgumentRanges(self._s[2668]!, self._r[2668]!, [_0]) } - public var Notification_PassportValueProofOfAddress: String { return self._s[2668]! } - public var Map_Map: String { return self._s[2669]! } - public var WallpaperSearch_ColorBlue: String { return self._s[2670]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[2671]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2672]! } - public var ChatList_Search_FilterMusic: String { return self._s[2673]! } - public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2674]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2675]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[2677]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[2669]! } + public var Map_Map: String { return self._s[2670]! } + public var WallpaperSearch_ColorBlue: String { return self._s[2671]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[2672]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2673]! } + public var ChatList_Search_FilterMusic: String { return self._s[2674]! } + public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2675]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2676]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[2678]! } public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2678]!, self._r[2678]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2679]!, self._r[2679]!, [_1, _2]) } public func Notification_ChangedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2679]!, self._r[2679]!, [_0]) + return formatWithArgumentRanges(self._s[2680]!, self._r[2680]!, [_0]) } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2680]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[2681]! } - public var VoiceOver_ChatList_MessageEmpty: String { return self._s[2683]! } - public var GroupInfo_Location: String { return self._s[2684]! } - public var Passport_Language_ka: String { return self._s[2685]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2681]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[2682]! } + public var VoiceOver_ChatList_MessageEmpty: String { return self._s[2684]! } + public var GroupInfo_Location: String { return self._s[2685]! } + public var Passport_Language_ka: String { return self._s[2686]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2686]!, self._r[2686]!, [_0]) + return formatWithArgumentRanges(self._s[2687]!, self._r[2687]!, [_0]) } - public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2687]! } - public var ChatImport_SelectionConfirmationAlertTitle: String { return self._s[2689]! } - public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2691]! } - public var DialogList_SearchSectionRecent: String { return self._s[2692]! } - public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2693]! } - public var Conversation_Timer_Send: String { return self._s[2694]! } + public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2688]! } + public var ChatImport_SelectionConfirmationAlertTitle: String { return self._s[2690]! } + public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2692]! } + public var DialogList_SearchSectionRecent: String { return self._s[2693]! } + public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2694]! } + public var Conversation_Timer_Send: String { return self._s[2695]! } public func VoiceOver_ScrollStatus(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2696]!, self._r[2696]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2697]!, self._r[2697]!, [_1, _2]) } - public var ChatState_Updating: String { return self._s[2697]! } - public var ChannelMembers_WhoCanAddMembers: String { return self._s[2698]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2699]! } - public var TwoStepAuth_RecoveryFailed: String { return self._s[2700]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2701]! } - public var InviteLink_Create_TimeLimitExpiryTime: String { return self._s[2702]! } - public var ChannelInfo_InviteLink_RevokeAlert_Text: String { return self._s[2703]! } - public var ChatList_Search_NoResults: String { return self._s[2704]! } - public var ChatListFolderSettings_AddRecommended: String { return self._s[2706]! } - public var ChangePhoneNumberCode_Called: String { return self._s[2707]! } - public var PeerInfo_GroupAboutItem: String { return self._s[2708]! } - public var VoiceOver_SelfDestructTimerOff: String { return self._s[2710]! } + public var ChatState_Updating: String { return self._s[2698]! } + public var ChannelMembers_WhoCanAddMembers: String { return self._s[2699]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2700]! } + public var TwoStepAuth_RecoveryFailed: String { return self._s[2701]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2702]! } + public var InviteLink_Create_TimeLimitExpiryTime: String { return self._s[2703]! } + public var ChannelInfo_InviteLink_RevokeAlert_Text: String { return self._s[2704]! } + public var ChatList_Search_NoResults: String { return self._s[2705]! } + public var ChatListFolderSettings_AddRecommended: String { return self._s[2707]! } + public var ChangePhoneNumberCode_Called: String { return self._s[2708]! } + public var PeerInfo_GroupAboutItem: String { return self._s[2709]! } + public var VoiceOver_SelfDestructTimerOff: String { return self._s[2711]! } public func Channel_AdminLog_DeletedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2711]!, self._r[2711]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_1, _2]) } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_0]) + return formatWithArgumentRanges(self._s[2713]!, self._r[2713]!, [_0]) } - public var PrivacySettings_AuthSessions: String { return self._s[2713]! } - public var Passport_Address_Postcode: String { return self._s[2714]! } - public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2715]! } + public var PrivacySettings_AuthSessions: String { return self._s[2714]! } + public var Passport_Address_Postcode: String { return self._s[2715]! } + public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2716]! } public func VoiceChat_ForwardTooltip_ManyChats(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2716]!, self._r[2716]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2717]!, self._r[2717]!, [_0, _1]) } - public var Passport_Address_Street2Placeholder: String { return self._s[2717]! } - public var Group_Location_Title: String { return self._s[2718]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2719]! } - public var PeopleNearby_UsersEmpty: String { return self._s[2720]! } - public var Conversation_ContextMenuSpeak: String { return self._s[2722]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2723]! } + public var Passport_Address_Street2Placeholder: String { return self._s[2718]! } + public var Group_Location_Title: String { return self._s[2719]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2720]! } + public var PeopleNearby_UsersEmpty: String { return self._s[2721]! } + public var Conversation_ContextMenuSpeak: String { return self._s[2723]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2724]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_0]) + return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_0]) } - public var Proxy_TooltipUnavailable: String { return self._s[2726]! } - public var Map_Search: String { return self._s[2727]! } - public var VoiceChat_CancelConfirmationTitle: String { return self._s[2728]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2729]! } - public var Conversation_SearchByName_Prefix: String { return self._s[2730]! } + public var Proxy_TooltipUnavailable: String { return self._s[2727]! } + public var Map_Search: String { return self._s[2728]! } + public var VoiceChat_CancelConfirmationTitle: String { return self._s[2729]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2730]! } + public var Conversation_SearchByName_Prefix: String { return self._s[2731]! } public func Channel_AdminLog_MessageToggleSignaturesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2731]!, self._r[2731]!, [_0]) + return formatWithArgumentRanges(self._s[2732]!, self._r[2732]!, [_0]) } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2732]! } - public var ProfilePhoto_MainPhoto: String { return self._s[2733]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2734]! } - public var SharedMedia_EmptyMusicText: String { return self._s[2735]! } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[2736]! } - public var NetworkUsageSettings_BytesReceived: String { return self._s[2737]! } - public var Channel_AdminLog_EmptyText: String { return self._s[2738]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[2739]! } - public var Undo_ChatDeletedForBothSides: String { return self._s[2740]! } - public var Notifications_GroupNotifications: String { return self._s[2741]! } - public var AccessDenied_SaveMedia: String { return self._s[2742]! } - public var InviteLink_Create_Revoke: String { return self._s[2743]! } - public var GroupInfo_LabelOwner: String { return self._s[2744]! } - public var Passport_Language_id: String { return self._s[2746]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2747]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2748]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2733]! } + public var ProfilePhoto_MainPhoto: String { return self._s[2734]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2735]! } + public var SharedMedia_EmptyMusicText: String { return self._s[2736]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[2737]! } + public var NetworkUsageSettings_BytesReceived: String { return self._s[2738]! } + public var Channel_AdminLog_EmptyText: String { return self._s[2739]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[2740]! } + public var Undo_ChatDeletedForBothSides: String { return self._s[2741]! } + public var Notifications_GroupNotifications: String { return self._s[2742]! } + public var AccessDenied_SaveMedia: String { return self._s[2743]! } + public var InviteLink_Create_Revoke: String { return self._s[2744]! } + public var GroupInfo_LabelOwner: String { return self._s[2745]! } + public var Passport_Language_id: String { return self._s[2747]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2748]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2749]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2749]!, self._r[2749]!, [_0]) - } - public func Call_RemoteVideoPaused(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2750]!, self._r[2750]!, [_0]) } - public var TwoFactorSetup_Done_Text: String { return self._s[2751]! } + public func Call_RemoteVideoPaused(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2751]!, self._r[2751]!, [_0]) + } + public var TwoFactorSetup_Done_Text: String { return self._s[2752]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2752]!, self._r[2752]!, [_0]) + return formatWithArgumentRanges(self._s[2753]!, self._r[2753]!, [_0]) } - public var NetworkUsageSettings_BytesSent: String { return self._s[2753]! } - public var Conversation_AudioRateTooltipNormal: String { return self._s[2754]! } - public var VoiceChat_EditDescriptionSuccess: String { return self._s[2755]! } - public var OwnershipTransfer_Transfer: String { return self._s[2756]! } + public var NetworkUsageSettings_BytesSent: String { return self._s[2754]! } + public var Conversation_AudioRateTooltipNormal: String { return self._s[2755]! } + public var VoiceChat_EditDescriptionSuccess: String { return self._s[2756]! } + public var OwnershipTransfer_Transfer: String { return self._s[2757]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_0]) + return formatWithArgumentRanges(self._s[2758]!, self._r[2758]!, [_0]) } - public var Passport_Language_pt: String { return self._s[2758]! } - public var PrivacySettings_WebSessions: String { return self._s[2759]! } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2761]! } - public var TwoFactorSetup_Hint_Title: String { return self._s[2762]! } + public var Passport_Language_pt: String { return self._s[2759]! } + public var PrivacySettings_WebSessions: String { return self._s[2760]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2762]! } + public var TwoFactorSetup_Hint_Title: String { return self._s[2763]! } public func Notification_Joined(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2763]!, self._r[2763]!, [_0]) + return formatWithArgumentRanges(self._s[2764]!, self._r[2764]!, [_0]) } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2764]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2765]! } - public var AutoNightTheme_Scheduled: String { return self._s[2766]! } - public var CreatePoll_ExplanationHeader: String { return self._s[2767]! } - public var Calls_TabTitle: String { return self._s[2768]! } - public var VoiceChat_RecordingInProgress: String { return self._s[2769]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[2770]! } - public var Notification_VideoCallCanceled: String { return self._s[2771]! } - public var Login_CodeSentInternal: String { return self._s[2772]! } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2773]! } - public var Call_RecordingDisabledMessage: String { return self._s[2775]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2765]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2766]! } + public var AutoNightTheme_Scheduled: String { return self._s[2767]! } + public var CreatePoll_ExplanationHeader: String { return self._s[2768]! } + public var Calls_TabTitle: String { return self._s[2769]! } + public var VoiceChat_RecordingInProgress: String { return self._s[2770]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[2771]! } + public var Notification_VideoCallCanceled: String { return self._s[2772]! } + public var Login_CodeSentInternal: String { return self._s[2773]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2774]! } + public var Call_RecordingDisabledMessage: String { return self._s[2776]! } public func VoiceChat_RemovedPeerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2776]!, self._r[2776]!, [_0]) + return formatWithArgumentRanges(self._s[2777]!, self._r[2777]!, [_0]) } - public var Conversation_UsersTooMuchError: String { return self._s[2778]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2779]! } - public var Channel_Info_Stickers: String { return self._s[2780]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[2781]! } + public var Conversation_UsersTooMuchError: String { return self._s[2779]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2780]! } + public var Channel_Info_Stickers: String { return self._s[2781]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[2782]! } public func Conversation_PeerNearbyDistance(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2782]!, self._r[2782]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2783]!, self._r[2783]!, [_1, _2]) } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2783]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2784]! } public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2784]!, self._r[2784]!, [_0]) + return formatWithArgumentRanges(self._s[2785]!, self._r[2785]!, [_0]) } - public var Passport_DiscardMessageTitle: String { return self._s[2785]! } - public var Call_VoiceOver_VideoCallIncoming: String { return self._s[2786]! } - public var Localization_LanguageOther: String { return self._s[2787]! } - public var Conversation_EncryptionCanceled: String { return self._s[2788]! } - public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2789]! } - public var ReportPeer_ReasonFake: String { return self._s[2791]! } + public var Passport_DiscardMessageTitle: String { return self._s[2786]! } + public var Call_VoiceOver_VideoCallIncoming: String { return self._s[2787]! } + public var Localization_LanguageOther: String { return self._s[2788]! } + public var Conversation_EncryptionCanceled: String { return self._s[2789]! } + public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2790]! } + public var ReportPeer_ReasonFake: String { return self._s[2792]! } public func Notification_SecretChatMessageScreenshot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2792]!, self._r[2792]!, [_0]) + return formatWithArgumentRanges(self._s[2793]!, self._r[2793]!, [_0]) } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2794]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2795]! } - public var InviteLink_Create_UsersLimitNumberOfUsers: String { return self._s[2796]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2795]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2796]! } + public var InviteLink_Create_UsersLimitNumberOfUsers: String { return self._s[2797]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2797]!, self._r[2797]!, [_1]) + return formatWithArgumentRanges(self._s[2798]!, self._r[2798]!, [_1]) } - public var Conversation_ScamWarning: String { return self._s[2799]! } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2800]! } - public var LocalGroup_Title: String { return self._s[2801]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2803]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2804]! } - public var VoiceChat_SelectAccount: String { return self._s[2805]! } - public var Login_PhoneFloodError: String { return self._s[2806]! } - public var Conversation_PinMessageAlert_PinAndNotifyMembers: String { return self._s[2807]! } - public var Username_InvalidTaken: String { return self._s[2809]! } - public var SocksProxySetup_AddProxy: String { return self._s[2811]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2812]! } - public var MediaPicker_UngroupDescription: String { return self._s[2813]! } - public var Login_CodeExpired: String { return self._s[2814]! } - public var Localization_ChooseLanguage: String { return self._s[2815]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2816]! } + public var Conversation_ScamWarning: String { return self._s[2800]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2801]! } + public var LocalGroup_Title: String { return self._s[2802]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2804]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2805]! } + public var VoiceChat_SelectAccount: String { return self._s[2806]! } + public var Login_PhoneFloodError: String { return self._s[2807]! } + public var Conversation_PinMessageAlert_PinAndNotifyMembers: String { return self._s[2808]! } + public var Username_InvalidTaken: String { return self._s[2810]! } + public var SocksProxySetup_AddProxy: String { return self._s[2812]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2813]! } + public var MediaPicker_UngroupDescription: String { return self._s[2814]! } + public var Login_CodeExpired: String { return self._s[2815]! } + public var Localization_ChooseLanguage: String { return self._s[2816]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2817]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_0]) - } - public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2818]!, self._r[2818]!, [_0]) } - public var ReportPeer_ReasonOther_Title: String { return self._s[2820]! } - public var Conversation_ScheduleMessage_Title: String { return self._s[2821]! } + public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2819]!, self._r[2819]!, [_0]) + } + public var ReportPeer_ReasonOther_Title: String { return self._s[2821]! } + public var Conversation_ScheduleMessage_Title: String { return self._s[2822]! } public func VoiceChat_UserInvited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2822]!, self._r[2822]!, [_0]) + return formatWithArgumentRanges(self._s[2823]!, self._r[2823]!, [_0]) } - public var PeerInfo_ButtonDiscuss: String { return self._s[2823]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2824]! } - public var Call_StatusNoAnswer: String { return self._s[2825]! } - public var ScheduledMessages_DeleteMany: String { return self._s[2827]! } - public var Channel_DiscussionGroupInfo: String { return self._s[2828]! } - public var Conversation_UnarchiveDone: String { return self._s[2829]! } - public var LogoutOptions_AddAccountText: String { return self._s[2830]! } - public var Message_PinnedContactMessage: String { return self._s[2831]! } + public var PeerInfo_ButtonDiscuss: String { return self._s[2824]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2825]! } + public var Call_StatusNoAnswer: String { return self._s[2826]! } + public var ScheduledMessages_DeleteMany: String { return self._s[2828]! } + public var Channel_DiscussionGroupInfo: String { return self._s[2829]! } + public var Conversation_UnarchiveDone: String { return self._s[2830]! } + public var LogoutOptions_AddAccountText: String { return self._s[2831]! } + public var Message_PinnedContactMessage: String { return self._s[2832]! } public func ChatList_DeleteAndLeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2832]!, self._r[2832]!, [_0]) + return formatWithArgumentRanges(self._s[2833]!, self._r[2833]!, [_0]) } - public var VoiceChat_EditBioTitle: String { return self._s[2834]! } + public var VoiceChat_EditBioTitle: String { return self._s[2835]! } public func FileSize_GB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2835]!, self._r[2835]!, [_0]) + return formatWithArgumentRanges(self._s[2836]!, self._r[2836]!, [_0]) } - public var Stats_GroupLanguagesTitle: String { return self._s[2836]! } - public var Passport_FieldAddressHelp: String { return self._s[2837]! } + public var Stats_GroupLanguagesTitle: String { return self._s[2837]! } + public var Passport_FieldAddressHelp: String { return self._s[2838]! } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2838]!, self._r[2838]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2839]!, self._r[2839]!, [_1, _2]) } - public var ChatSettings_OpenLinksIn: String { return self._s[2840]! } - public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2841]! } - public var Message_Photo: String { return self._s[2842]! } - public var Media_LimitedAccessManage: String { return self._s[2844]! } - public var MediaPicker_AddCaption: String { return self._s[2845]! } - public var LogoutOptions_Title: String { return self._s[2846]! } + public var ChatSettings_OpenLinksIn: String { return self._s[2841]! } + public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2842]! } + public var Message_Photo: String { return self._s[2843]! } + public var Media_LimitedAccessManage: String { return self._s[2845]! } + public var MediaPicker_AddCaption: String { return self._s[2846]! } + public var LogoutOptions_Title: String { return self._s[2847]! } public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2847]!, self._r[2847]!, [_1]) + return formatWithArgumentRanges(self._s[2848]!, self._r[2848]!, [_1]) } - public var Conversation_StatusKickedFromGroup: String { return self._s[2848]! } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2849]! } - public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2850]! } - public var Channel_AdminLogFilter_Title: String { return self._s[2851]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2852]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2853]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2854]! } - public var ChannelIntro_Title: String { return self._s[2855]! } - public var Stats_Message_Views: String { return self._s[2856]! } - public var Stickers_Install: String { return self._s[2857]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[2849]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2850]! } + public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2851]! } + public var Channel_AdminLogFilter_Title: String { return self._s[2852]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2853]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2854]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2855]! } + public var ChannelIntro_Title: String { return self._s[2856]! } + public var Stats_Message_Views: String { return self._s[2857]! } + public var Stickers_Install: String { return self._s[2858]! } public func VoiceOver_Chat_FileFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2858]!, self._r[2858]!, [_0]) + return formatWithArgumentRanges(self._s[2859]!, self._r[2859]!, [_0]) } - public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2859]! } - public var Conversation_SwipeToReplyHintTitle: String { return self._s[2861]! } - public var Settings_Username: String { return self._s[2864]! } - public var FastTwoStepSetup_Title: String { return self._s[2865]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2866]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2867]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2869]! } - public var CallFeedback_ReasonEcho: String { return self._s[2870]! } + public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2860]! } + public var Conversation_SwipeToReplyHintTitle: String { return self._s[2862]! } + public var Settings_Username: String { return self._s[2865]! } + public var FastTwoStepSetup_Title: String { return self._s[2866]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2867]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2868]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2870]! } + public var CallFeedback_ReasonEcho: String { return self._s[2871]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2871]!, self._r[2871]!, [_0]) + return formatWithArgumentRanges(self._s[2872]!, self._r[2872]!, [_0]) } - public var Conversation_OpenBotLinkTitle: String { return self._s[2872]! } - public var SocksProxySetup_Title: String { return self._s[2873]! } - public var CallFeedback_Success: String { return self._s[2874]! } - public var WallpaperPreview_SwipeTopText: String { return self._s[2876]! } - public var InstantPage_AutoNightTheme: String { return self._s[2878]! } - public var Watch_Conversation_Reply: String { return self._s[2879]! } - public var VoiceChat_Share: String { return self._s[2881]! } - public var VoiceChat_AddPhoto: String { return self._s[2882]! } - public var Chat_PanelUnpinAllMessages: String { return self._s[2883]! } - public var WallpaperPreview_Pattern: String { return self._s[2884]! } - public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2885]! } + public var Conversation_OpenBotLinkTitle: String { return self._s[2873]! } + public var SocksProxySetup_Title: String { return self._s[2874]! } + public var CallFeedback_Success: String { return self._s[2875]! } + public var WallpaperPreview_SwipeTopText: String { return self._s[2877]! } + public var InstantPage_AutoNightTheme: String { return self._s[2879]! } + public var Watch_Conversation_Reply: String { return self._s[2880]! } + public var VoiceChat_Share: String { return self._s[2882]! } + public var VoiceChat_AddPhoto: String { return self._s[2883]! } + public var Chat_PanelUnpinAllMessages: String { return self._s[2884]! } + public var WallpaperPreview_Pattern: String { return self._s[2885]! } + public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2886]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2886]!, self._r[2886]!, [_0]) + return formatWithArgumentRanges(self._s[2887]!, self._r[2887]!, [_0]) } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2887]! } - public var VoiceOver_Chat_GroupInfo: String { return self._s[2888]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[2890]! } - public var Update_Title: String { return self._s[2891]! } - public var Conversation_ShareMyPhoneNumber: String { return self._s[2892]! } - public var WallpaperPreview_CropTopText: String { return self._s[2895]! } - public var Channel_EditMessageErrorGeneric: String { return self._s[2896]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2897]! } - public var ChatListFolder_DiscardCancel: String { return self._s[2898]! } - public var Message_PinnedPhotoMessage: String { return self._s[2899]! } - public var Appearance_ThemeDayClassic: String { return self._s[2900]! } - public var VoiceChat_ChangeName: String { return self._s[2901]! } - public var SocksProxySetup_ProxySocks5: String { return self._s[2903]! } - public var VoiceChat_DisplayAsInfo: String { return self._s[2905]! } - public var AccessDenied_Wallpapers: String { return self._s[2910]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2888]! } + public var VoiceOver_Chat_GroupInfo: String { return self._s[2889]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[2891]! } + public var Update_Title: String { return self._s[2892]! } + public var Conversation_ShareMyPhoneNumber: String { return self._s[2893]! } + public var WallpaperPreview_CropTopText: String { return self._s[2896]! } + public var Channel_EditMessageErrorGeneric: String { return self._s[2897]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2898]! } + public var ChatListFolder_DiscardCancel: String { return self._s[2899]! } + public var Message_PinnedPhotoMessage: String { return self._s[2900]! } + public var Appearance_ThemeDayClassic: String { return self._s[2901]! } + public var VoiceChat_ChangeName: String { return self._s[2902]! } + public var SocksProxySetup_ProxySocks5: String { return self._s[2904]! } + public var VoiceChat_DisplayAsInfo: String { return self._s[2906]! } + public var AccessDenied_Wallpapers: String { return self._s[2911]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2911]!, self._r[2911]!, [_0]) + return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_0]) } - public var Weekday_Sunday: String { return self._s[2912]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2914]! } - public var PeopleNearby_MakeVisibleDescription: String { return self._s[2915]! } - public var AccessDenied_LocationDisabled: String { return self._s[2916]! } - public var Tour_Text3: String { return self._s[2917]! } - public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2918]! } + public var Weekday_Sunday: String { return self._s[2913]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2915]! } + public var PeopleNearby_MakeVisibleDescription: String { return self._s[2916]! } + public var AccessDenied_LocationDisabled: String { return self._s[2917]! } + public var Tour_Text3: String { return self._s[2918]! } + public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2919]! } public func Time_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2919]!, self._r[2919]!, [_0]) + return formatWithArgumentRanges(self._s[2920]!, self._r[2920]!, [_0]) } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2920]! } - public var Conversation_ClearCache: String { return self._s[2921]! } - public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2922]! } - public var ChatList_Tabs_AllChats: String { return self._s[2923]! } - public var DialogList_RecentTitlePeople: String { return self._s[2924]! } - public var Stickers_AddToFavorites: String { return self._s[2925]! } - public var ChatList_Context_RemoveFromFolder: String { return self._s[2926]! } - public var VoiceChat_CancelSpeakRequest: String { return self._s[2927]! } - public var Settings_RemoveVideo: String { return self._s[2928]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2929]! } - public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2930]! } - public var VoiceOver_Chat_YourFile: String { return self._s[2931]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2933]! } - public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2934]! } - public var VoiceChat_TapToAddBio: String { return self._s[2935]! } - public var Channel_AdminLog_AddMembers: String { return self._s[2936]! } - public var Map_SendThisLocation: String { return self._s[2938]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[2940]! } - public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2941]! } - public var CloudStorage_Title: String { return self._s[2942]! } - public var TwoFactorSetup_Password_Action: String { return self._s[2943]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[2944]! } - public var Passport_Address_EditTemporaryRegistration: String { return self._s[2946]! } - public var Undo_LeftGroup: String { return self._s[2947]! } - public var Conversation_StopLiveLocation: String { return self._s[2948]! } - public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2949]! } - public var Message_PinnedInvoice: String { return self._s[2950]! } - public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2951]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2921]! } + public var Conversation_ClearCache: String { return self._s[2922]! } + public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2923]! } + public var ChatList_Tabs_AllChats: String { return self._s[2924]! } + public var DialogList_RecentTitlePeople: String { return self._s[2925]! } + public var Stickers_AddToFavorites: String { return self._s[2926]! } + public var ChatList_Context_RemoveFromFolder: String { return self._s[2927]! } + public var VoiceChat_CancelSpeakRequest: String { return self._s[2928]! } + public var Settings_RemoveVideo: String { return self._s[2929]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2930]! } + public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2931]! } + public var VoiceOver_Chat_YourFile: String { return self._s[2932]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2934]! } + public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2935]! } + public var VoiceChat_TapToAddBio: String { return self._s[2936]! } + public var Channel_AdminLog_AddMembers: String { return self._s[2937]! } + public var Map_SendThisLocation: String { return self._s[2939]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[2941]! } + public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2942]! } + public var CloudStorage_Title: String { return self._s[2943]! } + public var TwoFactorSetup_Password_Action: String { return self._s[2944]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2945]! } + public var Passport_Address_EditTemporaryRegistration: String { return self._s[2947]! } + public var Undo_LeftGroup: String { return self._s[2948]! } + public var Conversation_StopLiveLocation: String { return self._s[2949]! } + public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2950]! } + public var Message_PinnedInvoice: String { return self._s[2951]! } + public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2952]! } public func PUSH_CHAT_MESSAGE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2953]!, self._r[2953]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2954]!, self._r[2954]!, [_1, _2]) } public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2954]!, self._r[2954]!, [_0]) + return formatWithArgumentRanges(self._s[2955]!, self._r[2955]!, [_0]) } - public var Weekday_Tuesday: String { return self._s[2955]! } - public var ChangePhoneNumberCode_Code: String { return self._s[2956]! } - public var VoiceOver_Chat_YourMessage: String { return self._s[2957]! } - public var Calls_CallTabDescription: String { return self._s[2958]! } - public var ChatImport_SelectionErrorNotAdmin: String { return self._s[2959]! } - public var SocksProxySetup_UseProxy: String { return self._s[2961]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2962]! } - public var PasscodeSettings_AlphanumericCode: String { return self._s[2963]! } - public var VoiceOver_Chat_YourVideo: String { return self._s[2964]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2966]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2967]! } - public var Exceptions_AddToExceptions: String { return self._s[2968]! } - public var UserInfo_Title: String { return self._s[2969]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[2971]! } - public var VoiceChat_EditDescription: String { return self._s[2973]! } - public var ChatList_Unmute: String { return self._s[2974]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2975]! } + public var Weekday_Tuesday: String { return self._s[2956]! } + public var ChangePhoneNumberCode_Code: String { return self._s[2957]! } + public var VoiceOver_Chat_YourMessage: String { return self._s[2958]! } + public var Calls_CallTabDescription: String { return self._s[2959]! } + public var ChatImport_SelectionErrorNotAdmin: String { return self._s[2960]! } + public var SocksProxySetup_UseProxy: String { return self._s[2962]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2963]! } + public var PasscodeSettings_AlphanumericCode: String { return self._s[2964]! } + public var VoiceOver_Chat_YourVideo: String { return self._s[2965]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2967]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2968]! } + public var Exceptions_AddToExceptions: String { return self._s[2969]! } + public var UserInfo_Title: String { return self._s[2970]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[2972]! } + public var VoiceChat_EditDescription: String { return self._s[2974]! } + public var ChatList_Unmute: String { return self._s[2975]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2976]! } public func Channel_AdminLog_MessageChangedAutoremoveTimeoutSet(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2976]!, self._r[2976]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2977]!, self._r[2977]!, [_1, _2]) } - public var Stats_GroupTopPostersTitle: String { return self._s[2977]! } - public var Username_CheckingUsername: String { return self._s[2979]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2980]! } - public var PeerSelection_ImportIntoNewGroup: String { return self._s[2984]! } - public var Location_ProximityAlertSetTitle: String { return self._s[2985]! } - public var AuthSessions_AddedDeviceTerminate: String { return self._s[2986]! } - public var Conversation_JoinVoiceChatAsSpeaker: String { return self._s[2987]! } - public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2988]! } - public var Settings_ChangePhoneNumber: String { return self._s[2989]! } - public var PeerInfo_PaneLinks: String { return self._s[2990]! } - public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2993]! } - public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2995]! } + public var Stats_GroupTopPostersTitle: String { return self._s[2978]! } + public var Username_CheckingUsername: String { return self._s[2980]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2981]! } + public var PeerSelection_ImportIntoNewGroup: String { return self._s[2985]! } + public var Location_ProximityAlertSetTitle: String { return self._s[2986]! } + public var AuthSessions_AddedDeviceTerminate: String { return self._s[2987]! } + public var Conversation_JoinVoiceChatAsSpeaker: String { return self._s[2988]! } + public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2989]! } + public var Settings_ChangePhoneNumber: String { return self._s[2990]! } + public var PeerInfo_PaneLinks: String { return self._s[2991]! } + public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2994]! } + public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2996]! } public func PUSH_CHAT_VOICECHAT_INVITE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2996]!, self._r[2996]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2997]!, self._r[2997]!, [_1, _2]) } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2997]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[2998]! } - public var VoiceChat_CancelConfirmationEnd: String { return self._s[2999]! } - public var BroadcastGroups_ConfirmationAlert_Title: String { return self._s[3000]! } - public var Stats_FollowersBySourceTitle: String { return self._s[3002]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2998]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[2999]! } + public var VoiceChat_CancelConfirmationEnd: String { return self._s[3000]! } + public var BroadcastGroups_ConfirmationAlert_Title: String { return self._s[3001]! } + public var Stats_FollowersBySourceTitle: String { return self._s[3003]! } public func Conversation_ScheduleMessage_SendOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3003]!, self._r[3003]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3004]!, self._r[3004]!, [_0, _1]) } - public var Compose_NewEncryptedChatTitle: String { return self._s[3004]! } - public var Channel_CommentsGroup_Header: String { return self._s[3006]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3005]! } + public var Channel_CommentsGroup_Header: String { return self._s[3007]! } public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3010]!, self._r[3010]!, [_0]) + return formatWithArgumentRanges(self._s[3011]!, self._r[3011]!, [_0]) } public func PUSH_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3011]!, self._r[3011]!, [_1]) + return formatWithArgumentRanges(self._s[3012]!, self._r[3012]!, [_1]) } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3013]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3014]! } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_0]) + return formatWithArgumentRanges(self._s[3015]!, self._r[3015]!, [_0]) } - public var Conversation_ReportMessages: String { return self._s[3015]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[3016]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3017]! } - public var PrivacySettings_LastSeen: String { return self._s[3019]! } - public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[3020]! } - public var Theme_Colors_Proceed: String { return self._s[3021]! } - public var UserInfo_ScamBotWarning: String { return self._s[3022]! } - public var LogoutOptions_LogOut: String { return self._s[3024]! } - public var Conversation_SendMessage: String { return self._s[3025]! } - public var Conversation_CancelForwardCancelForward: String { return self._s[3026]! } - public var VoiceChat_Scheduled: String { return self._s[3028]! } - public var Passport_Address_Region: String { return self._s[3029]! } - public var MediaPicker_CameraRoll: String { return self._s[3031]! } + public var Conversation_ReportMessages: String { return self._s[3016]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[3017]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3018]! } + public var PrivacySettings_LastSeen: String { return self._s[3020]! } + public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[3021]! } + public var Theme_Colors_Proceed: String { return self._s[3022]! } + public var UserInfo_ScamBotWarning: String { return self._s[3023]! } + public var LogoutOptions_LogOut: String { return self._s[3025]! } + public var Conversation_SendMessage: String { return self._s[3026]! } + public var Conversation_CancelForwardCancelForward: String { return self._s[3027]! } + public var VoiceChat_Scheduled: String { return self._s[3029]! } + public var Passport_Address_Region: String { return self._s[3030]! } + public var MediaPicker_CameraRoll: String { return self._s[3032]! } public func VoiceOver_Chat_ForwardedFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3033]!, self._r[3033]!, [_0]) + return formatWithArgumentRanges(self._s[3034]!, self._r[3034]!, [_0]) } - public var Call_ReportSend: String { return self._s[3035]! } - public var VoiceOver_ChatList_Message: String { return self._s[3036]! } - public var Month_ShortJune: String { return self._s[3037]! } - public var AutoDownloadSettings_GroupChats: String { return self._s[3038]! } + public var Call_ReportSend: String { return self._s[3036]! } + public var VoiceOver_ChatList_Message: String { return self._s[3037]! } + public var Month_ShortJune: String { return self._s[3038]! } + public var AutoDownloadSettings_GroupChats: String { return self._s[3039]! } public func Channel_AdminLog_CaptionEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3041]!, self._r[3041]!, [_0]) + return formatWithArgumentRanges(self._s[3042]!, self._r[3042]!, [_0]) } - public var TwoStepAuth_DisableSuccess: String { return self._s[3042]! } - public var Cache_KeepMedia: String { return self._s[3043]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[3043]! } + public var Cache_KeepMedia: String { return self._s[3044]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3044]!, self._r[3044]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3045]!, self._r[3045]!, [_1, _2, _3]) } - public var Appearance_LargeEmoji: String { return self._s[3045]! } + public var Appearance_LargeEmoji: String { return self._s[3046]! } public func Notification_NewAuthDetected(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3046]!, self._r[3046]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[3047]!, self._r[3047]!, [_1, _2, _3, _4, _5, _6]) } - public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[3047]! } - public var Privacy_PaymentsClear_PaymentInfoCleared: String { return self._s[3048]! } - public var Call_CameraConfirmationText: String { return self._s[3049]! } + public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[3048]! } + public var Privacy_PaymentsClear_PaymentInfoCleared: String { return self._s[3049]! } + public var Call_CameraConfirmationText: String { return self._s[3050]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3051]!, self._r[3051]!, [_0]) + return formatWithArgumentRanges(self._s[3052]!, self._r[3052]!, [_0]) } - public var DialogList_SearchSectionChats: String { return self._s[3052]! } - public var VoiceOver_MessageContextReport: String { return self._s[3054]! } - public var VoiceChat_RemovePeer: String { return self._s[3055]! } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3056]! } - public var InviteLink_ContextCopy: String { return self._s[3057]! } - public var NotificationsSound_Tritone: String { return self._s[3059]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[3062]! } - public var Stats_GroupTopAdmin_Actions: String { return self._s[3063]! } - public var PeerInfo_AddToContacts: String { return self._s[3064]! } - public var VoiceChat_OpenChat: String { return self._s[3065]! } - public var AccessDenied_Title: String { return self._s[3066]! } - public var InviteLink_QRCode_InfoChannel: String { return self._s[3067]! } - public var Tour_Title1: String { return self._s[3068]! } - public var VoiceOver_AttachMedia: String { return self._s[3069]! } + public var DialogList_SearchSectionChats: String { return self._s[3053]! } + public var VoiceOver_MessageContextReport: String { return self._s[3055]! } + public var VoiceChat_RemovePeer: String { return self._s[3056]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3057]! } + public var InviteLink_ContextCopy: String { return self._s[3058]! } + public var NotificationsSound_Tritone: String { return self._s[3060]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[3063]! } + public var Stats_GroupTopAdmin_Actions: String { return self._s[3064]! } + public var PeerInfo_AddToContacts: String { return self._s[3065]! } + public var VoiceChat_OpenChat: String { return self._s[3066]! } + public var AccessDenied_Title: String { return self._s[3067]! } + public var InviteLink_QRCode_InfoChannel: String { return self._s[3068]! } + public var Tour_Title1: String { return self._s[3069]! } + public var VoiceOver_AttachMedia: String { return self._s[3070]! } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3071]!, self._r[3071]!, [_0]) + return formatWithArgumentRanges(self._s[3072]!, self._r[3072]!, [_0]) } - public var Chat_Gifs_SavedSectionHeader: String { return self._s[3072]! } - public var Privacy_DeleteDrafts_DraftsDeleted: String { return self._s[3073]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[3074]! } + public var Chat_Gifs_SavedSectionHeader: String { return self._s[3073]! } + public var Privacy_DeleteDrafts_DraftsDeleted: String { return self._s[3074]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[3075]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3075]!, self._r[3075]!, [_0]) + return formatWithArgumentRanges(self._s[3076]!, self._r[3076]!, [_0]) } - public var Channel_AdminLog_MessagePreviousLink: String { return self._s[3076]! } - public var OldChannels_Title: String { return self._s[3077]! } - public var LoginPassword_FloodError: String { return self._s[3078]! } - public var ChatImportActivity_InProgress: String { return self._s[3080]! } - public var Checkout_ErrorPaymentFailed: String { return self._s[3081]! } + public var Channel_AdminLog_MessagePreviousLink: String { return self._s[3077]! } + public var OldChannels_Title: String { return self._s[3078]! } + public var LoginPassword_FloodError: String { return self._s[3079]! } + public var ChatImportActivity_InProgress: String { return self._s[3081]! } + public var Checkout_ErrorPaymentFailed: String { return self._s[3082]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3082]!, self._r[3082]!, [_0]) + return formatWithArgumentRanges(self._s[3083]!, self._r[3083]!, [_0]) } - public var VoiceOver_Media_PlaybackPlay: String { return self._s[3085]! } - public var Passport_CorrectErrors: String { return self._s[3087]! } + public var VoiceOver_Media_PlaybackPlay: String { return self._s[3086]! } + public var Passport_CorrectErrors: String { return self._s[3088]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3088]!, self._r[3088]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3089]!, self._r[3089]!, [_1, _2]) } - public var ChatListFolderSettings_Title: String { return self._s[3089]! } + public var ChatListFolderSettings_Title: String { return self._s[3090]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3090]!, self._r[3090]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3091]!, self._r[3091]!, [_1, _2]) } - public var PhotoEditor_HighlightsTool: String { return self._s[3091]! } - public var Contacts_NotRegisteredSection: String { return self._s[3094]! } + public var PhotoEditor_HighlightsTool: String { return self._s[3092]! } + public var Contacts_NotRegisteredSection: String { return self._s[3095]! } public func Call_VoiceChatInProgressCallMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3095]!, self._r[3095]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3096]!, self._r[3096]!, [_1, _2]) } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3096]!, self._r[3096]!, [_1]) + return formatWithArgumentRanges(self._s[3097]!, self._r[3097]!, [_1]) } - public var InviteLink_Create_UsersLimitInfo: String { return self._s[3097]! } - public var User_DeletedAccount: String { return self._s[3098]! } - public var Conversation_ViewContactDetails: String { return self._s[3099]! } - public var Conversation_Dice_u1F3B3: String { return self._s[3100]! } - public var WebSearch_GIFs: String { return self._s[3101]! } - public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[3102]! } - public var Appearance_PreviewOutgoingText: String { return self._s[3103]! } - public var Calls_CallTabTitle: String { return self._s[3104]! } - public var Call_VoiceChatInProgressTitle: String { return self._s[3105]! } - public var Checkout_OptionalTipItem: String { return self._s[3106]! } + public var InviteLink_Create_UsersLimitInfo: String { return self._s[3098]! } + public var User_DeletedAccount: String { return self._s[3099]! } + public var Conversation_ViewContactDetails: String { return self._s[3100]! } + public var Conversation_Dice_u1F3B3: String { return self._s[3101]! } + public var WebSearch_GIFs: String { return self._s[3102]! } + public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[3103]! } + public var Appearance_PreviewOutgoingText: String { return self._s[3104]! } + public var Calls_CallTabTitle: String { return self._s[3105]! } + public var Call_VoiceChatInProgressTitle: String { return self._s[3106]! } + public var Checkout_OptionalTipItem: String { return self._s[3107]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3107]!, self._r[3107]!, [_0]) + return formatWithArgumentRanges(self._s[3108]!, self._r[3108]!, [_0]) } - public var Channel_Status: String { return self._s[3108]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[3110]! } - public var VoiceOver_Chat_OptionSelected: String { return self._s[3111]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3112]! } + public var Channel_Status: String { return self._s[3109]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[3111]! } + public var VoiceOver_Chat_OptionSelected: String { return self._s[3112]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3113]! } public func ClearCache_Success(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3113]!, self._r[3113]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3114]!, self._r[3114]!, [_0, _1]) } - public var Passport_Identity_ExpiryDateNone: String { return self._s[3115]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[3117]! } - public var Month_ShortDecember: String { return self._s[3118]! } - public var Username_Help: String { return self._s[3119]! } - public var Login_InfoAvatarAdd: String { return self._s[3120]! } - public var Month_ShortMay: String { return self._s[3121]! } - public var DialogList_UnknownPinLimitError: String { return self._s[3122]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[3123]! } - public var TwoStepAuth_EnabledSuccess: String { return self._s[3124]! } - public var VoiceChat_AskedToSpeak: String { return self._s[3125]! } - public var Weekday_ShortSunday: String { return self._s[3126]! } - public var Channel_Username_InvalidTooShort: String { return self._s[3127]! } - public var AuthSessions_TerminateSession: String { return self._s[3128]! } - public var Passport_Identity_FilesTitle: String { return self._s[3129]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[3116]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[3118]! } + public var Month_ShortDecember: String { return self._s[3119]! } + public var Username_Help: String { return self._s[3120]! } + public var Login_InfoAvatarAdd: String { return self._s[3121]! } + public var Month_ShortMay: String { return self._s[3122]! } + public var DialogList_UnknownPinLimitError: String { return self._s[3123]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[3124]! } + public var TwoStepAuth_EnabledSuccess: String { return self._s[3125]! } + public var VoiceChat_AskedToSpeak: String { return self._s[3126]! } + public var Weekday_ShortSunday: String { return self._s[3127]! } + public var Channel_Username_InvalidTooShort: String { return self._s[3128]! } + public var AuthSessions_TerminateSession: String { return self._s[3129]! } + public var Passport_Identity_FilesTitle: String { return self._s[3130]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3130]!, self._r[3130]!, [_0]) + return formatWithArgumentRanges(self._s[3131]!, self._r[3131]!, [_0]) } - public var PeopleNearby_MakeVisible: String { return self._s[3132]! } + public var PeopleNearby_MakeVisible: String { return self._s[3133]! } public func Conversation_RestrictedMediaTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3133]!, self._r[3133]!, [_0]) + return formatWithArgumentRanges(self._s[3134]!, self._r[3134]!, [_0]) } - public var Widget_UpdatedAt: String { return self._s[3134]! } + public var Widget_UpdatedAt: String { return self._s[3135]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3135]!, self._r[3135]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_1, _2]) } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_0]) + return formatWithArgumentRanges(self._s[3137]!, self._r[3137]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3137]! } - public var VoiceChat_VideoPreviewShareScreen: String { return self._s[3138]! } - public var Conversation_ContextMenuForward: String { return self._s[3140]! } - public var Channel_AdminLog_CanManageCalls: String { return self._s[3141]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3138]! } + public var VoiceChat_VideoPreviewShareScreen: String { return self._s[3139]! } + public var Conversation_ContextMenuForward: String { return self._s[3141]! } + public var Channel_AdminLog_CanManageCalls: String { return self._s[3142]! } public func PUSH_CHAT_MESSAGE_QUIZ(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3143]!, self._r[3143]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3144]!, self._r[3144]!, [_1, _2, _3]) } - public var Notification_GroupInviterSelf: String { return self._s[3145]! } - public var Privacy_Forwards_NeverLink: String { return self._s[3146]! } - public var AuthSessions_CurrentSession: String { return self._s[3147]! } - public var Passport_Address_EditPassportRegistration: String { return self._s[3148]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[3149]! } - public var ChatSearch_ResultsTooltip: String { return self._s[3151]! } - public var CheckoutInfo_Pay: String { return self._s[3152]! } + public var Notification_GroupInviterSelf: String { return self._s[3146]! } + public var Privacy_Forwards_NeverLink: String { return self._s[3147]! } + public var AuthSessions_CurrentSession: String { return self._s[3148]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[3149]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[3150]! } + public var ChatSearch_ResultsTooltip: String { return self._s[3152]! } + public var CheckoutInfo_Pay: String { return self._s[3153]! } public func Conversation_PinMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3154]!, self._r[3154]!, [_0]) + return formatWithArgumentRanges(self._s[3155]!, self._r[3155]!, [_0]) } - public var GroupInfo_AddParticipant: String { return self._s[3155]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[3156]! } + public var GroupInfo_AddParticipant: String { return self._s[3156]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[3157]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3157]!, self._r[3157]!, [_0]) + return formatWithArgumentRanges(self._s[3158]!, self._r[3158]!, [_0]) } - public var Localization_LanguageCustom: String { return self._s[3158]! } - public var SettingsSearch_Synonyms_Passport: String { return self._s[3159]! } - public var Settings_UsernameEmpty: String { return self._s[3160]! } - public var Settings_FAQ_URL: String { return self._s[3161]! } - public var ChatList_UndoArchiveText1: String { return self._s[3162]! } - public var Common_Select: String { return self._s[3164]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[3165]! } - public var Notification_PassportValueAddress: String { return self._s[3166]! } - public var Conversation_MessageDialogDelete: String { return self._s[3167]! } - public var Map_OpenInYandexNavigator: String { return self._s[3169]! } - public var DialogList_SearchSectionDialogs: String { return self._s[3170]! } - public var AccessDenied_Contacts: String { return self._s[3171]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[3173]! } - public var Passport_ScanPassportHelp: String { return self._s[3174]! } - public var Chat_PinnedListPreview_HidePinnedMessages: String { return self._s[3175]! } - public var ChatListFolder_NameChannels: String { return self._s[3176]! } - public var Appearance_ThemePreview_Chat_5_Text: String { return self._s[3177]! } + public var Localization_LanguageCustom: String { return self._s[3159]! } + public var SettingsSearch_Synonyms_Passport: String { return self._s[3160]! } + public var Settings_UsernameEmpty: String { return self._s[3161]! } + public var Settings_FAQ_URL: String { return self._s[3162]! } + public var ChatList_UndoArchiveText1: String { return self._s[3163]! } + public var Common_Select: String { return self._s[3165]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[3166]! } + public var Notification_PassportValueAddress: String { return self._s[3167]! } + public var Conversation_MessageDialogDelete: String { return self._s[3168]! } + public var Map_OpenInYandexNavigator: String { return self._s[3170]! } + public var DialogList_SearchSectionDialogs: String { return self._s[3171]! } + public var AccessDenied_Contacts: String { return self._s[3172]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[3174]! } + public var Passport_ScanPassportHelp: String { return self._s[3175]! } + public var Chat_PinnedListPreview_HidePinnedMessages: String { return self._s[3176]! } + public var ChatListFolder_NameChannels: String { return self._s[3177]! } + public var Appearance_ThemePreview_Chat_5_Text: String { return self._s[3178]! } public func Channel_OwnershipTransfer_TransferCompleted(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3178]!, self._r[3178]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3179]!, self._r[3179]!, [_1, _2]) } - public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[3179]! } + public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[3180]! } public func VoiceChat_InviteMemberToGroupFirstText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3180]!, self._r[3180]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3181]!, self._r[3181]!, [_1, _2]) } - public var Conversation_GifTooltip: String { return self._s[3181]! } - public var Widget_MessageAutoremoveTimerUpdated: String { return self._s[3182]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[3184]! } - public var VoiceChat_Connecting: String { return self._s[3185]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[3186]! } + public var Conversation_GifTooltip: String { return self._s[3182]! } + public var Widget_MessageAutoremoveTimerUpdated: String { return self._s[3183]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[3185]! } + public var VoiceChat_Connecting: String { return self._s[3186]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[3187]! } public func Channel_AdminLog_CreatedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3187]!, self._r[3187]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3188]!, self._r[3188]!, [_1, _2]) } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3188]! } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[3189]! } - public var CreatePoll_Quiz: String { return self._s[3190]! } - public var TwoFactorSetup_Email_Placeholder: String { return self._s[3192]! } - public var Watch_Message_Invoice: String { return self._s[3193]! } - public var Settings_AddAnotherAccount_Help: String { return self._s[3194]! } - public var Watch_Message_Unsupported: String { return self._s[3195]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3189]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[3190]! } + public var CreatePoll_Quiz: String { return self._s[3191]! } + public var TwoFactorSetup_Email_Placeholder: String { return self._s[3193]! } + public var Watch_Message_Invoice: String { return self._s[3194]! } + public var Settings_AddAnotherAccount_Help: String { return self._s[3195]! } + public var Watch_Message_Unsupported: String { return self._s[3196]! } public func Call_CameraOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3197]!, self._r[3197]!, [_0]) + return formatWithArgumentRanges(self._s[3198]!, self._r[3198]!, [_0]) } - public var AuthSessions_TerminateOtherSessions: String { return self._s[3198]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[3200]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[3201]! } - public var Call_IncomingVoiceCall: String { return self._s[3202]! } + public var AuthSessions_TerminateOtherSessions: String { return self._s[3199]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[3201]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[3202]! } + public var Call_IncomingVoiceCall: String { return self._s[3203]! } public func Channel_AdminLog_MessageTransferedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3203]!, self._r[3203]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3204]!, self._r[3204]!, [_1, _2]) } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[3204]! } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[3205]! } - public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[3206]! } - public var Group_ErrorAccessDenied: String { return self._s[3207]! } - public var PasscodeSettings_HelpTop: String { return self._s[3208]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[3209]! } - public var AddContact_SharedContactException: String { return self._s[3210]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[3211]! } - public var Privacy_TopPeers: String { return self._s[3212]! } - public var Web_OpenExternal: String { return self._s[3213]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[3214]! } - public var Channel_Management_LabelAdministrator: String { return self._s[3215]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[3205]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[3206]! } + public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[3207]! } + public var Group_ErrorAccessDenied: String { return self._s[3208]! } + public var PasscodeSettings_HelpTop: String { return self._s[3209]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[3210]! } + public var AddContact_SharedContactException: String { return self._s[3211]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[3212]! } + public var Privacy_TopPeers: String { return self._s[3213]! } + public var Web_OpenExternal: String { return self._s[3214]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[3215]! } + public var Channel_Management_LabelAdministrator: String { return self._s[3216]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3216]!, self._r[3216]!, [_0]) + return formatWithArgumentRanges(self._s[3217]!, self._r[3217]!, [_0]) } - public var Conversation_PhoneCopied: String { return self._s[3217]! } - public var Permissions_Skip: String { return self._s[3218]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[3219]! } + public var Conversation_PhoneCopied: String { return self._s[3218]! } + public var Permissions_Skip: String { return self._s[3219]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3220]! } public func VoiceChat_ForwardTooltip_TwoChats(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3220]!, self._r[3220]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3221]!, self._r[3221]!, [_0, _1]) } - public var PeopleNearby_Title: String { return self._s[3221]! } - public var GroupInfo_SharedMediaNone: String { return self._s[3222]! } + public var PeopleNearby_Title: String { return self._s[3222]! } + public var GroupInfo_SharedMediaNone: String { return self._s[3223]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3224]!, self._r[3224]!, [_1]) + return formatWithArgumentRanges(self._s[3225]!, self._r[3225]!, [_1]) } - public var Profile_MessageLifetime1w: String { return self._s[3225]! } + public var Profile_MessageLifetime1w: String { return self._s[3226]! } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3226]!, self._r[3226]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3227]!, self._r[3227]!, [_1, _2, _3]) } - public var WebBrowser_DefaultBrowser: String { return self._s[3227]! } - public var Conversation_PinOlderMessageAlertTitle: String { return self._s[3229]! } - public var EditTheme_Edit_BottomInfo: String { return self._s[3230]! } - public var Privacy_Forwards_Preview: String { return self._s[3231]! } - public var Settings_EditAccount: String { return self._s[3232]! } + public var WebBrowser_DefaultBrowser: String { return self._s[3228]! } + public var Conversation_PinOlderMessageAlertTitle: String { return self._s[3230]! } + public var EditTheme_Edit_BottomInfo: String { return self._s[3231]! } + public var Privacy_Forwards_Preview: String { return self._s[3232]! } + public var Settings_EditAccount: String { return self._s[3233]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3233]!, self._r[3233]!, [_0]) + return formatWithArgumentRanges(self._s[3234]!, self._r[3234]!, [_0]) } - public var TwoFactorSetup_Intro_Title: String { return self._s[3234]! } + public var TwoFactorSetup_Intro_Title: String { return self._s[3235]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3236]!, self._r[3236]!, [_1]) + return formatWithArgumentRanges(self._s[3237]!, self._r[3237]!, [_1]) } - public var PeerInfo_ButtonVideoCall: String { return self._s[3237]! } + public var PeerInfo_ButtonVideoCall: String { return self._s[3238]! } public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3238]!, self._r[3238]!, [_0]) + return formatWithArgumentRanges(self._s[3239]!, self._r[3239]!, [_0]) } - public var Login_InfoHelp: String { return self._s[3239]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[3240]! } - public var VoiceChat_SpeakPermissionEveryone: String { return self._s[3241]! } - public var Profile_MessageLifetime1d: String { return self._s[3242]! } - public var Group_UpgradeConfirmation: String { return self._s[3243]! } + public var Login_InfoHelp: String { return self._s[3240]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[3241]! } + public var VoiceChat_SpeakPermissionEveryone: String { return self._s[3242]! } + public var Profile_MessageLifetime1d: String { return self._s[3243]! } + public var Group_UpgradeConfirmation: String { return self._s[3244]! } public func PUSH_PINNED_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3244]!, self._r[3244]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3245]!, self._r[3245]!, [_1, _2]) } - public var Appearance_RemoveThemeColor: String { return self._s[3245]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3246]! } + public var Appearance_RemoveThemeColor: String { return self._s[3246]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3247]! } public func Call_AnsweringWithAccount(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3247]!, self._r[3247]!, [_0]) + return formatWithArgumentRanges(self._s[3248]!, self._r[3248]!, [_0]) } - public var UserInfo_BotSettings: String { return self._s[3248]! } + public var UserInfo_BotSettings: String { return self._s[3249]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3250]!, self._r[3250]!, [_0]) + return formatWithArgumentRanges(self._s[3251]!, self._r[3251]!, [_0]) } - public var Permissions_ContactsText_v0: String { return self._s[3251]! } - public var Conversation_PinMessagesForMe: String { return self._s[3252]! } - public var VoiceChat_PanelJoin: String { return self._s[3253]! } - public var Conversation_DiscussionStarted: String { return self._s[3255]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[3256]! } - public var SharedMedia_SearchNoResults: String { return self._s[3258]! } + public var Permissions_ContactsText_v0: String { return self._s[3252]! } + public var Conversation_PinMessagesForMe: String { return self._s[3253]! } + public var VoiceChat_PanelJoin: String { return self._s[3254]! } + public var Conversation_DiscussionStarted: String { return self._s[3256]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[3257]! } + public var SharedMedia_SearchNoResults: String { return self._s[3259]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3260]!, self._r[3260]!, [_0]) + return formatWithArgumentRanges(self._s[3261]!, self._r[3261]!, [_0]) } public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3262]!, self._r[3262]!, [_0]) + return formatWithArgumentRanges(self._s[3263]!, self._r[3263]!, [_0]) } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[3263]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[3264]! } - public var Call_AudioRouteHeadphones: String { return self._s[3265]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[3264]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[3265]! } + public var Call_AudioRouteHeadphones: String { return self._s[3266]! } public func Notification_VoiceChatScheduledTomorrowChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3267]!, self._r[3267]!, [_0]) + return formatWithArgumentRanges(self._s[3268]!, self._r[3268]!, [_0]) } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3268]!, self._r[3268]!, [_1]) + return formatWithArgumentRanges(self._s[3269]!, self._r[3269]!, [_1]) } - public var Passport_Identity_FilesView: String { return self._s[3269]! } - public var TwoStepAuth_SetupEmail: String { return self._s[3270]! } - public var Widget_ApplicationStartRequired: String { return self._s[3271]! } - public var PhotoEditor_Original: String { return self._s[3272]! } - public var Call_YourMicrophoneOff: String { return self._s[3273]! } - public var Permissions_ContactsAllow_v0: String { return self._s[3274]! } - public var Conversation_CardNumberCopied: String { return self._s[3275]! } - public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[3276]! } - public var PrivacyPolicy_Decline: String { return self._s[3277]! } - public var SettingsSearch_Synonyms_ChatFolders: String { return self._s[3278]! } - public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[3279]! } - public var ChatListFolder_IncludeSectionInfo: String { return self._s[3280]! } + public var Passport_Identity_FilesView: String { return self._s[3270]! } + public var TwoStepAuth_SetupEmail: String { return self._s[3271]! } + public var Widget_ApplicationStartRequired: String { return self._s[3272]! } + public var PhotoEditor_Original: String { return self._s[3273]! } + public var Call_YourMicrophoneOff: String { return self._s[3274]! } + public var Permissions_ContactsAllow_v0: String { return self._s[3275]! } + public var Conversation_CardNumberCopied: String { return self._s[3276]! } + public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[3277]! } + public var PrivacyPolicy_Decline: String { return self._s[3278]! } + public var SettingsSearch_Synonyms_ChatFolders: String { return self._s[3279]! } + public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[3280]! } + public var ChatListFolder_IncludeSectionInfo: String { return self._s[3281]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3281]!, self._r[3281]!, [_0]) + return formatWithArgumentRanges(self._s[3282]!, self._r[3282]!, [_0]) } - public var Passport_Identity_Name: String { return self._s[3282]! } - public var WallpaperPreview_PatternTitle: String { return self._s[3284]! } - public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[3285]! } - public var WallpaperSearch_ColorOrange: String { return self._s[3287]! } - public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[3288]! } - public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[3289]! } - public var Your_cards_security_code_is_invalid: String { return self._s[3290]! } - public var IntentsSettings_ResetAll: String { return self._s[3291]! } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3293]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3294]! } - public var ChatList_DeleteForAllSubscribers: String { return self._s[3295]! } - public var Notification_Exceptions_Add: String { return self._s[3296]! } - public var Group_DeleteGroup: String { return self._s[3297]! } - public var Cache_Help: String { return self._s[3298]! } - public var Call_AudioRouteMute: String { return self._s[3299]! } - public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[3300]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[3301]! } + public var Passport_Identity_Name: String { return self._s[3283]! } + public var WallpaperPreview_PatternTitle: String { return self._s[3285]! } + public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[3286]! } + public var WallpaperSearch_ColorOrange: String { return self._s[3288]! } + public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[3289]! } + public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[3290]! } + public var Your_cards_security_code_is_invalid: String { return self._s[3291]! } + public var IntentsSettings_ResetAll: String { return self._s[3292]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3294]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3295]! } + public var ChatList_DeleteForAllSubscribers: String { return self._s[3296]! } + public var Notification_Exceptions_Add: String { return self._s[3297]! } + public var Group_DeleteGroup: String { return self._s[3298]! } + public var Cache_Help: String { return self._s[3299]! } + public var Call_AudioRouteMute: String { return self._s[3300]! } + public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[3301]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[3302]! } public func VoiceChat_Status_MembersFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3302]!, self._r[3302]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3303]!, self._r[3303]!, [_1, _2]) } public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3303]!, self._r[3303]!, [_1]) + return formatWithArgumentRanges(self._s[3304]!, self._r[3304]!, [_1]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3304]!, self._r[3304]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3305]!, self._r[3305]!, [_1, _2]) } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3305]! } - public var Channel_BanUser_PermissionAddMembers: String { return self._s[3306]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3306]! } + public var Channel_BanUser_PermissionAddMembers: String { return self._s[3307]! } public func PUSH_CHAT_VOICECHAT_INVITE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3307]!, self._r[3307]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3308]!, self._r[3308]!, [_1, _2, _3]) } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[3308]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3309]! } - public var ClearCache_StorageFree: String { return self._s[3310]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[3309]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3310]! } + public var ClearCache_StorageFree: String { return self._s[3311]! } public func DialogList_SingleRecordingVideoMessageSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3311]!, self._r[3311]!, [_0]) + return formatWithArgumentRanges(self._s[3312]!, self._r[3312]!, [_0]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[3312]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[3313]! } public func Channel_AdminLog_EditedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3314]!, self._r[3314]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3315]!, self._r[3315]!, [_1, _2]) } - public var Group_ErrorAddTooMuchAdmins: String { return self._s[3315]! } - public var DialogList_Typing: String { return self._s[3316]! } + public var Group_ErrorAddTooMuchAdmins: String { return self._s[3316]! } + public var DialogList_Typing: String { return self._s[3317]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3317]!, self._r[3317]!, [_0]) + return formatWithArgumentRanges(self._s[3318]!, self._r[3318]!, [_0]) } - public var Target_SelectGroup: String { return self._s[3318]! } - public var AuthSessions_IncompleteAttempts: String { return self._s[3319]! } + public var Target_SelectGroup: String { return self._s[3319]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[3320]! } public func Notification_ProximityReached(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3320]!, self._r[3320]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3321]!, self._r[3321]!, [_1, _2, _3]) } - public var Chat_PinnedListPreview_ShowAllMessages: String { return self._s[3321]! } - public var TwoStepAuth_EmailChangeSuccess: String { return self._s[3322]! } + public var Chat_PinnedListPreview_ShowAllMessages: String { return self._s[3322]! } + public var TwoStepAuth_EmailChangeSuccess: String { return self._s[3323]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3323]!, self._r[3323]!, [_0]) + return formatWithArgumentRanges(self._s[3324]!, self._r[3324]!, [_0]) } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3324]! } - public var TwoFactorSetup_EmailVerification_Title: String { return self._s[3325]! } - public var ChatSettings_TextSize: String { return self._s[3326]! } - public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[3328]! } - public var Map_SendThisPlace: String { return self._s[3329]! } - public var Conversation_TextCopied: String { return self._s[3330]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3331]! } - public var ContactInfo_BirthdayLabel: String { return self._s[3332]! } - public var Call_ShareStats: String { return self._s[3333]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3325]! } + public var TwoFactorSetup_EmailVerification_Title: String { return self._s[3326]! } + public var ChatSettings_TextSize: String { return self._s[3327]! } + public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[3329]! } + public var Map_SendThisPlace: String { return self._s[3330]! } + public var Conversation_TextCopied: String { return self._s[3331]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3332]! } + public var ContactInfo_BirthdayLabel: String { return self._s[3333]! } + public var Call_ShareStats: String { return self._s[3334]! } public func PUSH_CHAT_VOICECHAT_END(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3335]!, self._r[3335]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3336]!, self._r[3336]!, [_1, _2]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[3336]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[3337]! } - public var Settings_Support: String { return self._s[3338]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3339]! } + public var ChatList_UndoArchiveRevealedText: String { return self._s[3337]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[3338]! } + public var Settings_Support: String { return self._s[3339]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3340]! } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3341]!, self._r[3341]!, [_0]) + return formatWithArgumentRanges(self._s[3342]!, self._r[3342]!, [_0]) } - public var Watch_Conversation_GroupInfo: String { return self._s[3342]! } - public var Tour_Text4: String { return self._s[3343]! } - public var VoiceChat_CancelReminder: String { return self._s[3344]! } - public var Calls_StartNewCall: String { return self._s[3345]! } - public var UserInfo_FakeUserWarning: String { return self._s[3347]! } - public var PasscodeSettings_AutoLock: String { return self._s[3348]! } - public var Channel_BanList_BlockedTitle: String { return self._s[3349]! } - public var Bot_DescriptionTitle: String { return self._s[3351]! } - public var Map_LocationTitle: String { return self._s[3352]! } - public var ChatListFolder_ExcludeSectionInfo: String { return self._s[3353]! } - public var Conversation_HashtagCopied: String { return self._s[3354]! } + public var Watch_Conversation_GroupInfo: String { return self._s[3343]! } + public var Tour_Text4: String { return self._s[3344]! } + public var VoiceChat_CancelReminder: String { return self._s[3345]! } + public var Calls_StartNewCall: String { return self._s[3346]! } + public var UserInfo_FakeUserWarning: String { return self._s[3348]! } + public var PasscodeSettings_AutoLock: String { return self._s[3349]! } + public var Channel_BanList_BlockedTitle: String { return self._s[3350]! } + public var Bot_DescriptionTitle: String { return self._s[3352]! } + public var Map_LocationTitle: String { return self._s[3353]! } + public var ChatListFolder_ExcludeSectionInfo: String { return self._s[3354]! } + public var Conversation_HashtagCopied: String { return self._s[3355]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3355]!, self._r[3355]!, [_1]) + return formatWithArgumentRanges(self._s[3356]!, self._r[3356]!, [_1]) } - public var VoiceChat_ReminderNotify: String { return self._s[3356]! } - public var Login_EmailNotConfiguredError: String { return self._s[3357]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[3358]! } - public var PrivacySettings_LastSeenNobody: String { return self._s[3359]! } - public var Permissions_CellularDataText_v0: String { return self._s[3360]! } - public var Conversation_EncryptionProcessing: String { return self._s[3361]! } - public var GroupPermission_Delete: String { return self._s[3363]! } - public var Contacts_SortByName: String { return self._s[3364]! } - public var TwoStepAuth_RecoveryUnavailable: String { return self._s[3365]! } - public var Compose_ChannelTokenListPlaceholder: String { return self._s[3366]! } - public var Group_Management_AddModeratorHelp: String { return self._s[3368]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[3369]! } - public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3370]! } - public var CallFeedback_IncludeLogsInfo: String { return self._s[3372]! } + public var VoiceChat_ReminderNotify: String { return self._s[3357]! } + public var Login_EmailNotConfiguredError: String { return self._s[3358]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[3359]! } + public var PrivacySettings_LastSeenNobody: String { return self._s[3360]! } + public var Permissions_CellularDataText_v0: String { return self._s[3361]! } + public var Conversation_EncryptionProcessing: String { return self._s[3362]! } + public var GroupPermission_Delete: String { return self._s[3364]! } + public var Contacts_SortByName: String { return self._s[3365]! } + public var TwoStepAuth_RecoveryUnavailable: String { return self._s[3366]! } + public var Compose_ChannelTokenListPlaceholder: String { return self._s[3367]! } + public var Group_Management_AddModeratorHelp: String { return self._s[3369]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[3370]! } + public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3371]! } + public var CallFeedback_IncludeLogsInfo: String { return self._s[3373]! } public func PUSH_CHANNEL_MESSAGE_QUIZ(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3373]!, self._r[3373]!, [_1]) + return formatWithArgumentRanges(self._s[3374]!, self._r[3374]!, [_1]) } public func SecretVideo_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3374]!, self._r[3374]!, [_0]) + return formatWithArgumentRanges(self._s[3375]!, self._r[3375]!, [_0]) } - public var ChatList_Context_Delete: String { return self._s[3375]! } - public var VoiceChat_InviteMember: String { return self._s[3376]! } - public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[3377]! } - public var Conversation_Processing: String { return self._s[3378]! } - public var TwoStepAuth_EmailCodeExpired: String { return self._s[3379]! } - public var ChatSettings_Stickers: String { return self._s[3380]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[3381]! } - public var Passport_Language_cs: String { return self._s[3382]! } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3384]! } - public var Conversation_Contact: String { return self._s[3385]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[3386]! } - public var SocksProxySetup_PasteFromClipboard: String { return self._s[3387]! } - public var Theme_Unsupported: String { return self._s[3388]! } - public var Privacy_TopPeersWarning: String { return self._s[3389]! } + public var ChatList_Context_Delete: String { return self._s[3376]! } + public var VoiceChat_InviteMember: String { return self._s[3377]! } + public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[3378]! } + public var Conversation_Processing: String { return self._s[3379]! } + public var TwoStepAuth_EmailCodeExpired: String { return self._s[3380]! } + public var ChatSettings_Stickers: String { return self._s[3381]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[3382]! } + public var Passport_Language_cs: String { return self._s[3383]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3385]! } + public var Conversation_Contact: String { return self._s[3386]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[3387]! } + public var SocksProxySetup_PasteFromClipboard: String { return self._s[3388]! } + public var Theme_Unsupported: String { return self._s[3389]! } + public var Privacy_TopPeersWarning: String { return self._s[3390]! } public func Conversation_ScheduledVoiceChatStartsTodayShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3390]!, self._r[3390]!, [_0]) + return formatWithArgumentRanges(self._s[3391]!, self._r[3391]!, [_0]) } - public var InviteLink_Title: String { return self._s[3392]! } + public var InviteLink_Title: String { return self._s[3393]! } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3393]!, self._r[3393]!, [_0]) + return formatWithArgumentRanges(self._s[3394]!, self._r[3394]!, [_0]) } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3394]! } - public var TwoStepAuth_RemovePassword: String { return self._s[3395]! } - public var Settings_CheckPhoneNumberText: String { return self._s[3396]! } - public var PeopleNearby_Users: String { return self._s[3397]! } - public var Appearance_TextSize_UseSystem: String { return self._s[3398]! } - public var Settings_SetProfilePhoto: String { return self._s[3399]! } - public var Conversation_ContextMenuBan: String { return self._s[3400]! } - public var KeyCommand_ScrollUp: String { return self._s[3401]! } - public var Settings_ChatSettings: String { return self._s[3403]! } - public var CallList_RecentCallsHeader: String { return self._s[3404]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3395]! } + public var TwoStepAuth_RemovePassword: String { return self._s[3396]! } + public var Settings_CheckPhoneNumberText: String { return self._s[3397]! } + public var PeopleNearby_Users: String { return self._s[3398]! } + public var Appearance_TextSize_UseSystem: String { return self._s[3399]! } + public var Settings_SetProfilePhoto: String { return self._s[3400]! } + public var Conversation_ContextMenuBan: String { return self._s[3401]! } + public var KeyCommand_ScrollUp: String { return self._s[3402]! } + public var Settings_ChatSettings: String { return self._s[3404]! } + public var CallList_RecentCallsHeader: String { return self._s[3405]! } public func PUSH_CHAT_MESSAGE_VIDEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3405]!, self._r[3405]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3406]!, self._r[3406]!, [_1, _2]) } - public var Stats_GroupTopInvitersTitle: String { return self._s[3406]! } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3407]! } - public var VoiceChat_StartRecordingTitle: String { return self._s[3408]! } + public var Stats_GroupTopInvitersTitle: String { return self._s[3407]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3408]! } + public var VoiceChat_StartRecordingTitle: String { return self._s[3409]! } public func Notification_VoiceChatScheduledToday(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3409]!, self._r[3409]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3410]!, self._r[3410]!, [_1, _2]) } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[3411]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3412]! } - public var VoiceOver_ChatList_MessageRead: String { return self._s[3413]! } - public var Stats_GroupTopPoster_Promote: String { return self._s[3414]! } - public var Cache_Title: String { return self._s[3415]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[3412]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3413]! } + public var VoiceOver_ChatList_MessageRead: String { return self._s[3414]! } + public var Stats_GroupTopPoster_Promote: String { return self._s[3415]! } + public var Cache_Title: String { return self._s[3416]! } public func Conversation_AutoremoveTimerSetToastText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3416]!, self._r[3416]!, [_0]) + return formatWithArgumentRanges(self._s[3417]!, self._r[3417]!, [_0]) } - public var Clipboard_SendPhoto: String { return self._s[3417]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[3419]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3420]! } - public var WatchRemote_AlertTitle: String { return self._s[3423]! } - public var Appearance_ReduceMotion: String { return self._s[3424]! } + public var Clipboard_SendPhoto: String { return self._s[3418]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[3420]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3421]! } + public var WatchRemote_AlertTitle: String { return self._s[3424]! } + public var Appearance_ReduceMotion: String { return self._s[3425]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3427]!, self._r[3427]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3428]!, self._r[3428]!, [_1, _2]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[3428]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[3429]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[3430]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[3429]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[3430]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[3431]! } public func Call_CallInProgressVoiceChatMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3431]!, self._r[3431]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3432]!, self._r[3432]!, [_1, _2]) } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3433]!, self._r[3433]!, [_0]) + return formatWithArgumentRanges(self._s[3434]!, self._r[3434]!, [_0]) } - public var ChatListFolder_DiscardConfirmation: String { return self._s[3434]! } + public var ChatListFolder_DiscardConfirmation: String { return self._s[3435]! } public func Conversation_RestrictedStickersTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3436]!, self._r[3436]!, [_0]) + return formatWithArgumentRanges(self._s[3437]!, self._r[3437]!, [_0]) } - public var InstantPage_Search: String { return self._s[3437]! } - public var ChatState_WaitingForNetwork: String { return self._s[3438]! } - public var GroupInfo_Sound: String { return self._s[3439]! } - public var NotificationsSound_Telegraph: String { return self._s[3440]! } - public var NotificationsSound_Hello: String { return self._s[3441]! } - public var VoiceChat_LeaveConfirmation: String { return self._s[3442]! } - public var UserInfo_LinkForwardTooltip_SavedMessages_One: String { return self._s[3443]! } - public var Passport_FieldIdentityDetailsHelp: String { return self._s[3444]! } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[3445]! } - public var Conversation_HoldForVideo: String { return self._s[3446]! } - public var Conversation_PinOlderMessageAlertText: String { return self._s[3447]! } - public var Appearance_ShareTheme: String { return self._s[3448]! } - public var TwoStepAuth_SetupHint: String { return self._s[3449]! } - public var Stats_GrowthTitle: String { return self._s[3452]! } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[3453]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[3454]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[3455]! } - public var GroupPermission_NoSendMessages: String { return self._s[3458]! } - public var Conversation_SetReminder_Title: String { return self._s[3459]! } - public var Privacy_Calls_CustomHelp: String { return self._s[3460]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3461]! } + public var InstantPage_Search: String { return self._s[3438]! } + public var ChatState_WaitingForNetwork: String { return self._s[3439]! } + public var GroupInfo_Sound: String { return self._s[3440]! } + public var NotificationsSound_Telegraph: String { return self._s[3441]! } + public var NotificationsSound_Hello: String { return self._s[3442]! } + public var VoiceChat_LeaveConfirmation: String { return self._s[3443]! } + public var UserInfo_LinkForwardTooltip_SavedMessages_One: String { return self._s[3444]! } + public var Passport_FieldIdentityDetailsHelp: String { return self._s[3445]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[3446]! } + public var Conversation_HoldForVideo: String { return self._s[3447]! } + public var Conversation_PinOlderMessageAlertText: String { return self._s[3448]! } + public var Appearance_ShareTheme: String { return self._s[3449]! } + public var TwoStepAuth_SetupHint: String { return self._s[3450]! } + public var Stats_GrowthTitle: String { return self._s[3453]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[3454]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[3455]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[3456]! } + public var GroupPermission_NoSendMessages: String { return self._s[3459]! } + public var Conversation_SetReminder_Title: String { return self._s[3460]! } + public var Privacy_Calls_CustomHelp: String { return self._s[3461]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3462]! } public func ClearCache_StorageTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3462]!, self._r[3462]!, [_0]) + return formatWithArgumentRanges(self._s[3463]!, self._r[3463]!, [_0]) } - public var InviteLinks_InviteLinkExpired: String { return self._s[3464]! } - public var Undo_SecretChatDeleted: String { return self._s[3465]! } - public var PhotoEditor_ContrastTool: String { return self._s[3466]! } - public var Privacy_Forwards: String { return self._s[3467]! } - public var AuthSessions_LoggedInWithTelegram: String { return self._s[3468]! } - public var KeyCommand_SendMessage: String { return self._s[3470]! } - public var Conversation_PrivateMessageLinkCopiedLong: String { return self._s[3471]! } + public var InviteLinks_InviteLinkExpired: String { return self._s[3465]! } + public var Undo_SecretChatDeleted: String { return self._s[3466]! } + public var PhotoEditor_ContrastTool: String { return self._s[3467]! } + public var Privacy_Forwards: String { return self._s[3468]! } + public var AuthSessions_LoggedInWithTelegram: String { return self._s[3469]! } + public var KeyCommand_SendMessage: String { return self._s[3471]! } + public var Conversation_PrivateMessageLinkCopiedLong: String { return self._s[3472]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3472]!, self._r[3472]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3473]!, self._r[3473]!, [_1, _2]) } - public var GroupPermission_NoSendGifs: String { return self._s[3473]! } + public var GroupPermission_NoSendGifs: String { return self._s[3474]! } public func Notification_VoiceChatEndedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3474]!, self._r[3474]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3475]!, self._r[3475]!, [_1, _2]) } - public var Notification_MessageLifetime2s: String { return self._s[3475]! } - public var Message_Theme: String { return self._s[3476]! } - public var Conversation_Dice_u1F3AF: String { return self._s[3479]! } + public var Notification_MessageLifetime2s: String { return self._s[3476]! } + public var Message_Theme: String { return self._s[3477]! } + public var Conversation_Dice_u1F3AF: String { return self._s[3480]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3480]!, self._r[3480]!, [_0]) + return formatWithArgumentRanges(self._s[3481]!, self._r[3481]!, [_0]) } - public var Group_UpgradeNoticeHeader: String { return self._s[3482]! } - public var PeerInfo_BioExpand: String { return self._s[3483]! } - public var Passport_DeletePersonalDetails: String { return self._s[3484]! } - public var Widget_NoUsers: String { return self._s[3485]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[3486]! } - public var VoiceChat_VideoPreviewDescription: String { return self._s[3487]! } - public var Login_TermsOfServiceDecline: String { return self._s[3488]! } - public var CreatePoll_QuizTip: String { return self._s[3490]! } - public var Watch_LastSeen_WithinAWeek: String { return self._s[3491]! } - public var MessagePoll_SubmitVote: String { return self._s[3493]! } - public var ChatSettings_AutoDownloadEnabled: String { return self._s[3494]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[3495]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[3496]! } - public var Conversation_UpdateTelegram: String { return self._s[3497]! } + public var Group_UpgradeNoticeHeader: String { return self._s[3483]! } + public var PeerInfo_BioExpand: String { return self._s[3484]! } + public var Passport_DeletePersonalDetails: String { return self._s[3485]! } + public var Widget_NoUsers: String { return self._s[3486]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[3487]! } + public var VoiceChat_VideoPreviewDescription: String { return self._s[3488]! } + public var Login_TermsOfServiceDecline: String { return self._s[3489]! } + public var CreatePoll_QuizTip: String { return self._s[3491]! } + public var Watch_LastSeen_WithinAWeek: String { return self._s[3492]! } + public var MessagePoll_SubmitVote: String { return self._s[3494]! } + public var ChatSettings_AutoDownloadEnabled: String { return self._s[3495]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[3496]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[3497]! } + public var Conversation_UpdateTelegram: String { return self._s[3498]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3498]!, self._r[3498]!, [_0]) + return formatWithArgumentRanges(self._s[3499]!, self._r[3499]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3499]! } - public var CallSettings_Always: String { return self._s[3500]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[3501]! } - public var VoiceChat_MutedByAdminHelp: String { return self._s[3502]! } - public var Login_TermsOfServiceHeader: String { return self._s[3503]! } - public var KeyCommand_ChatInfo: String { return self._s[3504]! } - public var MessagePoll_LabelPoll: String { return self._s[3505]! } - public var Paint_Clear: String { return self._s[3506]! } - public var PeerInfo_ButtonMute: String { return self._s[3507]! } - public var LastSeen_WithinAWeek: String { return self._s[3508]! } - public var Invitation_JoinVoiceChatAsSpeaker: String { return self._s[3509]! } - public var Passport_Identity_FrontSide: String { return self._s[3510]! } - public var Stickers_GroupStickers: String { return self._s[3511]! } - public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[3512]! } + public var UserInfo_About_Placeholder: String { return self._s[3500]! } + public var CallSettings_Always: String { return self._s[3501]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[3502]! } + public var VoiceChat_MutedByAdminHelp: String { return self._s[3503]! } + public var Login_TermsOfServiceHeader: String { return self._s[3504]! } + public var KeyCommand_ChatInfo: String { return self._s[3505]! } + public var MessagePoll_LabelPoll: String { return self._s[3506]! } + public var Paint_Clear: String { return self._s[3507]! } + public var PeerInfo_ButtonMute: String { return self._s[3508]! } + public var LastSeen_WithinAWeek: String { return self._s[3509]! } + public var Invitation_JoinVoiceChatAsSpeaker: String { return self._s[3510]! } + public var Passport_Identity_FrontSide: String { return self._s[3511]! } + public var Stickers_GroupStickers: String { return self._s[3512]! } + public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[3513]! } public func Map_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3513]!, self._r[3513]!, [_0]) + return formatWithArgumentRanges(self._s[3514]!, self._r[3514]!, [_0]) } - public var VoiceOver_BotCommands: String { return self._s[3514]! } + public var VoiceOver_BotCommands: String { return self._s[3515]! } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3517]!, self._r[3517]!, [_1]) + return formatWithArgumentRanges(self._s[3518]!, self._r[3518]!, [_1]) } - public var SocksProxySetup_ProxyStatusConnected: String { return self._s[3518]! } - public var Chat_MultipleTextMessagesDisabled: String { return self._s[3519]! } - public var InviteLink_ContextDelete: String { return self._s[3520]! } + public var SocksProxySetup_ProxyStatusConnected: String { return self._s[3519]! } + public var Chat_MultipleTextMessagesDisabled: String { return self._s[3520]! } + public var InviteLink_ContextDelete: String { return self._s[3521]! } public func Notification_LeftChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3521]!, self._r[3521]!, [_0]) + return formatWithArgumentRanges(self._s[3522]!, self._r[3522]!, [_0]) } - public var WebSearch_SearchNoResults: String { return self._s[3523]! } - public var Channel_DiscussionGroup_Create: String { return self._s[3524]! } - public var Passport_Language_es: String { return self._s[3525]! } - public var EnterPasscode_EnterCurrentPasscode: String { return self._s[3526]! } - public var Map_LiveLocationShowAll: String { return self._s[3527]! } - public var Cache_MaximumCacheSizeHelp: String { return self._s[3529]! } - public var Map_OpenInGoogleMaps: String { return self._s[3530]! } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[3532]! } - public var EditTheme_Create_BottomInfo: String { return self._s[3533]! } - public var PhotoEditor_BlurToolLinear: String { return self._s[3534]! } + public var WebSearch_SearchNoResults: String { return self._s[3524]! } + public var Channel_DiscussionGroup_Create: String { return self._s[3525]! } + public var Passport_Language_es: String { return self._s[3526]! } + public var EnterPasscode_EnterCurrentPasscode: String { return self._s[3527]! } + public var Map_LiveLocationShowAll: String { return self._s[3528]! } + public var Cache_MaximumCacheSizeHelp: String { return self._s[3530]! } + public var Map_OpenInGoogleMaps: String { return self._s[3531]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[3533]! } + public var EditTheme_Create_BottomInfo: String { return self._s[3534]! } + public var PhotoEditor_BlurToolLinear: String { return self._s[3535]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3535]!, self._r[3535]!, [_0]) + return formatWithArgumentRanges(self._s[3536]!, self._r[3536]!, [_0]) } - public var Passport_Phone_Delete: String { return self._s[3536]! } - public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[3537]! } - public var PrivacySettings_PrivacyTitle: String { return self._s[3538]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3539]! } + public var Passport_Phone_Delete: String { return self._s[3537]! } + public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[3538]! } + public var PrivacySettings_PrivacyTitle: String { return self._s[3539]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3540]! } public func EncryptionKey_Description(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3540]!, self._r[3540]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3541]!, self._r[3541]!, [_1, _2]) } - public var LogoutOptions_LogOutInfo: String { return self._s[3541]! } - public var Cache_ByPeerHeader: String { return self._s[3543]! } - public var Username_InvalidCharacters: String { return self._s[3544]! } - public var Checkout_ShippingAddress: String { return self._s[3546]! } + public var LogoutOptions_LogOutInfo: String { return self._s[3542]! } + public var Cache_ByPeerHeader: String { return self._s[3544]! } + public var Username_InvalidCharacters: String { return self._s[3545]! } + public var Checkout_ShippingAddress: String { return self._s[3547]! } public func PUSH_CHAT_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3547]!, self._r[3547]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[3548]!, self._r[3548]!, [_1, _2, _3, _4]) } - public var VoiceChat_LeaveAndEndVoiceChat: String { return self._s[3549]! } - public var Conversation_AddContact: String { return self._s[3550]! } - public var Passport_Address_EditUtilityBill: String { return self._s[3551]! } - public var InviteLink_ContextGetQRCode: String { return self._s[3552]! } - public var Conversation_ChecksTooltip_Delivered: String { return self._s[3554]! } + public var VoiceChat_LeaveAndEndVoiceChat: String { return self._s[3550]! } + public var Conversation_AddContact: String { return self._s[3551]! } + public var Passport_Address_EditUtilityBill: String { return self._s[3552]! } + public var InviteLink_ContextGetQRCode: String { return self._s[3553]! } + public var Conversation_ChecksTooltip_Delivered: String { return self._s[3555]! } public func Channel_AdminLog_MessageAddedAdminNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3555]!, self._r[3555]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3556]!, self._r[3556]!, [_1, _2]) } - public var Message_Video: String { return self._s[3556]! } + public var Message_Video: String { return self._s[3557]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3557]!, self._r[3557]!, [_0]) + return formatWithArgumentRanges(self._s[3558]!, self._r[3558]!, [_0]) } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3558]!, self._r[3558]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[3559]!, self._r[3559]!, ["\(_0)"]) } - public var InviteLink_ReactivateLink: String { return self._s[3559]! } - public var Passport_Language_km: String { return self._s[3561]! } + public var InviteLink_ReactivateLink: String { return self._s[3560]! } + public var Passport_Language_km: String { return self._s[3562]! } public func PUSH_MESSAGE_CHANNEL_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3562]!, self._r[3562]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3563]!, self._r[3563]!, [_1, _2, _3]) } - public var EmptyGroupInfo_Line4: String { return self._s[3563]! } - public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3565]! } - public var Notification_CallCanceledShort: String { return self._s[3566]! } - public var PhotoEditor_FadeTool: String { return self._s[3567]! } - public var Group_PublicLink_Info: String { return self._s[3568]! } - public var Contacts_DeselectAll: String { return self._s[3569]! } - public var Conversation_Moderate_Delete: String { return self._s[3571]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3572]! } - public var NotificationsSound_Note: String { return self._s[3575]! } + public var EmptyGroupInfo_Line4: String { return self._s[3564]! } + public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3566]! } + public var Notification_CallCanceledShort: String { return self._s[3567]! } + public var PhotoEditor_FadeTool: String { return self._s[3568]! } + public var Group_PublicLink_Info: String { return self._s[3569]! } + public var Contacts_DeselectAll: String { return self._s[3570]! } + public var Conversation_Moderate_Delete: String { return self._s[3572]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3573]! } + public var NotificationsSound_Note: String { return self._s[3576]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3576]!, self._r[3576]!, [_0]) + return formatWithArgumentRanges(self._s[3577]!, self._r[3577]!, [_0]) } - public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3577]! } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3579]! } - public var DialogList_SearchSectionGlobal: String { return self._s[3580]! } - public var AccessDenied_Settings: String { return self._s[3581]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3582]! } - public var AuthSessions_EmptyTitle: String { return self._s[3583]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[3584]! } - public var GroupInfo_GroupType: String { return self._s[3585]! } - public var Calls_Missed: String { return self._s[3586]! } - public var Contacts_VoiceOver_AddContact: String { return self._s[3587]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3589]! } - public var Passport_Language_uz: String { return self._s[3590]! } - public var Conversation_StopQuizConfirmationTitle: String { return self._s[3591]! } - public var PhotoEditor_BlurToolPortrait: String { return self._s[3592]! } - public var VoiceChat_CreateNewVoiceChatStartNow: String { return self._s[3593]! } - public var Map_ChooseLocationTitle: String { return self._s[3594]! } - public var Checkout_EnterPassword: String { return self._s[3595]! } - public var GroupInfo_ConvertToSupergroup: String { return self._s[3596]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[3597]! } - public var NetworkUsageSettings_Title: String { return self._s[3598]! } - public var Location_ProximityAlertCancelled: String { return self._s[3599]! } - public var SettingsSearch_Synonyms_ChatSettings_IntentsSettings: String { return self._s[3600]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[3601]! } - public var Compose_NewChannel: String { return self._s[3602]! } - public var Privacy_PaymentsClearInfo: String { return self._s[3604]! } + public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3578]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3580]! } + public var DialogList_SearchSectionGlobal: String { return self._s[3581]! } + public var AccessDenied_Settings: String { return self._s[3582]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3583]! } + public var AuthSessions_EmptyTitle: String { return self._s[3584]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[3585]! } + public var GroupInfo_GroupType: String { return self._s[3586]! } + public var Calls_Missed: String { return self._s[3587]! } + public var Contacts_VoiceOver_AddContact: String { return self._s[3588]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3590]! } + public var Passport_Language_uz: String { return self._s[3591]! } + public var Conversation_StopQuizConfirmationTitle: String { return self._s[3592]! } + public var PhotoEditor_BlurToolPortrait: String { return self._s[3593]! } + public var VoiceChat_CreateNewVoiceChatStartNow: String { return self._s[3594]! } + public var Map_ChooseLocationTitle: String { return self._s[3595]! } + public var Checkout_EnterPassword: String { return self._s[3596]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[3597]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[3598]! } + public var NetworkUsageSettings_Title: String { return self._s[3599]! } + public var Location_ProximityAlertCancelled: String { return self._s[3600]! } + public var SettingsSearch_Synonyms_ChatSettings_IntentsSettings: String { return self._s[3601]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[3602]! } + public var Compose_NewChannel: String { return self._s[3603]! } + public var Privacy_PaymentsClearInfo: String { return self._s[3605]! } public func PUSH_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3605]!, self._r[3605]!, [_1]) + return formatWithArgumentRanges(self._s[3606]!, self._r[3606]!, [_1]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[3606]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3607]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[3610]! } - public var WallpaperSearch_ColorBrown: String { return self._s[3611]! } - public var Appearance_AppIconDefault: String { return self._s[3612]! } - public var StickerSettings_ContextInfo: String { return self._s[3615]! } - public var Channel_AddBotErrorNoRights: String { return self._s[3616]! } - public var Passport_FieldPhone: String { return self._s[3618]! } - public var Contacts_PermissionsTitle: String { return self._s[3619]! } - public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3620]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[3607]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3608]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[3611]! } + public var WallpaperSearch_ColorBrown: String { return self._s[3612]! } + public var Appearance_AppIconDefault: String { return self._s[3613]! } + public var StickerSettings_ContextInfo: String { return self._s[3616]! } + public var Channel_AddBotErrorNoRights: String { return self._s[3617]! } + public var Passport_FieldPhone: String { return self._s[3619]! } + public var Contacts_PermissionsTitle: String { return self._s[3620]! } + public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3621]! } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3621]!, self._r[3621]!, [_0]) + return formatWithArgumentRanges(self._s[3622]!, self._r[3622]!, [_0]) } - public var Bot_Unblock: String { return self._s[3622]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[3623]! } - public var InviteLink_InviteLinkCopiedText: String { return self._s[3624]! } - public var Passport_PasswordHelp: String { return self._s[3625]! } - public var Watch_Conversation_UserInfo: String { return self._s[3626]! } + public var Bot_Unblock: String { return self._s[3623]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[3624]! } + public var InviteLink_InviteLinkCopiedText: String { return self._s[3625]! } + public var Passport_PasswordHelp: String { return self._s[3626]! } + public var Watch_Conversation_UserInfo: String { return self._s[3627]! } public func Channel_AdminLog_MessageChangedGroupGeoLocation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3630]!, self._r[3630]!, [_0]) + return formatWithArgumentRanges(self._s[3631]!, self._r[3631]!, [_0]) } - public var State_Connecting: String { return self._s[3632]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3633]! } - public var TextFormat_AddLinkPlaceholder: String { return self._s[3634]! } - public var Conversation_Dice_u1F3B2: String { return self._s[3635]! } + public var State_Connecting: String { return self._s[3633]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3634]! } + public var TextFormat_AddLinkPlaceholder: String { return self._s[3635]! } + public var Conversation_Dice_u1F3B2: String { return self._s[3636]! } public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3636]!, self._r[3636]!, [_0]) + return formatWithArgumentRanges(self._s[3637]!, self._r[3637]!, [_0]) } - public var Conversation_SendingOptionsTooltip: String { return self._s[3637]! } - public var ChatList_UndoArchiveTitle: String { return self._s[3638]! } - public var ChatList_EmptyChatListNewMessage: String { return self._s[3639]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3641]! } - public var PhotoEditor_BlurToolOff: String { return self._s[3642]! } - public var Conversation_AutoremoveOff: String { return self._s[3643]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[3644]! } - public var Weekday_Saturday: String { return self._s[3645]! } - public var DialogList_Unread: String { return self._s[3646]! } - public var Watch_LastSeen_ALongTimeAgo: String { return self._s[3647]! } - public var Stats_GroupPosters: String { return self._s[3648]! } + public var Conversation_SendingOptionsTooltip: String { return self._s[3638]! } + public var ChatList_UndoArchiveTitle: String { return self._s[3639]! } + public var ChatList_EmptyChatListNewMessage: String { return self._s[3640]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3642]! } + public var PhotoEditor_BlurToolOff: String { return self._s[3643]! } + public var Conversation_AutoremoveOff: String { return self._s[3644]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[3645]! } + public var Weekday_Saturday: String { return self._s[3646]! } + public var DialogList_Unread: String { return self._s[3647]! } + public var Watch_LastSeen_ALongTimeAgo: String { return self._s[3648]! } + public var Stats_GroupPosters: String { return self._s[3649]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3649]!, self._r[3649]!, [_1]) + return formatWithArgumentRanges(self._s[3650]!, self._r[3650]!, [_1]) } - public var Conversation_AlsoClearCacheTitle: String { return self._s[3650]! } + public var Conversation_AlsoClearCacheTitle: String { return self._s[3651]! } public func Conversation_ForwardTooltip_TwoChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3651]!, self._r[3651]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3652]!, self._r[3652]!, [_0, _1]) } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3654]!, self._r[3654]!, [_0]) + return formatWithArgumentRanges(self._s[3655]!, self._r[3655]!, [_0]) } - public var ReportPeer_ReasonChildAbuse: String { return self._s[3655]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[3656]! } public func Channel_AdminLog_MessageUnkickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3656]!, self._r[3656]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3657]!, self._r[3657]!, [_1, _2]) } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[3657]! } - public var Conversation_EmailCopied: String { return self._s[3659]! } - public var AutoNightTheme_UseSunsetSunrise: String { return self._s[3660]! } - public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[3661]! } - public var Call_VoiceOver_VoiceCallCanceled: String { return self._s[3662]! } - public var VoiceChat_LateBy: String { return self._s[3663]! } - public var Passport_Language_dv: String { return self._s[3664]! } - public var GroupPermission_AddSuccess: String { return self._s[3666]! } - public var Passport_Email_Help: String { return self._s[3667]! } - public var Call_ReportPlaceholder: String { return self._s[3668]! } - public var CreatePoll_AddOption: String { return self._s[3669]! } - public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3671]! } - public var PeerInfo_ButtonLeave: String { return self._s[3672]! } - public var PhotoEditor_TiltShift: String { return self._s[3675]! } - public var SecretGif_Title: String { return self._s[3677]! } - public var GroupInfo_InviteLinks: String { return self._s[3678]! } - public var PhotoEditor_QualityVeryLow: String { return self._s[3679]! } - public var SocksProxySetup_Connecting: String { return self._s[3681]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3682]! } - public var ContactInfo_PhoneLabelWork: String { return self._s[3683]! } - public var Stats_GroupTopHoursTitle: String { return self._s[3684]! } - public var Compose_NewMessage: String { return self._s[3685]! } - public var VoiceOver_Common_SwitchHint: String { return self._s[3686]! } - public var NotificationsSound_Synth: String { return self._s[3687]! } - public var ChatImport_UserErrorNotMutual: String { return self._s[3688]! } - public var Conversation_FileOpenIn: String { return self._s[3689]! } - public var AutoDownloadSettings_WifiTitle: String { return self._s[3690]! } - public var UserInfo_SendMessage: String { return self._s[3691]! } - public var Checkout_PayWithFaceId: String { return self._s[3692]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[3658]! } + public var Conversation_EmailCopied: String { return self._s[3660]! } + public var AutoNightTheme_UseSunsetSunrise: String { return self._s[3661]! } + public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[3662]! } + public var Call_VoiceOver_VoiceCallCanceled: String { return self._s[3663]! } + public var VoiceChat_LateBy: String { return self._s[3664]! } + public var Passport_Language_dv: String { return self._s[3665]! } + public var GroupPermission_AddSuccess: String { return self._s[3667]! } + public var Passport_Email_Help: String { return self._s[3668]! } + public var Call_ReportPlaceholder: String { return self._s[3669]! } + public var CreatePoll_AddOption: String { return self._s[3670]! } + public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3672]! } + public var PeerInfo_ButtonLeave: String { return self._s[3673]! } + public var PhotoEditor_TiltShift: String { return self._s[3676]! } + public var SecretGif_Title: String { return self._s[3678]! } + public var GroupInfo_InviteLinks: String { return self._s[3679]! } + public var PhotoEditor_QualityVeryLow: String { return self._s[3680]! } + public var SocksProxySetup_Connecting: String { return self._s[3682]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3683]! } + public var ContactInfo_PhoneLabelWork: String { return self._s[3684]! } + public var Stats_GroupTopHoursTitle: String { return self._s[3685]! } + public var Compose_NewMessage: String { return self._s[3686]! } + public var VoiceOver_Common_SwitchHint: String { return self._s[3687]! } + public var NotificationsSound_Synth: String { return self._s[3688]! } + public var ChatImport_UserErrorNotMutual: String { return self._s[3689]! } + public var Conversation_FileOpenIn: String { return self._s[3690]! } + public var AutoDownloadSettings_WifiTitle: String { return self._s[3691]! } + public var UserInfo_SendMessage: String { return self._s[3692]! } + public var Checkout_PayWithFaceId: String { return self._s[3693]! } public func Map_LiveLocationShortHour(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3693]!, self._r[3693]!, [_0]) + return formatWithArgumentRanges(self._s[3694]!, self._r[3694]!, [_0]) } - public var TextFormat_Strikethrough: String { return self._s[3694]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[3695]! } - public var Conversation_ViewChannel: String { return self._s[3696]! } + public var TextFormat_Strikethrough: String { return self._s[3695]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[3696]! } + public var Conversation_ViewChannel: String { return self._s[3697]! } public func Message_ForwardedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3697]!, self._r[3697]!, [_0]) + return formatWithArgumentRanges(self._s[3698]!, self._r[3698]!, [_0]) } - public var Channel_Stickers_Placeholder: String { return self._s[3698]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3699]! } - public var Message_ScamAccount: String { return self._s[3700]! } - public var Camera_FlashAuto: String { return self._s[3701]! } - public var Conversation_EncryptedDescription1: String { return self._s[3702]! } - public var LocalGroup_Text: String { return self._s[3703]! } - public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[3704]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[3705]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[3706]! } - public var Conversation_EncryptedDescription2: String { return self._s[3707]! } - public var Conversation_CancelForwardText: String { return self._s[3708]! } - public var Notification_GroupActivated: String { return self._s[3709]! } - public var LastSeen_Lately: String { return self._s[3710]! } - public var Conversation_EncryptedDescription3: String { return self._s[3711]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[3712]! } - public var Conversation_SwipeToReplyHintText: String { return self._s[3713]! } - public var Conversation_EncryptedDescription4: String { return self._s[3714]! } - public var SharedMedia_EmptyTitle: String { return self._s[3715]! } - public var Appearance_CreateTheme: String { return self._s[3717]! } - public var Stats_SharesPerPost: String { return self._s[3718]! } - public var Contacts_TabTitle: String { return self._s[3719]! } - public var Weekday_ShortThursday: String { return self._s[3720]! } - public var MessageTimer_Forever: String { return self._s[3721]! } - public var ChatListFolder_CategoryArchived: String { return self._s[3722]! } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3723]! } - public var EditTheme_Create_TopInfo: String { return self._s[3725]! } + public var Channel_Stickers_Placeholder: String { return self._s[3699]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3700]! } + public var Message_ScamAccount: String { return self._s[3701]! } + public var Camera_FlashAuto: String { return self._s[3702]! } + public var Conversation_EncryptedDescription1: String { return self._s[3703]! } + public var LocalGroup_Text: String { return self._s[3704]! } + public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[3705]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[3706]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[3707]! } + public var Conversation_EncryptedDescription2: String { return self._s[3708]! } + public var Conversation_CancelForwardText: String { return self._s[3709]! } + public var Notification_GroupActivated: String { return self._s[3710]! } + public var LastSeen_Lately: String { return self._s[3711]! } + public var Conversation_EncryptedDescription3: String { return self._s[3712]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[3713]! } + public var Conversation_SwipeToReplyHintText: String { return self._s[3714]! } + public var Conversation_EncryptedDescription4: String { return self._s[3715]! } + public var SharedMedia_EmptyTitle: String { return self._s[3716]! } + public var Appearance_CreateTheme: String { return self._s[3718]! } + public var Stats_SharesPerPost: String { return self._s[3719]! } + public var Contacts_TabTitle: String { return self._s[3720]! } + public var Weekday_ShortThursday: String { return self._s[3721]! } + public var MessageTimer_Forever: String { return self._s[3722]! } + public var ChatListFolder_CategoryArchived: String { return self._s[3723]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3724]! } + public var EditTheme_Create_TopInfo: String { return self._s[3726]! } public func VoiceOver_ChatList_MessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3726]!, self._r[3726]!, [_0]) + return formatWithArgumentRanges(self._s[3727]!, self._r[3727]!, [_0]) } - public var Month_GenDecember: String { return self._s[3727]! } - public var EnterPasscode_EnterPasscode: String { return self._s[3728]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3729]! } - public var PeopleNearby_CreateGroup: String { return self._s[3731]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3732]! } - public var Paint_ClearConfirm: String { return self._s[3733]! } - public var ChatList_ReadAll: String { return self._s[3734]! } - public var ChatSettings_IntentsSettings: String { return self._s[3735]! } - public var Passport_PassportInformation: String { return self._s[3737]! } - public var Login_CheckOtherSessionMessages: String { return self._s[3739]! } - public var Location_ProximityNotification_DistanceMI: String { return self._s[3742]! } - public var PhotoEditor_ExposureTool: String { return self._s[3743]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[3744]! } - public var SettingsSearch_Synonyms_Watch: String { return self._s[3745]! } - public var Stats_GroupTopPoster_History: String { return self._s[3746]! } - public var UserInfo_AddPhone: String { return self._s[3747]! } - public var Media_SendWithTimer: String { return self._s[3749]! } - public var SettingsSearch_Synonyms_Notifications_Title: String { return self._s[3750]! } - public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3751]! } - public var GroupInfo_GroupHistoryShort: String { return self._s[3752]! } - public var PasscodeSettings_AutoLock_Disabled: String { return self._s[3753]! } - public var ChatList_Context_Unarchive: String { return self._s[3755]! } + public var Month_GenDecember: String { return self._s[3728]! } + public var EnterPasscode_EnterPasscode: String { return self._s[3729]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3730]! } + public var PeopleNearby_CreateGroup: String { return self._s[3732]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3733]! } + public var Paint_ClearConfirm: String { return self._s[3734]! } + public var ChatList_ReadAll: String { return self._s[3735]! } + public var ChatSettings_IntentsSettings: String { return self._s[3736]! } + public var Passport_PassportInformation: String { return self._s[3738]! } + public var Login_CheckOtherSessionMessages: String { return self._s[3740]! } + public var Location_ProximityNotification_DistanceMI: String { return self._s[3743]! } + public var PhotoEditor_ExposureTool: String { return self._s[3744]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[3745]! } + public var SettingsSearch_Synonyms_Watch: String { return self._s[3746]! } + public var Stats_GroupTopPoster_History: String { return self._s[3747]! } + public var UserInfo_AddPhone: String { return self._s[3748]! } + public var Media_SendWithTimer: String { return self._s[3750]! } + public var SettingsSearch_Synonyms_Notifications_Title: String { return self._s[3751]! } + public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3752]! } + public var GroupInfo_GroupHistoryShort: String { return self._s[3753]! } + public var PasscodeSettings_AutoLock_Disabled: String { return self._s[3754]! } + public var ChatList_Context_Unarchive: String { return self._s[3756]! } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3756]!, self._r[3756]!, [_0]) + return formatWithArgumentRanges(self._s[3757]!, self._r[3757]!, [_0]) } - public var BlockedUsers_Title: String { return self._s[3758]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[3759]! } - public var Media_ShareThisPhoto: String { return self._s[3760]! } - public var Notifications_DisplayNamesOnLockScreen: String { return self._s[3761]! } - public var Conversation_FilePhotoOrVideo: String { return self._s[3762]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3766]! } - public var CallFeedback_ReasonNoise: String { return self._s[3768]! } - public var WebBrowser_Title: String { return self._s[3769]! } + public var BlockedUsers_Title: String { return self._s[3759]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[3760]! } + public var Media_ShareThisPhoto: String { return self._s[3761]! } + public var Notifications_DisplayNamesOnLockScreen: String { return self._s[3762]! } + public var Conversation_FilePhotoOrVideo: String { return self._s[3763]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3767]! } + public var CallFeedback_ReasonNoise: String { return self._s[3769]! } + public var WebBrowser_Title: String { return self._s[3770]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3770]!, self._r[3770]!, [_0]) + return formatWithArgumentRanges(self._s[3771]!, self._r[3771]!, [_0]) } - public var Notification_MessageLifetime5s: String { return self._s[3772]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[3773]! } - public var Profile_MessageLifetime1m: String { return self._s[3775]! } - public var Passport_ScanPassport: String { return self._s[3776]! } - public var Stats_LoadingTitle: String { return self._s[3777]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[3779]! } - public var Permissions_NotificationsAllow_v0: String { return self._s[3780]! } - public var Login_InvalidFirstNameError: String { return self._s[3781]! } - public var Undo_ChatCleared: String { return self._s[3783]! } + public var Notification_MessageLifetime5s: String { return self._s[3773]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[3774]! } + public var Profile_MessageLifetime1m: String { return self._s[3776]! } + public var Passport_ScanPassport: String { return self._s[3777]! } + public var Stats_LoadingTitle: String { return self._s[3778]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[3780]! } + public var Permissions_NotificationsAllow_v0: String { return self._s[3781]! } + public var Login_InvalidFirstNameError: String { return self._s[3782]! } + public var Undo_ChatCleared: String { return self._s[3784]! } public func ApplyLanguage_ChangeLanguageUnofficialText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3785]!, self._r[3785]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3786]!, self._r[3786]!, [_1, _2]) } - public var Conversation_PinMessageAlertPin: String { return self._s[3786]! } + public var Conversation_PinMessageAlertPin: String { return self._s[3787]! } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3787]!, self._r[3787]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3788]!, self._r[3788]!, [_1, _2, _3, _4, _5]) } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3788]!, self._r[3788]!, [_1]) + return formatWithArgumentRanges(self._s[3789]!, self._r[3789]!, [_1]) } - public var Share_MultipleMessagesDisabled: String { return self._s[3789]! } - public var TwoStepAuth_EmailInvalid: String { return self._s[3790]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3792]! } - public var VoiceChat_InviteLink_Speaker: String { return self._s[3793]! } - public var CallSettings_RecentCalls: String { return self._s[3794]! } - public var GroupInfo_DeactivatedStatus: String { return self._s[3795]! } - public var AuthSessions_OtherSessions: String { return self._s[3796]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3797]! } - public var Tour_Text5: String { return self._s[3798]! } - public var Login_PadPhoneHelp: String { return self._s[3799]! } - public var Wallpaper_PhotoLibrary: String { return self._s[3802]! } - public var Conversation_ViewGroup: String { return self._s[3803]! } - public var PeopleNearby_MakeVisibleTitle: String { return self._s[3805]! } - public var VoiceOver_Chat_YourContact: String { return self._s[3806]! } - public var Watch_AuthRequired: String { return self._s[3807]! } - public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3809]! } - public var Conversation_ForwardContacts: String { return self._s[3810]! } - public var Conversation_InputTextPlaceholder: String { return self._s[3811]! } + public var Share_MultipleMessagesDisabled: String { return self._s[3790]! } + public var TwoStepAuth_EmailInvalid: String { return self._s[3791]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3793]! } + public var VoiceChat_InviteLink_Speaker: String { return self._s[3794]! } + public var CallSettings_RecentCalls: String { return self._s[3795]! } + public var GroupInfo_DeactivatedStatus: String { return self._s[3796]! } + public var AuthSessions_OtherSessions: String { return self._s[3797]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3798]! } + public var Tour_Text5: String { return self._s[3799]! } + public var Login_PadPhoneHelp: String { return self._s[3800]! } + public var Wallpaper_PhotoLibrary: String { return self._s[3803]! } + public var Conversation_ViewGroup: String { return self._s[3804]! } + public var PeopleNearby_MakeVisibleTitle: String { return self._s[3806]! } + public var VoiceOver_Chat_YourContact: String { return self._s[3807]! } + public var Watch_AuthRequired: String { return self._s[3808]! } + public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3810]! } + public var Conversation_ForwardContacts: String { return self._s[3811]! } + public var Conversation_InputTextPlaceholder: String { return self._s[3812]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3812]!, self._r[3812]!, [_1]) + return formatWithArgumentRanges(self._s[3813]!, self._r[3813]!, [_1]) } public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3813]!, self._r[3813]!, [_0]) + return formatWithArgumentRanges(self._s[3814]!, self._r[3814]!, [_0]) } - public var Channel_Setup_TypePrivate: String { return self._s[3814]! } + public var Channel_Setup_TypePrivate: String { return self._s[3815]! } public func Conversation_NoticeInvitedByInChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3815]!, self._r[3815]!, [_0]) + return formatWithArgumentRanges(self._s[3816]!, self._r[3816]!, [_0]) } - public var Checkout_OptionalTipItemPlaceholder: String { return self._s[3816]! } - public var InviteLink_Create_TimeLimitExpiryDate: String { return self._s[3817]! } - public var InfoPlist_NSSiriUsageDescription: String { return self._s[3818]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3819]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[3820]! } - public var UserInfo_StartSecretChatStart: String { return self._s[3821]! } + public var Checkout_OptionalTipItemPlaceholder: String { return self._s[3817]! } + public var InviteLink_Create_TimeLimitExpiryDate: String { return self._s[3818]! } + public var InfoPlist_NSSiriUsageDescription: String { return self._s[3819]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3820]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[3821]! } + public var UserInfo_StartSecretChatStart: String { return self._s[3822]! } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3822]!, self._r[3822]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3823]!, self._r[3823]!, [_1, _2]) } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3823]!, self._r[3823]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[3824]!, self._r[3824]!, [_0, _1, _2]) } public func Conversation_ForwardTooltip_TwoChats_Many(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3824]!, self._r[3824]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3825]!, self._r[3825]!, [_0, _1]) } - public var PrivacySettings_AutoArchiveTitle: String { return self._s[3825]! } - public var GroupInfo_InviteLink_LinkSection: String { return self._s[3826]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[3827]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[3829]! } - public var NewContact_Title: String { return self._s[3832]! } - public var Appearance_ThemeCarouselTintedNight: String { return self._s[3833]! } - public var VoiceChat_StatusSpeaking: String { return self._s[3834]! } - public var Notifications_PermissionsKeepDisabled: String { return self._s[3835]! } + public var PrivacySettings_AutoArchiveTitle: String { return self._s[3826]! } + public var GroupInfo_InviteLink_LinkSection: String { return self._s[3827]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[3828]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[3830]! } + public var NewContact_Title: String { return self._s[3833]! } + public var Appearance_ThemeCarouselTintedNight: String { return self._s[3834]! } + public var VoiceChat_StatusSpeaking: String { return self._s[3835]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[3836]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3836]!, self._r[3836]!, [_0]) + return formatWithArgumentRanges(self._s[3837]!, self._r[3837]!, [_0]) } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3837]!, self._r[3837]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3838]!, self._r[3838]!, [_0, _1]) } - public var Chat_SlowmodeTooltipPending: String { return self._s[3838]! } + public var Chat_SlowmodeTooltipPending: String { return self._s[3839]! } public func Time_MediumDate(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3840]!, self._r[3840]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3841]!, self._r[3841]!, [_1, _2]) } - public var ContactInfo_PhoneLabelHome: String { return self._s[3841]! } - public var CallFeedback_ReasonInterruption: String { return self._s[3842]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[3843]! } - public var Conversation_MessageEditedLabel: String { return self._s[3846]! } - public var CallList_ActiveVoiceChatsHeader: String { return self._s[3847]! } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3848]! } - public var ChatList_Context_AddToContacts: String { return self._s[3849]! } - public var Passport_Language_is: String { return self._s[3850]! } - public var Notification_PassportValueProofOfIdentity: String { return self._s[3851]! } - public var PhotoEditor_CurvesBlue: String { return self._s[3852]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[3842]! } + public var CallFeedback_ReasonInterruption: String { return self._s[3843]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[3844]! } + public var Conversation_MessageEditedLabel: String { return self._s[3847]! } + public var CallList_ActiveVoiceChatsHeader: String { return self._s[3848]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3849]! } + public var ChatList_Context_AddToContacts: String { return self._s[3850]! } + public var Passport_Language_is: String { return self._s[3851]! } + public var Notification_PassportValueProofOfIdentity: String { return self._s[3852]! } + public var PhotoEditor_CurvesBlue: String { return self._s[3853]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3853]!, self._r[3853]!, [_0]) + return formatWithArgumentRanges(self._s[3854]!, self._r[3854]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[3854]! } - public var Login_SmsRequestState3: String { return self._s[3855]! } - public var Message_PinnedVideoMessage: String { return self._s[3856]! } - public var SharedMedia_TitleLink: String { return self._s[3857]! } - public var Passport_FieldIdentity: String { return self._s[3858]! } - public var GroupInfo_Permissions_BroadcastConvert: String { return self._s[3860]! } + public var SocksProxySetup_Username: String { return self._s[3855]! } + public var Login_SmsRequestState3: String { return self._s[3856]! } + public var Message_PinnedVideoMessage: String { return self._s[3857]! } + public var SharedMedia_TitleLink: String { return self._s[3858]! } + public var Passport_FieldIdentity: String { return self._s[3859]! } + public var GroupInfo_Permissions_BroadcastConvert: String { return self._s[3861]! } public func Conversation_EncryptedPlaceholderTitleOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3863]!, self._r[3863]!, [_0]) + return formatWithArgumentRanges(self._s[3864]!, self._r[3864]!, [_0]) } - public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[3866]! } - public var ReportSpam_DeleteThisChat: String { return self._s[3867]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3868]! } - public var Passport_Identity_DateOfBirth: String { return self._s[3869]! } - public var Call_StatusIncoming: String { return self._s[3870]! } - public var ChatAdmins_AdminLabel: String { return self._s[3871]! } + public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[3867]! } + public var ReportSpam_DeleteThisChat: String { return self._s[3868]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3869]! } + public var Passport_Identity_DateOfBirth: String { return self._s[3870]! } + public var Call_StatusIncoming: String { return self._s[3871]! } + public var ChatAdmins_AdminLabel: String { return self._s[3872]! } public func InstantPage_OpenInBrowser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3872]!, self._r[3872]!, [_0]) + return formatWithArgumentRanges(self._s[3873]!, self._r[3873]!, [_0]) } public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3874]!, self._r[3874]!, [_0]) + return formatWithArgumentRanges(self._s[3875]!, self._r[3875]!, [_0]) } - public var Message_PinnedAnimationMessage: String { return self._s[3875]! } - public var VoiceChat_TapToViewCameraVideo: String { return self._s[3876]! } - public var Conversation_ReportSpamAndLeave: String { return self._s[3877]! } - public var Preview_CopyAddress: String { return self._s[3878]! } - public var MediaPlayer_UnknownTrack: String { return self._s[3880]! } - public var Login_CancelSignUpConfirmation: String { return self._s[3881]! } - public var Map_OpenInYandexMaps: String { return self._s[3883]! } + public var Message_PinnedAnimationMessage: String { return self._s[3876]! } + public var VoiceChat_TapToViewCameraVideo: String { return self._s[3877]! } + public var Conversation_ReportSpamAndLeave: String { return self._s[3878]! } + public var Preview_CopyAddress: String { return self._s[3879]! } + public var MediaPlayer_UnknownTrack: String { return self._s[3881]! } + public var Login_CancelSignUpConfirmation: String { return self._s[3882]! } + public var Map_OpenInYandexMaps: String { return self._s[3884]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3886]!, self._r[3886]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3887]!, self._r[3887]!, [_1, _2, _3]) } - public var GroupRemoved_Remove: String { return self._s[3887]! } - public var ChatListFolder_TitleCreate: String { return self._s[3888]! } + public var GroupRemoved_Remove: String { return self._s[3888]! } + public var ChatListFolder_TitleCreate: String { return self._s[3889]! } public func InstantPage_AuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3890]!, self._r[3890]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3891]!, self._r[3891]!, [_1, _2]) } - public var Watch_UserInfo_MuteTitle: String { return self._s[3891]! } + public var Watch_UserInfo_MuteTitle: String { return self._s[3892]! } public func UserInfo_LinkForwardTooltip_TwoChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3893]!, self._r[3893]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3894]!, self._r[3894]!, [_0, _1]) } - public var Group_UpgradeNoticeText2: String { return self._s[3894]! } - public var Stats_GroupGrowthTitle: String { return self._s[3895]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3898]! } - public var Month_GenOctober: String { return self._s[3899]! } - public var Conversation_TitleCommentsEmpty: String { return self._s[3900]! } - public var Settings_Appearance: String { return self._s[3901]! } + public var Group_UpgradeNoticeText2: String { return self._s[3895]! } + public var Stats_GroupGrowthTitle: String { return self._s[3896]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3899]! } + public var Month_GenOctober: String { return self._s[3900]! } + public var Conversation_TitleCommentsEmpty: String { return self._s[3901]! } + public var Settings_Appearance: String { return self._s[3902]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3902]!, self._r[3902]!, [_0]) + return formatWithArgumentRanges(self._s[3903]!, self._r[3903]!, [_0]) } - public var UserInfo_AddToExisting: String { return self._s[3903]! } - public var Call_PhoneCallInProgressMessage: String { return self._s[3905]! } - public var Map_HomeAndWorkInfo: String { return self._s[3906]! } - public var InstantPage_VoiceOver_ResetFontSize: String { return self._s[3907]! } - public var Paint_Arrow: String { return self._s[3908]! } - public var InviteLink_CreatePrivateLinkHelp: String { return self._s[3909]! } + public var UserInfo_AddToExisting: String { return self._s[3904]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[3906]! } + public var Map_HomeAndWorkInfo: String { return self._s[3907]! } + public var InstantPage_VoiceOver_ResetFontSize: String { return self._s[3908]! } + public var Paint_Arrow: String { return self._s[3909]! } + public var InviteLink_CreatePrivateLinkHelp: String { return self._s[3910]! } public func DialogList_MultipleTypingPair(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3910]!, self._r[3910]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3911]!, self._r[3911]!, [_0, _1]) } - public var CancelResetAccount_Title: String { return self._s[3911]! } - public var NotificationsSound_Circles: String { return self._s[3912]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3913]! } - public var ChatState_Connecting: String { return self._s[3915]! } - public var Profile_MessageLifetime5s: String { return self._s[3916]! } + public var CancelResetAccount_Title: String { return self._s[3912]! } + public var NotificationsSound_Circles: String { return self._s[3913]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3914]! } + public var ChatState_Connecting: String { return self._s[3916]! } + public var Profile_MessageLifetime5s: String { return self._s[3917]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3917]!, self._r[3917]!, [_0]) + return formatWithArgumentRanges(self._s[3918]!, self._r[3918]!, [_0]) } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3918]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3919]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3920]! } - public var Conversation_DefaultRestrictedStickers: String { return self._s[3922]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[3923]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3919]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3920]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3921]! } + public var Conversation_DefaultRestrictedStickers: String { return self._s[3923]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[3924]! } public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3924]!, self._r[3924]!, [_0]) + return formatWithArgumentRanges(self._s[3925]!, self._r[3925]!, [_0]) } - public var Passport_Phone_Help: String { return self._s[3925]! } - public var Privacy_ContactsSync: String { return self._s[3926]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3927]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3929]! } - public var Map_SendMyCurrentLocation: String { return self._s[3930]! } - public var Map_AddressOnMap: String { return self._s[3931]! } - public var BroadcastGroups_ConfirmationAlert_Convert: String { return self._s[3933]! } - public var DialogList_SearchLabel: String { return self._s[3934]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3935]! } - public var GroupInfo_FakeGroupWarning: String { return self._s[3936]! } - public var Conversation_ChecksTooltip_Read: String { return self._s[3938]! } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3940]! } - public var ChatList_Search_ShowMore: String { return self._s[3941]! } - public var DialogList_EncryptionRejected: String { return self._s[3942]! } - public var VoiceChat_InviteLinkCopiedText: String { return self._s[3943]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[3944]! } - public var VoiceChat_StartRecordingText: String { return self._s[3945]! } - public var Privacy_TopPeersDelete: String { return self._s[3946]! } - public var AttachmentMenu_SendAsFile: String { return self._s[3948]! } - public var ChatList_GenericPsaAlert: String { return self._s[3950]! } - public var SecretTimer_ImageDescription: String { return self._s[3952]! } + public var Passport_Phone_Help: String { return self._s[3926]! } + public var Privacy_ContactsSync: String { return self._s[3927]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3928]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3930]! } + public var Map_SendMyCurrentLocation: String { return self._s[3931]! } + public var Map_AddressOnMap: String { return self._s[3932]! } + public var BroadcastGroups_ConfirmationAlert_Convert: String { return self._s[3934]! } + public var DialogList_SearchLabel: String { return self._s[3935]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3936]! } + public var GroupInfo_FakeGroupWarning: String { return self._s[3937]! } + public var Conversation_ChecksTooltip_Read: String { return self._s[3939]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3941]! } + public var ChatList_Search_ShowMore: String { return self._s[3942]! } + public var DialogList_EncryptionRejected: String { return self._s[3943]! } + public var VoiceChat_InviteLinkCopiedText: String { return self._s[3944]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[3945]! } + public var VoiceChat_StartRecordingText: String { return self._s[3946]! } + public var Privacy_TopPeersDelete: String { return self._s[3947]! } + public var AttachmentMenu_SendAsFile: String { return self._s[3949]! } + public var ChatList_GenericPsaAlert: String { return self._s[3951]! } + public var SecretTimer_ImageDescription: String { return self._s[3953]! } public func Conversation_SetReminder_RemindOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3953]!, self._r[3953]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_0, _1]) } - public var VoiceChat_EditNameSuccess: String { return self._s[3954]! } - public var ChatSettings_TextSizeUnits: String { return self._s[3955]! } - public var Notification_RenamedGroup: String { return self._s[3957]! } - public var Tour_Title2: String { return self._s[3958]! } - public var Settings_CopyUsername: String { return self._s[3959]! } - public var Compose_NewEncryptedChat: String { return self._s[3960]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[3961]! } - public var VoiceChat_SetReminder: String { return self._s[3962]! } - public var Month_ShortSeptember: String { return self._s[3963]! } - public var AutoDownloadSettings_OnForAll: String { return self._s[3964]! } - public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3965]! } - public var VoiceChat_StartNow: String { return self._s[3966]! } - public var Call_StatusConnecting: String { return self._s[3968]! } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3969]! } - public var Map_ShareLiveLocationHelp: String { return self._s[3970]! } - public var Cache_Files: String { return self._s[3971]! } - public var Notifications_Reset: String { return self._s[3972]! } + public var VoiceChat_EditNameSuccess: String { return self._s[3955]! } + public var ChatSettings_TextSizeUnits: String { return self._s[3956]! } + public var Notification_RenamedGroup: String { return self._s[3958]! } + public var Tour_Title2: String { return self._s[3959]! } + public var Settings_CopyUsername: String { return self._s[3960]! } + public var Compose_NewEncryptedChat: String { return self._s[3961]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[3962]! } + public var VoiceChat_SetReminder: String { return self._s[3963]! } + public var Month_ShortSeptember: String { return self._s[3964]! } + public var AutoDownloadSettings_OnForAll: String { return self._s[3965]! } + public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3966]! } + public var VoiceChat_StartNow: String { return self._s[3967]! } + public var Call_StatusConnecting: String { return self._s[3969]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3970]! } + public var Map_ShareLiveLocationHelp: String { return self._s[3971]! } + public var Cache_Files: String { return self._s[3972]! } + public var Notifications_Reset: String { return self._s[3973]! } public func Settings_KeepPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3973]!, self._r[3973]!, [_0]) + return formatWithArgumentRanges(self._s[3974]!, self._r[3974]!, [_0]) } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3974]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3975]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3975]!, self._r[3975]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3976]!, self._r[3976]!, [_1, _2]) } - public var Notification_CallIncomingShort: String { return self._s[3976]! } - public var UserInfo_BotPrivacy: String { return self._s[3979]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[3980]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[3981]! } - public var Conversation_ContextMenuLookUp: String { return self._s[3983]! } - public var Calls_RatingTitle: String { return self._s[3984]! } - public var SecretImage_Title: String { return self._s[3985]! } - public var Weekday_Monday: String { return self._s[3986]! } + public var Notification_CallIncomingShort: String { return self._s[3977]! } + public var UserInfo_BotPrivacy: String { return self._s[3980]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[3981]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[3982]! } + public var Conversation_ContextMenuLookUp: String { return self._s[3984]! } + public var Calls_RatingTitle: String { return self._s[3985]! } + public var SecretImage_Title: String { return self._s[3986]! } + public var Weekday_Monday: String { return self._s[3987]! } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3987]!, self._r[3987]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3988]!, self._r[3988]!, [_1, _2]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3988]! } - public var VoiceChat_InviteLink_CopySpeakerLink: String { return self._s[3989]! } - public var Invitation_JoinVoiceChatAsListener: String { return self._s[3990]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3989]! } + public var VoiceChat_InviteLink_CopySpeakerLink: String { return self._s[3990]! } + public var Invitation_JoinVoiceChatAsListener: String { return self._s[3991]! } public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3991]!, self._r[3991]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3992]!, self._r[3992]!, [_1, _2]) } - public var Stats_GroupMembers: String { return self._s[3992]! } - public var Camera_Retake: String { return self._s[3993]! } - public var Conversation_SearchPlaceholder: String { return self._s[3995]! } + public var Stats_GroupMembers: String { return self._s[3993]! } + public var Camera_Retake: String { return self._s[3994]! } + public var Conversation_SearchPlaceholder: String { return self._s[3996]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3996]!, self._r[3996]!, [_0]) + return formatWithArgumentRanges(self._s[3997]!, self._r[3997]!, [_0]) } - public var Channel_DiscussionGroup_Info: String { return self._s[3997]! } - public var SocksProxySetup_Hostname: String { return self._s[3998]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3999]! } - public var Privacy_DeleteDrafts: String { return self._s[4001]! } - public var Login_CancelPhoneVerification: String { return self._s[4003]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[4004]! } - public var VoiceOver_Chat_Profile: String { return self._s[4005]! } + public var Channel_DiscussionGroup_Info: String { return self._s[3998]! } + public var SocksProxySetup_Hostname: String { return self._s[3999]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[4000]! } + public var Privacy_DeleteDrafts: String { return self._s[4002]! } + public var Login_CancelPhoneVerification: String { return self._s[4004]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[4005]! } + public var VoiceOver_Chat_Profile: String { return self._s[4006]! } public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4006]!, self._r[4006]!, [_0]) + return formatWithArgumentRanges(self._s[4007]!, self._r[4007]!, [_0]) } - public var TwoStepAuth_EmailSent: String { return self._s[4007]! } - public var Cache_Indexing: String { return self._s[4008]! } - public var Notifications_ExceptionsNone: String { return self._s[4009]! } - public var MessagePoll_LabelQuiz: String { return self._s[4010]! } - public var Call_EncryptionKey_Title: String { return self._s[4011]! } - public var Common_Yes: String { return self._s[4012]! } - public var Channel_ErrorAddBlocked: String { return self._s[4013]! } - public var Month_GenJanuary: String { return self._s[4014]! } - public var Checkout_NewCard_Title: String { return self._s[4015]! } + public var TwoStepAuth_EmailSent: String { return self._s[4008]! } + public var Cache_Indexing: String { return self._s[4009]! } + public var Notifications_ExceptionsNone: String { return self._s[4010]! } + public var MessagePoll_LabelQuiz: String { return self._s[4011]! } + public var Call_EncryptionKey_Title: String { return self._s[4012]! } + public var Common_Yes: String { return self._s[4013]! } + public var Channel_ErrorAddBlocked: String { return self._s[4014]! } + public var Month_GenJanuary: String { return self._s[4015]! } + public var Checkout_NewCard_Title: String { return self._s[4016]! } public func TwoStepAuth_EnterPasswordHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4016]!, self._r[4016]!, [_0]) + return formatWithArgumentRanges(self._s[4017]!, self._r[4017]!, [_0]) } - public var Conversation_InputTextPlaceholderReply: String { return self._s[4018]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[4019]! } - public var Conversation_SendDice: String { return self._s[4020]! } + public var Conversation_InputTextPlaceholderReply: String { return self._s[4019]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[4020]! } + public var Conversation_SendDice: String { return self._s[4021]! } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4021]!, self._r[4021]!, [_0]) - } - public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4022]!, self._r[4022]!, [_0]) } - public var Weekday_Wednesday: String { return self._s[4023]! } - public var ReportPeer_ReasonOther_Send: String { return self._s[4024]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[4025]! } - public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[4026]! } - public var OldChannels_NoticeTitle: String { return self._s[4027]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[4028]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[4029]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[4030]! } - public var Passport_Address_AddUtilityBill: String { return self._s[4031]! } + public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4023]!, self._r[4023]!, [_0]) + } + public var Weekday_Wednesday: String { return self._s[4024]! } + public var ReportPeer_ReasonOther_Send: String { return self._s[4025]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[4026]! } + public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[4027]! } + public var OldChannels_NoticeTitle: String { return self._s[4028]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[4029]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[4030]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[4031]! } + public var Passport_Address_AddUtilityBill: String { return self._s[4032]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4033]!, self._r[4033]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4034]!, self._r[4034]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[4035]! } - public var Stats_GroupTopAdminsTitle: String { return self._s[4036]! } - public var Paint_Regular: String { return self._s[4038]! } - public var Message_Contact: String { return self._s[4039]! } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[4040]! } - public var VoiceOver_Chat_YourPhoto: String { return self._s[4041]! } - public var Notification_Mute1hMin: String { return self._s[4042]! } + public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[4036]! } + public var Stats_GroupTopAdminsTitle: String { return self._s[4037]! } + public var Paint_Regular: String { return self._s[4039]! } + public var Message_Contact: String { return self._s[4040]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[4041]! } + public var VoiceOver_Chat_YourPhoto: String { return self._s[4042]! } + public var Notification_Mute1hMin: String { return self._s[4043]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4043]!, self._r[4043]!, [_0]) + return formatWithArgumentRanges(self._s[4044]!, self._r[4044]!, [_0]) } - public var Profile_MessageLifetime1h: String { return self._s[4044]! } - public var TwoStepAuth_GenericHelp: String { return self._s[4045]! } - public var TextFormat_Monospace: String { return self._s[4046]! } - public var VoiceOver_Media_PlaybackRateChange: String { return self._s[4048]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[4049]! } - public var ChatList_DeleteChat: String { return self._s[4050]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[4053]! } + public var Profile_MessageLifetime1h: String { return self._s[4045]! } + public var TwoStepAuth_GenericHelp: String { return self._s[4046]! } + public var TextFormat_Monospace: String { return self._s[4047]! } + public var VoiceOver_Media_PlaybackRateChange: String { return self._s[4049]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[4050]! } + public var ChatList_DeleteChat: String { return self._s[4051]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[4054]! } public func Settings_ApplyProxyAlertCredentials(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4054]!, self._r[4054]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[4055]!, self._r[4055]!, [_1, _2, _3, _4]) } - public var Login_CancelPhoneVerificationStop: String { return self._s[4055]! } - public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[4056]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[4057]! } + public var Login_CancelPhoneVerificationStop: String { return self._s[4056]! } + public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[4057]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[4058]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4058]!, self._r[4058]!, [_0]) + return formatWithArgumentRanges(self._s[4059]!, self._r[4059]!, [_0]) } - public var Notifications_Badge_IncludeChannels: String { return self._s[4059]! } - public var InviteLink_CreatePrivateLinkHelpChannel: String { return self._s[4060]! } - public var StickerPack_ViewPack: String { return self._s[4063]! } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[4065]! } - public var EditTheme_Expand_Preview_IncomingText: String { return self._s[4066]! } - public var Notifications_Title: String { return self._s[4067]! } - public var Conversation_InputTextPlaceholderComment: String { return self._s[4068]! } - public var GroupInfo_PublicLink: String { return self._s[4069]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[4060]! } + public var InviteLink_CreatePrivateLinkHelpChannel: String { return self._s[4061]! } + public var StickerPack_ViewPack: String { return self._s[4064]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[4066]! } + public var EditTheme_Expand_Preview_IncomingText: String { return self._s[4067]! } + public var Notifications_Title: String { return self._s[4068]! } + public var Conversation_InputTextPlaceholderComment: String { return self._s[4069]! } + public var GroupInfo_PublicLink: String { return self._s[4070]! } public func ScheduleVoiceChat_GroupText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4070]!, self._r[4070]!, [_0]) + return formatWithArgumentRanges(self._s[4071]!, self._r[4071]!, [_0]) } - public var VoiceOver_DiscardPreparedContent: String { return self._s[4071]! } - public var Conversation_Moderate_Ban: String { return self._s[4075]! } - public var InviteLink_Manage: String { return self._s[4076]! } - public var InstantPage_FontNewYork: String { return self._s[4077]! } + public var VoiceOver_DiscardPreparedContent: String { return self._s[4072]! } + public var Conversation_Moderate_Ban: String { return self._s[4076]! } + public var InviteLink_Manage: String { return self._s[4077]! } + public var InstantPage_FontNewYork: String { return self._s[4078]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4078]!, self._r[4078]!, [_0]) + return formatWithArgumentRanges(self._s[4079]!, self._r[4079]!, [_0]) } - public var TextFormat_Underline: String { return self._s[4079]! } + public var TextFormat_Underline: String { return self._s[4080]! } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4080]!, self._r[4080]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4081]!, self._r[4081]!, [_0, _1]) } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4081]!, self._r[4081]!, [_1]) + return formatWithArgumentRanges(self._s[4082]!, self._r[4082]!, [_1]) } - public var PollResults_Collapse: String { return self._s[4083]! } - public var Contacts_GlobalSearch: String { return self._s[4084]! } + public var PollResults_Collapse: String { return self._s[4084]! } + public var Contacts_GlobalSearch: String { return self._s[4085]! } public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4086]!, self._r[4086]!, [_0]) + return formatWithArgumentRanges(self._s[4087]!, self._r[4087]!, [_0]) } - public var Channel_Management_LabelEditor: String { return self._s[4087]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[4089]! } - public var Conversation_Theme: String { return self._s[4090]! } + public var Channel_Management_LabelEditor: String { return self._s[4088]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[4090]! } + public var Conversation_Theme: String { return self._s[4091]! } public func PUSH_CHANNEL_MESSAGE_DOCS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4091]!, self._r[4091]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4092]!, self._r[4092]!, [_1, "\(_2)"]) } - public var Conversation_LinkDialogSave: String { return self._s[4092]! } - public var EnterPasscode_TouchId: String { return self._s[4093]! } - public var Conversation_VoiceChatMediaRecordingRestricted: String { return self._s[4094]! } - public var Group_ErrorAdminsTooMuch: String { return self._s[4095]! } - public var Stats_MessageOverview: String { return self._s[4096]! } - public var Privacy_Calls_P2PAlways: String { return self._s[4098]! } - public var Message_Sticker: String { return self._s[4099]! } - public var Conversation_Mute: String { return self._s[4102]! } - public var VoiceChat_AnonymousDisabledAlertText: String { return self._s[4103]! } - public var ContactInfo_Title: String { return self._s[4104]! } + public var Conversation_LinkDialogSave: String { return self._s[4093]! } + public var EnterPasscode_TouchId: String { return self._s[4094]! } + public var Conversation_VoiceChatMediaRecordingRestricted: String { return self._s[4095]! } + public var Group_ErrorAdminsTooMuch: String { return self._s[4096]! } + public var Stats_MessageOverview: String { return self._s[4097]! } + public var Privacy_Calls_P2PAlways: String { return self._s[4099]! } + public var Message_Sticker: String { return self._s[4100]! } + public var Conversation_Mute: String { return self._s[4103]! } + public var VoiceChat_AnonymousDisabledAlertText: String { return self._s[4104]! } + public var ContactInfo_Title: String { return self._s[4105]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4105]!, self._r[4105]!, [_1]) + return formatWithArgumentRanges(self._s[4106]!, self._r[4106]!, [_1]) } - public var Channel_Setup_TypeHeader: String { return self._s[4106]! } - public var AuthSessions_LogOut: String { return self._s[4107]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[4108]! } - public var VoiceChat_PinVideo: String { return self._s[4109]! } - public var Group_Info_Members: String { return self._s[4111]! } - public var ChatListFolderSettings_NewFolder: String { return self._s[4112]! } - public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[4113]! } - public var CreatePoll_Title: String { return self._s[4114]! } - public var EditTheme_EditTitle: String { return self._s[4115]! } - public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[4116]! } - public var TwoStepAuth_SetPassword: String { return self._s[4117]! } + public var Channel_Setup_TypeHeader: String { return self._s[4107]! } + public var AuthSessions_LogOut: String { return self._s[4108]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[4109]! } + public var VoiceChat_PinVideo: String { return self._s[4110]! } + public var Group_Info_Members: String { return self._s[4112]! } + public var ChatListFolderSettings_NewFolder: String { return self._s[4113]! } + public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[4114]! } + public var CreatePoll_Title: String { return self._s[4115]! } + public var EditTheme_EditTitle: String { return self._s[4116]! } + public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[4117]! } + public var TwoStepAuth_SetPassword: String { return self._s[4118]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4118]!, self._r[4118]!, [_0]) + return formatWithArgumentRanges(self._s[4119]!, self._r[4119]!, [_0]) } - public var BlockedUsers_Info: String { return self._s[4119]! } - public var AuthSessions_Sessions: String { return self._s[4120]! } - public var Group_EditAdmin_RankTitle: String { return self._s[4121]! } - public var Common_ActionNotAllowedError: String { return self._s[4122]! } - public var WebPreview_GettingLinkInfo: String { return self._s[4123]! } - public var Appearance_AppIconFilledX: String { return self._s[4124]! } - public var Passport_Email_EmailPlaceholder: String { return self._s[4125]! } - public var FeaturedStickers_OtherSection: String { return self._s[4126]! } - public var VoiceChat_RecordingStarted: String { return self._s[4127]! } - public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[4128]! } - public var Profile_Username: String { return self._s[4129]! } - public var Settings_TipsUsername: String { return self._s[4130]! } - public var Appearance_RemoveTheme: String { return self._s[4131]! } - public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[4132]! } - public var Message_PinnedStickerMessage: String { return self._s[4133]! } - public var AccessDenied_VideoMicrophone: String { return self._s[4134]! } - public var WallpaperPreview_CustomColorBottomText: String { return self._s[4135]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[4136]! } - public var Conversation_VoiceChat: String { return self._s[4137]! } - public var VoiceChat_EditBioSuccess: String { return self._s[4138]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[4139]! } - public var TwoStepAuth_Title: String { return self._s[4140]! } - public var VoiceOver_Chat_YourAnimatedSticker: String { return self._s[4141]! } - public var Checkout_WebConfirmation_Title: String { return self._s[4142]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[4143]! } - public var ChatListFolder_CategoryGroups: String { return self._s[4145]! } - public var Stats_GroupTopInviter_Promote: String { return self._s[4146]! } - public var Conversation_EditingPhotoPanelTitle: String { return self._s[4147]! } - public var Month_GenJuly: String { return self._s[4148]! } - public var Passport_Identity_Gender: String { return self._s[4149]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[4150]! } - public var Notification_Exceptions_DeleteAll: String { return self._s[4151]! } - public var VoiceChat_StopRecording: String { return self._s[4152]! } + public var BlockedUsers_Info: String { return self._s[4120]! } + public var AuthSessions_Sessions: String { return self._s[4121]! } + public var Group_EditAdmin_RankTitle: String { return self._s[4122]! } + public var Common_ActionNotAllowedError: String { return self._s[4123]! } + public var WebPreview_GettingLinkInfo: String { return self._s[4124]! } + public var Appearance_AppIconFilledX: String { return self._s[4125]! } + public var Passport_Email_EmailPlaceholder: String { return self._s[4126]! } + public var FeaturedStickers_OtherSection: String { return self._s[4127]! } + public var VoiceChat_RecordingStarted: String { return self._s[4128]! } + public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[4129]! } + public var Profile_Username: String { return self._s[4130]! } + public var Settings_TipsUsername: String { return self._s[4131]! } + public var Appearance_RemoveTheme: String { return self._s[4132]! } + public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[4133]! } + public var Message_PinnedStickerMessage: String { return self._s[4134]! } + public var AccessDenied_VideoMicrophone: String { return self._s[4135]! } + public var WallpaperPreview_CustomColorBottomText: String { return self._s[4136]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[4137]! } + public var Conversation_VoiceChat: String { return self._s[4138]! } + public var VoiceChat_EditBioSuccess: String { return self._s[4139]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[4140]! } + public var TwoStepAuth_Title: String { return self._s[4141]! } + public var VoiceOver_Chat_YourAnimatedSticker: String { return self._s[4142]! } + public var Checkout_WebConfirmation_Title: String { return self._s[4143]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[4144]! } + public var ChatListFolder_CategoryGroups: String { return self._s[4146]! } + public var Stats_GroupTopInviter_Promote: String { return self._s[4147]! } + public var Conversation_EditingPhotoPanelTitle: String { return self._s[4148]! } + public var Month_GenJuly: String { return self._s[4149]! } + public var Passport_Identity_Gender: String { return self._s[4150]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[4151]! } + public var Notification_Exceptions_DeleteAll: String { return self._s[4152]! } + public var VoiceChat_StopRecording: String { return self._s[4153]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4153]!, self._r[4153]!, [_0]) + return formatWithArgumentRanges(self._s[4154]!, self._r[4154]!, [_0]) } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4154]!, self._r[4154]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[4155]!, self._r[4155]!, [_0, _1, _2]) } - public var Login_CodeSentSms: String { return self._s[4155]! } + public var Login_CodeSentSms: String { return self._s[4156]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4156]!, self._r[4156]!, [_0]) + return formatWithArgumentRanges(self._s[4157]!, self._r[4157]!, [_0]) } - public var Login_CallRequestState2: String { return self._s[4157]! } - public var Channel_DiscussionGroup_Header: String { return self._s[4158]! } + public var Login_CallRequestState2: String { return self._s[4158]! } + public var Channel_DiscussionGroup_Header: String { return self._s[4159]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4159]!, self._r[4159]!, [_0]) + return formatWithArgumentRanges(self._s[4160]!, self._r[4160]!, [_0]) } - public var Passport_Language_ms: String { return self._s[4160]! } - public var PeopleNearby_MakeInvisible: String { return self._s[4162]! } - public var ChatList_Search_FilterVoice: String { return self._s[4164]! } - public var Camera_TapAndHoldForVideo: String { return self._s[4166]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[4167]! } + public var Passport_Language_ms: String { return self._s[4161]! } + public var PeopleNearby_MakeInvisible: String { return self._s[4163]! } + public var ChatList_Search_FilterVoice: String { return self._s[4165]! } + public var Camera_TapAndHoldForVideo: String { return self._s[4167]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[4168]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4168]!, self._r[4168]!, [_0]) + return formatWithArgumentRanges(self._s[4169]!, self._r[4169]!, [_0]) } public func Call_VoiceChatInProgressMessageCall(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4169]!, self._r[4169]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4170]!, self._r[4170]!, [_1, _2]) } - public var Map_Locating: String { return self._s[4170]! } + public var Map_Locating: String { return self._s[4171]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4172]!, self._r[4172]!, [_0]) + return formatWithArgumentRanges(self._s[4173]!, self._r[4173]!, [_0]) } - public var Passport_Identity_TypeInternalPassport: String { return self._s[4174]! } - public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[4175]! } - public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[4176]! } - public var Stickers_Installed: String { return self._s[4177]! } - public var Notifications_PermissionsAllowInSettings: String { return self._s[4178]! } - public var StickerPackActionInfo_RemovedTitle: String { return self._s[4179]! } - public var CallSettings_Never: String { return self._s[4181]! } - public var Channel_Setup_TypePublicHelp: String { return self._s[4182]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[4175]! } + public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[4176]! } + public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[4177]! } + public var Stickers_Installed: String { return self._s[4178]! } + public var Notifications_PermissionsAllowInSettings: String { return self._s[4179]! } + public var StickerPackActionInfo_RemovedTitle: String { return self._s[4180]! } + public var CallSettings_Never: String { return self._s[4182]! } + public var Channel_Setup_TypePublicHelp: String { return self._s[4183]! } public func ChatList_DeleteForEveryone(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4184]!, self._r[4184]!, [_0]) + return formatWithArgumentRanges(self._s[4185]!, self._r[4185]!, [_0]) } - public var Message_Game: String { return self._s[4185]! } - public var Call_Message: String { return self._s[4186]! } + public var Message_Game: String { return self._s[4186]! } + public var Call_Message: String { return self._s[4187]! } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4187]!, self._r[4187]!, [_1]) + return formatWithArgumentRanges(self._s[4188]!, self._r[4188]!, [_1]) } - public var ChannelIntro_Text: String { return self._s[4188]! } - public var StickerPack_Send: String { return self._s[4189]! } - public var Share_AuthDescription: String { return self._s[4190]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[4191]! } - public var CallFeedback_WhatWentWrong: String { return self._s[4192]! } - public var Common_Create: String { return self._s[4195]! } - public var Passport_Language_hy: String { return self._s[4196]! } - public var CreatePoll_Explanation: String { return self._s[4197]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[4198]! } - public var ChatImport_CreateGroupAlertImportAction: String { return self._s[4199]! } - public var PeerInfo_ButtonVoiceChat: String { return self._s[4200]! } - public var Undo_ChatClearedForBothSides: String { return self._s[4201]! } - public var DialogList_NoMessagesTitle: String { return self._s[4202]! } - public var GroupInfo_Title: String { return self._s[4204]! } + public var ChannelIntro_Text: String { return self._s[4189]! } + public var StickerPack_Send: String { return self._s[4190]! } + public var Share_AuthDescription: String { return self._s[4191]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[4192]! } + public var CallFeedback_WhatWentWrong: String { return self._s[4193]! } + public var Common_Create: String { return self._s[4196]! } + public var Passport_Language_hy: String { return self._s[4197]! } + public var CreatePoll_Explanation: String { return self._s[4198]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[4199]! } + public var ChatImport_CreateGroupAlertImportAction: String { return self._s[4200]! } + public var PeerInfo_ButtonVoiceChat: String { return self._s[4201]! } + public var Undo_ChatClearedForBothSides: String { return self._s[4202]! } + public var DialogList_NoMessagesTitle: String { return self._s[4203]! } + public var GroupInfo_Title: String { return self._s[4205]! } public func ScheduleVoiceChat_ScheduleToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4205]!, self._r[4205]!, [_0]) + return formatWithArgumentRanges(self._s[4206]!, self._r[4206]!, [_0]) } - public var UserInfo_ContactForwardTooltip_SavedMessages_One: String { return self._s[4206]! } - public var Channel_AdminLog_CanBanUsers: String { return self._s[4207]! } - public var PhoneNumberHelp_Help: String { return self._s[4208]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[4209]! } - public var Settings_Logout: String { return self._s[4210]! } - public var Privacy_PaymentsTitle: String { return self._s[4211]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[4212]! } - public var Tour_Text6: String { return self._s[4213]! } - public var ChatImportActivity_Title: String { return self._s[4215]! } - public var Channel_Username_Help: String { return self._s[4216]! } - public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[4217]! } - public var AttachmentMenu_Poll: String { return self._s[4218]! } - public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[4219]! } - public var Conversation_ReportSpamChannelConfirmation: String { return self._s[4220]! } - public var Passport_DeletePassport: String { return self._s[4221]! } - public var Login_Code: String { return self._s[4222]! } - public var Notification_SecretChatScreenshot: String { return self._s[4223]! } - public var VoiceChat_AddBio: String { return self._s[4224]! } - public var Login_CodeFloodError: String { return self._s[4225]! } + public var UserInfo_ContactForwardTooltip_SavedMessages_One: String { return self._s[4207]! } + public var Channel_AdminLog_CanBanUsers: String { return self._s[4208]! } + public var PhoneNumberHelp_Help: String { return self._s[4209]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[4210]! } + public var Settings_Logout: String { return self._s[4211]! } + public var Privacy_PaymentsTitle: String { return self._s[4212]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[4213]! } + public var Tour_Text6: String { return self._s[4214]! } + public var ChatImportActivity_Title: String { return self._s[4216]! } + public var Channel_Username_Help: String { return self._s[4217]! } + public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[4218]! } + public var AttachmentMenu_Poll: String { return self._s[4219]! } + public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[4220]! } + public var Conversation_ReportSpamChannelConfirmation: String { return self._s[4221]! } + public var Passport_DeletePassport: String { return self._s[4222]! } + public var Login_Code: String { return self._s[4223]! } + public var Notification_SecretChatScreenshot: String { return self._s[4224]! } + public var VoiceChat_AddBio: String { return self._s[4225]! } + public var Login_CodeFloodError: String { return self._s[4226]! } public func Notification_PinnedAnimationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4226]!, self._r[4226]!, [_0]) - } - public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4227]!, self._r[4227]!, [_0]) } - public var Watch_Stickers_Recents: String { return self._s[4228]! } - public var Generic_ErrorMoreInfo: String { return self._s[4229]! } + public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4228]!, self._r[4228]!, [_0]) + } + public var Watch_Stickers_Recents: String { return self._s[4229]! } + public var Generic_ErrorMoreInfo: String { return self._s[4230]! } public func Call_AccountIsLoggedOnCurrentDevice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4230]!, self._r[4230]!, [_0]) + return formatWithArgumentRanges(self._s[4231]!, self._r[4231]!, [_0]) } - public var AutoDownloadSettings_DataUsage: String { return self._s[4231]! } - public var Conversation_ViewTheme: String { return self._s[4232]! } - public var Contacts_InviteSearchLabel: String { return self._s[4233]! } - public var Settings_CancelUpload: String { return self._s[4235]! } - public var Settings_AppLanguage_Unofficial: String { return self._s[4236]! } + public var AutoDownloadSettings_DataUsage: String { return self._s[4232]! } + public var Conversation_ViewTheme: String { return self._s[4233]! } + public var Contacts_InviteSearchLabel: String { return self._s[4234]! } + public var Settings_CancelUpload: String { return self._s[4236]! } + public var Settings_AppLanguage_Unofficial: String { return self._s[4237]! } public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4237]!, self._r[4237]!, [_0]) + return formatWithArgumentRanges(self._s[4238]!, self._r[4238]!, [_0]) } - public var ChatList_AddFolder: String { return self._s[4238]! } - public var Conversation_Location: String { return self._s[4240]! } - public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[4241]! } - public var DialogList_AdLabel: String { return self._s[4242]! } + public var ChatList_AddFolder: String { return self._s[4239]! } + public var Conversation_Location: String { return self._s[4241]! } + public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[4242]! } + public var DialogList_AdLabel: String { return self._s[4243]! } public func Time_TomorrowAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4244]!, self._r[4244]!, [_0]) + return formatWithArgumentRanges(self._s[4245]!, self._r[4245]!, [_0]) } - public var Message_InvoiceLabel: String { return self._s[4245]! } - public var Channel_TooMuchBots: String { return self._s[4246]! } + public var Message_InvoiceLabel: String { return self._s[4246]! } + public var Channel_TooMuchBots: String { return self._s[4247]! } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4248]!, self._r[4248]!, [_0]) + return formatWithArgumentRanges(self._s[4249]!, self._r[4249]!, [_0]) } - public var Call_IncomingVideoCall: String { return self._s[4249]! } - public var Conversation_LiveLocation: String { return self._s[4250]! } - public var VoiceChat_AskedToSpeakHelp: String { return self._s[4251]! } - public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[4252]! } - public var Passport_Identity_EditPassport: String { return self._s[4253]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[4255]! } - public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[4256]! } - public var GroupInfo_Permissions_AddException: String { return self._s[4257]! } + public var Call_IncomingVideoCall: String { return self._s[4250]! } + public var Conversation_LiveLocation: String { return self._s[4251]! } + public var VoiceChat_AskedToSpeakHelp: String { return self._s[4252]! } + public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[4253]! } + public var Passport_Identity_EditPassport: String { return self._s[4254]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[4256]! } + public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[4257]! } + public var GroupInfo_Permissions_AddException: String { return self._s[4258]! } public func VoiceChat_RemovePeerConfirmationChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4259]!, self._r[4259]!, [_0]) + return formatWithArgumentRanges(self._s[4260]!, self._r[4260]!, [_0]) } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[4260]! } - public var Channel_MessageVideoUpdated: String { return self._s[4261]! } - public var GroupInfo_Permissions_EditingDisabled: String { return self._s[4262]! } - public var AutoremoveSetup_TimeSectionHeader: String { return self._s[4265]! } - public var AccessDenied_Camera: String { return self._s[4266]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[4261]! } + public var Channel_MessageVideoUpdated: String { return self._s[4262]! } + public var GroupInfo_Permissions_EditingDisabled: String { return self._s[4263]! } + public var AutoremoveSetup_TimeSectionHeader: String { return self._s[4266]! } + public var AccessDenied_Camera: String { return self._s[4267]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4267]!, self._r[4267]!, [_0]) + return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_0]) } - public var Theme_Context_ChangeColors: String { return self._s[4268]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[4269]! } - public var Privacy_Forwards_PreviewMessageText: String { return self._s[4270]! } - public var Login_CodeExpiredError: String { return self._s[4271]! } - public var State_ConnectingToProxy: String { return self._s[4272]! } - public var TextFormat_Link: String { return self._s[4273]! } - public var Passport_Language_lv: String { return self._s[4275]! } - public var Conversation_AutoremoveTimerRemovedGroup: String { return self._s[4276]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[4277]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[4278]! } - public var ProfilePhoto_SetMainVideo: String { return self._s[4279]! } - public var AutoDownloadSettings_Cellular: String { return self._s[4281]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[4282]! } - public var Calls_NoVoiceAndVideoCallsPlaceholder: String { return self._s[4283]! } + public var Theme_Context_ChangeColors: String { return self._s[4269]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[4270]! } + public var Privacy_Forwards_PreviewMessageText: String { return self._s[4271]! } + public var Login_CodeExpiredError: String { return self._s[4272]! } + public var State_ConnectingToProxy: String { return self._s[4273]! } + public var TextFormat_Link: String { return self._s[4274]! } + public var Passport_Language_lv: String { return self._s[4276]! } + public var Conversation_AutoremoveTimerRemovedGroup: String { return self._s[4277]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[4278]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[4279]! } + public var ProfilePhoto_SetMainVideo: String { return self._s[4280]! } + public var AutoDownloadSettings_Cellular: String { return self._s[4282]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[4283]! } + public var Calls_NoVoiceAndVideoCallsPlaceholder: String { return self._s[4284]! } public func Channel_AdminLog_MessageKickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4284]!, self._r[4284]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4285]!, self._r[4285]!, [_1, _2]) } - public var ChatList_EmptyChatListFilterTitle: String { return self._s[4285]! } - public var Checkout_PayNone: String { return self._s[4286]! } - public var NotificationsSound_Complete: String { return self._s[4288]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[4289]! } - public var InviteLink_CreateInfo: String { return self._s[4290]! } - public var AuthSessions_DevicesTitle: String { return self._s[4291]! } + public var ChatList_EmptyChatListFilterTitle: String { return self._s[4286]! } + public var Checkout_PayNone: String { return self._s[4287]! } + public var NotificationsSound_Complete: String { return self._s[4289]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[4290]! } + public var InviteLink_CreateInfo: String { return self._s[4291]! } + public var AuthSessions_DevicesTitle: String { return self._s[4292]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4292]!, self._r[4292]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4293]!, self._r[4293]!, [_0, _1]) } - public var Message_LiveLocation: String { return self._s[4293]! } - public var Watch_Suggestion_BRB: String { return self._s[4294]! } - public var Channel_BanUser_Title: String { return self._s[4295]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4296]! } - public var Conversation_Dice_u1F3C0: String { return self._s[4297]! } - public var Conversation_ClearSelfHistory: String { return self._s[4298]! } - public var ProfilePhoto_OpenGallery: String { return self._s[4299]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[4300]! } - public var Weekday_Thursday: String { return self._s[4301]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[4302]! } - public var Privacy_ProfilePhoto: String { return self._s[4304]! } - public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[4305]! } + public var Message_LiveLocation: String { return self._s[4294]! } + public var Watch_Suggestion_BRB: String { return self._s[4295]! } + public var Channel_BanUser_Title: String { return self._s[4296]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4297]! } + public var Conversation_Dice_u1F3C0: String { return self._s[4298]! } + public var Conversation_ClearSelfHistory: String { return self._s[4299]! } + public var ProfilePhoto_OpenGallery: String { return self._s[4300]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[4301]! } + public var Weekday_Thursday: String { return self._s[4302]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[4303]! } + public var Privacy_ProfilePhoto: String { return self._s[4305]! } + public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[4306]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4306]!, self._r[4306]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4307]!, self._r[4307]!, [_1, _2]) } - public var Message_Audio: String { return self._s[4307]! } - public var Conversation_Info: String { return self._s[4308]! } - public var Cache_Videos: String { return self._s[4309]! } - public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[4310]! } - public var Channel_ErrorAddTooMuch: String { return self._s[4311]! } + public var Message_Audio: String { return self._s[4308]! } + public var Conversation_Info: String { return self._s[4309]! } + public var Cache_Videos: String { return self._s[4310]! } + public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[4311]! } + public var Channel_ErrorAddTooMuch: String { return self._s[4312]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4312]!, self._r[4312]!, [_0]) + return formatWithArgumentRanges(self._s[4313]!, self._r[4313]!, [_0]) } - public var VoiceChat_EditBio: String { return self._s[4313]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[4315]! } - public var ScheduledMessages_Title: String { return self._s[4318]! } - public var ShareFileTip_Title: String { return self._s[4321]! } - public var Chat_Gifs_TrendingSectionHeader: String { return self._s[4322]! } - public var ChatList_RemoveFolderConfirmation: String { return self._s[4323]! } + public var VoiceChat_EditBio: String { return self._s[4314]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[4316]! } + public var ScheduledMessages_Title: String { return self._s[4319]! } + public var ShareFileTip_Title: String { return self._s[4322]! } + public var Chat_Gifs_TrendingSectionHeader: String { return self._s[4323]! } + public var ChatList_RemoveFolderConfirmation: String { return self._s[4324]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4324]!, self._r[4324]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4325]!, self._r[4325]!, [_1, _2]) } - public var Conversation_ContextViewStats: String { return self._s[4326]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[4327]! } - public var PasscodeSettings_Title: String { return self._s[4328]! } - public var Channel_AdminLog_SendPolls: String { return self._s[4329]! } - public var LastSeen_ALongTimeAgo: String { return self._s[4330]! } + public var Conversation_ContextViewStats: String { return self._s[4327]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[4328]! } + public var PasscodeSettings_Title: String { return self._s[4329]! } + public var Channel_AdminLog_SendPolls: String { return self._s[4330]! } + public var LastSeen_ALongTimeAgo: String { return self._s[4331]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4331]!, self._r[4331]!, [_1]) + return formatWithArgumentRanges(self._s[4332]!, self._r[4332]!, [_1]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4332]! } - public var ChannelInfo_FakeChannelWarning: String { return self._s[4333]! } - public var CallFeedback_VideoReasonLowQuality: String { return self._s[4334]! } - public var Conversation_PinnedPreviousMessage: String { return self._s[4335]! } - public var SocksProxySetup_AddProxyTitle: String { return self._s[4336]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[4337]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4333]! } + public var ChannelInfo_FakeChannelWarning: String { return self._s[4334]! } + public var CallFeedback_VideoReasonLowQuality: String { return self._s[4335]! } + public var Conversation_PinnedPreviousMessage: String { return self._s[4336]! } + public var SocksProxySetup_AddProxyTitle: String { return self._s[4337]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[4338]! } public func ChatList_RemovedFromFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4338]!, self._r[4338]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4339]!, self._r[4339]!, [_1, _2]) } public func Conversation_SetReminder_RemindToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4339]!, self._r[4339]!, [_0]) + return formatWithArgumentRanges(self._s[4340]!, self._r[4340]!, [_0]) } - public var Passport_Identity_GenderFemale: String { return self._s[4340]! } - public var Location_ProximityNotification_DistanceKM: String { return self._s[4343]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[4344]! } + public var Passport_Identity_GenderFemale: String { return self._s[4341]! } + public var Location_ProximityNotification_DistanceKM: String { return self._s[4344]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[4345]! } public func Message_ImportedDateFormat(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4345]!, self._r[4345]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4346]!, self._r[4346]!, [_1, _2, _3]) } - public var VoiceChat_Audio: String { return self._s[4346]! } - public var SharedMedia_TitleAll: String { return self._s[4347]! } - public var Settings_Context_Logout: String { return self._s[4348]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[4351]! } - public var Settings_About_Title: String { return self._s[4352]! } - public var StickerSettings_ContextHide: String { return self._s[4353]! } + public var VoiceChat_Audio: String { return self._s[4347]! } + public var SharedMedia_TitleAll: String { return self._s[4348]! } + public var Settings_Context_Logout: String { return self._s[4349]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[4352]! } + public var Settings_About_Title: String { return self._s[4353]! } + public var StickerSettings_ContextHide: String { return self._s[4354]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4354]!, self._r[4354]!, [_0]) - } - public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4355]!, self._r[4355]!, [_0]) } - public var ChatImport_SelectionConfirmationAlertImportAction: String { return self._s[4357]! } - public var Common_Cancel: String { return self._s[4358]! } - public var CallFeedback_Title: String { return self._s[4360]! } - public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4361]!, self._r[4361]!, [_0]) + public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4356]!, self._r[4356]!, [_0]) } - public var Conversation_StickerAddedToFavorites: String { return self._s[4362]! } - public var Activity_UploadingVideoMessage: String { return self._s[4364]! } - public var MediaPicker_Send: String { return self._s[4365]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[4366]! } - public var Conversation_LiveLocationYou: String { return self._s[4367]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[4368]! } + public var ChatImport_SelectionConfirmationAlertImportAction: String { return self._s[4358]! } + public var Common_Cancel: String { return self._s[4359]! } + public var CallFeedback_Title: String { return self._s[4361]! } + public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4362]!, self._r[4362]!, [_0]) + } + public var Conversation_StickerAddedToFavorites: String { return self._s[4363]! } + public var Activity_UploadingVideoMessage: String { return self._s[4365]! } + public var MediaPicker_Send: String { return self._s[4366]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[4367]! } + public var Conversation_LiveLocationYou: String { return self._s[4368]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[4369]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4370]!, self._r[4370]!, [_0]) + return formatWithArgumentRanges(self._s[4371]!, self._r[4371]!, [_0]) } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4371]!, self._r[4371]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4372]!, self._r[4372]!, [_1, _2]) } - public var Checkout_PaymentLiabilityAlert: String { return self._s[4372]! } - public var Conversation_ViewBackground: String { return self._s[4373]! } - public var ChatSettings_PrivateChats: String { return self._s[4376]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[4377]! } - public var BroadcastGroups_LimitAlert_LearnMore: String { return self._s[4378]! } - public var Appearance_ThemeNight: String { return self._s[4379]! } - public var Common_Search: String { return self._s[4380]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[4381]! } - public var ChangePhoneNumberNumber_Help: String { return self._s[4383]! } - public var InviteLink_QRCode_Share: String { return self._s[4384]! } - public var Stickers_SuggestAdded: String { return self._s[4386]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[4389]! } - public var Widget_UpdatedTodayAt: String { return self._s[4390]! } - public var NetworkUsageSettings_Cellular: String { return self._s[4391]! } - public var CheckoutInfo_Title: String { return self._s[4392]! } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[4393]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[4394]! } + public var Checkout_PaymentLiabilityAlert: String { return self._s[4373]! } + public var Conversation_ViewBackground: String { return self._s[4374]! } + public var ChatSettings_PrivateChats: String { return self._s[4377]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[4378]! } + public var BroadcastGroups_LimitAlert_LearnMore: String { return self._s[4379]! } + public var Appearance_ThemeNight: String { return self._s[4380]! } + public var Common_Search: String { return self._s[4381]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[4382]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[4384]! } + public var InviteLink_QRCode_Share: String { return self._s[4385]! } + public var Stickers_SuggestAdded: String { return self._s[4387]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[4390]! } + public var Widget_UpdatedTodayAt: String { return self._s[4391]! } + public var NetworkUsageSettings_Cellular: String { return self._s[4392]! } + public var CheckoutInfo_Title: String { return self._s[4393]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[4394]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[4395]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4395]!, self._r[4395]!, [_0]) + return formatWithArgumentRanges(self._s[4396]!, self._r[4396]!, [_0]) } - public var MaskStickerSettings_Info: String { return self._s[4397]! } - public var GroupRemoved_DeleteUser: String { return self._s[4399]! } - public var Contacts_ShareTelegram: String { return self._s[4400]! } - public var Group_UpgradeNoticeText1: String { return self._s[4401]! } + public var MaskStickerSettings_Info: String { return self._s[4398]! } + public var GroupRemoved_DeleteUser: String { return self._s[4400]! } + public var Contacts_ShareTelegram: String { return self._s[4401]! } + public var Group_UpgradeNoticeText1: String { return self._s[4402]! } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4402]!, self._r[4402]!, [_1]) + return formatWithArgumentRanges(self._s[4403]!, self._r[4403]!, [_1]) } - public var PrivacyLastSeenSettings_Title: String { return self._s[4403]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[4407]! } - public var PhotoEditor_TintTool: String { return self._s[4408]! } - public var ChatImportActivity_OpenApp: String { return self._s[4410]! } - public var GroupPermission_NoSendPolls: String { return self._s[4411]! } - public var NotificationsSound_None: String { return self._s[4412]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[4404]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[4408]! } + public var PhotoEditor_TintTool: String { return self._s[4409]! } + public var ChatImportActivity_OpenApp: String { return self._s[4411]! } + public var GroupPermission_NoSendPolls: String { return self._s[4412]! } + public var NotificationsSound_None: String { return self._s[4413]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4413]!, self._r[4413]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4414]!, self._r[4414]!, [_1, "\(_2)"]) } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4416]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4417]! } public func Conversation_AutoremoveTimerSetChannel(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4418]!, self._r[4418]!, [_1]) + return formatWithArgumentRanges(self._s[4419]!, self._r[4419]!, [_1]) } - public var ExplicitContent_AlertChannel: String { return self._s[4419]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[4420]! } - public var Contacts_SortedByPresence: String { return self._s[4421]! } - public var WallpaperSearch_ColorGray: String { return self._s[4422]! } - public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4423]! } - public var Conversation_ReportSpam: String { return self._s[4424]! } - public var ChatList_Search_NoResultsFilter: String { return self._s[4427]! } - public var WallpaperSearch_ColorBlack: String { return self._s[4428]! } - public var ArchivedChats_IntroTitle3: String { return self._s[4429]! } - public var InviteLink_DeleteAllRevokedLinksAlert_Action: String { return self._s[4430]! } + public var ExplicitContent_AlertChannel: String { return self._s[4420]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[4421]! } + public var Contacts_SortedByPresence: String { return self._s[4422]! } + public var WallpaperSearch_ColorGray: String { return self._s[4423]! } + public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4424]! } + public var Conversation_ReportSpam: String { return self._s[4425]! } + public var ChatList_Search_NoResultsFilter: String { return self._s[4428]! } + public var WallpaperSearch_ColorBlack: String { return self._s[4429]! } + public var ArchivedChats_IntroTitle3: String { return self._s[4430]! } + public var InviteLink_DeleteAllRevokedLinksAlert_Action: String { return self._s[4431]! } public func VoiceChat_PeerJoinedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4431]!, self._r[4431]!, [_0]) + return formatWithArgumentRanges(self._s[4432]!, self._r[4432]!, [_0]) } - public var Conversation_DefaultRestrictedText: String { return self._s[4432]! } - public var Settings_Devices: String { return self._s[4433]! } - public var Call_AudioRouteSpeaker: String { return self._s[4434]! } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[4435]! } - public var VoiceChat_StartsIn: String { return self._s[4436]! } - public var VoiceChat_CreateNewVoiceChatSchedule: String { return self._s[4437]! } - public var VoiceChat_EditDescriptionTitle: String { return self._s[4439]! } - public var Passport_Address_Country: String { return self._s[4440]! } - public var Cache_MaximumCacheSize: String { return self._s[4441]! } - public var Chat_PanelHidePinnedMessages: String { return self._s[4442]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[4443]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4445]! } - public var Login_TermsOfServiceLabel: String { return self._s[4446]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[4447]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4448]! } - public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4449]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[4450]! } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[4451]! } - public var ConvertToSupergroup_Note: String { return self._s[4453]! } - public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4454]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4455]! } - public var Common_More: String { return self._s[4456]! } - public var ShareMenu_SelectChats: String { return self._s[4458]! } + public var Conversation_DefaultRestrictedText: String { return self._s[4433]! } + public var Settings_Devices: String { return self._s[4434]! } + public var Call_AudioRouteSpeaker: String { return self._s[4435]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[4436]! } + public var VoiceChat_StartsIn: String { return self._s[4437]! } + public var VoiceChat_CreateNewVoiceChatSchedule: String { return self._s[4438]! } + public var VoiceChat_EditDescriptionTitle: String { return self._s[4440]! } + public var Passport_Address_Country: String { return self._s[4441]! } + public var Cache_MaximumCacheSize: String { return self._s[4442]! } + public var Chat_PanelHidePinnedMessages: String { return self._s[4443]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[4444]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4446]! } + public var Login_TermsOfServiceLabel: String { return self._s[4447]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[4448]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4449]! } + public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4450]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[4451]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[4452]! } + public var ConvertToSupergroup_Note: String { return self._s[4454]! } + public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4455]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4456]! } + public var Common_More: String { return self._s[4457]! } + public var ShareMenu_SelectChats: String { return self._s[4459]! } public func Conversation_ScheduleMessage_SendToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4459]!, self._r[4459]!, [_0]) - } - public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4460]!, self._r[4460]!, [_0]) } - public var Contacts_PermissionsKeepDisabled: String { return self._s[4462]! } - public var VoiceChat_EditBioText: String { return self._s[4463]! } + public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4461]!, self._r[4461]!, [_0]) + } + public var Contacts_PermissionsKeepDisabled: String { return self._s[4463]! } + public var VoiceChat_EditBioText: String { return self._s[4464]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4464]!, self._r[4464]!, [_0]) + return formatWithArgumentRanges(self._s[4465]!, self._r[4465]!, [_0]) } - public var WatchRemote_AlertOpen: String { return self._s[4465]! } + public var WatchRemote_AlertOpen: String { return self._s[4466]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4466]!, self._r[4466]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4467]!, self._r[4467]!, [_1, _2, _3]) } - public var Channel_Members_AddMembersHelp: String { return self._s[4467]! } - public var Shortcut_SwitchAccount: String { return self._s[4468]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4469]! } + public var Channel_Members_AddMembersHelp: String { return self._s[4468]! } + public var Shortcut_SwitchAccount: String { return self._s[4469]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4470]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4470]!, self._r[4470]!, [_0]) + return formatWithArgumentRanges(self._s[4471]!, self._r[4471]!, [_0]) } - public var Compose_NewGroupTitle: String { return self._s[4471]! } - public var DialogList_You: String { return self._s[4472]! } - public var Call_VoiceOver_VoiceCallOutgoing: String { return self._s[4473]! } - public var ReportPeer_ReasonViolence: String { return self._s[4474]! } + public var Compose_NewGroupTitle: String { return self._s[4472]! } + public var DialogList_You: String { return self._s[4473]! } + public var Call_VoiceOver_VoiceCallOutgoing: String { return self._s[4474]! } + public var ReportPeer_ReasonViolence: String { return self._s[4475]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4475]!, self._r[4475]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4476]!, self._r[4476]!, [_1, _2]) } - public var VoiceChat_Reconnecting: String { return self._s[4477]! } - public var KeyCommand_ScrollDown: String { return self._s[4480]! } - public var ChatSettings_DownloadInBackground: String { return self._s[4481]! } - public var Wallpaper_ResetWallpapers: String { return self._s[4482]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[4483]! } - public var ArchivedChats_IntroText3: String { return self._s[4484]! } - public var HashtagSearch_AllChats: String { return self._s[4486]! } - public var VoiceChat_EndVoiceChat: String { return self._s[4487]! } - public var Conversation_MessageCopied: String { return self._s[4489]! } - public var Channel_Info_BlackList: String { return self._s[4490]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4491]! } - public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4492]! } - public var Paint_Neon: String { return self._s[4494]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4495]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[4496]! } + public var VoiceChat_Reconnecting: String { return self._s[4478]! } + public var KeyCommand_ScrollDown: String { return self._s[4481]! } + public var ChatSettings_DownloadInBackground: String { return self._s[4482]! } + public var Wallpaper_ResetWallpapers: String { return self._s[4483]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[4484]! } + public var ArchivedChats_IntroText3: String { return self._s[4485]! } + public var HashtagSearch_AllChats: String { return self._s[4487]! } + public var VoiceChat_EndVoiceChat: String { return self._s[4488]! } + public var Conversation_MessageCopied: String { return self._s[4490]! } + public var Channel_Info_BlackList: String { return self._s[4491]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4492]! } + public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4493]! } + public var Paint_Neon: String { return self._s[4495]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4496]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[4497]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4498]!, self._r[4498]!, [_0]) + return formatWithArgumentRanges(self._s[4499]!, self._r[4499]!, [_0]) } - public var Map_StopLiveLocation: String { return self._s[4499]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4500]! } - public var Channel_Username_InvalidCharacters: String { return self._s[4501]! } - public var InstantPage_Reference: String { return self._s[4503]! } - public var Group_Members_AddMembers: String { return self._s[4505]! } + public var Map_StopLiveLocation: String { return self._s[4500]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4501]! } + public var Channel_Username_InvalidCharacters: String { return self._s[4502]! } + public var InstantPage_Reference: String { return self._s[4504]! } + public var Group_Members_AddMembers: String { return self._s[4506]! } public func Conversation_ScheduledVoiceChatStartsOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4506]!, self._r[4506]!, [_0]) + return formatWithArgumentRanges(self._s[4507]!, self._r[4507]!, [_0]) } - public var ChatList_HideAction: String { return self._s[4507]! } - public var Conversation_FileICloudDrive: String { return self._s[4509]! } + public var ChatList_HideAction: String { return self._s[4508]! } + public var Conversation_FileICloudDrive: String { return self._s[4510]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4510]!, self._r[4510]!, [_1]) + return formatWithArgumentRanges(self._s[4511]!, self._r[4511]!, [_1]) } - public var Passport_PasswordReset: String { return self._s[4512]! } - public var ChatList_Context_UnhideArchive: String { return self._s[4514]! } - public var ConvertToSupergroup_HelpText: String { return self._s[4515]! } - public var Calls_AddTab: String { return self._s[4516]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4518]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4519]! } - public var Privacy_GroupsAndChannels: String { return self._s[4522]! } - public var Conversation_UsernameCopied: String { return self._s[4523]! } - public var AutoNightTheme_Disabled: String { return self._s[4524]! } - public var CreatePoll_MultipleChoice: String { return self._s[4525]! } + public var Passport_PasswordReset: String { return self._s[4513]! } + public var ChatList_Context_UnhideArchive: String { return self._s[4515]! } + public var ConvertToSupergroup_HelpText: String { return self._s[4516]! } + public var Calls_AddTab: String { return self._s[4517]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4519]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4520]! } + public var Privacy_GroupsAndChannels: String { return self._s[4523]! } + public var Conversation_UsernameCopied: String { return self._s[4524]! } + public var AutoNightTheme_Disabled: String { return self._s[4525]! } + public var CreatePoll_MultipleChoice: String { return self._s[4526]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4526]!, self._r[4526]!, [_1]) + return formatWithArgumentRanges(self._s[4527]!, self._r[4527]!, [_1]) } - public var Watch_Bot_Restart: String { return self._s[4528]! } + public var Watch_Bot_Restart: String { return self._s[4529]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4529]!, self._r[4529]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[4530]!, self._r[4530]!, ["\(_0)"]) } - public var GroupInfo_ScamGroupWarning: String { return self._s[4531]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[4532]! } - public var Appearance_PreviewIncomingText: String { return self._s[4533]! } - public var ChatSettings_WidgetSettings: String { return self._s[4534]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4535]! } - public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4537]! } - public var Stats_GroupOverview: String { return self._s[4539]! } - public var ScheduledMessages_EditTime: String { return self._s[4542]! } - public var Month_GenFebruary: String { return self._s[4543]! } - public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4544]! } - public var Stickers_ClearRecent: String { return self._s[4545]! } - public var InviteLink_Create_UsersLimitNumberOfUsersUnlimited: String { return self._s[4546]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4547]! } - public var Stats_Message_PublicShares: String { return self._s[4548]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[4532]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[4533]! } + public var Appearance_PreviewIncomingText: String { return self._s[4534]! } + public var ChatSettings_WidgetSettings: String { return self._s[4535]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4536]! } + public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4538]! } + public var Stats_GroupOverview: String { return self._s[4540]! } + public var ScheduledMessages_EditTime: String { return self._s[4543]! } + public var Month_GenFebruary: String { return self._s[4544]! } + public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4545]! } + public var Stickers_ClearRecent: String { return self._s[4546]! } + public var InviteLink_Create_UsersLimitNumberOfUsersUnlimited: String { return self._s[4547]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4548]! } + public var Stats_Message_PublicShares: String { return self._s[4549]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4549]!, self._r[4549]!, [_0]) + return formatWithArgumentRanges(self._s[4550]!, self._r[4550]!, [_0]) } - public var Login_TermsOfServiceSignupDecline: String { return self._s[4550]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4551]! } - public var VoiceOver_Chat_PlayHint: String { return self._s[4552]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4553]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4555]! } - public var CreatePoll_Create: String { return self._s[4556]! } - public var ChatList_Search_FilterLinks: String { return self._s[4557]! } - public var Your_cards_number_is_invalid: String { return self._s[4558]! } - public var Month_ShortApril: String { return self._s[4559]! } - public var SocksProxySetup_UseForCalls: String { return self._s[4560]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[4561]! } - public var SocksProxySetup_Status: String { return self._s[4562]! } - public var VoiceChat_UnmuteForMe: String { return self._s[4563]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4564]! } - public var ChatListFolder_CategoryBots: String { return self._s[4565]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[4567]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4568]! } - public var Chat_PinnedListPreview_UnpinAllMessages: String { return self._s[4569]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[4570]! } - public var Conversation_TitleUnmute: String { return self._s[4571]! } - public var Group_Setup_TypeHeader: String { return self._s[4572]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[4551]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4552]! } + public var VoiceOver_Chat_PlayHint: String { return self._s[4553]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4554]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4556]! } + public var CreatePoll_Create: String { return self._s[4557]! } + public var ChatList_Search_FilterLinks: String { return self._s[4558]! } + public var Your_cards_number_is_invalid: String { return self._s[4559]! } + public var Month_ShortApril: String { return self._s[4560]! } + public var SocksProxySetup_UseForCalls: String { return self._s[4561]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[4562]! } + public var SocksProxySetup_Status: String { return self._s[4563]! } + public var VoiceChat_UnmuteForMe: String { return self._s[4564]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4565]! } + public var ChatListFolder_CategoryBots: String { return self._s[4566]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[4568]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4569]! } + public var Chat_PinnedListPreview_UnpinAllMessages: String { return self._s[4570]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[4571]! } + public var Conversation_TitleUnmute: String { return self._s[4572]! } + public var Group_Setup_TypeHeader: String { return self._s[4573]! } public func Conversation_ForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4573]!, self._r[4573]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4574]!, self._r[4574]!, [_0, _1]) } - public var Stats_ViewsPerPost: String { return self._s[4574]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4575]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4576]! } + public var Stats_ViewsPerPost: String { return self._s[4575]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4576]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4577]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4577]!, self._r[4577]!, [_1]) + return formatWithArgumentRanges(self._s[4578]!, self._r[4578]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[4578]! } + public var GroupInfo_Administrators_Title: String { return self._s[4579]! } public func Channel_AdminLog_MessageRankName(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4579]!, self._r[4579]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4580]!, self._r[4580]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4580]!, self._r[4580]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4581]!, self._r[4581]!, [_1, _2, _3]) } - public var CheckoutInfo_ShippingInfoState: String { return self._s[4581]! } - public var Passport_Language_my: String { return self._s[4583]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4584]! } - public var Map_PlacesNearby: String { return self._s[4585]! } - public var Channel_About_Help: String { return self._s[4586]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[4587]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[4588]! } - public var Channel_Username_Title: String { return self._s[4589]! } - public var Activity_RecordingVideoMessage: String { return self._s[4590]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[4582]! } + public var Passport_Language_my: String { return self._s[4584]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4585]! } + public var Map_PlacesNearby: String { return self._s[4586]! } + public var Channel_About_Help: String { return self._s[4587]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[4588]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[4589]! } + public var Channel_Username_Title: String { return self._s[4590]! } + public var Activity_RecordingVideoMessage: String { return self._s[4591]! } public func StickerPackActionInfo_RemovedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4591]!, self._r[4591]!, [_0]) + return formatWithArgumentRanges(self._s[4592]!, self._r[4592]!, [_0]) } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[4592]! } - public var Passport_DiscardMessageDescription: String { return self._s[4593]! } - public var Conversation_LinkDialogOpen: String { return self._s[4594]! } - public var ChatList_Context_HideArchive: String { return self._s[4595]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[4593]! } + public var Passport_DiscardMessageDescription: String { return self._s[4594]! } + public var Conversation_LinkDialogOpen: String { return self._s[4595]! } + public var ChatList_Context_HideArchive: String { return self._s[4596]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4596]!, self._r[4596]!, [_0]) + return formatWithArgumentRanges(self._s[4597]!, self._r[4597]!, [_0]) } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4597]! } - public var Conversation_Admin: String { return self._s[4598]! } - public var DialogList_TabTitle: String { return self._s[4599]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4598]! } + public var Conversation_Admin: String { return self._s[4599]! } + public var DialogList_TabTitle: String { return self._s[4600]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4600]!, self._r[4600]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4601]!, self._r[4601]!, [_1, _2]) } - public var Notifications_PermissionsUnreachableText: String { return self._s[4601]! } - public var Passport_Identity_GenderMale: String { return self._s[4603]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[4602]! } + public var Passport_Identity_GenderMale: String { return self._s[4604]! } public func VoiceChat_EditTitleSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4605]!, self._r[4605]!, [_0]) + return formatWithArgumentRanges(self._s[4606]!, self._r[4606]!, [_0]) } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4606]! } - public var PhoneNumberHelp_Alert: String { return self._s[4607]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4608]! } - public var Notifications_InAppNotifications: String { return self._s[4609]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4607]! } + public var PhoneNumberHelp_Alert: String { return self._s[4608]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4609]! } + public var Notifications_InAppNotifications: String { return self._s[4610]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4610]!, self._r[4610]!, [_0]) + return formatWithArgumentRanges(self._s[4611]!, self._r[4611]!, [_0]) } - public var Notification_VideoCallOutgoing: String { return self._s[4611]! } - public var Login_InvalidCodeError: String { return self._s[4612]! } - public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4613]! } + public var Notification_VideoCallOutgoing: String { return self._s[4612]! } + public var Login_InvalidCodeError: String { return self._s[4613]! } + public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4614]! } public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4615]!, self._r[4615]!, [_0]) + return formatWithArgumentRanges(self._s[4616]!, self._r[4616]!, [_0]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4616]! } - public var ReportPeer_Report: String { return self._s[4617]! } - public var Camera_FlashOff: String { return self._s[4620]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4623]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4617]! } + public var ReportPeer_Report: String { return self._s[4618]! } + public var Camera_FlashOff: String { return self._s[4621]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4624]! } public func Notification_VoiceChatScheduledTomorrow(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4624]!, self._r[4624]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4625]!, self._r[4625]!, [_1, _2]) } - public var PrivacyPolicy_DeclineTitle: String { return self._s[4627]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4628]! } - public var Passport_FieldEmail: String { return self._s[4629]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[4628]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4629]! } + public var Passport_FieldEmail: String { return self._s[4630]! } public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4630]!, self._r[4630]!, [_1]) + return formatWithArgumentRanges(self._s[4631]!, self._r[4631]!, [_1]) } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[4631]! } - public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4632]! } - public var Group_OwnershipTransfer_Title: String { return self._s[4633]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[4634]! } - public var Login_PhoneNumberHelp: String { return self._s[4636]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4637]! } - public var Conversation_PinnedQuiz: String { return self._s[4638]! } - public var CreateGroup_SoftUserLimitAlert: String { return self._s[4639]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4640]! } - public var Group_MessagePhotoUpdated: String { return self._s[4641]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[4642]! } - public var BroadcastGroups_ConfirmationAlert_Text: String { return self._s[4643]! } - public var Passport_Identity_Translations: String { return self._s[4645]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4646]! } - public var ChannelInfo_DeleteChannel: String { return self._s[4648]! } - public var PasscodeSettings_HelpBottom: String { return self._s[4649]! } - public var Channel_Members_AddMembers: String { return self._s[4650]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[4651]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4653]! } - public var Conversation_HoldForAudio: String { return self._s[4654]! } - public var Media_LimitedAccessChangeSettings: String { return self._s[4656]! } - public var Watch_LastSeen_Lately: String { return self._s[4657]! } - public var ChatList_Context_MarkAsRead: String { return self._s[4658]! } - public var Conversation_PinnedMessage: String { return self._s[4659]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4660]! } - public var VoiceChat_StopRecordingStop: String { return self._s[4662]! } - public var Passport_UpdateRequiredError: String { return self._s[4663]! } - public var PrivacySettings_Passcode: String { return self._s[4664]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[4632]! } + public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4633]! } + public var Group_OwnershipTransfer_Title: String { return self._s[4634]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[4635]! } + public var Login_PhoneNumberHelp: String { return self._s[4637]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4638]! } + public var Conversation_PinnedQuiz: String { return self._s[4639]! } + public var CreateGroup_SoftUserLimitAlert: String { return self._s[4640]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4641]! } + public var Group_MessagePhotoUpdated: String { return self._s[4642]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[4643]! } + public var BroadcastGroups_ConfirmationAlert_Text: String { return self._s[4644]! } + public var Passport_Identity_Translations: String { return self._s[4646]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4647]! } + public var ChannelInfo_DeleteChannel: String { return self._s[4649]! } + public var PasscodeSettings_HelpBottom: String { return self._s[4650]! } + public var Channel_Members_AddMembers: String { return self._s[4651]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[4652]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4654]! } + public var Conversation_HoldForAudio: String { return self._s[4655]! } + public var Media_LimitedAccessChangeSettings: String { return self._s[4657]! } + public var Watch_LastSeen_Lately: String { return self._s[4658]! } + public var ChatList_Context_MarkAsRead: String { return self._s[4659]! } + public var Conversation_PinnedMessage: String { return self._s[4660]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4661]! } + public var VoiceChat_StopRecordingStop: String { return self._s[4663]! } + public var Passport_UpdateRequiredError: String { return self._s[4664]! } + public var PrivacySettings_Passcode: String { return self._s[4665]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4665]!, self._r[4665]!, [_0]) + return formatWithArgumentRanges(self._s[4666]!, self._r[4666]!, [_0]) } - public var AutoNightTheme_NotAvailable: String { return self._s[4666]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[4667]! } - public var VoiceOver_Common_On: String { return self._s[4668]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[4669]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4670]! } - public var Channel_SignMessages_Help: String { return self._s[4671]! } - public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4672]! } - public var Conversation_TitleNoComments: String { return self._s[4673]! } - public var MediaPicker_LivePhotoDescription: String { return self._s[4674]! } - public var GroupInfo_Permissions: String { return self._s[4675]! } - public var GroupPermission_NoSendLinks: String { return self._s[4678]! } + public var AutoNightTheme_NotAvailable: String { return self._s[4667]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[4668]! } + public var VoiceOver_Common_On: String { return self._s[4669]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[4670]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4671]! } + public var Channel_SignMessages_Help: String { return self._s[4672]! } + public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4673]! } + public var Conversation_TitleNoComments: String { return self._s[4674]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[4675]! } + public var GroupInfo_Permissions: String { return self._s[4676]! } + public var GroupPermission_NoSendLinks: String { return self._s[4679]! } public func Conversation_ScheduledVoiceChatStartsTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4679]!, self._r[4679]!, [_0]) + return formatWithArgumentRanges(self._s[4680]!, self._r[4680]!, [_0]) } - public var Passport_Identity_ResidenceCountry: String { return self._s[4680]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[4682]! } - public var ChatList_ArchiveAction: String { return self._s[4683]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[4681]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[4683]! } + public var ChatList_ArchiveAction: String { return self._s[4684]! } public func Channel_AdminLog_DisabledSlowmode(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4684]!, self._r[4684]!, [_0]) + return formatWithArgumentRanges(self._s[4685]!, self._r[4685]!, [_0]) } - public var GroupInfo_GroupHistory: String { return self._s[4685]! } + public var GroupInfo_GroupHistory: String { return self._s[4686]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4687]!, self._r[4687]!, [_0]) + return formatWithArgumentRanges(self._s[4688]!, self._r[4688]!, [_0]) } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4689]! } - public var Channel_Info_Banned: String { return self._s[4690]! } - public var Paint_RecentStickers: String { return self._s[4691]! } - public var VoiceOver_MessageContextSend: String { return self._s[4692]! } - public var Group_ErrorNotMutualContact: String { return self._s[4693]! } - public var ReportPeer_ReasonOther: String { return self._s[4695]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4696]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4698]! } - public var KeyCommand_Find: String { return self._s[4699]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4690]! } + public var Channel_Info_Banned: String { return self._s[4691]! } + public var Paint_RecentStickers: String { return self._s[4692]! } + public var VoiceOver_MessageContextSend: String { return self._s[4693]! } + public var Group_ErrorNotMutualContact: String { return self._s[4694]! } + public var ReportPeer_ReasonOther: String { return self._s[4696]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4697]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4699]! } + public var KeyCommand_Find: String { return self._s[4700]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4700]!, self._r[4700]!, [_0]) + return formatWithArgumentRanges(self._s[4701]!, self._r[4701]!, [_0]) } - public var ChatList_Context_Unmute: String { return self._s[4701]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4702]! } - public var Stickers_GroupStickersHelp: String { return self._s[4703]! } - public var Checkout_Title: String { return self._s[4704]! } - public var Activity_RecordingAudio: String { return self._s[4705]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4706]! } - public var BlockedUsers_BlockTitle: String { return self._s[4707]! } - public var DialogList_SavedMessagesHelp: String { return self._s[4709]! } - public var Calls_All: String { return self._s[4710]! } - public var Settings_FAQ_Button: String { return self._s[4712]! } - public var Conversation_Dice_u1F3B0: String { return self._s[4714]! } + public var ChatList_Context_Unmute: String { return self._s[4702]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4703]! } + public var Stickers_GroupStickersHelp: String { return self._s[4704]! } + public var Checkout_Title: String { return self._s[4705]! } + public var Activity_RecordingAudio: String { return self._s[4706]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4707]! } + public var BlockedUsers_BlockTitle: String { return self._s[4708]! } + public var DialogList_SavedMessagesHelp: String { return self._s[4710]! } + public var Calls_All: String { return self._s[4711]! } + public var Settings_FAQ_Button: String { return self._s[4713]! } + public var Conversation_Dice_u1F3B0: String { return self._s[4715]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4715]!, self._r[4715]!, [_0]) + return formatWithArgumentRanges(self._s[4716]!, self._r[4716]!, [_0]) } - public var Conversation_ReportGroupLocation: String { return self._s[4716]! } - public var Passport_Scans_Upload: String { return self._s[4717]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4719]! } - public var ChatList_UnarchiveAction: String { return self._s[4720]! } - public var Stats_GroupTopInviter_History: String { return self._s[4721]! } - public var GroupInfo_Permissions_Title: String { return self._s[4722]! } - public var VoiceChat_CreateNewVoiceChatStart: String { return self._s[4723]! } - public var Passport_Language_el: String { return self._s[4724]! } - public var Channel_DiscussionMessageUnavailable: String { return self._s[4725]! } + public var Conversation_ReportGroupLocation: String { return self._s[4717]! } + public var Passport_Scans_Upload: String { return self._s[4718]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4720]! } + public var ChatList_UnarchiveAction: String { return self._s[4721]! } + public var Stats_GroupTopInviter_History: String { return self._s[4722]! } + public var GroupInfo_Permissions_Title: String { return self._s[4723]! } + public var VoiceChat_CreateNewVoiceChatStart: String { return self._s[4724]! } + public var Passport_Language_el: String { return self._s[4725]! } + public var Channel_DiscussionMessageUnavailable: String { return self._s[4726]! } public func UserInfo_ContactForwardTooltip_TwoChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4726]!, self._r[4726]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4727]!, self._r[4727]!, [_0, _1]) } - public var GroupInfo_ActionPromote: String { return self._s[4727]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4728]! } - public var Media_LimitedAccessSelectMore: String { return self._s[4729]! } + public var GroupInfo_ActionPromote: String { return self._s[4728]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4729]! } + public var Media_LimitedAccessSelectMore: String { return self._s[4730]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4730]!, self._r[4730]!, [_0]) + return formatWithArgumentRanges(self._s[4731]!, self._r[4731]!, [_0]) } - public var VoiceOver_Chat_Reply: String { return self._s[4731]! } - public var Month_GenMay: String { return self._s[4732]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4733]! } - public var Chat_PsaTooltip_covid: String { return self._s[4734]! } - public var Watch_Suggestion_CantTalk: String { return self._s[4735]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4736]! } - public var AppUpgrade_Running: String { return self._s[4737]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4740]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4741]! } - public var SharedMedia_EmptyText: String { return self._s[4742]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[4743]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4744]! } - public var Message_PinnedGame: String { return self._s[4745]! } - public var KeyCommand_SearchInChat: String { return self._s[4746]! } - public var Appearance_ThemeCarouselNewNight: String { return self._s[4747]! } - public var ChatList_Search_FilterMedia: String { return self._s[4748]! } - public var Message_PinnedAudioMessage: String { return self._s[4749]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[4751]! } + public var VoiceOver_Chat_Reply: String { return self._s[4732]! } + public var Month_GenMay: String { return self._s[4733]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4734]! } + public var Chat_PsaTooltip_covid: String { return self._s[4735]! } + public var Watch_Suggestion_CantTalk: String { return self._s[4736]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4737]! } + public var AppUpgrade_Running: String { return self._s[4738]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4741]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4742]! } + public var SharedMedia_EmptyText: String { return self._s[4743]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[4744]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4745]! } + public var Message_PinnedGame: String { return self._s[4746]! } + public var KeyCommand_SearchInChat: String { return self._s[4747]! } + public var Appearance_ThemeCarouselNewNight: String { return self._s[4748]! } + public var ChatList_Search_FilterMedia: String { return self._s[4749]! } + public var Message_PinnedAudioMessage: String { return self._s[4750]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[4752]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4752]!, self._r[4752]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4753]!, self._r[4753]!, [_1, _2]) } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4753]! } - public var InviteLink_Create: String { return self._s[4754]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4754]! } + public var InviteLink_Create: String { return self._s[4755]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4755]!, self._r[4755]!, [_0]) - } - public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4756]!, self._r[4756]!, [_0]) } - public var Settings_AddAccount: String { return self._s[4757]! } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4758]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4759]! } - public var Channel_JoinChannel: String { return self._s[4760]! } - public var Watch_UserInfo_Unblock: String { return self._s[4761]! } - public var PhoneLabel_Title: String { return self._s[4762]! } - public var VoiceChat_EditPermissions: String { return self._s[4764]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[4765]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4766]! } + public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4757]!, self._r[4757]!, [_0]) + } + public var Settings_AddAccount: String { return self._s[4758]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4759]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4760]! } + public var Channel_JoinChannel: String { return self._s[4761]! } + public var Watch_UserInfo_Unblock: String { return self._s[4762]! } + public var PhoneLabel_Title: String { return self._s[4763]! } + public var VoiceChat_EditPermissions: String { return self._s[4765]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[4766]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4767]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4767]!, self._r[4767]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[4768]!, self._r[4768]!, [_1, _2, _3, _4, _5, _6]) } - public var Channel_AddBotErrorHaveRights: String { return self._s[4768]! } - public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4769]! } - public var DialogList_EncryptionProcessing: String { return self._s[4770]! } - public var ChatList_Search_FilterChats: String { return self._s[4771]! } - public var WatchRemote_NotificationText: String { return self._s[4772]! } - public var EditTheme_ChangeColors: String { return self._s[4774]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[4775]! } - public var CallSettings_OnMobile: String { return self._s[4777]! } - public var Month_ShortFebruary: String { return self._s[4779]! } - public var VoiceOver_MessageContextReply: String { return self._s[4780]! } - public var AutoremoveSetup_TimerValueNever: String { return self._s[4781]! } - public var Group_Location_ChangeLocation: String { return self._s[4783]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[4769]! } + public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4770]! } + public var DialogList_EncryptionProcessing: String { return self._s[4771]! } + public var ChatList_Search_FilterChats: String { return self._s[4772]! } + public var WatchRemote_NotificationText: String { return self._s[4773]! } + public var EditTheme_ChangeColors: String { return self._s[4775]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[4776]! } + public var CallSettings_OnMobile: String { return self._s[4778]! } + public var Month_ShortFebruary: String { return self._s[4780]! } + public var VoiceOver_MessageContextReply: String { return self._s[4781]! } + public var AutoremoveSetup_TimerValueNever: String { return self._s[4782]! } + public var Group_Location_ChangeLocation: String { return self._s[4784]! } public func PUSH_VIDEO_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4784]!, self._r[4784]!, [_1]) + return formatWithArgumentRanges(self._s[4785]!, self._r[4785]!, [_1]) } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4785]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[4786]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4787]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4786]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[4787]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4788]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4789]!, self._r[4789]!, [_0]) + return formatWithArgumentRanges(self._s[4790]!, self._r[4790]!, [_0]) } - public var PhotoEditor_WarmthTool: String { return self._s[4790]! } - public var Login_InfoAvatarPhoto: String { return self._s[4791]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4792]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4793]! } - public var Map_PlacesInThisArea: String { return self._s[4794]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[4795]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[4796]! } + public var PhotoEditor_WarmthTool: String { return self._s[4791]! } + public var Login_InfoAvatarPhoto: String { return self._s[4792]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4793]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4794]! } + public var Map_PlacesInThisArea: String { return self._s[4795]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[4796]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[4797]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4797]!, self._r[4797]!, [_1]) + return formatWithArgumentRanges(self._s[4798]!, self._r[4798]!, [_1]) } - public var PeerInfo_ReportProfileVideo: String { return self._s[4798]! } - public var ShareMenu_Send: String { return self._s[4799]! } - public var Username_InvalidStartsWithNumber: String { return self._s[4800]! } + public var PeerInfo_ReportProfileVideo: String { return self._s[4799]! } + public var ShareMenu_Send: String { return self._s[4800]! } + public var Username_InvalidStartsWithNumber: String { return self._s[4801]! } public func Channel_AdminLog_StartedVoiceChat(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4801]!, self._r[4801]!, [_1]) + return formatWithArgumentRanges(self._s[4802]!, self._r[4802]!, [_1]) } - public var Appearance_AppIconClassicX: String { return self._s[4802]! } - public var Report_Report: String { return self._s[4803]! } + public var Appearance_AppIconClassicX: String { return self._s[4803]! } + public var Report_Report: String { return self._s[4804]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4804]!, self._r[4804]!, [_1]) + return formatWithArgumentRanges(self._s[4805]!, self._r[4805]!, [_1]) } - public var Conversation_StopPoll: String { return self._s[4805]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4807]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[4808]! } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4809]! } - public var Conversation_Timer_Title: String { return self._s[4810]! } - public var Common_Next: String { return self._s[4811]! } - public var Notification_Exceptions_NewException: String { return self._s[4812]! } + public var Conversation_StopPoll: String { return self._s[4806]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4808]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[4809]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4810]! } + public var Conversation_Timer_Title: String { return self._s[4811]! } + public var Common_Next: String { return self._s[4812]! } + public var Notification_Exceptions_NewException: String { return self._s[4813]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4813]!, self._r[4813]!, [_0]) + return formatWithArgumentRanges(self._s[4814]!, self._r[4814]!, [_0]) } - public var AccessDenied_CallMicrophone: String { return self._s[4814]! } - public var VoiceChat_UnmutePeer: String { return self._s[4815]! } - public var ChatImportActivity_Retry: String { return self._s[4816]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4817]! } - public var ChangePhoneNumberCode_Help: String { return self._s[4818]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4819]! } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4820]! } - public var BlockedUsers_LeavePrefix: String { return self._s[4821]! } + public var AccessDenied_CallMicrophone: String { return self._s[4815]! } + public var VoiceChat_UnmutePeer: String { return self._s[4816]! } + public var ChatImportActivity_Retry: String { return self._s[4817]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4818]! } + public var ChangePhoneNumberCode_Help: String { return self._s[4819]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4820]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4821]! } + public var BlockedUsers_LeavePrefix: String { return self._s[4822]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4822]!, self._r[4822]!, [_0]) + return formatWithArgumentRanges(self._s[4823]!, self._r[4823]!, [_0]) } - public var Group_About_Help: String { return self._s[4823]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4824]! } - public var Tour_Title3: String { return self._s[4825]! } - public var Watch_Conversation_Unblock: String { return self._s[4826]! } - public var Watch_UserInfo_Block: String { return self._s[4827]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[4828]! } - public var TwoFactorSetup_Hint_Action: String { return self._s[4829]! } - public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4830]! } - public var TextFormat_AddLinkTitle: String { return self._s[4831]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4832]! } + public var Group_About_Help: String { return self._s[4824]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4825]! } + public var Tour_Title3: String { return self._s[4826]! } + public var Watch_Conversation_Unblock: String { return self._s[4827]! } + public var Watch_UserInfo_Block: String { return self._s[4828]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[4829]! } + public var TwoFactorSetup_Hint_Action: String { return self._s[4830]! } + public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4831]! } + public var TextFormat_AddLinkTitle: String { return self._s[4832]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4833]! } public func Notification_VoiceChatScheduled(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4833]!, self._r[4833]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4834]!, self._r[4834]!, [_1, _2]) } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4834]! } - public var FastTwoStepSetup_PasswordSection: String { return self._s[4836]! } - public var Compose_ChannelMembers: String { return self._s[4837]! } - public var Conversation_ForwardTitle: String { return self._s[4838]! } - public var Conversation_PinnedPoll: String { return self._s[4841]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4835]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[4837]! } + public var Compose_ChannelMembers: String { return self._s[4838]! } + public var Conversation_ForwardTitle: String { return self._s[4839]! } + public var Conversation_PinnedPoll: String { return self._s[4842]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4842]!, self._r[4842]!, [_0]) + return formatWithArgumentRanges(self._s[4843]!, self._r[4843]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4843]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4845]! } - public var Stats_Overview: String { return self._s[4846]! } - public var Map_HomeAndWorkTitle: String { return self._s[4847]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4844]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4846]! } + public var Stats_Overview: String { return self._s[4847]! } + public var Map_HomeAndWorkTitle: String { return self._s[4848]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4848]!, self._r[4848]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4849]!, self._r[4849]!, [_1, _2, _3]) } - public var Passport_Address_CityPlaceholder: String { return self._s[4849]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4850]! } - public var Privacy_PhoneNumber: String { return self._s[4851]! } - public var ChatList_Search_FilterFiles: String { return self._s[4852]! } - public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4853]! } - public var ChannelIntro_CreateChannel: String { return self._s[4854]! } - public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4855]! } + public var Passport_Address_CityPlaceholder: String { return self._s[4850]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4851]! } + public var Privacy_PhoneNumber: String { return self._s[4852]! } + public var ChatList_Search_FilterFiles: String { return self._s[4853]! } + public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4854]! } + public var ChannelIntro_CreateChannel: String { return self._s[4855]! } + public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4856]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4856]!, self._r[4856]!, [_0]) + return formatWithArgumentRanges(self._s[4857]!, self._r[4857]!, [_0]) } - public var Weekday_ShortMonday: String { return self._s[4857]! } - public var Passport_Language_ar: String { return self._s[4859]! } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4860]! } - public var TwoFactorSetup_Done_Title: String { return self._s[4861]! } - public var Calls_RatingFeedback: String { return self._s[4862]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4863]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[4866]! } + public var Weekday_ShortMonday: String { return self._s[4858]! } + public var Passport_Language_ar: String { return self._s[4860]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4861]! } + public var TwoFactorSetup_Done_Title: String { return self._s[4862]! } + public var Calls_RatingFeedback: String { return self._s[4863]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4864]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[4867]! } public func VoiceOver_SelfDestructTimerOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4867]!, self._r[4867]!, [_0]) + return formatWithArgumentRanges(self._s[4868]!, self._r[4868]!, [_0]) } - public var Watch_Compose_Send: String { return self._s[4868]! } - public var PasscodeSettings_ChangePasscode: String { return self._s[4869]! } - public var WebSearch_RecentSectionClear: String { return self._s[4870]! } + public var Watch_Compose_Send: String { return self._s[4869]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[4870]! } + public var WebSearch_RecentSectionClear: String { return self._s[4871]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4871]!, self._r[4871]!, [_0]) + return formatWithArgumentRanges(self._s[4872]!, self._r[4872]!, [_0]) } - public var WallpaperSearch_ColorTeal: String { return self._s[4872]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4873]! } - public var Permissions_ContactsTitle_v0: String { return self._s[4874]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[4876]! } - public var Settings_SavedMessages: String { return self._s[4877]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4878]! } - public var Month_ShortMarch: String { return self._s[4879]! } - public var Message_Location: String { return self._s[4880]! } + public var WallpaperSearch_ColorTeal: String { return self._s[4873]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4874]! } + public var Permissions_ContactsTitle_v0: String { return self._s[4875]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[4877]! } + public var Settings_SavedMessages: String { return self._s[4878]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4879]! } + public var Month_ShortMarch: String { return self._s[4880]! } + public var Message_Location: String { return self._s[4881]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4881]!, self._r[4881]!, [_1]) - } - public func Channel_AdminLog_MessageRemovedAdminName(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4882]!, self._r[4882]!, [_1]) } + public func Channel_AdminLog_MessageRemovedAdminName(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4883]!, self._r[4883]!, [_1]) + } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4883]!, self._r[4883]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4884]!, self._r[4884]!, [_1, _2]) } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[4885]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[4886]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4886]!, self._r[4886]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4887]!, self._r[4887]!, [_1, _2]) } - public var GroupPermission_NoSendMedia: String { return self._s[4887]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[4888]! } - public var SharedMedia_CategoryDocs: String { return self._s[4889]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[4890]! } - public var Paint_Framed: String { return self._s[4891]! } - public var Channel_Setup_LinkTypePublic: String { return self._s[4892]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4893]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[4894]! } + public var GroupPermission_NoSendMedia: String { return self._s[4888]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[4889]! } + public var SharedMedia_CategoryDocs: String { return self._s[4890]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[4891]! } + public var Paint_Framed: String { return self._s[4892]! } + public var Channel_Setup_LinkTypePublic: String { return self._s[4893]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4894]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[4895]! } public func ChatImport_SelectionConfirmationUserWithTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4895]!, self._r[4895]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4896]!, self._r[4896]!, [_1, _2]) } - public var Channel_SignMessages: String { return self._s[4896]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[4897]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4898]! } + public var Channel_SignMessages: String { return self._s[4897]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[4898]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4899]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4899]!, self._r[4899]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4900]!, self._r[4900]!, [_1, _2]) } - public var InviteLink_Create_TimeLimitNoLimit: String { return self._s[4900]! } - public var GroupInfo_UpgradeButton: String { return self._s[4901]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4902]! } + public var InviteLink_Create_TimeLimitNoLimit: String { return self._s[4901]! } + public var GroupInfo_UpgradeButton: String { return self._s[4902]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4903]! } public func Conversation_ScheduledVoiceChatStartsTomorrowShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4903]!, self._r[4903]!, [_0]) + return formatWithArgumentRanges(self._s[4904]!, self._r[4904]!, [_0]) } - public var AutoDownloadSettings_Files: String { return self._s[4904]! } + public var AutoDownloadSettings_Files: String { return self._s[4905]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4905]!, self._r[4905]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4906]!, self._r[4906]!, [_0, _1]) } - public var Login_SendCodeViaSms: String { return self._s[4907]! } - public var Update_UpdateApp: String { return self._s[4908]! } - public var Channel_Setup_TypePublic: String { return self._s[4909]! } - public var Watch_Compose_CreateMessage: String { return self._s[4910]! } + public var Login_SendCodeViaSms: String { return self._s[4908]! } + public var Update_UpdateApp: String { return self._s[4909]! } + public var Channel_Setup_TypePublic: String { return self._s[4910]! } + public var Watch_Compose_CreateMessage: String { return self._s[4911]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4911]!, self._r[4911]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4912]!, self._r[4912]!, [_1, _2, _3]) } - public var StickerPacksSettings_ManagingHelp: String { return self._s[4912]! } - public var VoiceOver_Chat_Video: String { return self._s[4913]! } - public var Forward_ChannelReadOnly: String { return self._s[4914]! } - public var StickerPack_HideStickers: String { return self._s[4915]! } - public var ChatListFolder_NameContacts: String { return self._s[4916]! } - public var Profile_BotInfo: String { return self._s[4917]! } - public var Document_TargetConfirmationFormat: String { return self._s[4918]! } - public var GroupInfo_InviteByLink: String { return self._s[4919]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4920]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[4921]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[4922]! } - public var Passport_NotLoggedInMessage: String { return self._s[4923]! } - public var Conversation_StopQuizConfirmation: String { return self._s[4924]! } - public var Checkout_PaymentMethod: String { return self._s[4925]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[4930]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4931]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4932]! } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4933]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4934]! } - public var Conversation_GigagroupDescription: String { return self._s[4935]! } - public var Camera_Title: String { return self._s[4936]! } - public var Map_Directions: String { return self._s[4937]! } - public var Stats_MessagePublicForwardsTitle: String { return self._s[4939]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4940]! } - public var Profile_EncryptionKey: String { return self._s[4941]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[4913]! } + public var VoiceOver_Chat_Video: String { return self._s[4914]! } + public var Forward_ChannelReadOnly: String { return self._s[4915]! } + public var StickerPack_HideStickers: String { return self._s[4916]! } + public var ChatListFolder_NameContacts: String { return self._s[4917]! } + public var Profile_BotInfo: String { return self._s[4918]! } + public var Document_TargetConfirmationFormat: String { return self._s[4919]! } + public var GroupInfo_InviteByLink: String { return self._s[4920]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4921]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[4922]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[4923]! } + public var Passport_NotLoggedInMessage: String { return self._s[4924]! } + public var Conversation_StopQuizConfirmation: String { return self._s[4925]! } + public var Checkout_PaymentMethod: String { return self._s[4926]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[4931]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4932]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4933]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4934]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4935]! } + public var Conversation_GigagroupDescription: String { return self._s[4936]! } + public var Camera_Title: String { return self._s[4937]! } + public var Map_Directions: String { return self._s[4938]! } + public var Stats_MessagePublicForwardsTitle: String { return self._s[4940]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4941]! } + public var Profile_EncryptionKey: String { return self._s[4942]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4942]!, self._r[4942]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4943]!, self._r[4943]!, [_1, "\(_2)"]) } - public var VoiceChat_VideoPreviewShareCamera: String { return self._s[4943]! } + public var VoiceChat_VideoPreviewShareCamera: String { return self._s[4944]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4944]!, self._r[4944]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4945]!, self._r[4945]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4945]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4947]! } - public var Common_No: String { return self._s[4948]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4949]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4950]! } - public var Settings_AboutEmpty: String { return self._s[4951]! } - public var TwoStepAuth_FloodError: String { return self._s[4953]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4954]! } + public var Passport_Identity_TypePassport: String { return self._s[4946]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4948]! } + public var Common_No: String { return self._s[4949]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4950]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4951]! } + public var Settings_AboutEmpty: String { return self._s[4952]! } + public var TwoStepAuth_FloodError: String { return self._s[4954]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4955]! } public func Notification_VoiceChatScheduledChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4955]!, self._r[4955]!, [_0]) + return formatWithArgumentRanges(self._s[4956]!, self._r[4956]!, [_0]) } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4957]!, self._r[4957]!, [_1]) + return formatWithArgumentRanges(self._s[4958]!, self._r[4958]!, [_1]) } - public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4960]! } - public var Conversation_Edit: String { return self._s[4961]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4963]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4964]! } - public var Call_CameraTooltip: String { return self._s[4966]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4967]! } - public var Contacts_InviteToTelegram: String { return self._s[4968]! } - public var Notifications_ResetAllNotifications: String { return self._s[4969]! } - public var Calls_NewCall: String { return self._s[4970]! } - public var VoiceOver_Chat_Music: String { return self._s[4973]! } - public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4974]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4975]! } - public var Channel_Edit_AboutItem: String { return self._s[4976]! } - public var Message_VideoExpired: String { return self._s[4977]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4978]! } + public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4961]! } + public var Conversation_Edit: String { return self._s[4962]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4964]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4965]! } + public var Call_CameraTooltip: String { return self._s[4967]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4968]! } + public var Contacts_InviteToTelegram: String { return self._s[4969]! } + public var Notifications_ResetAllNotifications: String { return self._s[4970]! } + public var Calls_NewCall: String { return self._s[4971]! } + public var VoiceOver_Chat_Music: String { return self._s[4974]! } + public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4975]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4976]! } + public var Channel_Edit_AboutItem: String { return self._s[4977]! } + public var Message_VideoExpired: String { return self._s[4978]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4979]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4979]!, self._r[4979]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4980]!, self._r[4980]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4981]! } - public var Notifications_ClassicTones: String { return self._s[4982]! } - public var Conversation_StatusTyping: String { return self._s[4983]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4984]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4985]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4986]! } - public var Conversation_MessageLeaveComment: String { return self._s[4987]! } - public var UserInfo_TapToCall: String { return self._s[4988]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4989]! } + public var NotificationsSound_Input: String { return self._s[4982]! } + public var Notifications_ClassicTones: String { return self._s[4983]! } + public var Conversation_StatusTyping: String { return self._s[4984]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4985]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4986]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4987]! } + public var Conversation_MessageLeaveComment: String { return self._s[4988]! } + public var UserInfo_TapToCall: String { return self._s[4989]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4990]! } public func ScheduleVoiceChat_ScheduleOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4990]!, self._r[4990]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4991]!, self._r[4991]!, [_0, _1]) } - public var Conversation_ClearAll: String { return self._s[4992]! } - public var UserInfo_NotificationsDefault: String { return self._s[4993]! } - public var Location_ProximityGroupTip: String { return self._s[4994]! } - public var Map_ChooseAPlace: String { return self._s[4995]! } - public var GroupInfo_AddParticipantTitle: String { return self._s[4997]! } - public var ChatList_PeerTypeNonContact: String { return self._s[4998]! } - public var Conversation_SlideToCancel: String { return self._s[4999]! } - public var Month_ShortJuly: String { return self._s[5000]! } - public var SocksProxySetup_ProxyType: String { return self._s[5001]! } + public var Conversation_ClearAll: String { return self._s[4993]! } + public var UserInfo_NotificationsDefault: String { return self._s[4994]! } + public var Location_ProximityGroupTip: String { return self._s[4995]! } + public var Map_ChooseAPlace: String { return self._s[4996]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[4998]! } + public var ChatList_PeerTypeNonContact: String { return self._s[4999]! } + public var Conversation_SlideToCancel: String { return self._s[5000]! } + public var Month_ShortJuly: String { return self._s[5001]! } + public var SocksProxySetup_ProxyType: String { return self._s[5002]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5002]!, self._r[5002]!, [_0]) + return formatWithArgumentRanges(self._s[5003]!, self._r[5003]!, [_0]) } - public var StickerPacks_ActionArchive: String { return self._s[5003]! } - public var ChatList_EditFolders: String { return self._s[5004]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[5005]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[5007]! } + public var StickerPacks_ActionArchive: String { return self._s[5004]! } + public var ChatList_EditFolders: String { return self._s[5005]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[5006]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[5008]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5008]!, self._r[5008]!, [_0]) + return formatWithArgumentRanges(self._s[5009]!, self._r[5009]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[5009]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[5010]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[5012]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[5010]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[5011]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[5013]! } public func Conversation_ScheduledVoiceChatStartsOnShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5014]!, self._r[5014]!, [_0]) + return formatWithArgumentRanges(self._s[5015]!, self._r[5015]!, [_0]) } - public var Passport_DeleteAddress: String { return self._s[5015]! } - public var Passport_DeletePassportConfirmation: String { return self._s[5016]! } - public var Passport_Identity_ReverseSide: String { return self._s[5017]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[5019]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[5020]! } - public var InviteLink_CreatedBy: String { return self._s[5021]! } - public var Passport_FieldAddress: String { return self._s[5022]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[5023]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[5026]! } - public var VoiceChat_Panel_TapToJoin: String { return self._s[5027]! } - public var Map_Home: String { return self._s[5028]! } - public var PollResults_Title: String { return self._s[5031]! } + public var Passport_DeleteAddress: String { return self._s[5016]! } + public var Passport_DeletePassportConfirmation: String { return self._s[5017]! } + public var Passport_Identity_ReverseSide: String { return self._s[5018]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[5020]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[5021]! } + public var InviteLink_CreatedBy: String { return self._s[5022]! } + public var Passport_FieldAddress: String { return self._s[5023]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[5024]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[5027]! } + public var VoiceChat_Panel_TapToJoin: String { return self._s[5028]! } + public var Map_Home: String { return self._s[5029]! } + public var PollResults_Title: String { return self._s[5032]! } public func InviteLink_OtherPermanentLinkInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5032]!, self._r[5032]!, [_1, _2]) + return formatWithArgumentRanges(self._s[5033]!, self._r[5033]!, [_1, _2]) } - public var ArchivedChats_IntroText2: String { return self._s[5034]! } - public var VoiceChat_VideoPreviewTitle: String { return self._s[5035]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[5036]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[5037]! } - public var VoiceChat_Muted: String { return self._s[5039]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[5040]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[5041]! } - public var Conversation_AutoremoveActionEnable: String { return self._s[5043]! } - public var Group_Info_AdminLog: String { return self._s[5044]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[5045]! } - public var Appearance_Animations: String { return self._s[5046]! } - public var Appearance_TextSizeSetting: String { return self._s[5047]! } - public func LastSeen_HoursAgo(_ value: Int32) -> String { + public var ArchivedChats_IntroText2: String { return self._s[5035]! } + public var VoiceChat_VideoPreviewTitle: String { return self._s[5036]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[5037]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[5038]! } + public var VoiceChat_Muted: String { return self._s[5040]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[5041]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[5042]! } + public var Conversation_AutoremoveActionEnable: String { return self._s[5044]! } + public var Group_Info_AdminLog: String { return self._s[5045]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[5046]! } + public var Appearance_Animations: String { return self._s[5047]! } + public var Appearance_TextSizeSetting: String { return self._s[5048]! } + public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + public func StickerPacks_DeleteStickerPacksConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Days(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedVideoMessages(_ value: Int32) -> String { + public func Stats_MessageViews(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedPolls(_ value: Int32) -> String { + public func ChatList_MessageMusic(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + public func LastSeen_HoursAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func InviteLink_PeopleJoined(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Photo(_ value: Int32) -> String { + public func PUSH_MESSAGE_FILES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MuteFor_Days(_ value: Int32) -> String { + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedStickers(_ value: Int32) -> String { + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedLocations(_ value: Int32) -> String { + public func ForwardedVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + public func ForwardedContacts(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + public func InviteLink_InviteLinks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) } - public func ScheduledIn_Months(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) } - public func ScheduledIn_Minutes(_ value: Int32) -> String { + public func MessagePoll_QuizCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { + public func UserCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func Notifications_Exceptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + public func InviteLink_PeopleJoinedShort(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + public func VoiceChat_Panel_Members(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) } - public func InstantPage_Views(_ value: Int32) -> String { + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_DOCS_FIX1(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminBans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(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 = getPluralizationForm(self.lc, selector) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Call_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_MessagesSelected(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Stats_GroupTopPosterChars(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FILES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPacks_DeleteStickerPacksConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteLink_PeopleCanJoin(_ value: Int32) -> String { - let form = getPluralizationForm(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 = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessageVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteLink_PeopleRemaining(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPacks_ArchiveStickerPacksConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_AutoremoveRemainingDays(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceChat_Panel_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceChat_Status_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_GroupFormat(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } public func Map_ETAMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func MuteFor_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) } public func ScheduledIn_Days(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_DeletedChats(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_Search_Messages(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func Conversation_SelectedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_AutoremoveRemainingDays(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_MessagesSelected(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_ContextViewReplies(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessageVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceChat_Status_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPacks_ArchiveStickerPacksConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, _1, _2) } - public func Contacts_InviteContacts(_ value: Int32) -> String { + public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_Seconds(_ value: Int32) -> String { + public func Stats_GroupTopAdminBans(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func MessageTimer_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func ChatList_SelectedChats(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) } public func Chat_MessagesUnpinned(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessagePhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ScheduledIn_Weeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_MessageViewComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_UnreadMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_Search_Messages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ScheduledIn_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PollResults_ShowMore(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteLink_PeopleRemaining(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_GroupFormat(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceChat_InviteLink_InviteListeners(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveWeek(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_ContextMenuSelectAll(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessageFiles(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) } - public func Chat_TitlePinnedMessages(_ value: Int32) -> String { + public func Stats_GroupTopPosterChars(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) } - public func ScheduledIn_Hours(_ value: Int32) -> String { + public func OldChannels_Leave(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) @@ -6086,175 +6096,171 @@ public final class PresentationStrings: Equatable { let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + public func ScheduledIn_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_ShortSeconds(_ value: Int32) -> String { + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_MessagePhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, _1, _2) } - public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) } - public func ScheduledIn_Years(_ value: Int32) -> String { + public func Notification_GameScoreExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Video(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = getPluralizationForm(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 = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func MuteExpires_Hours(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_MessageFiles(_ value: Int32) -> String { + public func Call_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortHours(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedVideos(_ value: Int32) -> String { + public func StickerPack_StickerCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, _0, _1) + public func Chat_TitlePinnedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + public func InviteLink_PeopleCanJoin(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Passport_Scans(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedContacts(_ value: Int32) -> String { + public func ScheduledIn_Years(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) } - public func InviteLink_InviteLinks(_ value: Int32) -> String { + public func Stats_MessageForwards(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceChat_InviteLink_InviteListeners(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_MessageViewComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, _1, _2) } public func Call_Days(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceChat_InviteLink_InviteSpeakers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Media_SharePhoto(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, _1, _2) } - public func ChatList_MessageMusic(_ value: Int32) -> String { + public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) } - public func UserCount(_ value: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) @@ -6263,194 +6269,189 @@ public final class PresentationStrings: Equatable { let form = getPluralizationForm(self.lc, selector) return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, _1, _2) } - public func Conversation_SelectedMessages(_ value: Int32) -> String { + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedFiles(_ value: Int32) -> String { + public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) } - public func Invitation_Members(_ value: Int32) -> String { + public func OldChannels_InactiveYear(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func Call_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + public func ForwardedLocations(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Days(_ value: Int32) -> String { + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_UnreadMessages(_ value: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ScheduledIn_Months(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_ContextMenuSelectAll(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGE_DOCS_FIX1(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func MessagePoll_QuizCount(_ value: Int32) -> String { + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[147 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceChat_InviteLink_InviteSpeakers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[148 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[148 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func InviteLink_PeopleJoined(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[149 * 6 + Int(form.rawValue)]!, stringValue) + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[149 * 6 + Int(form.rawValue)]!, _0, _1) } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[150 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSimple(_ value: Int32) -> String { + public func Conversation_TitleReplies(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[151 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[152 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[152 * 6 + Int(form.rawValue)]!, _1, _2) } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[153 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[154 * 6 + Int(form.rawValue)]!, stringValue) } - public func InviteLink_PeopleJoinedShort(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[155 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[155 * 6 + Int(form.rawValue)]!, _1, _2) } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + public func MessageTimer_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[156 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_Minutes(_ value: Int32) -> String { + public func MessageTimer_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[157 * 6 + Int(form.rawValue)]!, stringValue) } - public func ScheduledIn_Weeks(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[158 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_TitleReplies(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[159 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[160 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[161 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func Conversation_TitleComments(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[162 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_ContextViewReplies(_ value: Int32) -> String { + public func ForwardedStickers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[163 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[164 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[164 * 6 + Int(form.rawValue)]!, _1, _2) } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[165 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func Call_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[166 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[167 * 6 + Int(form.rawValue)]!, stringValue) } - public func ScheduledIn_Seconds(_ value: Int32) -> String { + public func Contacts_ImportersCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[168 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[169 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[169 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func OldChannels_Leave(_ value: Int32) -> String { + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[170 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + public func ScheduledIn_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[171 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_InactiveYear(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[172 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[173 * 6 + Int(form.rawValue)]!, _1, _2) + public func Map_ETAHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[173 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[174 * 6 + Int(form.rawValue)]!, _2, _1, _3) + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[174 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_MessageForwards(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[175 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramPresentationData/Sources/PresentationThemeCodable.swift b/submodules/TelegramPresentationData/Sources/PresentationThemeCodable.swift index b9afca5cc0..60cd56e581 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationThemeCodable.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationThemeCodable.swift @@ -40,7 +40,7 @@ extension TelegramWallpaper: Codable { if let value = try? values.decode(String.self) { switch value.lowercased() { case "builtin": - self = .builtin(WallpaperSettings()) + self = .builtin(nil, WallpaperSettings()) default: let optionKeys = ["motion", "blur"] diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index 1003c6a2c3..c608d17bf0 100644 Binary files a/submodules/TelegramUI/Resources/PresentationStrings.mapping and b/submodules/TelegramUI/Resources/PresentationStrings.mapping differ diff --git a/submodules/TelegramUI/Sources/AuthorizationSequenceAwaitingAccountResetController.swift b/submodules/TelegramUI/Sources/AuthorizationSequenceAwaitingAccountResetController.swift index 9f5b6e184c..360fe2ba62 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequenceAwaitingAccountResetController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequenceAwaitingAccountResetController.swift @@ -85,7 +85,7 @@ final class AuthorizationSequenceAwaitingAccountResetController: ViewController override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func logoutPressed() { diff --git a/submodules/TelegramUI/Sources/AuthorizationSequenceCodeEntryController.swift b/submodules/TelegramUI/Sources/AuthorizationSequenceCodeEntryController.swift index 8841d92eb3..c3df7fed14 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequenceCodeEntryController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequenceCodeEntryController.swift @@ -119,7 +119,7 @@ final class AuthorizationSequenceCodeEntryController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func nextPressed() { diff --git a/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift b/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift index 4d6e9c69b4..fcf193aa9b 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequenceController.swift @@ -25,7 +25,7 @@ private enum InnerState: Equatable { public final class AuthorizationSequenceController: NavigationController, MFMailComposeViewControllerDelegate { static func navigationBarTheme(_ theme: PresentationTheme) -> NavigationBarTheme { - return NavigationBarTheme(buttonColor: theme.intro.accentTextColor, disabledButtonColor: theme.intro.disabledTextColor, primaryTextColor: theme.intro.primaryTextColor, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: theme.rootController.navigationBar.badgeBackgroundColor, badgeStrokeColor: theme.rootController.navigationBar.badgeStrokeColor, badgeTextColor: theme.rootController.navigationBar.badgeTextColor) + return NavigationBarTheme(buttonColor: theme.intro.accentTextColor, disabledButtonColor: theme.intro.disabledTextColor, primaryTextColor: theme.intro.primaryTextColor, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: theme.rootController.navigationBar.badgeBackgroundColor, badgeStrokeColor: theme.rootController.navigationBar.badgeStrokeColor, badgeTextColor: theme.rootController.navigationBar.badgeTextColor) } private let sharedContext: SharedAccountContext diff --git a/submodules/TelegramUI/Sources/AuthorizationSequencePasswordEntryController.swift b/submodules/TelegramUI/Sources/AuthorizationSequencePasswordEntryController.swift index 1f40397b78..6a6afd619a 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequencePasswordEntryController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequencePasswordEntryController.swift @@ -116,7 +116,7 @@ final class AuthorizationSequencePasswordEntryController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func nextPressed() { diff --git a/submodules/TelegramUI/Sources/AuthorizationSequencePasswordRecoveryController.swift b/submodules/TelegramUI/Sources/AuthorizationSequencePasswordRecoveryController.swift index 4b9a2bc5a4..7897059ee7 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequencePasswordRecoveryController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequencePasswordRecoveryController.swift @@ -93,7 +93,7 @@ final class AuthorizationSequencePasswordRecoveryController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func nextPressed() { diff --git a/submodules/TelegramUI/Sources/AuthorizationSequencePhoneEntryController.swift b/submodules/TelegramUI/Sources/AuthorizationSequencePhoneEntryController.swift index 8bada79ec5..e8d01d97ed 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequencePhoneEntryController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequencePhoneEntryController.swift @@ -162,7 +162,7 @@ final class AuthorizationSequencePhoneEntryController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func nextPressed() { diff --git a/submodules/TelegramUI/Sources/AuthorizationSequenceSignUpController.swift b/submodules/TelegramUI/Sources/AuthorizationSequenceSignUpController.swift index 6b5a18f1b6..ddba34b80a 100644 --- a/submodules/TelegramUI/Sources/AuthorizationSequenceSignUpController.swift +++ b/submodules/TelegramUI/Sources/AuthorizationSequenceSignUpController.swift @@ -138,7 +138,7 @@ final class AuthorizationSequenceSignUpController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func nextPressed() { diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index f2c38d5094..5f304bdbcc 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -4524,7 +4524,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } else { isScheduledMessages = false } - strongSelf.chatDisplayNode.containerLayoutUpdated(validLayout, navigationBarHeight: strongSelf.navigationHeight, transition: .animated(duration: strongSelf.chatDisplayNode.messageTransitionNode.hasScheduledTransitions ? 0.5 : 0.3, curve: strongSelf.chatDisplayNode.messageTransitionNode.hasScheduledTransitions ? .custom(0.33, 0.0, 0.0, 1.0) : .spring), listViewTransaction: { updateSizeAndInsets, _, _, _ in + strongSelf.chatDisplayNode.containerLayoutUpdated(validLayout, navigationBarHeight: strongSelf.navigationLayout(layout: validLayout).navigationFrame.maxY, transition: .animated(duration: strongSelf.chatDisplayNode.messageTransitionNode.hasScheduledTransitions ? 0.5 : 0.3, curve: strongSelf.chatDisplayNode.messageTransitionNode.hasScheduledTransitions ? .custom(0.33, 0.0, 0.0, 1.0) : .spring), listViewTransaction: { updateSizeAndInsets, _, _, _ in var options = transition.options let _ = options.insert(.Synchronous) let _ = options.insert(.LowLatency) @@ -5627,7 +5627,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G return } - if let location = location, location.y < strongSelf.navigationHeight { + if let location = location, location.y < strongSelf.navigationLayout(layout: layout).navigationFrame.maxY { return } @@ -7314,7 +7314,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G self.suspendedNavigationBarLayout = layout return } - self.applyNavigationBarLayout(layout, additionalBackgroundHeight: self.additionalNavigationBarBackgroundHeight, transition: transition) + self.applyNavigationBarLayout(layout, navigationLayout: self.navigationLayout(layout: layout), additionalBackgroundHeight: self.additionalNavigationBarBackgroundHeight, transition: transition) } override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { @@ -7336,7 +7336,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } } - self.chatDisplayNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition, listViewTransaction: { updateSizeAndInsets, additionalScrollDistance, scrollToTop, completion in + self.chatDisplayNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition, listViewTransaction: { updateSizeAndInsets, additionalScrollDistance, scrollToTop, completion in self.chatDisplayNode.historyNode.updateLayout(transition: transition, updateSizeAndInsets: updateSizeAndInsets, additionalScrollDistance: additionalScrollDistance, scrollToTop: scrollToTop, completion: completion) }, updateExtraNavigationBarBackgroundHeight: { value in self.additionalNavigationBarBackgroundHeight = value @@ -7358,7 +7358,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G self.suspendNavigationBarLayout = false if let suspendedNavigationBarLayout = self.suspendedNavigationBarLayout { self.suspendedNavigationBarLayout = suspendedNavigationBarLayout - self.applyNavigationBarLayout(suspendedNavigationBarLayout, additionalBackgroundHeight: self.additionalNavigationBarBackgroundHeight, transition: transition) + self.applyNavigationBarLayout(suspendedNavigationBarLayout, navigationLayout: self.navigationLayout(layout: layout), additionalBackgroundHeight: self.additionalNavigationBarBackgroundHeight, transition: transition) } } diff --git a/submodules/TelegramUI/Sources/ChatControllerNode.swift b/submodules/TelegramUI/Sources/ChatControllerNode.swift index 4f735344bb..5846d3dda1 100644 --- a/submodules/TelegramUI/Sources/ChatControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatControllerNode.swift @@ -301,7 +301,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { guard let strongSelf = self else { return nil } - return strongSelf.titleAccessoryPanelContainer.view + return strongSelf.messageTransitionNode.view } self.setViewBlock({ @@ -372,19 +372,19 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { self.addSubnode(self.backgroundNode) self.addSubnode(self.historyNodeContainer) self.addSubnode(self.navigateButtons) - - self.addSubnode(self.inputPanelBackgroundNode) - self.addSubnode(self.inputPanelBackgroundSeparatorNode) - - self.addSubnode(self.inputContextPanelContainer) - - self.addSubnode(self.messageTransitionNode) if let navigationBar = self.navigationBar { self.addSubnode(navigationBar) } - self.addSubnode(self.titleAccessoryPanelContainer) + self.addSubnode(self.inputPanelBackgroundNode) + self.addSubnode(self.inputPanelBackgroundSeparatorNode) + + self.addSubnode(self.inputContextPanelContainer) + + self.addSubnode(self.messageTransitionNode) + + self.navigationBar?.additionalContentNode.addSubnode(self.titleAccessoryPanelContainer) self.historyNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tapGesture(_:)))) @@ -1218,12 +1218,10 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { if layout.additionalInsets.right > 0.0 { apparentNavigateButtonsFrame.origin.y -= 16.0 } - - apparentInputBackgroundFrame.size.height += 41.0 let previousInputPanelBackgroundFrame = self.inputPanelBackgroundNode.frame transition.updateFrame(node: self.inputPanelBackgroundNode, frame: apparentInputBackgroundFrame) - self.inputPanelBackgroundNode.update(size: apparentInputBackgroundFrame.size, transition: transition) + self.inputPanelBackgroundNode.update(size: CGSize(width: apparentInputBackgroundFrame.size.width, height: apparentInputBackgroundFrame.size.height + 41.0), transition: transition) transition.updateFrame(node: self.inputPanelBackgroundSeparatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: apparentInputBackgroundFrame.origin.y), size: CGSize(width: apparentInputBackgroundFrame.size.width, height: UIScreenPixel))) transition.updateFrame(node: self.navigateButtons, frame: apparentNavigateButtonsFrame) diff --git a/submodules/TelegramUI/Sources/ChatHistorySearchContainerNode.swift b/submodules/TelegramUI/Sources/ChatHistorySearchContainerNode.swift index bfdfe79955..7dc2c3308e 100644 --- a/submodules/TelegramUI/Sources/ChatHistorySearchContainerNode.swift +++ b/submodules/TelegramUI/Sources/ChatHistorySearchContainerNode.swift @@ -89,7 +89,7 @@ private enum ChatHistorySearchEntry: Comparable, Identifiable { func item(context: AccountContext, peerId: PeerId, interaction: ChatControllerInteraction) -> ListViewItem { switch self { case let .message(message, theme, strings, dateTimeFormat, fontSize): - return ListMessageItem(presentationData: ChatPresentationData(theme: ChatPresentationThemeData(theme: theme, wallpaper: .builtin(WallpaperSettings())), fontSize: fontSize, strings: strings, dateTimeFormat: dateTimeFormat, nameDisplayOrder: .firstLast, disableAnimations: false, largeEmoji: false, chatBubbleCorners: PresentationChatBubbleCorners(mainRadius: 0.0, auxiliaryRadius: 0.0, mergeBubbleCorners: false)), context: context, chatLocation: .peer(peerId), interaction: ListMessageItemInteraction(controllerInteraction: interaction), message: message, selection: .none, displayHeader: true) + return ListMessageItem(presentationData: ChatPresentationData(theme: ChatPresentationThemeData(theme: theme, wallpaper: .builtin(nil, WallpaperSettings())), fontSize: fontSize, strings: strings, dateTimeFormat: dateTimeFormat, nameDisplayOrder: .firstLast, disableAnimations: false, largeEmoji: false, chatBubbleCorners: PresentationChatBubbleCorners(mainRadius: 0.0, auxiliaryRadius: 0.0, mergeBubbleCorners: false)), context: context, chatLocation: .peer(peerId), interaction: ListMessageItemInteraction(controllerInteraction: interaction), message: message, selection: .none, displayHeader: true) } } } diff --git a/submodules/TelegramUI/Sources/ChatInfoTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatInfoTitlePanelNode.swift index 465bda5a41..811fd6b4eb 100644 --- a/submodules/TelegramUI/Sources/ChatInfoTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatInfoTitlePanelNode.swift @@ -199,7 +199,7 @@ final class ChatInfoTitlePanelNode: ChatTitleAccessoryPanelNode { } } - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: width, height: UIScreenPixel))) return LayoutResult(backgroundHeight: panelHeight, insetHeight: panelHeight) } diff --git a/submodules/TelegramUI/Sources/ChatInterfaceInputContexts.swift b/submodules/TelegramUI/Sources/ChatInterfaceInputContexts.swift index f52460975e..7be51fa7f1 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceInputContexts.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceInputContexts.swift @@ -208,7 +208,7 @@ func inputTextPanelStateForChatPresentationInterfaceState(_ chatPresentationInte let inputQueries = inputContextQueriesForChatPresentationIntefaceState(chatPresentationInterfaceState) for inputQuery in inputQueries { if case let .contextRequest(addressName, query) = inputQuery, query.isEmpty { - let baseFontSize: CGFloat = max(17.0, chatPresentationInterfaceState.fontSize.baseDisplaySize) + let baseFontSize: CGFloat = max(chatTextInputMinFontSize, chatPresentationInterfaceState.fontSize.baseDisplaySize) let string = NSMutableAttributedString() string.append(NSAttributedString(string: "@" + addressName, font: Font.regular(baseFontSize), textColor: UIColor.clear)) diff --git a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift index 2beaf1ea5b..4b39c527e7 100644 --- a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift @@ -303,7 +303,7 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { transition.updateFrame(node: self.activityIndicatorContainer, frame: CGRect(origin: CGPoint(x: width - rightInset - indicatorSize.width + 5.0, y: 15.0), size: indicatorSize)) transition.updateFrame(node: self.activityIndicator, frame: CGRect(origin: CGPoint(), size: indicatorSize)) - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: width, height: UIScreenPixel))) self.tapButton.frame = CGRect(origin: CGPoint(), size: CGSize(width: width - rightInset - closeButtonSize.width - 4.0, height: panelHeight)) self.clippingContainer.frame = CGRect(origin: CGPoint(), size: CGSize(width: width, height: panelHeight)) diff --git a/submodules/TelegramUI/Sources/ChatRecentActionsController.swift b/submodules/TelegramUI/Sources/ChatRecentActionsController.swift index de27437a8d..19da1eb2ee 100644 --- a/submodules/TelegramUI/Sources/ChatRecentActionsController.swift +++ b/submodules/TelegramUI/Sources/ChatRecentActionsController.swift @@ -204,7 +204,7 @@ final class ChatRecentActionsController: TelegramBaseController { childrenLayout.intrinsicInsets.bottom += 49.0 self.presentationContext.containerLayoutUpdated(childrenLayout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func activateSearch() { diff --git a/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift index 9656ca9033..f85a36cd57 100644 --- a/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatReportPeerTitlePanelNode.swift @@ -434,7 +434,7 @@ final class ChatReportPeerTitlePanelNode: ChatTitleAccessoryPanelNode { } let initialPanelHeight = panelHeight - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: width, height: UIScreenPixel))) var chatPeer: Peer? if let renderedPeer = interfaceState.renderedPeer { diff --git a/submodules/TelegramUI/Sources/ChatRequestInProgressTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatRequestInProgressTitlePanelNode.swift index afddcbec2e..f7e0421690 100644 --- a/submodules/TelegramUI/Sources/ChatRequestInProgressTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatRequestInProgressTitlePanelNode.swift @@ -43,7 +43,7 @@ final class ChatRequestInProgressTitlePanelNode: ChatTitleAccessoryPanelNode { let titleSize = self.titleNode.updateLayout(CGSize(width: width - leftInset - rightInset, height: 100.0)) transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floor((width - titleSize.width) / 2.0), y: floor((panelHeight - titleSize.height) / 2.0)), size: titleSize)) - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: width, height: UIScreenPixel))) return LayoutResult(backgroundHeight: panelHeight, insetHeight: panelHeight) } diff --git a/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift b/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift index c310880aa2..f60cd888f2 100644 --- a/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift +++ b/submodules/TelegramUI/Sources/ChatScheduleTimeController.swift @@ -107,6 +107,6 @@ final class ChatScheduleTimeController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/TelegramUI/Sources/ChatSearchNavigationContentNode.swift b/submodules/TelegramUI/Sources/ChatSearchNavigationContentNode.swift index 733969305f..5875966f27 100644 --- a/submodules/TelegramUI/Sources/ChatSearchNavigationContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatSearchNavigationContentNode.swift @@ -29,7 +29,7 @@ final class ChatSearchNavigationContentNode: NavigationBarContentNode { self.chatLocation = chatLocation self.interaction = interaction - self.searchBar = SearchBarNode(theme: SearchBarNodeTheme(theme: theme, hasSeparator: false), strings: strings, fieldStyle: .modern) + self.searchBar = SearchBarNode(theme: SearchBarNodeTheme(theme: theme, hasBackground: false, hasSeparator: false), strings: strings, fieldStyle: .modern) let placeholderText: String switch chatLocation { case .peer, .replyThread: @@ -96,7 +96,7 @@ final class ChatSearchNavigationContentNode: NavigationBarContentNode { func update(presentationInterfaceState: ChatPresentationInterfaceState) { if let search = presentationInterfaceState.search { - self.searchBar.updateThemeAndStrings(theme: SearchBarNodeTheme(theme: presentationInterfaceState.theme, hasSeparator: false), strings: presentationInterfaceState.strings) + self.searchBar.updateThemeAndStrings(theme: SearchBarNodeTheme(theme: presentationInterfaceState.theme, hasBackground: false, hasSeparator: false), strings: presentationInterfaceState.strings) switch search.domain { case .everything: diff --git a/submodules/TelegramUI/Sources/ChatSearchResultsController.swift b/submodules/TelegramUI/Sources/ChatSearchResultsController.swift index 313a5eb0dd..09b180cb4e 100644 --- a/submodules/TelegramUI/Sources/ChatSearchResultsController.swift +++ b/submodules/TelegramUI/Sources/ChatSearchResultsController.swift @@ -79,7 +79,7 @@ final class ChatSearchResultsController: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc private func donePressed() { diff --git a/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift b/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift index 318cee28ea..06675f5908 100644 --- a/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatTextInputPanelNode.swift @@ -137,7 +137,9 @@ private final class AccessoryItemIconButtonNode: HighlightTrackingButtonNode { } } -private let minInputFontSize: CGFloat = 5.0 +let chatTextInputMinFontSize: CGFloat = 5.0 + +private let minInputFontSize = chatTextInputMinFontSize private func calclulateTextFieldMinHeight(_ presentationInterfaceState: ChatPresentationInterfaceState, metrics: LayoutMetrics) -> CGFloat { let baseFontSize = max(minInputFontSize, presentationInterfaceState.fontSize.baseDisplaySize) diff --git a/submodules/TelegramUI/Sources/ChatTimerScreen.swift b/submodules/TelegramUI/Sources/ChatTimerScreen.swift index a529d71497..b229c1e287 100644 --- a/submodules/TelegramUI/Sources/ChatTimerScreen.swift +++ b/submodules/TelegramUI/Sources/ChatTimerScreen.swift @@ -101,7 +101,7 @@ final class ChatTimerScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/TelegramUI/Sources/ChatToastAlertPanelNode.swift b/submodules/TelegramUI/Sources/ChatToastAlertPanelNode.swift index cf2b5203ff..a29e529ead 100644 --- a/submodules/TelegramUI/Sources/ChatToastAlertPanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatToastAlertPanelNode.swift @@ -45,7 +45,7 @@ final class ChatToastAlertPanelNode: ChatTitleAccessoryPanelNode { self.textColor = interfaceState.theme.rootController.navigationBar.primaryTextColor self.separatorNode.backgroundColor = interfaceState.theme.chat.historyNavigation.strokeColor - transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel))) + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: width, height: UIScreenPixel))) let titleSize = self.titleNode.updateLayout(CGSize(width: width - leftInset - rightInset - 20.0, height: 100.0)) self.titleNode.frame = CGRect(origin: CGPoint(x: floor((width - titleSize.width) / 2.0), y: floor((panelHeight - titleSize.height) / 2.0)), size: titleSize) diff --git a/submodules/TelegramUI/Sources/ComposeController.swift b/submodules/TelegramUI/Sources/ComposeController.swift index 60ca4c40fa..cf1f47b27f 100644 --- a/submodules/TelegramUI/Sources/ComposeController.swift +++ b/submodules/TelegramUI/Sources/ComposeController.swift @@ -284,7 +284,7 @@ public class ComposeControllerImpl: ViewController, ComposeController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func activateSearch() { diff --git a/submodules/TelegramUI/Sources/ContactMultiselectionController.swift b/submodules/TelegramUI/Sources/ContactMultiselectionController.swift index d3f55ee3e1..b24609744e 100644 --- a/submodules/TelegramUI/Sources/ContactMultiselectionController.swift +++ b/submodules/TelegramUI/Sources/ContactMultiselectionController.swift @@ -529,7 +529,7 @@ class ContactMultiselectionControllerImpl: ViewController, ContactMultiselection override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func cancelPressed() { diff --git a/submodules/TelegramUI/Sources/ContactSelectionController.swift b/submodules/TelegramUI/Sources/ContactSelectionController.swift index e8988a0757..317f3cfeef 100644 --- a/submodules/TelegramUI/Sources/ContactSelectionController.swift +++ b/submodules/TelegramUI/Sources/ContactSelectionController.swift @@ -257,7 +257,7 @@ class ContactSelectionControllerImpl: ViewController, ContactSelectionController override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.contactsNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } private func activateSearch() { diff --git a/submodules/TelegramUI/Sources/FeaturedStickersScreen.swift b/submodules/TelegramUI/Sources/FeaturedStickersScreen.swift index fcaac82741..2554f0722f 100644 --- a/submodules/TelegramUI/Sources/FeaturedStickersScreen.swift +++ b/submodules/TelegramUI/Sources/FeaturedStickersScreen.swift @@ -809,7 +809,7 @@ final class FeaturedStickersScreen: ViewController { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift index 59eea97116..36090c50a9 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoHeaderNode.swift @@ -1655,10 +1655,10 @@ final class PeerInfoHeaderNode: ASDisplayNode { let usernameNodeRawContainer: ASDisplayNode let usernameNode: MultiScaleTextNode var buttonNodes: [PeerInfoHeaderButtonKey: PeerInfoHeaderButtonNode] = [:] - private let backgroundNode: ASDisplayNode - private let expandedBackgroundNode: ASDisplayNode + private let backgroundNode: NavigationBackgroundNode + private let expandedBackgroundNode: NavigationBackgroundNode let separatorNode: ASDisplayNode - let navigationBackgroundNode: ASDisplayNode + let navigationBackgroundNode: NavigationBackgroundNode var navigationTitle: String? let navigationTitleNode: ImmediateTextNode let navigationSeparatorNode: ASDisplayNode @@ -1720,7 +1720,8 @@ final class PeerInfoHeaderNode: ASDisplayNode { self.avatarOverlayNode = PeerInfoEditingAvatarOverlayNode(context: context) self.avatarOverlayNode.isUserInteractionEnabled = false - self.navigationBackgroundNode = ASDisplayNode() + self.navigationBackgroundNode = NavigationBackgroundNode(color: .clear) + self.navigationBackgroundNode.isHidden = true self.navigationBackgroundNode.isUserInteractionEnabled = false self.navigationTitleNode = ImmediateTextNode() @@ -1729,10 +1730,12 @@ final class PeerInfoHeaderNode: ASDisplayNode { self.navigationButtonContainer = PeerInfoHeaderNavigationButtonContainerNode() - self.backgroundNode = ASDisplayNode() - self.backgroundNode.isLayerBacked = true - self.expandedBackgroundNode = ASDisplayNode() - self.expandedBackgroundNode.isLayerBacked = true + self.backgroundNode = NavigationBackgroundNode(color: .clear) + self.backgroundNode.isHidden = true + self.backgroundNode.isUserInteractionEnabled = false + self.expandedBackgroundNode = NavigationBackgroundNode(color: .clear) + self.expandedBackgroundNode.isHidden = false + self.expandedBackgroundNode.isUserInteractionEnabled = false self.separatorNode = ASDisplayNode() self.separatorNode.isLayerBacked = true @@ -1943,24 +1946,24 @@ final class PeerInfoHeaderNode: ASDisplayNode { var transitionSourceTitleFrame = CGRect() var transitionSourceSubtitleFrame = CGRect() - self.backgroundNode.backgroundColor = presentationData.theme.list.itemBlocksBackgroundColor - self.expandedBackgroundNode.backgroundColor = presentationData.theme.rootController.navigationBar.backgroundColor + self.backgroundNode.color = presentationData.theme.rootController.navigationBar.backgroundColor if let navigationTransition = self.navigationTransition, let sourceAvatarNode = (navigationTransition.sourceNavigationBar.rightButtonNode.singleCustomNode as? ChatAvatarNavigationNode)?.avatarNode { - transitionSourceHeight = navigationTransition.sourceNavigationBar.bounds.height + transitionSourceHeight = navigationTransition.sourceNavigationBar.backgroundNode.bounds.height transitionFraction = navigationTransition.fraction transitionSourceAvatarFrame = sourceAvatarNode.view.convert(sourceAvatarNode.view.bounds, to: navigationTransition.sourceNavigationBar.view) transitionSourceTitleFrame = navigationTransition.sourceTitleFrame transitionSourceSubtitleFrame = navigationTransition.sourceSubtitleFrame - - transition.updateAlpha(node: self.expandedBackgroundNode, alpha: transitionFraction) + + self.expandedBackgroundNode.updateColor(color: presentationData.theme.rootController.navigationBar.backgroundColor.mixedWith(presentationData.theme.list.itemBlocksBackgroundColor, alpha: 1.0 - transitionFraction), forceKeepBlur: true, transition: transition) if self.isAvatarExpanded, case .animated = transition, transitionFraction == 1.0 { self.avatarListNode.animateAvatarCollapse(transition: transition) } } else { let backgroundTransitionFraction: CGFloat = max(0.0, min(1.0, contentOffset / (112.0 + avatarSize))) - transition.updateAlpha(node: self.expandedBackgroundNode, alpha: backgroundTransitionFraction) + + self.expandedBackgroundNode.updateColor(color: presentationData.theme.rootController.navigationBar.backgroundColor.mixedWith(presentationData.theme.list.itemBlocksBackgroundColor, alpha: 1.0 - backgroundTransitionFraction), forceKeepBlur: true, transition: transition) } self.avatarListNode.avatarContainerNode.updateTransitionFraction(transitionFraction, transition: transition) @@ -1975,8 +1978,9 @@ final class PeerInfoHeaderNode: ASDisplayNode { self.navigationTitleNode.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((width - navigationTitleSize.width) / 2.0), y: navigationHeight - 44.0 + floorToScreenPixels((44.0 - navigationTitleSize.height) / 2.0)), size: navigationTitleSize) self.navigationBackgroundNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: width, height: navigationHeight)) + self.navigationBackgroundNode.update(size: self.navigationBackgroundNode.bounds.size, transition: .immediate) self.navigationSeparatorNode.frame = CGRect(origin: CGPoint(x: 0.0, y: navigationHeight), size: CGSize(width: width, height: UIScreenPixel)) - self.navigationBackgroundNode.backgroundColor = presentationData.theme.rootController.navigationBar.backgroundColor + self.navigationBackgroundNode.color = presentationData.theme.rootController.navigationBar.backgroundColor self.navigationSeparatorNode.backgroundColor = presentationData.theme.rootController.navigationBar.separatorColor transition.updateAlpha(node: self.navigationBackgroundNode, alpha: state.isEditing && self.isSettings ? min(1.0, contentOffset / (navigationHeight * 0.5)) : 0.0) self.separatorNode.backgroundColor = presentationData.theme.list.itemBlocksSeparatorColor @@ -2531,11 +2535,15 @@ final class PeerInfoHeaderNode: ASDisplayNode { if additive { transition.updateFrameAdditive(node: self.backgroundNode, frame: backgroundFrame) + self.backgroundNode.update(size: self.backgroundNode.bounds.size, transition: transition) transition.updateFrameAdditive(node: self.expandedBackgroundNode, frame: backgroundFrame) + self.expandedBackgroundNode.update(size: self.expandedBackgroundNode.bounds.size, transition: transition) transition.updateFrameAdditive(node: self.separatorNode, frame: separatorFrame) } else { transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame) + self.backgroundNode.update(size: self.backgroundNode.bounds.size, transition: transition) transition.updateFrame(node: self.expandedBackgroundNode, frame: backgroundFrame) + self.expandedBackgroundNode.update(size: self.expandedBackgroundNode.bounds.size, transition: transition) transition.updateFrame(node: self.separatorNode, frame: separatorFrame) } diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoPaneContainerNode.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoPaneContainerNode.swift index 364e623c43..7eb018e8dd 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoPaneContainerNode.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoPaneContainerNode.swift @@ -433,7 +433,7 @@ final class PeerInfoPaneContainerNode: ASDisplayNode, UIGestureRecognizerDelegat weak var parentController: ViewController? - private let coveringBackgroundNode: ASDisplayNode + private let coveringBackgroundNode: NavigationBackgroundNode private let separatorNode: ASDisplayNode private let tabsContainerNode: PeerInfoPaneTabsContainerNode private let tabsSeparatorNode: ASDisplayNode @@ -477,8 +477,8 @@ final class PeerInfoPaneContainerNode: ASDisplayNode, UIGestureRecognizerDelegat self.separatorNode = ASDisplayNode() self.separatorNode.isLayerBacked = true - self.coveringBackgroundNode = ASDisplayNode() - self.coveringBackgroundNode.isLayerBacked = true + self.coveringBackgroundNode = NavigationBackgroundNode(color: .clear) + self.coveringBackgroundNode.isUserInteractionEnabled = false self.tabsContainerNode = PeerInfoPaneTabsContainerNode() @@ -692,7 +692,7 @@ final class PeerInfoPaneContainerNode: ASDisplayNode, UIGestureRecognizerDelegat transition.updateAlpha(node: self.coveringBackgroundNode, alpha: expansionFraction) self.backgroundColor = presentationData.theme.list.itemBlocksBackgroundColor - self.coveringBackgroundNode.backgroundColor = presentationData.theme.rootController.navigationBar.backgroundColor + self.coveringBackgroundNode.color = presentationData.theme.rootController.navigationBar.backgroundColor self.separatorNode.backgroundColor = presentationData.theme.list.itemBlocksSeparatorColor self.tabsSeparatorNode.backgroundColor = presentationData.theme.list.itemBlocksSeparatorColor @@ -700,6 +700,7 @@ final class PeerInfoPaneContainerNode: ASDisplayNode, UIGestureRecognizerDelegat transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: -UIScreenPixel), size: CGSize(width: size.width, height: UIScreenPixel))) transition.updateFrame(node: self.coveringBackgroundNode, frame: CGRect(origin: CGPoint(x: 0.0, y: -UIScreenPixel), size: CGSize(width: size.width, height: tabsHeight + UIScreenPixel))) + self.coveringBackgroundNode.update(size: self.coveringBackgroundNode.bounds.size, transition: transition) transition.updateFrame(node: self.tabsSeparatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: tabsHeight - UIScreenPixel), size: CGSize(width: size.width, height: UIScreenPixel))) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index cc2caf7b86..2d9bdfef93 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -5673,7 +5673,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD if self.isSettings { if let settings = self.data?.globalSettings { - self.searchDisplayController = SearchDisplayController(presentationData: self.presentationData, mode: .list, placeholder: self.presentationData.strings.Settings_Search, hasSeparator: true, contentNode: SettingsSearchContainerNode(context: self.context, openResult: { [weak self] result in + self.searchDisplayController = SearchDisplayController(presentationData: self.presentationData, mode: .list, placeholder: self.presentationData.strings.Settings_Search, hasBackground: true, hasSeparator: true, contentNode: SettingsSearchContainerNode(context: self.context, openResult: { [weak self] result in if let strongSelf = self, let navigationController = strongSelf.controller?.navigationController as? NavigationController { result.present(strongSelf.context, navigationController, { [weak self] mode, controller in if let strongSelf = self { @@ -5724,7 +5724,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD } } - self.searchDisplayController = SearchDisplayController(presentationData: self.presentationData, mode: .list, placeholder: self.presentationData.strings.Common_Search, contentNode: ChatHistorySearchContainerNode(context: self.context, peerId: self.peerId, tagMask: tagMask, interfaceInteraction: self.chatInterfaceInteraction), cancel: { [weak self] in + self.searchDisplayController = SearchDisplayController(presentationData: self.presentationData, mode: .list, placeholder: self.presentationData.strings.Common_Search, hasBackground: true, contentNode: ChatHistorySearchContainerNode(context: self.context, peerId: self.peerId, tagMask: tagMask, interfaceInteraction: self.chatInterfaceInteraction), cancel: { [weak self] in self?.deactivateSearch() }) } @@ -6229,6 +6229,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD disabledButtonColor: baseNavigationBarPresentationData.theme.disabledButtonColor, primaryTextColor: baseNavigationBarPresentationData.theme.primaryTextColor, backgroundColor: .clear, + enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: baseNavigationBarPresentationData.theme.badgeBackgroundColor, badgeStrokeColor: baseNavigationBarPresentationData.theme.badgeStrokeColor, @@ -6362,6 +6363,7 @@ public final class PeerInfoScreenImpl: ViewController, PeerInfoScreen { disabledButtonColor: baseNavigationBarPresentationData.theme.disabledButtonColor, primaryTextColor: baseNavigationBarPresentationData.theme.primaryTextColor, backgroundColor: .clear, + enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: baseNavigationBarPresentationData.theme.badgeBackgroundColor, badgeStrokeColor: baseNavigationBarPresentationData.theme.badgeStrokeColor, @@ -6654,7 +6656,7 @@ public final class PeerInfoScreenImpl: ViewController, PeerInfoScreen { override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - let navigationHeight = self.isSettings ? (self.navigationBar?.frame.height ?? 0.0) : self.navigationHeight + let navigationHeight = self.isSettings ? (self.navigationBar?.frame.height ?? 0.0) : self.navigationLayout(layout: layout).navigationFrame.maxY self.validLayout = (layout, navigationHeight) self.controllerNode.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: transition) @@ -6754,7 +6756,7 @@ final class PeerInfoNavigationSourceTag { private final class PeerInfoNavigationTransitionNode: ASDisplayNode, CustomNavigationTransitionNode { private let screenNode: PeerInfoScreenNode private let presentationData: PresentationData - + private var topNavigationBar: NavigationBar? private var bottomNavigationBar: NavigationBar? private var reverseFraction: Bool = false @@ -6796,6 +6798,8 @@ private final class PeerInfoNavigationTransitionNode: ASDisplayNode, CustomNavig bottomNavigationBar.isHidden = true if let topNavigationBar = self.topNavigationBar, let bottomNavigationBar = self.bottomNavigationBar { + self.addSubnode(bottomNavigationBar.additionalContentNode) + if let previousBackButtonArrow = bottomNavigationBar.makeTransitionBackArrowNode(accentColor: self.presentationData.theme.rootController.navigationBar.accentTextColor) { self.previousBackButtonArrow = previousBackButtonArrow self.addSubnode(previousBackButtonArrow) @@ -6878,8 +6882,9 @@ private final class PeerInfoNavigationTransitionNode: ASDisplayNode, CustomNavig let previousStatusFrame = previousTitleView.activityNode.view.convert(previousTitleView.activityNode.bounds, to: bottomNavigationBar.view) self.headerNode.navigationTransition = PeerInfoHeaderNavigationTransition(sourceNavigationBar: bottomNavigationBar, sourceTitleView: previousTitleView, sourceTitleFrame: previousTitleFrame, sourceSubtitleFrame: previousStatusFrame, fraction: fraction) + var topHeight = topNavigationBar.backgroundNode.bounds.height if let (layout, _) = self.screenNode.validLayout { - let _ = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: topNavigationBar.bounds.height, isModalOverlay: layout.isModalOverlay, isMediaOnly: false, contentOffset: 0.0, presentationData: self.presentationData, peer: self.screenNode.data?.peer, cachedData: self.screenNode.data?.cachedData, notificationSettings: self.screenNode.data?.notificationSettings, statusData: self.screenNode.data?.status, isSecretChat: self.screenNode.peerId.namespace == Namespaces.Peer.SecretChat, isContact: self.screenNode.data?.isContact ?? false, isSettings: self.screenNode.isSettings, state: self.screenNode.state, transition: transition, additive: false) + topHeight = self.headerNode.update(width: layout.size.width, containerHeight: layout.size.height, containerInset: layout.safeInsets.left, statusBarHeight: layout.statusBarHeight ?? 0.0, navigationHeight: topNavigationBar.bounds.height, isModalOverlay: layout.isModalOverlay, isMediaOnly: false, contentOffset: 0.0, presentationData: self.presentationData, peer: self.screenNode.data?.peer, cachedData: self.screenNode.data?.cachedData, notificationSettings: self.screenNode.data?.notificationSettings, statusData: self.screenNode.data?.status, isSecretChat: self.screenNode.peerId.namespace == Namespaces.Peer.SecretChat, isContact: self.screenNode.data?.isContact ?? false, isSettings: self.screenNode.isSettings, state: self.screenNode.state, transition: transition, additive: false) } let titleScale = (fraction * previousTitleNode.bounds.height + (1.0 - fraction) * self.headerNode.titleNodeRawContainer.bounds.height) / previousTitleNode.bounds.height @@ -6899,6 +6904,21 @@ private final class PeerInfoNavigationTransitionNode: ASDisplayNode, CustomNavig transition.updateAlpha(node: previousStatusNode, alpha: fraction) transition.updateAlpha(node: self.headerNode.navigationButtonContainer, alpha: (1.0 - fraction)) + + if case let .animated(duration, _) = transition, (bottomNavigationBar.additionalContentNode.alpha.isZero || bottomNavigationBar.additionalContentNode.alpha == 1.0) { + bottomNavigationBar.additionalContentNode.alpha = fraction + if fraction.isZero { + bottomNavigationBar.additionalContentNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15) + } else { + transition.updateAlpha(node: bottomNavigationBar.additionalContentNode, alpha: fraction) + } + } else { + transition.updateAlpha(node: bottomNavigationBar.additionalContentNode, alpha: fraction) + } + + let bottomHeight = bottomNavigationBar.backgroundNode.bounds.height + + transition.updateSublayerTransformOffset(layer: bottomNavigationBar.additionalContentNode.layer, offset: CGPoint(x: 0.0, y: (1.0 - fraction) * (topHeight - bottomHeight))) } } @@ -6906,6 +6926,14 @@ private final class PeerInfoNavigationTransitionNode: ASDisplayNode, CustomNavig guard let topNavigationBar = self.topNavigationBar, let bottomNavigationBar = self.bottomNavigationBar else { return } + + topNavigationBar.additionalContentNode.alpha = 1.0 + ContainedViewLayoutTransition.immediate.updateSublayerTransformOffset(layer: topNavigationBar.additionalContentNode.layer, offset: CGPoint()) + topNavigationBar.reattachAdditionalContentNode() + + bottomNavigationBar.additionalContentNode.alpha = 1.0 + ContainedViewLayoutTransition.immediate.updateSublayerTransformOffset(layer: bottomNavigationBar.additionalContentNode.layer, offset: CGPoint()) + bottomNavigationBar.reattachAdditionalContentNode() topNavigationBar.isHidden = false bottomNavigationBar.isHidden = false diff --git a/submodules/TelegramUI/Sources/PeerSelectionController.swift b/submodules/TelegramUI/Sources/PeerSelectionController.swift index bb319bd801..92b555de7b 100644 --- a/submodules/TelegramUI/Sources/PeerSelectionController.swift +++ b/submodules/TelegramUI/Sources/PeerSelectionController.swift @@ -217,7 +217,7 @@ public final class PeerSelectionControllerImpl: ViewController, PeerSelectionCon override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) - self.peerSelectionNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationInsetHeight, actualNavigationBarHeight: self.navigationHeight, transition: transition) + self.peerSelectionNode.containerLayoutUpdated(layout, navigationBarHeight: self.cleanNavigationHeight, actualNavigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } @objc func cancelPressed() { diff --git a/submodules/TelegramUI/Sources/ShareExtensionContext.swift b/submodules/TelegramUI/Sources/ShareExtensionContext.swift index 29b1b991cd..0db057c5e0 100644 --- a/submodules/TelegramUI/Sources/ShareExtensionContext.swift +++ b/submodules/TelegramUI/Sources/ShareExtensionContext.swift @@ -630,7 +630,8 @@ public class ShareRootControllerImpl { super.containerLayoutUpdated(layout, transition: transition) let indicatorSize = self.activityIndicator.measure(CGSize(width: 100.0, height: 100.0)) - transition.updateFrame(node: self.activityIndicator, frame: CGRect(origin: CGPoint(x: floor((layout.size.width - indicatorSize.width) / 2.0), y: self.navigationHeight + floor((layout.size.height - self.navigationHeight - indicatorSize.height) / 2.0)), size: indicatorSize)) + let navigationHeight = self.navigationLayout(layout: layout).navigationFrame.maxY + transition.updateFrame(node: self.activityIndicator, frame: CGRect(origin: CGPoint(x: floor((layout.size.width - indicatorSize.width) / 2.0), y: navigationHeight + floor((layout.size.height - navigationHeight - indicatorSize.height) / 2.0)), size: indicatorSize)) } } diff --git a/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift b/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift index 672c0e7060..3a2f8162b4 100644 --- a/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift +++ b/submodules/TelegramUniversalVideoContent/Sources/NativeVideoContent.swift @@ -10,6 +10,7 @@ import TelegramAudio import UniversalMediaPlayer import AccountContext import PhotoResources +import UIKitRuntimeUtils public enum NativeVideoContentId: Hashable { case message(UInt32, MediaId) diff --git a/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIViewController+Navigation.h b/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIViewController+Navigation.h index ac34185f2b..733fba2371 100644 --- a/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIViewController+Navigation.h +++ b/submodules/UIKitRuntimeUtils/Source/UIKitRuntimeUtils/UIViewController+Navigation.h @@ -23,7 +23,7 @@ typedef NS_OPTIONS(NSUInteger, UIResponderDisableAutomaticKeyboardHandling) { @property (nonatomic) bool disablesInteractiveTransitionGestureRecognizer; @property (nonatomic) bool disablesInteractiveKeyboardGestureRecognizer; @property (nonatomic) bool disablesInteractiveModalDismiss; -@property (nonatomic, copy) bool (^ disablesInteractiveTransitionGestureRecognizerNow)(); +@property (nonatomic, copy) bool (^ _Nullable disablesInteractiveTransitionGestureRecognizerNow)(); @property (nonatomic) UIResponderDisableAutomaticKeyboardHandling disableAutomaticKeyboardHandling; @@ -41,3 +41,17 @@ void applyKeyboardAutocorrection(); @property (nonatomic, copy) UIInterfaceOrientationMask (^ _Nullable supportedOrientations)(void); @end + +/*@interface _UIPortalView : UIView + +- (void)setSourceView:(UIView * _Nullable)sourceView; +- (bool)hidesSourceView; +- (void)setHidesSourceView:(bool)arg1; +- (void)setMatchesAlpha:(bool)arg1; +- (void)setMatchesPosition:(bool)arg1; +- (void)setMatchesTransform:(bool)arg1; +- (bool)matchesTransform; +- (bool)matchesPosition; +- (bool)matchesAlpha; + +@end*/ diff --git a/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift b/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift index 4c3b115f16..0bbe798466 100644 --- a/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift +++ b/submodules/WallpaperBackgroundNode/Sources/WallpaperBackgroundNode.swift @@ -93,12 +93,15 @@ public final class WallpaperBackgroundNode: ASDisplayNode { } self.wallpaper = wallpaper - if wallpaper.isBuiltin { + if case let .builtin(gradient, _) = wallpaper { if self.gradientBackgroundNode == nil { let gradientBackgroundNode = createGradientBackgroundNode() self.gradientBackgroundNode = gradientBackgroundNode self.addSubnode(gradientBackgroundNode) } + self.gradientBackgroundNode?.updateColors(colors: gradient?.colors.map({ color -> UIColor in + return UIColor(rgb: color) + }) ?? defaultBuiltinWallpaperGradientColors) self.contentNode.isHidden = true } else { if let gradientBackgroundNode = self.gradientBackgroundNode { @@ -143,7 +146,7 @@ public final class WallpaperBackgroundNode: ASDisplayNode { return } switch wallpaper { - case let .builtin(settings): + case let .builtin(_, settings): if !settings.motion { //return } diff --git a/submodules/WebSearchUI/Sources/WebSearchController.swift b/submodules/WebSearchUI/Sources/WebSearchController.swift index 520985529b..9272ed5519 100644 --- a/submodules/WebSearchUI/Sources/WebSearchController.swift +++ b/submodules/WebSearchUI/Sources/WebSearchController.swift @@ -509,6 +509,6 @@ public final class WebSearchController: ViewController { self.validLayout = layout - self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } } diff --git a/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift b/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift index 8ac722a45e..5f27d7b151 100644 --- a/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift +++ b/submodules/WebSearchUI/Sources/WebSearchGalleryController.swift @@ -62,7 +62,7 @@ final class WebSearchGalleryControllerPresentationArguments { } class WebSearchGalleryController: ViewController { - private static let navigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: .clear, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) + private static let navigationTheme = NavigationBarTheme(buttonColor: .white, disabledButtonColor: UIColor(rgb: 0x525252), primaryTextColor: .white, backgroundColor: .clear, enableBackgroundBlur: false, separatorColor: .clear, badgeBackgroundColor: .clear, badgeStrokeColor: .clear, badgeTextColor: .clear) private var galleryNode: GalleryControllerNode { return self.displayNode as! GalleryControllerNode @@ -342,6 +342,6 @@ class WebSearchGalleryController: ViewController { super.containerLayoutUpdated(layout, transition: transition) self.galleryNode.frame = CGRect(origin: CGPoint(), size: layout.size) - self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + self.galleryNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) } }