From c64c16b8eee0718afbd0638708cb04f9b06d1a56 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Wed, 25 Sep 2019 00:57:46 +0400 Subject: [PATCH] Wallet improvements --- Makefile | 6 + SiriIntents/IntentHandler.swift | 20 +- Telegram-iOS/en.lproj/Localizable.strings | 18 + submodules/BuildConfig/Sources/BuildConfig.h | 5 +- submodules/BuildConfig/Sources/BuildConfig.m | 248 +- submodules/Display/Display/ListView.swift | 2 + .../Navigation/NavigationContainer.swift | 19 +- .../Navigation/NavigationController.swift | 13 + .../Sources/LegacyDataImport.swift | 14 +- .../Sources/SecureIdAuthController.swift | 4 +- ...hannelDiscussionGroupSetupController.swift | 2 +- .../Sources/ChannelMembersController.swift | 2 +- .../Sources/DeviceContactInfoController.swift | 8 +- .../Sources/PhotoResources.swift | 2 +- .../platform/ios/RMIntroViewController.h | 2 + .../platform/ios/RMIntroViewController.m | 45 +- .../SettingsUI/Sources/DebugController.swift | 4 +- .../Sources/SettingsController.swift | 33 +- .../ShareItems/Sources/ShareItems.swift | 6 +- .../TelegramCore/TelegramCore/Wallets.swift | 125 +- .../Sources/PresentationStrings.swift | 6700 +++++++++-------- .../TelegramUI/TelegramUI/AppDelegate.swift | 40 +- ...uthorizationSequenceSplashController.swift | 14 +- .../ChatHistoryViewForLocation.swift | 2 +- .../ChatInterfaceStateContextQueries.swift | 14 +- .../TelegramUI/CreateGroupController.swift | 2 +- .../TelegramUI/EmojiResources.swift | 2 +- .../TelegramUI/TelegramUI/FetchManager.swift | 6 +- .../TelegramUI/FetchVideoMediaResource.swift | 4 +- .../Resources/PresentationStrings.mapping | Bin 127545 -> 127706 bytes .../TelegramUI/ShareExtensionContext.swift | 6 +- .../TelegramUI/TimeBasedVideoPreload.swift | 2 +- .../Sources/WalletInfoEmptyNode.swift | 4 +- .../WalletUI/Sources/WalletInfoScreen.swift | 318 +- .../Sources/WalletInfoTransactionItem.swift | 41 +- .../WalletUI/Sources/WalletSplashScreen.swift | 113 +- .../Sources/WalletTransactionInfoScreen.swift | 54 +- .../Sources/WalletWordCheckScreen.swift | 25 +- .../Sources/WalletWordDisplayScreen.swift | 10 +- 39 files changed, 4202 insertions(+), 3733 deletions(-) diff --git a/Makefile b/Makefile index a1f2c94cf4..d6abfc0c26 100644 --- a/Makefile +++ b/Makefile @@ -255,6 +255,12 @@ build_verbose: check_env //:IntentsExtension#dwarf-and-dsym,iphoneos-arm64 \ --verbose 8 ${BUCK_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_DEBUG_OPTIONS} +deps: check_env + $(BUCK) query "deps(//:AppPackage)" --dot \ + ${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS} + + + build_openssl: check_env $(BUCK) build \ //submodules/openssl:openssl#iphoneos-arm64 \ diff --git a/SiriIntents/IntentHandler.swift b/SiriIntents/IntentHandler.swift index 740f539ecb..a38ea5deea 100644 --- a/SiriIntents/IntentHandler.swift +++ b/SiriIntents/IntentHandler.swift @@ -236,11 +236,11 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag |> take(1) |> mapToSignal { matchedContacts in return account - |> introduceError(IntentContactsError.self) + |> castError(IntentContactsError.self) |> mapToSignal { account -> Signal<[(String, TelegramUser)], IntentContactsError> in if let account = account { return matchingCloudContacts(postbox: account.postbox, contacts: matchedContacts) - |> introduceError(IntentContactsError.self) + |> castError(IntentContactsError.self) } else { return .fail(.generic) } @@ -278,11 +278,11 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag let account = self.accountPromise.get() let signal = account - |> introduceError(IntentHandlingError.self) + |> castError(IntentHandlingError.self) |> mapToSignal { account -> Signal in if let account = account { return matchingCloudContact(postbox: account.postbox, peerId: PeerId(peerId)) - |> introduceError(IntentHandlingError.self) + |> castError(IntentHandlingError.self) |> map { user -> INPerson? in if let user = user { return personWithUser(stableId: "tg\(peerId)", user: user) @@ -394,7 +394,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag func handle(intent: INSearchForMessagesIntent, completion: @escaping (INSearchForMessagesIntentResponse) -> Void) { self.actionDisposable.set((self.accountPromise.get() |> take(1) - |> introduceError(IntentHandlingError.self) + |> castError(IntentHandlingError.self) |> mapToSignal { account -> Signal<[INMessage], IntentHandlingError> in guard let account = account else { return .fail(.generic) @@ -409,7 +409,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag } return (completion |> timeout(4.0, queue: Queue.mainQueue(), alternate: .single(Void()))) - |> introduceError(IntentHandlingError.self) + |> castError(IntentHandlingError.self) |> take(1) |> mapToSignal { _ -> Signal<[INMessage], IntentHandlingError> in let messages: Signal<[INMessage], NoError> @@ -419,7 +419,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag messages = unreadMessages(account: account) } return messages - |> introduceError(IntentHandlingError.self) + |> castError(IntentHandlingError.self) |> afterDisposed { account.shouldBeServiceTaskMaster.set(.single(.never)) } @@ -484,7 +484,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag for (_, messageId) in maxMessageIdsToApply { signals.append(applyMaxReadIndexInteractively(postbox: account.postbox, stateManager: account.stateManager, index: MessageIndex(id: messageId, timestamp: 0)) - |> introduceError(IntentHandlingError.self)) + |> castError(IntentHandlingError.self)) } if signals.isEmpty { @@ -576,7 +576,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag func handle(intent: INSearchCallHistoryIntent, completion: @escaping (INSearchCallHistoryIntentResponse) -> Void) { self.actionDisposable.set((self.accountPromise.get() |> take(1) - |> introduceError(IntentHandlingError.self) + |> castError(IntentHandlingError.self) |> mapToSignal { account -> Signal<[CallRecord], IntentHandlingError> in guard let account = account else { return .fail(.generic) @@ -584,7 +584,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag account.shouldBeServiceTaskMaster.set(.single(.now)) return missedCalls(account: account) - |> introduceError(IntentHandlingError.self) + |> castError(IntentHandlingError.self) |> afterDisposed { account.shouldBeServiceTaskMaster.set(.single(.never)) } diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index e8814f0f94..b2d578e6f0 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -4754,3 +4754,21 @@ Any member of this group will be able to see messages in the channel."; "Channel.AdminLog.CanDeleteMessagesOfOthers" = "Delete Messages of Others"; "ChatSearch.ResultsTooltip" = "Tap to view as a list."; + +"Updated.JustNow" = "updated just now"; +"Updated.MinutesAgo_0" = "updated %@ minutes ago"; //three to ten +"Updated.MinutesAgo_1" = "updated 1 minute ago"; //one +"Updated.MinutesAgo_2" = "updated 2 minutes ago"; //two +"Updated.MinutesAgo_3_10" = "updated %@ minutes ago"; //three to ten +"Updated.MinutesAgo_many" = "updated %@ minutes ago"; // more than ten +"Updated.MinutesAgo_any" = "updated %@ minutes ago"; // more than ten +"Updated.HoursAgo_0" = "updated %@ hours ago"; +"Updated.HoursAgo_1" = "updated 1 hour ago"; +"Updated.HoursAgo_2" = "updated 2 hours ago"; +"Updated.HoursAgo_3_10" = "updated %@ hours ago"; +"Updated.HoursAgo_any" = "updated %@ hours ago"; +"Updated.HoursAgo_many" = "updated %@ hours ago"; +"Updated.HoursAgo_0" = "updated %@ hours ago"; +"Updated.YesterdayAt" = "updated yesterday at %@"; +"Updated.AtDate" = "updated %@"; +"Updated.TodayAt" = "updated today at %@"; \ No newline at end of file diff --git a/submodules/BuildConfig/Sources/BuildConfig.h b/submodules/BuildConfig/Sources/BuildConfig.h index 59b1abcd50..24a5cbe241 100644 --- a/submodules/BuildConfig/Sources/BuildConfig.h +++ b/submodules/BuildConfig/Sources/BuildConfig.h @@ -22,7 +22,8 @@ + (DeviceSpecificEncryptionParameters * _Nonnull)deviceSpecificEncryptionParameters:(NSString * _Nonnull)rootPath baseAppBundleId:(NSString * _Nonnull)baseAppBundleId; - (NSData * _Nullable)bundleDataWithAppToken:(NSData * _Nullable)appToken; -+ (void)encryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion; -+ (void)decryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion; ++ (void)getHardwareEncryptionAvailableWithBaseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion; ++ (void)encryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable, NSData * _Nullable))completion; ++ (void)decryptApplicationSecret:(NSData * _Nonnull)secret publicKey:(NSData * _Nonnull)publicKey baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion; @end diff --git a/submodules/BuildConfig/Sources/BuildConfig.m b/submodules/BuildConfig/Sources/BuildConfig.m index 9faa7b7ee2..664316f9bb 100644 --- a/submodules/BuildConfig/Sources/BuildConfig.m +++ b/submodules/BuildConfig/Sources/BuildConfig.m @@ -16,6 +16,8 @@ #import #endif +static NSString *telegramApplicationSecretKey = @"telegramApplicationSecretKey_v3"; + static uint32_t funcSwap32(uint32_t input) { return OSSwapBigToHostInt32(input); @@ -238,7 +240,7 @@ API_AVAILABLE(ios(10)) } - (NSData * _Nullable)encrypt:(NSData * _Nonnull)data; -- (NSData * _Nullable)decrypt:(NSData * _Nonnull)data; +- (NSData * _Nullable)decrypt:(NSData * _Nonnull)data cancelled:(bool *)cancelled; @end @@ -258,6 +260,11 @@ API_AVAILABLE(ios(10)) CFRelease(_publicKey); } +- (NSData * _Nullable)getPublicKey { + NSData *result = CFBridgingRelease(SecKeyCopyExternalRepresentation(_publicKey, nil)); + return result; +} + - (NSData * _Nullable)encrypt:(NSData * _Nonnull)data { if (data.length % 16 != 0) { return nil; @@ -274,12 +281,17 @@ API_AVAILABLE(ios(10)) return cipherText; } -- (NSData * _Nullable)decrypt:(NSData * _Nonnull)data { +- (NSData * _Nullable)decrypt:(NSData * _Nonnull)data cancelled:(bool *)cancelled { CFErrorRef error = NULL; NSData *plainText = (NSData *)CFBridgingRelease(SecKeyCreateDecryptedData(_privateKey, kSecKeyAlgorithmECIESEncryptionCofactorX963SHA256AESGCM, (__bridge CFDataRef)data, &error)); if (!plainText) { __unused NSError *err = CFBridgingRelease(error); + if (err.code == -2) { + if (cancelled) { + *cancelled = true; + } + } return nil; } @@ -431,22 +443,29 @@ API_AVAILABLE(ios(10)) return bundleSeedID; } -+ (LocalPrivateKey * _Nullable)getLocalPrivateKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) { ++ (NSString * _Nonnull)applicationSecretTag:(bool)isCheckKey { + if (isCheckKey) { + return [[telegramApplicationSecretKey stringByAppendingString:@"_check"] dataUsingEncoding:NSUTF8StringEncoding]; + } else { + return [telegramApplicationSecretKey dataUsingEncoding:NSUTF8StringEncoding]; + } +} + ++ (LocalPrivateKey * _Nullable)getApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId isCheckKey:(bool)isCheckKey API_AVAILABLE(ios(10)) { NSString *bundleSeedId = [self bundleSeedId]; if (bundleSeedId == nil) { return nil; } + NSData *applicationTag = [self applicationSecretTag:isCheckKey]; NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId]; - NSData *applicationTag = [@"telegramLocalKey" dataUsingEncoding:NSUTF8StringEncoding]; - NSDictionary *query = @{ (id)kSecClass: (id)kSecClassKey, (id)kSecAttrApplicationTag: applicationTag, (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom, (id)kSecAttrAccessGroup: (id)accessGroup, - (id)kSecReturnRef: @YES, + (id)kSecReturnRef: @YES }; SecKeyRef privateKey = NULL; OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&privateKey); @@ -474,13 +493,13 @@ API_AVAILABLE(ios(10)) return result; } -+ (bool)removeLocalPrivateKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) { ++ (bool)removeApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId isCheckKey:(bool)isCheckKey API_AVAILABLE(ios(10)) { NSString *bundleSeedId = [self bundleSeedId]; if (bundleSeedId == nil) { return nil; } - NSData *applicationTag = [@"telegramLocalKey" dataUsingEncoding:NSUTF8StringEncoding]; + NSData *applicationTag = [self applicationSecretTag:isCheckKey]; NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId]; NSDictionary *query = @{ @@ -496,142 +515,21 @@ API_AVAILABLE(ios(10)) return true; } -+ (LocalPrivateKey * _Nullable)addLocalPrivateKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) { ++ (LocalPrivateKey * _Nullable)addApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId isCheckKey:(bool)isCheckKey API_AVAILABLE(ios(10)) { NSString *bundleSeedId = [self bundleSeedId]; if (bundleSeedId == nil) { return nil; } - NSData *applicationTag = [@"telegramLocalKey" dataUsingEncoding:NSUTF8StringEncoding]; + NSData *applicationTag = [self applicationSecretTag:isCheckKey]; NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId]; - SecAccessControlRef access = SecAccessControlCreateWithFlags(kCFAllocatorDefault, kSecAttrAccessibleAlwaysThisDeviceOnly, kSecAccessControlPrivateKeyUsage, NULL); - NSDictionary *attributes = @{ - (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom, - (id)kSecAttrKeySizeInBits: @256, - (id)kSecAttrTokenID: (id)kSecAttrTokenIDSecureEnclave, - (id)kSecPrivateKeyAttrs: @{ - (id)kSecAttrIsPermanent: @YES, - (id)kSecAttrApplicationTag: applicationTag, - (id)kSecAttrAccessControl: (__bridge id)access, - (id)kSecAttrAccessGroup: (id)accessGroup, - }, - }; - - CFErrorRef error = NULL; - SecKeyRef privateKey = SecKeyCreateRandomKey((__bridge CFDictionaryRef)attributes, &error); - if (!privateKey) { - if (access) { - CFRelease(access); - } - - __unused NSError *err = CFBridgingRelease(error); - return nil; + SecAccessControlRef access; + if (isCheckKey) { + access = SecAccessControlCreateWithFlags(kCFAllocatorDefault, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, kSecAccessControlPrivateKeyUsage, NULL); + } else { + access = SecAccessControlCreateWithFlags(kCFAllocatorDefault, kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, kSecAccessControlUserPresence | kSecAccessControlPrivateKeyUsage, NULL); } - - SecKeyRef publicKey = SecKeyCopyPublicKey(privateKey); - if (!publicKey) { - if (privateKey) { - CFRelease(privateKey); - } - if (access) { - CFRelease(access); - } - - __unused NSError *err = CFBridgingRelease(error); - return nil; - } - - LocalPrivateKey *result = [[LocalPrivateKey alloc] initWithPrivateKey:privateKey publicKey:publicKey]; - - if (publicKey) { - CFRelease(publicKey); - } - if (privateKey) { - CFRelease(privateKey); - } - if (access) { - CFRelease(access); - } - - return result; -} - -+ (LocalPrivateKey * _Nullable)getApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) { - NSString *bundleSeedId = [self bundleSeedId]; - if (bundleSeedId == nil) { - return nil; - } - - NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId]; - - NSData *applicationTag = [@"telegramApplicationSecretKey" dataUsingEncoding:NSUTF8StringEncoding]; - - NSDictionary *query = @{ - (id)kSecClass: (id)kSecClassKey, - (id)kSecAttrApplicationTag: applicationTag, - (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom, - (id)kSecAttrAccessGroup: (id)accessGroup, - (id)kSecReturnRef: @YES, - }; - SecKeyRef privateKey = NULL; - OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&privateKey); - if (status != errSecSuccess) { - return nil; - } - - SecKeyRef publicKey = SecKeyCopyPublicKey(privateKey); - if (!publicKey) { - if (privateKey) { - CFRelease(privateKey); - } - return nil; - } - - LocalPrivateKey *result = [[LocalPrivateKey alloc] initWithPrivateKey:privateKey publicKey:publicKey]; - - if (publicKey) { - CFRelease(publicKey); - } - if (privateKey) { - CFRelease(privateKey); - } - - return result; -} - -+ (bool)removeApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) { - NSString *bundleSeedId = [self bundleSeedId]; - if (bundleSeedId == nil) { - return nil; - } - - NSData *applicationTag = [@"telegramApplicationSecretKey" dataUsingEncoding:NSUTF8StringEncoding]; - NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId]; - - NSDictionary *query = @{ - (id)kSecClass: (id)kSecClassKey, - (id)kSecAttrApplicationTag: applicationTag, - (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom, - (id)kSecAttrAccessGroup: (id)accessGroup - }; - OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query); - if (status != errSecSuccess) { - return false; - } - return true; -} - -+ (LocalPrivateKey * _Nullable)addApplicationSecretKey:(NSString * _Nonnull)baseAppBundleId API_AVAILABLE(ios(10)) { - NSString *bundleSeedId = [self bundleSeedId]; - if (bundleSeedId == nil) { - return nil; - } - - NSData *applicationTag = [@"telegramApplicationSecretKey" dataUsingEncoding:NSUTF8StringEncoding]; - NSString *accessGroup = [bundleSeedId stringByAppendingFormat:@".%@", baseAppBundleId]; - - SecAccessControlRef access = SecAccessControlCreateWithFlags(kCFAllocatorDefault, kSecAttrAccessibleAlwaysThisDeviceOnly, kSecAccessControlUserPresence | kSecAccessControlPrivateKeyUsage, NULL); NSDictionary *attributes = @{ (id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom, (id)kSecAttrKeySizeInBits: @256, @@ -738,24 +636,67 @@ API_AVAILABLE(ios(10)) return [[DeviceSpecificEncryptionParameters alloc] initWithKey:key salt:salt]; } -+ (void)encryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - LocalPrivateKey *privateKey = [self getApplicationSecretKey:baseAppBundleId]; - if (privateKey == nil) { - privateKey = [self addApplicationSecretKey:baseAppBundleId]; ++ (dispatch_queue_t)encryptionQueue { + static dispatch_queue_t instance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = dispatch_queue_create("encryptionQueue", 0); + }); + return instance; +} + ++ (void)getHardwareEncryptionAvailableWithBaseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion { + dispatch_async([self encryptionQueue], ^{ + LocalPrivateKey *checkKey = [self getApplicationSecretKey:baseAppBundleId isCheckKey:true]; + if (checkKey != nil) { + NSData *sampleData = [checkKey encrypt:[NSData data]]; + if (sampleData == nil) { + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:false]; + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:true]; + } else { + NSData *decryptedData = [checkKey decrypt:sampleData cancelled: nil]; + if (decryptedData == nil) { + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:false]; + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:true]; + } + } + } else { + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:false]; + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:true]; } + + LocalPrivateKey *privateKey = [self getApplicationSecretKey:baseAppBundleId isCheckKey:false]; if (privateKey == nil) { - completion(nil); - return; + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:false]; + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:true]; + privateKey = [self addApplicationSecretKey:baseAppBundleId isCheckKey:false]; + privateKey = [self addApplicationSecretKey:baseAppBundleId isCheckKey:true]; } - NSData *result = [privateKey encrypt:secret]; - completion(result); + completion([privateKey getPublicKey]); }); } -+ (void)decryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - LocalPrivateKey *privateKey = [self getApplicationSecretKey:baseAppBundleId]; ++ (void)encryptApplicationSecret:(NSData * _Nonnull)secret baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable, NSData * _Nullable))completion { + dispatch_async([self encryptionQueue], ^{ + LocalPrivateKey *privateKey = [self getApplicationSecretKey:baseAppBundleId isCheckKey:false]; + if (privateKey == nil) { + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:false]; + [self removeApplicationSecretKey:baseAppBundleId isCheckKey:true]; + privateKey = [self addApplicationSecretKey:baseAppBundleId isCheckKey:false]; + privateKey = [self addApplicationSecretKey:baseAppBundleId isCheckKey:true]; + } + if (privateKey == nil) { + completion(nil, nil); + return; + } + NSData *result = [privateKey encrypt:secret]; + completion(result, [privateKey getPublicKey]); + }); +} + ++ (void)decryptApplicationSecret:(NSData * _Nonnull)secret publicKey:(NSData * _Nonnull)publicKey baseAppBundleId:(NSString * _Nonnull)baseAppBundleId completion:(void (^)(NSData * _Nullable))completion { + dispatch_async([self encryptionQueue], ^{ + LocalPrivateKey *privateKey = [self getApplicationSecretKey:baseAppBundleId isCheckKey:false]; if (privateKey == nil) { completion(nil); return; @@ -764,7 +705,16 @@ API_AVAILABLE(ios(10)) completion(nil); return; } - NSData *result = [privateKey decrypt:secret]; + NSData *currentPublicKey = [privateKey getPublicKey]; + if (currentPublicKey == nil) { + completion(nil); + return; + } + if (![publicKey isEqualToData:currentPublicKey]) { + completion(nil); + return; + } + NSData *result = [privateKey decrypt:secret cancelled:nil]; completion(result); }); } diff --git a/submodules/Display/Display/ListView.swift b/submodules/Display/Display/ListView.swift index 0b7f6c16ee..a5f0cd931d 100644 --- a/submodules/Display/Display/ListView.swift +++ b/submodules/Display/Display/ListView.swift @@ -242,6 +242,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture public final var visibleContentOffsetChanged: (ListViewVisibleContentOffset) -> Void = { _ in } public final var visibleBottomContentOffsetChanged: (ListViewVisibleContentOffset) -> Void = { _ in } public final var beganInteractiveDragging: () -> Void = { } + public final var endedInteractiveDragging: () -> Void = { } public final var didEndScrolling: (() -> Void)? private var currentGeneralScrollDirection: GeneralScrollDirection? @@ -599,6 +600,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture self.lastContentOffsetTimestamp = 0.0 self.didEndScrolling?() } + self.endedInteractiveDragging() } public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { diff --git a/submodules/Display/Display/Navigation/NavigationContainer.swift b/submodules/Display/Display/Navigation/NavigationContainer.swift index a7449e0a2a..add58d141f 100644 --- a/submodules/Display/Display/Navigation/NavigationContainer.swift +++ b/submodules/Display/Display/Navigation/NavigationContainer.swift @@ -86,7 +86,7 @@ final class NavigationContainer: ASDisplayNode, UIGestureRecognizerDelegate { } var statusBarStyle: StatusBarStyle = .Ignore - var statusBarStyleUpdated: (() -> Void)? + var statusBarStyleUpdated: ((ContainedViewLayoutTransition) -> Void)? init(controllerRemoved: @escaping (ViewController) -> Void) { self.controllerRemoved = controllerRemoved @@ -260,7 +260,7 @@ final class NavigationContainer: ASDisplayNode, UIGestureRecognizerDelegate { } else { transitionType = .pop } - self.state.pending = PendingChild(value: self.makeChild(layout: layout, value: last), transitionType: transitionType, transition: transition, update: { [weak self] pendingChild in + self.state.pending = PendingChild(value: self.makeChild(layout: layout.withUpdatedInputHeight(nil), value: last), transitionType: transitionType, transition: transition, update: { [weak self] pendingChild in self?.pendingChildIsReady(pendingChild) }) } @@ -268,12 +268,16 @@ final class NavigationContainer: ASDisplayNode, UIGestureRecognizerDelegate { } } + var statusBarTransition = transition + if let pending = self.state.pending { if pending.isReady { self.state.pending = nil let previous = self.state.top + previous?.value.view.endEditing(true) self.state.top = pending.value - self.topTransition(from: previous, to: pending.value, transitionType: pending.transitionType, layout: layout, transition: pending.transition) + self.topTransition(from: previous, to: pending.value, transitionType: pending.transitionType, layout: layout.withUpdatedInputHeight(nil), transition: pending.transition) + statusBarTransition = pending.transition if !self.isReady { self.isReady = true self.isReadyUpdated?() @@ -287,11 +291,16 @@ final class NavigationContainer: ASDisplayNode, UIGestureRecognizerDelegate { self.topTransition(from: previous, to: nil, transitionType: .pop, layout: layout, transition: .immediate) } + var updatedStatusBarStyle = self.statusBarStyle if let top = self.state.top { self.applyLayout(layout: layout, to: top, transition: transition) - self.statusBarStyle = top.value.statusBar.statusBarStyle + updatedStatusBarStyle = top.value.statusBar.statusBarStyle } else { - self.statusBarStyle = .Ignore + updatedStatusBarStyle = .Ignore + } + if self.statusBarStyle != updatedStatusBarStyle { + self.statusBarStyle = updatedStatusBarStyle + self.statusBarStyleUpdated?(statusBarTransition) } if self.state.transition == nil { diff --git a/submodules/Display/Display/Navigation/NavigationController.swift b/submodules/Display/Display/Navigation/NavigationController.swift index aa2bd05dad..a206e983e6 100644 --- a/submodules/Display/Display/Navigation/NavigationController.swift +++ b/submodules/Display/Display/Navigation/NavigationController.swift @@ -368,6 +368,12 @@ open class NavigationController: UINavigationController, ContainableController, let flatContainer = NavigationContainer(controllerRemoved: { [weak self] controller in self?.controllerRemoved(controller) }) + flatContainer.statusBarStyleUpdated = { [weak self] transition in + guard let strongSelf = self, let layout = strongSelf.validLayout else { + return + } + strongSelf.updateContainers(layout: layout, transition: transition) + } self.displayNode.insertSubnode(flatContainer, at: 0) self.rootContainer = .flat(flatContainer) flatContainer.frame = CGRect(origin: CGPoint(), size: layout.size) @@ -378,6 +384,12 @@ open class NavigationController: UINavigationController, ContainableController, let flatContainer = NavigationContainer(controllerRemoved: { [weak self] controller in self?.controllerRemoved(controller) }) + flatContainer.statusBarStyleUpdated = { [weak self] transition in + guard let strongSelf = self, let layout = strongSelf.validLayout else { + return + } + strongSelf.updateContainers(layout: layout, transition: transition) + } self.displayNode.insertSubnode(flatContainer, at: 0) self.rootContainer = .flat(flatContainer) flatContainer.frame = CGRect(origin: CGPoint(), size: layout.size) @@ -394,6 +406,7 @@ open class NavigationController: UINavigationController, ContainableController, self.rootContainer = .split(splitContainer) splitContainer.frame = CGRect(origin: CGPoint(), size: layout.size) splitContainer.update(layout: layout, masterControllers: masterControllers, detailControllers: detailControllers, transition: .immediate) + flatContainer.statusBarStyleUpdated = nil flatContainer.removeFromSupernode() case let .split(splitContainer): transition.updateFrame(node: splitContainer, frame: CGRect(origin: CGPoint(), size: layout.size)) diff --git a/submodules/LegacyDataImport/Sources/LegacyDataImport.swift b/submodules/LegacyDataImport/Sources/LegacyDataImport.swift index eb46ed5a40..48af060cd9 100644 --- a/submodules/LegacyDataImport/Sources/LegacyDataImport.swift +++ b/submodules/LegacyDataImport/Sources/LegacyDataImport.swift @@ -34,7 +34,7 @@ private func importedAccountData(basePath: String, documentsPath: String, accoun } } |> ignoreValues - |> introduceError(AccountImportError.self) + |> castError(AccountImportError.self) let importData = importPreferencesData(documentsPath: documentsPath, masterDatacenterId: Int32(masterDatacenterId), account: account, database: database) |> mapToSignal { accountUserId -> Signal<(AccountImportProgressType, Float), AccountImportError> in @@ -65,7 +65,7 @@ private func importPreferencesData(documentsPath: String, masterDatacenterId: In transaction.setState(AuthorizedAccountState(isTestingEnvironment: false, masterDatacenterId: masterDatacenterId, peerId: PeerId(namespace: Namespaces.Peer.CloudUser, id: parsedAccountUserId), state: nil)) return parsedAccountUserId } - |> introduceError(AccountImportError.self) + |> castError(AccountImportError.self) } else { return .fail(.generic) } @@ -81,17 +81,17 @@ private func importDatabaseData(accountManager: AccountManager, account: Tempora transaction.updatePeerPresencesInternal(presences: [user.id: presence], merge: { _, updated in return updated }) } |> ignoreValues - |> introduceError(AccountImportError.self) + |> castError(AccountImportError.self) } let importedSecretChats = loadLegacySecretChats(account: account, basePath: basePath, accountPeerId: PeerId(namespace: Namespaces.Peer.CloudUser, id: accountUserId), database: database) - |> introduceError(AccountImportError.self) + |> castError(AccountImportError.self) /*let importedFiles = loadLegacyFiles(account: account, basePath: basePath, accountPeerId: PeerId(namespace: Namespaces.Peer.CloudUser, id: accountUserId), database: database) - |> introduceError(AccountImportError.self)*/ + |> castError(AccountImportError.self)*/ let importedLegacyPreferences = importLegacyPreferences(accountManager: accountManager, account: account, documentsPath: basePath + "/Documents", database: database) - |> introduceError(AccountImportError.self) + |> castError(AccountImportError.self) return importedAccountUser |> map { _ -> (AccountImportProgressType, Float) in return (.generic, 0.0) } @@ -224,7 +224,7 @@ public func importedLegacyAccount(basePath: String, accountManager: AccountManag } return temporaryAccount(manager: accountManager, rootPath: rootPathForBasePath(basePath), encryptionParameters: encryptionParameters) - |> introduceError(AccountImportError.self) + |> castError(AccountImportError.self) |> mapToSignal { account -> Signal in let actions = importedAccountData(basePath: basePath, documentsPath: documentsPath, accountManager: accountManager, account: account, database: database) var result = actions diff --git a/submodules/PassportUI/Sources/SecureIdAuthController.swift b/submodules/PassportUI/Sources/SecureIdAuthController.swift index 5235baaab8..3fb3175387 100644 --- a/submodules/PassportUI/Sources/SecureIdAuthController.swift +++ b/submodules/PassportUI/Sources/SecureIdAuthController.swift @@ -209,7 +209,7 @@ public final class SecureIdAuthController: ViewController { switch self.mode { case let .form(peerId, scope, publicKey, callbackUrl, _, _): - self.formDisposable = (combineLatest(requestSecureIdForm(postbox: context.account.postbox, network: context.account.network, peerId: peerId, scope: scope, publicKey: publicKey), secureIdConfiguration(postbox: context.account.postbox, network: context.account.network) |> introduceError(RequestSecureIdFormError.self)) + self.formDisposable = (combineLatest(requestSecureIdForm(postbox: context.account.postbox, network: context.account.network, peerId: peerId, scope: scope, publicKey: publicKey), secureIdConfiguration(postbox: context.account.postbox, network: context.account.network) |> castError(RequestSecureIdFormError.self)) |> mapToSignal { form, configuration -> Signal in return context.account.postbox.transaction { transaction -> Signal in guard let accountPeer = transaction.getPeer(context.account.peerId), let servicePeer = transaction.getPeer(form.peerId) else { @@ -240,7 +240,7 @@ public final class SecureIdAuthController: ViewController { handleError(error, callbackUrl, peerId) }) case .list: - self.formDisposable = (combineLatest(getAllSecureIdValues(network: self.context.account.network), secureIdConfiguration(postbox: context.account.postbox, network: context.account.network) |> introduceError(GetAllSecureIdValuesError.self), context.account.postbox.transaction { transaction -> Signal in + self.formDisposable = (combineLatest(getAllSecureIdValues(network: self.context.account.network), secureIdConfiguration(postbox: context.account.postbox, network: context.account.network) |> castError(GetAllSecureIdValuesError.self), context.account.postbox.transaction { transaction -> Signal in guard let accountPeer = transaction.getPeer(context.account.peerId) else { return .fail(.generic) } diff --git a/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift b/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift index 881ab99e3e..c01f826dcf 100644 --- a/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift @@ -337,7 +337,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI return updateGroupDiscussionForChannel(network: context.account.network, postbox: context.account.postbox, channelId: peerId, groupId: resultPeerId) } - |> introduceError(ChannelDiscussionGroupError.self) + |> castError(ChannelDiscussionGroupError.self) |> switchToLatest } } else { diff --git a/submodules/PeerInfoUI/Sources/ChannelMembersController.swift b/submodules/PeerInfoUI/Sources/ChannelMembersController.swift index 9393905b6d..3a43d7629d 100644 --- a/submodules/PeerInfoUI/Sources/ChannelMembersController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelMembersController.swift @@ -355,7 +355,7 @@ public func channelMembersController(context: AccountContext, peerId: PeerId) -> addMembersDisposable.set((contactsController.result |> deliverOnMainQueue - |> introduceError(AddChannelMemberError.self) + |> castError(AddChannelMemberError.self) |> mapToSignal { [weak contactsController] contacts -> Signal in contactsController?.displayProgress = true diff --git a/submodules/PeerInfoUI/Sources/DeviceContactInfoController.swift b/submodules/PeerInfoUI/Sources/DeviceContactInfoController.swift index 0c2c99247c..788df638aa 100644 --- a/submodules/PeerInfoUI/Sources/DeviceContactInfoController.swift +++ b/submodules/PeerInfoUI/Sources/DeviceContactInfoController.swift @@ -1105,7 +1105,7 @@ public func deviceContactInfoController(context: AccountContext, subject: Device } let _ = (contactDataManager.createContactWithData(composedContactData) - |> introduceError(AddContactError.self) + |> castError(AddContactError.self) |> mapToSignal { contactIdAndData -> Signal<(DeviceContactStableId, DeviceContactExtendedData, Peer?)?, AddContactError> in guard let (id, data) = contactIdAndData else { return .single(nil) @@ -1122,7 +1122,7 @@ public func deviceContactInfoController(context: AccountContext, subject: Device context.account.postbox.transaction { transaction -> (DeviceContactStableId, DeviceContactExtendedData, Peer?)? in return (id, data, transaction.getPeer(peer.id)) } - |> introduceError(AddContactError.self) + |> castError(AddContactError.self) ) } default: @@ -1130,13 +1130,13 @@ public func deviceContactInfoController(context: AccountContext, subject: Device } return importContact(account: context.account, firstName: composedContactData.basicData.firstName, lastName: composedContactData.basicData.lastName, phoneNumber: filteredPhoneNumbers[0].value) - |> introduceError(AddContactError.self) + |> castError(AddContactError.self) |> mapToSignal { peerId -> Signal<(DeviceContactStableId, DeviceContactExtendedData, Peer?)?, AddContactError> in if let peerId = peerId { return context.account.postbox.transaction { transaction -> (DeviceContactStableId, DeviceContactExtendedData, Peer?)? in return (id, data, transaction.getPeer(peerId)) } - |> introduceError(AddContactError.self) + |> castError(AddContactError.self) } else { return .single((id, data, nil)) } diff --git a/submodules/PhotoResources/Sources/PhotoResources.swift b/submodules/PhotoResources/Sources/PhotoResources.swift index e4723c30a8..48284577ce 100644 --- a/submodules/PhotoResources/Sources/PhotoResources.swift +++ b/submodules/PhotoResources/Sources/PhotoResources.swift @@ -1760,7 +1760,7 @@ public func chatMessagePhotoInteractiveFetched(context: AccountContext, photoRef |> mapToSignal { type -> Signal in if case .remote = type, let peerType = storeToDownloadsPeerType { return storeDownloadedMedia(storeManager: context.downloadedMediaStoreManager, media: photoReference.abstract, peerType: peerType) - |> introduceError(FetchResourceError.self) + |> castError(FetchResourceError.self) |> mapToSignal { _ -> Signal in return .complete() } diff --git a/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h index 453b5dd259..9db0510b81 100644 --- a/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h +++ b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h @@ -54,6 +54,8 @@ BOOL _isOpenGLLoaded; } +@property (nonatomic) CGRect defaultFrame; + - (instancetype)initWithBackgroundColor:(UIColor *)backgroundColor primaryColor:(UIColor *)primaryColor buttonColor:(UIColor *)buttonColor accentColor:(UIColor *)accentColor regularDotColor:(UIColor *)regularDotColor highlightedDotColor:(UIColor *)highlightedDotColor suggestedLocalizationSignal:(SSignal *)suggestedLocalizationSignal; @property (nonatomic, copy) void (^startMessaging)(void); diff --git a/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m index 9d346110a1..0341e55f4d 100644 --- a/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m +++ b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m @@ -71,6 +71,23 @@ static void TGDispatchOnMainThread(dispatch_block_t block) { } @end +@interface RMIntroView : UIView + +@property (nonatomic, copy) void (^onLayout)(); + +@end + +@implementation RMIntroView + +- (void)layoutSubviews { + [super layoutSubviews]; + + if (_onLayout) { + _onLayout(); + } +} + +@end @interface RMIntroViewController () { @@ -92,6 +109,8 @@ static void TGDispatchOnMainThread(dispatch_block_t block) { SVariable *_alternativeLocalization; NSDictionary *_englishStrings; + + bool _loadedView; } @end @@ -215,12 +234,6 @@ static void TGDispatchOnMainThread(dispatch_block_t block) { } } - -- (void)loadView -{ - [super loadView]; -} - - (void)loadGL { if (/*[[UIApplication sharedApplication] applicationState] != UIApplicationStateBackground*/true && !_isOpenGLLoaded) @@ -273,10 +286,28 @@ static void TGDispatchOnMainThread(dispatch_block_t block) { _isOpenGLLoaded = false; } +- (void)loadView { + self.view = [[RMIntroView alloc] initWithFrame:self.defaultFrame]; + __weak RMIntroViewController *weakSelf = self; + ((RMIntroView *)self.view).onLayout = ^{ + __strong RMIntroViewController *strongSelf = weakSelf; + if (strongSelf != nil) { + [strongSelf updateLayout]; + } + }; + + [self viewDidLoad]; +} + - (void)viewDidLoad { [super viewDidLoad]; + if (_loadedView) { + return; + } + _loadedView = true; + self.view.backgroundColor = _backgroundColor; [self loadGL]; @@ -411,7 +442,7 @@ static void TGDispatchOnMainThread(dispatch_block_t block) { return deviceScreen; } -- (void)viewWillLayoutSubviews +- (void)updateLayout { UIInterfaceOrientation isVertical = (self.view.bounds.size.height / self.view.bounds.size.width > 1.0f); diff --git a/submodules/SettingsUI/Sources/DebugController.swift b/submodules/SettingsUI/Sources/DebugController.swift index bba8987083..a5bee2197f 100644 --- a/submodules/SettingsUI/Sources/DebugController.swift +++ b/submodules/SettingsUI/Sources/DebugController.swift @@ -485,7 +485,7 @@ private enum DebugControllerEntry: ItemListNodeEntry { if !wallets.wallets.isEmpty { let _ = (testGiverWalletAddress(tonInstance: tonContext.instance) |> deliverOnMainQueue).start(next: { address in - arguments.pushController(WalletInfoScreen(context: context, tonContext: tonContext, walletInfo: wallets.wallets[0], address: address)) + arguments.pushController(WalletInfoScreen(context: context, tonContext: tonContext, walletInfo: wallets.wallets[0].info, address: address)) }) } } @@ -500,7 +500,7 @@ private enum DebugControllerEntry: ItemListNodeEntry { |> deliverOnMainQueue).start(next: { wallets in if let tonContext = context.tonContext { if !wallets.wallets.isEmpty { - let _ = (walletAddress(publicKey: wallets.wallets[0].publicKey, tonInstance: tonContext.instance) + let _ = (walletAddress(publicKey: wallets.wallets[0].info.publicKey, tonInstance: tonContext.instance) |> deliverOnMainQueue).start(next: { address in let _ = (getGramsFromTestGiver(address: address, amount: 1500000000, tonInstance: tonContext.instance) |> deliverOnMainQueue).start(completed: { diff --git a/submodules/SettingsUI/Sources/SettingsController.swift b/submodules/SettingsUI/Sources/SettingsController.swift index fa38b0f10b..ddc7cafc45 100644 --- a/submodules/SettingsUI/Sources/SettingsController.swift +++ b/submodules/SettingsUI/Sources/SettingsController.swift @@ -1609,16 +1609,33 @@ private func accountContextMenuItems(context: AccountContext, logout: @escaping } func openWallet(context: AccountContext, push: @escaping (ViewController) -> Void) { - let _ = (availableWallets(postbox: context.account.postbox) - |> deliverOnMainQueue).start(next: { wallets in - if let tonContext = context.tonContext { - if wallets.wallets.isEmpty { + guard let tonContext = context.tonContext else { + return + } + let _ = (combineLatest(queue: .mainQueue(), + availableWallets(postbox: context.account.postbox), + tonContext.keychain.encryptionPublicKey() + ) + |> deliverOnMainQueue).start(next: { wallets, currentPublicKey in + if wallets.wallets.isEmpty { + if let _ = currentPublicKey { push(WalletSplashScreen(context: context, tonContext: tonContext, mode: .intro)) } else { - let _ = (walletAddress(publicKey: wallets.wallets[0].publicKey, tonInstance: tonContext.instance) - |> deliverOnMainQueue).start(next: { address in - push(WalletInfoScreen(context: context, tonContext: tonContext, walletInfo: wallets.wallets[0], address: address)) - }) + push(WalletSplashScreen(context: context, tonContext: tonContext, mode: .secureStorageNotAvailable)) + } + } else { + let walletInfo = wallets.wallets[0].info + if let currentPublicKey = currentPublicKey { + if currentPublicKey == walletInfo.encryptedSecret.publicKey { + let _ = (walletAddress(publicKey: walletInfo.publicKey, tonInstance: tonContext.instance) + |> deliverOnMainQueue).start(next: { address in + push(WalletInfoScreen(context: context, tonContext: tonContext, walletInfo: walletInfo, address: address)) + }) + } else { + push(WalletSplashScreen(context: context, tonContext: tonContext, mode: .secureStorageReset(.changed))) + } + } else { + push(WalletSplashScreen(context: context, tonContext: tonContext, mode: .secureStorageReset(.notAvailable))) } } }) diff --git a/submodules/ShareItems/Sources/ShareItems.swift b/submodules/ShareItems/Sources/ShareItems.swift index f2123d9ac3..1e45cd0c5b 100644 --- a/submodules/ShareItems/Sources/ShareItems.swift +++ b/submodules/ShareItems/Sources/ShareItems.swift @@ -272,7 +272,7 @@ public func preparedShareItems(account: Account, to peerId: PeerId, dataItems: [ dataSignals = dataSignals |> then( wrappedSignal - |> introduceError(Void.self) + |> castError(Void.self) |> take(1) ) } @@ -339,11 +339,11 @@ public func sentShareItems(account: Account, to peerIds: [PeerId], items: [Prepa } return enqueueMessagesToMultiplePeers(account: account, peerIds: peerIds, messages: messages) - |> introduceError(Void.self) + |> castError(Void.self) |> mapToSignal { messageIds -> Signal in let key: PostboxViewKey = .messages(Set(messageIds)) return account.postbox.combinedView(keys: [key]) - |> introduceError(Void.self) + |> castError(Void.self) |> mapToSignal { view -> Signal in if let messagesView = view.views[key] as? MessagesView { for (_, message) in messagesView.messages { diff --git a/submodules/TelegramCore/TelegramCore/Wallets.swift b/submodules/TelegramCore/TelegramCore/Wallets.swift index 33ed0c73d1..b216bb67e0 100644 --- a/submodules/TelegramCore/TelegramCore/Wallets.swift +++ b/submodules/TelegramCore/TelegramCore/Wallets.swift @@ -11,11 +11,32 @@ import MtProtoKit import TelegramApi #endif -public struct TonKeychain { - public let encrypt: (Data) -> Signal - public let decrypt: (Data) -> Signal +public struct TonKeychainEncryptedData: Codable, Equatable { + public let publicKey: Data + public let data: Data - public init(encrypt: @escaping (Data) -> Signal, decrypt: @escaping (Data) -> Signal) { + public init(publicKey: Data, data: Data) { + self.publicKey = publicKey + self.data = data + } +} + +public enum TonKeychainEncryptDataError { + case generic +} + +public enum TonKeychainDecryptDataError { + case generic + case publicKeyMismatch +} + +public struct TonKeychain { + public let encryptionPublicKey: () -> Signal + public let encrypt: (Data) -> Signal + public let decrypt: (TonKeychainEncryptedData) -> Signal + + public init(encryptionPublicKey: @escaping () -> Signal, encrypt: @escaping (Data) -> Signal, decrypt: @escaping (TonKeychainEncryptedData) -> Signal) { + self.encryptionPublicKey = encryptionPublicKey self.encrypt = encrypt self.decrypt = decrypt } @@ -93,7 +114,7 @@ public final class TonInstance { } } - fileprivate func createWallet(keychain: TonKeychain, serverSalt: Data) -> Signal<(WalletInfo, [String]), NoError> { + fileprivate func createWallet(keychain: TonKeychain, serverSalt: Data) -> Signal<(WalletInfo, [String]), CreateWalletError> { return Signal { subscriber in let disposable = MetaDisposable() self.impl.with { impl in @@ -104,17 +125,14 @@ public final class TonInstance { return } let cancel = keychain.encrypt(key.secret).start(next: { encryptedSecretData in - guard let encryptedSecretData = encryptedSecretData else { - assertionFailure() - return - } let _ = self.exportKey(key: key, serverSalt: serverSalt).start(next: { wordList in - subscriber.putNext((WalletInfo(publicKey: WalletPublicKey(rawValue: key.publicKey), encryptedSecret: EncryptedWalletSecret(rawValue: encryptedSecretData)), wordList)) + subscriber.putNext((WalletInfo(publicKey: WalletPublicKey(rawValue: key.publicKey), encryptedSecret: encryptedSecretData), wordList)) subscriber.putCompletion() - }, error: { _ in - preconditionFailure() + }, error: { error in + subscriber.putError(.generic) }) }, error: { _ in + subscriber.putError(.generic) }, completed: { }) }, error: { _ in @@ -142,30 +160,14 @@ public final class TonInstance { return } let cancel = keychain.encrypt(key.secret).start(next: { encryptedSecretData in - guard let encryptedSecretData = encryptedSecretData else { - subscriber.putError(.generic) - return - } - subscriber.putNext(WalletInfo(publicKey: WalletPublicKey(rawValue: key.publicKey), encryptedSecret: EncryptedWalletSecret(rawValue: encryptedSecretData))) + subscriber.putNext(WalletInfo(publicKey: WalletPublicKey(rawValue: key.publicKey), encryptedSecret: encryptedSecretData)) subscriber.putCompletion() }, error: { _ in + subscriber.putError(.generic) }, completed: { }) - }, error: { error in - if let error = error as? TONError { - #warning("Use error kind APIs") - let filePrefix = "File \"" - let fileSuffix = "\" can't be created for writing" - let text = error.text - if text.hasPrefix(filePrefix) && text.hasSuffix(fileSuffix) { - let filePath = String(error.text[text.index(text.startIndex, offsetBy: filePrefix.count) ..< text.index(text.endIndex, offsetBy: -fileSuffix.count)]) - subscriber.putError(.fileExists(filePath)) - } else { - subscriber.putError(.generic) - } - } else { - subscriber.putError(.generic) - } + }, error: { _ in + subscriber.putError(.generic) }, completed: { }) disposable.set(ActionDisposable { @@ -253,10 +255,10 @@ public final class TonInstance { } } - fileprivate func getWalletState(address: String) -> Signal { + fileprivate func getWalletState(address: String) -> Signal<(WalletState, Int64), NoError> { return self.getWalletStateRaw(address: address) |> map { state in - return WalletState(balance: state.balance, lastTransactionId: state.lastTransactionId.flatMap(WalletTransactionId.init(tonTransactionId:))) + return (WalletState(balance: state.balance, lastTransactionId: state.lastTransactionId.flatMap(WalletTransactionId.init(tonTransactionId:))), state.syncUtime) } } @@ -424,12 +426,11 @@ public final class TonInstance { } fileprivate func sendGramsFromWallet(keychain: TonKeychain, serverSalt: Data, walletInfo: WalletInfo, fromAddress: String, toAddress: String, amount: Int64, textMessage: String) -> Signal { - return keychain.decrypt(walletInfo.encryptedSecret.rawValue) - |> castError(SendGramsFromWalletError.self) + return keychain.decrypt(walletInfo.encryptedSecret) + |> mapError { _ -> SendGramsFromWalletError in + return .secretDecryptionFailed + } |> mapToSignal { decryptedSecret -> Signal in - guard let decryptedSecret = decryptedSecret else { - return .fail(.secretDecryptionFailed) - } let key = TONKey(publicKey: walletInfo.publicKey.rawValue, secret: decryptedSecret) return self.ensureWalletInitialized(address: fromAddress, key: key, serverSalt: serverSalt) @@ -462,12 +463,11 @@ public final class TonInstance { } fileprivate func walletRestoreWords(walletInfo: WalletInfo, keychain: TonKeychain, serverSalt: Data) -> Signal<[String], WalletRestoreWordsError> { - return keychain.decrypt(walletInfo.encryptedSecret.rawValue) - |> castError(WalletRestoreWordsError.self) + return keychain.decrypt(walletInfo.encryptedSecret) + |> mapError { _ -> WalletRestoreWordsError in + return .secretDecryptionFailed + } |> mapToSignal { decryptedSecret -> Signal<[String], WalletRestoreWordsError> in - guard let decryptedSecret = decryptedSecret else { - return .fail(.secretDecryptionFailed) - } return Signal { subscriber in let disposable = MetaDisposable() @@ -504,31 +504,28 @@ public struct WalletPublicKey: Codable, Hashable { } } -public struct EncryptedWalletSecret: Codable, Equatable { - public var rawValue: Data - - public init(rawValue: Data) { - self.rawValue = rawValue - } -} - public struct WalletInfo: PostboxCoding, Codable, Equatable { public let publicKey: WalletPublicKey - public let encryptedSecret: EncryptedWalletSecret + public let encryptedSecret: TonKeychainEncryptedData - public init(publicKey: WalletPublicKey, encryptedSecret: EncryptedWalletSecret) { + public init(publicKey: WalletPublicKey, encryptedSecret: TonKeychainEncryptedData) { self.publicKey = publicKey self.encryptedSecret = encryptedSecret } public init(decoder: PostboxDecoder) { self.publicKey = WalletPublicKey(rawValue: decoder.decodeStringForKey("publicKey", orElse: "")) - self.encryptedSecret = EncryptedWalletSecret(rawValue: decoder.decodeDataForKey("encryptedSecret")!) + if let publicKey = decoder.decodeDataForKey("encryptedSecretPublicKey"), let secret = decoder.decodeDataForKey("encryptedSecretData") { + self.encryptedSecret = TonKeychainEncryptedData(publicKey: publicKey, data: secret) + } else { + self.encryptedSecret = TonKeychainEncryptedData(publicKey: Data(), data: Data()) + } } public func encode(_ encoder: PostboxEncoder) { encoder.encodeString(self.publicKey.rawValue, forKey: "publicKey") - encoder.encodeData(self.encryptedSecret.rawValue, forKey: "encryptedSecret") + encoder.encodeData(self.encryptedSecret.publicKey, forKey: "encryptedSecretPublicKey") + encoder.encodeData(self.encryptedSecret.data, forKey: "encryptedSecretData") } } @@ -550,7 +547,7 @@ public struct WalletStateRecord: PostboxCoding, Equatable { public init(decoder: PostboxDecoder) { self.info = decoder.decodeDataForKey("info").flatMap { data in return try? JSONDecoder().decode(WalletInfo.self, from: data) - } ?? WalletInfo(publicKey: WalletPublicKey(rawValue: ""), encryptedSecret: EncryptedWalletSecret(rawValue: Data())) + } ?? WalletInfo(publicKey: WalletPublicKey(rawValue: ""), encryptedSecret: TonKeychainEncryptedData(publicKey: Data(), data: Data())) self.state = decoder.decodeDataForKey("state").flatMap { data in return try? JSONDecoder().decode(CombinedWalletState.self, from: data) } @@ -617,7 +614,6 @@ public func createWallet(postbox: Postbox, network: Network, tonInstance: TonIns } |> mapToSignal { serverSalt -> Signal<(WalletInfo, [String]), CreateWalletError> in return tonInstance.createWallet(keychain: keychain, serverSalt: serverSalt) - |> castError(CreateWalletError.self) |> mapToSignal { walletInfo, wordList -> Signal<(WalletInfo, [String]), CreateWalletError> in return postbox.transaction { transaction -> (WalletInfo, [String]) in transaction.updatePreferencesEntry(key: PreferencesKeys.walletCollection, { current in @@ -634,7 +630,6 @@ public func createWallet(postbox: Postbox, network: Network, tonInstance: TonIns private enum ImportWalletInternalError { case generic - case fileExists(String) } public enum ImportWalletError { @@ -652,12 +647,6 @@ public func importWallet(postbox: Postbox, network: Network, tonInstance: TonIns switch error { case .generic: return .fail(.generic) - case let .fileExists(path): - let _ = try? FileManager.default.removeItem(atPath: path) - return tonInstance.importWallet(keychain: keychain, wordList: wordList, serverSalt: serverSalt) - |> mapError { _ -> ImportWalletError in - return .generic - } } } |> mapToSignal { walletInfo -> Signal in @@ -718,7 +707,7 @@ public func testGiverWalletAddress(tonInstance: TonInstance) -> Signal Signal { +private func getWalletState(address: String, tonInstance: TonInstance) -> Signal<(WalletState, Int64), NoError> { return tonInstance.getWalletState(address: address) } @@ -750,7 +739,7 @@ public func getCombinedWalletState(postbox: Postbox, walletInfo: WalletInfo, ton |> mapToSignal { address -> Signal in return getWalletState(address: address, tonInstance: tonInstance) |> castError(GetCombinedWalletStateError.self) - |> mapToSignal { walletState -> Signal in + |> mapToSignal { walletState, syncUtime -> Signal in let topTransactions: Signal<[WalletTransaction], GetCombinedWalletStateError> if walletState.lastTransactionId == cachedState?.walletState.lastTransactionId { topTransactions = .single(cachedState?.topTransactions ?? []) @@ -762,7 +751,7 @@ public func getCombinedWalletState(postbox: Postbox, walletInfo: WalletInfo, ton } return topTransactions |> mapToSignal { topTransactions -> Signal in - let combinedState = CombinedWalletState(walletState: walletState, timestamp: 0, topTransactions: topTransactions) + let combinedState = CombinedWalletState(walletState: walletState, timestamp: syncUtime, topTransactions: topTransactions) return postbox.transaction { transaction -> CombinedWalletStateResult in transaction.updatePreferencesEntry(key: PreferencesKeys.walletCollection, { current in var walletCollection = (current as? WalletCollection) ?? WalletCollection(wallets: []) diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 5c20430501..4551f35734 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -597,4175 +597,4195 @@ public final class PresentationStrings { } public var Contacts_SortedByName: String { return self._s[380]! } public var Group_OwnershipTransfer_Title: String { return self._s[381]! } - public var VoiceOver_Chat_OpenHint: String { return self._s[382]! } - public var Group_LeaveGroup: String { return self._s[383]! } - public var Settings_UsernameEmpty: String { return self._s[384]! } + public var VoiceOver_Chat_OpenHint: String { return self._s[383]! } + public var Group_LeaveGroup: String { return self._s[384]! } + public var Settings_UsernameEmpty: String { return self._s[385]! } public func Notification_PinnedPollMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[385]!, self._r[385]!, [_0]) + return formatWithArgumentRanges(self._s[386]!, self._r[386]!, [_0]) } public func TwoStepAuth_ConfirmEmailDescription(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[386]!, self._r[386]!, [_1]) + return formatWithArgumentRanges(self._s[387]!, self._r[387]!, [_1]) } public func Channel_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[387]!, self._r[387]!, [_1, _2]) + return formatWithArgumentRanges(self._s[388]!, self._r[388]!, [_1, _2]) } - public var Message_ImageExpired: String { return self._s[388]! } - public var TwoStepAuth_RecoveryFailed: String { return self._s[390]! } - public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[391]! } - public var UserInfo_AddToExisting: String { return self._s[392]! } - public var TwoStepAuth_EnabledSuccess: String { return self._s[393]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[394]! } + public var Message_ImageExpired: String { return self._s[389]! } + public var TwoStepAuth_RecoveryFailed: String { return self._s[391]! } + public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[392]! } + public var UserInfo_AddToExisting: String { return self._s[393]! } + public var TwoStepAuth_EnabledSuccess: String { return self._s[394]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[395]! } public func PUSH_CHANNEL_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[395]!, self._r[395]!, [_1]) + return formatWithArgumentRanges(self._s[396]!, self._r[396]!, [_1]) } - public var Notifications_GroupNotificationsAlert: String { return self._s[396]! } - public var Passport_Language_km: String { return self._s[397]! } - public var SocksProxySetup_AdNoticeHelp: String { return self._s[399]! } - public var VoiceOver_Media_PlaybackPlay: String { return self._s[400]! } - public var Notification_CallMissedShort: String { return self._s[401]! } - public var ReportPeer_ReasonOther_Send: String { return self._s[402]! } - public var Watch_Compose_Send: String { return self._s[403]! } - public var Passport_Identity_TypeInternalPassportUploadScan: String { return self._s[406]! } - public var Conversation_HoldForVideo: String { return self._s[407]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[409]! } - public var Appearance_AutoNightThemeDisabled: String { return self._s[411]! } - public var Channel_LinkItem: String { return self._s[412]! } + public var Notifications_GroupNotificationsAlert: String { return self._s[397]! } + public var Passport_Language_km: String { return self._s[398]! } + public var SocksProxySetup_AdNoticeHelp: String { return self._s[400]! } + public var VoiceOver_Media_PlaybackPlay: String { return self._s[401]! } + public var Notification_CallMissedShort: String { return self._s[402]! } + public var ReportPeer_ReasonOther_Send: String { return self._s[404]! } + public var Watch_Compose_Send: String { return self._s[405]! } + public var Passport_Identity_TypeInternalPassportUploadScan: String { return self._s[408]! } + public var Conversation_HoldForVideo: String { return self._s[409]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[411]! } + public var Appearance_AutoNightThemeDisabled: String { return self._s[413]! } + public var Channel_LinkItem: String { return self._s[414]! } public func PrivacySettings_LastSeenContactsMinusPlus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[413]!, self._r[413]!, [_0, _1]) + return formatWithArgumentRanges(self._s[415]!, self._r[415]!, [_0, _1]) } public func Passport_Identity_NativeNameTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[416]!, self._r[416]!, [_0]) + return formatWithArgumentRanges(self._s[418]!, self._r[418]!, [_0]) } - public var VoiceOver_Recording_StopAndPreview: String { return self._s[417]! } - public var Passport_Language_dv: String { return self._s[418]! } - public var Undo_LeftChannel: String { return self._s[419]! } - public var Notifications_ExceptionsMuted: String { return self._s[420]! } - public var ChatList_UnhideAction: String { return self._s[421]! } - public var Conversation_ContextMenuShare: String { return self._s[422]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[423]! } - public var ShareFileTip_Title: String { return self._s[424]! } - public var NotificationsSound_Chord: String { return self._s[425]! } + public var VoiceOver_Recording_StopAndPreview: String { return self._s[419]! } + public var Passport_Language_dv: String { return self._s[420]! } + public var Undo_LeftChannel: String { return self._s[421]! } + public var Notifications_ExceptionsMuted: String { return self._s[422]! } + public var ChatList_UnhideAction: String { return self._s[423]! } + public var Conversation_ContextMenuShare: String { return self._s[424]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[425]! } + public var ShareFileTip_Title: String { return self._s[426]! } + public var NotificationsSound_Chord: String { return self._s[427]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[426]!, self._r[426]!, [_1, _2]) + return formatWithArgumentRanges(self._s[428]!, self._r[428]!, [_1, _2]) } - public var Passport_Address_EditTemporaryRegistration: String { return self._s[427]! } + public var Passport_Address_EditTemporaryRegistration: String { return self._s[429]! } public func Notification_Joined(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[428]!, self._r[428]!, [_0]) + return formatWithArgumentRanges(self._s[430]!, self._r[430]!, [_0]) } - public var Wallpaper_ErrorNotFound: String { return self._s[429]! } - public var Notification_CallOutgoingShort: String { return self._s[431]! } + public var Wallpaper_ErrorNotFound: String { return self._s[431]! } + public var Notification_CallOutgoingShort: String { return self._s[433]! } public func Watch_Time_ShortFullAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[432]!, self._r[432]!, [_1, _2]) + return formatWithArgumentRanges(self._s[434]!, self._r[434]!, [_1, _2]) } - public var Passport_Address_TypeUtilityBill: String { return self._s[433]! } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[434]! } - public var ReportPeer_Report: String { return self._s[435]! } - public var SettingsSearch_Synonyms_Proxy_Title: String { return self._s[436]! } - public var GroupInfo_DeactivatedStatus: String { return self._s[437]! } + public var Passport_Address_TypeUtilityBill: String { return self._s[435]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[436]! } + public var ReportPeer_Report: String { return self._s[437]! } + public var SettingsSearch_Synonyms_Proxy_Title: String { return self._s[438]! } + public var GroupInfo_DeactivatedStatus: String { return self._s[439]! } public func VoiceOver_Chat_MusicTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[438]!, self._r[438]!, [_1, _2]) + return formatWithArgumentRanges(self._s[440]!, self._r[440]!, [_1, _2]) } - public var StickerPack_Send: String { return self._s[439]! } - public var Login_CodeSentInternal: String { return self._s[440]! } - public var GroupInfo_InviteLink_LinkSection: String { return self._s[441]! } + public var StickerPack_Send: String { return self._s[441]! } + public var Login_CodeSentInternal: String { return self._s[442]! } + public var GroupInfo_InviteLink_LinkSection: String { return self._s[443]! } public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[442]!, self._r[442]!, [_0]) - } - public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[444]!, self._r[444]!, [_0]) } - public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[445]! } - public func PUSH_PINNED_GAME(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[446]!, self._r[446]!, [_1]) + public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[446]!, self._r[446]!, [_0]) } - public var ReportPeer_ReasonViolence: String { return self._s[448]! } - public var Map_Locating: String { return self._s[449]! } + public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[447]! } + public func PUSH_PINNED_GAME(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[448]!, self._r[448]!, [_1]) + } + public var ReportPeer_ReasonViolence: String { return self._s[450]! } + public var Map_Locating: String { return self._s[451]! } public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[450]!, self._r[450]!, [_0]) + return formatWithArgumentRanges(self._s[452]!, self._r[452]!, [_0]) } public func PUSH_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[451]!, self._r[451]!, [_1]) + return formatWithArgumentRanges(self._s[453]!, self._r[453]!, [_1]) } - public var AutoDownloadSettings_GroupChats: String { return self._s[453]! } - public var CheckoutInfo_SaveInfo: String { return self._s[454]! } - public var SharedMedia_EmptyLinksText: String { return self._s[456]! } - public var Passport_Address_CityPlaceholder: String { return self._s[457]! } - public var CheckoutInfo_ErrorStateInvalid: String { return self._s[458]! } - public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[459]! } - public var Channel_AdminLog_CanAddAdmins: String { return self._s[461]! } + public var AutoDownloadSettings_GroupChats: String { return self._s[455]! } + public var CheckoutInfo_SaveInfo: String { return self._s[456]! } + public var SharedMedia_EmptyLinksText: String { return self._s[458]! } + public var Passport_Address_CityPlaceholder: String { return self._s[459]! } + public var CheckoutInfo_ErrorStateInvalid: String { return self._s[460]! } + public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[461]! } + public var Channel_AdminLog_CanAddAdmins: String { return self._s[463]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[462]!, self._r[462]!, [_1]) + return formatWithArgumentRanges(self._s[464]!, self._r[464]!, [_1]) } public func Time_MonthOfYear_m8(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[463]!, self._r[463]!, [_0]) + return formatWithArgumentRanges(self._s[465]!, self._r[465]!, [_0]) } - public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[464]! } - public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[465]! } - public var ChangePhoneNumberCode_Code: String { return self._s[466]! } - public var Appearance_CreateTheme: String { return self._s[467]! } + public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[466]! } + public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[467]! } + public var ChangePhoneNumberCode_Code: String { return self._s[468]! } + public var Appearance_CreateTheme: String { return self._s[469]! } public func UserInfo_NotificationsDefaultSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[468]!, self._r[468]!, [_0]) + return formatWithArgumentRanges(self._s[470]!, self._r[470]!, [_0]) } - public var TwoStepAuth_SetupEmail: String { return self._s[469]! } - public var HashtagSearch_AllChats: String { return self._s[470]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[472]! } + public var TwoStepAuth_SetupEmail: String { return self._s[471]! } + public var HashtagSearch_AllChats: String { return self._s[472]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[474]! } public func ChatList_DeleteForEveryone(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[473]!, self._r[473]!, [_0]) + return formatWithArgumentRanges(self._s[475]!, self._r[475]!, [_0]) } - public var PhotoEditor_QualityHigh: String { return self._s[475]! } + public var PhotoEditor_QualityHigh: String { return self._s[477]! } public func Passport_Phone_UseTelegramNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[476]!, self._r[476]!, [_0]) + return formatWithArgumentRanges(self._s[478]!, self._r[478]!, [_0]) } - public var ApplyLanguage_ApplyLanguageAction: String { return self._s[477]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[478]! } - public var Message_LiveLocation: String { return self._s[479]! } - public var Cache_LowDiskSpaceText: String { return self._s[480]! } - public var EditTheme_ErrorLinkTaken: String { return self._s[481]! } - public var Conversation_SendMessage: String { return self._s[482]! } - public var AuthSessions_EmptyTitle: String { return self._s[483]! } - public var Privacy_PhoneNumber: String { return self._s[484]! } - public var PeopleNearby_CreateGroup: String { return self._s[485]! } - public var CallSettings_UseLessData: String { return self._s[486]! } - public var NetworkUsageSettings_MediaDocumentDataSection: String { return self._s[487]! } - public var Stickers_AddToFavorites: String { return self._s[488]! } - public var PhotoEditor_QualityLow: String { return self._s[489]! } - public var Watch_UserInfo_Unblock: String { return self._s[490]! } - public var Settings_Logout: String { return self._s[491]! } + public var ApplyLanguage_ApplyLanguageAction: String { return self._s[479]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[480]! } + public var Message_LiveLocation: String { return self._s[481]! } + public var Cache_LowDiskSpaceText: String { return self._s[482]! } + public var EditTheme_ErrorLinkTaken: String { return self._s[483]! } + public var Conversation_SendMessage: String { return self._s[484]! } + public var AuthSessions_EmptyTitle: String { return self._s[485]! } + public var Privacy_PhoneNumber: String { return self._s[486]! } + public var PeopleNearby_CreateGroup: String { return self._s[487]! } + public var CallSettings_UseLessData: String { return self._s[488]! } + public var NetworkUsageSettings_MediaDocumentDataSection: String { return self._s[489]! } + public var Stickers_AddToFavorites: String { return self._s[490]! } + public var PhotoEditor_QualityLow: String { return self._s[491]! } + public var Watch_UserInfo_Unblock: String { return self._s[492]! } + public var Settings_Logout: String { return self._s[493]! } public func PUSH_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[492]!, self._r[492]!, [_1]) + return formatWithArgumentRanges(self._s[494]!, self._r[494]!, [_1]) } - public var ContactInfo_PhoneLabelWork: String { return self._s[493]! } - public var ChannelInfo_Stats: String { return self._s[494]! } - public var TextFormat_Link: String { return self._s[495]! } + public var ContactInfo_PhoneLabelWork: String { return self._s[495]! } + public var ChannelInfo_Stats: String { return self._s[496]! } + public var TextFormat_Link: String { return self._s[497]! } public func Date_ChatDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[496]!, self._r[496]!, [_1, _2]) + return formatWithArgumentRanges(self._s[498]!, self._r[498]!, [_1, _2]) } public func Message_ForwardedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[497]!, self._r[497]!, [_0]) + return formatWithArgumentRanges(self._s[499]!, self._r[499]!, [_0]) } - public var Watch_Notification_Joined: String { return self._s[498]! } - public var Group_Setup_TypePublicHelp: String { return self._s[499]! } - public var Passport_Scans_UploadNew: String { return self._s[500]! } - public var Checkout_LiabilityAlertTitle: String { return self._s[501]! } - public var DialogList_Title: String { return self._s[504]! } - public var NotificationSettings_ContactJoined: String { return self._s[505]! } - public var GroupInfo_LabelAdmin: String { return self._s[506]! } - public var KeyCommand_ChatInfo: String { return self._s[507]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[508]! } - public var Call_ReportIncludeLog: String { return self._s[509]! } + public var Watch_Notification_Joined: String { return self._s[500]! } + public var Group_Setup_TypePublicHelp: String { return self._s[501]! } + public var Passport_Scans_UploadNew: String { return self._s[502]! } + public var Checkout_LiabilityAlertTitle: String { return self._s[503]! } + public var DialogList_Title: String { return self._s[506]! } + public var NotificationSettings_ContactJoined: String { return self._s[507]! } + public var GroupInfo_LabelAdmin: String { return self._s[508]! } + public var KeyCommand_ChatInfo: String { return self._s[509]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[510]! } + public var Call_ReportIncludeLog: String { return self._s[511]! } public func Notifications_ExceptionsChangeSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[512]!, self._r[512]!, [_0]) + return formatWithArgumentRanges(self._s[514]!, self._r[514]!, [_0]) } - public var LocalGroup_IrrelevantWarning: String { return self._s[513]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[514]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[515]! } - public var Message_Sticker: String { return self._s[516]! } - public var LastSeen_JustNow: String { return self._s[518]! } - public var Passport_Email_EmailPlaceholder: String { return self._s[520]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[521]! } - public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[522]! } - public var Channel_EditAdmin_PermissionsHeader: String { return self._s[523]! } - public var TwoStepAuth_Email: String { return self._s[524]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[525]! } - public var PhotoEditor_BlurToolOff: String { return self._s[526]! } - public var Message_PinnedStickerMessage: String { return self._s[527]! } - public var ContactInfo_PhoneLabelPager: String { return self._s[528]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[529]! } - public var Passport_DiscardMessageTitle: String { return self._s[530]! } - public var Privacy_PaymentsTitle: String { return self._s[531]! } - public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[532]! } - public var Channel_DiscussionGroup_Header: String { return self._s[534]! } - public var VoiceOver_Chat_OptionSelected: String { return self._s[535]! } - public var Appearance_ColorTheme: String { return self._s[536]! } - public var UserInfo_ShareContact: String { return self._s[537]! } - public var Passport_Address_TypePassportRegistration: String { return self._s[538]! } - public var Common_More: String { return self._s[539]! } - public var Watch_Message_Call: String { return self._s[540]! } - public var Profile_EncryptionKey: String { return self._s[543]! } - public var Privacy_TopPeers: String { return self._s[544]! } - public var Conversation_StopPollConfirmation: String { return self._s[545]! } - public var Privacy_TopPeersWarning: String { return self._s[547]! } - public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[548]! } - public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[549]! } - public var DialogList_SearchSectionMessages: String { return self._s[552]! } - public var Notifications_ChannelNotifications: String { return self._s[553]! } - public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[554]! } - public var Passport_Language_sk: String { return self._s[555]! } - public var Notification_MessageLifetime1h: String { return self._s[556]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[557]! } - public var Call_ReportSkip: String { return self._s[559]! } - public var Cache_ServiceFiles: String { return self._s[560]! } - public var Group_ErrorAddTooMuchAdmins: String { return self._s[561]! } - public var VoiceOver_Chat_YourFile: String { return self._s[562]! } - public var Map_Hybrid: String { return self._s[563]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[565]! } - public var ChatSettings_AutoDownloadVideos: String { return self._s[567]! } - public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[568]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[569]! } - public var SocksProxySetup_ProxyTelegram: String { return self._s[572]! } + public var LocalGroup_IrrelevantWarning: String { return self._s[515]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[516]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[517]! } + public var Message_Sticker: String { return self._s[518]! } + public var LastSeen_JustNow: String { return self._s[520]! } + public var Passport_Email_EmailPlaceholder: String { return self._s[522]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[523]! } + public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[524]! } + public var Channel_EditAdmin_PermissionsHeader: String { return self._s[525]! } + public var TwoStepAuth_Email: String { return self._s[526]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[527]! } + public var PhotoEditor_BlurToolOff: String { return self._s[528]! } + public var Message_PinnedStickerMessage: String { return self._s[529]! } + public var ContactInfo_PhoneLabelPager: String { return self._s[530]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[531]! } + public var Passport_DiscardMessageTitle: String { return self._s[532]! } + public var Privacy_PaymentsTitle: String { return self._s[533]! } + public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[534]! } + public var Channel_DiscussionGroup_Header: String { return self._s[536]! } + public var VoiceOver_Chat_OptionSelected: String { return self._s[537]! } + public var Appearance_ColorTheme: String { return self._s[538]! } + public var UserInfo_ShareContact: String { return self._s[539]! } + public var Passport_Address_TypePassportRegistration: String { return self._s[540]! } + public var Common_More: String { return self._s[541]! } + public var Watch_Message_Call: String { return self._s[542]! } + public var Profile_EncryptionKey: String { return self._s[545]! } + public var Privacy_TopPeers: String { return self._s[546]! } + public var Conversation_StopPollConfirmation: String { return self._s[547]! } + public var Privacy_TopPeersWarning: String { return self._s[549]! } + public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[550]! } + public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[551]! } + public var DialogList_SearchSectionMessages: String { return self._s[554]! } + public var Notifications_ChannelNotifications: String { return self._s[555]! } + public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[556]! } + public var Passport_Language_sk: String { return self._s[557]! } + public var Notification_MessageLifetime1h: String { return self._s[558]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[559]! } + public var Call_ReportSkip: String { return self._s[561]! } + public var Cache_ServiceFiles: String { return self._s[562]! } + public var Group_ErrorAddTooMuchAdmins: String { return self._s[563]! } + public var VoiceOver_Chat_YourFile: String { return self._s[564]! } + public var Map_Hybrid: String { return self._s[565]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[567]! } + public var ChatSettings_AutoDownloadVideos: String { return self._s[569]! } + public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[570]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[571]! } + public var SocksProxySetup_ProxyTelegram: String { return self._s[574]! } public func PUSH_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[573]!, self._r[573]!, [_1]) + return formatWithArgumentRanges(self._s[575]!, self._r[575]!, [_1]) } - public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[575]! } - public var ScheduledMessages_ScheduledToday: String { return self._s[576]! } + public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[577]! } + public var ScheduledMessages_ScheduledToday: String { return self._s[578]! } public func PUSH_CHAT_TITLE_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[577]!, self._r[577]!, [_1, _2]) + return formatWithArgumentRanges(self._s[579]!, self._r[579]!, [_1, _2]) } - public var Conversation_LiveLocationYou: String { return self._s[578]! } - public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[579]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[580]! } - public var UserInfo_ShareBot: String { return self._s[583]! } + public var Conversation_LiveLocationYou: String { return self._s[580]! } + public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[581]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[582]! } + public var UserInfo_ShareBot: String { return self._s[585]! } public func PUSH_AUTH_REGION(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[584]!, self._r[584]!, [_1, _2]) + return formatWithArgumentRanges(self._s[586]!, self._r[586]!, [_1, _2]) } - public var PhotoEditor_ShadowsTint: String { return self._s[585]! } - public var Message_Audio: String { return self._s[586]! } - public var Passport_Language_lt: String { return self._s[587]! } + public var PhotoEditor_ShadowsTint: String { return self._s[587]! } + public var Message_Audio: String { return self._s[588]! } + public var Passport_Language_lt: String { return self._s[589]! } public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[588]!, self._r[588]!, [_0]) + return formatWithArgumentRanges(self._s[590]!, self._r[590]!, [_0]) } - public var Permissions_SiriText_v0: String { return self._s[589]! } - public var Conversation_FileICloudDrive: String { return self._s[590]! } - public var Notifications_Badge_IncludeMutedChats: String { return self._s[591]! } + public var Permissions_SiriText_v0: String { return self._s[591]! } + public var Conversation_FileICloudDrive: String { return self._s[592]! } + public var Notifications_Badge_IncludeMutedChats: String { return self._s[593]! } public func Notification_NewAuthDetected(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[592]!, self._r[592]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[594]!, self._r[594]!, [_1, _2, _3, _4, _5, _6]) } - public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[593]! } + public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[595]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[594]!, self._r[594]!, [_0]) + return formatWithArgumentRanges(self._s[596]!, self._r[596]!, [_0]) } - public var Channel_SignMessages: String { return self._s[595]! } + public var Channel_SignMessages: String { return self._s[597]! } public func PUSH_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[596]!, self._r[596]!, [_1]) + return formatWithArgumentRanges(self._s[598]!, self._r[598]!, [_1]) } - public var Compose_ChannelTokenListPlaceholder: String { return self._s[597]! } - public var Passport_ScanPassport: String { return self._s[598]! } - public var Watch_Suggestion_Thanks: String { return self._s[599]! } - public var BlockedUsers_AddNew: String { return self._s[600]! } + public var Compose_ChannelTokenListPlaceholder: String { return self._s[599]! } + public var Passport_ScanPassport: String { return self._s[600]! } + public var Watch_Suggestion_Thanks: String { return self._s[601]! } + public var BlockedUsers_AddNew: String { return self._s[602]! } public func PUSH_CHAT_MESSAGE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[601]!, self._r[601]!, [_1, _2]) + return formatWithArgumentRanges(self._s[603]!, self._r[603]!, [_1, _2]) } - public var Watch_Message_Invoice: String { return self._s[602]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[603]! } - public var Month_GenJuly: String { return self._s[604]! } - public var SocksProxySetup_ProxySocks5: String { return self._s[605]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[607]! } - public var Notification_ChannelInviterSelf: String { return self._s[608]! } - public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[609]! } + public var Watch_Message_Invoice: String { return self._s[604]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[605]! } + public var Month_GenJuly: String { return self._s[606]! } + public var SocksProxySetup_ProxySocks5: String { return self._s[607]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[609]! } + public var Notification_ChannelInviterSelf: String { return self._s[610]! } + public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[611]! } public func ApplyLanguage_ChangeLanguageUnofficialText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[610]!, self._r[610]!, [_1, _2]) + return formatWithArgumentRanges(self._s[612]!, self._r[612]!, [_1, _2]) } - public var CheckoutInfo_Title: String { return self._s[611]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[612]! } + public var CheckoutInfo_Title: String { return self._s[613]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[614]! } public func Map_DistanceAway(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[613]!, self._r[613]!, [_0]) + return formatWithArgumentRanges(self._s[615]!, self._r[615]!, [_0]) } - public var Passport_Identity_MainPage: String { return self._s[614]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[615]! } - public var Passport_Language_de: String { return self._s[616]! } - public var Update_Title: String { return self._s[617]! } - public var ContactInfo_PhoneLabelWorkFax: String { return self._s[618]! } - public var Channel_AdminLog_BanEmbedLinks: String { return self._s[619]! } - public var Passport_Email_UseTelegramEmailHelp: String { return self._s[620]! } - public var Notifications_ChannelNotificationsPreview: String { return self._s[621]! } - public var NotificationsSound_Telegraph: String { return self._s[622]! } - public var Watch_LastSeen_ALongTimeAgo: String { return self._s[623]! } - public var ChannelMembers_WhoCanAddMembers: String { return self._s[624]! } + public var Passport_Identity_MainPage: String { return self._s[616]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[617]! } + public var Passport_Language_de: String { return self._s[618]! } + public var Update_Title: String { return self._s[619]! } + public var ContactInfo_PhoneLabelWorkFax: String { return self._s[620]! } + public var Channel_AdminLog_BanEmbedLinks: String { return self._s[621]! } + public var Passport_Email_UseTelegramEmailHelp: String { return self._s[622]! } + public var Notifications_ChannelNotificationsPreview: String { return self._s[623]! } + public var NotificationsSound_Telegraph: String { return self._s[624]! } + public var Watch_LastSeen_ALongTimeAgo: String { return self._s[625]! } + public var ChannelMembers_WhoCanAddMembers: String { return self._s[626]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[625]!, self._r[625]!, [_0]) + return formatWithArgumentRanges(self._s[627]!, self._r[627]!, [_0]) } - public var Stickers_SuggestAll: String { return self._s[626]! } - public var Conversation_ForwardTitle: String { return self._s[627]! } - public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[628]! } + public var Stickers_SuggestAll: String { return self._s[628]! } + public var Conversation_ForwardTitle: String { return self._s[629]! } + public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[630]! } public func Notification_JoinedChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[629]!, self._r[629]!, [_0]) + return formatWithArgumentRanges(self._s[631]!, self._r[631]!, [_0]) } - public var Calls_NewCall: String { return self._s[630]! } - public var Call_StatusEnded: String { return self._s[631]! } - public var AutoDownloadSettings_DataUsageLow: String { return self._s[632]! } - public var Settings_ProxyConnected: String { return self._s[633]! } - public var Channel_AdminLogFilter_EventsPinned: String { return self._s[634]! } - public var PhotoEditor_QualityVeryLow: String { return self._s[635]! } - public var Channel_AdminLogFilter_EventsDeletedMessages: String { return self._s[636]! } - public var Passport_PasswordPlaceholder: String { return self._s[637]! } - public var Message_PinnedInvoice: String { return self._s[638]! } - public var Passport_Identity_IssueDate: String { return self._s[639]! } - public var Passport_Language_pl: String { return self._s[640]! } + public var Calls_NewCall: String { return self._s[632]! } + public var Call_StatusEnded: String { return self._s[633]! } + public var AutoDownloadSettings_DataUsageLow: String { return self._s[634]! } + public var Settings_ProxyConnected: String { return self._s[635]! } + public var Channel_AdminLogFilter_EventsPinned: String { return self._s[636]! } + public var PhotoEditor_QualityVeryLow: String { return self._s[637]! } + public var Channel_AdminLogFilter_EventsDeletedMessages: String { return self._s[638]! } + public var Passport_PasswordPlaceholder: String { return self._s[639]! } + public var Message_PinnedInvoice: String { return self._s[640]! } + public var Passport_Identity_IssueDate: String { return self._s[641]! } + public var Passport_Language_pl: String { return self._s[642]! } public func ChannelInfo_ChannelForbidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[641]!, self._r[641]!, [_0]) + return formatWithArgumentRanges(self._s[643]!, self._r[643]!, [_0]) } - public var SocksProxySetup_PasteFromClipboard: String { return self._s[642]! } - public var Call_StatusConnecting: String { return self._s[643]! } + public var SocksProxySetup_PasteFromClipboard: String { return self._s[644]! } + public var Call_StatusConnecting: String { return self._s[645]! } public func Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[644]!, self._r[644]!, [_0]) + return formatWithArgumentRanges(self._s[646]!, self._r[646]!, [_0]) } - public var ChatSettings_ConnectionType_UseProxy: String { return self._s[646]! } - public var Common_Edit: String { return self._s[647]! } - public var PrivacySettings_LastSeenNobody: String { return self._s[648]! } + public var ChatSettings_ConnectionType_UseProxy: String { return self._s[648]! } + public var Common_Edit: String { return self._s[649]! } + public var PrivacySettings_LastSeenNobody: String { return self._s[650]! } public func Notification_LeftChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[649]!, self._r[649]!, [_0]) + return formatWithArgumentRanges(self._s[651]!, self._r[651]!, [_0]) } - public var GroupInfo_ChatAdmins: String { return self._s[650]! } - public var PrivateDataSettings_Title: String { return self._s[651]! } - public var Login_CancelPhoneVerificationStop: String { return self._s[652]! } - public var ChatList_Read: String { return self._s[653]! } - public var Undo_ChatClearedForBothSides: String { return self._s[654]! } - public var GroupPermission_SectionTitle: String { return self._s[655]! } + public var GroupInfo_ChatAdmins: String { return self._s[652]! } + public var PrivateDataSettings_Title: String { return self._s[653]! } + public var Login_CancelPhoneVerificationStop: String { return self._s[654]! } + public var ChatList_Read: String { return self._s[655]! } + public var Undo_ChatClearedForBothSides: String { return self._s[656]! } + public var GroupPermission_SectionTitle: String { return self._s[657]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[657]!, self._r[657]!, [_1, _2]) + return formatWithArgumentRanges(self._s[659]!, self._r[659]!, [_1, _2]) } - public var Checkout_ErrorPaymentFailed: String { return self._s[658]! } - public var Update_UpdateApp: String { return self._s[659]! } - public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[660]! } - public var Settings_Appearance: String { return self._s[661]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[664]! } - public var Watch_Location_Access: String { return self._s[665]! } - public var ShareMenu_CopyShareLink: String { return self._s[667]! } - public var TwoStepAuth_SetupHintTitle: String { return self._s[668]! } - public var Conversation_Theme: String { return self._s[670]! } + public var Checkout_ErrorPaymentFailed: String { return self._s[660]! } + public var Update_UpdateApp: String { return self._s[661]! } + public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[662]! } + public var Settings_Appearance: String { return self._s[663]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[666]! } + public var Watch_Location_Access: String { return self._s[667]! } + public var ShareMenu_CopyShareLink: String { return self._s[669]! } + public var TwoStepAuth_SetupHintTitle: String { return self._s[670]! } + public var Conversation_Theme: String { return self._s[672]! } public func DialogList_SingleRecordingVideoMessageSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[671]!, self._r[671]!, [_0]) + return formatWithArgumentRanges(self._s[673]!, self._r[673]!, [_0]) } - public var Notifications_ClassicTones: String { return self._s[672]! } - public var Weekday_ShortWednesday: String { return self._s[673]! } - public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[674]! } - public var Undo_LeftGroup: String { return self._s[677]! } - public var Conversation_LinkDialogCopy: String { return self._s[678]! } - public var KeyCommand_FocusOnInputField: String { return self._s[680]! } - public var Contacts_SelectAll: String { return self._s[681]! } - public var Preview_SaveToCameraRoll: String { return self._s[682]! } - public var PrivacySettings_PasscodeOff: String { return self._s[683]! } - public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[684]! } - public var Wallpaper_Title: String { return self._s[685]! } - public var Conversation_FilePhotoOrVideo: String { return self._s[686]! } - public var AccessDenied_Camera: String { return self._s[687]! } - public var Watch_Compose_CurrentLocation: String { return self._s[688]! } - public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[690]! } + public var Notifications_ClassicTones: String { return self._s[674]! } + public var Weekday_ShortWednesday: String { return self._s[675]! } + public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[676]! } + public var Undo_LeftGroup: String { return self._s[679]! } + public var Conversation_LinkDialogCopy: String { return self._s[680]! } + public var KeyCommand_FocusOnInputField: String { return self._s[682]! } + public var Contacts_SelectAll: String { return self._s[683]! } + public var Preview_SaveToCameraRoll: String { return self._s[684]! } + public var PrivacySettings_PasscodeOff: String { return self._s[685]! } + public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[686]! } + public var Wallpaper_Title: String { return self._s[687]! } + public var Conversation_FilePhotoOrVideo: String { return self._s[688]! } + public var AccessDenied_Camera: String { return self._s[689]! } + public var Watch_Compose_CurrentLocation: String { return self._s[690]! } + public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[692]! } public func SecretImage_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[691]!, self._r[691]!, [_0]) + return formatWithArgumentRanges(self._s[693]!, self._r[693]!, [_0]) } - public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[692]! } - public var Passport_Language_ro: String { return self._s[693]! } - public var EditTheme_UploadNewTheme: String { return self._s[694]! } - public var CheckoutInfo_SaveInfoHelp: String { return self._s[695]! } + public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[694]! } + public var Passport_Language_ro: String { return self._s[695]! } + public var EditTheme_UploadNewTheme: String { return self._s[696]! } + public var CheckoutInfo_SaveInfoHelp: String { return self._s[697]! } public func Notification_SecretChatMessageScreenshot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[696]!, self._r[696]!, [_0]) + return formatWithArgumentRanges(self._s[698]!, self._r[698]!, [_0]) } - public var Login_CancelPhoneVerification: String { return self._s[697]! } - public var State_ConnectingToProxy: String { return self._s[698]! } - public var Calls_RatingTitle: String { return self._s[699]! } - public var Generic_ErrorMoreInfo: String { return self._s[700]! } - public var Appearance_PreviewReplyText: String { return self._s[701]! } - public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[702]! } - public var SharedMedia_CategoryLinks: String { return self._s[703]! } - public var Calls_Missed: String { return self._s[704]! } - public var Cache_Photos: String { return self._s[708]! } - public var GroupPermission_NoAddMembers: String { return self._s[709]! } - public var ScheduledMessages_Title: String { return self._s[710]! } + public var Login_CancelPhoneVerification: String { return self._s[699]! } + public var State_ConnectingToProxy: String { return self._s[700]! } + public var Calls_RatingTitle: String { return self._s[701]! } + public var Generic_ErrorMoreInfo: String { return self._s[702]! } + public var Appearance_PreviewReplyText: String { return self._s[703]! } + public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[704]! } + public var SharedMedia_CategoryLinks: String { return self._s[705]! } + public var Calls_Missed: String { return self._s[706]! } + public var Cache_Photos: String { return self._s[710]! } + public var GroupPermission_NoAddMembers: String { return self._s[711]! } + public var ScheduledMessages_Title: String { return self._s[712]! } public func Channel_AdminLog_MessageUnpinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[711]!, self._r[711]!, [_0]) + return formatWithArgumentRanges(self._s[713]!, self._r[713]!, [_0]) } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[712]! } - public var Settings_ProxyDisabled: String { return self._s[713]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[714]! } + public var Settings_ProxyDisabled: String { return self._s[715]! } public func Settings_ApplyProxyAlertCredentials(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[714]!, self._r[714]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[716]!, self._r[716]!, [_1, _2, _3, _4]) } public func Conversation_RestrictedMediaTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[715]!, self._r[715]!, [_0]) + return formatWithArgumentRanges(self._s[717]!, self._r[717]!, [_0]) } - public var ChatList_Context_RemoveFromRecents: String { return self._s[717]! } - public var Appearance_Title: String { return self._s[718]! } + public var ChatList_Context_RemoveFromRecents: String { return self._s[719]! } + public var Appearance_Title: String { return self._s[720]! } public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[720]!, self._r[720]!, [_0]) + return formatWithArgumentRanges(self._s[722]!, self._r[722]!, [_0]) } - public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[721]! } - public var Channel_EditMessageErrorGeneric: String { return self._s[722]! } - public var Privacy_Calls_IntegrationHelp: String { return self._s[723]! } - public var Preview_DeletePhoto: String { return self._s[724]! } - public var Appearance_AppIconFilledX: String { return self._s[725]! } - public var PrivacySettings_PrivacyTitle: String { return self._s[726]! } + public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[723]! } + public var Channel_EditMessageErrorGeneric: String { return self._s[724]! } + public var Privacy_Calls_IntegrationHelp: String { return self._s[725]! } + public var Preview_DeletePhoto: String { return self._s[726]! } + public var Appearance_AppIconFilledX: String { return self._s[727]! } + public var PrivacySettings_PrivacyTitle: String { return self._s[728]! } public func Conversation_BotInteractiveUrlAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[727]!, self._r[727]!, [_0]) + return formatWithArgumentRanges(self._s[729]!, self._r[729]!, [_0]) } - public var Coub_TapForSound: String { return self._s[729]! } - public var Map_LocatingError: String { return self._s[730]! } - public var TwoStepAuth_EmailChangeSuccess: String { return self._s[732]! } - public var Conversation_SendMessage_SendSilently: String { return self._s[733]! } - public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[734]! } - public var Passport_ForgottenPassword: String { return self._s[735]! } - public var GroupInfo_InviteLink_RevokeLink: String { return self._s[736]! } - public var StickerPacksSettings_ArchivedPacks: String { return self._s[737]! } - public var Login_TermsOfServiceSignupDecline: String { return self._s[739]! } - public var Channel_Moderator_AccessLevelRevoke: String { return self._s[740]! } - public var Message_Location: String { return self._s[741]! } - public var Passport_Identity_NamePlaceholder: String { return self._s[742]! } - public var Channel_Management_Title: String { return self._s[743]! } - public var DialogList_SearchSectionDialogs: String { return self._s[745]! } - public var Compose_NewChannel_Members: String { return self._s[746]! } + public var Coub_TapForSound: String { return self._s[731]! } + public var Map_LocatingError: String { return self._s[732]! } + public var TwoStepAuth_EmailChangeSuccess: String { return self._s[734]! } + public var Conversation_SendMessage_SendSilently: String { return self._s[735]! } + public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[736]! } + public var Passport_ForgottenPassword: String { return self._s[737]! } + public var GroupInfo_InviteLink_RevokeLink: String { return self._s[738]! } + public var StickerPacksSettings_ArchivedPacks: String { return self._s[739]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[741]! } + public var Channel_Moderator_AccessLevelRevoke: String { return self._s[742]! } + public var Message_Location: String { return self._s[743]! } + public var Passport_Identity_NamePlaceholder: String { return self._s[744]! } + public var Channel_Management_Title: String { return self._s[745]! } + public var DialogList_SearchSectionDialogs: String { return self._s[747]! } + public var Compose_NewChannel_Members: String { return self._s[748]! } public func DialogList_SingleUploadingFileSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[747]!, self._r[747]!, [_0]) + return formatWithArgumentRanges(self._s[749]!, self._r[749]!, [_0]) } - public var GroupInfo_Location: String { return self._s[748]! } - public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[749]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[750]! } - public var PhotoEditor_WarmthTool: String { return self._s[751]! } - public var Passport_Language_tr: String { return self._s[752]! } + public var GroupInfo_Location: String { return self._s[750]! } + public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[751]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[752]! } + public var PhotoEditor_WarmthTool: String { return self._s[753]! } + public var Passport_Language_tr: String { return self._s[754]! } public func PUSH_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[753]!, self._r[753]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[755]!, self._r[755]!, [_1, _2, _3]) } - public var Login_ResetAccountProtected_Reset: String { return self._s[755]! } - public var Watch_PhotoView_Title: String { return self._s[756]! } - public var Passport_Phone_Delete: String { return self._s[757]! } - public var Undo_ChatDeletedForBothSides: String { return self._s[758]! } - public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[759]! } - public var GroupInfo_Permissions: String { return self._s[760]! } - public var PasscodeSettings_TurnPasscodeOff: String { return self._s[761]! } - public var Profile_ShareContactButton: String { return self._s[762]! } - public var ChatSettings_Other: String { return self._s[763]! } - public var UserInfo_NotificationsDisabled: String { return self._s[764]! } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[765]! } - public var LastSeen_WithinAMonth: String { return self._s[766]! } - public var VoiceOver_Chat_PlayHint: String { return self._s[767]! } - public var Conversation_ReportGroupLocation: String { return self._s[768]! } - public var Conversation_EncryptionCanceled: String { return self._s[769]! } - public var MediaPicker_GroupDescription: String { return self._s[770]! } - public var WebSearch_Images: String { return self._s[771]! } + public var Login_ResetAccountProtected_Reset: String { return self._s[757]! } + public var Watch_PhotoView_Title: String { return self._s[758]! } + public var Passport_Phone_Delete: String { return self._s[759]! } + public var Undo_ChatDeletedForBothSides: String { return self._s[760]! } + public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[761]! } + public var GroupInfo_Permissions: String { return self._s[762]! } + public var PasscodeSettings_TurnPasscodeOff: String { return self._s[763]! } + public var Profile_ShareContactButton: String { return self._s[764]! } + public var ChatSettings_Other: String { return self._s[765]! } + public var UserInfo_NotificationsDisabled: String { return self._s[766]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[767]! } + public var LastSeen_WithinAMonth: String { return self._s[768]! } + public var VoiceOver_Chat_PlayHint: String { return self._s[769]! } + public var Conversation_ReportGroupLocation: String { return self._s[770]! } + public var Conversation_EncryptionCanceled: String { return self._s[771]! } + public var MediaPicker_GroupDescription: String { return self._s[772]! } + public var WebSearch_Images: String { return self._s[773]! } public func Channel_Management_PromotedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[772]!, self._r[772]!, [_0]) + return formatWithArgumentRanges(self._s[774]!, self._r[774]!, [_0]) } - public var Message_Photo: String { return self._s[773]! } - public var PasscodeSettings_HelpBottom: String { return self._s[774]! } - public var AutoDownloadSettings_VideosTitle: String { return self._s[775]! } - public var VoiceOver_Media_PlaybackRateChange: String { return self._s[776]! } - public var Passport_Identity_AddDriversLicense: String { return self._s[777]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[778]! } - public var NotificationsSound_Calypso: String { return self._s[779]! } - public var Map_Map: String { return self._s[780]! } - public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[782]! } - public var ChatSettings_TextSizeUnits: String { return self._s[783]! } + public var Message_Photo: String { return self._s[775]! } + public var PasscodeSettings_HelpBottom: String { return self._s[776]! } + public var AutoDownloadSettings_VideosTitle: String { return self._s[777]! } + public var VoiceOver_Media_PlaybackRateChange: String { return self._s[778]! } + public var Passport_Identity_AddDriversLicense: String { return self._s[779]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[780]! } + public var NotificationsSound_Calypso: String { return self._s[781]! } + public var Map_Map: String { return self._s[782]! } + public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[784]! } + public var ChatSettings_TextSizeUnits: String { return self._s[785]! } public func VoiceOver_Chat_FileFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[784]!, self._r[784]!, [_0]) + return formatWithArgumentRanges(self._s[786]!, self._r[786]!, [_0]) } - public var Common_of: String { return self._s[785]! } - public var Conversation_ForwardContacts: String { return self._s[788]! } + public var Common_of: String { return self._s[787]! } + public var Conversation_ForwardContacts: String { return self._s[790]! } public func Call_AnsweringWithAccount(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[790]!, self._r[790]!, [_0]) + return formatWithArgumentRanges(self._s[792]!, self._r[792]!, [_0]) } - public var Passport_Language_hy: String { return self._s[791]! } - public var Notifications_MessageNotificationsHelp: String { return self._s[792]! } - public var AutoDownloadSettings_Reset: String { return self._s[793]! } - public var Paint_ClearConfirm: String { return self._s[794]! } - public var Camera_VideoMode: String { return self._s[795]! } + public var Passport_Language_hy: String { return self._s[793]! } + public var Notifications_MessageNotificationsHelp: String { return self._s[794]! } + public var AutoDownloadSettings_Reset: String { return self._s[795]! } + public var Paint_ClearConfirm: String { return self._s[796]! } + public var Camera_VideoMode: String { return self._s[797]! } public func Conversation_RestrictedStickersTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[796]!, self._r[796]!, [_0]) + return formatWithArgumentRanges(self._s[798]!, self._r[798]!, [_0]) } - public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[797]! } - public var Conversation_ViewBackground: String { return self._s[798]! } - public var Passport_Language_el: String { return self._s[799]! } - public var PhotoEditor_Original: String { return self._s[800]! } - public var Settings_FAQ_Button: String { return self._s[802]! } - public var Channel_Setup_PublicNoLink: String { return self._s[804]! } - public var Conversation_UnsupportedMedia: String { return self._s[805]! } - public var Conversation_SlideToCancel: String { return self._s[806]! } - public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[807]! } - public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[808]! } - public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[809]! } - public var Conversation_ReportSpamChannelConfirmation: String { return self._s[810]! } - public var AutoNightTheme_NotAvailable: String { return self._s[811]! } - public var Conversation_Owner: String { return self._s[812]! } - public var Common_Create: String { return self._s[813]! } - public var Settings_ApplyProxyAlertEnable: String { return self._s[814]! } - public var ContactList_Context_Call: String { return self._s[815]! } - public var Localization_ChooseLanguage: String { return self._s[817]! } - public var ChatList_Context_AddToContacts: String { return self._s[819]! } - public var Settings_Proxy: String { return self._s[821]! } - public var Privacy_TopPeersHelp: String { return self._s[822]! } - public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[823]! } - public var Chat_UnsendMyMessages: String { return self._s[824]! } + public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[799]! } + public var Conversation_ViewBackground: String { return self._s[800]! } + public var Passport_Language_el: String { return self._s[801]! } + public var PhotoEditor_Original: String { return self._s[802]! } + public var Settings_FAQ_Button: String { return self._s[804]! } + public var Channel_Setup_PublicNoLink: String { return self._s[806]! } + public var Conversation_UnsupportedMedia: String { return self._s[807]! } + public var Conversation_SlideToCancel: String { return self._s[808]! } + public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[809]! } + public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[810]! } + public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[811]! } + public var Conversation_ReportSpamChannelConfirmation: String { return self._s[812]! } + public var AutoNightTheme_NotAvailable: String { return self._s[813]! } + public var Conversation_Owner: String { return self._s[814]! } + public var Common_Create: String { return self._s[815]! } + public var Settings_ApplyProxyAlertEnable: String { return self._s[816]! } + public var ContactList_Context_Call: String { return self._s[817]! } + public var Localization_ChooseLanguage: String { return self._s[819]! } + public var ChatList_Context_AddToContacts: String { return self._s[821]! } + public var Settings_Proxy: String { return self._s[823]! } + public var Privacy_TopPeersHelp: String { return self._s[824]! } + public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[825]! } + public var Chat_UnsendMyMessages: String { return self._s[826]! } public func VoiceOver_Chat_Duration(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[825]!, self._r[825]!, [_0]) + return formatWithArgumentRanges(self._s[827]!, self._r[827]!, [_0]) } - public var TwoStepAuth_ConfirmationAbort: String { return self._s[826]! } + public var TwoStepAuth_ConfirmationAbort: String { return self._s[828]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[828]!, self._r[828]!, [_0]) + return formatWithArgumentRanges(self._s[830]!, self._r[830]!, [_0]) } - public var Contacts_SortedByPresence: String { return self._s[829]! } - public var Passport_Identity_SurnamePlaceholder: String { return self._s[830]! } - public var Cache_Title: String { return self._s[831]! } + public var Contacts_SortedByPresence: String { return self._s[831]! } + public var Passport_Identity_SurnamePlaceholder: String { return self._s[832]! } + public var Cache_Title: String { return self._s[833]! } public func Login_PhoneBannedEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[832]!, self._r[832]!, [_0]) + return formatWithArgumentRanges(self._s[834]!, self._r[834]!, [_0]) } - public var TwoStepAuth_EmailCodeExpired: String { return self._s[833]! } - public var Channel_Moderator_Title: String { return self._s[834]! } - public var InstantPage_AutoNightTheme: String { return self._s[836]! } + public var TwoStepAuth_EmailCodeExpired: String { return self._s[835]! } + public var Channel_Moderator_Title: String { return self._s[836]! } + public var InstantPage_AutoNightTheme: String { return self._s[838]! } public func PUSH_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[839]!, self._r[839]!, [_1]) + return formatWithArgumentRanges(self._s[841]!, self._r[841]!, [_1]) } - public var Passport_Scans_Upload: String { return self._s[840]! } - public var Undo_Undo: String { return self._s[842]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[843]! } - public var TwoStepAuth_RemovePassword: String { return self._s[844]! } - public var Common_Delete: String { return self._s[845]! } - public var Contacts_AddPeopleNearby: String { return self._s[847]! } - public var Conversation_ContextMenuDelete: String { return self._s[848]! } - public var SocksProxySetup_Credentials: String { return self._s[849]! } - public var Appearance_EditTheme: String { return self._s[851]! } - public var PasscodeSettings_AutoLock_Disabled: String { return self._s[852]! } - public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[855]! } - public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[856]! } - public var Passport_Language_id: String { return self._s[858]! } - public var WallpaperSearch_ColorTeal: String { return self._s[859]! } - public var ChannelIntro_Title: String { return self._s[860]! } + public var Passport_Scans_Upload: String { return self._s[842]! } + public var Undo_Undo: String { return self._s[844]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[845]! } + public var TwoStepAuth_RemovePassword: String { return self._s[846]! } + public var Common_Delete: String { return self._s[847]! } + public var Contacts_AddPeopleNearby: String { return self._s[849]! } + public var Conversation_ContextMenuDelete: String { return self._s[850]! } + public var SocksProxySetup_Credentials: String { return self._s[851]! } + public var Appearance_EditTheme: String { return self._s[853]! } + public var PasscodeSettings_AutoLock_Disabled: String { return self._s[854]! } + public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[857]! } + public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[858]! } + public var Passport_Language_id: String { return self._s[860]! } + public var WallpaperSearch_ColorTeal: String { return self._s[861]! } + public var ChannelIntro_Title: String { return self._s[862]! } public func Channel_AdminLog_MessageToggleSignaturesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[861]!, self._r[861]!, [_0]) + return formatWithArgumentRanges(self._s[863]!, self._r[863]!, [_0]) } - public var VoiceOver_Chat_OpenLinkHint: String { return self._s[863]! } - public var VoiceOver_Chat_Reply: String { return self._s[864]! } - public var ScheduledMessages_BotActionUnavailable: String { return self._s[865]! } - public var Channel_Info_Description: String { return self._s[866]! } - public var Stickers_FavoriteStickers: String { return self._s[867]! } - public var Channel_BanUser_PermissionAddMembers: String { return self._s[868]! } - public var Notifications_DisplayNamesOnLockScreen: String { return self._s[869]! } - public var ChatSearch_ResultsTooltip: String { return self._s[870]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[871]! } - public var Group_PublicLink_Placeholder: String { return self._s[872]! } - public var Notifications_ExceptionsDefaultSound: String { return self._s[873]! } + public var VoiceOver_Chat_OpenLinkHint: String { return self._s[865]! } + public var VoiceOver_Chat_Reply: String { return self._s[866]! } + public var ScheduledMessages_BotActionUnavailable: String { return self._s[867]! } + public var Channel_Info_Description: String { return self._s[868]! } + public var Stickers_FavoriteStickers: String { return self._s[869]! } + public var Channel_BanUser_PermissionAddMembers: String { return self._s[870]! } + public var Notifications_DisplayNamesOnLockScreen: String { return self._s[871]! } + public var ChatSearch_ResultsTooltip: String { return self._s[872]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[873]! } + public var Group_PublicLink_Placeholder: String { return self._s[874]! } + public var Notifications_ExceptionsDefaultSound: String { return self._s[875]! } public func PUSH_CHANNEL_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[874]!, self._r[874]!, [_1]) + return formatWithArgumentRanges(self._s[876]!, self._r[876]!, [_1]) } - public var TextFormat_Underline: String { return self._s[875]! } + public var TextFormat_Underline: String { return self._s[877]! } public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[876]!, self._r[876]!, [_1, _2]) + return formatWithArgumentRanges(self._s[878]!, self._r[878]!, [_1, _2]) } public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[877]!, self._r[877]!, [_0]) + return formatWithArgumentRanges(self._s[879]!, self._r[879]!, [_0]) } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[878]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[880]! } public func Channel_OwnershipTransfer_TransferCompleted(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[879]!, self._r[879]!, [_1, _2]) + return formatWithArgumentRanges(self._s[881]!, self._r[881]!, [_1, _2]) } - public var GroupPermission_Delete: String { return self._s[880]! } - public var Passport_Language_uk: String { return self._s[881]! } - public var StickerPack_HideStickers: String { return self._s[883]! } - public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[884]! } + public var GroupPermission_Delete: String { return self._s[882]! } + public var Passport_Language_uk: String { return self._s[883]! } + public var StickerPack_HideStickers: String { return self._s[885]! } + public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[886]! } public func PUSH_CHAT_MESSAGE_PHOTO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[885]!, self._r[885]!, [_1, _2]) + return formatWithArgumentRanges(self._s[887]!, self._r[887]!, [_1, _2]) } - public var Activity_UploadingVideoMessage: String { return self._s[886]! } + public var Activity_UploadingVideoMessage: String { return self._s[888]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[887]!, self._r[887]!, [_0]) + return formatWithArgumentRanges(self._s[889]!, self._r[889]!, [_0]) } - public var Channel_TitleInfo: String { return self._s[888]! } - public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[889]! } - public var Settings_CallSettings: String { return self._s[890]! } - public var Camera_SquareMode: String { return self._s[891]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[892]! } - public var GroupInfo_SharedMediaNone: String { return self._s[893]! } + public var Channel_TitleInfo: String { return self._s[890]! } + public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[891]! } + public var Settings_CallSettings: String { return self._s[892]! } + public var Camera_SquareMode: String { return self._s[893]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[894]! } + public var GroupInfo_SharedMediaNone: String { return self._s[895]! } public func PUSH_MESSAGE_VIDEO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[894]!, self._r[894]!, [_1]) + return formatWithArgumentRanges(self._s[896]!, self._r[896]!, [_1]) } - public var Bot_GenericBotStatus: String { return self._s[895]! } - public var Application_Update: String { return self._s[897]! } - public var Month_ShortJanuary: String { return self._s[898]! } - public var Contacts_PermissionsKeepDisabled: String { return self._s[899]! } - public var Channel_AdminLog_BanReadMessages: String { return self._s[900]! } - public var Settings_AppLanguage_Unofficial: String { return self._s[901]! } - public var Passport_Address_Street2Placeholder: String { return self._s[902]! } + public var Bot_GenericBotStatus: String { return self._s[897]! } + public var Application_Update: String { return self._s[899]! } + public var Month_ShortJanuary: String { return self._s[900]! } + public var Contacts_PermissionsKeepDisabled: String { return self._s[901]! } + public var Channel_AdminLog_BanReadMessages: String { return self._s[902]! } + public var Settings_AppLanguage_Unofficial: String { return self._s[903]! } + public var Passport_Address_Street2Placeholder: String { return self._s[904]! } public func Map_LiveLocationShortHour(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[903]!, self._r[903]!, [_0]) + return formatWithArgumentRanges(self._s[905]!, self._r[905]!, [_0]) } - public var NetworkUsageSettings_Cellular: String { return self._s[904]! } - public var Appearance_PreviewOutgoingText: String { return self._s[905]! } - public var Notifications_PermissionsAllowInSettings: String { return self._s[906]! } - public var AutoDownloadSettings_OnForAll: String { return self._s[908]! } - public var Map_Directions: String { return self._s[909]! } - public var Passport_FieldIdentityTranslationHelp: String { return self._s[911]! } - public var Appearance_ThemeDay: String { return self._s[912]! } - public var LogoutOptions_LogOut: String { return self._s[913]! } - public var Group_PublicLink_Title: String { return self._s[915]! } - public var Channel_AddBotErrorNoRights: String { return self._s[916]! } - public var Passport_Identity_AddPassport: String { return self._s[917]! } - public var LocalGroup_ButtonTitle: String { return self._s[918]! } - public var Call_Message: String { return self._s[919]! } - public var PhotoEditor_ExposureTool: String { return self._s[920]! } - public var Passport_FieldOneOf_Delimeter: String { return self._s[922]! } - public var Channel_AdminLog_CanBanUsers: String { return self._s[924]! } - public var Appearance_ThemePreview_ChatList_2_Name: String { return self._s[925]! } - public var Appearance_Preview: String { return self._s[926]! } - public var Compose_ChannelMembers: String { return self._s[927]! } - public var Conversation_DeleteManyMessages: String { return self._s[928]! } - public var ReportPeer_ReasonOther_Title: String { return self._s[929]! } - public var Checkout_ErrorProviderAccountTimeout: String { return self._s[930]! } - public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[931]! } - public var Channel_Stickers_CreateYourOwn: String { return self._s[934]! } - public var Conversation_UpdateTelegram: String { return self._s[935]! } - public var EditTheme_Create_TopInfo: String { return self._s[936]! } + public var NetworkUsageSettings_Cellular: String { return self._s[906]! } + public var Appearance_PreviewOutgoingText: String { return self._s[907]! } + public var Notifications_PermissionsAllowInSettings: String { return self._s[908]! } + public var AutoDownloadSettings_OnForAll: String { return self._s[910]! } + public var Map_Directions: String { return self._s[911]! } + public var Passport_FieldIdentityTranslationHelp: String { return self._s[913]! } + public var Appearance_ThemeDay: String { return self._s[914]! } + public var LogoutOptions_LogOut: String { return self._s[915]! } + public var Group_PublicLink_Title: String { return self._s[917]! } + public var Channel_AddBotErrorNoRights: String { return self._s[918]! } + public var Passport_Identity_AddPassport: String { return self._s[919]! } + public var LocalGroup_ButtonTitle: String { return self._s[920]! } + public var Call_Message: String { return self._s[921]! } + public var PhotoEditor_ExposureTool: String { return self._s[922]! } + public var Passport_FieldOneOf_Delimeter: String { return self._s[924]! } + public var Channel_AdminLog_CanBanUsers: String { return self._s[926]! } + public var Appearance_ThemePreview_ChatList_2_Name: String { return self._s[927]! } + public var Appearance_Preview: String { return self._s[928]! } + public var Compose_ChannelMembers: String { return self._s[929]! } + public var Conversation_DeleteManyMessages: String { return self._s[930]! } + public var ReportPeer_ReasonOther_Title: String { return self._s[931]! } + public var Checkout_ErrorProviderAccountTimeout: String { return self._s[932]! } + public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[933]! } + public var Channel_Stickers_CreateYourOwn: String { return self._s[936]! } + public var Conversation_UpdateTelegram: String { return self._s[937]! } + public var EditTheme_Create_TopInfo: String { return self._s[938]! } public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[937]!, self._r[937]!, [_0]) + return formatWithArgumentRanges(self._s[939]!, self._r[939]!, [_0]) } public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[938]!, self._r[938]!, [_1]) + return formatWithArgumentRanges(self._s[940]!, self._r[940]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[939]! } - public var Privacy_Forwards_PreviewMessageText: String { return self._s[940]! } + public var GroupInfo_Administrators_Title: String { return self._s[941]! } + public var Privacy_Forwards_PreviewMessageText: String { return self._s[942]! } public func PrivacySettings_LastSeenNobodyPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[941]!, self._r[941]!, [_0]) + return formatWithArgumentRanges(self._s[943]!, self._r[943]!, [_0]) } - public var Tour_Title3: String { return self._s[942]! } - public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[943]! } - public var Clipboard_SendPhoto: String { return self._s[947]! } - public var MediaPicker_Videos: String { return self._s[948]! } - public var Passport_Email_Title: String { return self._s[949]! } + public var Tour_Title3: String { return self._s[944]! } + public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[945]! } + public var Clipboard_SendPhoto: String { return self._s[949]! } + public var MediaPicker_Videos: String { return self._s[950]! } + public var Passport_Email_Title: String { return self._s[951]! } public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[950]!, self._r[950]!, [_0]) + return formatWithArgumentRanges(self._s[952]!, self._r[952]!, [_0]) } - public var StickerPacksSettings_Title: String { return self._s[951]! } - public var Conversation_MessageDialogDelete: String { return self._s[952]! } - public var Privacy_Calls_CustomHelp: String { return self._s[954]! } - public var Message_Wallpaper: String { return self._s[955]! } - public var MemberSearch_BotSection: String { return self._s[956]! } - public var GroupInfo_SetSound: String { return self._s[957]! } - public var Core_ServiceUserStatus: String { return self._s[958]! } - public var LiveLocationUpdated_JustNow: String { return self._s[959]! } - public var Call_StatusFailed: String { return self._s[960]! } - public var TwoStepAuth_SetupPasswordDescription: String { return self._s[961]! } - public var TwoStepAuth_SetPassword: String { return self._s[962]! } - public var Permissions_PeopleNearbyText_v0: String { return self._s[963]! } + public var StickerPacksSettings_Title: String { return self._s[953]! } + public var Conversation_MessageDialogDelete: String { return self._s[954]! } + public var Privacy_Calls_CustomHelp: String { return self._s[956]! } + public var Message_Wallpaper: String { return self._s[957]! } + public var MemberSearch_BotSection: String { return self._s[958]! } + public var GroupInfo_SetSound: String { return self._s[959]! } + public var Core_ServiceUserStatus: String { return self._s[960]! } + public var LiveLocationUpdated_JustNow: String { return self._s[961]! } + public var Call_StatusFailed: String { return self._s[962]! } + public var TwoStepAuth_SetupPasswordDescription: String { return self._s[963]! } + public var TwoStepAuth_SetPassword: String { return self._s[964]! } + public var Permissions_PeopleNearbyText_v0: String { return self._s[965]! } public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[965]!, self._r[965]!, [_0]) + return formatWithArgumentRanges(self._s[967]!, self._r[967]!, [_0]) } - public var Calls_SubmitRating: String { return self._s[966]! } - public var Profile_Username: String { return self._s[967]! } - public var Bot_DescriptionTitle: String { return self._s[968]! } - public var MaskStickerSettings_Title: String { return self._s[969]! } - public var SharedMedia_CategoryOther: String { return self._s[970]! } - public var GroupInfo_SetGroupPhoto: String { return self._s[971]! } - public var Common_NotNow: String { return self._s[972]! } - public var CallFeedback_IncludeLogsInfo: String { return self._s[973]! } - public var Conversation_ShareMyPhoneNumber: String { return self._s[974]! } - public var Map_Location: String { return self._s[975]! } - public var Invitation_JoinGroup: String { return self._s[976]! } - public var AutoDownloadSettings_Title: String { return self._s[978]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[979]! } - public var Channel_ErrorAddBlocked: String { return self._s[980]! } - public var Conversation_UnblockUser: String { return self._s[981]! } - public var EditTheme_Edit_TopInfo: String { return self._s[982]! } - public var Watch_Bot_Restart: String { return self._s[983]! } - public var TwoStepAuth_Title: String { return self._s[984]! } - public var Channel_AdminLog_BanSendMessages: String { return self._s[985]! } - public var Checkout_ShippingMethod: String { return self._s[986]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[987]! } + public var Calls_SubmitRating: String { return self._s[968]! } + public var Profile_Username: String { return self._s[969]! } + public var Bot_DescriptionTitle: String { return self._s[970]! } + public var MaskStickerSettings_Title: String { return self._s[971]! } + public var SharedMedia_CategoryOther: String { return self._s[972]! } + public var GroupInfo_SetGroupPhoto: String { return self._s[973]! } + public var Common_NotNow: String { return self._s[974]! } + public var CallFeedback_IncludeLogsInfo: String { return self._s[975]! } + public var Conversation_ShareMyPhoneNumber: String { return self._s[976]! } + public var Map_Location: String { return self._s[977]! } + public var Invitation_JoinGroup: String { return self._s[978]! } + public var AutoDownloadSettings_Title: String { return self._s[980]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[981]! } + public var Channel_ErrorAddBlocked: String { return self._s[982]! } + public var Conversation_UnblockUser: String { return self._s[983]! } + public var EditTheme_Edit_TopInfo: String { return self._s[984]! } + public var Watch_Bot_Restart: String { return self._s[985]! } + public var TwoStepAuth_Title: String { return self._s[986]! } + public var Channel_AdminLog_BanSendMessages: String { return self._s[987]! } + public var Checkout_ShippingMethod: String { return self._s[988]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[989]! } public func PUSH_CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[988]!, self._r[988]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[990]!, self._r[990]!, [_1, _2, _3]) } public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[990]!, self._r[990]!, [_0]) + return formatWithArgumentRanges(self._s[992]!, self._r[992]!, [_0]) } public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[991]!, self._r[991]!, [_0]) + return formatWithArgumentRanges(self._s[993]!, self._r[993]!, [_0]) } - public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[992]! } - public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[993]! } - public var AuthSessions_TerminateOtherSessions: String { return self._s[994]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[995]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[996]! } - public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[997]! } - public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[998]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[999]! } - public var Checkout_PaymentMethod_Title: String { return self._s[1000]! } - public var SocksProxySetup_Connection: String { return self._s[1001]! } - public var Group_MessagePhotoRemoved: String { return self._s[1002]! } - public var Channel_Stickers_NotFound: String { return self._s[1005]! } - public var Group_About_Help: String { return self._s[1006]! } - public var Notification_PassportValueProofOfIdentity: String { return self._s[1007]! } - public var PeopleNearby_Title: String { return self._s[1009]! } + public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[994]! } + public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[995]! } + public var AuthSessions_TerminateOtherSessions: String { return self._s[996]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[997]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[998]! } + public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[999]! } + public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[1000]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[1001]! } + public var Checkout_PaymentMethod_Title: String { return self._s[1002]! } + public var SocksProxySetup_Connection: String { return self._s[1003]! } + public var Group_MessagePhotoRemoved: String { return self._s[1004]! } + public var Channel_Stickers_NotFound: String { return self._s[1007]! } + public var Group_About_Help: String { return self._s[1008]! } + public var Notification_PassportValueProofOfIdentity: String { return self._s[1009]! } + public var PeopleNearby_Title: String { return self._s[1011]! } public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1010]!, self._r[1010]!, [_1]) + return formatWithArgumentRanges(self._s[1012]!, self._r[1012]!, [_1]) } - public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[1012]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[1013]! } - public var SocksProxySetup_Password: String { return self._s[1014]! } - public var Notifications_PermissionsEnable: String { return self._s[1015]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[1017]! } + public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[1014]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[1015]! } + public var SocksProxySetup_Password: String { return self._s[1016]! } + public var Notifications_PermissionsEnable: String { return self._s[1017]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[1019]! } public func Channel_AdminLog_MessageInvitedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1018]!, self._r[1018]!, [_1]) + return formatWithArgumentRanges(self._s[1020]!, self._r[1020]!, [_1]) } public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1020]!, self._r[1020]!, [_0]) + return formatWithArgumentRanges(self._s[1022]!, self._r[1022]!, [_0]) } - public var Passport_Identity_TypeDriversLicense: String { return self._s[1021]! } - public var ArchivedPacksAlert_Title: String { return self._s[1022]! } + public var Passport_Identity_TypeDriversLicense: String { return self._s[1023]! } + public var ArchivedPacksAlert_Title: String { return self._s[1024]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1023]!, self._r[1023]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1025]!, self._r[1025]!, [_1, _2, _3]) } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[1024]! } - public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[1026]! } - public var Conversation_StatusTyping: String { return self._s[1027]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[1028]! } - public var Notification_PassportValueProofOfAddress: String { return self._s[1029]! } - public var UserInfo_CreateNewContact: String { return self._s[1030]! } - public var Passport_Identity_FrontSide: String { return self._s[1031]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[1032]! } - public var Calls_CallTabTitle: String { return self._s[1033]! } - public var Channel_AdminLog_ChannelEmptyText: String { return self._s[1034]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[1026]! } + public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[1028]! } + public var Conversation_StatusTyping: String { return self._s[1029]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[1030]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[1031]! } + public var UserInfo_CreateNewContact: String { return self._s[1032]! } + public var Passport_Identity_FrontSide: String { return self._s[1033]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[1034]! } + public var Calls_CallTabTitle: String { return self._s[1035]! } + public var Channel_AdminLog_ChannelEmptyText: String { return self._s[1036]! } public func Login_BannedPhoneBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1036]!, self._r[1036]!, [_0]) + return formatWithArgumentRanges(self._s[1038]!, self._r[1038]!, [_0]) } - public var Watch_UserInfo_MuteTitle: String { return self._s[1037]! } - public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[1038]! } - public var SharedMedia_EmptyMusicText: String { return self._s[1039]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[1040]! } - public var Paint_Stickers: String { return self._s[1041]! } - public var Privacy_GroupsAndChannels: String { return self._s[1042]! } - public var ChatList_Context_Delete: String { return self._s[1044]! } - public var UserInfo_AddContact: String { return self._s[1045]! } + public var Watch_UserInfo_MuteTitle: String { return self._s[1039]! } + public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[1040]! } + public var SharedMedia_EmptyMusicText: String { return self._s[1041]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[1042]! } + public var Paint_Stickers: String { return self._s[1043]! } + public var Privacy_GroupsAndChannels: String { return self._s[1044]! } + public var ChatList_Context_Delete: String { return self._s[1046]! } + public var UserInfo_AddContact: String { return self._s[1047]! } public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1046]!, self._r[1046]!, [_0]) + return formatWithArgumentRanges(self._s[1048]!, self._r[1048]!, [_0]) } - public var PhoneNumberHelp_ChangeNumber: String { return self._s[1048]! } + public var PhoneNumberHelp_ChangeNumber: String { return self._s[1050]! } public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1050]!, self._r[1050]!, [_0]) + return formatWithArgumentRanges(self._s[1052]!, self._r[1052]!, [_0]) } - public var DialogList_NoMessagesTitle: String { return self._s[1051]! } - public var EditProfile_NameAndPhotoHelp: String { return self._s[1052]! } - public var BlockedUsers_BlockUser: String { return self._s[1053]! } - public var Notifications_PermissionsOpenSettings: String { return self._s[1054]! } - public var MediaPicker_UngroupDescription: String { return self._s[1055]! } - public var Watch_NoConnection: String { return self._s[1056]! } - public var Month_GenSeptember: String { return self._s[1057]! } - public var Conversation_ViewGroup: String { return self._s[1058]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[1061]! } - public var Privacy_Forwards_AlwaysLink: String { return self._s[1062]! } - public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1063]! } - public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[1064]! } - public var MediaPicker_CameraRoll: String { return self._s[1066]! } - public var Month_GenAugust: String { return self._s[1067]! } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[1068]! } - public var SharedMedia_EmptyText: String { return self._s[1069]! } - public var Map_ShareLiveLocation: String { return self._s[1070]! } - public var Calls_All: String { return self._s[1071]! } - public var Appearance_ThemeNight: String { return self._s[1074]! } - public var Conversation_HoldForAudio: String { return self._s[1075]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[1078]! } - public var GroupInfo_GroupHistoryHidden: String { return self._s[1079]! } - public var SocksProxySetup_Secret: String { return self._s[1080]! } + public var DialogList_NoMessagesTitle: String { return self._s[1053]! } + public var EditProfile_NameAndPhotoHelp: String { return self._s[1054]! } + public var BlockedUsers_BlockUser: String { return self._s[1055]! } + public var Notifications_PermissionsOpenSettings: String { return self._s[1056]! } + public var MediaPicker_UngroupDescription: String { return self._s[1057]! } + public var Watch_NoConnection: String { return self._s[1058]! } + public var Month_GenSeptember: String { return self._s[1059]! } + public var Conversation_ViewGroup: String { return self._s[1060]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[1063]! } + public var Privacy_Forwards_AlwaysLink: String { return self._s[1064]! } + public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1065]! } + public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[1066]! } + public var MediaPicker_CameraRoll: String { return self._s[1068]! } + public var Month_GenAugust: String { return self._s[1069]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[1070]! } + public var SharedMedia_EmptyText: String { return self._s[1071]! } + public var Map_ShareLiveLocation: String { return self._s[1072]! } + public var Calls_All: String { return self._s[1073]! } + public var Appearance_ThemeNight: String { return self._s[1076]! } + public var Conversation_HoldForAudio: String { return self._s[1077]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[1080]! } + public var GroupInfo_GroupHistoryHidden: String { return self._s[1081]! } + public var SocksProxySetup_Secret: String { return self._s[1082]! } public func Activity_RemindAboutChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1081]!, self._r[1081]!, [_0]) + return formatWithArgumentRanges(self._s[1083]!, self._r[1083]!, [_0]) } - public var Channel_BanList_RestrictedTitle: String { return self._s[1083]! } - public var Conversation_Location: String { return self._s[1084]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[1085]! } + public var Conversation_Location: String { return self._s[1086]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1085]!, self._r[1085]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1087]!, self._r[1087]!, [_1, _2]) } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[1087]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1088]! } - public var Notifications_PermissionsText: String { return self._s[1089]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1090]! } - public var Call_Flip: String { return self._s[1091]! } - public var Channel_AdminLog_CanDeleteMessagesOfOthers: String { return self._s[1093]! } - public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1094]! } - public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[1095]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1097]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1099]! } - public var Channel_TooMuchBots: String { return self._s[1101]! } - public var Passport_DeletePassportConfirmation: String { return self._s[1102]! } - public var Login_InvalidCodeError: String { return self._s[1103]! } - public var StickerPacksSettings_FeaturedPacks: String { return self._s[1104]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[1089]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1090]! } + public var Notifications_PermissionsText: String { return self._s[1091]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1092]! } + public var Call_Flip: String { return self._s[1093]! } + public var Channel_AdminLog_CanDeleteMessagesOfOthers: String { return self._s[1095]! } + public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1096]! } + public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[1097]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1099]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1101]! } + public var Channel_TooMuchBots: String { return self._s[1103]! } + public var Passport_DeletePassportConfirmation: String { return self._s[1104]! } + public var Login_InvalidCodeError: String { return self._s[1105]! } + public var StickerPacksSettings_FeaturedPacks: String { return self._s[1106]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1105]!, self._r[1105]!, [_0]) + return formatWithArgumentRanges(self._s[1107]!, self._r[1107]!, [_0]) } public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1106]!, self._r[1106]!, [_0]) + return formatWithArgumentRanges(self._s[1108]!, self._r[1108]!, [_0]) } - public var VoiceOver_Navigation_ProxySettings: String { return self._s[1107]! } - public var Call_CallInProgressTitle: String { return self._s[1108]! } - public var Month_ShortSeptember: String { return self._s[1109]! } - public var Watch_ChannelInfo_Title: String { return self._s[1110]! } - public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1113]! } - public var DialogList_PasscodeLockHelp: String { return self._s[1114]! } - public var Chat_MultipleTextMessagesDisabled: String { return self._s[1115]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[1116]! } - public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1117]! } - public var PhotoEditor_CropReset: String { return self._s[1118]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1120]! } - public var Channel_Management_LabelEditor: String { return self._s[1121]! } - public var Passport_Identity_LatinNameHelp: String { return self._s[1123]! } - public var PhotoEditor_HighlightsTool: String { return self._s[1124]! } - public var UserInfo_Title: String { return self._s[1125]! } - public var ChatList_HideAction: String { return self._s[1126]! } - public var AccessDenied_Title: String { return self._s[1127]! } - public var DialogList_SearchLabel: String { return self._s[1128]! } - public var Group_Setup_HistoryHidden: String { return self._s[1129]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1130]! } - public var State_Updating: String { return self._s[1132]! } - public var Contacts_TabTitle: String { return self._s[1133]! } - public var Notifications_Badge_CountUnreadMessages: String { return self._s[1135]! } - public var GroupInfo_GroupHistory: String { return self._s[1136]! } - public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1137]! } - public var Wallpaper_SetColor: String { return self._s[1138]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1139]! } - public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1140]! } - public var Chat_AttachmentLimitReached: String { return self._s[1141]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1142]! } - public var Contacts_NotRegisteredSection: String { return self._s[1143]! } + public var VoiceOver_Navigation_ProxySettings: String { return self._s[1109]! } + public var Call_CallInProgressTitle: String { return self._s[1110]! } + public var Month_ShortSeptember: String { return self._s[1111]! } + public var Watch_ChannelInfo_Title: String { return self._s[1112]! } + public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1115]! } + public var DialogList_PasscodeLockHelp: String { return self._s[1116]! } + public var Chat_MultipleTextMessagesDisabled: String { return self._s[1117]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[1118]! } + public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1119]! } + public var PhotoEditor_CropReset: String { return self._s[1120]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1122]! } + public var Channel_Management_LabelEditor: String { return self._s[1123]! } + public var Passport_Identity_LatinNameHelp: String { return self._s[1125]! } + public var PhotoEditor_HighlightsTool: String { return self._s[1126]! } + public var UserInfo_Title: String { return self._s[1127]! } + public var ChatList_HideAction: String { return self._s[1128]! } + public var AccessDenied_Title: String { return self._s[1129]! } + public var DialogList_SearchLabel: String { return self._s[1130]! } + public var Group_Setup_HistoryHidden: String { return self._s[1131]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1132]! } + public var State_Updating: String { return self._s[1134]! } + public var Contacts_TabTitle: String { return self._s[1135]! } + public var Notifications_Badge_CountUnreadMessages: String { return self._s[1137]! } + public var GroupInfo_GroupHistory: String { return self._s[1138]! } + public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1139]! } + public var Wallpaper_SetColor: String { return self._s[1140]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1141]! } + public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1142]! } + public var Chat_AttachmentLimitReached: String { return self._s[1143]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1144]! } + public var Contacts_NotRegisteredSection: String { return self._s[1145]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1144]!, self._r[1144]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1146]!, self._r[1146]!, [_1, _2, _3]) } - public var Paint_Clear: String { return self._s[1145]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[1146]! } - public var SocksProxySetup_Connecting: String { return self._s[1147]! } - public var ExplicitContent_AlertChannel: String { return self._s[1148]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[1149]! } - public var Conversation_Contact: String { return self._s[1150]! } - public var Login_CodeExpired: String { return self._s[1151]! } - public var Passport_DiscardMessageAction: String { return self._s[1152]! } - public var ChatList_Context_Unpin: String { return self._s[1153]! } - public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1154]! } + public var Paint_Clear: String { return self._s[1147]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[1148]! } + public var SocksProxySetup_Connecting: String { return self._s[1149]! } + public var ExplicitContent_AlertChannel: String { return self._s[1150]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[1151]! } + public var Conversation_Contact: String { return self._s[1152]! } + public var Login_CodeExpired: String { return self._s[1153]! } + public var Passport_DiscardMessageAction: String { return self._s[1154]! } + public var ChatList_Context_Unpin: String { return self._s[1155]! } + public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1156]! } public func VoiceOver_Chat_MusicFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1155]!, self._r[1155]!, [_0]) + return formatWithArgumentRanges(self._s[1157]!, self._r[1157]!, [_0]) } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[1156]! } - public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1157]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[1158]! } + public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1159]! } public func Group_EditAdmin_RankInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1158]!, self._r[1158]!, [_0]) + return formatWithArgumentRanges(self._s[1160]!, self._r[1160]!, [_0]) } - public var Month_ShortApril: String { return self._s[1159]! } - public var AuthSessions_CurrentSession: String { return self._s[1160]! } - public var Chat_AttachmentMultipleFilesDisabled: String { return self._s[1163]! } - public var WallpaperPreview_CropTopText: String { return self._s[1165]! } - public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1166]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1167]! } + public var Month_ShortApril: String { return self._s[1161]! } + public var AuthSessions_CurrentSession: String { return self._s[1162]! } + public var Chat_AttachmentMultipleFilesDisabled: String { return self._s[1165]! } + public var WallpaperPreview_CropTopText: String { return self._s[1167]! } + public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1168]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1169]! } public func Conversation_ScheduleMessage_SendOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1168]!, self._r[1168]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1170]!, self._r[1170]!, [_0, _1]) } - public var Appearance_ThemePreview_Chat_2_Text: String { return self._s[1169]! } - public var Channel_Setup_TypePrivate: String { return self._s[1171]! } - public var Forward_ChannelReadOnly: String { return self._s[1174]! } - public var PhotoEditor_CurvesBlue: String { return self._s[1175]! } - public var AddContact_SharedContactException: String { return self._s[1176]! } - public var UserInfo_BotPrivacy: String { return self._s[1178]! } - public var Notification_PassportValueEmail: String { return self._s[1179]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[1180]! } - public var GroupPermission_NewTitle: String { return self._s[1181]! } - public var CallFeedback_ReasonDropped: String { return self._s[1182]! } - public var GroupInfo_Permissions_AddException: String { return self._s[1183]! } - public var Channel_SignMessages_Help: String { return self._s[1185]! } - public var Undo_ChatDeleted: String { return self._s[1187]! } - public var Conversation_ChatBackground: String { return self._s[1188]! } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1189]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1190]! } - public var Passport_Language_pt: String { return self._s[1191]! } - public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[1192]! } - public var NotificationsSound_Popcorn: String { return self._s[1195]! } - public var AutoNightTheme_Disabled: String { return self._s[1196]! } - public var BlockedUsers_LeavePrefix: String { return self._s[1197]! } - public var WallpaperPreview_CustomColorTopText: String { return self._s[1198]! } - public var Contacts_PermissionsSuppressWarningText: String { return self._s[1199]! } - public var WallpaperSearch_ColorBlue: String { return self._s[1200]! } + public var Appearance_ThemePreview_Chat_2_Text: String { return self._s[1171]! } + public var Channel_Setup_TypePrivate: String { return self._s[1173]! } + public var Forward_ChannelReadOnly: String { return self._s[1176]! } + public var PhotoEditor_CurvesBlue: String { return self._s[1177]! } + public var AddContact_SharedContactException: String { return self._s[1178]! } + public var UserInfo_BotPrivacy: String { return self._s[1180]! } + public var Notification_PassportValueEmail: String { return self._s[1181]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[1182]! } + public var GroupPermission_NewTitle: String { return self._s[1183]! } + public var CallFeedback_ReasonDropped: String { return self._s[1184]! } + public var GroupInfo_Permissions_AddException: String { return self._s[1185]! } + public var Channel_SignMessages_Help: String { return self._s[1187]! } + public var Undo_ChatDeleted: String { return self._s[1189]! } + public var Conversation_ChatBackground: String { return self._s[1190]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1191]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1192]! } + public var Passport_Language_pt: String { return self._s[1193]! } + public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[1194]! } + public var NotificationsSound_Popcorn: String { return self._s[1197]! } + public var AutoNightTheme_Disabled: String { return self._s[1198]! } + public var BlockedUsers_LeavePrefix: String { return self._s[1199]! } + public var WallpaperPreview_CustomColorTopText: String { return self._s[1200]! } + public var Contacts_PermissionsSuppressWarningText: String { return self._s[1201]! } + public var WallpaperSearch_ColorBlue: String { return self._s[1202]! } public func CancelResetAccount_TextSMS(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1201]!, self._r[1201]!, [_0]) + return formatWithArgumentRanges(self._s[1203]!, self._r[1203]!, [_0]) } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1202]! } - public var SocksProxySetup_UseForCalls: String { return self._s[1203]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[1205]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1204]! } + public var SocksProxySetup_UseForCalls: String { return self._s[1205]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[1207]! } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1206]!, self._r[1206]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1208]!, self._r[1208]!, ["\(_0)"]) } - public var SocksProxySetup_Hostname: String { return self._s[1209]! } - public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1210]! } - public var Compose_NewEncryptedChat: String { return self._s[1211]! } - public var Login_CodeFloodError: String { return self._s[1212]! } - public var Calls_TabTitle: String { return self._s[1213]! } - public var Privacy_ProfilePhoto: String { return self._s[1214]! } - public var Passport_Language_he: String { return self._s[1215]! } + public var SocksProxySetup_Hostname: String { return self._s[1211]! } + public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1212]! } + public var Compose_NewEncryptedChat: String { return self._s[1213]! } + public var Login_CodeFloodError: String { return self._s[1214]! } + public var Calls_TabTitle: String { return self._s[1215]! } + public var Privacy_ProfilePhoto: String { return self._s[1216]! } + public var Passport_Language_he: String { return self._s[1217]! } public func Conversation_SetReminder_RemindToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1216]!, self._r[1216]!, [_0]) - } - public var GroupPermission_Title: String { return self._s[1217]! } - public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1218]!, self._r[1218]!, [_0]) } - public var GroupPermission_NoChangeInfo: String { return self._s[1219]! } - public var ChatList_DeleteForCurrentUser: String { return self._s[1220]! } - public var Tour_Text1: String { return self._s[1221]! } - public var Channel_EditAdmin_TransferOwnership: String { return self._s[1222]! } - public var Month_ShortFebruary: String { return self._s[1223]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1224]! } - public var NotificationsSound_Glass: String { return self._s[1225]! } - public var Appearance_ThemeNightBlue: String { return self._s[1226]! } - public var CheckoutInfo_Pay: String { return self._s[1227]! } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1229]! } - public var Call_CallAgain: String { return self._s[1231]! } - public var AttachmentMenu_SendAsFile: String { return self._s[1232]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[1233]! } - public var Passport_InvalidPasswordError: String { return self._s[1234]! } - public var Watch_Message_Game: String { return self._s[1235]! } - public var Stickers_Install: String { return self._s[1236]! } - public var VoiceOver_Chat_Message: String { return self._s[1237]! } - public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1238]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[1240]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1241]! } - public var AuthSessions_OtherSessions: String { return self._s[1242]! } - public var Channel_Username_Help: String { return self._s[1243]! } - public var Camera_Title: String { return self._s[1244]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1246]! } - public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1247]! } - public var Channel_AdminLog_SendPolls: String { return self._s[1248]! } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1249]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1250]! } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1251]! } - public var ScheduledMessages_DeleteMany: String { return self._s[1252]! } - public var Conversation_RestrictedStickers: String { return self._s[1253]! } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[1255]! } - public var UserInfo_TelegramCall: String { return self._s[1257]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1258]! } - public var CreatePoll_OptionsHeader: String { return self._s[1259]! } - public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1260]! } - public var ArchivedChats_IntroTitle1: String { return self._s[1261]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1262]! } - public var Passport_Identity_EditPersonalDetails: String { return self._s[1263]! } + public var GroupPermission_Title: String { return self._s[1219]! } + public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1220]!, self._r[1220]!, [_0]) + } + public var GroupPermission_NoChangeInfo: String { return self._s[1221]! } + public var ChatList_DeleteForCurrentUser: String { return self._s[1222]! } + public var Tour_Text1: String { return self._s[1223]! } + public var Channel_EditAdmin_TransferOwnership: String { return self._s[1224]! } + public var Month_ShortFebruary: String { return self._s[1225]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1226]! } + public var NotificationsSound_Glass: String { return self._s[1227]! } + public var Appearance_ThemeNightBlue: String { return self._s[1228]! } + public var CheckoutInfo_Pay: String { return self._s[1229]! } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1231]! } + public var Call_CallAgain: String { return self._s[1233]! } + public var AttachmentMenu_SendAsFile: String { return self._s[1234]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[1235]! } + public var Passport_InvalidPasswordError: String { return self._s[1236]! } + public var Watch_Message_Game: String { return self._s[1237]! } + public var Stickers_Install: String { return self._s[1238]! } + public var VoiceOver_Chat_Message: String { return self._s[1239]! } + public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1240]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[1242]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1243]! } + public var AuthSessions_OtherSessions: String { return self._s[1244]! } + public var Channel_Username_Help: String { return self._s[1245]! } + public var Camera_Title: String { return self._s[1246]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1248]! } + public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1249]! } + public var Channel_AdminLog_SendPolls: String { return self._s[1250]! } + public var Channel_AdminLog_TitleAllEvents: String { return self._s[1251]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1252]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1253]! } + public var ScheduledMessages_DeleteMany: String { return self._s[1254]! } + public var Conversation_RestrictedStickers: String { return self._s[1255]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[1257]! } + public var UserInfo_TelegramCall: String { return self._s[1259]! } + public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1260]! } + public var CreatePoll_OptionsHeader: String { return self._s[1261]! } + public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1262]! } + public var ArchivedChats_IntroTitle1: String { return self._s[1263]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1264]! } + public var Passport_Identity_EditPersonalDetails: String { return self._s[1265]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1264]!, self._r[1264]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1266]!, self._r[1266]!, [_1, _2, _3]) } - public var Settings_SaveEditedPhotos: String { return self._s[1265]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[1266]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1267]! } - public var Conversation_MessageDialogRetry: String { return self._s[1268]! } - public var ChatList_Context_MarkAsUnread: String { return self._s[1269]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[1270]! } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1271]! } - public var Group_Setup_TypeHeader: String { return self._s[1272]! } - public var Paint_RecentStickers: String { return self._s[1273]! } - public var PhotoEditor_GrainTool: String { return self._s[1274]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[1275]! } - public var EmptyGroupInfo_Line4: String { return self._s[1276]! } - public var Watch_AuthRequired: String { return self._s[1278]! } + public var Settings_SaveEditedPhotos: String { return self._s[1267]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[1268]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1269]! } + public var Conversation_MessageDialogRetry: String { return self._s[1270]! } + public var ChatList_Context_MarkAsUnread: String { return self._s[1271]! } + public var Conversation_DiscardVoiceMessageAction: String { return self._s[1272]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1273]! } + public var Group_Setup_TypeHeader: String { return self._s[1274]! } + public var Paint_RecentStickers: String { return self._s[1275]! } + public var PhotoEditor_GrainTool: String { return self._s[1276]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[1277]! } + public var EmptyGroupInfo_Line4: String { return self._s[1278]! } + public var Watch_AuthRequired: String { return self._s[1280]! } public func Passport_Email_UseTelegramEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1279]!, self._r[1279]!, [_0]) + return formatWithArgumentRanges(self._s[1281]!, self._r[1281]!, [_0]) } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1280]! } - public var ChannelIntro_Text: String { return self._s[1281]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[1282]! } - public var GroupPermission_NoSendMedia: String { return self._s[1283]! } - public var Calls_AddTab: String { return self._s[1284]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[1285]! } - public var Channel_AdminLog_EmptyFilterText: String { return self._s[1286]! } - public var Notification_MessageLifetime1d: String { return self._s[1287]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1288]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1289]! } - public var Passport_Identity_GenderFemale: String { return self._s[1290]! } - public var BlockedUsers_BlockTitle: String { return self._s[1291]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1282]! } + public var ChannelIntro_Text: String { return self._s[1283]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[1284]! } + public var GroupPermission_NoSendMedia: String { return self._s[1285]! } + public var Calls_AddTab: String { return self._s[1286]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[1287]! } + public var Channel_AdminLog_EmptyFilterText: String { return self._s[1288]! } + public var Notification_MessageLifetime1d: String { return self._s[1289]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1290]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1291]! } + public var Passport_Identity_GenderFemale: String { return self._s[1292]! } + public var BlockedUsers_BlockTitle: String { return self._s[1293]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1292]!, self._r[1292]!, [_1]) + return formatWithArgumentRanges(self._s[1294]!, self._r[1294]!, [_1]) } - public var Weekday_Yesterday: String { return self._s[1293]! } - public var WallpaperSearch_ColorBlack: String { return self._s[1294]! } - public var Settings_Context_Logout: String { return self._s[1295]! } - public var ChatList_ArchiveAction: String { return self._s[1296]! } - public var AutoNightTheme_Scheduled: String { return self._s[1297]! } + public var Weekday_Yesterday: String { return self._s[1295]! } + public var WallpaperSearch_ColorBlack: String { return self._s[1296]! } + public var Settings_Context_Logout: String { return self._s[1297]! } + public var ChatList_ArchiveAction: String { return self._s[1298]! } + public var AutoNightTheme_Scheduled: String { return self._s[1299]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1298]!, self._r[1298]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[1300]!, self._r[1300]!, [_1, _2, _3, _4, _5, _6]) } - public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[1299]! } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1300]! } + public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[1301]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1302]! } public func PUSH_CHAT_JOINED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1301]!, self._r[1301]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1303]!, self._r[1303]!, [_1, _2]) } - public var CreatePoll_Create: String { return self._s[1302]! } - public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1303]! } + public var CreatePoll_Create: String { return self._s[1304]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1305]! } public func Notification_CallFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1304]!, self._r[1304]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1306]!, self._r[1306]!, [_1, _2]) } - public var ScheduledMessages_ClearAllConfirmation: String { return self._s[1305]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1306]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[1308]! } + public var ScheduledMessages_ClearAllConfirmation: String { return self._s[1307]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1308]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[1310]! } public func PUSH_PINNED_GAME_SCORE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1309]!, self._r[1309]!, [_1]) + return formatWithArgumentRanges(self._s[1311]!, self._r[1311]!, [_1]) } - public var Preview_OpenInInstagram: String { return self._s[1310]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1311]! } + public var Preview_OpenInInstagram: String { return self._s[1312]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1313]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1312]!, self._r[1312]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1314]!, self._r[1314]!, [_1, _2, _3]) } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1313]!, self._r[1313]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1315]!, self._r[1315]!, [_1, _2]) } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1314]! } - public var ArchivedChats_IntroText3: String { return self._s[1315]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[1316]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1317]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1318]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1316]! } + public var ArchivedChats_IntroText3: String { return self._s[1317]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[1318]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1319]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1320]! } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1319]!, self._r[1319]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1321]!, self._r[1321]!, [_1, _2, _3]) } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1321]! } - public var FastTwoStepSetup_HintSection: String { return self._s[1322]! } - public var Wallpaper_PhotoLibrary: String { return self._s[1323]! } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1324]! } - public var Gif_NoGifsFound: String { return self._s[1325]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[1326]! } - public var VoiceOver_MessageContextDelete: String { return self._s[1327]! } - public var EditTheme_Preview: String { return self._s[1328]! } - public var GroupInfo_ActionPromote: String { return self._s[1329]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[1330]! } - public var GroupInfo_Permissions_Title: String { return self._s[1331]! } - public var Permissions_ContactsText_v0: String { return self._s[1332]! } - public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[1333]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1334]! } - public var PrivacySettings_DataSettingsHelp: String { return self._s[1337]! } - public var Passport_FieldEmailHelp: String { return self._s[1338]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1323]! } + public var FastTwoStepSetup_HintSection: String { return self._s[1324]! } + public var Wallpaper_PhotoLibrary: String { return self._s[1325]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1326]! } + public var Gif_NoGifsFound: String { return self._s[1327]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[1328]! } + public var VoiceOver_MessageContextDelete: String { return self._s[1329]! } + public var EditTheme_Preview: String { return self._s[1330]! } + public var GroupInfo_ActionPromote: String { return self._s[1331]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[1332]! } + public var GroupInfo_Permissions_Title: String { return self._s[1333]! } + public var Permissions_ContactsText_v0: String { return self._s[1334]! } + public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[1335]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1336]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1339]! } + public var Passport_FieldEmailHelp: String { return self._s[1340]! } public func Activity_RemindAboutUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1339]!, self._r[1339]!, [_0]) + return formatWithArgumentRanges(self._s[1341]!, self._r[1341]!, [_0]) } - public var Passport_Identity_GenderPlaceholder: String { return self._s[1340]! } - public var Weekday_ShortSaturday: String { return self._s[1341]! } - public var ContactInfo_PhoneLabelMain: String { return self._s[1342]! } - public var Watch_Conversation_UserInfo: String { return self._s[1343]! } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1344]! } - public var PrivacyLastSeenSettings_Title: String { return self._s[1345]! } - public var Conversation_ShareBotLocationConfirmation: String { return self._s[1346]! } - public var PhotoEditor_VignetteTool: String { return self._s[1347]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1348]! } - public var Passport_Language_et: String { return self._s[1349]! } - public var AppUpgrade_Running: String { return self._s[1350]! } - public var Channel_DiscussionGroup_Info: String { return self._s[1352]! } - public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[1353]! } - public var Passport_Language_bg: String { return self._s[1354]! } - public var Stickers_NoStickersFound: String { return self._s[1356]! } + public var Passport_Identity_GenderPlaceholder: String { return self._s[1342]! } + public var Weekday_ShortSaturday: String { return self._s[1343]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[1344]! } + public var Watch_Conversation_UserInfo: String { return self._s[1345]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1346]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[1347]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[1348]! } + public var PhotoEditor_VignetteTool: String { return self._s[1349]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1350]! } + public var Passport_Language_et: String { return self._s[1351]! } + public var AppUpgrade_Running: String { return self._s[1352]! } + public var Channel_DiscussionGroup_Info: String { return self._s[1354]! } + public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[1355]! } + public var Passport_Language_bg: String { return self._s[1356]! } + public var Stickers_NoStickersFound: String { return self._s[1358]! } public func PUSH_CHANNEL_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1358]!, self._r[1358]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1360]!, self._r[1360]!, [_1, _2]) } public func VoiceOver_Chat_ContactFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1359]!, self._r[1359]!, [_0]) + return formatWithArgumentRanges(self._s[1361]!, self._r[1361]!, [_0]) } - public var Settings_About: String { return self._s[1360]! } + public var Settings_About: String { return self._s[1362]! } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1361]!, self._r[1361]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1363]!, self._r[1363]!, [_0, _1, _2]) } - public var ChatList_Context_MarkAsRead: String { return self._s[1363]! } - public var KeyCommand_NewMessage: String { return self._s[1364]! } - public var Group_ErrorAddBlocked: String { return self._s[1365]! } + public var ChatList_Context_MarkAsRead: String { return self._s[1365]! } + public var KeyCommand_NewMessage: String { return self._s[1366]! } + public var Group_ErrorAddBlocked: String { return self._s[1367]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1366]!, self._r[1366]!, [_0]) + return formatWithArgumentRanges(self._s[1368]!, self._r[1368]!, [_0]) } - public var Map_LocationTitle: String { return self._s[1367]! } - public var ReportGroupLocation_Title: String { return self._s[1368]! } - public var CallSettings_UseLessDataLongDescription: String { return self._s[1369]! } - public var Cache_ClearProgress: String { return self._s[1370]! } + public var Map_LocationTitle: String { return self._s[1369]! } + public var ReportGroupLocation_Title: String { return self._s[1370]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1371]! } + public var Cache_ClearProgress: String { return self._s[1372]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1371]!, self._r[1371]!, [_0]) + return formatWithArgumentRanges(self._s[1373]!, self._r[1373]!, [_0]) } - public var GroupRemoved_AddToGroup: String { return self._s[1372]! } - public var Passport_UpdateRequiredError: String { return self._s[1373]! } + public var GroupRemoved_AddToGroup: String { return self._s[1374]! } + public var Passport_UpdateRequiredError: String { return self._s[1375]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1374]!, self._r[1374]!, [_1]) + return formatWithArgumentRanges(self._s[1376]!, self._r[1376]!, [_1]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[1376]! } - public var Passport_Identity_MainPageHelp: String { return self._s[1377]! } - public var Conversation_StatusKickedFromGroup: String { return self._s[1378]! } - public var Passport_Language_ka: String { return self._s[1379]! } - public var Call_Decline: String { return self._s[1380]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[1381]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[1378]! } + public var Passport_Identity_MainPageHelp: String { return self._s[1379]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[1380]! } + public var Passport_Language_ka: String { return self._s[1381]! } + public var Call_Decline: String { return self._s[1382]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[1383]! } public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1384]!, self._r[1384]!, [_0]) + return formatWithArgumentRanges(self._s[1386]!, self._r[1386]!, [_0]) } - public var CallFeedback_Send: String { return self._s[1385]! } - public var EditTheme_EditTitle: String { return self._s[1386]! } + public var CallFeedback_Send: String { return self._s[1387]! } + public var EditTheme_EditTitle: String { return self._s[1388]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1387]!, self._r[1387]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1389]!, self._r[1389]!, [_1, _2]) } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1388]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1390]! } - public var Passport_DeletePassport: String { return self._s[1391]! } - public var Appearance_AppIconFilled: String { return self._s[1392]! } - public var Privacy_Calls_P2PAlways: String { return self._s[1393]! } - public var Month_ShortDecember: String { return self._s[1394]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1396]! } + public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1390]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1393]! } + public var Passport_DeletePassport: String { return self._s[1394]! } + public var Appearance_AppIconFilled: String { return self._s[1395]! } + public var Privacy_Calls_P2PAlways: String { return self._s[1396]! } + public var Month_ShortDecember: String { return self._s[1397]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1399]! } public func Contacts_AccessDeniedHelpLandscape(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1397]!, self._r[1397]!, [_0]) + return formatWithArgumentRanges(self._s[1400]!, self._r[1400]!, [_0]) } - public var Channel_Stickers_Searching: String { return self._s[1398]! } - public var Conversation_EncryptedDescription1: String { return self._s[1399]! } - public var Conversation_EncryptedDescription2: String { return self._s[1400]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[1401]! } - public var Conversation_EncryptedDescription3: String { return self._s[1402]! } - public var PhotoEditor_SharpenTool: String { return self._s[1403]! } + public var Channel_Stickers_Searching: String { return self._s[1401]! } + public var Conversation_EncryptedDescription1: String { return self._s[1402]! } + public var Conversation_EncryptedDescription2: String { return self._s[1403]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[1404]! } + public var Conversation_EncryptedDescription3: String { return self._s[1405]! } + public var PhotoEditor_SharpenTool: String { return self._s[1406]! } public func Conversation_AddNameToContacts(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1404]!, self._r[1404]!, [_0]) + return formatWithArgumentRanges(self._s[1407]!, self._r[1407]!, [_0]) } - public var Conversation_EncryptedDescription4: String { return self._s[1406]! } - public var Channel_Members_AddMembers: String { return self._s[1407]! } - public var Wallpaper_Search: String { return self._s[1408]! } - public var Weekday_Friday: String { return self._s[1409]! } - public var Privacy_ContactsSync: String { return self._s[1410]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1411]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1412]! } + public var Conversation_EncryptedDescription4: String { return self._s[1409]! } + public var Channel_Members_AddMembers: String { return self._s[1410]! } + public var Wallpaper_Search: String { return self._s[1411]! } + public var Weekday_Friday: String { return self._s[1412]! } + public var Privacy_ContactsSync: String { return self._s[1413]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1414]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1415]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1413]!, self._r[1413]!, [_0]) - } - public var GroupInfo_Permissions_Removed: String { return self._s[1414]! } - public var Passport_Identity_GenderMale: String { return self._s[1415]! } - public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1416]!, self._r[1416]!, [_0]) } - public var Notifications_PermissionsKeepDisabled: String { return self._s[1417]! } - public var Conversation_JumpToDate: String { return self._s[1418]! } - public var Contacts_GlobalSearch: String { return self._s[1419]! } - public var AutoDownloadSettings_ResetHelp: String { return self._s[1420]! } - public var SettingsSearch_Synonyms_FAQ: String { return self._s[1421]! } - public var Profile_MessageLifetime1d: String { return self._s[1422]! } - public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1423]!, self._r[1423]!, [_1, _2]) + public var GroupInfo_Permissions_Removed: String { return self._s[1417]! } + public var Passport_Identity_GenderMale: String { return self._s[1418]! } + public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1419]!, self._r[1419]!, [_0]) } - public var StickerPack_BuiltinPackName: String { return self._s[1426]! } - public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + public var Updated_JustNow: String { return self._s[1420]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[1421]! } + public var Conversation_JumpToDate: String { return self._s[1422]! } + public var Contacts_GlobalSearch: String { return self._s[1423]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[1424]! } + public var SettingsSearch_Synonyms_FAQ: String { return self._s[1425]! } + public var Profile_MessageLifetime1d: String { return self._s[1426]! } + public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1427]!, self._r[1427]!, [_1, _2]) } - public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[1428]! } - public var Passport_InfoTitle: String { return self._s[1430]! } - public var Notifications_PermissionsUnreachableText: String { return self._s[1431]! } + public var StickerPack_BuiltinPackName: String { return self._s[1430]! } + public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1431]!, self._r[1431]!, [_1, _2]) + } + public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[1432]! } + public var Passport_InfoTitle: String { return self._s[1434]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[1435]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1435]!, self._r[1435]!, [_0]) + return formatWithArgumentRanges(self._s[1439]!, self._r[1439]!, [_0]) } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1436]!, self._r[1436]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1440]!, self._r[1440]!, [_1, _2]) } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1437]! } - public var Profile_BotInfo: String { return self._s[1438]! } - public var Watch_Compose_CreateMessage: String { return self._s[1439]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1440]! } - public var Month_ShortNovember: String { return self._s[1441]! } - public var Conversation_ScamWarning: String { return self._s[1442]! } - public var Wallpaper_SetCustomBackground: String { return self._s[1443]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1444]! } - public var NotificationsSound_Chime: String { return self._s[1445]! } - public var Passport_Language_ko: String { return self._s[1447]! } - public var InviteText_URL: String { return self._s[1448]! } - public var TextFormat_Monospace: String { return self._s[1449]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1441]! } + public var Profile_BotInfo: String { return self._s[1442]! } + public var Watch_Compose_CreateMessage: String { return self._s[1443]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1444]! } + public var Month_ShortNovember: String { return self._s[1445]! } + public var Conversation_ScamWarning: String { return self._s[1446]! } + public var Wallpaper_SetCustomBackground: String { return self._s[1447]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1448]! } + public var NotificationsSound_Chime: String { return self._s[1449]! } + public var Passport_Language_ko: String { return self._s[1451]! } + public var InviteText_URL: String { return self._s[1452]! } + public var TextFormat_Monospace: String { return self._s[1453]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1450]!, self._r[1450]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1454]!, self._r[1454]!, [_1, _2, _3]) } - public var EditTheme_Edit_BottomInfo: String { return self._s[1451]! } + public var EditTheme_Edit_BottomInfo: String { return self._s[1455]! } public func Login_WillSendSms(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1452]!, self._r[1452]!, [_0]) + return formatWithArgumentRanges(self._s[1456]!, self._r[1456]!, [_0]) } public func Watch_Time_ShortWeekdayAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1453]!, self._r[1453]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1457]!, self._r[1457]!, [_1, _2]) } - public var EditTheme_CreateTitle: String { return self._s[1455]! } - public var Passport_InfoLearnMore: String { return self._s[1456]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[1457]! } - public var Passport_Identity_AddIdentityCard: String { return self._s[1458]! } - public var Your_card_has_expired: String { return self._s[1459]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[1460]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1461]! } - public var Conversation_Report: String { return self._s[1465]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1466]! } - public var Notification_MessageLifetime1m: String { return self._s[1467]! } - public var Privacy_ContactsTitle: String { return self._s[1468]! } - public var Conversation_ShareMyContactInfo: String { return self._s[1469]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1470]! } - public var Channel_Members_Title: String { return self._s[1471]! } - public var Map_OpenInWaze: String { return self._s[1472]! } - public var Login_PhoneBannedError: String { return self._s[1473]! } + public var EditTheme_CreateTitle: String { return self._s[1460]! } + public var Passport_InfoLearnMore: String { return self._s[1461]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[1462]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[1463]! } + public var Your_card_has_expired: String { return self._s[1464]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[1465]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1466]! } + public var Conversation_Report: String { return self._s[1470]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1471]! } + public var Notification_MessageLifetime1m: String { return self._s[1472]! } + public var Privacy_ContactsTitle: String { return self._s[1473]! } + public var Conversation_ShareMyContactInfo: String { return self._s[1474]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1475]! } + public var Channel_Members_Title: String { return self._s[1476]! } + public var Map_OpenInWaze: String { return self._s[1477]! } + public var Login_PhoneBannedError: String { return self._s[1478]! } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1474]!, self._r[1474]!, [_0]) + return formatWithArgumentRanges(self._s[1479]!, self._r[1479]!, [_0]) } - public var Group_Management_AddModeratorHelp: String { return self._s[1475]! } - public var AutoDownloadSettings_WifiTitle: String { return self._s[1476]! } - public var Common_OK: String { return self._s[1477]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1478]! } - public var Cache_Music: String { return self._s[1479]! } - public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1480]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1481]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1482]! } + public var Group_Management_AddModeratorHelp: String { return self._s[1480]! } + public var AutoDownloadSettings_WifiTitle: String { return self._s[1481]! } + public var Common_OK: String { return self._s[1482]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1483]! } + public var Cache_Music: String { return self._s[1484]! } + public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1485]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1486]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1487]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1483]!, self._r[1483]!, [_1]) + return formatWithArgumentRanges(self._s[1488]!, self._r[1488]!, [_1]) } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1484]!, self._r[1484]!, [_0]) + return formatWithArgumentRanges(self._s[1489]!, self._r[1489]!, [_0]) } public func VoiceOver_Chat_ContactOrganization(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1485]!, self._r[1485]!, [_0]) + return formatWithArgumentRanges(self._s[1490]!, self._r[1490]!, [_0]) } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1487]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[1488]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1490]! } - public var State_ConnectingToProxyInfo: String { return self._s[1491]! } - public var Message_VideoMessage: String { return self._s[1493]! } - public var ChannelInfo_DeleteChannel: String { return self._s[1494]! } - public var ContactInfo_PhoneLabelOther: String { return self._s[1495]! } - public var Channel_EditAdmin_CannotEdit: String { return self._s[1496]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[1497]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[1498]! } - public var Activity_RecordingAudio: String { return self._s[1499]! } - public var SettingsSearch_Synonyms_Watch: String { return self._s[1500]! } - public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1501]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1492]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[1493]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1495]! } + public var State_ConnectingToProxyInfo: String { return self._s[1496]! } + public var Message_VideoMessage: String { return self._s[1498]! } + public var ChannelInfo_DeleteChannel: String { return self._s[1499]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[1500]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[1501]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[1502]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[1503]! } + public var Activity_RecordingAudio: String { return self._s[1504]! } + public var SettingsSearch_Synonyms_Watch: String { return self._s[1505]! } + public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1506]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1503]!, self._r[1503]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1508]!, self._r[1508]!, [_0, _1]) } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1507]!, self._r[1507]!, [_0]) + return formatWithArgumentRanges(self._s[1512]!, self._r[1512]!, [_0]) } - public var Conversation_ApplyLocalization: String { return self._s[1508]! } - public var UserInfo_AddPhone: String { return self._s[1509]! } - public var Map_ShareLiveLocationHelp: String { return self._s[1510]! } + public var Conversation_ApplyLocalization: String { return self._s[1513]! } + public var UserInfo_AddPhone: String { return self._s[1514]! } + public var Map_ShareLiveLocationHelp: String { return self._s[1515]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1511]!, self._r[1511]!, [_0]) + return formatWithArgumentRanges(self._s[1516]!, self._r[1516]!, [_0]) } - public var Passport_Scans: String { return self._s[1513]! } - public var BlockedUsers_Unblock: String { return self._s[1514]! } + public var Passport_Scans: String { return self._s[1518]! } + public var BlockedUsers_Unblock: String { return self._s[1519]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1515]!, self._r[1515]!, [_1]) + return formatWithArgumentRanges(self._s[1520]!, self._r[1520]!, [_1]) } - public var Channel_Management_LabelCreator: String { return self._s[1516]! } - public var Conversation_ReportSpamAndLeave: String { return self._s[1517]! } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1518]! } - public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1519]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1520]! } + public var Channel_Management_LabelCreator: String { return self._s[1521]! } + public var Conversation_ReportSpamAndLeave: String { return self._s[1522]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1523]! } + public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1524]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1525]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1521]!, self._r[1521]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1526]!, self._r[1526]!, [_0, _1, _2]) } - public var Login_PhoneNumberHelp: String { return self._s[1522]! } - public var LastSeen_ALongTimeAgo: String { return self._s[1523]! } - public var Channel_AdminLog_CanPinMessages: String { return self._s[1524]! } - public var ChannelIntro_CreateChannel: String { return self._s[1525]! } - public var Conversation_UnreadMessages: String { return self._s[1526]! } - public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1527]! } - public var Channel_AdminLog_EmptyText: String { return self._s[1528]! } - public var Theme_Context_Apply: String { return self._s[1529]! } - public var Notification_GroupActivated: String { return self._s[1530]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[1531]! } + public var Login_PhoneNumberHelp: String { return self._s[1527]! } + public var LastSeen_ALongTimeAgo: String { return self._s[1528]! } + public var Channel_AdminLog_CanPinMessages: String { return self._s[1529]! } + public var ChannelIntro_CreateChannel: String { return self._s[1530]! } + public var Conversation_UnreadMessages: String { return self._s[1531]! } + public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1532]! } + public var Channel_AdminLog_EmptyText: String { return self._s[1533]! } + public var Theme_Context_Apply: String { return self._s[1534]! } + public var Notification_GroupActivated: String { return self._s[1535]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[1536]! } public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1532]!, self._r[1532]!, [_0]) + return formatWithArgumentRanges(self._s[1537]!, self._r[1537]!, [_0]) } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1533]!, self._r[1533]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1538]!, self._r[1538]!, [_0, _1]) } - public var GroupInfo_ConvertToSupergroup: String { return self._s[1535]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[1540]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1536]!, self._r[1536]!, [_0]) - } - public var Undo_DeletedChannel: String { return self._s[1537]! } - public var CallFeedback_AddComment: String { return self._s[1538]! } - public func Conversation_OpenBotLinkAllowMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1539]!, self._r[1539]!, [_0]) - } - public var Document_TargetConfirmationFormat: String { return self._s[1540]! } - public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1541]!, self._r[1541]!, [_0]) } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[1542]! } + public var Undo_DeletedChannel: String { return self._s[1542]! } + public var CallFeedback_AddComment: String { return self._s[1543]! } + public func Conversation_OpenBotLinkAllowMessages(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1544]!, self._r[1544]!, [_0]) + } + public var Document_TargetConfirmationFormat: String { return self._s[1545]! } + public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1546]!, self._r[1546]!, [_0]) + } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[1547]! } public func PUSH_CHAT_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1543]!, self._r[1543]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[1548]!, self._r[1548]!, [_1, _2, _3, _4]) } - public var Theme_ErrorNotFound: String { return self._s[1544]! } - public var Contacts_SortByName: String { return self._s[1545]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1546]! } + public var Theme_ErrorNotFound: String { return self._s[1549]! } + public var Contacts_SortByName: String { return self._s[1550]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1551]! } public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1548]!, self._r[1548]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1553]!, self._r[1553]!, [_1, _2, _3]) } - public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1549]! } - public var ScheduledMessages_EditTime: String { return self._s[1550]! } - public var Conversation_ClearSelfHistory: String { return self._s[1551]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1552]! } - public var PasscodeSettings_DoNotMatch: String { return self._s[1553]! } - public var Stickers_SuggestNone: String { return self._s[1554]! } - public var ChatSettings_Cache: String { return self._s[1555]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1556]! } - public var Media_ShareThisPhoto: String { return self._s[1557]! } - public var Chat_SlowmodeTooltipPending: String { return self._s[1558]! } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[1559]! } - public var Conversation_ContextMenuCopyLink: String { return self._s[1560]! } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1561]! } - public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1562]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1563]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[1564]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1566]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1567]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[1568]! } - public var Map_OpenIn: String { return self._s[1569]! } + public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1554]! } + public var ScheduledMessages_EditTime: String { return self._s[1555]! } + public var Conversation_ClearSelfHistory: String { return self._s[1556]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1557]! } + public var PasscodeSettings_DoNotMatch: String { return self._s[1558]! } + public var Stickers_SuggestNone: String { return self._s[1559]! } + public var ChatSettings_Cache: String { return self._s[1560]! } + public var Settings_SaveIncomingPhotos: String { return self._s[1561]! } + public var Media_ShareThisPhoto: String { return self._s[1562]! } + public var Chat_SlowmodeTooltipPending: String { return self._s[1563]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[1564]! } + public var Conversation_ContextMenuCopyLink: String { return self._s[1565]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1566]! } + public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1567]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1568]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[1569]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1571]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1572]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[1573]! } + public var Map_OpenIn: String { return self._s[1574]! } public func PUSH_PHONE_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1572]!, self._r[1572]!, [_1]) + return formatWithArgumentRanges(self._s[1577]!, self._r[1577]!, [_1]) } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1573]!, self._r[1573]!, [_0]) + return formatWithArgumentRanges(self._s[1578]!, self._r[1578]!, [_0]) } - public var GroupInfo_Permissions_SlowmodeHeader: String { return self._s[1574]! } - public var MessagePoll_LabelClosed: String { return self._s[1575]! } - public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1577]! } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1578]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[1579]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1580]! } - public var Login_SelectCountry_Title: String { return self._s[1581]! } - public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1582]! } + public var GroupInfo_Permissions_SlowmodeHeader: String { return self._s[1579]! } + public var MessagePoll_LabelClosed: String { return self._s[1580]! } + public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1582]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1583]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[1584]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1585]! } + public var Login_SelectCountry_Title: String { return self._s[1587]! } + public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1588]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1583]!, self._r[1583]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1589]!, self._r[1589]!, [_1, _2]) } - public var Channel_AdminLog_ChangeInfo: String { return self._s[1584]! } - public var Watch_Suggestion_BRB: String { return self._s[1585]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[1586]! } - public var Contacts_PermissionsTitle: String { return self._s[1587]! } - public var Conversation_RestrictedInline: String { return self._s[1588]! } - public var StickerPack_ViewPack: String { return self._s[1590]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[1590]! } + public var Watch_Suggestion_BRB: String { return self._s[1591]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[1592]! } + public var Contacts_PermissionsTitle: String { return self._s[1593]! } + public var Conversation_RestrictedInline: String { return self._s[1594]! } + public var StickerPack_ViewPack: String { return self._s[1596]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1591]!, self._r[1591]!, [_0]) + return formatWithArgumentRanges(self._s[1597]!, self._r[1597]!, [_0]) } - public var Compose_NewChannel: String { return self._s[1593]! } - public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1596]! } - public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1598]! } - public var Channel_Info_Stickers: String { return self._s[1599]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[1600]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1601]! } - public var Passport_DeletePersonalDetails: String { return self._s[1602]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[1603]! } - public var Channel_DiscussionGroupInfo: String { return self._s[1604]! } - public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[1605]! } - public var Conversation_SearchNoResults: String { return self._s[1607]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1608]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1609]! } - public var Login_Code: String { return self._s[1610]! } - public var EditTheme_Create_BottomInfo: String { return self._s[1611]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1612]! } - public var Weekday_ShortThursday: String { return self._s[1613]! } - public var Resolve_ErrorNotFound: String { return self._s[1615]! } - public var LastSeen_Offline: String { return self._s[1616]! } - public var PeopleNearby_NoMembers: String { return self._s[1617]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[1618]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1619]! } - public var GroupInfo_Title: String { return self._s[1621]! } - public var NotificationsSound_Note: String { return self._s[1622]! } - public var Conversation_EditingMessagePanelTitle: String { return self._s[1623]! } - public var Watch_Message_Poll: String { return self._s[1624]! } - public var Privacy_Calls: String { return self._s[1625]! } + public var Compose_NewChannel: String { return self._s[1599]! } + public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1602]! } + public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1604]! } + public var Channel_Info_Stickers: String { return self._s[1605]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[1606]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1607]! } + public var Passport_DeletePersonalDetails: String { return self._s[1608]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[1609]! } + public var Channel_DiscussionGroupInfo: String { return self._s[1610]! } + public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[1611]! } + public var Conversation_SearchNoResults: String { return self._s[1613]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1614]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1615]! } + public var Login_Code: String { return self._s[1616]! } + public var EditTheme_Create_BottomInfo: String { return self._s[1617]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1618]! } + public var Weekday_ShortThursday: String { return self._s[1619]! } + public var Resolve_ErrorNotFound: String { return self._s[1621]! } + public var LastSeen_Offline: String { return self._s[1623]! } + public var PeopleNearby_NoMembers: String { return self._s[1624]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[1625]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1626]! } + public var GroupInfo_Title: String { return self._s[1628]! } + public var NotificationsSound_Note: String { return self._s[1629]! } + public var Conversation_EditingMessagePanelTitle: String { return self._s[1630]! } + public var Watch_Message_Poll: String { return self._s[1632]! } + public var Privacy_Calls: String { return self._s[1633]! } public func Channel_AdminLog_MessageRankUsername(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1626]!, self._r[1626]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1634]!, self._r[1634]!, [_1, _2, _3]) } - public var Month_ShortAugust: String { return self._s[1627]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[1628]! } - public var Notifications_Reset: String { return self._s[1629]! } - public var Conversation_Pin: String { return self._s[1630]! } - public var Passport_Language_lv: String { return self._s[1631]! } - public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1632]! } - public var BlockedUsers_Info: String { return self._s[1633]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1635]! } - public var Watch_Conversation_Unblock: String { return self._s[1637]! } + public var Month_ShortAugust: String { return self._s[1635]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[1636]! } + public var Notifications_Reset: String { return self._s[1637]! } + public var Conversation_Pin: String { return self._s[1638]! } + public var Passport_Language_lv: String { return self._s[1639]! } + public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1640]! } + public var BlockedUsers_Info: String { return self._s[1641]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1643]! } + public var Watch_Conversation_Unblock: String { return self._s[1645]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1638]!, self._r[1638]!, [_0]) + return formatWithArgumentRanges(self._s[1646]!, self._r[1646]!, [_0]) } - public var CloudStorage_Title: String { return self._s[1639]! } - public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1640]! } + public var CloudStorage_Title: String { return self._s[1647]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1648]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1641]!, self._r[1641]!, [_0]) + return formatWithArgumentRanges(self._s[1649]!, self._r[1649]!, [_0]) } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1642]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[1643]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1644]! } - public var Passport_Address_EditBankStatement: String { return self._s[1645]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1650]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[1651]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1652]! } + public var Passport_Address_EditBankStatement: String { return self._s[1653]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1646]!, self._r[1646]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1654]!, self._r[1654]!, [_1, _2]) } - public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1647]! } - public var ShareMenu_Comment: String { return self._s[1648]! } - public var Permissions_ContactsTitle_v0: String { return self._s[1649]! } - public var Notifications_PermissionsTitle: String { return self._s[1650]! } - public var GroupPermission_NoSendLinks: String { return self._s[1651]! } - public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1652]! } - public var Settings_Support: String { return self._s[1653]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1654]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1655]! } - public var Privacy_Forwards_Preview: String { return self._s[1656]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[1657]! } - public var Watch_Stickers_StickerPacks: String { return self._s[1658]! } - public var Common_Select: String { return self._s[1660]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1661]! } - public var WallpaperSearch_ColorGray: String { return self._s[1663]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1664]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1665]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[1666]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1667]! } - public var Widget_AuthRequired: String { return self._s[1668]! } - public var Camera_FlashOn: String { return self._s[1669]! } - public var Conversation_ContextMenuLookUp: String { return self._s[1670]! } - public var Channel_Stickers_NotFoundHelp: String { return self._s[1671]! } - public var Watch_Suggestion_OK: String { return self._s[1672]! } + public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1655]! } + public var ShareMenu_Comment: String { return self._s[1656]! } + public var Permissions_ContactsTitle_v0: String { return self._s[1657]! } + public var Notifications_PermissionsTitle: String { return self._s[1658]! } + public var GroupPermission_NoSendLinks: String { return self._s[1659]! } + public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1660]! } + public var Settings_Support: String { return self._s[1661]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1662]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1663]! } + public var Privacy_Forwards_Preview: String { return self._s[1664]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[1665]! } + public var Watch_Stickers_StickerPacks: String { return self._s[1666]! } + public var Common_Select: String { return self._s[1668]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1669]! } + public var WallpaperSearch_ColorGray: String { return self._s[1671]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1672]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1673]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[1674]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1675]! } + public var Widget_AuthRequired: String { return self._s[1676]! } + public var Camera_FlashOn: String { return self._s[1677]! } + public var Conversation_ContextMenuLookUp: String { return self._s[1678]! } + public var Channel_Stickers_NotFoundHelp: String { return self._s[1679]! } + public var Watch_Suggestion_OK: String { return self._s[1680]! } public func Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1674]!, self._r[1674]!, [_0]) + return formatWithArgumentRanges(self._s[1682]!, self._r[1682]!, [_0]) } public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1676]!, self._r[1676]!, [_0]) + return formatWithArgumentRanges(self._s[1684]!, self._r[1684]!, [_0]) } - public var TextFormat_Strikethrough: String { return self._s[1677]! } - public var DialogList_AdLabel: String { return self._s[1678]! } - public var WatchRemote_NotificationText: String { return self._s[1679]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1680]! } - public var Conversation_ReportSpam: String { return self._s[1681]! } - public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1682]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[1684]! } - public var PhoneLabel_Title: String { return self._s[1685]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[1686]! } - public var Settings_ChangePhoneNumber: String { return self._s[1687]! } - public var Notifications_ExceptionsTitle: String { return self._s[1688]! } - public var Notifications_AlertTones: String { return self._s[1689]! } - public var Call_ReportIncludeLogDescription: String { return self._s[1690]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1691]! } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1692]! } - public var VoiceOver_Chat_Photo: String { return self._s[1694]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[1695]! } - public var ReportPeer_ReasonOther: String { return self._s[1696]! } - public var ChatList_Context_JoinChannel: String { return self._s[1697]! } - public var KeyCommand_ScrollDown: String { return self._s[1699]! } - public var Conversation_ScheduleMessage_Title: String { return self._s[1700]! } + public var TextFormat_Strikethrough: String { return self._s[1685]! } + public var DialogList_AdLabel: String { return self._s[1686]! } + public var WatchRemote_NotificationText: String { return self._s[1687]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1688]! } + public var Conversation_ReportSpam: String { return self._s[1689]! } + public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1690]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[1692]! } + public var PhoneLabel_Title: String { return self._s[1693]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[1694]! } + public var Settings_ChangePhoneNumber: String { return self._s[1695]! } + public var Notifications_ExceptionsTitle: String { return self._s[1696]! } + public var Notifications_AlertTones: String { return self._s[1697]! } + public var Call_ReportIncludeLogDescription: String { return self._s[1698]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1699]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1700]! } + public var VoiceOver_Chat_Photo: String { return self._s[1702]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[1703]! } + public var ReportPeer_ReasonOther: String { return self._s[1704]! } + public var ChatList_Context_JoinChannel: String { return self._s[1705]! } + public var KeyCommand_ScrollDown: String { return self._s[1707]! } + public var Conversation_ScheduleMessage_Title: String { return self._s[1708]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1701]!, self._r[1701]!, [_0]) + return formatWithArgumentRanges(self._s[1709]!, self._r[1709]!, [_0]) } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1702]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1703]! } - public var AuthSessions_LogOut: String { return self._s[1704]! } - public var Passport_Identity_TypeInternalPassport: String { return self._s[1705]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1706]! } - public var Passport_Phone_Title: String { return self._s[1707]! } - public var ContactList_Context_StartSecretChat: String { return self._s[1708]! } - public var Settings_PhoneNumber: String { return self._s[1709]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1710]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1711]! } + public var AuthSessions_LogOut: String { return self._s[1712]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[1713]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1714]! } + public var Passport_Phone_Title: String { return self._s[1715]! } + public var ContactList_Context_StartSecretChat: String { return self._s[1716]! } + public var Settings_PhoneNumber: String { return self._s[1717]! } public func Conversation_ScheduleMessage_SendToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1710]!, self._r[1710]!, [_0]) + return formatWithArgumentRanges(self._s[1718]!, self._r[1718]!, [_0]) } - public var NotificationsSound_Alert: String { return self._s[1711]! } - public var WebSearch_SearchNoResults: String { return self._s[1712]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1714]! } - public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1715]! } - public var SettingsSearch_Synonyms_Passport: String { return self._s[1716]! } - public var PhotoEditor_CurvesTool: String { return self._s[1717]! } - public var Checkout_PaymentMethod: String { return self._s[1719]! } + public var NotificationsSound_Alert: String { return self._s[1719]! } + public var WebSearch_SearchNoResults: String { return self._s[1720]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1722]! } + public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1723]! } + public var SettingsSearch_Synonyms_Passport: String { return self._s[1724]! } + public var PhotoEditor_CurvesTool: String { return self._s[1725]! } + public var Checkout_PaymentMethod: String { return self._s[1727]! } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1720]!, self._r[1720]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1728]!, self._r[1728]!, [_1, _2]) } - public var Contacts_AccessDeniedError: String { return self._s[1721]! } - public var Camera_PhotoMode: String { return self._s[1724]! } - public var EditTheme_Expand_Preview_IncomingText: String { return self._s[1725]! } - public var Passport_Address_AddUtilityBill: String { return self._s[1727]! } - public var CallSettings_OnMobile: String { return self._s[1728]! } - public var Tour_Text2: String { return self._s[1729]! } + public var Contacts_AccessDeniedError: String { return self._s[1729]! } + public var Camera_PhotoMode: String { return self._s[1732]! } + public var EditTheme_Expand_Preview_IncomingText: String { return self._s[1733]! } + public func Updated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1734]!, self._r[1734]!, [_0]) + } + public var Passport_Address_AddUtilityBill: String { return self._s[1736]! } + public var CallSettings_OnMobile: String { return self._s[1737]! } + public var Tour_Text2: String { return self._s[1738]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1730]!, self._r[1730]!, [_1, _2]) - } - public var DialogList_EncryptionProcessing: String { return self._s[1732]! } - public var Permissions_Skip: String { return self._s[1733]! } - public var SecretImage_Title: String { return self._s[1734]! } - public var Watch_MessageView_Title: String { return self._s[1735]! } - public var Channel_DiscussionGroupAdd: String { return self._s[1736]! } - public var AttachmentMenu_Poll: String { return self._s[1737]! } - public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1738]!, self._r[1738]!, [_0]) - } - public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1739]!, self._r[1739]!, [_1, _2]) } - public var Notification_CallCanceled: String { return self._s[1740]! } - public var WallpaperPreview_Title: String { return self._s[1741]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1742]! } - public var Settings_ProxyConnecting: String { return self._s[1743]! } - public var Settings_CheckPhoneNumberText: String { return self._s[1745]! } - public var VoiceOver_Chat_YourVideo: String { return self._s[1746]! } - public var Profile_MessageLifetime5s: String { return self._s[1747]! } - public var Username_InvalidCharacters: String { return self._s[1748]! } - public var VoiceOver_Media_PlaybackRateFast: String { return self._s[1749]! } - public var ScheduledMessages_ClearAll: String { return self._s[1750]! } - public var WallpaperPreview_CropBottomText: String { return self._s[1751]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[1752]! } - public var Settings_AddAccount: String { return self._s[1753]! } - public var Notification_CreatedChannel: String { return self._s[1756]! } - public func PUSH_CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_1, _2, _3]) + public var DialogList_EncryptionProcessing: String { return self._s[1741]! } + public var Permissions_Skip: String { return self._s[1742]! } + public var SecretImage_Title: String { return self._s[1743]! } + public var Watch_MessageView_Title: String { return self._s[1744]! } + public var Channel_DiscussionGroupAdd: String { return self._s[1745]! } + public var AttachmentMenu_Poll: String { return self._s[1746]! } + public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1747]!, self._r[1747]!, [_0]) } - public var Passcode_AppLockedAlert: String { return self._s[1759]! } - public var StickerPacksSettings_AnimatedStickersInfo: String { return self._s[1760]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[1761]! } - public var Contacts_TopSection: String { return self._s[1762]! } + public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1748]!, self._r[1748]!, [_1, _2]) + } + public var Notification_CallCanceled: String { return self._s[1749]! } + public var WallpaperPreview_Title: String { return self._s[1750]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1751]! } + public var Settings_ProxyConnecting: String { return self._s[1752]! } + public var Settings_CheckPhoneNumberText: String { return self._s[1754]! } + public var VoiceOver_Chat_YourVideo: String { return self._s[1755]! } + public var Profile_MessageLifetime5s: String { return self._s[1756]! } + public var Username_InvalidCharacters: String { return self._s[1757]! } + public var VoiceOver_Media_PlaybackRateFast: String { return self._s[1758]! } + public var ScheduledMessages_ClearAll: String { return self._s[1759]! } + public var WallpaperPreview_CropBottomText: String { return self._s[1760]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[1761]! } + public var Settings_AddAccount: String { return self._s[1762]! } + public var Notification_CreatedChannel: String { return self._s[1765]! } + public func PUSH_CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1766]!, self._r[1766]!, [_1, _2, _3]) + } + public var Passcode_AppLockedAlert: String { return self._s[1768]! } + public var StickerPacksSettings_AnimatedStickersInfo: String { return self._s[1769]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[1770]! } + public var Contacts_TopSection: String { return self._s[1771]! } public func Conversation_SetReminder_RemindOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1763]!, self._r[1763]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1772]!, self._r[1772]!, [_0, _1]) } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1764]!, self._r[1764]!, [_0]) + return formatWithArgumentRanges(self._s[1773]!, self._r[1773]!, [_0]) } - public var ReportPeer_ReasonSpam: String { return self._s[1765]! } - public var UserInfo_TapToCall: String { return self._s[1766]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1768]! } - public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1769]! } - public var Common_Search: String { return self._s[1770]! } - public var ScheduledMessages_EmptyPlaceholder: String { return self._s[1771]! } + public var ReportPeer_ReasonSpam: String { return self._s[1774]! } + public var UserInfo_TapToCall: String { return self._s[1775]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1777]! } + public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1778]! } + public var Common_Search: String { return self._s[1779]! } + public var ScheduledMessages_EmptyPlaceholder: String { return self._s[1780]! } public func Channel_AdminLog_MessageChangedGroupGeoLocation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1772]!, self._r[1772]!, [_0]) + return formatWithArgumentRanges(self._s[1781]!, self._r[1781]!, [_0]) } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1773]! } - public var Message_InvoiceLabel: String { return self._s[1774]! } - public var Conversation_InputTextPlaceholder: String { return self._s[1775]! } - public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1776]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1782]! } + public var Message_InvoiceLabel: String { return self._s[1783]! } + public var Conversation_InputTextPlaceholder: String { return self._s[1784]! } + public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1785]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_0]) + return formatWithArgumentRanges(self._s[1786]!, self._r[1786]!, [_0]) } - public var Conversation_Info: String { return self._s[1778]! } - public var Login_InfoDeletePhoto: String { return self._s[1779]! } - public var Passport_Language_vi: String { return self._s[1781]! } - public var UserInfo_ScamUserWarning: String { return self._s[1782]! } - public var Conversation_Search: String { return self._s[1783]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1785]! } - public var ReportPeer_ReasonPornography: String { return self._s[1786]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1787]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1788]! } - public var Map_LiveLocationGroupDescription: String { return self._s[1789]! } - public var Channel_Setup_TypeHeader: String { return self._s[1790]! } - public var AuthSessions_LoggedIn: String { return self._s[1791]! } - public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1792]! } - public var Login_SmsRequestState3: String { return self._s[1793]! } - public var Passport_Address_EditUtilityBill: String { return self._s[1794]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1795]! } - public var Join_ChannelsTooMuch: String { return self._s[1796]! } - public var Channel_Edit_LinkItem: String { return self._s[1797]! } - public var Privacy_Calls_P2PNever: String { return self._s[1798]! } - public var Conversation_AddToReadingList: String { return self._s[1800]! } - public var Share_MultipleMessagesDisabled: String { return self._s[1801]! } - public var Message_Animation: String { return self._s[1802]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[1803]! } - public var Map_Unknown: String { return self._s[1804]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[1805]! } + public var Conversation_Info: String { return self._s[1787]! } + public var Login_InfoDeletePhoto: String { return self._s[1788]! } + public var Passport_Language_vi: String { return self._s[1790]! } + public var UserInfo_ScamUserWarning: String { return self._s[1791]! } + public var Conversation_Search: String { return self._s[1792]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1794]! } + public func Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1795]!, self._r[1795]!, [_0]) + } + public var ReportPeer_ReasonPornography: String { return self._s[1796]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1797]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1798]! } + public var Map_LiveLocationGroupDescription: String { return self._s[1799]! } + public var Channel_Setup_TypeHeader: String { return self._s[1800]! } + public var AuthSessions_LoggedIn: String { return self._s[1801]! } + public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1802]! } + public var Login_SmsRequestState3: String { return self._s[1803]! } + public var Passport_Address_EditUtilityBill: String { return self._s[1804]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1805]! } + public var Join_ChannelsTooMuch: String { return self._s[1806]! } + public var Channel_Edit_LinkItem: String { return self._s[1807]! } + public var Privacy_Calls_P2PNever: String { return self._s[1808]! } + public var Conversation_AddToReadingList: String { return self._s[1810]! } + public var Share_MultipleMessagesDisabled: String { return self._s[1811]! } + public var Message_Animation: String { return self._s[1812]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[1813]! } + public var Map_Unknown: String { return self._s[1814]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[1815]! } public func PUSH_PINNED_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1806]!, self._r[1806]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1816]!, self._r[1816]!, [_1, _2]) } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1807]!, self._r[1807]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1817]!, self._r[1817]!, [_1, _2]) } - public var Call_StatusRequesting: String { return self._s[1808]! } - public var Conversation_SecretChatContextBotAlert: String { return self._s[1809]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1810]! } + public var Call_StatusRequesting: String { return self._s[1818]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[1819]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1820]! } public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1811]!, self._r[1811]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1821]!, self._r[1821]!, [_1, _2]) } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1812]!, self._r[1812]!, [_0]) + return formatWithArgumentRanges(self._s[1822]!, self._r[1822]!, [_0]) } - public var Update_Skip: String { return self._s[1813]! } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1814]! } - public var Message_PinnedPollMessage: String { return self._s[1815]! } - public var BlockedUsers_Title: String { return self._s[1816]! } + public var Update_Skip: String { return self._s[1823]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1824]! } + public var Message_PinnedPollMessage: String { return self._s[1825]! } + public var BlockedUsers_Title: String { return self._s[1826]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1817]!, self._r[1817]!, [_1]) + return formatWithArgumentRanges(self._s[1827]!, self._r[1827]!, [_1]) } - public var Username_CheckingUsername: String { return self._s[1818]! } - public var NotificationsSound_Bell: String { return self._s[1819]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[1820]! } - public var Weekday_Monday: String { return self._s[1821]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1822]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1823]! } - public var ChatSettings_Groups: String { return self._s[1824]! } + public var Username_CheckingUsername: String { return self._s[1828]! } + public var NotificationsSound_Bell: String { return self._s[1829]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[1830]! } + public var Weekday_Monday: String { return self._s[1831]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1832]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1833]! } + public var ChatSettings_Groups: String { return self._s[1834]! } public func Conversation_SetReminder_RemindTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1825]!, self._r[1825]!, [_0]) + return formatWithArgumentRanges(self._s[1835]!, self._r[1835]!, [_0]) } - public var Your_card_was_declined: String { return self._s[1826]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1828]! } - public var ChatList_Unmute: String { return self._s[1829]! } - public var PhotoEditor_CurvesAll: String { return self._s[1830]! } - public var Weekday_ShortTuesday: String { return self._s[1831]! } - public var DialogList_Read: String { return self._s[1832]! } - public var Appearance_AppIconClassic: String { return self._s[1833]! } - public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1834]! } - public var Passport_Identity_Gender: String { return self._s[1835]! } + public var Your_card_was_declined: String { return self._s[1836]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1838]! } + public var ChatList_Unmute: String { return self._s[1839]! } + public var PhotoEditor_CurvesAll: String { return self._s[1840]! } + public var Weekday_ShortTuesday: String { return self._s[1841]! } + public var DialogList_Read: String { return self._s[1842]! } + public var Appearance_AppIconClassic: String { return self._s[1843]! } + public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1844]! } + public var Passport_Identity_Gender: String { return self._s[1845]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1836]!, self._r[1836]!, [_0]) + return formatWithArgumentRanges(self._s[1846]!, self._r[1846]!, [_0]) } - public var Target_SelectGroup: String { return self._s[1837]! } + public var Target_SelectGroup: String { return self._s[1847]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1839]!, self._r[1839]!, [_0]) + return formatWithArgumentRanges(self._s[1849]!, self._r[1849]!, [_0]) } - public var Passport_Language_en: String { return self._s[1840]! } - public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1841]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1842]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1843]! } - public var ScheduledMessages_SendNow: String { return self._s[1844]! } - public var Checkout_NewCard_PaymentCard: String { return self._s[1846]! } - public var Login_InfoHelp: String { return self._s[1847]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1848]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1849]! } + public var Passport_Language_en: String { return self._s[1850]! } + public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1851]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1852]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1853]! } + public var ScheduledMessages_SendNow: String { return self._s[1854]! } + public var Checkout_NewCard_PaymentCard: String { return self._s[1856]! } + public var Login_InfoHelp: String { return self._s[1857]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1858]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1859]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1850]!, self._r[1850]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1860]!, self._r[1860]!, [_1, _2]) } - public var SocksProxySetup_AddProxy: String { return self._s[1853]! } - public var CreatePoll_Title: String { return self._s[1854]! } - public var Conversation_ViewTheme: String { return self._s[1855]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1856]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1857]! } - public var UserInfo_GroupsInCommon: String { return self._s[1858]! } - public var Call_AudioRouteHide: String { return self._s[1859]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1861]! } + public var SocksProxySetup_AddProxy: String { return self._s[1863]! } + public var CreatePoll_Title: String { return self._s[1864]! } + public var Conversation_ViewTheme: String { return self._s[1865]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1866]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1867]! } + public var UserInfo_GroupsInCommon: String { return self._s[1868]! } + public var Call_AudioRouteHide: String { return self._s[1869]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1871]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1862]!, self._r[1862]!, [_0]) + return formatWithArgumentRanges(self._s[1872]!, self._r[1872]!, [_0]) } - public var TextFormat_Bold: String { return self._s[1863]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[1864]! } - public var Notifications_Title: String { return self._s[1865]! } - public var Group_Username_InvalidTooShort: String { return self._s[1866]! } - public var Channel_ErrorAddTooMuch: String { return self._s[1867]! } + public var TextFormat_Bold: String { return self._s[1873]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[1874]! } + public var Notifications_Title: String { return self._s[1875]! } + public var Group_Username_InvalidTooShort: String { return self._s[1876]! } + public var Channel_ErrorAddTooMuch: String { return self._s[1877]! } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1868]!, self._r[1868]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1878]!, self._r[1878]!, ["\(_0)"]) } - public var VoiceOver_DiscardPreparedContent: String { return self._s[1870]! } - public var Stickers_SuggestAdded: String { return self._s[1871]! } - public var Login_CountryCode: String { return self._s[1872]! } - public var ChatSettings_AutoPlayVideos: String { return self._s[1873]! } - public var Map_GetDirections: String { return self._s[1874]! } - public var Login_PhoneFloodError: String { return self._s[1875]! } + public var VoiceOver_DiscardPreparedContent: String { return self._s[1880]! } + public var Stickers_SuggestAdded: String { return self._s[1881]! } + public var Login_CountryCode: String { return self._s[1882]! } + public var ChatSettings_AutoPlayVideos: String { return self._s[1883]! } + public var Map_GetDirections: String { return self._s[1884]! } + public var Login_PhoneFloodError: String { return self._s[1885]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1876]!, self._r[1876]!, [_0]) + return formatWithArgumentRanges(self._s[1886]!, self._r[1886]!, [_0]) } - public var Settings_SetUsername: String { return self._s[1878]! } - public var Group_Location_ChangeLocation: String { return self._s[1879]! } - public var Notification_GroupInviterSelf: String { return self._s[1880]! } - public var InstantPage_TapToOpenLink: String { return self._s[1881]! } + public var Settings_SetUsername: String { return self._s[1888]! } + public var Group_Location_ChangeLocation: String { return self._s[1889]! } + public var Notification_GroupInviterSelf: String { return self._s[1890]! } + public var InstantPage_TapToOpenLink: String { return self._s[1891]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1882]!, self._r[1882]!, [_0]) + return formatWithArgumentRanges(self._s[1892]!, self._r[1892]!, [_0]) } - public var Watch_Suggestion_TalkLater: String { return self._s[1883]! } - public var SecretChat_Title: String { return self._s[1884]! } - public var Group_UpgradeNoticeText1: String { return self._s[1885]! } - public var AuthSessions_Title: String { return self._s[1886]! } + public var Watch_Suggestion_TalkLater: String { return self._s[1893]! } + public var SecretChat_Title: String { return self._s[1894]! } + public var Group_UpgradeNoticeText1: String { return self._s[1895]! } + public var AuthSessions_Title: String { return self._s[1896]! } public func TextFormat_AddLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1887]!, self._r[1887]!, [_0]) + return formatWithArgumentRanges(self._s[1897]!, self._r[1897]!, [_0]) } - public var PhotoEditor_CropAuto: String { return self._s[1888]! } - public var Channel_About_Title: String { return self._s[1889]! } - public var FastTwoStepSetup_EmailHelp: String { return self._s[1890]! } + public var PhotoEditor_CropAuto: String { return self._s[1898]! } + public var Channel_About_Title: String { return self._s[1899]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[1900]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1892]!, self._r[1892]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1902]!, self._r[1902]!, ["\(_0)"]) } - public var VoiceOver_MessageContextReport: String { return self._s[1893]! } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1895]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[1896]! } + public var VoiceOver_MessageContextReport: String { return self._s[1903]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1905]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[1906]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1897]!, self._r[1897]!, [_1]) + return formatWithArgumentRanges(self._s[1907]!, self._r[1907]!, [_1]) } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1899]!, self._r[1899]!, [_0]) + return formatWithArgumentRanges(self._s[1909]!, self._r[1909]!, [_0]) } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1900]!, self._r[1900]!, [_0]) + return formatWithArgumentRanges(self._s[1910]!, self._r[1910]!, [_0]) } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[1901]! } - public var Presence_online: String { return self._s[1903]! } - public var PasscodeSettings_Title: String { return self._s[1904]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1905]! } - public var Web_OpenExternal: String { return self._s[1906]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[1908]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1909]! } - public var LocalGroup_Title: String { return self._s[1910]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[1911]! } + public var Presence_online: String { return self._s[1913]! } + public var PasscodeSettings_Title: String { return self._s[1914]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1915]! } + public var Web_OpenExternal: String { return self._s[1916]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[1918]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1919]! } + public var LocalGroup_Title: String { return self._s[1920]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1911]!, self._r[1911]!, [_0]) + return formatWithArgumentRanges(self._s[1921]!, self._r[1921]!, [_0]) } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1912]! } - public var Map_YouAreHere: String { return self._s[1913]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1922]! } + public var Map_YouAreHere: String { return self._s[1923]! } public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1914]!, self._r[1914]!, [_0]) + return formatWithArgumentRanges(self._s[1924]!, self._r[1924]!, [_0]) } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1915]!, self._r[1915]!, [_0]) + return formatWithArgumentRanges(self._s[1925]!, self._r[1925]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1916]! } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1917]! } + public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1926]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1927]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1918]!, self._r[1918]!, [_0]) + return formatWithArgumentRanges(self._s[1928]!, self._r[1928]!, [_0]) } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1919]!, self._r[1919]!, [_0]) - } - public var SocksProxySetup_Username: String { return self._s[1920]! } - public var Bot_Start: String { return self._s[1921]! } - public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1922]!, self._r[1922]!, [_0]) - } - public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1923]!, self._r[1923]!, [_0]) - } - public var Contacts_SortByPresence: String { return self._s[1924]! } - public var AccentColor_Title: String { return self._s[1926]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1927]! } - public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1928]!, self._r[1928]!, [_1, _2]) - } - public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1929]!, self._r[1929]!, [_0]) } + public var SocksProxySetup_Username: String { return self._s[1930]! } + public var Bot_Start: String { return self._s[1931]! } + public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1932]!, self._r[1932]!, [_0]) + } + public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1933]!, self._r[1933]!, [_0]) + } + public var Contacts_SortByPresence: String { return self._s[1934]! } + public var AccentColor_Title: String { return self._s[1936]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1937]! } + public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1938]!, self._r[1938]!, [_1, _2]) + } + public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1939]!, self._r[1939]!, [_0]) + } public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1930]!, self._r[1930]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1940]!, self._r[1940]!, [_1, _2]) } - public var Passport_Email_EnterOtherEmail: String { return self._s[1931]! } - public var Login_InfoAvatarPhoto: String { return self._s[1932]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1933]! } - public var Tour_Title4: String { return self._s[1934]! } - public var Passport_Identity_Translation: String { return self._s[1935]! } - public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1936]! } - public var Login_TermsOfServiceLabel: String { return self._s[1938]! } - public var Passport_Language_it: String { return self._s[1939]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1940]! } - public var Passport_Identity_SelfieHelp: String { return self._s[1941]! } - public var Conversation_ClearAll: String { return self._s[1943]! } - public var Channel_OwnershipTransfer_Title: String { return self._s[1945]! } - public var TwoStepAuth_FloodError: String { return self._s[1946]! } + public var Passport_Email_EnterOtherEmail: String { return self._s[1941]! } + public var Login_InfoAvatarPhoto: String { return self._s[1942]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1943]! } + public var Tour_Title4: String { return self._s[1944]! } + public var Passport_Identity_Translation: String { return self._s[1945]! } + public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1946]! } + public var Login_TermsOfServiceLabel: String { return self._s[1948]! } + public var Passport_Language_it: String { return self._s[1949]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1950]! } + public var Passport_Identity_SelfieHelp: String { return self._s[1951]! } + public var Conversation_ClearAll: String { return self._s[1953]! } + public var Channel_OwnershipTransfer_Title: String { return self._s[1955]! } + public var TwoStepAuth_FloodError: String { return self._s[1956]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1947]!, self._r[1947]!, [_1]) + return formatWithArgumentRanges(self._s[1957]!, self._r[1957]!, [_1]) } - public var Paint_Delete: String { return self._s[1948]! } - public var Privacy_AddNewPeer: String { return self._s[1949]! } + public var Paint_Delete: String { return self._s[1958]! } + public var Privacy_AddNewPeer: String { return self._s[1959]! } public func Channel_AdminLog_MessageRank(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1950]!, self._r[1950]!, [_1]) + return formatWithArgumentRanges(self._s[1960]!, self._r[1960]!, [_1]) } - public var LogoutOptions_SetPasscodeText: String { return self._s[1951]! } + public var LogoutOptions_SetPasscodeText: String { return self._s[1961]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1952]!, self._r[1952]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1962]!, self._r[1962]!, [_1, _2]) } - public var Message_PinnedAudioMessage: String { return self._s[1953]! } + public var Message_PinnedAudioMessage: String { return self._s[1963]! } public func Watch_Time_ShortTodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1954]!, self._r[1954]!, [_0]) + return formatWithArgumentRanges(self._s[1964]!, self._r[1964]!, [_0]) } - public var Notification_Mute1hMin: String { return self._s[1955]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1956]! } - public var SocksProxySetup_ShareProxyList: String { return self._s[1957]! } - public var Conversation_MessageEditedLabel: String { return self._s[1958]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1959]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1960]! } + public var Notification_Mute1hMin: String { return self._s[1965]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1966]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1967]! } + public var Conversation_MessageEditedLabel: String { return self._s[1968]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1969]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1970]! } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1961]!, self._r[1961]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1971]!, self._r[1971]!, [_0, _1, _2]) } - public var NetworkUsageSettings_ResetStats: String { return self._s[1962]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1972]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1963]!, self._r[1963]!, [_1]) + return formatWithArgumentRanges(self._s[1973]!, self._r[1973]!, [_1]) } - public var AccessDenied_LocationTracking: String { return self._s[1964]! } - public var Month_GenOctober: String { return self._s[1965]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1966]! } - public var EnterPasscode_EnterPasscode: String { return self._s[1967]! } - public var MediaPicker_TimerTooltip: String { return self._s[1969]! } - public var SharedMedia_TitleAll: String { return self._s[1970]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1973]! } - public var Conversation_RestrictedMedia: String { return self._s[1974]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1975]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[1977]! } - public var ChangePhoneNumberCode_Called: String { return self._s[1978]! } + public var AccessDenied_LocationTracking: String { return self._s[1974]! } + public var Month_GenOctober: String { return self._s[1975]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1976]! } + public var EnterPasscode_EnterPasscode: String { return self._s[1977]! } + public var MediaPicker_TimerTooltip: String { return self._s[1979]! } + public var SharedMedia_TitleAll: String { return self._s[1980]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1983]! } + public var Conversation_RestrictedMedia: String { return self._s[1984]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1985]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[1987]! } + public var ChangePhoneNumberCode_Called: String { return self._s[1988]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1979]!, self._r[1979]!, [_0]) - } - public var Conversation_SavedMessages: String { return self._s[1982]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[1984]! } - public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1985]! } - public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1987]!, self._r[1987]!, [_0]) - } - public var VoiceOver_Chat_YourMessage: String { return self._s[1988]! } - public func VoiceOver_Chat_Title(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1989]!, self._r[1989]!, [_0]) } - public var ReportPeer_AlertSuccess: String { return self._s[1990]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1991]! } - public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1992]!, self._r[1992]!, [_1, _2]) - } - public var Checkout_PasswordEntry_Title: String { return self._s[1993]! } - public var PhotoEditor_FadeTool: String { return self._s[1994]! } - public var Privacy_ContactsReset: String { return self._s[1995]! } - public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { + public var Conversation_SavedMessages: String { return self._s[1992]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[1994]! } + public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1995]! } + public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1997]!, self._r[1997]!, [_0]) } - public var Message_PinnedVideoMessage: String { return self._s[1998]! } - public var ChatList_Mute: String { return self._s[1999]! } - public var Permissions_CellularDataText_v0: String { return self._s[2000]! } - public var ShareMenu_SelectChats: String { return self._s[2003]! } - public var ChatList_Context_Unarchive: String { return self._s[2004]! } - public var MusicPlayer_VoiceNote: String { return self._s[2005]! } - public var Conversation_RestrictedText: String { return self._s[2006]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[2007]! } - public var TwoStepAuth_DisableSuccess: String { return self._s[2008]! } - public var Cache_Videos: String { return self._s[2009]! } - public var PrivacySettings_PhoneNumber: String { return self._s[2010]! } - public var FeatureDisabled_Oops: String { return self._s[2012]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[2013]! } + public var VoiceOver_Chat_YourMessage: String { return self._s[1998]! } + public func VoiceOver_Chat_Title(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1999]!, self._r[1999]!, [_0]) + } + public var ReportPeer_AlertSuccess: String { return self._s[2000]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2001]! } + public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2002]!, self._r[2002]!, [_1, _2]) + } + public var Checkout_PasswordEntry_Title: String { return self._s[2003]! } + public var PhotoEditor_FadeTool: String { return self._s[2004]! } + public var Privacy_ContactsReset: String { return self._s[2005]! } + public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2007]!, self._r[2007]!, [_0]) + } + public var Message_PinnedVideoMessage: String { return self._s[2008]! } + public var ChatList_Mute: String { return self._s[2009]! } + public var Permissions_CellularDataText_v0: String { return self._s[2010]! } + public var ShareMenu_SelectChats: String { return self._s[2013]! } + public var ChatList_Context_Unarchive: String { return self._s[2014]! } + public var MusicPlayer_VoiceNote: String { return self._s[2015]! } + public var Conversation_RestrictedText: String { return self._s[2016]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[2017]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[2018]! } + public var Cache_Videos: String { return self._s[2019]! } + public var PrivacySettings_PhoneNumber: String { return self._s[2020]! } + public var FeatureDisabled_Oops: String { return self._s[2022]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[2023]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2014]!, self._r[2014]!, [_0]) + return formatWithArgumentRanges(self._s[2024]!, self._r[2024]!, [_0]) } - public var Stickers_GroupStickersHelp: String { return self._s[2015]! } - public var GroupPermission_NoSendPolls: String { return self._s[2016]! } - public var Message_VideoExpired: String { return self._s[2018]! } - public var Notifications_Badge: String { return self._s[2019]! } - public var GroupInfo_GroupHistoryVisible: String { return self._s[2020]! } - public var CreatePoll_OptionPlaceholder: String { return self._s[2021]! } - public var Username_InvalidTooShort: String { return self._s[2022]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[2023]! } - public var Channel_AdminLog_PinMessages: String { return self._s[2024]! } - public var ArchivedChats_IntroTitle3: String { return self._s[2025]! } + public var Stickers_GroupStickersHelp: String { return self._s[2025]! } + public var GroupPermission_NoSendPolls: String { return self._s[2026]! } + public var Message_VideoExpired: String { return self._s[2028]! } + public var Notifications_Badge: String { return self._s[2029]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[2030]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[2031]! } + public var Username_InvalidTooShort: String { return self._s[2032]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[2033]! } + public var Channel_AdminLog_PinMessages: String { return self._s[2034]! } + public var ArchivedChats_IntroTitle3: String { return self._s[2035]! } public func Notification_MessageLifetimeRemoved(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2026]!, self._r[2026]!, [_1]) + return formatWithArgumentRanges(self._s[2036]!, self._r[2036]!, [_1]) } - public var Permissions_SiriAllowInSettings_v0: String { return self._s[2027]! } - public var Conversation_DefaultRestrictedText: String { return self._s[2028]! } - public var SharedMedia_CategoryDocs: String { return self._s[2031]! } + public var Permissions_SiriAllowInSettings_v0: String { return self._s[2037]! } + public var Conversation_DefaultRestrictedText: String { return self._s[2038]! } + public var SharedMedia_CategoryDocs: String { return self._s[2041]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2032]!, self._r[2032]!, [_1]) + return formatWithArgumentRanges(self._s[2042]!, self._r[2042]!, [_1]) } - public var Privacy_Forwards_NeverLink: String { return self._s[2034]! } + public var Privacy_Forwards_NeverLink: String { return self._s[2044]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2035]!, self._r[2035]!, [_1]) + return formatWithArgumentRanges(self._s[2045]!, self._r[2045]!, [_1]) } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2036]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2046]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2037]!, self._r[2037]!, [_0]) + return formatWithArgumentRanges(self._s[2047]!, self._r[2047]!, [_0]) } - public var ChatSettings_PrivateChats: String { return self._s[2038]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[2039]! } - public var Conversation_PrivateMessageLinkCopied: String { return self._s[2040]! } - public var Channel_UpdatePhotoItem: String { return self._s[2041]! } - public var GroupInfo_LeftStatus: String { return self._s[2042]! } - public var Watch_MessageView_Forward: String { return self._s[2044]! } - public var ReportPeer_ReasonChildAbuse: String { return self._s[2045]! } - public var Cache_ClearEmpty: String { return self._s[2047]! } - public var Localization_LanguageName: String { return self._s[2048]! } - public var WebSearch_GIFs: String { return self._s[2049]! } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[2050]! } - public var Username_InvalidStartsWithNumber: String { return self._s[2051]! } - public var Common_Back: String { return self._s[2052]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[2053]! } + public var ChatSettings_PrivateChats: String { return self._s[2048]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[2049]! } + public var Conversation_PrivateMessageLinkCopied: String { return self._s[2050]! } + public var Channel_UpdatePhotoItem: String { return self._s[2051]! } + public var GroupInfo_LeftStatus: String { return self._s[2052]! } + public var Watch_MessageView_Forward: String { return self._s[2054]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[2055]! } + public var Cache_ClearEmpty: String { return self._s[2057]! } + public var Localization_LanguageName: String { return self._s[2058]! } + public var WebSearch_GIFs: String { return self._s[2059]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[2060]! } + public var Username_InvalidStartsWithNumber: String { return self._s[2061]! } + public var Common_Back: String { return self._s[2062]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[2063]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2054]!, self._r[2054]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2064]!, self._r[2064]!, [_1, _2]) } - public var Passport_Email_Help: String { return self._s[2055]! } - public var Watch_Conversation_Reply: String { return self._s[2057]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[2059]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2060]! } - public var Channel_BanUser_Unban: String { return self._s[2062]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[2063]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[2064]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[2066]! } - public var Passport_Identity_Name: String { return self._s[2067]! } + public var Passport_Email_Help: String { return self._s[2065]! } + public var Watch_Conversation_Reply: String { return self._s[2067]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[2069]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2070]! } + public var Channel_BanUser_Unban: String { return self._s[2072]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[2073]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[2074]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[2076]! } + public var Passport_Identity_Name: String { return self._s[2077]! } public func Channel_DiscussionGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2068]!, self._r[2068]!, [_0]) + return formatWithArgumentRanges(self._s[2078]!, self._r[2078]!, [_0]) } - public var GroupRemoved_ViewUserInfo: String { return self._s[2069]! } - public var Conversation_BlockUser: String { return self._s[2070]! } - public var Month_GenJanuary: String { return self._s[2071]! } - public var ChatSettings_TextSize: String { return self._s[2072]! } - public var Notification_PassportValuePhone: String { return self._s[2073]! } - public var Passport_Language_ne: String { return self._s[2074]! } - public var Notification_CallBack: String { return self._s[2075]! } - public var TwoStepAuth_EmailHelp: String { return self._s[2076]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[2079]! } + public var Conversation_BlockUser: String { return self._s[2080]! } + public var Month_GenJanuary: String { return self._s[2081]! } + public var ChatSettings_TextSize: String { return self._s[2082]! } + public var Notification_PassportValuePhone: String { return self._s[2083]! } + public var Passport_Language_ne: String { return self._s[2084]! } + public var Notification_CallBack: String { return self._s[2085]! } + public var TwoStepAuth_EmailHelp: String { return self._s[2086]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2077]!, self._r[2077]!, [_0]) + return formatWithArgumentRanges(self._s[2087]!, self._r[2087]!, [_0]) } - public var Channel_Info_Management: String { return self._s[2078]! } - public var Passport_FieldIdentityUploadHelp: String { return self._s[2079]! } - public var Stickers_FrequentlyUsed: String { return self._s[2080]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[2081]! } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[2083]! } + public var Channel_Info_Management: String { return self._s[2088]! } + public var Passport_FieldIdentityUploadHelp: String { return self._s[2089]! } + public var Stickers_FrequentlyUsed: String { return self._s[2090]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[2091]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[2093]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2084]!, self._r[2084]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2094]!, self._r[2094]!, [_1, "\(_2)"]) } - public var Passport_Address_EditResidentialAddress: String { return self._s[2085]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[2086]! } - public var CreatePoll_TextHeader: String { return self._s[2087]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[2095]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[2096]! } + public var CreatePoll_TextHeader: String { return self._s[2097]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2088]!, self._r[2088]!, [_0]) + return formatWithArgumentRanges(self._s[2098]!, self._r[2098]!, [_0]) } - public var PhotoEditor_QualityMedium: String { return self._s[2089]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2090]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[2092]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[2093]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[2094]! } + public var PhotoEditor_QualityMedium: String { return self._s[2099]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2100]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[2102]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[2103]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[2104]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2095]!, self._r[2095]!, [_0]) + return formatWithArgumentRanges(self._s[2105]!, self._r[2105]!, [_0]) } public func Channel_AdminLog_MessageTransferedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2096]!, self._r[2096]!, [_1]) + return formatWithArgumentRanges(self._s[2106]!, self._r[2106]!, [_1]) } - public var Conversation_LinkDialogOpen: String { return self._s[2098]! } - public var VoiceOver_Chat_PollNoVotes: String { return self._s[2099]! } - public var Settings_Username: String { return self._s[2101]! } - public var Conversation_Block: String { return self._s[2103]! } - public var Wallpaper_Wallpaper: String { return self._s[2104]! } - public var SocksProxySetup_UseProxy: String { return self._s[2106]! } - public var EditTheme_UploadEditedTheme: String { return self._s[2107]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[2108]! } - public var MessageTimer_Forever: String { return self._s[2109]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[2110]! } - public var PhotoEditor_DiscardChanges: String { return self._s[2111]! } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[2112]! } - public var Passport_Language_da: String { return self._s[2113]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[2114]! } + public var Conversation_LinkDialogOpen: String { return self._s[2108]! } + public var VoiceOver_Chat_PollNoVotes: String { return self._s[2109]! } + public var Settings_Username: String { return self._s[2111]! } + public var Conversation_Block: String { return self._s[2113]! } + public var Wallpaper_Wallpaper: String { return self._s[2114]! } + public var SocksProxySetup_UseProxy: String { return self._s[2116]! } + public var EditTheme_UploadEditedTheme: String { return self._s[2117]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[2118]! } + public var MessageTimer_Forever: String { return self._s[2119]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[2120]! } + public var PhotoEditor_DiscardChanges: String { return self._s[2121]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[2122]! } + public var Passport_Language_da: String { return self._s[2123]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[2124]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2115]!, self._r[2115]!, [_0]) + return formatWithArgumentRanges(self._s[2125]!, self._r[2125]!, [_0]) } - public var Passport_Address_EditPassportRegistration: String { return self._s[2116]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[2126]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2118]!, self._r[2118]!, [_0]) + return formatWithArgumentRanges(self._s[2128]!, self._r[2128]!, [_0]) } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[2120]! } - public var Conversation_SearchByName_Prefix: String { return self._s[2121]! } - public var Conversation_PinnedPoll: String { return self._s[2122]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2123]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[2130]! } + public var Conversation_SearchByName_Prefix: String { return self._s[2131]! } + public var Conversation_PinnedPoll: String { return self._s[2132]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2133]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2124]!, self._r[2124]!, [_1]) + return formatWithArgumentRanges(self._s[2134]!, self._r[2134]!, [_1]) } - public var WallpaperSearch_ColorPurple: String { return self._s[2125]! } - public var Cache_ByPeerHeader: String { return self._s[2126]! } + public var WallpaperSearch_ColorPurple: String { return self._s[2135]! } + public var Cache_ByPeerHeader: String { return self._s[2136]! } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2127]!, self._r[2127]!, [_0]) + return formatWithArgumentRanges(self._s[2137]!, self._r[2137]!, [_0]) } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[2128]! } - public var Appearance_ThemePreview_Chat_3_Text: String { return self._s[2131]! } - public var Notification_PinnedMessage: String { return self._s[2132]! } - public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[2134]! } - public var Contacts_SortBy: String { return self._s[2135]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[2138]! } + public var Appearance_ThemePreview_Chat_3_Text: String { return self._s[2141]! } + public var Notification_PinnedMessage: String { return self._s[2142]! } + public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[2144]! } + public var Contacts_SortBy: String { return self._s[2145]! } public func PUSH_CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2136]!, self._r[2136]!, [_1]) + return formatWithArgumentRanges(self._s[2146]!, self._r[2146]!, [_1]) } public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2138]!, self._r[2138]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2148]!, self._r[2148]!, [_1, _2]) } - public var Call_EncryptionKey_Title: String { return self._s[2139]! } - public var Watch_UserInfo_Service: String { return self._s[2140]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[2142]! } - public var Conversation_Unpin: String { return self._s[2144]! } - public var CancelResetAccount_Title: String { return self._s[2145]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[2146]! } + public var Call_EncryptionKey_Title: String { return self._s[2149]! } + public var Watch_UserInfo_Service: String { return self._s[2150]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[2152]! } + public var Conversation_Unpin: String { return self._s[2154]! } + public var CancelResetAccount_Title: String { return self._s[2155]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[2156]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2148]!, self._r[2148]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2158]!, self._r[2158]!, [_1, _2, _3]) } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[2149]! } - public var CallSettings_Title: String { return self._s[2150]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2151]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[2153]! } - public var AutoDownloadSettings_Contacts: String { return self._s[2154]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[2159]! } + public var CallSettings_Title: String { return self._s[2160]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2161]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[2163]! } + public var AutoDownloadSettings_Contacts: String { return self._s[2164]! } public func Channel_AdminLog_MessageRankName(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2155]!, self._r[2155]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2165]!, self._r[2165]!, [_1, _2]) } - public var Passport_Identity_DocumentDetails: String { return self._s[2156]! } - public var LoginPassword_PasswordHelp: String { return self._s[2157]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2158]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2159]! } - public var Checkout_TotalPaidAmount: String { return self._s[2160]! } + public var Passport_Identity_DocumentDetails: String { return self._s[2166]! } + public var LoginPassword_PasswordHelp: String { return self._s[2167]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2168]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2169]! } + public var Checkout_TotalPaidAmount: String { return self._s[2170]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2161]!, self._r[2161]!, [_0]) + return formatWithArgumentRanges(self._s[2171]!, self._r[2171]!, [_0]) } - public var PasscodeSettings_ChangePasscode: String { return self._s[2162]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[2164]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[2165]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[2172]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[2174]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[2175]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2166]!, self._r[2166]!, [_1]) + return formatWithArgumentRanges(self._s[2176]!, self._r[2176]!, [_1]) } - public var VoiceOver_Chat_ReplyToYourMessage: String { return self._s[2167]! } - public var Contacts_InviteFriends: String { return self._s[2169]! } - public var Map_ChooseLocationTitle: String { return self._s[2170]! } - public var Conversation_StopPoll: String { return self._s[2172]! } + public var VoiceOver_Chat_ReplyToYourMessage: String { return self._s[2177]! } + public var Contacts_InviteFriends: String { return self._s[2179]! } + public var Map_ChooseLocationTitle: String { return self._s[2180]! } + public var Conversation_StopPoll: String { return self._s[2182]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2173]!, self._r[2173]!, [_0]) + return formatWithArgumentRanges(self._s[2183]!, self._r[2183]!, [_0]) } - public var Call_Camera: String { return self._s[2174]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2175]! } - public var Calls_RatingFeedback: String { return self._s[2176]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2177]! } - public var NotificationsSound_Pulse: String { return self._s[2178]! } - public var Watch_LastSeen_Lately: String { return self._s[2179]! } - public var ReportGroupLocation_Report: String { return self._s[2182]! } - public var Widget_NoUsers: String { return self._s[2183]! } - public var Conversation_UnvotePoll: String { return self._s[2184]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2186]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2187]! } - public var NotificationsSound_Circles: String { return self._s[2188]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2191]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2192]! } - public var Proxy_TooltipUnavailable: String { return self._s[2193]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[2195]! } - public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[2197]! } - public var Conversation_FileDropbox: String { return self._s[2198]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[2199]! } - public var Tour_Text3: String { return self._s[2201]! } - public var Login_ResetAccountProtected_Title: String { return self._s[2203]! } - public var GroupPermission_NoSendMessages: String { return self._s[2204]! } - public var WallpaperSearch_ColorTitle: String { return self._s[2205]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2206]! } + public var Call_Camera: String { return self._s[2184]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2185]! } + public var Calls_RatingFeedback: String { return self._s[2186]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2187]! } + public var NotificationsSound_Pulse: String { return self._s[2188]! } + public var Watch_LastSeen_Lately: String { return self._s[2189]! } + public var ReportGroupLocation_Report: String { return self._s[2192]! } + public var Widget_NoUsers: String { return self._s[2193]! } + public var Conversation_UnvotePoll: String { return self._s[2194]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2196]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2197]! } + public var NotificationsSound_Circles: String { return self._s[2198]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2201]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2202]! } + public var Proxy_TooltipUnavailable: String { return self._s[2203]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[2205]! } + public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[2207]! } + public var Conversation_FileDropbox: String { return self._s[2208]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[2209]! } + public var Tour_Text3: String { return self._s[2211]! } + public var Login_ResetAccountProtected_Title: String { return self._s[2213]! } + public var GroupPermission_NoSendMessages: String { return self._s[2214]! } + public var WallpaperSearch_ColorTitle: String { return self._s[2215]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2216]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2208]!, self._r[2208]!, [_0]) + return formatWithArgumentRanges(self._s[2218]!, self._r[2218]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[2209]! } - public var Checkout_ShippingOption_Title: String { return self._s[2210]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2211]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[2219]! } + public var Checkout_ShippingOption_Title: String { return self._s[2220]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2221]! } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2212]!, self._r[2212]!, [_0]) + return formatWithArgumentRanges(self._s[2222]!, self._r[2222]!, [_0]) } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2213]!, self._r[2213]!, [_0]) + return formatWithArgumentRanges(self._s[2223]!, self._r[2223]!, [_0]) } - public var Channel_Management_LabelAdministrator: String { return self._s[2214]! } - public var EditTheme_FileReadError: String { return self._s[2215]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[2216]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2217]! } - public var AutoDownloadSettings_Photos: String { return self._s[2219]! } - public var Appearance_PreviewIncomingText: String { return self._s[2220]! } - public var ChatList_Context_MarkAllAsRead: String { return self._s[2221]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[2222]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2223]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2224]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2225]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2226]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2227]! } - public var Notification_SecretChatScreenshot: String { return self._s[2228]! } - public var AccessDenied_Wallpapers: String { return self._s[2229]! } - public var ChatList_Context_Mute: String { return self._s[2231]! } - public var Passport_Address_City: String { return self._s[2232]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2233]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[2234]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2235]! } - public var AccessDenied_LocationDisabled: String { return self._s[2236]! } - public var Group_Location_Title: String { return self._s[2237]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2239]! } - public var GroupInfo_Sound: String { return self._s[2240]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[2241]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2242]! } - public var Contacts_Title: String { return self._s[2243]! } - public var EditTheme_ThemeTemplateAlertText: String { return self._s[2244]! } - public var Passport_Language_fr: String { return self._s[2245]! } - public var Notifications_ResetAllNotifications: String { return self._s[2246]! } - public var PrivacySettings_SecurityTitle: String { return self._s[2249]! } - public var Checkout_NewCard_Title: String { return self._s[2250]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[2251]! } - public var Conversation_ForwardChats: String { return self._s[2252]! } - public var PasscodeSettings_4DigitCode: String { return self._s[2254]! } - public var Settings_FAQ: String { return self._s[2256]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2257]! } - public var Conversation_ContextMenuForward: String { return self._s[2258]! } - public var VoiceOver_Chat_YourPhoto: String { return self._s[2261]! } - public var PrivacyPolicy_Title: String { return self._s[2264]! } - public var Notifications_TextTone: String { return self._s[2265]! } - public var Profile_CreateNewContact: String { return self._s[2266]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2267]! } - public var Call_Speaker: String { return self._s[2269]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[2270]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2272]! } - public var Channel_Username_InvalidCharacters: String { return self._s[2273]! } + public var Channel_Management_LabelAdministrator: String { return self._s[2224]! } + public var EditTheme_FileReadError: String { return self._s[2225]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[2226]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2227]! } + public var AutoDownloadSettings_Photos: String { return self._s[2229]! } + public var Appearance_PreviewIncomingText: String { return self._s[2230]! } + public var ChatList_Context_MarkAllAsRead: String { return self._s[2231]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[2232]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2233]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2234]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2235]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2236]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2237]! } + public var Notification_SecretChatScreenshot: String { return self._s[2238]! } + public var AccessDenied_Wallpapers: String { return self._s[2239]! } + public var ChatList_Context_Mute: String { return self._s[2241]! } + public var Passport_Address_City: String { return self._s[2242]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2243]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[2244]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2245]! } + public var AccessDenied_LocationDisabled: String { return self._s[2246]! } + public var Group_Location_Title: String { return self._s[2247]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2249]! } + public var GroupInfo_Sound: String { return self._s[2250]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[2251]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2252]! } + public var Contacts_Title: String { return self._s[2253]! } + public var EditTheme_ThemeTemplateAlertText: String { return self._s[2254]! } + public var Passport_Language_fr: String { return self._s[2255]! } + public var Notifications_ResetAllNotifications: String { return self._s[2256]! } + public var PrivacySettings_SecurityTitle: String { return self._s[2259]! } + public var Checkout_NewCard_Title: String { return self._s[2260]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[2261]! } + public var Conversation_ForwardChats: String { return self._s[2262]! } + public var PasscodeSettings_4DigitCode: String { return self._s[2264]! } + public var Settings_FAQ: String { return self._s[2266]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2267]! } + public var Conversation_ContextMenuForward: String { return self._s[2268]! } + public var VoiceOver_Chat_YourPhoto: String { return self._s[2271]! } + public var PrivacyPolicy_Title: String { return self._s[2274]! } + public var Notifications_TextTone: String { return self._s[2275]! } + public var Profile_CreateNewContact: String { return self._s[2276]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2277]! } + public var Call_Speaker: String { return self._s[2279]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[2280]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2282]! } + public var Channel_Username_InvalidCharacters: String { return self._s[2283]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2274]!, self._r[2274]!, [_0]) + return formatWithArgumentRanges(self._s[2284]!, self._r[2284]!, [_0]) } - public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2275]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[2276]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[2277]! } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2278]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[2279]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[2280]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[2281]! } - public var Bot_Unblock: String { return self._s[2282]! } - public var TextFormat_Italic: String { return self._s[2283]! } - public var WallpaperSearch_ColorPink: String { return self._s[2284]! } - public var Settings_About_Help: String { return self._s[2285]! } - public var SearchImages_Title: String { return self._s[2286]! } - public var Weekday_Wednesday: String { return self._s[2287]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[2288]! } - public var ExplicitContent_AlertTitle: String { return self._s[2289]! } + public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2285]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[2286]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[2287]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2288]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[2289]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[2290]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[2291]! } + public var Bot_Unblock: String { return self._s[2292]! } + public var TextFormat_Italic: String { return self._s[2293]! } + public var WallpaperSearch_ColorPink: String { return self._s[2294]! } + public var Settings_About_Help: String { return self._s[2295]! } + public var SearchImages_Title: String { return self._s[2296]! } + public var Weekday_Wednesday: String { return self._s[2297]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[2298]! } + public var ExplicitContent_AlertTitle: String { return self._s[2299]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2290]!, self._r[2290]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2300]!, self._r[2300]!, [_1, _2, _3]) } - public var Channel_DiscussionGroup_Create: String { return self._s[2291]! } - public var Weekday_Thursday: String { return self._s[2292]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2293]! } - public var Channel_Members_AddMembersHelp: String { return self._s[2294]! } + public var Channel_DiscussionGroup_Create: String { return self._s[2301]! } + public var Weekday_Thursday: String { return self._s[2302]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2303]! } + public var Channel_Members_AddMembersHelp: String { return self._s[2304]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2295]!, self._r[2295]!, [_0]) + return formatWithArgumentRanges(self._s[2305]!, self._r[2305]!, [_0]) } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2296]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2297]! } - public var Passport_RequestedInformation: String { return self._s[2298]! } - public var Login_PhoneAndCountryHelp: String { return self._s[2299]! } - public var Conversation_EncryptionProcessing: String { return self._s[2301]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2302]! } - public var PhotoEditor_EnhanceTool: String { return self._s[2304]! } - public var Channel_Setup_Title: String { return self._s[2305]! } - public var Conversation_SearchPlaceholder: String { return self._s[2306]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2307]! } - public var Checkout_ErrorGeneric: String { return self._s[2308]! } - public var Passport_Language_hu: String { return self._s[2309]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2306]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2307]! } + public var Passport_RequestedInformation: String { return self._s[2308]! } + public var Login_PhoneAndCountryHelp: String { return self._s[2309]! } + public var Conversation_EncryptionProcessing: String { return self._s[2311]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2312]! } + public var PhotoEditor_EnhanceTool: String { return self._s[2314]! } + public var Channel_Setup_Title: String { return self._s[2315]! } + public var Conversation_SearchPlaceholder: String { return self._s[2316]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2317]! } + public var Checkout_ErrorGeneric: String { return self._s[2318]! } + public var Passport_Language_hu: String { return self._s[2319]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2311]!, self._r[2311]!, [_0]) + return formatWithArgumentRanges(self._s[2321]!, self._r[2321]!, [_0]) } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2314]!, self._r[2314]!, [_1]) + return formatWithArgumentRanges(self._s[2324]!, self._r[2324]!, [_1]) } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2315]!, self._r[2315]!, [_0]) - } - public var Group_Location_Info: String { return self._s[2316]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[2317]! } - public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2318]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2319]! } - public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2320]!, self._r[2320]!, [_0]) - } - public var Conversation_ClearPrivateHistory: String { return self._s[2321]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[2322]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[2323]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[2324]! } - public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2325]!, self._r[2325]!, [_0]) } - public var Passport_Language_cs: String { return self._s[2326]! } - public var Message_PinnedAnimationMessage: String { return self._s[2328]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[2330]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2331]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2333]! } - public var Embed_PlayingInPIP: String { return self._s[2334]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[2335]! } + public var Group_Location_Info: String { return self._s[2326]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[2327]! } + public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2328]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2329]! } + public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2330]!, self._r[2330]!, [_0]) + } + public var Conversation_ClearPrivateHistory: String { return self._s[2331]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[2332]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[2333]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[2334]! } + public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2335]!, self._r[2335]!, [_0]) + } + public var Passport_Language_cs: String { return self._s[2336]! } + public var Message_PinnedAnimationMessage: String { return self._s[2338]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[2340]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2341]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2343]! } + public var Embed_PlayingInPIP: String { return self._s[2344]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[2345]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2336]!, self._r[2336]!, [_0]) + return formatWithArgumentRanges(self._s[2346]!, self._r[2346]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[2337]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[2347]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2338]!, self._r[2338]!, [_1]) - } - public var Notification_PaymentSent: String { return self._s[2339]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2340]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2341]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[2342]! } - public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2343]! } - public var VoiceOver_Chat_PagePreview: String { return self._s[2344]! } - public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2347]!, self._r[2347]!, [_1]) - } - public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2348]!, self._r[2348]!, [_1]) } + public var Notification_PaymentSent: String { return self._s[2349]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2350]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2351]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[2352]! } + public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2353]! } + public var VoiceOver_Chat_PagePreview: String { return self._s[2354]! } + public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2357]!, self._r[2357]!, [_1]) + } + public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2358]!, self._r[2358]!, [_1]) + } public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2349]!, self._r[2349]!, [_1]) + return formatWithArgumentRanges(self._s[2359]!, self._r[2359]!, [_1]) } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2351]! } - public var PasscodeSettings_HelpTop: String { return self._s[2352]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2353]! } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2354]! } - public var EditTheme_ShortLink: String { return self._s[2355]! } - public var ProxyServer_VoiceOver_Active: String { return self._s[2356]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2357]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2358]! } - public var Call_Accept: String { return self._s[2360]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2361]! } - public var Month_GenMarch: String { return self._s[2363]! } - public var PhotoEditor_ShadowsTool: String { return self._s[2364]! } - public var LoginPassword_Title: String { return self._s[2365]! } - public var Call_End: String { return self._s[2366]! } - public var Watch_Conversation_GroupInfo: String { return self._s[2367]! } - public var VoiceOver_Chat_Contact: String { return self._s[2368]! } - public var EditTheme_Create_Preview_IncomingText: String { return self._s[2369]! } - public var CallSettings_Always: String { return self._s[2370]! } - public var CallFeedback_Success: String { return self._s[2371]! } - public var TwoStepAuth_SetupHint: String { return self._s[2372]! } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2361]! } + public var PasscodeSettings_HelpTop: String { return self._s[2362]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2363]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2364]! } + public var EditTheme_ShortLink: String { return self._s[2365]! } + public var ProxyServer_VoiceOver_Active: String { return self._s[2366]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2367]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2368]! } + public var Call_Accept: String { return self._s[2370]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2371]! } + public var Month_GenMarch: String { return self._s[2373]! } + public var PhotoEditor_ShadowsTool: String { return self._s[2374]! } + public var LoginPassword_Title: String { return self._s[2375]! } + public var Call_End: String { return self._s[2376]! } + public var Watch_Conversation_GroupInfo: String { return self._s[2377]! } + public var VoiceOver_Chat_Contact: String { return self._s[2378]! } + public var EditTheme_Create_Preview_IncomingText: String { return self._s[2379]! } + public var CallSettings_Always: String { return self._s[2380]! } + public var CallFeedback_Success: String { return self._s[2381]! } + public var TwoStepAuth_SetupHint: String { return self._s[2382]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2373]!, self._r[2373]!, [_1]) + return formatWithArgumentRanges(self._s[2383]!, self._r[2383]!, [_1]) } - public var ConversationProfile_UsersTooMuchError: String { return self._s[2374]! } - public var Login_PhoneTitle: String { return self._s[2375]! } - public var Passport_FieldPhoneHelp: String { return self._s[2376]! } - public var Weekday_ShortSunday: String { return self._s[2377]! } - public var Passport_InfoFAQ_URL: String { return self._s[2378]! } - public var ContactInfo_Job: String { return self._s[2380]! } - public var UserInfo_InviteBotToGroup: String { return self._s[2381]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[2382]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2383]! } - public var Invite_ChannelsTooMuch: String { return self._s[2384]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2385]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2386]! } - public var CallFeedback_ReasonNoise: String { return self._s[2387]! } - public var Appearance_AppIconDefault: String { return self._s[2389]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[2390]! } - public var MediaPicker_AddCaption: String { return self._s[2391]! } - public var CallSettings_TabIconDescription: String { return self._s[2392]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[2384]! } + public var Login_PhoneTitle: String { return self._s[2385]! } + public var Passport_FieldPhoneHelp: String { return self._s[2386]! } + public var Weekday_ShortSunday: String { return self._s[2387]! } + public var Passport_InfoFAQ_URL: String { return self._s[2388]! } + public var ContactInfo_Job: String { return self._s[2390]! } + public var UserInfo_InviteBotToGroup: String { return self._s[2391]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[2392]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2393]! } + public var Invite_ChannelsTooMuch: String { return self._s[2394]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2395]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2396]! } + public var CallFeedback_ReasonNoise: String { return self._s[2397]! } + public var Appearance_AppIconDefault: String { return self._s[2399]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[2400]! } + public var MediaPicker_AddCaption: String { return self._s[2401]! } + public var CallSettings_TabIconDescription: String { return self._s[2402]! } public func VoiceOver_Chat_Caption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2393]!, self._r[2393]!, [_0]) + return formatWithArgumentRanges(self._s[2403]!, self._r[2403]!, [_0]) } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2394]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2395]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[2396]! } - public var DialogList_SearchSectionRecent: String { return self._s[2397]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[2398]! } - public var LogoutOptions_ClearCacheText: String { return self._s[2401]! } - public var LastSeen_WithinAWeek: String { return self._s[2402]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[2403]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[2405]! } - public var VoiceOver_Media_PlaybackRateNormal: String { return self._s[2406]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2404]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2405]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[2406]! } + public var DialogList_SearchSectionRecent: String { return self._s[2407]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[2408]! } + public var LogoutOptions_ClearCacheText: String { return self._s[2411]! } + public var LastSeen_WithinAWeek: String { return self._s[2412]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[2413]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[2415]! } + public var VoiceOver_Media_PlaybackRateNormal: String { return self._s[2416]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2407]!, self._r[2407]!, [_0]) + return formatWithArgumentRanges(self._s[2417]!, self._r[2417]!, [_0]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2408]! } - public var Conversation_StatusLeftGroup: String { return self._s[2409]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2410]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2412]! } - public var GroupPermission_AddSuccess: String { return self._s[2413]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2415]! } - public var Conversation_ContextMenuCopy: String { return self._s[2416]! } - public var AccessDenied_CallMicrophone: String { return self._s[2417]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2418]! } + public var Conversation_StatusLeftGroup: String { return self._s[2419]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2420]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2422]! } + public var GroupPermission_AddSuccess: String { return self._s[2423]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2425]! } + public var Conversation_ContextMenuCopy: String { return self._s[2426]! } + public var AccessDenied_CallMicrophone: String { return self._s[2427]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2418]!, self._r[2418]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[2419]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2420]! } - public var Checkout_PaymentMethod_New: String { return self._s[2421]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[2422]! } - public var PhotoEditor_QualityTool: String { return self._s[2423]! } - public var Login_SendCodeViaSms: String { return self._s[2424]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2425]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[2426]! } - public var Login_EmailNotConfiguredError: String { return self._s[2427]! } - public var SocksProxySetup_Status: String { return self._s[2428]! } - public var PrivacyPolicy_Accept: String { return self._s[2429]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2430]! } - public var Appearance_AppIconClassicX: String { return self._s[2431]! } + public var Login_InvalidFirstNameError: String { return self._s[2429]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2430]! } + public var Checkout_PaymentMethod_New: String { return self._s[2431]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[2432]! } + public var PhotoEditor_QualityTool: String { return self._s[2433]! } + public var Login_SendCodeViaSms: String { return self._s[2434]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2435]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[2436]! } + public var Login_EmailNotConfiguredError: String { return self._s[2437]! } + public var SocksProxySetup_Status: String { return self._s[2438]! } + public var PrivacyPolicy_Accept: String { return self._s[2439]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2440]! } + public var Appearance_AppIconClassicX: String { return self._s[2441]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2442]!, self._r[2442]!, [_1, _2, _3]) } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[2433]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2434]! } - public var AutoNightTheme_Automatic: String { return self._s[2435]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2436]! } - public var Privacy_ContactsSyncHelp: String { return self._s[2437]! } - public var Cache_Help: String { return self._s[2438]! } - public var Group_ErrorAccessDenied: String { return self._s[2439]! } - public var Passport_Language_fa: String { return self._s[2440]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2441]! } - public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2442]! } - public var PrivacySettings_LastSeen: String { return self._s[2443]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[2443]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2444]! } + public var AutoNightTheme_Automatic: String { return self._s[2445]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2446]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2447]! } + public var Cache_Help: String { return self._s[2448]! } + public var Group_ErrorAccessDenied: String { return self._s[2449]! } + public var Passport_Language_fa: String { return self._s[2450]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2451]! } + public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2452]! } + public var PrivacySettings_LastSeen: String { return self._s[2453]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2444]!, self._r[2444]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2454]!, self._r[2454]!, [_0, _1]) } - public var Preview_SaveGif: String { return self._s[2448]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2449]! } - public var Profile_About: String { return self._s[2450]! } - public var Channel_About_Placeholder: String { return self._s[2451]! } - public var Login_InfoTitle: String { return self._s[2452]! } + public var Preview_SaveGif: String { return self._s[2458]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2459]! } + public var Profile_About: String { return self._s[2460]! } + public var Channel_About_Placeholder: String { return self._s[2461]! } + public var Login_InfoTitle: String { return self._s[2462]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2453]!, self._r[2453]!, [_0]) + return formatWithArgumentRanges(self._s[2463]!, self._r[2463]!, [_0]) } - public var EditTheme_Expand_Preview_IncomingReplyText: String { return self._s[2454]! } - public var Watch_Suggestion_CantTalk: String { return self._s[2456]! } - public var ContactInfo_Title: String { return self._s[2457]! } - public var Media_ShareThisVideo: String { return self._s[2458]! } - public var Weekday_ShortFriday: String { return self._s[2459]! } - public var AccessDenied_Contacts: String { return self._s[2461]! } - public var Notification_CallIncomingShort: String { return self._s[2462]! } - public var Group_Setup_TypePublic: String { return self._s[2463]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2464]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2465]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2468]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2469]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2470]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2471]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2472]! } - public var DialogList_Typing: String { return self._s[2473]! } - public var CallFeedback_IncludeLogs: String { return self._s[2475]! } - public var Checkout_Phone: String { return self._s[2477]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2480]! } - public var Privacy_Calls_Integration: String { return self._s[2481]! } - public var Notifications_PermissionsAllow: String { return self._s[2482]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2486]! } - public var Settings_ChatSettings: String { return self._s[2487]! } + public var EditTheme_Expand_Preview_IncomingReplyText: String { return self._s[2464]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2466]! } + public var ContactInfo_Title: String { return self._s[2467]! } + public var Media_ShareThisVideo: String { return self._s[2468]! } + public var Weekday_ShortFriday: String { return self._s[2469]! } + public var AccessDenied_Contacts: String { return self._s[2471]! } + public var Notification_CallIncomingShort: String { return self._s[2472]! } + public var Group_Setup_TypePublic: String { return self._s[2473]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2474]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2475]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2478]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2479]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2480]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2481]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2482]! } + public var DialogList_Typing: String { return self._s[2483]! } + public var CallFeedback_IncludeLogs: String { return self._s[2485]! } + public var Checkout_Phone: String { return self._s[2487]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2490]! } + public var Privacy_Calls_Integration: String { return self._s[2491]! } + public var Notifications_PermissionsAllow: String { return self._s[2492]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2496]! } + public var Settings_ChatSettings: String { return self._s[2497]! } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2488]!, self._r[2488]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2498]!, self._r[2498]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2490]! } + public var GroupRemoved_DeleteUser: String { return self._s[2500]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2491]!, self._r[2491]!, [_0]) + return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_0]) } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2492]!, self._r[2492]!, [_1]) + return formatWithArgumentRanges(self._s[2502]!, self._r[2502]!, [_1]) } - public var Login_ContinueWithLocalization: String { return self._s[2493]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2494]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2496]! } - public var Conversation_Unblock: String { return self._s[2497]! } - public var PrivacySettings_DataSettings: String { return self._s[2498]! } - public var Group_PublicLink_Info: String { return self._s[2499]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2500]! } + public var Login_ContinueWithLocalization: String { return self._s[2503]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2504]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2506]! } + public var Conversation_Unblock: String { return self._s[2507]! } + public var PrivacySettings_DataSettings: String { return self._s[2508]! } + public var Group_PublicLink_Info: String { return self._s[2509]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2510]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2511]!, self._r[2511]!, [_0, _1]) } - public var PrivacySettings_Passcode: String { return self._s[2504]! } - public var Call_Mute: String { return self._s[2505]! } - public var Passport_Language_dz: String { return self._s[2506]! } - public var Passport_Language_tk: String { return self._s[2507]! } + public var PrivacySettings_Passcode: String { return self._s[2514]! } + public var Call_Mute: String { return self._s[2515]! } + public var Passport_Language_dz: String { return self._s[2516]! } + public var Passport_Language_tk: String { return self._s[2517]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2508]!, self._r[2508]!, [_0]) - } - public var Settings_Search: String { return self._s[2509]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2510]! } - public var Conversation_ContextMenuReply: String { return self._s[2511]! } - public var WallpaperSearch_ColorBrown: String { return self._s[2512]! } - public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2513]! } - public var Tour_Title1: String { return self._s[2514]! } - public var Conversation_ClearGroupHistory: String { return self._s[2516]! } - public var WallpaperPreview_Motion: String { return self._s[2517]! } - public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2518]!, self._r[2518]!, [_0]) } - public var Call_RateCall: String { return self._s[2519]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2520]! } - public var Passport_PasswordCompleteSetup: String { return self._s[2521]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2522]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[2524]! } + public var Settings_Search: String { return self._s[2519]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2520]! } + public var Conversation_ContextMenuReply: String { return self._s[2521]! } + public var WallpaperSearch_ColorBrown: String { return self._s[2522]! } + public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2523]! } + public var Tour_Title1: String { return self._s[2524]! } + public var Conversation_ClearGroupHistory: String { return self._s[2526]! } + public var WallpaperPreview_Motion: String { return self._s[2527]! } + public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2528]!, self._r[2528]!, [_0]) + } + public var Call_RateCall: String { return self._s[2529]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2530]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2531]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2532]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2534]! } public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2526]!, self._r[2526]!, [_0]) + return formatWithArgumentRanges(self._s[2536]!, self._r[2536]!, [_0]) } - public var Compose_Create: String { return self._s[2527]! } - public var Contacts_InviteToTelegram: String { return self._s[2528]! } - public var GroupInfo_Notifications: String { return self._s[2529]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[2531]! } - public var Month_GenApril: String { return self._s[2532]! } - public var Appearance_AutoNightTheme: String { return self._s[2533]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[2535]! } - public var Login_CodeSentSms: String { return self._s[2537]! } + public var Compose_Create: String { return self._s[2537]! } + public var Contacts_InviteToTelegram: String { return self._s[2538]! } + public var GroupInfo_Notifications: String { return self._s[2539]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2541]! } + public var Month_GenApril: String { return self._s[2542]! } + public var Appearance_AutoNightTheme: String { return self._s[2543]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2545]! } + public var Login_CodeSentSms: String { return self._s[2547]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2538]!, self._r[2538]!, [_0]) + return formatWithArgumentRanges(self._s[2548]!, self._r[2548]!, [_0]) } - public var EmptyGroupInfo_Line3: String { return self._s[2539]! } - public var LogoutOptions_ContactSupportText: String { return self._s[2540]! } - public var Passport_Language_hr: String { return self._s[2541]! } - public var Common_ActionNotAllowedError: String { return self._s[2542]! } + public var EmptyGroupInfo_Line3: String { return self._s[2549]! } + public var LogoutOptions_ContactSupportText: String { return self._s[2550]! } + public var Passport_Language_hr: String { return self._s[2551]! } + public var Common_ActionNotAllowedError: String { return self._s[2552]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2543]!, self._r[2543]!, [_0]) + return formatWithArgumentRanges(self._s[2553]!, self._r[2553]!, [_0]) } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[2544]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2545]! } - public var Privacy_SecretChatsTitle: String { return self._s[2546]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2548]! } - public var GroupInfo_AddUserLeftError: String { return self._s[2549]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2550]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[2551]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[2552]! } - public var Preview_DeleteGif: String { return self._s[2553]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2554]! } - public var Group_ErrorNotMutualContact: String { return self._s[2555]! } - public var Notification_MessageLifetime5s: String { return self._s[2556]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2554]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2555]! } + public var Privacy_SecretChatsTitle: String { return self._s[2556]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2558]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2559]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2560]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[2561]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[2562]! } + public var Preview_DeleteGif: String { return self._s[2563]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2564]! } + public var Group_ErrorNotMutualContact: String { return self._s[2565]! } + public var Notification_MessageLifetime5s: String { return self._s[2566]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2557]!, self._r[2557]!, [_0]) + return formatWithArgumentRanges(self._s[2567]!, self._r[2567]!, [_0]) } - public var VoiceOver_Chat_Video: String { return self._s[2558]! } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2560]! } - public var ReportSpam_DeleteThisChat: String { return self._s[2561]! } - public var Passport_Address_AddBankStatement: String { return self._s[2562]! } - public var Notification_CallIncoming: String { return self._s[2563]! } - public var Compose_NewGroupTitle: String { return self._s[2564]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2566]! } - public var Passport_Address_Postcode: String { return self._s[2568]! } + public var VoiceOver_Chat_Video: String { return self._s[2568]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2570]! } + public var ReportSpam_DeleteThisChat: String { return self._s[2571]! } + public var Passport_Address_AddBankStatement: String { return self._s[2572]! } + public var Notification_CallIncoming: String { return self._s[2573]! } + public var Compose_NewGroupTitle: String { return self._s[2574]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2576]! } + public var Passport_Address_Postcode: String { return self._s[2578]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2569]!, self._r[2569]!, [_0]) + return formatWithArgumentRanges(self._s[2579]!, self._r[2579]!, [_0]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2570]! } - public var VoiceOver_Chat_YourMusic: String { return self._s[2571]! } - public var WallpaperColors_Title: String { return self._s[2572]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2573]! } - public var VoiceOver_MessageContextForward: String { return self._s[2574]! } - public var GroupPermission_Duration: String { return self._s[2575]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2580]! } + public var VoiceOver_Chat_YourMusic: String { return self._s[2581]! } + public var WallpaperColors_Title: String { return self._s[2582]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2583]! } + public var VoiceOver_MessageContextForward: String { return self._s[2584]! } + public var GroupPermission_Duration: String { return self._s[2585]! } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2576]!, self._r[2576]!, [_0]) + return formatWithArgumentRanges(self._s[2586]!, self._r[2586]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2577]! } - public var Username_Placeholder: String { return self._s[2578]! } - public var CallFeedback_WhatWentWrong: String { return self._s[2579]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2580]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2581]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2587]! } + public var Username_Placeholder: String { return self._s[2588]! } + public var CallFeedback_WhatWentWrong: String { return self._s[2589]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2590]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2591]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2583]!, self._r[2583]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2593]!, self._r[2593]!, [_1, _2]) } - public var Passport_PasswordDescription: String { return self._s[2584]! } - public var Channel_MessagePhotoUpdated: String { return self._s[2585]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[2586]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2587]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[2588]! } - public var Conversation_ContextMenuMore: String { return self._s[2589]! } - public var Privacy_PaymentsClearInfo: String { return self._s[2590]! } - public var CallSettings_TabIcon: String { return self._s[2591]! } - public var KeyCommand_Find: String { return self._s[2592]! } - public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[2593]! } - public var EditTheme_Edit_Preview_IncomingText: String { return self._s[2594]! } - public var Message_PinnedGame: String { return self._s[2595]! } - public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[2596]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2598]! } - public var Login_CallRequestState2: String { return self._s[2600]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2602]! } + public var Passport_PasswordDescription: String { return self._s[2594]! } + public var Channel_MessagePhotoUpdated: String { return self._s[2595]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[2596]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2597]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[2598]! } + public var Conversation_ContextMenuMore: String { return self._s[2599]! } + public var Privacy_PaymentsClearInfo: String { return self._s[2600]! } + public var CallSettings_TabIcon: String { return self._s[2601]! } + public var KeyCommand_Find: String { return self._s[2602]! } + public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[2603]! } + public var EditTheme_Edit_Preview_IncomingText: String { return self._s[2604]! } + public var Message_PinnedGame: String { return self._s[2605]! } + public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[2606]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2608]! } + public var Login_CallRequestState2: String { return self._s[2610]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2612]! } public func VoiceOver_Chat_PhotoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2603]!, self._r[2603]!, [_0]) + return formatWithArgumentRanges(self._s[2613]!, self._r[2613]!, [_0]) } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2605]!, self._r[2605]!, [_0]) + return formatWithArgumentRanges(self._s[2615]!, self._r[2615]!, [_0]) } - public var WallpaperPreview_Blurred: String { return self._s[2606]! } - public var Conversation_InstantPagePreview: String { return self._s[2607]! } + public var WallpaperPreview_Blurred: String { return self._s[2616]! } + public var Conversation_InstantPagePreview: String { return self._s[2617]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2608]!, self._r[2608]!, [_0]) + return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_0]) } - public var SecretTimer_VideoDescription: String { return self._s[2611]! } - public var WallpaperSearch_ColorRed: String { return self._s[2612]! } - public var GroupPermission_NoPinMessages: String { return self._s[2613]! } - public var Passport_Language_es: String { return self._s[2614]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2616]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2617]! } + public var SecretTimer_VideoDescription: String { return self._s[2621]! } + public var WallpaperSearch_ColorRed: String { return self._s[2622]! } + public var GroupPermission_NoPinMessages: String { return self._s[2623]! } + public var Passport_Language_es: String { return self._s[2624]! } + public var Permissions_ContactsAllow_v0: String { return self._s[2626]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2627]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2628]!, self._r[2628]!, [_1, _2]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[2619]! } - public var WebPreview_GettingLinkInfo: String { return self._s[2620]! } - public var Watch_UserInfo_Unmute: String { return self._s[2621]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2622]! } - public var AccessDenied_CameraRestricted: String { return self._s[2624]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[2629]! } + public var WebPreview_GettingLinkInfo: String { return self._s[2630]! } + public var Watch_UserInfo_Unmute: String { return self._s[2631]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2632]! } + public var AccessDenied_CameraRestricted: String { return self._s[2634]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2625]!, self._r[2625]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[2635]!, self._r[2635]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[2627]! } - public var Settings_CopyUsername: String { return self._s[2628]! } - public var Contacts_SearchLabel: String { return self._s[2629]! } - public var Map_OpenInYandexNavigator: String { return self._s[2631]! } - public var PasscodeSettings_EncryptData: String { return self._s[2632]! } - public var WallpaperSearch_ColorPrefix: String { return self._s[2633]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[2634]! } - public var DialogList_AdNoticeAlert: String { return self._s[2635]! } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2637]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2638]! } - public var Localization_LanguageCustom: String { return self._s[2639]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2640]! } - public var CallFeedback_Title: String { return self._s[2641]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[2644]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2645]! } - public var Conversation_InfoGroup: String { return self._s[2646]! } - public var Compose_NewMessage: String { return self._s[2647]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2648]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2649]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2650]! } + public var ChatList_ReadAll: String { return self._s[2637]! } + public var Settings_CopyUsername: String { return self._s[2638]! } + public var Contacts_SearchLabel: String { return self._s[2639]! } + public var Map_OpenInYandexNavigator: String { return self._s[2641]! } + public var PasscodeSettings_EncryptData: String { return self._s[2642]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2643]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[2644]! } + public var DialogList_AdNoticeAlert: String { return self._s[2645]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2647]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2648]! } + public var Localization_LanguageCustom: String { return self._s[2649]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2650]! } + public var CallFeedback_Title: String { return self._s[2651]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[2654]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2655]! } + public var Conversation_InfoGroup: String { return self._s[2656]! } + public var Compose_NewMessage: String { return self._s[2657]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2658]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2659]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2660]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2651]!, self._r[2651]!, [_0]) + return formatWithArgumentRanges(self._s[2661]!, self._r[2661]!, [_0]) } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2652]! } - public var Login_CancelSignUpConfirmation: String { return self._s[2653]! } - public var ChangePhoneNumberCode_Help: String { return self._s[2654]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2655]! } - public var Channel_BlackList_Title: String { return self._s[2656]! } - public var UserInfo_PhoneCall: String { return self._s[2657]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2659]! } - public var State_connecting: String { return self._s[2660]! } - public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[2661]! } - public var EditTheme_Expand_BottomInfo: String { return self._s[2662]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2662]! } + public var Login_CancelSignUpConfirmation: String { return self._s[2663]! } + public var ChangePhoneNumberCode_Help: String { return self._s[2664]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2665]! } + public var Channel_BlackList_Title: String { return self._s[2666]! } + public var UserInfo_PhoneCall: String { return self._s[2667]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2669]! } + public var State_connecting: String { return self._s[2670]! } + public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[2671]! } + public var EditTheme_Expand_BottomInfo: String { return self._s[2672]! } public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2663]!, self._r[2663]!, [_0]) + return formatWithArgumentRanges(self._s[2673]!, self._r[2673]!, [_0]) } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2664]!, self._r[2664]!, [_0]) + return formatWithArgumentRanges(self._s[2674]!, self._r[2674]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[2665]! } - public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[2666]! } - public var Passport_Identity_EditPassport: String { return self._s[2667]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2669]! } - public var Localization_EnglishLanguageName: String { return self._s[2670]! } - public var Share_AuthDescription: String { return self._s[2671]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2672]! } - public var Passport_Identity_Surname: String { return self._s[2673]! } - public var Compose_TokenListPlaceholder: String { return self._s[2674]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[2675]! } - public var Settings_AboutEmpty: String { return self._s[2676]! } - public var Conversation_Unmute: String { return self._s[2677]! } - public var CreateGroup_ChannelsTooMuch: String { return self._s[2679]! } + public var Notifications_GroupNotifications: String { return self._s[2675]! } + public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[2676]! } + public var Passport_Identity_EditPassport: String { return self._s[2677]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2679]! } + public var Localization_EnglishLanguageName: String { return self._s[2680]! } + public var Share_AuthDescription: String { return self._s[2681]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2682]! } + public var Passport_Identity_Surname: String { return self._s[2683]! } + public var Compose_TokenListPlaceholder: String { return self._s[2684]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[2685]! } + public var Settings_AboutEmpty: String { return self._s[2686]! } + public var Conversation_Unmute: String { return self._s[2687]! } + public var CreateGroup_ChannelsTooMuch: String { return self._s[2689]! } public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2680]!, self._r[2680]!, [_1]) + return formatWithArgumentRanges(self._s[2690]!, self._r[2690]!, [_1]) } - public var Login_CodeSentCall: String { return self._s[2681]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2683]! } - public var ChatSettings_Appearance: String { return self._s[2684]! } - public var Appearance_PickAccentColor: String { return self._s[2685]! } + public var Login_CodeSentCall: String { return self._s[2691]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2693]! } + public var ChatSettings_Appearance: String { return self._s[2694]! } + public var Appearance_PickAccentColor: String { return self._s[2695]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2686]!, self._r[2686]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2696]!, self._r[2696]!, [_1, _2]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2687]!, self._r[2687]!, [_1]) + return formatWithArgumentRanges(self._s[2697]!, self._r[2697]!, [_1]) } - public var Notification_CallMissed: String { return self._s[2688]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2689]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2690]! } - public var ChatAdmins_AdminLabel: String { return self._s[2692]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2693]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[2695]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2696]! } - public var Month_GenJune: String { return self._s[2697]! } - public var Watch_Location_Current: String { return self._s[2698]! } - public var Conversation_TitleMute: String { return self._s[2699]! } + public var Notification_CallMissed: String { return self._s[2698]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2699]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2700]! } + public var ChatAdmins_AdminLabel: String { return self._s[2702]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2703]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[2705]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2706]! } + public var Month_GenJune: String { return self._s[2707]! } + public var Watch_Location_Current: String { return self._s[2708]! } + public var Conversation_TitleMute: String { return self._s[2709]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2700]!, self._r[2700]!, [_1]) + return formatWithArgumentRanges(self._s[2710]!, self._r[2710]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[2701]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2711]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2702]!, self._r[2702]!, [_0]) + return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_0]) } - public var Call_ReportPlaceholder: String { return self._s[2703]! } - public var Chat_SlowmodeSendError: String { return self._s[2704]! } - public var MaskStickerSettings_Info: String { return self._s[2705]! } - public var EditTheme_Expand_TopInfo: String { return self._s[2706]! } + public var Call_ReportPlaceholder: String { return self._s[2713]! } + public var Chat_SlowmodeSendError: String { return self._s[2714]! } + public var MaskStickerSettings_Info: String { return self._s[2715]! } + public var EditTheme_Expand_TopInfo: String { return self._s[2716]! } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2707]!, self._r[2707]!, [_0]) + return formatWithArgumentRanges(self._s[2717]!, self._r[2717]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[2708]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[2710]! } - public var Contacts_ShareTelegram: String { return self._s[2711]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2712]! } - public var Channel_ErrorAccessDenied: String { return self._s[2713]! } - public var UserInfo_ScamBotWarning: String { return self._s[2715]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[2716]! } - public var Call_ConnectionErrorTitle: String { return self._s[2717]! } - public var UserInfo_NotificationsEnable: String { return self._s[2718]! } - public var ArchivedChats_IntroText1: String { return self._s[2719]! } - public var Tour_Text4: String { return self._s[2722]! } - public var WallpaperSearch_Recent: String { return self._s[2723]! } - public var GroupInfo_ScamGroupWarning: String { return self._s[2724]! } - public var Profile_MessageLifetime2s: String { return self._s[2726]! } - public var Appearance_ThemePreview_ChatList_5_Text: String { return self._s[2727]! } - public var Notification_MessageLifetime2s: String { return self._s[2728]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[2718]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[2720]! } + public var Contacts_ShareTelegram: String { return self._s[2721]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2722]! } + public var Channel_ErrorAccessDenied: String { return self._s[2723]! } + public var UserInfo_ScamBotWarning: String { return self._s[2725]! } + public var Stickers_GroupChooseStickerPack: String { return self._s[2726]! } + public var Call_ConnectionErrorTitle: String { return self._s[2727]! } + public var UserInfo_NotificationsEnable: String { return self._s[2728]! } + public var ArchivedChats_IntroText1: String { return self._s[2729]! } + public var Tour_Text4: String { return self._s[2732]! } + public var WallpaperSearch_Recent: String { return self._s[2733]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[2734]! } + public var Profile_MessageLifetime2s: String { return self._s[2736]! } + public var Appearance_ThemePreview_ChatList_5_Text: String { return self._s[2737]! } + public var Notification_MessageLifetime2s: String { return self._s[2738]! } public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2729]!, self._r[2729]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2739]!, self._r[2739]!, [_1, _2, _3]) } - public var Cache_ClearCache: String { return self._s[2730]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[2731]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2732]! } + public var Cache_ClearCache: String { return self._s[2740]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[2741]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2742]! } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2736]!, self._r[2736]!, [_0]) + return formatWithArgumentRanges(self._s[2747]!, self._r[2747]!, [_0]) } public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2738]!, self._r[2738]!, [_0]) + return formatWithArgumentRanges(self._s[2749]!, self._r[2749]!, [_0]) } - public var LocalGroup_Text: String { return self._s[2739]! } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2740]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2741]! } - public var ChatList_UnarchiveAction: String { return self._s[2742]! } - public var AutoNightTheme_Title: String { return self._s[2743]! } - public var InstantPage_FeedbackButton: String { return self._s[2744]! } - public var Passport_FieldAddress: String { return self._s[2745]! } + public var LocalGroup_Text: String { return self._s[2750]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2751]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2752]! } + public var ChatList_UnarchiveAction: String { return self._s[2753]! } + public var AutoNightTheme_Title: String { return self._s[2754]! } + public var InstantPage_FeedbackButton: String { return self._s[2755]! } + public var Passport_FieldAddress: String { return self._s[2756]! } public func Channel_AdminLog_SetSlowmode(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2746]!, self._r[2746]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_1, _2]) } - public var Month_ShortMarch: String { return self._s[2747]! } + public var Month_ShortMarch: String { return self._s[2758]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2748]!, self._r[2748]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2759]!, self._r[2759]!, [_1, _2]) } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2749]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2750]! } - public var Passport_FloodError: String { return self._s[2751]! } - public var SecretGif_Title: String { return self._s[2752]! } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2753]! } - public var ChatList_Context_UnhideArchive: String { return self._s[2754]! } - public var Passport_Language_th: String { return self._s[2756]! } - public var Passport_Address_Address: String { return self._s[2757]! } - public var Login_InvalidLastNameError: String { return self._s[2758]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2759]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[2760]! } - public var ChatList_Context_Archive: String { return self._s[2761]! } - public var SettingsSearch_FAQ: String { return self._s[2762]! } - public var ShareMenu_Send: String { return self._s[2763]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2765]! } - public var Month_GenNovember: String { return self._s[2767]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2769]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2760]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2761]! } + public var Passport_FloodError: String { return self._s[2762]! } + public var SecretGif_Title: String { return self._s[2763]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2764]! } + public var ChatList_Context_UnhideArchive: String { return self._s[2765]! } + public var Passport_Language_th: String { return self._s[2767]! } + public var Passport_Address_Address: String { return self._s[2768]! } + public var Login_InvalidLastNameError: String { return self._s[2769]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2770]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[2771]! } + public var ChatList_Context_Archive: String { return self._s[2772]! } + public var SettingsSearch_FAQ: String { return self._s[2773]! } + public var ShareMenu_Send: String { return self._s[2774]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2776]! } + public var Month_GenNovember: String { return self._s[2778]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2780]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2770]!, self._r[2770]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2781]!, self._r[2781]!, [_1, _2]) } - public var Checkout_Email: String { return self._s[2771]! } - public var NotificationsSound_Tritone: String { return self._s[2772]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[2774]! } + public var Checkout_Email: String { return self._s[2783]! } + public var NotificationsSound_Tritone: String { return self._s[2784]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[2786]! } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2777]!, self._r[2777]!, [_1]) + return formatWithArgumentRanges(self._s[2789]!, self._r[2789]!, [_1]) } - public var ChangePhoneNumberNumber_Help: String { return self._s[2778]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[2790]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2779]!, self._r[2779]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[2791]!, self._r[2791]!, [_1, _1, _1, _2]) } - public var ChatList_UndoArchiveTitle: String { return self._s[2780]! } - public var Notification_Exceptions_Add: String { return self._s[2781]! } - public var DialogList_You: String { return self._s[2782]! } - public var MediaPicker_Send: String { return self._s[2785]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2786]! } - public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[2787]! } - public var Call_AudioRouteSpeaker: String { return self._s[2788]! } - public var Watch_UserInfo_Title: String { return self._s[2789]! } - public var VoiceOver_Chat_PollFinalResults: String { return self._s[2790]! } - public var Appearance_AccentColor: String { return self._s[2791]! } + public var ChatList_UndoArchiveTitle: String { return self._s[2792]! } + public var Notification_Exceptions_Add: String { return self._s[2793]! } + public var DialogList_You: String { return self._s[2794]! } + public var MediaPicker_Send: String { return self._s[2797]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2798]! } + public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[2799]! } + public var Call_AudioRouteSpeaker: String { return self._s[2800]! } + public var Watch_UserInfo_Title: String { return self._s[2801]! } + public var VoiceOver_Chat_PollFinalResults: String { return self._s[2802]! } + public var Appearance_AccentColor: String { return self._s[2803]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2792]!, self._r[2792]!, [_0]) + return formatWithArgumentRanges(self._s[2804]!, self._r[2804]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2793]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2805]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2794]!, self._r[2794]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2806]!, self._r[2806]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[2795]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[2796]! } - public var Notification_CallOutgoing: String { return self._s[2797]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2798]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2799]! } - public var Call_RecordingDisabledMessage: String { return self._s[2800]! } - public var Message_Game: String { return self._s[2801]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[2802]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2803]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2804]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2805]! } - public var Date_DialogDateFormat: String { return self._s[2806]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2807]! } - public var Notifications_InAppNotifications: String { return self._s[2808]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[2807]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[2808]! } + public var Notification_CallOutgoing: String { return self._s[2809]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2810]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2811]! } + public var Call_RecordingDisabledMessage: String { return self._s[2812]! } + public var Message_Game: String { return self._s[2813]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[2814]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2815]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2816]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2817]! } + public var Date_DialogDateFormat: String { return self._s[2818]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2819]! } + public var Notifications_InAppNotifications: String { return self._s[2820]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2809]!, self._r[2809]!, [_0]) + return formatWithArgumentRanges(self._s[2821]!, self._r[2821]!, [_0]) } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2810]!, self._r[2810]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2822]!, self._r[2822]!, [_1, _2]) } - public var NewContact_Title: String { return self._s[2811]! } + public var NewContact_Title: String { return self._s[2823]! } public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2812]!, self._r[2812]!, [_0]) + return formatWithArgumentRanges(self._s[2824]!, self._r[2824]!, [_0]) } - public var Conversation_ViewContactDetails: String { return self._s[2813]! } + public var Conversation_ViewContactDetails: String { return self._s[2825]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2815]!, self._r[2815]!, [_1]) + return formatWithArgumentRanges(self._s[2827]!, self._r[2827]!, [_1]) } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2816]! } - public var Passport_Identity_ExpiryDateNone: String { return self._s[2817]! } - public var PrivacySettings_Title: String { return self._s[2818]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2821]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2822]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[2823]! } - public var Contacts_PhoneNumber: String { return self._s[2824]! } - public var Map_ShowPlaces: String { return self._s[2826]! } - public var ChatAdmins_Title: String { return self._s[2827]! } - public var InstantPage_Reference: String { return self._s[2829]! } - public var ReportGroupLocation_Text: String { return self._s[2830]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2828]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2829]! } + public var PrivacySettings_Title: String { return self._s[2830]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2833]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2834]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[2835]! } + public var Contacts_PhoneNumber: String { return self._s[2836]! } + public var Map_ShowPlaces: String { return self._s[2838]! } + public var ChatAdmins_Title: String { return self._s[2839]! } + public var InstantPage_Reference: String { return self._s[2841]! } + public var ReportGroupLocation_Text: String { return self._s[2842]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2831]!, self._r[2831]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2843]!, self._r[2843]!, [_1, _2]) } - public var Camera_FlashOff: String { return self._s[2832]! } - public var Watch_UserInfo_Block: String { return self._s[2833]! } - public var ChatSettings_Stickers: String { return self._s[2834]! } - public var ChatSettings_DownloadInBackground: String { return self._s[2835]! } - public var Appearance_ThemeCarouselTintedNight: String { return self._s[2836]! } + public var Camera_FlashOff: String { return self._s[2844]! } + public var Watch_UserInfo_Block: String { return self._s[2845]! } + public var ChatSettings_Stickers: String { return self._s[2846]! } + public var ChatSettings_DownloadInBackground: String { return self._s[2847]! } + public var Appearance_ThemeCarouselTintedNight: String { return self._s[2848]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2837]!, self._r[2837]!, [_0]) + return formatWithArgumentRanges(self._s[2849]!, self._r[2849]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[2838]! } - public var Login_CheckOtherSessionMessages: String { return self._s[2839]! } - public var AutoDownloadSettings_Cellular: String { return self._s[2840]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2841]! } - public var VoiceOver_MessageContextShare: String { return self._s[2842]! } + public var Settings_ViewPhoto: String { return self._s[2850]! } + public var Login_CheckOtherSessionMessages: String { return self._s[2851]! } + public var AutoDownloadSettings_Cellular: String { return self._s[2852]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2853]! } + public var VoiceOver_MessageContextShare: String { return self._s[2854]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2844]!, self._r[2844]!, [_0]) + return formatWithArgumentRanges(self._s[2856]!, self._r[2856]!, [_0]) } - public var Privacy_DeleteDrafts: String { return self._s[2845]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2846]! } + public var Privacy_DeleteDrafts: String { return self._s[2857]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2858]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2847]!, self._r[2847]!, [_0]) + return formatWithArgumentRanges(self._s[2859]!, self._r[2859]!, [_0]) } - public var DialogList_SavedMessagesHelp: String { return self._s[2848]! } - public var DialogList_SavedMessages: String { return self._s[2849]! } - public var GroupInfo_UpgradeButton: String { return self._s[2850]! } - public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[2852]! } - public var DialogList_Pin: String { return self._s[2853]! } + public var DialogList_SavedMessagesHelp: String { return self._s[2860]! } + public var DialogList_SavedMessages: String { return self._s[2861]! } + public var GroupInfo_UpgradeButton: String { return self._s[2862]! } + public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[2864]! } + public var DialogList_Pin: String { return self._s[2865]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2854]!, self._r[2854]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2866]!, self._r[2866]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2855]!, self._r[2855]!, [_0]) + return formatWithArgumentRanges(self._s[2867]!, self._r[2867]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[2856]! } - public var UserInfo_NotificationsDisable: String { return self._s[2857]! } - public var Paint_Outlined: String { return self._s[2858]! } - public var Activity_PlayingGame: String { return self._s[2859]! } - public var SearchImages_NoImagesFound: String { return self._s[2860]! } - public var SocksProxySetup_ProxyType: String { return self._s[2861]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[2863]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[2864]! } - public var Settings_AppLanguage: String { return self._s[2865]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[2866]! } - public var Common_ChoosePhoto: String { return self._s[2867]! } - public var CallFeedback_ReasonEcho: String { return self._s[2868]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[2868]! } + public var UserInfo_NotificationsDisable: String { return self._s[2869]! } + public var Paint_Outlined: String { return self._s[2870]! } + public var Activity_PlayingGame: String { return self._s[2871]! } + public var SearchImages_NoImagesFound: String { return self._s[2872]! } + public var SocksProxySetup_ProxyType: String { return self._s[2873]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[2875]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[2876]! } + public var Settings_AppLanguage: String { return self._s[2877]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[2878]! } + public var Common_ChoosePhoto: String { return self._s[2879]! } + public var CallFeedback_ReasonEcho: String { return self._s[2880]! } public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2869]!, self._r[2869]!, [_1]) + return formatWithArgumentRanges(self._s[2881]!, self._r[2881]!, [_1]) } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2870]! } - public var Activity_UploadingVideo: String { return self._s[2871]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2872]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2873]! } - public var VoiceOver_Editing_ClearText: String { return self._s[2874]! } - public var PUSH_SENDER_YOU: String { return self._s[2875]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2876]! } - public var Checkout_PayWithTouchId: String { return self._s[2877]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2878]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2882]! } + public var Activity_UploadingVideo: String { return self._s[2883]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2884]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2885]! } + public var VoiceOver_Editing_ClearText: String { return self._s[2886]! } + public var PUSH_SENDER_YOU: String { return self._s[2887]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2888]! } + public var Checkout_PayWithTouchId: String { return self._s[2889]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2890]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2880]!, self._r[2880]!, [_1]) + return formatWithArgumentRanges(self._s[2892]!, self._r[2892]!, [_1]) } - public var Notifications_ExceptionsNone: String { return self._s[2881]! } + public var Notifications_ExceptionsNone: String { return self._s[2893]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2882]!, self._r[2882]!, [_0]) + return formatWithArgumentRanges(self._s[2894]!, self._r[2894]!, [_0]) } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2883]!, self._r[2883]!, [_1]) + return formatWithArgumentRanges(self._s[2895]!, self._r[2895]!, [_1]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[2885]! } - public var Passport_Address_Region: String { return self._s[2888]! } - public var ChatList_DeleteChat: String { return self._s[2889]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2890]! } - public var PhotoEditor_TiltShift: String { return self._s[2891]! } - public var Settings_FAQ_URL: String { return self._s[2892]! } - public var Passport_Language_sl: String { return self._s[2893]! } - public var Settings_PrivacySettings: String { return self._s[2895]! } - public var SharedMedia_TitleLink: String { return self._s[2896]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[2897]! } - public var Settings_SetProfilePhoto: String { return self._s[2898]! } - public var Channel_About_Help: String { return self._s[2899]! } - public var Contacts_PermissionsEnable: String { return self._s[2900]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2901]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[2902]! } - public var CallFeedback_ReasonInterruption: String { return self._s[2904]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[2905]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2906]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2907]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[2908]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2910]! } - public var Map_OpenInYandexMaps: String { return self._s[2912]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2913]! } - public var VoiceOver_MessageContextReply: String { return self._s[2914]! } - public var PhotoEditor_SaturationTool: String { return self._s[2915]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[2897]! } + public var Passport_Address_Region: String { return self._s[2900]! } + public var ChatList_DeleteChat: String { return self._s[2901]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2902]! } + public var PhotoEditor_TiltShift: String { return self._s[2903]! } + public var Settings_FAQ_URL: String { return self._s[2904]! } + public var Passport_Language_sl: String { return self._s[2905]! } + public var Settings_PrivacySettings: String { return self._s[2907]! } + public var SharedMedia_TitleLink: String { return self._s[2908]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[2909]! } + public var Settings_SetProfilePhoto: String { return self._s[2910]! } + public var Channel_About_Help: String { return self._s[2911]! } + public var Contacts_PermissionsEnable: String { return self._s[2912]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2913]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[2914]! } + public var CallFeedback_ReasonInterruption: String { return self._s[2916]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[2917]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2918]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2919]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[2920]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2922]! } + public var Map_OpenInYandexMaps: String { return self._s[2924]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2925]! } + public var VoiceOver_MessageContextReply: String { return self._s[2926]! } + public var PhotoEditor_SaturationTool: String { return self._s[2927]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2916]!, self._r[2916]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2928]!, self._r[2928]!, [_1, _2]) } - public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2917]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2918]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2919]! } - public var Appearance_TextSize: String { return self._s[2920]! } + public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2929]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2930]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2931]! } + public var Appearance_TextSize: String { return self._s[2932]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2921]!, self._r[2921]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2933]!, self._r[2933]!, [_1, "\(_2)"]) } - public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2922]! } - public var Channel_Username_InvalidTooShort: String { return self._s[2924]! } + public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2934]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2936]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2925]!, self._r[2925]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2937]!, self._r[2937]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2926]!, self._r[2926]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2938]!, self._r[2938]!, [_1, _2, _3]) } - public var GroupInfo_PublicLinkAdd: String { return self._s[2927]! } - public var Passport_PassportInformation: String { return self._s[2930]! } - public var Theme_Unsupported: String { return self._s[2931]! } - public var WatchRemote_AlertTitle: String { return self._s[2932]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2933]! } - public var ConvertToSupergroup_HelpText: String { return self._s[2935]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[2939]! } + public var Passport_PassportInformation: String { return self._s[2942]! } + public var Theme_Unsupported: String { return self._s[2943]! } + public var WatchRemote_AlertTitle: String { return self._s[2944]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2945]! } + public var ConvertToSupergroup_HelpText: String { return self._s[2947]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2936]!, self._r[2936]!, [_0]) + return formatWithArgumentRanges(self._s[2948]!, self._r[2948]!, [_0]) } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2937]!, self._r[2937]!, [_1]) + return formatWithArgumentRanges(self._s[2949]!, self._r[2949]!, [_1]) } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2938]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2940]! } - public var AccessDenied_CameraDisabled: String { return self._s[2941]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2950]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2952]! } + public var AccessDenied_CameraDisabled: String { return self._s[2953]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2942]!, self._r[2942]!, [_0]) + return formatWithArgumentRanges(self._s[2954]!, self._r[2954]!, [_0]) } - public var PhotoEditor_ContrastTool: String { return self._s[2945]! } + public var PhotoEditor_ContrastTool: String { return self._s[2957]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2946]!, self._r[2946]!, [_1]) + return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_1]) } - public var DialogList_Draft: String { return self._s[2947]! } - public var Privacy_TopPeersDelete: String { return self._s[2949]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[2950]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2951]! } - public var WebSearch_RecentSectionClear: String { return self._s[2952]! } - public var EditTheme_ErrorInvalidCharacters: String { return self._s[2953]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2955]! } - public var Common_Done: String { return self._s[2957]! } - public var AuthSessions_EmptyText: String { return self._s[2958]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[2959]! } - public var Tour_Title5: String { return self._s[2960]! } + public var DialogList_Draft: String { return self._s[2959]! } + public var Privacy_TopPeersDelete: String { return self._s[2961]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[2962]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2963]! } + public var WebSearch_RecentSectionClear: String { return self._s[2964]! } + public var EditTheme_ErrorInvalidCharacters: String { return self._s[2965]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2967]! } + public var Common_Done: String { return self._s[2969]! } + public var AuthSessions_EmptyText: String { return self._s[2970]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[2971]! } + public var Tour_Title5: String { return self._s[2972]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2961]!, self._r[2961]!, [_0]) + return formatWithArgumentRanges(self._s[2973]!, self._r[2973]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2962]! } - public var Conversation_LinkDialogSave: String { return self._s[2963]! } - public var GroupInfo_ActionRestrict: String { return self._s[2964]! } - public var Checkout_Title: String { return self._s[2965]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2967]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2969]! } - public var Notification_RenamedGroup: String { return self._s[2970]! } - public var PeopleNearby_Groups: String { return self._s[2971]! } - public var Checkout_PayWithFaceId: String { return self._s[2972]! } - public var Channel_BanList_BlockedTitle: String { return self._s[2973]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2975]! } - public var Checkout_WebConfirmation_Title: String { return self._s[2976]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[2977]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2974]! } + public var Conversation_LinkDialogSave: String { return self._s[2975]! } + public var GroupInfo_ActionRestrict: String { return self._s[2976]! } + public var Checkout_Title: String { return self._s[2977]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2979]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2981]! } + public var Notification_RenamedGroup: String { return self._s[2982]! } + public var PeopleNearby_Groups: String { return self._s[2983]! } + public var Checkout_PayWithFaceId: String { return self._s[2984]! } + public var Channel_BanList_BlockedTitle: String { return self._s[2985]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2987]! } + public var Checkout_WebConfirmation_Title: String { return self._s[2988]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[2989]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2978]!, self._r[2978]!, [_0]) + return formatWithArgumentRanges(self._s[2990]!, self._r[2990]!, [_0]) } - public var Profile_AddToExisting: String { return self._s[2980]! } + public var Profile_AddToExisting: String { return self._s[2992]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2981]!, self._r[2981]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2993]!, self._r[2993]!, [_0, _1]) } - public var Cache_Files: String { return self._s[2983]! } - public var Permissions_PrivacyPolicy: String { return self._s[2984]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[2985]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2986]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2988]! } - public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2990]! } - public var Calls_NoCallsPlaceholder: String { return self._s[2991]! } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2992]! } - public var VoiceOver_AttachMedia: String { return self._s[2994]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2995]! } + public var Cache_Files: String { return self._s[2995]! } + public var Permissions_PrivacyPolicy: String { return self._s[2996]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[2997]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2998]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[3000]! } + public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[3002]! } + public var Calls_NoCallsPlaceholder: String { return self._s[3003]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[3004]! } + public var VoiceOver_AttachMedia: String { return self._s[3006]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[3007]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2996]!, self._r[2996]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3008]!, self._r[3008]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2997]! } - public var Conversation_SetReminder_Title: String { return self._s[2998]! } - public var Passport_FieldAddressHelp: String { return self._s[2999]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3000]! } - public var PUSH_REMINDER_TITLE: String { return self._s[3001]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[3009]! } + public var Conversation_SetReminder_Title: String { return self._s[3010]! } + public var Passport_FieldAddressHelp: String { return self._s[3011]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[3012]! } + public var PUSH_REMINDER_TITLE: String { return self._s[3013]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_0]) + return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[3003]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[3004]! } - public var Login_UnknownError: String { return self._s[3005]! } - public var Group_UpgradeNoticeText2: String { return self._s[3008]! } - public var Watch_Compose_AddContact: String { return self._s[3009]! } - public var Web_Error: String { return self._s[3010]! } - public var Gif_Search: String { return self._s[3011]! } - public var Profile_MessageLifetime1h: String { return self._s[3012]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[3013]! } - public var Channel_Username_CheckingUsername: String { return self._s[3014]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[3015]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[3016]! } - public var Channel_AboutItem: String { return self._s[3017]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[3019]! } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[3020]! } - public var GroupInfo_SharedMedia: String { return self._s[3021]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[3015]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[3016]! } + public var Login_UnknownError: String { return self._s[3017]! } + public var Group_UpgradeNoticeText2: String { return self._s[3020]! } + public var Watch_Compose_AddContact: String { return self._s[3021]! } + public var Web_Error: String { return self._s[3022]! } + public var Gif_Search: String { return self._s[3023]! } + public var Profile_MessageLifetime1h: String { return self._s[3024]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[3025]! } + public var Channel_Username_CheckingUsername: String { return self._s[3026]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[3027]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[3028]! } + public var Channel_AboutItem: String { return self._s[3029]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[3031]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[3032]! } + public var GroupInfo_SharedMedia: String { return self._s[3033]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3022]!, self._r[3022]!, [_1]) + return formatWithArgumentRanges(self._s[3034]!, self._r[3034]!, [_1]) } - public var Call_PhoneCallInProgressMessage: String { return self._s[3023]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[3035]! } public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3024]!, self._r[3024]!, [_1]) + return formatWithArgumentRanges(self._s[3036]!, self._r[3036]!, [_1]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[3025]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[3026]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[3027]! } - public var CreatePoll_AddOption: String { return self._s[3028]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[3029]! } - public var Group_UpgradeNoticeHeader: String { return self._s[3030]! } - public var Channel_Management_AddModerator: String { return self._s[3031]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[3032]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[3033]! } - public var NotificationsSound_Hello: String { return self._s[3034]! } - public var SocksProxySetup_SavedProxies: String { return self._s[3035]! } - public var Channel_Stickers_Placeholder: String { return self._s[3037]! } + public var ChatList_UndoArchiveRevealedText: String { return self._s[3037]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[3038]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[3039]! } + public var CreatePoll_AddOption: String { return self._s[3040]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[3041]! } + public var Group_UpgradeNoticeHeader: String { return self._s[3042]! } + public var Channel_Management_AddModerator: String { return self._s[3043]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[3044]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[3045]! } + public var NotificationsSound_Hello: String { return self._s[3046]! } + public var SocksProxySetup_SavedProxies: String { return self._s[3047]! } + public var Channel_Stickers_Placeholder: String { return self._s[3049]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3038]!, self._r[3038]!, [_0]) + return formatWithArgumentRanges(self._s[3050]!, self._r[3050]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3039]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[3040]! } - public var ContactInfo_BirthdayLabel: String { return self._s[3041]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[3042]! } - public var AutoDownloadSettings_Channels: String { return self._s[3043]! } - public var Passport_Language_mn: String { return self._s[3044]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[3047]! } - public var GroupInfo_Permissions_SlowmodeValue_Off: String { return self._s[3048]! } - public var Passport_Language_ja: String { return self._s[3050]! } - public var Settings_About_Title: String { return self._s[3051]! } - public var Settings_NotificationsAndSounds: String { return self._s[3052]! } - public var ChannelInfo_DeleteGroup: String { return self._s[3053]! } - public var Settings_BlockedUsers: String { return self._s[3054]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3051]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[3052]! } + public var ContactInfo_BirthdayLabel: String { return self._s[3053]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[3054]! } + public var AutoDownloadSettings_Channels: String { return self._s[3055]! } + public var Passport_Language_mn: String { return self._s[3056]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[3059]! } + public var GroupInfo_Permissions_SlowmodeValue_Off: String { return self._s[3060]! } + public var Passport_Language_ja: String { return self._s[3062]! } + public var Settings_About_Title: String { return self._s[3063]! } + public var Settings_NotificationsAndSounds: String { return self._s[3064]! } + public var ChannelInfo_DeleteGroup: String { return self._s[3065]! } + public var Settings_BlockedUsers: String { return self._s[3066]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3055]!, self._r[3055]!, [_0]) + return formatWithArgumentRanges(self._s[3067]!, self._r[3067]!, [_0]) } - public var EditTheme_Create_Preview_OutgoingText: String { return self._s[3056]! } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[3057]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[3058]! } - public var Channel_Username_Title: String { return self._s[3059]! } + public var EditTheme_Create_Preview_OutgoingText: String { return self._s[3068]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[3069]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[3070]! } + public var Channel_Username_Title: String { return self._s[3071]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3060]!, self._r[3060]!, [_0]) + return formatWithArgumentRanges(self._s[3072]!, self._r[3072]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[3062]! } - public var AppleWatch_Title: String { return self._s[3063]! } - public var Activity_RecordingVideoMessage: String { return self._s[3064]! } + public var AttachmentMenu_File: String { return self._s[3074]! } + public var AppleWatch_Title: String { return self._s[3075]! } + public var Activity_RecordingVideoMessage: String { return self._s[3076]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3065]!, self._r[3065]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3077]!, self._r[3077]!, [_1, _2]) } - public var Weekday_Saturday: String { return self._s[3066]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[3067]! } - public var Profile_CreateEncryptedChatError: String { return self._s[3068]! } - public var Common_Next: String { return self._s[3070]! } - public var Channel_Stickers_YourStickers: String { return self._s[3072]! } - public var Message_Theme: String { return self._s[3073]! } - public var Call_AudioRouteHeadphones: String { return self._s[3074]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3076]! } - public var Watch_Contacts_NoResults: String { return self._s[3078]! } - public var PhotoEditor_TintTool: String { return self._s[3081]! } - public var LoginPassword_ResetAccount: String { return self._s[3083]! } - public var Settings_SavedMessages: String { return self._s[3084]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3085]! } - public var Bot_GenericSupportStatus: String { return self._s[3086]! } - public var StickerPack_Add: String { return self._s[3087]! } - public var Checkout_TotalAmount: String { return self._s[3088]! } - public var Your_cards_number_is_invalid: String { return self._s[3089]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3090]! } - public var VoiceOver_Chat_VideoMessage: String { return self._s[3091]! } + public var Weekday_Saturday: String { return self._s[3078]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[3079]! } + public var Profile_CreateEncryptedChatError: String { return self._s[3080]! } + public var Common_Next: String { return self._s[3082]! } + public var Channel_Stickers_YourStickers: String { return self._s[3084]! } + public var Message_Theme: String { return self._s[3085]! } + public var Call_AudioRouteHeadphones: String { return self._s[3086]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3088]! } + public var Watch_Contacts_NoResults: String { return self._s[3090]! } + public var PhotoEditor_TintTool: String { return self._s[3093]! } + public var LoginPassword_ResetAccount: String { return self._s[3095]! } + public var Settings_SavedMessages: String { return self._s[3096]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3097]! } + public var Bot_GenericSupportStatus: String { return self._s[3098]! } + public var StickerPack_Add: String { return self._s[3099]! } + public var Checkout_TotalAmount: String { return self._s[3100]! } + public var Your_cards_number_is_invalid: String { return self._s[3101]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3102]! } + public var VoiceOver_Chat_VideoMessage: String { return self._s[3103]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3092]!, self._r[3092]!, [_0]) + return formatWithArgumentRanges(self._s[3104]!, self._r[3104]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3093]!, self._r[3093]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3105]!, self._r[3105]!, [_1, _2]) } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3094]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3106]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3096]!, self._r[3096]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3108]!, self._r[3108]!, [_1, _2]) } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3097]!, self._r[3097]!, [_0]) + return formatWithArgumentRanges(self._s[3109]!, self._r[3109]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[3098]! } - public var StickerPack_Share: String { return self._s[3099]! } - public var Passport_DeleteAddress: String { return self._s[3100]! } - public var Settings_Passport: String { return self._s[3101]! } - public var SharedMedia_EmptyFilesText: String { return self._s[3102]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[3103]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3104]! } - public var Contacts_PermissionsText: String { return self._s[3105]! } - public var Group_Setup_HistoryVisible: String { return self._s[3106]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[3108]! } - public var SocksProxySetup_Title: String { return self._s[3109]! } - public var Notification_Mute1h: String { return self._s[3110]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[3110]! } + public var StickerPack_Share: String { return self._s[3111]! } + public var Passport_DeleteAddress: String { return self._s[3112]! } + public var Settings_Passport: String { return self._s[3113]! } + public var SharedMedia_EmptyFilesText: String { return self._s[3114]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[3115]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3116]! } + public var Contacts_PermissionsText: String { return self._s[3117]! } + public var Group_Setup_HistoryVisible: String { return self._s[3118]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[3120]! } + public var SocksProxySetup_Title: String { return self._s[3121]! } + public var Notification_Mute1h: String { return self._s[3122]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3111]!, self._r[3111]!, [_0]) + return formatWithArgumentRanges(self._s[3123]!, self._r[3123]!, [_0]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3112]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3125]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3113]!, self._r[3113]!, [_1]) + return formatWithArgumentRanges(self._s[3126]!, self._r[3126]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[3114]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3117]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3119]! } - public var DialogList_NoMessagesText: String { return self._s[3120]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[3121]! } - public var Privacy_Calls_P2PHelp: String { return self._s[3122]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3124]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[3125]! } - public var Common_TakePhotoOrVideo: String { return self._s[3126]! } - public var Call_StatusBusy: String { return self._s[3127]! } - public var Conversation_PinnedMessage: String { return self._s[3128]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3129]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3130]! } - public var Undo_ChatCleared: String { return self._s[3131]! } - public var AppleWatch_ReplyPresets: String { return self._s[3132]! } - public var Passport_DiscardMessageDescription: String { return self._s[3134]! } - public var Login_NetworkError: String { return self._s[3135]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[3127]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3130]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3132]! } + public var DialogList_NoMessagesText: String { return self._s[3133]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[3134]! } + public var Privacy_Calls_P2PHelp: String { return self._s[3135]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3137]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[3138]! } + public var Common_TakePhotoOrVideo: String { return self._s[3139]! } + public var Call_StatusBusy: String { return self._s[3140]! } + public var Conversation_PinnedMessage: String { return self._s[3141]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3142]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3143]! } + public var Undo_ChatCleared: String { return self._s[3144]! } + public var AppleWatch_ReplyPresets: String { return self._s[3145]! } + public var Passport_DiscardMessageDescription: String { return self._s[3147]! } + public var Login_NetworkError: String { return self._s[3148]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_0]) + return formatWithArgumentRanges(self._s[3149]!, self._r[3149]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3137]!, self._r[3137]!, [_0]) + return formatWithArgumentRanges(self._s[3150]!, self._r[3150]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3138]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3140]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3151]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3153]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3142]!, self._r[3142]!, [_0]) + return formatWithArgumentRanges(self._s[3155]!, self._r[3155]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[3143]! } - public var VoiceOver_Chat_Music: String { return self._s[3144]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3145]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[3147]! } - public var ConversationMedia_Title: String { return self._s[3148]! } - public var EncryptionKey_Title: String { return self._s[3150]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3151]! } - public var Notification_Exceptions_AddException: String { return self._s[3152]! } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3153]! } - public var Profile_MessageLifetime1m: String { return self._s[3154]! } + public var Call_ConnectionErrorMessage: String { return self._s[3156]! } + public var VoiceOver_Chat_Music: String { return self._s[3157]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3158]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[3160]! } + public var ConversationMedia_Title: String { return self._s[3161]! } + public var EncryptionKey_Title: String { return self._s[3163]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3164]! } + public var Notification_Exceptions_AddException: String { return self._s[3165]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3166]! } + public var Profile_MessageLifetime1m: String { return self._s[3167]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3155]!, self._r[3155]!, [_1]) + return formatWithArgumentRanges(self._s[3168]!, self._r[3168]!, [_1]) } - public var Month_GenMay: String { return self._s[3156]! } + public var Month_GenMay: String { return self._s[3169]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3157]!, self._r[3157]!, [_0]) + return formatWithArgumentRanges(self._s[3170]!, self._r[3170]!, [_0]) } - public var PeopleNearby_Users: String { return self._s[3158]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3159]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[3160]! } - public var Conversation_EmptyPlaceholder: String { return self._s[3162]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[3163]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[3164]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3165]! } - public var Camera_TapAndHoldForVideo: String { return self._s[3166]! } - public var Channel_JoinChannel: String { return self._s[3168]! } - public var Appearance_Animations: String { return self._s[3171]! } + public var PeopleNearby_Users: String { return self._s[3171]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3172]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[3173]! } + public var Conversation_EmptyPlaceholder: String { return self._s[3175]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[3176]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[3177]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3178]! } + public var Camera_TapAndHoldForVideo: String { return self._s[3179]! } + public var Channel_JoinChannel: String { return self._s[3181]! } + public var Appearance_Animations: String { return self._s[3184]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3172]!, self._r[3172]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3185]!, self._r[3185]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[3174]! } - public var Appearance_ShareTheme: String { return self._s[3175]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[3177]! } - public var Passport_Address_Street: String { return self._s[3178]! } - public var Conversation_AddContact: String { return self._s[3179]! } - public var Login_PhonePlaceholder: String { return self._s[3180]! } - public var Channel_Members_InviteLink: String { return self._s[3182]! } - public var Bot_Stop: String { return self._s[3183]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3185]! } - public var Notification_PassportValueAddress: String { return self._s[3186]! } - public var Month_ShortJuly: String { return self._s[3187]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3188]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[3189]! } - public var Passport_Identity_ReverseSide: String { return self._s[3190]! } - public var Watch_Stickers_Recents: String { return self._s[3193]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3195]! } - public var Map_SendThisLocation: String { return self._s[3196]! } + public var Stickers_GroupStickers: String { return self._s[3187]! } + public var Appearance_ShareTheme: String { return self._s[3188]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[3190]! } + public var Passport_Address_Street: String { return self._s[3191]! } + public var Conversation_AddContact: String { return self._s[3192]! } + public var Login_PhonePlaceholder: String { return self._s[3193]! } + public var Channel_Members_InviteLink: String { return self._s[3195]! } + public var Bot_Stop: String { return self._s[3196]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3198]! } + public var Notification_PassportValueAddress: String { return self._s[3199]! } + public var Month_ShortJuly: String { return self._s[3200]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3201]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[3202]! } + public var Passport_Identity_ReverseSide: String { return self._s[3203]! } + public var Watch_Stickers_Recents: String { return self._s[3206]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3208]! } + public var Map_SendThisLocation: String { return self._s[3209]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3197]!, self._r[3197]!, [_0]) + return formatWithArgumentRanges(self._s[3210]!, self._r[3210]!, [_0]) } public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3198]!, self._r[3198]!, [_0]) + return formatWithArgumentRanges(self._s[3211]!, self._r[3211]!, [_0]) } - public var ConvertToSupergroup_Note: String { return self._s[3199]! } + public var ConvertToSupergroup_Note: String { return self._s[3212]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3200]!, self._r[3200]!, [_0]) + return formatWithArgumentRanges(self._s[3213]!, self._r[3213]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3201]! } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3214]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3202]!, self._r[3202]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3215]!, self._r[3215]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[3204]! } - public var Wallpaper_SearchShort: String { return self._s[3205]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3207]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3208]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[3209]! } + public var Login_CallRequestState3: String { return self._s[3217]! } + public var Wallpaper_SearchShort: String { return self._s[3218]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3220]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3221]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[3222]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3210]!, self._r[3210]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3223]!, self._r[3223]!, [_1, _2]) } - public var Channel_AdminLogFilter_Title: String { return self._s[3211]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[3215]! } + public var Channel_AdminLogFilter_Title: String { return self._s[3224]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3229]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3216]!, self._r[3216]!, [_0]) + return formatWithArgumentRanges(self._s[3230]!, self._r[3230]!, [_0]) } - public var Passport_CorrectErrors: String { return self._s[3217]! } - public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3218]! } + public var Passport_CorrectErrors: String { return self._s[3231]! } + public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3232]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3219]!, self._r[3219]!, [_0]) - } - public var Map_SendMyCurrentLocation: String { return self._s[3220]! } - public var Channel_DiscussionGroup: String { return self._s[3221]! } - public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3222]!, self._r[3222]!, [_1, _2]) - } - public var SharedMedia_SearchNoResults: String { return self._s[3223]! } - public var Permissions_NotificationsText_v0: String { return self._s[3224]! } - public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[3225]! } - public var Appearance_AppIcon: String { return self._s[3226]! } - public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3227]! } - public var LoginPassword_FloodError: String { return self._s[3228]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[3230]! } - public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3231]!, self._r[3231]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[3232]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3233]!, self._r[3233]!, [_0]) } - public var ChatList_Context_Pin: String { return self._s[3234]! } + public var Map_SendMyCurrentLocation: String { return self._s[3234]! } + public var Channel_DiscussionGroup: String { return self._s[3235]! } + public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3236]!, self._r[3236]!, [_1, _2]) + } + public var SharedMedia_SearchNoResults: String { return self._s[3237]! } + public var Permissions_NotificationsText_v0: String { return self._s[3238]! } + public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[3239]! } + public var Appearance_AppIcon: String { return self._s[3240]! } + public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3241]! } + public var LoginPassword_FloodError: String { return self._s[3242]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[3244]! } + public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3245]!, self._r[3245]!, [_0]) + } + public var Passport_Language_bn: String { return self._s[3246]! } + public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3247]!, self._r[3247]!, [_0]) + } + public var ChatList_Context_Pin: String { return self._s[3248]! } public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3235]!, self._r[3235]!, [_0]) + return formatWithArgumentRanges(self._s[3249]!, self._r[3249]!, [_0]) } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3236]!, self._r[3236]!, [_0]) + return formatWithArgumentRanges(self._s[3250]!, self._r[3250]!, [_0]) } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3239]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3241]! } - public var Contacts_PermissionsAllow: String { return self._s[3242]! } - public var ReportPeer_ReasonCopyright: String { return self._s[3243]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3244]! } - public var WallpaperPreview_Pattern: String { return self._s[3245]! } - public var Paint_Duplicate: String { return self._s[3246]! } - public var Passport_Address_Country: String { return self._s[3247]! } - public var Notification_RenamedChannel: String { return self._s[3249]! } - public var ChatList_Context_Unmute: String { return self._s[3250]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3251]! } - public var Group_MessagePhotoUpdated: String { return self._s[3252]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3253]! } - public var Conversation_ContextMenuBan: String { return self._s[3254]! } - public var TwoStepAuth_EmailSent: String { return self._s[3255]! } - public var MessagePoll_NoVotes: String { return self._s[3256]! } - public var Passport_Language_is: String { return self._s[3257]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3259]! } - public var Tour_Text5: String { return self._s[3260]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3253]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3255]! } + public var Contacts_PermissionsAllow: String { return self._s[3256]! } + public var ReportPeer_ReasonCopyright: String { return self._s[3257]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3258]! } + public var WallpaperPreview_Pattern: String { return self._s[3259]! } + public var Paint_Duplicate: String { return self._s[3260]! } + public var Passport_Address_Country: String { return self._s[3261]! } + public var Notification_RenamedChannel: String { return self._s[3263]! } + public var ChatList_Context_Unmute: String { return self._s[3264]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3265]! } + public var Group_MessagePhotoUpdated: String { return self._s[3266]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3267]! } + public var Conversation_ContextMenuBan: String { return self._s[3268]! } + public var TwoStepAuth_EmailSent: String { return self._s[3269]! } + public var MessagePoll_NoVotes: String { return self._s[3270]! } + public var Passport_Language_is: String { return self._s[3271]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3273]! } + public var Tour_Text5: String { return self._s[3274]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3262]!, self._r[3262]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3276]!, self._r[3276]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3263]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3264]! } + public var Undo_SecretChatDeleted: String { return self._s[3277]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3278]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3265]!, self._r[3265]!, [_0]) + return formatWithArgumentRanges(self._s[3279]!, self._r[3279]!, [_0]) } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3266]! } - public var Paint_Edit: String { return self._s[3268]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[3270]! } - public var Undo_DeletedGroup: String { return self._s[3272]! } - public var LoginPassword_ForgotPassword: String { return self._s[3273]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3274]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3280]! } + public var Paint_Edit: String { return self._s[3282]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[3284]! } + public var Undo_DeletedGroup: String { return self._s[3286]! } + public var LoginPassword_ForgotPassword: String { return self._s[3287]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3288]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3275]!, self._r[3275]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3289]!, self._r[3289]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3276]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3277]! } - public var Passport_Language_uz: String { return self._s[3278]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3279]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3280]! } - public var Map_StopLiveLocation: String { return self._s[3282]! } - public var VoiceOver_MessageContextSend: String { return self._s[3284]! } - public var PasscodeSettings_Help: String { return self._s[3285]! } - public var NotificationsSound_Input: String { return self._s[3286]! } - public var Share_Title: String { return self._s[3289]! } - public var LogoutOptions_Title: String { return self._s[3290]! } - public var Login_TermsOfServiceAgree: String { return self._s[3291]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3292]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3293]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3294]! } - public var EnterPasscode_EnterTitle: String { return self._s[3295]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3290]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3291]! } + public var Passport_Language_uz: String { return self._s[3292]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3293]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3294]! } + public var Map_StopLiveLocation: String { return self._s[3296]! } + public var VoiceOver_MessageContextSend: String { return self._s[3298]! } + public var PasscodeSettings_Help: String { return self._s[3299]! } + public var NotificationsSound_Input: String { return self._s[3300]! } + public var Share_Title: String { return self._s[3303]! } + public var LogoutOptions_Title: String { return self._s[3304]! } + public var Login_TermsOfServiceAgree: String { return self._s[3305]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3306]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3307]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3308]! } + public var EnterPasscode_EnterTitle: String { return self._s[3309]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3296]!, self._r[3296]!, [_0]) + return formatWithArgumentRanges(self._s[3310]!, self._r[3310]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3297]! } - public var Conversation_AddToContacts: String { return self._s[3298]! } + public var Settings_CopyPhoneNumber: String { return self._s[3311]! } + public var Conversation_AddToContacts: String { return self._s[3312]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3299]!, self._r[3299]!, [_0]) + return formatWithArgumentRanges(self._s[3313]!, self._r[3313]!, [_0]) } - public var NotificationsSound_Keys: String { return self._s[3300]! } + public var NotificationsSound_Keys: String { return self._s[3314]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3301]!, self._r[3301]!, [_0]) + return formatWithArgumentRanges(self._s[3315]!, self._r[3315]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3302]! } - public var Message_Video: String { return self._s[3303]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3304]! } + public var Notification_MessageLifetime1w: String { return self._s[3316]! } + public var Message_Video: String { return self._s[3317]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3318]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3305]!, self._r[3305]!, [_1]) + return formatWithArgumentRanges(self._s[3319]!, self._r[3319]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3308]!, self._r[3308]!, [_0]) + return formatWithArgumentRanges(self._s[3322]!, self._r[3322]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3309]!, self._r[3309]!, [_0]) + return formatWithArgumentRanges(self._s[3323]!, self._r[3323]!, [_0]) } - public var Passport_Language_mk: String { return self._s[3310]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3311]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3313]! } - public var PrivacyPolicy_Decline: String { return self._s[3314]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3315]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3316]! } - public var Permissions_SiriAllow_v0: String { return self._s[3318]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3319]! } + public var Passport_Language_mk: String { return self._s[3324]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3325]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3327]! } + public var PrivacyPolicy_Decline: String { return self._s[3328]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3329]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3330]! } + public var Permissions_SiriAllow_v0: String { return self._s[3332]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3333]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3320]!, self._r[3320]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3334]!, self._r[3334]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3321]!, self._r[3321]!, [_0]) + return formatWithArgumentRanges(self._s[3335]!, self._r[3335]!, [_0]) } - public var Paint_Regular: String { return self._s[3322]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3323]! } - public var SocksProxySetup_ShareLink: String { return self._s[3324]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3325]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3327]! } - public var GroupInfo_InviteByLink: String { return self._s[3328]! } - public var MessageTimer_Custom: String { return self._s[3329]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3330]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3332]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[3333]! } - public var VoiceOver_Chat_Selected: String { return self._s[3334]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3335]! } - public var Channel_Username_InvalidTaken: String { return self._s[3336]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3337]! } - public var Settings_ChatBackground: String { return self._s[3338]! } - public var Channel_Subscribers_Title: String { return self._s[3339]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3340]! } - public var Watch_ConnectionDescription: String { return self._s[3341]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3345]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3346]! } - public var EditProfile_Title: String { return self._s[3347]! } - public var NotificationsSound_Bamboo: String { return self._s[3349]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3351]! } - public var Login_SmsRequestState2: String { return self._s[3352]! } - public var Passport_Language_ar: String { return self._s[3353]! } + public var Paint_Regular: String { return self._s[3336]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3337]! } + public var SocksProxySetup_ShareLink: String { return self._s[3338]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3339]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3341]! } + public var GroupInfo_InviteByLink: String { return self._s[3342]! } + public var MessageTimer_Custom: String { return self._s[3343]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3344]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3346]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[3347]! } + public var VoiceOver_Chat_Selected: String { return self._s[3348]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3349]! } + public var Channel_Username_InvalidTaken: String { return self._s[3350]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3351]! } + public var Settings_ChatBackground: String { return self._s[3352]! } + public var Channel_Subscribers_Title: String { return self._s[3353]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3354]! } + public var Watch_ConnectionDescription: String { return self._s[3355]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3359]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3360]! } + public var EditProfile_Title: String { return self._s[3361]! } + public var NotificationsSound_Bamboo: String { return self._s[3363]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3365]! } + public var Login_SmsRequestState2: String { return self._s[3366]! } + public var Passport_Language_ar: String { return self._s[3367]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3354]!, self._r[3354]!, [_0]) - } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3355]! } - public var Conversation_MessageDialogEdit: String { return self._s[3356]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[3357]! } - public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3358]!, self._r[3358]!, [_1]) - } - public var Common_Close: String { return self._s[3359]! } - public var GroupInfo_PublicLink: String { return self._s[3360]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3361]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3362]! } - public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3366]!, self._r[3366]!, [_0]) - } - public var UserInfo_About_Placeholder: String { return self._s[3367]! } - public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3368]!, self._r[3368]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3369]! } - public var Channel_Info_Banned: String { return self._s[3371]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3369]! } + public var Conversation_MessageDialogEdit: String { return self._s[3370]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[3371]! } + public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3372]!, self._r[3372]!, [_1]) + } + public var Common_Close: String { return self._s[3373]! } + public var GroupInfo_PublicLink: String { return self._s[3374]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3375]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3376]! } + public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3380]!, self._r[3380]!, [_0]) + } + public var UserInfo_About_Placeholder: String { return self._s[3381]! } + public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3382]!, self._r[3382]!, [_0]) + } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3383]! } + public var Channel_Info_Banned: String { return self._s[3385]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3372]!, self._r[3372]!, [_0]) + return formatWithArgumentRanges(self._s[3386]!, self._r[3386]!, [_0]) } - public var Appearance_Other: String { return self._s[3373]! } - public var Passport_Language_my: String { return self._s[3374]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3375]! } + public var Appearance_Other: String { return self._s[3387]! } + public var Passport_Language_my: String { return self._s[3388]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3389]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3376]!, self._r[3376]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3390]!, self._r[3390]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3377]! } - public var Preview_CopyAddress: String { return self._s[3378]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3391]! } + public var Preview_CopyAddress: String { return self._s[3392]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3379]!, self._r[3379]!, [_0]) + return formatWithArgumentRanges(self._s[3393]!, self._r[3393]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3380]! } - public var UserInfo_BotSettings: String { return self._s[3381]! } - public var LiveLocation_MenuStopAll: String { return self._s[3383]! } - public var Passport_PasswordCreate: String { return self._s[3384]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3385]! } - public var Message_PinnedLocationMessage: String { return self._s[3386]! } - public var Map_Satellite: String { return self._s[3387]! } - public var Watch_Message_Unsupported: String { return self._s[3388]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3389]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3390]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3394]! } + public var UserInfo_BotSettings: String { return self._s[3395]! } + public var LiveLocation_MenuStopAll: String { return self._s[3397]! } + public var Passport_PasswordCreate: String { return self._s[3398]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3399]! } + public var Message_PinnedLocationMessage: String { return self._s[3400]! } + public var Map_Satellite: String { return self._s[3401]! } + public var Watch_Message_Unsupported: String { return self._s[3402]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3403]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3404]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3391]!, self._r[3391]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3405]!, self._r[3405]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3392]!, self._r[3392]!, [_0]) + return formatWithArgumentRanges(self._s[3406]!, self._r[3406]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3393]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3394]! } - public var NotificationsSound_None: String { return self._s[3395]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3397]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3398]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3407]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3408]! } + public var NotificationsSound_None: String { return self._s[3409]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3411]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3412]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3399]!, self._r[3399]!, [_1]) + return formatWithArgumentRanges(self._s[3413]!, self._r[3413]!, [_1]) } - public var Cache_Indexing: String { return self._s[3400]! } - public var DialogList_RecentTitlePeople: String { return self._s[3402]! } - public var DialogList_EncryptionRejected: String { return self._s[3403]! } - public var GroupInfo_Administrators: String { return self._s[3404]! } - public var Passport_ScanPassportHelp: String { return self._s[3405]! } - public var Application_Name: String { return self._s[3406]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3407]! } - public var Appearance_ThemeCarouselDay: String { return self._s[3409]! } - public var Passport_Identity_TranslationHelp: String { return self._s[3410]! } + public var Cache_Indexing: String { return self._s[3414]! } + public var DialogList_RecentTitlePeople: String { return self._s[3416]! } + public var DialogList_EncryptionRejected: String { return self._s[3417]! } + public var GroupInfo_Administrators: String { return self._s[3418]! } + public var Passport_ScanPassportHelp: String { return self._s[3419]! } + public var Application_Name: String { return self._s[3420]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3421]! } + public var Appearance_ThemeCarouselDay: String { return self._s[3423]! } + public var Passport_Identity_TranslationHelp: String { return self._s[3424]! } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3411]!, self._r[3411]!, [_0]) + return formatWithArgumentRanges(self._s[3425]!, self._r[3425]!, [_0]) } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3412]!, self._r[3412]!, [_0]) + return formatWithArgumentRanges(self._s[3426]!, self._r[3426]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3413]!, self._r[3413]!, [_0]) + return formatWithArgumentRanges(self._s[3427]!, self._r[3427]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3414]! } - public var Privacy_ChatsTitle: String { return self._s[3415]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[3416]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3417]! } - public var Watch_Suggestion_HoldOn: String { return self._s[3418]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3419]! } - public var Group_LinkedChannel: String { return self._s[3420]! } - public var VoiceOver_Chat_SeenByRecipient: String { return self._s[3421]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[3422]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3423]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[3424]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[3426]! } - public var Channel_Setup_TypePublic: String { return self._s[3428]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3428]! } + public var Privacy_ChatsTitle: String { return self._s[3429]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[3430]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3431]! } + public var Watch_Suggestion_HoldOn: String { return self._s[3432]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3433]! } + public var Group_LinkedChannel: String { return self._s[3434]! } + public var VoiceOver_Chat_SeenByRecipient: String { return self._s[3435]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[3436]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3437]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[3438]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[3440]! } + public var Channel_Setup_TypePublic: String { return self._s[3442]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3429]!, self._r[3429]!, [_0]) + return formatWithArgumentRanges(self._s[3443]!, self._r[3443]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[3431]! } - public var Map_OpenInMaps: String { return self._s[3433]! } + public var Channel_TypeSetup_Title: String { return self._s[3445]! } + public var Map_OpenInMaps: String { return self._s[3447]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3434]!, self._r[3434]!, [_1]) + return formatWithArgumentRanges(self._s[3448]!, self._r[3448]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[3436]! } + public var NotificationsSound_Tremolo: String { return self._s[3450]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3437]!, self._r[3437]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3451]!, self._r[3451]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3438]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3439]! } - public var Passport_PasswordHelp: String { return self._s[3440]! } - public var Login_CodeExpiredError: String { return self._s[3441]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3442]! } - public var Conversation_TitleUnmute: String { return self._s[3443]! } - public var Passport_Identity_ScansHelp: String { return self._s[3444]! } - public var Passport_Language_lo: String { return self._s[3445]! } - public var Camera_FlashAuto: String { return self._s[3446]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[3447]! } - public var Common_Cancel: String { return self._s[3448]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[3449]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3450]! } - public var Appearance_TintAllColors: String { return self._s[3451]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3452]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3453]! } + public var Passport_PasswordHelp: String { return self._s[3454]! } + public var Login_CodeExpiredError: String { return self._s[3455]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3456]! } + public var Conversation_TitleUnmute: String { return self._s[3457]! } + public var Passport_Identity_ScansHelp: String { return self._s[3458]! } + public var Passport_Language_lo: String { return self._s[3459]! } + public var Camera_FlashAuto: String { return self._s[3460]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[3461]! } + public var Common_Cancel: String { return self._s[3462]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[3463]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3464]! } + public var Appearance_TintAllColors: String { return self._s[3465]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3452]!, self._r[3452]!, [_1]) + return formatWithArgumentRanges(self._s[3466]!, self._r[3466]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[3453]! } - public var ChatSettings_Title: String { return self._s[3455]! } - public var Passport_PasswordReset: String { return self._s[3456]! } - public var SocksProxySetup_TypeNone: String { return self._s[3457]! } - public var EditTheme_Title: String { return self._s[3459]! } - public var PhoneNumberHelp_Help: String { return self._s[3460]! } - public var Checkout_EnterPassword: String { return self._s[3461]! } - public var Share_AuthTitle: String { return self._s[3463]! } - public var Activity_UploadingDocument: String { return self._s[3464]! } - public var State_Connecting: String { return self._s[3465]! } - public var Profile_MessageLifetime1w: String { return self._s[3466]! } - public var Conversation_ContextMenuReport: String { return self._s[3467]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3468]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3469]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[3467]! } + public var ChatSettings_Title: String { return self._s[3469]! } + public var Passport_PasswordReset: String { return self._s[3470]! } + public var SocksProxySetup_TypeNone: String { return self._s[3471]! } + public var EditTheme_Title: String { return self._s[3473]! } + public var PhoneNumberHelp_Help: String { return self._s[3474]! } + public var Checkout_EnterPassword: String { return self._s[3475]! } + public var Share_AuthTitle: String { return self._s[3477]! } + public var Activity_UploadingDocument: String { return self._s[3478]! } + public var State_Connecting: String { return self._s[3479]! } + public var Profile_MessageLifetime1w: String { return self._s[3480]! } + public var Conversation_ContextMenuReport: String { return self._s[3481]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3482]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3483]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3470]!, self._r[3470]!, [_0]) + return formatWithArgumentRanges(self._s[3484]!, self._r[3484]!, [_0]) } - public var AuthSessions_Terminate: String { return self._s[3471]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3472]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3473]! } - public var PhotoEditor_Set: String { return self._s[3474]! } - public var EmptyGroupInfo_Title: String { return self._s[3475]! } - public var Login_PadPhoneHelp: String { return self._s[3476]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3478]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3480]! } - public var NotificationsSound_Complete: String { return self._s[3481]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3482]! } - public var Group_Info_AdminLog: String { return self._s[3483]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3484]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3485]! } - public var Conversation_Admin: String { return self._s[3487]! } - public var Conversation_GifTooltip: String { return self._s[3488]! } - public var Passport_NotLoggedInMessage: String { return self._s[3489]! } + public var AuthSessions_Terminate: String { return self._s[3485]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3486]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3487]! } + public var PhotoEditor_Set: String { return self._s[3488]! } + public var EmptyGroupInfo_Title: String { return self._s[3489]! } + public var Login_PadPhoneHelp: String { return self._s[3490]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3493]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3495]! } + public var NotificationsSound_Complete: String { return self._s[3496]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3497]! } + public var Group_Info_AdminLog: String { return self._s[3498]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3499]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3500]! } + public var Conversation_Admin: String { return self._s[3502]! } + public var Conversation_GifTooltip: String { return self._s[3503]! } + public var Passport_NotLoggedInMessage: String { return self._s[3504]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3491]!, self._r[3491]!, [_0]) + return formatWithArgumentRanges(self._s[3506]!, self._r[3506]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[3492]! } - public var SharedMedia_EmptyTitle: String { return self._s[3494]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3496]! } - public var Username_Help: String { return self._s[3497]! } - public var DialogList_LanguageTooltip: String { return self._s[3499]! } - public var Map_LoadError: String { return self._s[3500]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3501]! } - public var Channel_AdminLog_AddMembers: String { return self._s[3502]! } - public var ArchivedChats_IntroTitle2: String { return self._s[3503]! } - public var Notification_Exceptions_NewException: String { return self._s[3504]! } - public var TwoStepAuth_EmailTitle: String { return self._s[3505]! } - public var WatchRemote_AlertText: String { return self._s[3506]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[3509]! } + public var Profile_MessageLifetimeForever: String { return self._s[3507]! } + public var SharedMedia_EmptyTitle: String { return self._s[3509]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3511]! } + public var Username_Help: String { return self._s[3512]! } + public var DialogList_LanguageTooltip: String { return self._s[3514]! } + public var Map_LoadError: String { return self._s[3515]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3516]! } + public var Channel_AdminLog_AddMembers: String { return self._s[3517]! } + public var ArchivedChats_IntroTitle2: String { return self._s[3518]! } + public var Notification_Exceptions_NewException: String { return self._s[3519]! } + public var TwoStepAuth_EmailTitle: String { return self._s[3520]! } + public var WatchRemote_AlertText: String { return self._s[3521]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[3524]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3510]!, self._r[3510]!, [_0]) - } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3511]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[3512]! } - public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3513]!, self._r[3513]!, [_0]) - } - public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3514]!, self._r[3514]!, [_1, _2, _3]) - } - public var Group_AdminLog_EmptyText: String { return self._s[3515]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3516]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[3518]! } - public var ChatList_UndoArchiveText1: String { return self._s[3519]! } - public var AccessDenied_VideoMicrophone: String { return self._s[3520]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3521]! } - public var Cache_ClearNone: String { return self._s[3522]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[3523]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[3524]! } - public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3525]!, self._r[3525]!, [_0]) } - public var Passport_Identity_Country: String { return self._s[3526]! } - public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3527]!, self._r[3527]!, [_0]) - } - public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3526]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[3527]! } + public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3528]!, self._r[3528]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[3529]! } - public var AccessDenied_Settings: String { return self._s[3530]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3531]! } - public var Month_ShortMay: String { return self._s[3532]! } - public var Compose_NewGroup: String { return self._s[3534]! } - public var Group_Setup_TypePrivate: String { return self._s[3536]! } - public var Login_PadPhoneHelpTitle: String { return self._s[3538]! } - public var Appearance_ThemeDayClassic: String { return self._s[3539]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3540]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[3541]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3542]! } - public var Conversation_typing: String { return self._s[3544]! } - public var Undo_ScheduledMessagesCleared: String { return self._s[3545]! } - public var Paint_Masks: String { return self._s[3546]! } - public var Contacts_DeselectAll: String { return self._s[3547]! } - public var Username_InvalidTaken: String { return self._s[3548]! } - public var Call_StatusNoAnswer: String { return self._s[3549]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[3550]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3551]! } - public var Passport_Identity_Selfie: String { return self._s[3552]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[3553]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3554]! } - public var Conversation_ClearSecretHistory: String { return self._s[3555]! } - public var PeopleNearby_Description: String { return self._s[3557]! } - public var NetworkUsageSettings_Title: String { return self._s[3558]! } - public var Your_cards_security_code_is_invalid: String { return self._s[3560]! } + public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3529]!, self._r[3529]!, [_1, _2, _3]) + } + public var Group_AdminLog_EmptyText: String { return self._s[3530]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3531]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[3533]! } + public var ChatList_UndoArchiveText1: String { return self._s[3534]! } + public var AccessDenied_VideoMicrophone: String { return self._s[3535]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3536]! } + public var Cache_ClearNone: String { return self._s[3537]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[3538]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[3539]! } + public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3540]!, self._r[3540]!, [_0]) + } + public var Passport_Identity_Country: String { return self._s[3541]! } + public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3542]!, self._r[3542]!, [_0]) + } + public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3543]!, self._r[3543]!, [_0]) + } + public var Exceptions_AddToExceptions: String { return self._s[3544]! } + public var AccessDenied_Settings: String { return self._s[3545]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3546]! } + public var Month_ShortMay: String { return self._s[3547]! } + public var Compose_NewGroup: String { return self._s[3549]! } + public var Group_Setup_TypePrivate: String { return self._s[3551]! } + public var Login_PadPhoneHelpTitle: String { return self._s[3553]! } + public var Appearance_ThemeDayClassic: String { return self._s[3554]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3555]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[3556]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3557]! } + public var Conversation_typing: String { return self._s[3559]! } + public var Undo_ScheduledMessagesCleared: String { return self._s[3560]! } + public var Paint_Masks: String { return self._s[3561]! } + public var Contacts_DeselectAll: String { return self._s[3562]! } + public var Username_InvalidTaken: String { return self._s[3563]! } + public var Call_StatusNoAnswer: String { return self._s[3564]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[3565]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3566]! } + public var Passport_Identity_Selfie: String { return self._s[3567]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[3568]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3569]! } + public var Conversation_ClearSecretHistory: String { return self._s[3570]! } + public var PeopleNearby_Description: String { return self._s[3572]! } + public var NetworkUsageSettings_Title: String { return self._s[3573]! } + public var Your_cards_security_code_is_invalid: String { return self._s[3575]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3562]!, self._r[3562]!, [_0]) + return formatWithArgumentRanges(self._s[3577]!, self._r[3577]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3563]!, self._r[3563]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3578]!, self._r[3578]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[3565]! } - public var VoiceOver_Navigation_Search: String { return self._s[3566]! } - public var Map_LiveLocationTitle: String { return self._s[3567]! } - public var Login_InfoAvatarAdd: String { return self._s[3568]! } - public var Passport_Identity_FilesView: String { return self._s[3569]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3570]! } - public var Privacy_Calls_NeverAllow: String { return self._s[3571]! } - public var VoiceOver_Chat_File: String { return self._s[3572]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[3580]! } + public var VoiceOver_Navigation_Search: String { return self._s[3581]! } + public var Map_LiveLocationTitle: String { return self._s[3582]! } + public var Login_InfoAvatarAdd: String { return self._s[3583]! } + public var Passport_Identity_FilesView: String { return self._s[3584]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3585]! } + public var Privacy_Calls_NeverAllow: String { return self._s[3586]! } + public var VoiceOver_Chat_File: String { return self._s[3587]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3573]!, self._r[3573]!, [_0]) + return formatWithArgumentRanges(self._s[3588]!, self._r[3588]!, [_0]) } - public var ContactInfo_PhoneNumberHidden: String { return self._s[3574]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[3575]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3576]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[3589]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[3590]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3591]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3577]!, self._r[3577]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3592]!, self._r[3592]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3578]! } - public var Tour_Title2: String { return self._s[3579]! } - public var Conversation_FileOpenIn: String { return self._s[3580]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3581]! } - public var Wallpaper_Set: String { return self._s[3582]! } - public var Passport_Identity_Translations: String { return self._s[3584]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3593]! } + public var Tour_Title2: String { return self._s[3594]! } + public var Conversation_FileOpenIn: String { return self._s[3595]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3596]! } + public var Wallpaper_Set: String { return self._s[3597]! } + public var Passport_Identity_Translations: String { return self._s[3599]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3585]!, self._r[3585]!, [_0]) + return formatWithArgumentRanges(self._s[3600]!, self._r[3600]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[3586]! } + public var Channel_LeaveChannel: String { return self._s[3601]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3587]!, self._r[3587]!, [_1]) + return formatWithArgumentRanges(self._s[3602]!, self._r[3602]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3589]! } - public var PhotoEditor_HighlightsTint: String { return self._s[3590]! } - public var Passport_Email_Delete: String { return self._s[3591]! } - public var Conversation_Mute: String { return self._s[3593]! } - public var Channel_AddBotAsAdmin: String { return self._s[3594]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3596]! } - public var Channel_Management_LabelOwner: String { return self._s[3598]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3604]! } + public var PhotoEditor_HighlightsTint: String { return self._s[3605]! } + public var Passport_Email_Delete: String { return self._s[3606]! } + public var Conversation_Mute: String { return self._s[3608]! } + public var Channel_AddBotAsAdmin: String { return self._s[3609]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3611]! } + public var Channel_Management_LabelOwner: String { return self._s[3613]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3599]!, self._r[3599]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3614]!, self._r[3614]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[3600]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[3601]! } - public var Common_No: String { return self._s[3602]! } - public var Weekday_Sunday: String { return self._s[3603]! } - public var Notification_Reply: String { return self._s[3604]! } - public var Conversation_ViewMessage: String { return self._s[3605]! } + public var Calls_CallTabDescription: String { return self._s[3615]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[3616]! } + public var Common_No: String { return self._s[3617]! } + public var Weekday_Sunday: String { return self._s[3618]! } + public var Notification_Reply: String { return self._s[3619]! } + public var Conversation_ViewMessage: String { return self._s[3620]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3606]!, self._r[3606]!, [_0]) + return formatWithArgumentRanges(self._s[3621]!, self._r[3621]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3607]!, self._r[3607]!, [_0]) + return formatWithArgumentRanges(self._s[3622]!, self._r[3622]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3608]! } - public var Message_PinnedDocumentMessage: String { return self._s[3609]! } - public var DialogList_TabTitle: String { return self._s[3611]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[3612]! } - public var Passport_FieldEmail: String { return self._s[3613]! } - public var Conversation_UnpinMessageAlert: String { return self._s[3614]! } - public var Passport_Address_TypeBankStatement: String { return self._s[3615]! } - public var Passport_Identity_ExpiryDate: String { return self._s[3616]! } - public var Privacy_Calls_P2P: String { return self._s[3617]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3623]! } + public var Message_PinnedDocumentMessage: String { return self._s[3624]! } + public var DialogList_TabTitle: String { return self._s[3626]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[3627]! } + public var Passport_FieldEmail: String { return self._s[3628]! } + public var Conversation_UnpinMessageAlert: String { return self._s[3629]! } + public var Passport_Address_TypeBankStatement: String { return self._s[3630]! } + public var Passport_Identity_ExpiryDate: String { return self._s[3631]! } + public var Privacy_Calls_P2P: String { return self._s[3632]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3619]!, self._r[3619]!, [_0]) + return formatWithArgumentRanges(self._s[3634]!, self._r[3634]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[3620]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[3635]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3621]!, self._r[3621]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3636]!, self._r[3636]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[3622]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3623]! } - public var Passport_InfoText: String { return self._s[3624]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3625]! } + public var Stickers_ClearRecent: String { return self._s[3637]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3638]! } + public var Passport_InfoText: String { return self._s[3639]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3640]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3626]!, self._r[3626]!, [_0]) + return formatWithArgumentRanges(self._s[3641]!, self._r[3641]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3627]!, self._r[3627]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3642]!, self._r[3642]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3628]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[3629]! } - public var VoiceOver_Navigation_Compose: String { return self._s[3630]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[3631]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[3633]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3634]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3643]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[3644]! } + public var VoiceOver_Navigation_Compose: String { return self._s[3645]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[3646]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[3648]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3649]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3635]!, self._r[3635]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3650]!, self._r[3650]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3637]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3652]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3639]!, self._r[3639]!, [_0]) + return formatWithArgumentRanges(self._s[3654]!, self._r[3654]!, [_0]) } - public var DialogList_Unread: String { return self._s[3640]! } + public var DialogList_Unread: String { return self._s[3655]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3641]!, self._r[3641]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3656]!, self._r[3656]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[3642]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3643]! } + public func Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3657]!, self._r[3657]!, [_0]) + } + public var User_DeletedAccount: String { return self._s[3658]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3659]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3644]!, self._r[3644]!, [_0]) + return formatWithArgumentRanges(self._s[3660]!, self._r[3660]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[3645]! } - public var SharedMedia_CategoryMedia: String { return self._s[3646]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3647]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3648]! } - public var Watch_ChatList_Compose: String { return self._s[3649]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3650]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3651]! } - public var Watch_Microphone_Access: String { return self._s[3652]! } - public var Group_Setup_HistoryHeader: String { return self._s[3653]! } - public var Map_SetThisLocation: String { return self._s[3654]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3655]! } - public var Activity_UploadingPhoto: String { return self._s[3656]! } - public var Conversation_Edit: String { return self._s[3658]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3659]! } - public var Login_TermsOfServiceDecline: String { return self._s[3660]! } - public var Message_PinnedContactMessage: String { return self._s[3661]! } + public var UserInfo_NotificationsDefault: String { return self._s[3661]! } + public var SharedMedia_CategoryMedia: String { return self._s[3662]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3663]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3664]! } + public var Watch_ChatList_Compose: String { return self._s[3665]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3666]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3667]! } + public var Watch_Microphone_Access: String { return self._s[3668]! } + public var Group_Setup_HistoryHeader: String { return self._s[3669]! } + public var Map_SetThisLocation: String { return self._s[3670]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3671]! } + public var Activity_UploadingPhoto: String { return self._s[3672]! } + public var Conversation_Edit: String { return self._s[3674]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3675]! } + public var Login_TermsOfServiceDecline: String { return self._s[3676]! } + public var Message_PinnedContactMessage: String { return self._s[3677]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3662]!, self._r[3662]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3678]!, self._r[3678]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3663]!, self._r[3663]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3679]!, self._r[3679]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[3664]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3666]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[3667]! } + public var Appearance_LargeEmoji: String { return self._s[3680]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3682]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[3683]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3668]!, self._r[3668]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3684]!, self._r[3684]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3669]! } - public var Message_PinnedPhotoMessage: String { return self._s[3670]! } - public var Passport_FieldPhone: String { return self._s[3671]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3672]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[3673]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3675]! } - public var Conversation_Call: String { return self._s[3676]! } - public var Common_TakePhoto: String { return self._s[3678]! } - public var Group_EditAdmin_RankTitle: String { return self._s[3679]! } - public var Channel_NotificationLoading: String { return self._s[3680]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3685]! } + public var Message_PinnedPhotoMessage: String { return self._s[3686]! } + public var Passport_FieldPhone: String { return self._s[3687]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3688]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[3689]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3691]! } + public var Conversation_Call: String { return self._s[3692]! } + public var Common_TakePhoto: String { return self._s[3694]! } + public var Group_EditAdmin_RankTitle: String { return self._s[3695]! } + public var Channel_NotificationLoading: String { return self._s[3696]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3681]!, self._r[3681]!, [_0]) + return formatWithArgumentRanges(self._s[3697]!, self._r[3697]!, [_0]) } public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3682]!, self._r[3682]!, [_0]) + return formatWithArgumentRanges(self._s[3698]!, self._r[3698]!, [_0]) } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3683]!, self._r[3683]!, [_1]) + return formatWithArgumentRanges(self._s[3699]!, self._r[3699]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[3684]! } + public var Permissions_SiriTitle_v0: String { return self._s[3700]! } public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3685]!, self._r[3685]!, [_0]) + return formatWithArgumentRanges(self._s[3701]!, self._r[3701]!, [_0]) } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3686]!, self._r[3686]!, [_0]) + return formatWithArgumentRanges(self._s[3702]!, self._r[3702]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3687]! } - public var Common_edit: String { return self._s[3688]! } - public var PrivacySettings_AuthSessions: String { return self._s[3689]! } - public var Month_ShortJune: String { return self._s[3690]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3691]! } - public var Call_ReportSend: String { return self._s[3692]! } - public var Watch_LastSeen_JustNow: String { return self._s[3693]! } - public var Notifications_MessageNotifications: String { return self._s[3694]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3695]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3697]! } - public var Group_Status: String { return self._s[3698]! } + public var Channel_MessagePhotoRemoved: String { return self._s[3703]! } + public var Common_edit: String { return self._s[3704]! } + public var PrivacySettings_AuthSessions: String { return self._s[3705]! } + public var Month_ShortJune: String { return self._s[3706]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3707]! } + public var Call_ReportSend: String { return self._s[3708]! } + public var Watch_LastSeen_JustNow: String { return self._s[3709]! } + public var Notifications_MessageNotifications: String { return self._s[3710]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3711]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3713]! } + public var Group_Status: String { return self._s[3714]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3699]!, self._r[3699]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3715]!, self._r[3715]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[3700]! } - public var ShareMenu_ShareTo: String { return self._s[3701]! } - public var Conversation_Moderate_Ban: String { return self._s[3702]! } + public var TextFormat_AddLinkTitle: String { return self._s[3716]! } + public var ShareMenu_ShareTo: String { return self._s[3717]! } + public var Conversation_Moderate_Ban: String { return self._s[3718]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3703]!, self._r[3703]!, [_0]) + return formatWithArgumentRanges(self._s[3719]!, self._r[3719]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[3704]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3705]! } + public var SharedMedia_ViewInChat: String { return self._s[3720]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3721]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3706]!, self._r[3706]!, [_1]) + return formatWithArgumentRanges(self._s[3722]!, self._r[3722]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3707]!, self._r[3707]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3723]!, self._r[3723]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3709]!, self._r[3709]!, [_0]) + return formatWithArgumentRanges(self._s[3725]!, self._r[3725]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[3710]! } - public var Appearance_ReduceMotion: String { return self._s[3711]! } + public var Map_OpenInHereMaps: String { return self._s[3726]! } + public var Appearance_ReduceMotion: String { return self._s[3727]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3712]!, self._r[3712]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3728]!, self._r[3728]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[3713]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3714]! } - public var PhotoEditor_Skip: String { return self._s[3715]! } - public func MessageTimer_Months(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[3729]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3730]! } + public var PhotoEditor_Skip: String { return self._s[3731]! } + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_ShortSeconds(_ value: Int32) -> String { + public func Watch_UserInfo_Mute(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedLocations(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, _1, _2) } public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func Theme_UsersCount(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } public func Map_ETAHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Updated_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) } public func InviteText_ContactsCountText(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, _1, _2) } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) } public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedAudios(_ value: Int32) -> String { + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) } public func QuickSend_Photos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, _0, _1) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Updated_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) } public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { diff --git a/submodules/TelegramUI/TelegramUI/AppDelegate.swift b/submodules/TelegramUI/TelegramUI/AppDelegate.swift index 813cbf4f50..dd35f09035 100644 --- a/submodules/TelegramUI/TelegramUI/AppDelegate.swift +++ b/submodules/TelegramUI/TelegramUI/AppDelegate.swift @@ -650,7 +650,9 @@ final class SharedApplicationContext { let tonKeychain: TonKeychain #if targetEnvironment(simulator) - tonKeychain = TonKeychain(encrypt: { data in + tonKeychain = TonKeychain(encryptionPublicKey: { + return .single(Data()) + }, encrypt: { data in return Signal { subscriber in subscriber.putNext(data) subscriber.putCompletion() @@ -664,18 +666,34 @@ final class SharedApplicationContext { } }) #else - tonKeychain = TonKeychain(encrypt: { data in + tonKeychain = TonKeychain(encryptionPublicKey: { return Signal { subscriber in - BuildConfig.encryptApplicationSecret(data, baseAppBundleId: baseAppBundleId, completion: { result in - subscriber.putNext(result) + BuildConfig.getHardwareEncryptionAvailable(withBaseAppBundleId: baseAppBundleId, completion: { value in + subscriber.putNext(value) subscriber.putCompletion() }) return EmptyDisposable } - }, decrypt: { data in + }, encrypt: { data in return Signal { subscriber in - BuildConfig.decryptApplicationSecret(data, baseAppBundleId: baseAppBundleId, completion: { result in - subscriber.putNext(result) + BuildConfig.encryptApplicationSecret(data, baseAppBundleId: baseAppBundleId, completion: { result, publicKey in + if let result = result, let publicKey = publicKey { + subscriber.putNext(TonKeychainEncryptedData(publicKey: publicKey, data: result)) + subscriber.putCompletion() + } else { + subscriber.putError(.generic) + } + }) + return EmptyDisposable + } + }, decrypt: { encryptedData in + return Signal { subscriber in + BuildConfig.decryptApplicationSecret(encryptedData.data, publicKey: encryptedData.publicKey, baseAppBundleId: baseAppBundleId, completion: { result in + if let result = result { + subscriber.putNext(result) + } else { + subscriber.putError(.generic) + } subscriber.putCompletion() }) return EmptyDisposable @@ -1319,14 +1337,6 @@ final class SharedApplicationContext { self.isInForegroundPromise.set(true) self.isActiveValue = true self.isActivePromise.set(true) - - let configuration = URLSessionConfiguration.background(withIdentifier: "org.telegram.Telegram-iOS.background") - let session = URLSession(configuration: configuration) - if #available(iOS 9.0, *) { - session.getAllTasks(completionHandler: { tasks in - print(tasks) - }) - } } func applicationWillTerminate(_ application: UIApplication) { diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift index eba3d7c3b8..182365e79a 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceSplashController.swift @@ -22,6 +22,8 @@ final class AuthorizationSequenceSplashController: ViewController { private let controller: RMIntroViewController + private var validLayout: ContainerViewLayout? + var nextPressed: ((PresentationStrings?) -> Void)? private let suggestedLocalization = Promise() @@ -102,7 +104,9 @@ final class AuthorizationSequenceSplashController: ViewController { private func addControllerIfNeeded() { if !controller.isViewLoaded || controller.view.superview == nil { self.displayNode.view.addSubview(controller.view) - controller.view.frame = self.displayNode.bounds; + if let layout = self.validLayout { + controller.view.frame = CGRect(origin: CGPoint(), size: layout.size) + } controller.viewDidAppear(false) } } @@ -134,14 +138,18 @@ final class AuthorizationSequenceSplashController: ViewController { override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) + self.validLayout = layout + let controllerFrame = CGRect(origin: CGPoint(), size: layout.size) + self.controller.defaultFrame = controllerFrame + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: 0.0, transition: transition) self.addControllerIfNeeded() if case .immediate = transition { - self.controller.view.frame = CGRect(origin: CGPoint(), size: layout.size) + self.controller.view.frame = controllerFrame } else { UIView.animate(withDuration: 0.3, animations: { - self.controller.view.frame = CGRect(origin: CGPoint(), size: layout.size) + self.controller.view.frame = controllerFrame }) } } diff --git a/submodules/TelegramUI/TelegramUI/ChatHistoryViewForLocation.swift b/submodules/TelegramUI/TelegramUI/ChatHistoryViewForLocation.swift index 309c646095..dd2d20405c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatHistoryViewForLocation.swift +++ b/submodules/TelegramUI/TelegramUI/ChatHistoryViewForLocation.swift @@ -8,7 +8,7 @@ import AccountContext func preloadedChatHistoryViewForLocation(_ location: ChatHistoryLocationInput, account: Account, chatLocation: ChatLocation, fixedCombinedReadStates: MessageHistoryViewReadState?, tagMask: MessageTags?, additionalData: [AdditionalMessageHistoryViewData], orderStatistics: MessageHistoryViewOrderStatistics = []) -> Signal { return chatHistoryViewForLocation(location, account: account, chatLocation: chatLocation, scheduled: false, fixedCombinedReadStates: fixedCombinedReadStates, tagMask: tagMask, additionalData: additionalData, orderStatistics: orderStatistics) - |> introduceError(Bool.self) + |> castError(Bool.self) |> mapToSignal { update -> Signal in switch update { case let .Loading(value): diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift index c440b7c5ca..6602662c2a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift +++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceStateContextQueries.swift @@ -79,7 +79,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee let stickerSettings: StickerSettings = (transaction.getSharedData(ApplicationSpecificSharedDataKeys.stickerSettings) as? StickerSettings) ?? .defaultSettings return stickerSettings } - |> introduceError(ChatContextQueryError.self) + |> castError(ChatContextQueryError.self) |> mapToSignal { stickerSettings -> Signal<[FoundStickerItem], ChatContextQueryError> in let scope: SearchStickersScope switch stickerSettings.emojiStickerSuggestionMode { @@ -91,7 +91,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee scope = [.installed] } return searchStickers(account: context.account, query: query.basicEmoji.0, scope: scope) - |> introduceError(ChatContextQueryError.self) + |> castError(ChatContextQueryError.self) } |> map { stickers -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in return { _ in @@ -123,7 +123,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee } return { _ in return .hashtags(result) } } - |> introduceError(ChatContextQueryError.self) + |> castError(ChatContextQueryError.self) return signal |> then(hashtags) case let .mention(query, types): @@ -178,7 +178,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee } return { _ in return .mentions(sortedPeers) } } - |> introduceError(ChatContextQueryError.self) + |> castError(ChatContextQueryError.self) return signal |> then(participants) case let .command(query): @@ -207,7 +207,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee let sortedCommands = filteredCommands return { _ in return .commands(sortedCommands) } } - |> introduceError(ChatContextQueryError.self) + |> castError(ChatContextQueryError.self) return signal |> then(commands) case let .contextRequest(addressName, query): var delayRequest = true @@ -239,7 +239,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee return .single(nil) } } - |> introduceError(ChatContextQueryError.self) + |> castError(ChatContextQueryError.self) |> mapToSignal { peer -> Signal<(ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult?, ChatContextQueryError> in if let user = peer as? TelegramUser, let botInfo = user.botInfo, let _ = botInfo.inlinePlaceholder { let contextResults = requestChatContextResults(account: context.account, botId: user.id, peerId: chatPeer.id, query: query, offset: "") @@ -307,7 +307,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee |> map { result -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in return { _ in return .emojis(result, range) } } - |> introduceError(ChatContextQueryError.self) + |> castError(ChatContextQueryError.self) } } diff --git a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift index 76f02f88e9..2efc375f38 100644 --- a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift @@ -378,7 +378,7 @@ public func createGroupControllerImpl(context: AccountContext, peerIds: [PeerId] } createSignal = addressPromise.get() - |> introduceError(CreateGroupError.self) + |> castError(CreateGroupError.self) |> mapToSignal { address -> Signal in guard let address = address else { return .complete() diff --git a/submodules/TelegramUI/TelegramUI/EmojiResources.swift b/submodules/TelegramUI/TelegramUI/EmojiResources.swift index a9b3805f57..a33de50839 100644 --- a/submodules/TelegramUI/TelegramUI/EmojiResources.swift +++ b/submodules/TelegramUI/TelegramUI/EmojiResources.swift @@ -291,7 +291,7 @@ func fetchEmojiSpriteResource(postbox: Postbox, network: Network, resource: Emoj let packName = "P\(resource.packId)_by_AEStickerBot" return loadedStickerPack(postbox: postbox, network: network, reference: .name(packName), forceActualized: false) - |> introduceError(MediaResourceDataFetchError.self) + |> castError(MediaResourceDataFetchError.self) |> mapToSignal { result -> Signal in switch result { case let .result(_, items, _): diff --git a/submodules/TelegramUI/TelegramUI/FetchManager.swift b/submodules/TelegramUI/TelegramUI/FetchManager.swift index 03905bad2c..17c80f8b0e 100644 --- a/submodules/TelegramUI/TelegramUI/FetchManager.swift +++ b/submodules/TelegramUI/TelegramUI/FetchManager.swift @@ -218,7 +218,7 @@ private final class FetchManagerCategoryContext { |> mapToSignal { type -> Signal in if let storeManager = storeManager, let mediaReference = entry.mediaReference, case .remote = type, let peerType = entry.storeToDownloadsPeerType { return storeDownloadedMedia(storeManager: storeManager, media: mediaReference, peerType: peerType) - |> introduceError(FetchResourceError.self) + |> castError(FetchResourceError.self) |> mapToSignal { _ -> Signal in return .complete() } @@ -347,7 +347,7 @@ private final class FetchManagerCategoryContext { activeContext.disposable?.dispose() if isVideoPreload { activeContext.disposable = (preloadVideoResource(postbox: self.postbox, resourceReference: entry.resourceReference, duration: 4.0) - |> introduceError(FetchResourceError.self) + |> castError(FetchResourceError.self) |> map { _ -> FetchResourceSourceType in return .local } |> then(.single(.local)) |> deliverOnMainQueue).start(next: { _ in @@ -359,7 +359,7 @@ private final class FetchManagerCategoryContext { |> mapToSignal { type -> Signal in if let storeManager = storeManager, let mediaReference = entry.mediaReference, case .remote = type, let peerType = entry.storeToDownloadsPeerType { return storeDownloadedMedia(storeManager: storeManager, media: mediaReference, peerType: peerType) - |> introduceError(FetchResourceError.self) + |> castError(FetchResourceError.self) |> mapToSignal { _ -> Signal in return .complete() } diff --git a/submodules/TelegramUI/TelegramUI/FetchVideoMediaResource.swift b/submodules/TelegramUI/TelegramUI/FetchVideoMediaResource.swift index 7f12ab1f79..b68e828e8b 100644 --- a/submodules/TelegramUI/TelegramUI/FetchVideoMediaResource.swift +++ b/submodules/TelegramUI/TelegramUI/FetchVideoMediaResource.swift @@ -224,7 +224,7 @@ public func fetchVideoLibraryMediaResource(postbox: Postbox, resource: VideoLibr |> map { view in return view.values[PreferencesKeys.appConfiguration] as? AppConfiguration ?? .defaultValue } - |> introduceError(MediaResourceDataFetchError.self) + |> castError(MediaResourceDataFetchError.self) |> mapToSignal { appConfiguration -> Signal in let config = VideoConversionConfiguration.with(appConfiguration: appConfiguration) let signal = Signal { subscriber in @@ -343,7 +343,7 @@ func fetchLocalFileVideoMediaResource(postbox: Postbox, resource: LocalFileVideo |> map { view in return view.values[PreferencesKeys.appConfiguration] as? AppConfiguration ?? .defaultValue } - |> introduceError(MediaResourceDataFetchError.self) + |> castError(MediaResourceDataFetchError.self) |> mapToSignal { appConfiguration -> Signal in let config = VideoConversionConfiguration.with(appConfiguration: appConfiguration) let signal = Signal { subscriber in diff --git a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping index 5c63521b8c8f1e6470564e9484e91210e7c4e509..7940e3e8347669d92f9345327f7c768e80afdcf9 100644 GIT binary patch delta 35990 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 = internalContext.sharedContext.accountManager.transaction { transaction -> (SharedAccountContextImpl, LoggingSettings) in return (internalContext.sharedContext, transaction.getSharedData(SharedDataKeys.loggingSettings) as? LoggingSettings ?? LoggingSettings.defaultSettings) } - |> introduceError(ShareAuthorizationError.self) + |> castError(ShareAuthorizationError.self) |> mapToSignal { sharedContext, loggingSettings -> Signal<(SharedAccountContextImpl, Account, [AccountWithInfo]), ShareAuthorizationError> in Logger.shared.logToFile = loggingSettings.logToFile Logger.shared.logToConsole = loggingSettings.logToConsole @@ -187,7 +187,7 @@ public class ShareRootControllerImpl { Logger.shared.redactSensitiveData = loggingSettings.redactSensitiveData return sharedContext.activeAccountsWithInfo - |> introduceError(ShareAuthorizationError.self) + |> castError(ShareAuthorizationError.self) |> take(1) |> mapToSignal { primary, accounts -> Signal<(SharedAccountContextImpl, Account, [AccountWithInfo]), ShareAuthorizationError> in guard let primary = primary else { @@ -209,7 +209,7 @@ public class ShareRootControllerImpl { return combineLatest(sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.presentationPasscodeSettings]), limitsConfiguration, sharedContext.accountManager.accessChallengeData()) |> take(1) |> deliverOnMainQueue - |> introduceError(ShareAuthorizationError.self) + |> castError(ShareAuthorizationError.self) |> map { sharedData, limitsConfiguration, data -> (AccountContext, PostboxAccessChallengeData, [AccountWithInfo]) in updateLegacyLocalization(strings: sharedContext.currentPresentationData.with({ $0 }).strings) let context = AccountContextImpl(sharedContext: sharedContext, account: account, tonContext: nil, limitsConfiguration: limitsConfiguration) diff --git a/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift b/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift index bc2aa6f543..f2e4a3003c 100644 --- a/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift +++ b/submodules/TelegramUI/TelegramUI/TimeBasedVideoPreload.swift @@ -24,7 +24,7 @@ func preloadVideoResource(postbox: Postbox, resourceReference: MediaResourceRefe if let videoBuffer = result?.buffers.videoBuffer, let impl = source.syncWith({ $0 }) { return impl.ensureHasFrames(until: min(duration, videoBuffer.duration.seconds)) |> ignoreValues - |> introduceError(MediaFrameSourceSeekError.self) + |> castError(MediaFrameSourceSeekError.self) } else { return .complete() } diff --git a/submodules/WalletUI/Sources/WalletInfoEmptyNode.swift b/submodules/WalletUI/Sources/WalletInfoEmptyNode.swift index d13f787ff7..e4411116b0 100644 --- a/submodules/WalletUI/Sources/WalletInfoEmptyNode.swift +++ b/submodules/WalletUI/Sources/WalletInfoEmptyNode.swift @@ -119,7 +119,9 @@ final class WalletInfoEmptyItemNode: ListViewItemNode { let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: text, font: Font.regular(16.0), textColor: item.theme.list.itemPrimaryTextColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - sideInset * 2.0, height: .greatestFiniteMagnitude), alignment: .center, lineSpacing: 0.1, cutout: nil, insets: UIEdgeInsets())) - let (addressLayout, addressApply) = makeAddressLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.address, font: Font.monospace(16.0), textColor: item.theme.list.itemPrimaryTextColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - sideInset * 2.0, height: .greatestFiniteMagnitude), alignment: .center, lineSpacing: 0.1, cutout: nil, insets: UIEdgeInsets())) + var addressString = item.address + addressString.insert("\n", at: addressString.index(addressString.startIndex, offsetBy: addressString.count / 2)) + let (addressLayout, addressApply) = makeAddressLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: addressString, font: Font.monospace(16.0), textColor: item.theme.list.itemPrimaryTextColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - sideInset * 2.0, height: .greatestFiniteMagnitude), alignment: .center, lineSpacing: 0.1, cutout: nil, insets: UIEdgeInsets())) let contentVerticalOrigin: CGFloat = 32.0 diff --git a/submodules/WalletUI/Sources/WalletInfoScreen.swift b/submodules/WalletUI/Sources/WalletInfoScreen.swift index da9dab6d27..47d750de9c 100644 --- a/submodules/WalletUI/Sources/WalletInfoScreen.swift +++ b/submodules/WalletUI/Sources/WalletInfoScreen.swift @@ -11,6 +11,59 @@ import SolidRoundedButtonNode import AnimationUI import SwiftSignalKit import MergeLists +import TelegramStringFormatting + +private func stringForRelativeUpdateTime(strings: PresentationStrings, day: RelativeTimestampFormatDay, dateTimeFormat: PresentationDateTimeFormat, hours: Int32, minutes: Int32) -> String { + let dayString: String + switch day { + case .today: + dayString = strings.Updated_TodayAt(stringForShortTimestamp(hours: hours, minutes: minutes, dateTimeFormat: dateTimeFormat)).0 + case .yesterday: + dayString = strings.Updated_YesterdayAt(stringForShortTimestamp(hours: hours, minutes: minutes, dateTimeFormat: dateTimeFormat)).0 + } + return dayString +} + +private func lastUpdateTimestampString(strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, statusTimestamp: Int32, relativeTo timestamp: Int32) -> String { + let difference = timestamp - statusTimestamp + let expanded = true + if difference < 60 { + return strings.Updated_JustNow + } else if difference < 60 * 60 && !expanded { + let minutes = difference / 60 + return strings.Updated_MinutesAgo(minutes) + } else { + var t: time_t = time_t(statusTimestamp) + var timeinfo: tm = tm() + localtime_r(&t, &timeinfo) + + var now: time_t = time_t(timestamp) + var timeinfoNow: tm = tm() + localtime_r(&now, &timeinfoNow) + + if timeinfo.tm_year != timeinfoNow.tm_year { + return strings.Updated_AtDate(stringForTimestamp(day: timeinfo.tm_mday, month: timeinfo.tm_mon + 1, year: timeinfo.tm_year, dateTimeFormat: dateTimeFormat)).0 + } + + let dayDifference = timeinfo.tm_yday - timeinfoNow.tm_yday + if dayDifference == 0 || dayDifference == -1 { + let day: RelativeTimestampFormatDay + if dayDifference == 0 { + if expanded { + day = .today + } else { + let minutes = difference / (60 * 60) + return strings.Updated_HoursAgo(minutes) + } + } else { + day = .yesterday + } + return stringForRelativeUpdateTime(strings: strings, day: day, dateTimeFormat: dateTimeFormat, hours: timeinfo.tm_hour, minutes: timeinfo.tm_min) + } else { + return strings.Updated_AtDate(stringForTimestamp(day: timeinfo.tm_mday, month: timeinfo.tm_mon + 1, year: timeinfo.tm_year, dateTimeFormat: dateTimeFormat)).0 + } + } +} public final class WalletInfoScreen: ViewController { private let context: AccountContext @@ -20,6 +73,11 @@ public final class WalletInfoScreen: ViewController { private var presentationData: PresentationData + private let _ready = Promise() + override public var ready: Promise { + return self._ready + } + public init(context: AccountContext, tonContext: TonContext, walletInfo: WalletInfo, address: String) { self.context = context self.tonContext = tonContext @@ -77,6 +135,8 @@ public final class WalletInfoScreen: ViewController { }) self.displayNodeDidLoad() + + self._ready.set((self.displayNode as! WalletInfoScreenNode).contentReady.get()) } override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { @@ -126,11 +186,7 @@ private final class WalletInfoBalanceNode: ASDisplayNode { let balanceTextFrame = CGRect(origin: balanceOrigin, size: balanceTextSize) let balanceIconFrame: CGRect - if self.isLoading { - balanceIconFrame = CGRect(origin: CGPoint(x: floor((width - balanceIconSize.width) / 2.0), y: balanceTextFrame.minY + floor((balanceTextFrame.height - balanceIconSize.height) / 2.0)), size: balanceIconSize) - } else { - balanceIconFrame = CGRect(origin: CGPoint(x: balanceTextFrame.maxX + balanceIconSpacing, y: balanceTextFrame.minY + floor((balanceTextFrame.height - balanceIconSize.height) / 2.0)), size: balanceIconSize) - } + balanceIconFrame = CGRect(origin: CGPoint(x: balanceTextFrame.maxX + balanceIconSpacing, y: balanceTextFrame.minY + floor((balanceTextFrame.height - balanceIconSize.height) / 2.0)), size: balanceIconSize) transition.updateFrameAdditive(node: self.balanceTextNode, frame: balanceTextFrame) transition.updateFrame(node: self.balanceIconNode, frame: balanceIconFrame) @@ -140,20 +196,33 @@ private final class WalletInfoBalanceNode: ASDisplayNode { private final class WalletInfoHeaderNode: ASDisplayNode { var balance: Int64? + var isRefreshing: Bool = false + + var timestampString: String = "" { + didSet { + self.balanceTimestampNode.attributedText = NSAttributedString(string: self.timestampString, font: Font.regular(13), textColor: UIColor(white: 1.0, alpha: 0.6)) + } + } let balanceNode: WalletInfoBalanceNode + private let refreshNode: AnimatedStickerNode private let balanceSubtitleNode: ImmediateTextNode + private let balanceTimestampNode: ImmediateTextNode private let receiveButtonNode: SolidRoundedButtonNode private let sendButtonNode: SolidRoundedButtonNode private let headerBackgroundNode: ASImageNode - init(theme: PresentationTheme, sendAction: @escaping () -> Void, receiveAction: @escaping () -> Void) { + init(account: Account, theme: PresentationTheme, sendAction: @escaping () -> Void, receiveAction: @escaping () -> Void) { self.balanceNode = WalletInfoBalanceNode(theme: theme) self.balanceSubtitleNode = ImmediateTextNode() self.balanceSubtitleNode.displaysAsynchronously = false self.balanceSubtitleNode.attributedText = NSAttributedString(string: "your balance", font: Font.regular(13), textColor: UIColor(white: 1.0, alpha: 0.6)) + self.balanceTimestampNode = ImmediateTextNode() + self.balanceTimestampNode.displaysAsynchronously = false + self.balanceTimestampNode.attributedText = NSAttributedString(string: "", font: Font.regular(13), textColor: UIColor(white: 1.0, alpha: 0.6)) + self.headerBackgroundNode = ASImageNode() self.headerBackgroundNode.displaysAsynchronously = false self.headerBackgroundNode.displayWithoutProcessing = true @@ -168,6 +237,13 @@ private final class WalletInfoHeaderNode: ASDisplayNode { self.receiveButtonNode = SolidRoundedButtonNode(title: "Receive", icon: UIImage(bundleImageName: "Wallet/ReceiveButtonIcon"), theme: SolidRoundedButtonTheme(backgroundColor: .white, foregroundColor: .black), height: 50.0, cornerRadius: 10.0, gloss: false) self.sendButtonNode = SolidRoundedButtonNode(title: "Send", icon: UIImage(bundleImageName: "Wallet/SendButtonIcon"), theme: SolidRoundedButtonTheme(backgroundColor: .white, foregroundColor: .black), height: 50.0, cornerRadius: 10.0, gloss: false) + self.refreshNode = AnimatedStickerNode() + self.refreshNode.playToCompletionOnStop = true + self.refreshNode.automaticallyLoadFirstFrame = true + if let path = getAppBundle().path(forResource: "celebrate", ofType: "tgs") { + self.refreshNode.setup(account: account, resource: .localFile(path), width: Int(32.0 * UIScreenScale), height: Int(32.0 * UIScreenScale), mode: .direct) + } + super.init() self.addSubnode(self.headerBackgroundNode) @@ -175,6 +251,8 @@ private final class WalletInfoHeaderNode: ASDisplayNode { self.addSubnode(self.sendButtonNode) self.addSubnode(self.balanceNode) self.addSubnode(self.balanceSubtitleNode) + self.addSubnode(self.balanceTimestampNode) + self.addSubnode(self.refreshNode) self.receiveButtonNode.pressed = { receiveAction() @@ -206,11 +284,13 @@ private final class WalletInfoHeaderNode: ASDisplayNode { let buttonAlpha = buttonTransition * 1.0 let balanceSubtitleSize = self.balanceSubtitleNode.updateLayout(CGSize(width: size.width - sideInset * 2.0, height: 200.0)) + let balanceTimestampSize = self.balanceTimestampNode.updateLayout(CGSize(width: size.width - sideInset * 2.0, height: 200.0)) let balanceHeight = self.balanceNode.update(width: size.width, transition: transition) let balanceSize = CGSize(width: size.width, height: balanceHeight) - let minHeaderScale: CGFloat = 0.435 + let maxHeaderScale: CGFloat = min(1.0, (size.width - 40.0) / balanceSize.width) + let minHeaderScale: CGFloat = min(0.435, (size.width - 80.0 * 2.0) / balanceSize.width) let minHeaderHeight: CGFloat = balanceSize.height + balanceSubtitleSize.height + balanceSubtitleSpacing @@ -219,13 +299,39 @@ private final class WalletInfoHeaderNode: ASDisplayNode { let headerScaleTransition: CGFloat = max(0.0, min(1.0, (effectiveOffset - minHeaderOffset) / (maxHeaderOffset - minHeaderOffset))) let headerPositionTransition: CGFloat = max(0.0, (effectiveOffset - minHeaderOffset) / (maxOffset - minHeaderOffset)) let headerY = headerPositionTransition * maxHeaderY + (1.0 - headerPositionTransition) * minHeaderY - let headerScale = headerScaleTransition * 1.0 + (1.0 - headerScaleTransition) * minHeaderScale + let headerScale = headerScaleTransition * maxHeaderScale + (1.0 - headerScaleTransition) * minHeaderScale + + let refreshSize = CGSize(width: 32.0, height: 32.0) + self.refreshNode.updateLayout(size: refreshSize) + transition.updateFrame(node: self.refreshNode, frame: CGRect(origin: CGPoint(x: floor((size.width - refreshSize.width) / 2.0), y: navigationHeight - 44.0 + floor((44.0 - refreshSize.height) / 2.0)), size: refreshSize)) + if self.balance == nil { + transition.updateAlpha(node: self.refreshNode, alpha: 0.0) + transition.updateSublayerTransformScale(node: self.refreshNode, scale: 0.1) + self.refreshNode.visibility = false + } else if self.isRefreshing { + transition.updateAlpha(node: self.refreshNode, alpha: 1.0) + transition.updateSublayerTransformScale(node: self.refreshNode, scale: 1.0) + self.refreshNode.visibility = true + } else { + let refreshOffset: CGFloat = 20.0 + let refreshScaleTransition: CGFloat = max(0.0, min(1.0, (offset - maxOffset) / refreshOffset)) + transition.updateAlpha(node: self.refreshNode, alpha: refreshScaleTransition) + let refreshScale: CGFloat = refreshScaleTransition * 1.0 + (1.0 - refreshScaleTransition) * 0.1 + transition.updateSublayerTransformScale(node: self.refreshNode, scale: refreshScale) + self.refreshNode.visibility = false + } let balanceFrame = CGRect(origin: CGPoint(x: 0.0, y: headerY), size: balanceSize) transition.updateFrame(node: self.balanceNode, frame: balanceFrame) transition.updateSublayerTransformScale(node: self.balanceNode, scale: headerScale) - transition.updateFrameAdditive(node: self.balanceSubtitleNode, frame: CGRect(origin: CGPoint(x: floor((size.width - balanceSubtitleSize.width) / 2.0), y: balanceFrame.midY + (balanceFrame.height / 2.0 * headerScale) + balanceSubtitleSpacing), size: balanceSubtitleSize)) + let balanceSubtitleFrame = CGRect(origin: CGPoint(x: floor((size.width - balanceSubtitleSize.width) / 2.0), y: balanceFrame.midY + (balanceFrame.height / 2.0 * headerScale) + balanceSubtitleSpacing), size: balanceSubtitleSize) + transition.updateFrameAdditive(node: self.balanceSubtitleNode, frame: balanceSubtitleFrame) + + let balanceTimestampFrame = CGRect(origin: CGPoint(x: floor((size.width - balanceTimestampSize.width) / 2.0), y: balanceSubtitleFrame.maxY + 2.0), size: balanceTimestampSize) + transition.updateFrameAdditive(node: self.balanceTimestampNode, frame: balanceTimestampFrame) + + transition.updateAlpha(node: self.balanceTimestampNode, alpha: headerScaleTransition) let headerHeight: CGFloat = 1000.0 transition.updateFrame(node: self.headerBackgroundNode, frame: CGRect(origin: CGPoint(x: 0.0, y: effectiveOffset + 10.0 - headerHeight), size: CGSize(width: size.width, height: headerHeight))) @@ -252,11 +358,13 @@ private final class WalletInfoHeaderNode: ASDisplayNode { } } if self.balance == nil { - self.balanceNode.balanceTextNode.isHidden = true + self.balanceNode.isHidden = true self.balanceSubtitleNode.isHidden = true + self.balanceTimestampNode.isHidden = true } else { - self.balanceNode.balanceTextNode.isHidden = false + self.balanceNode.isHidden = false self.balanceSubtitleNode.isHidden = false + self.balanceTimestampNode.isHidden = false } transition.updateFrame(node: self.receiveButtonNode, frame: receiveButtonFrame) transition.updateAlpha(node: self.receiveButtonNode, alpha: buttonAlpha) @@ -276,12 +384,19 @@ private final class WalletInfoHeaderNode: ASDisplayNode { return nil } - func animateIn() { - self.sendButtonNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) - self.receiveButtonNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + func becameReady(animated: Bool) { + if animated { + self.sendButtonNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.receiveButtonNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.balanceNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.balanceSubtitleNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + self.balanceTimestampNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + } self.balanceNode.isLoading = false - self.balanceNode.balanceTextNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) - self.balanceSubtitleNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + } + + func animateBeganRefreshing() { + //self.refreshNode.layer.animate(from: 0.5 as NSNumber, to: 0.0 as NSNumber, keyPath: "transform.scale", timingFunction: CAMediaTimingFunctionName.easeOut.rawValue, duration: 0.2, delay: 0.0, removeOnCompletion: true, additive: true) } } @@ -358,24 +473,34 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { private let address: String private let openTransaction: (WalletTransaction) -> Void + private let hapticFeedback = HapticFeedback() + private let headerNode: WalletInfoHeaderNode private let listNode: ListView + private let loadingIndicator: UIActivityIndicatorView private var enqueuedTransactions: [WalletInfoListTransaction] = [] private var validLayout: (ContainerViewLayout, CGFloat)? - private let balanceDisposable = MetaDisposable() + private let stateDisposable = MetaDisposable() private let transactionListDisposable = MetaDisposable() private var listOffset: CGFloat? + private var reloadingState: Bool = false private var loadingMoreTransactions: Bool = false private var canLoadMoreTransactions: Bool = true + private var combinedState: CombinedWalletState? private var currentEntries: [WalletInfoListEntry]? private var isReady: Bool = false + let contentReady = Promise() + private var didSetContentReady = false + + private var updateTimestampTimer: SwiftSignalKit.Timer? + init(account: Account, tonContext: TonContext, presentationData: PresentationData, walletInfo: WalletInfo, address: String, sendAction: @escaping () -> Void, receiveAction: @escaping () -> Void, openTransaction: @escaping (WalletTransaction) -> Void) { self.account = account self.tonContext = tonContext @@ -384,47 +509,50 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { self.address = address self.openTransaction = openTransaction - self.headerNode = WalletInfoHeaderNode(theme: presentationData.theme, sendAction: sendAction, receiveAction: receiveAction) + self.headerNode = WalletInfoHeaderNode(account: account, theme: presentationData.theme, sendAction: sendAction, receiveAction: receiveAction) self.listNode = ListView() self.listNode.verticalScrollIndicatorColor = self.presentationData.theme.list.scrollIndicatorColor self.listNode.verticalScrollIndicatorFollowsOverscroll = true self.listNode.isHidden = true + self.loadingIndicator = UIActivityIndicatorView(style: .whiteLarge) + super.init() self.backgroundColor = .white - self.balanceDisposable.set((getWalletState(address: address, tonInstance: tonContext.instance) - |> deliverOnMainQueue).start(next: { [weak self] value in - guard let strongSelf = self else { - return - } - strongSelf.headerNode.balanceNode.balance = formatBalanceText(max(0, value.balance)) - strongSelf.headerNode.balance = max(0, value.balance) - - if let (layout, navigationHeight) = strongSelf.validLayout { - strongSelf.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: .immediate) - } - - let wasReady = strongSelf.isReady - strongSelf.isReady = strongSelf.headerNode.balance != nil && strongSelf.currentEntries != nil - if strongSelf.isReady && !wasReady { - strongSelf.animateReadyIn() - } - })) - self.addSubnode(self.listNode) self.addSubnode(self.headerNode) + self.view.addSubview(self.loadingIndicator) + + var canBeginRefresh = true + var isScrolling = false + self.listNode.beganInteractiveDragging = { + isScrolling = true + } + self.listNode.endedInteractiveDragging = { + isScrolling = false + } self.listNode.updateFloatingHeaderOffset = { [weak self] offset, listTransition in guard let strongSelf = self, let (layout, navigationHeight) = strongSelf.validLayout else { return } + let headerHeight: CGFloat = navigationHeight + 260.0 strongSelf.listOffset = offset if strongSelf.isReady { + if !strongSelf.reloadingState && canBeginRefresh && isScrolling { + if offset >= headerHeight + 100.0 { + canBeginRefresh = false + strongSelf.headerNode.isRefreshing = true + strongSelf.headerNode.animateBeganRefreshing() + strongSelf.hapticFeedback.impact() + strongSelf.refreshTransactions() + } + } strongSelf.headerNode.update(size: strongSelf.headerNode.bounds.size, navigationHeight: navigationHeight, offset: offset, transition: listTransition) } } @@ -436,12 +564,14 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { guard case let .known(value) = offset, value < 100.0 else { return } - if !strongSelf.loadingMoreTransactions && strongSelf.canLoadMoreTransactions { + if !strongSelf.loadingMoreTransactions && !strongSelf.reloadingState && strongSelf.canLoadMoreTransactions { strongSelf.loadMoreTransactions() } } self.listNode.didEndScrolling = { [weak self] in + canBeginRefresh = true + guard let strongSelf = self, let (_, navigationHeight) = strongSelf.validLayout else { return } @@ -460,6 +590,26 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { } self.refreshTransactions() + + self.updateTimestampTimer = SwiftSignalKit.Timer(timeout: 1.0, repeat: true, completion: { [weak self] in + guard let strongSelf = self, let combinedState = strongSelf.combinedState, !strongSelf.reloadingState else { + return + } + let string = lastUpdateTimestampString(strings: strongSelf.presentationData.strings, dateTimeFormat: strongSelf.presentationData.dateTimeFormat, statusTimestamp: Int32(clamping: combinedState.timestamp), relativeTo: Int32(Date().timeIntervalSince1970)) + if strongSelf.headerNode.timestampString != string { + strongSelf.headerNode.timestampString = string + if let (layout, navigationHeight) = strongSelf.validLayout { + strongSelf.headerNode.update(size: strongSelf.headerNode.bounds.size, navigationHeight: navigationHeight, offset: strongSelf.listOffset ?? 0.0, transition: .immediate) + } + } + }, queue: .mainQueue()) + self.updateTimestampTimer?.start() + } + + deinit { + self.stateDisposable.dispose() + self.transactionListDisposable.dispose() + self.updateTimestampTimer?.invalidate() } func scrollToHideHeader() { @@ -477,6 +627,9 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { let isFirstLayout = self.validLayout == nil self.validLayout = (layout, navigationHeight) + let indicatorSize = self.loadingIndicator.bounds.size + self.loadingIndicator.frame = CGRect(origin: CGPoint(x: floor((layout.size.width - indicatorSize.width) / 2.0), y: floor((layout.size.height - indicatorSize.height) / 2.0)), size: indicatorSize) + let headerHeight: CGFloat = navigationHeight + 260.0 let topInset: CGFloat = headerHeight @@ -531,13 +684,73 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { private func refreshTransactions() { self.transactionListDisposable.set(nil) self.loadingMoreTransactions = true + self.reloadingState = true - self.transactionListDisposable.set((getWalletTransactions(address: self.address, previousId: nil, tonInstance: self.tonContext.instance) - |> deliverOnMainQueue).start(next: { [weak self] transactions in + self.headerNode.timestampString = "updating" + + self.stateDisposable.set((getCombinedWalletState(postbox: self.account.postbox, walletInfo: self.walletInfo, tonInstance: self.tonContext.instance) + |> delay(self.combinedState == nil ? 0.0 : 2.0, queue: .mainQueue()) + |> deliverOnMainQueue).start(next: { [weak self] value in guard let strongSelf = self else { return } - strongSelf.transactionsLoaded(isReload: true, transactions: transactions) + let combinedState: CombinedWalletState? + switch value { + case let .cached(state): + if state == nil { + strongSelf.loadingIndicator.startAnimating() + } else { + strongSelf.loadingIndicator.stopAnimating() + strongSelf.loadingIndicator.isHidden = true + } + combinedState = state + case let .updated(state): + strongSelf.loadingIndicator.stopAnimating() + strongSelf.loadingIndicator.isHidden = true + combinedState = state + } + + strongSelf.combinedState = combinedState + if let combinedState = combinedState { + strongSelf.headerNode.balanceNode.balance = formatBalanceText(max(0, combinedState.walletState.balance)) + strongSelf.headerNode.balance = max(0, combinedState.walletState.balance) + + if strongSelf.isReady, let (layout, navigationHeight) = strongSelf.validLayout { + strongSelf.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: .immediate) + } + + strongSelf.reloadingState = false + + strongSelf.headerNode.timestampString = lastUpdateTimestampString(strings: strongSelf.presentationData.strings, dateTimeFormat: strongSelf.presentationData.dateTimeFormat, statusTimestamp: Int32(clamping: combinedState.timestamp), relativeTo: Int32(Date().timeIntervalSince1970)) + + if strongSelf.isReady, let (layout, navigationHeight) = strongSelf.validLayout { + strongSelf.headerNode.update(size: strongSelf.headerNode.bounds.size, navigationHeight: navigationHeight, offset: strongSelf.listOffset ?? 0.0, transition: .immediate) + } + + strongSelf.transactionsLoaded(isReload: true, transactions: combinedState.topTransactions) + + strongSelf.headerNode.isRefreshing = false + + if strongSelf.isReady, let (layout, navigationHeight) = strongSelf.validLayout { + strongSelf.headerNode.update(size: strongSelf.headerNode.bounds.size, navigationHeight: navigationHeight, offset: strongSelf.listOffset ?? 0.0, transition: .animated(duration: 0.2, curve: .easeInOut)) + } + + let wasReady = strongSelf.isReady + strongSelf.isReady = strongSelf.combinedState != nil + + if strongSelf.isReady && !wasReady { + if let (layout, navigationHeight) = strongSelf.validLayout { + strongSelf.headerNode.update(size: strongSelf.headerNode.bounds.size, navigationHeight: navigationHeight, offset: layout.size.height, transition: .immediate) + } + + strongSelf.becameReady(animated: strongSelf.didSetContentReady) + } + } + + if !strongSelf.didSetContentReady { + strongSelf.didSetContentReady = true + strongSelf.contentReady.set(.single(true)) + } }, error: { [weak self] _ in guard let strongSelf = self else { return @@ -576,12 +789,14 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { self.loadingMoreTransactions = false self.canLoadMoreTransactions = transactions.count > 2 - let isFirst = self.currentEntries == nil - var updatedEntries: [WalletInfoListEntry] = [] if isReload { + var existingIds = Set() for transaction in transactions { - updatedEntries.append(.transaction(updatedEntries.count, transaction)) + if !existingIds.contains(transaction.transactionId) { + existingIds.insert(transaction.transactionId) + updatedEntries.append(.transaction(updatedEntries.count, transaction)) + } } if updatedEntries.isEmpty { updatedEntries.append(.empty(self.address)) @@ -625,13 +840,6 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { self.enqueuedTransactions.append(transaction) self.dequeueTransaction() - - let wasReady = self.isReady - self.isReady = self.headerNode.balance != nil && self.currentEntries != nil - - if self.isReady && !wasReady { - self.animateReadyIn() - } } private func dequeueTransaction() { @@ -650,11 +858,13 @@ private final class WalletInfoScreenNode: ViewControllerTracingNode { }) } - private func animateReadyIn() { + private func becameReady(animated: Bool) { self.listNode.isHidden = false - self.headerNode.animateIn() + self.loadingIndicator.stopAnimating() + self.loadingIndicator.isHidden = true + self.headerNode.becameReady(animated: animated) if let (layout, navigationHeight) = self.validLayout { - self.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.5, curve: .spring)) + self.containerLayoutUpdated(layout: layout, navigationHeight: navigationHeight, transition: animated ? .animated(duration: 0.5, curve: .spring) : .immediate) } } } diff --git a/submodules/WalletUI/Sources/WalletInfoTransactionItem.swift b/submodules/WalletUI/Sources/WalletInfoTransactionItem.swift index 53ab0eaa54..a0057ed0c1 100644 --- a/submodules/WalletUI/Sources/WalletInfoTransactionItem.swift +++ b/submodules/WalletUI/Sources/WalletInfoTransactionItem.swift @@ -80,9 +80,16 @@ class WalletInfoTransactionItem: ListViewItem { private let titleFont = Font.medium(17.0) private let textFont = Font.monospace(15.0) +private let descriptionFont = Font.regular(15.0) private let dateFont = Font.regular(14.0) private let directionFont = Font.regular(15.0) +private func formatAddress(_ address: String) -> String { + var address = address + address.insert("\n", at: address.index(address.startIndex, offsetBy: address.count / 2)) + return address +} + class WalletInfoTransactionItemNode: ListViewItemNode { private let backgroundNode: ASDisplayNode private let topStripeNode: ASDisplayNode @@ -93,6 +100,7 @@ class WalletInfoTransactionItemNode: ListViewItemNode { private let directionNode: TextNode private let iconNode: ASImageNode private let textNode: TextNode + private let descriptionNode: TextNode private let dateNode: TextNode private let activateArea: AccessibilityAreaNode @@ -127,6 +135,11 @@ class WalletInfoTransactionItemNode: ListViewItemNode { self.textNode.contentMode = .left self.textNode.contentsScale = UIScreen.main.scale + self.descriptionNode = TextNode() + self.descriptionNode.isUserInteractionEnabled = false + self.descriptionNode.contentMode = .left + self.descriptionNode.contentsScale = UIScreen.main.scale + self.dateNode = TextNode() self.dateNode.isUserInteractionEnabled = false self.dateNode.contentMode = .left @@ -143,6 +156,7 @@ class WalletInfoTransactionItemNode: ListViewItemNode { self.addSubnode(self.iconNode) self.addSubnode(self.directionNode) self.addSubnode(self.textNode) + self.addSubnode(self.descriptionNode) self.addSubnode(self.dateNode) self.addSubnode(self.activateArea) @@ -152,6 +166,7 @@ class WalletInfoTransactionItemNode: ListViewItemNode { let makeTitleLayout = TextNode.asyncLayout(self.titleNode) let makeDirectionLayout = TextNode.asyncLayout(self.directionNode) let makeTextLayout = TextNode.asyncLayout(self.textNode) + let makeDescriptionLayout = TextNode.asyncLayout(self.descriptionNode) let makeDateLayout = TextNode.asyncLayout(self.dateNode) let currentItem = self.item @@ -172,6 +187,7 @@ class WalletInfoTransactionItemNode: ListViewItemNode { let titleColor: UIColor let transferredValue = item.walletTransaction.transferredValue var text: String = "" + var description: String = "" if transferredValue <= 0 { title = "\(formatBalanceText(transferredValue))" titleColor = item.theme.list.itemPrimaryTextColor @@ -184,7 +200,12 @@ class WalletInfoTransactionItemNode: ListViewItemNode { if !text.isEmpty { text.append("\n") } - text.append(message.destination) + text.append(formatAddress(message.destination)) + + if !description.isEmpty { + description.append("\n") + } + description.append(message.textMessage) } } } else { @@ -192,7 +213,8 @@ class WalletInfoTransactionItemNode: ListViewItemNode { titleColor = item.theme.chatList.secretTitleColor directionText = "from" if let inMessage = item.walletTransaction.inMessage { - text = inMessage.source + text = formatAddress(inMessage.source) + description = inMessage.textMessage } else { text = "" } @@ -208,7 +230,9 @@ class WalletInfoTransactionItemNode: ListViewItemNode { let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: text, font: textFont, textColor: item.theme.list.itemPrimaryTextColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - leftInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) - let contentSize: CGSize + let (descriptionLayout, descriptionApply) = makeDescriptionLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: description, font: descriptionFont, textColor: item.theme.list.itemSecondaryTextColor), backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - leftInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) + + var contentSize: CGSize var insets: UIEdgeInsets let separatorHeight = UIScreenPixel @@ -221,8 +245,12 @@ class WalletInfoTransactionItemNode: ListViewItemNode { let topInset: CGFloat = 11.0 let bottomInset: CGFloat = 11.0 let titleSpacing: CGFloat = 2.0 + let textSpacing: CGFloat = 2.0 contentSize = CGSize(width: params.width, height: topInset + titleLayout.size.height + titleSpacing + textLayout.size.height + bottomInset) + if !descriptionLayout.size.width.isZero { + contentSize.height += descriptionLayout.size.height + textSpacing + } insets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0) var topHighlightInset: CGFloat = 0.0 if dateHeaderAtBottom, let header = item.header { @@ -249,6 +277,7 @@ class WalletInfoTransactionItemNode: ListViewItemNode { let _ = titleApply() let _ = textApply() + let _ = descriptionApply() let _ = dateApply() let _ = directionApply() @@ -272,7 +301,11 @@ class WalletInfoTransactionItemNode: ListViewItemNode { let directionFrame = CGRect(origin: CGPoint(x: iconFrame.maxX + 3.0, y: titleFrame.maxY - directionLayout.size.height - 1.0), size: directionLayout.size) strongSelf.directionNode.frame = directionFrame - strongSelf.textNode.frame = CGRect(origin: CGPoint(x: leftInset, y: titleFrame.maxY + titleSpacing), size: textLayout.size) + let textFrame = CGRect(origin: CGPoint(x: leftInset, y: titleFrame.maxY + titleSpacing), size: textLayout.size) + strongSelf.textNode.frame = textFrame + + strongSelf.descriptionNode.frame = CGRect(origin: CGPoint(x: leftInset, y: textFrame.maxY + textSpacing), size: descriptionLayout.size) + strongSelf.dateNode.frame = CGRect(origin: CGPoint(x: params.width - leftInset - dateLayout.size.width, y: topInset), size: dateLayout.size) strongSelf.highlightedBackgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: topHighlightInset + -UIScreenPixel), size: CGSize(width: params.width, height: layout.contentSize.height + UIScreenPixel * 2.0 - topHighlightInset)) diff --git a/submodules/WalletUI/Sources/WalletSplashScreen.swift b/submodules/WalletUI/Sources/WalletSplashScreen.swift index 753e6f5264..2e341f24f3 100644 --- a/submodules/WalletUI/Sources/WalletSplashScreen.swift +++ b/submodules/WalletUI/Sources/WalletSplashScreen.swift @@ -12,6 +12,12 @@ import AnimationUI import SwiftSignalKit import OverlayStatusController import ItemListUI +import TextFormat + +public enum WalletSecureStorageResetReason { + case notAvailable + case changed +} public enum WalletSplashMode { case intro @@ -20,6 +26,8 @@ public enum WalletSplashMode { case restoreFailed case sending(WalletInfo, String, Int64, String) case sent(WalletInfo, Int64) + case secureStorageNotAvailable + case secureStorageReset(WalletSecureStorageResetReason) } public final class WalletSplashScreen: ViewController { @@ -75,7 +83,7 @@ public final class WalletSplashScreen: ViewController { }) case .sent: self.navigationItem.setLeftBarButton(UIBarButtonItem(customDisplayNode: ASDisplayNode())!, animated: false) - case .created, .success, .restoreFailed: + case .created, .success, .restoreFailed, .secureStorageNotAvailable, .secureStorageReset: break } @@ -110,6 +118,15 @@ public final class WalletSplashScreen: ViewController { } controller.dismiss() (strongSelf.navigationController as? NavigationController)?.replaceController(strongSelf, with: WalletSplashScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, mode: .created(walletInfo, wordList)), animated: true) + }, error: { _ in + guard let strongSelf = self else { + return + } + controller.dismiss() + strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: strongSelf.presentationData.theme), title: "An Error Occurred", text: "Sorry. Please try again.", actions: [ + TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: { + }) + ], actionLayout: .vertical), in: .window(.root)) }) case let .created(walletInfo, wordList): strongSelf.push(WalletWordDisplayScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, walletInfo: walletInfo, wordList: wordList)) @@ -159,12 +176,43 @@ public final class WalletSplashScreen: ViewController { } case .sending: break + case .secureStorageNotAvailable: + strongSelf.dismiss() + case .secureStorageReset: + strongSelf.push(WalletWordCheckScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, mode: .import)) } }, secondaryAction: { [weak self] in guard let strongSelf = self else { return } - strongSelf.push(WalletWordCheckScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, mode: .import)) + switch strongSelf.mode { + case .secureStorageNotAvailable, .secureStorageReset: + if let navigationController = strongSelf.navigationController as? NavigationController { + var controllers = navigationController.viewControllers + controllers = controllers.filter { controller in + if controller is WalletSplashScreen { + return false + } + if controller is WalletWordDisplayScreen { + return false + } + if controller is WalletWordCheckScreen { + return false + } + return true + } + controllers.append(WalletSplashScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, mode: .intro)) + strongSelf.view.endEditing(true) + navigationController.setViewControllers(controllers, animated: true) + } + default: + strongSelf.push(WalletWordCheckScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, mode: .import)) + } + }, openTerms: { [weak self] in + guard let strongSelf = self else { + return + } + strongSelf.context.sharedContext.openExternalUrl(context: strongSelf.context, urlContext: .generic, url: "https://telegram.org", forceExternal: true, presentationData: strongSelf.presentationData, navigationController: strongSelf.navigationController as? NavigationController, dismissInput: {}) }) self.displayNodeDidLoad() @@ -198,7 +246,7 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode { } } - init(account: Account, presentationData: PresentationData, mode: WalletSplashMode, action: @escaping () -> Void, secondaryAction: @escaping () -> Void) { + init(account: Account, presentationData: PresentationData, mode: WalletSplashMode, action: @escaping () -> Void, secondaryAction: @escaping () -> Void, openTerms: @escaping () -> Void) { self.presentationData = presentationData self.mode = mode self.secondaryAction = secondaryAction @@ -212,7 +260,7 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode { let title: String let text: String let buttonText: String - let termsText: String + let termsText: NSAttributedString let secondaryActionText: String switch mode { @@ -220,21 +268,23 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode { title = "Gram Wallet" text = "Gram wallet allows you to make fast and secure blockchain-based payments without intermediaries." buttonText = "Create My Wallet" - termsText = "By creating the wallet you accept\nTerms of Conditions." + let body = MarkdownAttributeSet(font: Font.regular(13.0), textColor: self.presentationData.theme.list.itemSecondaryTextColor, additionalAttributes: [:]) + let link = MarkdownAttributeSet(font: Font.regular(13.0), textColor: self.presentationData.theme.list.itemSecondaryTextColor, additionalAttributes: [NSAttributedString.Key.underlineStyle.rawValue: NSUnderlineStyle.single.rawValue as NSNumber]) + termsText = parseMarkdownIntoAttributedString("By creating the wallet you accept\n[Terms of Conditions]().", attributes: MarkdownAttributes(body: body, bold: body, link: link, linkAttribute: { _ in nil }), textAlignment: .center) self.iconNode.image = UIImage(bundleImageName: "Settings/Wallet/IntroIcon") secondaryActionText = "" case .created: title = "Congratulations" text = "Your Gram wallet has just been created. Only you control it.\n\nTo be able to always have access to it, please write down secret words and\nset up a secure passcode." buttonText = "Proceed" - termsText = "" + termsText = NSAttributedString(string: "") self.iconNode.image = UIImage(bundleImageName: "Settings/Wallet/CreatedIcon") secondaryActionText = "" case .success: title = "Ready to go!" text = "You’re all set. Now you have a wallet that only you control - directly, without middlemen or bankers. " buttonText = "View My Wallet" - termsText = "" + termsText = NSAttributedString(string: "") self.iconNode.image = nil if let path = getAppBundle().path(forResource: "celebrate", ofType: "tgs") { self.animationNode.setup(account: account, resource: .localFile(path), width: 280, height: 280, mode: .direct) @@ -245,7 +295,7 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode { title = "Too Bad" text = "Without the secret words, you can't'nrestore access to the wallet." buttonText = "Create a New Wallet" - termsText = "" + termsText = NSAttributedString(string: "") self.iconNode.image = nil if let path = getAppBundle().path(forResource: "sad", ofType: "tgs") { self.animationNode.setup(account: account, resource: .localFile(path), width: 280, height: 280, mode: .direct) @@ -256,20 +306,47 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode { title = "Sending Grams" text = "Please wait a few seconds for your transaction to be processed..." buttonText = "" - termsText = "" + termsText = NSAttributedString(string: "") self.iconNode.image = UIImage(bundleImageName: "Settings/Wallet/SendingIcon") secondaryActionText = "" case let .sent(_, amount): title = "Done!" text = "\(amount) Grams have been sent." buttonText = "View My Wallet" - termsText = "" + termsText = NSAttributedString(string: "") self.iconNode.image = nil if let path = getAppBundle().path(forResource: "celebrate", ofType: "tgs") { self.animationNode.setup(account: account, resource: .localFile(path), width: 280, height: 280, mode: .direct) self.animationNode.visibility = true } secondaryActionText = "" + case .secureStorageNotAvailable: + title = "Too Bad" + text = "Please set up Passcode on your device to enable secure payments with your Gram wallet." + buttonText = "OK" + termsText = NSAttributedString(string: "") + self.iconNode.image = nil + if let path = getAppBundle().path(forResource: "sad", ofType: "tgs") { + self.animationNode.setup(account: account, resource: .localFile(path), width: 280, height: 280, mode: .direct) + self.animationNode.visibility = true + } + secondaryActionText = "" + case let .secureStorageReset(reason): + title = "Too Bad" + switch reason { + case .notAvailable: + text = "Unfortunately, your wallet is no longer available because your system Passcode or Touch ID has been turned off." + case .changed: + text = "Unfortunately, your wallet is no longer available due to the change in your system security settings (Passcode/Touch ID). To restore your wallet, tap \"import existing wallet\"." + } + buttonText = "Import Existing Wallet" + termsText = NSAttributedString(string: "") + self.iconNode.image = nil + if let path = getAppBundle().path(forResource: "sad", ofType: "tgs") { + self.animationNode.setup(account: account, resource: .localFile(path), width: 280, height: 280, mode: .direct) + self.animationNode.visibility = true + } + secondaryActionText = "Create New Wallet" } self.titleNode = ImmediateTextNode() @@ -287,7 +364,7 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode { self.termsNode = ImmediateTextNode() self.termsNode.displaysAsynchronously = false - self.termsNode.attributedText = NSAttributedString(string: termsText, font: Font.regular(13.0), textColor: self.presentationData.theme.list.itemSecondaryTextColor) + self.termsNode.attributedText = termsText self.termsNode.maximumNumberOfLines = 0 self.termsNode.textAlignment = .center @@ -331,6 +408,20 @@ private final class WalletSplashScreenNode: ViewControllerTracingNode { } self.secondaryActionButtonNode.addTarget(self, action: #selector(self.secondaryActionPressed), forControlEvents: .touchUpInside) + + self.termsNode.linkHighlightColor = self.presentationData.theme.list.itemSecondaryTextColor.withAlphaComponent(0.5) + self.termsNode.highlightAttributeAction = { attributes in + if let _ = attributes[NSAttributedString.Key.underlineStyle] { + return NSAttributedString.Key.underlineStyle + } else { + return nil + } + } + self.termsNode.tapAttributeAction = { attributes in + if let _ = attributes[NSAttributedString.Key.underlineStyle] { + openTerms() + } + } } @objc private func secondaryActionPressed() { diff --git a/submodules/WalletUI/Sources/WalletTransactionInfoScreen.swift b/submodules/WalletUI/Sources/WalletTransactionInfoScreen.swift index 6fb4e43cb6..d658275b9e 100644 --- a/submodules/WalletUI/Sources/WalletTransactionInfoScreen.swift +++ b/submodules/WalletUI/Sources/WalletTransactionInfoScreen.swift @@ -27,6 +27,7 @@ private final class WalletTransactionInfoControllerArguments { private enum WalletTransactionInfoSection: Int32 { case amount case info + case comment } private enum WalletTransactionInfoEntry: ItemListNodeEntry { @@ -35,6 +36,8 @@ private enum WalletTransactionInfoEntry: ItemListNodeEntry { case infoAddress(PresentationTheme, String) case infoCopyAddress(PresentationTheme, String) case infoSendGrams(PresentationTheme, String) + case commentHeader(PresentationTheme, String) + case comment(PresentationTheme, String) var section: ItemListSectionId { switch self { @@ -42,6 +45,8 @@ private enum WalletTransactionInfoEntry: ItemListNodeEntry { return WalletTransactionInfoSection.amount.rawValue case .infoHeader, .infoAddress, .infoCopyAddress, .infoSendGrams: return WalletTransactionInfoSection.info.rawValue + case .commentHeader, .comment: + return WalletTransactionInfoSection.comment.rawValue } } @@ -57,6 +62,10 @@ private enum WalletTransactionInfoEntry: ItemListNodeEntry { return 3 case .infoSendGrams: return 4 + case .commentHeader: + return 5 + case .comment: + return 6 } } @@ -80,6 +89,10 @@ private enum WalletTransactionInfoEntry: ItemListNodeEntry { return ItemListActionItem(theme: theme, title: text, kind: .generic, alignment: .natural, sectionId: self.section, style: .blocks, action: { arguments.sendGrams() }) + case let .commentHeader(theme, text): + return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) + case let .comment(theme, text): + return ItemListMultilineTextItem(theme: theme, text: text, enabledEntityTypes: [], sectionId: self.section, style: .blocks) } } } @@ -111,6 +124,30 @@ private func extractAddress(_ walletTransaction: WalletTransaction) -> String { return text } +private func extractDescription(_ walletTransaction: WalletTransaction) -> String { + let transferredValue = walletTransaction.transferredValue + var text = "" + if transferredValue <= 0 { + for message in walletTransaction.outMessages { + if !text.isEmpty { + text.append("\n\n") + } + text.append(message.textMessage) + } + } else { + if let inMessage = walletTransaction.inMessage { + text = inMessage.textMessage + } + } + return text +} + +private func formatAddress(_ address: String) -> String { + var address = address + address.insert("\n", at: address.index(address.startIndex, offsetBy: address.count / 2)) + return address +} + private func walletTransactionInfoControllerEntries(presentationData: PresentationData, walletTransaction: WalletTransaction, state: WalletTransactionInfoControllerState) -> [WalletTransactionInfoEntry] { var entries: [WalletTransactionInfoEntry] = [] @@ -118,16 +155,22 @@ private func walletTransactionInfoControllerEntries(presentationData: Presentati let transferredValue = walletTransaction.transferredValue let text = extractAddress(walletTransaction) + let description = extractDescription(walletTransaction) if transferredValue <= 0 { entries.append(.infoHeader(presentationData.theme, "RECIPIENT")) } else { entries.append(.infoHeader(presentationData.theme, "SENDER")) } - entries.append(.infoAddress(presentationData.theme, text)) + entries.append(.infoAddress(presentationData.theme, formatAddress(text))) entries.append(.infoCopyAddress(presentationData.theme, "Copy Address")) entries.append(.infoSendGrams(presentationData.theme, "Send Grams")) + if !description.isEmpty { + entries.append(.commentHeader(presentationData.theme, "COMMENT")) + entries.append(.comment(presentationData.theme, description)) + } + return entries } @@ -295,6 +338,8 @@ private class WalletTransactionHeaderItemNode: ListViewItemNode { contentSize = CGSize(width: params.width, height: titleLayout.size.height + verticalInset + verticalInset) let insets = itemListNeighborsGroupedInsets(neighbors) + let titleScale: CGFloat = min(1.0, (params.width - 40.0 - iconSize.width) / titleLayout.size.width) + let layout = ListViewItemNodeLayout(contentSize: contentSize, insets: insets) return (layout, { [weak self] in @@ -311,9 +356,11 @@ private class WalletTransactionHeaderItemNode: ListViewItemNode { let contentWidth = titleLayout.size.width + iconSpacing + iconSize.width / 2.0 let titleFrame = CGRect(origin: CGPoint(x: floor((params.width - contentWidth) / 2.0), y: verticalInset), size: titleLayout.size) let subtitleFrame = CGRect(origin: CGPoint(x: floor((params.width - subtitleLayout.size.width) / 2.0), y: titleFrame.maxY - 5.0), size: subtitleLayout.size) - strongSelf.titleNode.frame = titleFrame + strongSelf.titleNode.position = titleFrame.center + strongSelf.titleNode.bounds = CGRect(origin: CGPoint(), size: titleFrame.size) + strongSelf.titleNode.transform = CATransform3DMakeScale(titleScale, titleScale, 1.0) strongSelf.subtitleNode.frame = subtitleFrame - strongSelf.iconNode.frame = CGRect(origin: CGPoint(x: titleFrame.maxX + iconSpacing, y: titleFrame.minY + floor((titleFrame.height - iconSize.height) / 2.0)), size: iconSize) + strongSelf.iconNode.frame = CGRect(origin: CGPoint(x: floor(titleFrame.midX + titleFrame.width / 2.0 * titleScale + iconSpacing), y: titleFrame.minY + floor((titleFrame.height - iconSize.height) / 2.0) - 2.0), size: iconSize) } }) } @@ -327,4 +374,3 @@ private class WalletTransactionHeaderItemNode: ListViewItemNode { self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false) } } - diff --git a/submodules/WalletUI/Sources/WalletWordCheckScreen.swift b/submodules/WalletUI/Sources/WalletWordCheckScreen.swift index ace6f91adf..3396e130fd 100644 --- a/submodules/WalletUI/Sources/WalletWordCheckScreen.swift +++ b/submodules/WalletUI/Sources/WalletWordCheckScreen.swift @@ -11,6 +11,7 @@ import SolidRoundedButtonNode import UndoUI import AlertUI import SwiftSignalKit +import TextFormat private let possibleWordList: [String] = [ "abandon", @@ -2063,10 +2064,8 @@ private let possibleWordList: [String] = [ "zoo" ] -private let verifyWordIndices: [Int] = [4, 16, 21] - public enum WalletWordCheckMode { - case verify(WalletInfo, [String]) + case verify(WalletInfo, [String], [Int]) case `import` } @@ -2113,11 +2112,11 @@ public final class WalletWordCheckScreen: ViewController { return } switch strongSelf.mode { - case let .verify(walletInfo, wordList): + case let .verify(walletInfo, wordList, indices): let enteredWords = (strongSelf.displayNode as! WalletWordCheckScreenNode).enteredWords var isCorrect = true for i in 0 ..< enteredWords.count { - if enteredWords[i] != wordList[verifyWordIndices[i]] { + if enteredWords[i] != wordList[indices[i]] { isCorrect = false break } @@ -2580,23 +2579,27 @@ private final class WalletWordCheckScreenNode: ViewControllerTracingNode, UIScro self.iconNode.displaysAsynchronously = false let title: String - let text: String + let text: NSAttributedString let buttonText: String let secondaryActionText: String let wordIndices: [Int] switch mode { - case .verify: - wordIndices = verifyWordIndices + case let .verify(_, _, indices): + wordIndices = indices title = "Test Time!" - text = "Let’s check that you wrote them down correctly. Please enter words\n\(wordIndices[0] + 1), \(wordIndices[1] + 1) and \(wordIndices[2] + 1) below:" + + let body = MarkdownAttributeSet(font: Font.regular(16.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor, additionalAttributes: [:]) + let bold = MarkdownAttributeSet(font: Font.bold(16.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor, additionalAttributes: [NSAttributedString.Key.underlineStyle.rawValue: NSUnderlineStyle.single.rawValue as NSNumber]) + text = parseMarkdownIntoAttributedString("Let’s check that you wrote them down correctly. Please enter words\n**\(wordIndices[0] + 1)**, **\(wordIndices[1] + 1)** and **\(wordIndices[2] + 1)** below:", attributes: MarkdownAttributes(body: body, bold: bold, link: body, linkAttribute: { _ in nil }), textAlignment: .center) + buttonText = "Continue" secondaryActionText = "" self.iconNode.image = UIImage(bundleImageName: "Settings/Wallet/WordsCheckIcon") case .import: title = "24 Secret Words" - text = "Please restore access to your wallet by\nentering the 24 secret words you wrote down when creating the wallet." + text = NSAttributedString(string: "Please restore access to your wallet by\nentering the 24 secret words you wrote down when creating the wallet.", font: Font.regular(16.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor) buttonText = "Continue" secondaryActionText = "I don't have those" wordIndices = Array(0 ..< 24) @@ -2617,7 +2620,7 @@ private final class WalletWordCheckScreenNode: ViewControllerTracingNode, UIScro self.textNode = ImmediateTextNode() self.textNode.displaysAsynchronously = false - self.textNode.attributedText = NSAttributedString(string: text, font: Font.regular(16.0), textColor: self.presentationData.theme.list.itemPrimaryTextColor) + self.textNode.attributedText = text self.textNode.maximumNumberOfLines = 0 self.textNode.lineSpacing = 0.1 self.textNode.textAlignment = .center diff --git a/submodules/WalletUI/Sources/WalletWordDisplayScreen.swift b/submodules/WalletUI/Sources/WalletWordDisplayScreen.swift index 1ce556fdae..91ddd75057 100644 --- a/submodules/WalletUI/Sources/WalletWordDisplayScreen.swift +++ b/submodules/WalletUI/Sources/WalletWordDisplayScreen.swift @@ -72,7 +72,15 @@ public final class WalletWordDisplayScreen: ViewController { } })]), in: .window(.root)) } else { - strongSelf.push(WalletWordCheckScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, mode: .verify(strongSelf.walletInfo, strongSelf.wordList))) + var wordIndices: [Int] = [] + while wordIndices.count < 3 { + let index = Int(arc4random_uniform(UInt32(strongSelf.wordList.count))) + if !wordIndices.contains(index) { + wordIndices.append(index) + } + } + wordIndices.sort() + strongSelf.push(WalletWordCheckScreen(context: strongSelf.context, tonContext: strongSelf.tonContext, mode: .verify(strongSelf.walletInfo, strongSelf.wordList, wordIndices))) } })