diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 63a6c83733..c0840b9883 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -5538,3 +5538,5 @@ Any member of this group will be able to see messages in the channel."; "Conversation.PrivateChannelTimeLimitedAlertTitle" = "Join Channel"; "Conversation.PrivateChannelTimeLimitedAlertText" = "This channel is private. Please join it to continue viewing its content."; "Conversation.PrivateChannelTimeLimitedAlertJoin" = "Join"; + +"KeyCommand.SearchInChat" = "Search in Chat"; diff --git a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift index 24fcb85727..2bca3e7095 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift @@ -101,6 +101,7 @@ public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: case let .Audio(isVoice, _, title, performer, _): if !message.text.isEmpty { messageText = "🎤 \(messageText)" + processed = true } else if isVoice { if message.text.isEmpty { messageText = strings.Message_Audio diff --git a/submodules/GalleryUI/Sources/GalleryControllerNode.swift b/submodules/GalleryUI/Sources/GalleryControllerNode.swift index 5409b07a5b..9f7895cdeb 100644 --- a/submodules/GalleryUI/Sources/GalleryControllerNode.swift +++ b/submodules/GalleryUI/Sources/GalleryControllerNode.swift @@ -417,6 +417,12 @@ open class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGesture } } + if velocity.y > 0.0 || distanceFromEquilibrium > 0.0, let centralItemNode = self.pager.centralItemNode() { + if centralItemNode.alternativeDismiss() { + return + } + } + if let centralItemNode = self.pager.centralItemNode(), let (transitionNodeForCentralItem, addToTransitionSurface) = self.transitionDataForCentralItem?(), let node = transitionNodeForCentralItem { contentAnimationCompleted = false centralItemNode.animateOut(to: node, addToTransitionSurface: addToTransitionSurface, completion: { diff --git a/submodules/GalleryUI/Sources/GalleryItemNode.swift b/submodules/GalleryUI/Sources/GalleryItemNode.swift index 8df3a446c7..ef8c2cb7a4 100644 --- a/submodules/GalleryUI/Sources/GalleryItemNode.swift +++ b/submodules/GalleryUI/Sources/GalleryItemNode.swift @@ -25,6 +25,7 @@ open class GalleryItemNode: ASDisplayNode { public var beginCustomDismiss: () -> Void = { } public var completeCustomDismiss: () -> Void = { } public var baseNavigationController: () -> NavigationController? = { return nil } + public var alternativeDismiss: () -> Bool = { return false } override public init() { super.init() diff --git a/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift index 910c6d3339..1b01773fe1 100644 --- a/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift +++ b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift @@ -401,6 +401,15 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode { strongSelf.footerContentNode.setFramePreviewImage(image: nil) } }) + + self.alternativeDismiss = { [weak self] in + guard let strongSelf = self else { + return false + } + + strongSelf.pictureInPictureButtonPressed() + return true + } } deinit { diff --git a/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/Contents.json b/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/Contents.json new file mode 100644 index 0000000000..87e1dd38dd --- /dev/null +++ b/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_gif.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/ic_gif.pdf b/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/ic_gif.pdf new file mode 100644 index 0000000000..e81291a423 Binary files /dev/null and b/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/ic_gif.pdf differ diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h index 5385d683ac..66c8693b26 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h @@ -15,7 +15,7 @@ - (instancetype)initWithURL:(NSURL *)url; -- (instancetype)initWithAsset:(TGMediaAsset *)asset; +- (instancetype)initWithAsset:(TGMediaAsset *)asset livePhoto:(bool)livePhoto; - (void)_cleanUp; diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h index 2805a35302..fefbd2433b 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h @@ -4,6 +4,7 @@ #import @class TGPhotoEntitiesContainerView; +@protocol TGMediaEditableItem; @interface TGMediaPickerGalleryVideoItemView : TGModernGalleryItemView @@ -35,4 +36,6 @@ - (CGRect)editorTransitionViewRect; - (TGPhotoEntitiesContainerView *)entitiesView; +- (id)editableMediaItem; + @end diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h index 7708afa843..1c10e40842 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h @@ -27,6 +27,8 @@ + (UIImage *)gifBackgroundImage; + (UIImage *)gifIcon; + (UIImage *)gifActiveIcon; ++ (UIImage *)muteIcon; ++ (UIImage *)muteActiveIcon; + (UIImage *)qualityIconForPreset:(TGMediaVideoConversionPreset)preset; + (UIImage *)timerIconForValue:(NSInteger)value; + (UIImage *)eraserIcon; diff --git a/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m b/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m index 00aacb60a7..45284ba873 100644 --- a/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m +++ b/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m @@ -16,15 +16,22 @@ NSTimeInterval _cachedDuration; AVURLAsset *_cachedAVAsset; + bool _livePhoto; } @end @implementation TGCameraCapturedVideo + (NSURL *)videoURLForAsset:(TGMediaAsset *)asset { - NSURL *convertedGifsUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedGifs"]]; - [[NSFileManager defaultManager] createDirectoryAtPath:convertedGifsUrl.path withIntermediateDirectories:true attributes:nil error:nil]; - return [convertedGifsUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + if (asset.type == TGMediaAssetGifType) { + NSURL *convertedGifsUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedGifs"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedGifsUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + return [convertedGifsUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + } else { + NSURL *convertedLivePhotosUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedLivePhotos"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedLivePhotosUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + return [convertedLivePhotosUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + } } - (instancetype)initWithURL:(NSURL *)url @@ -39,12 +46,13 @@ return self; } -- (instancetype)initWithAsset:(TGMediaAsset *)asset +- (instancetype)initWithAsset:(TGMediaAsset *)asset livePhoto:(bool)livePhoto { self = [super init]; if (self != nil) { _originalAsset = asset; + _livePhoto = livePhoto; _cachedSize = CGSizeZero; _cachedDuration = 0.0; @@ -71,30 +79,46 @@ - (AVAsset *)immediateAVAsset { return _cachedAVAsset; } + - (SSignal *)avAsset { if (_originalAsset != nil) { if (_cachedAVAsset != nil) { return [SSignal single:_cachedAVAsset]; } else { NSURL *videoUrl = [TGCameraCapturedVideo videoURLForAsset:_originalAsset]; - return [[TGMediaAssetImageSignals imageDataForAsset:_originalAsset allowNetworkAccess:false] mapToSignal:^SSignal *(TGMediaAssetImageData *assetData) { - NSData *data = assetData.imageData; - - const char *gif87Header = "GIF87"; - const char *gif89Header = "GIF89"; - if (data.length >= 5 && (!memcmp(data.bytes, gif87Header, 5) || !memcmp(data.bytes, gif89Header, 5))) - { - return [[TGGifConverter convertGifToMp4:data] map:^id(NSDictionary *result) - { - NSString *filePath = result[@"path"]; - [[NSFileManager defaultManager] moveItemAtPath:filePath toPath:videoUrl.path error:nil]; + if ([[NSFileManager defaultManager] fileExistsAtPath:videoUrl.path isDirectory:nil]) { + _cachedAVAsset = [AVURLAsset assetWithURL:videoUrl]; + return [SSignal single:_cachedAVAsset]; + } else { + if (_originalAsset.type == TGMediaAssetGifType) { + return [[[TGMediaAssetImageSignals imageDataForAsset:_originalAsset allowNetworkAccess:false] mapToSignal:^SSignal *(TGMediaAssetImageData *assetData) { + NSData *data = assetData.imageData; - return [AVURLAsset assetWithURL:videoUrl]; + const char *gif87Header = "GIF87"; + const char *gif89Header = "GIF89"; + if (data.length >= 5 && (!memcmp(data.bytes, gif87Header, 5) || !memcmp(data.bytes, gif89Header, 5))) + { + return [[TGGifConverter convertGifToMp4:data] map:^id(NSDictionary *result) + { + NSString *filePath = result[@"path"]; + [[NSFileManager defaultManager] moveItemAtPath:filePath toPath:videoUrl.path error:nil]; + + return [AVURLAsset assetWithURL:videoUrl]; + }]; + } else { + return [SSignal complete]; + } + }] onNext:^(id next) { + _cachedAVAsset = next; }]; } else { - return [SSignal complete]; + return [[[TGMediaAssetImageSignals avAssetForVideoAsset:_originalAsset allowNetworkAccess:false] mapToSignal:^SSignal *(AVURLAsset *asset) { + return [SSignal single:asset]; + }] onNext:^(id next) { + _cachedAVAsset = next; + }]; } - }]; + } } } else { return [SSignal single:_cachedAVAsset]; diff --git a/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m b/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m index fcdd71cea9..2abd400f16 100644 --- a/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m +++ b/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m @@ -2,6 +2,7 @@ #import "LegacyComponentsInternal.h" #import "TGImageUtils.h" +#import "TGStringUtils.h" #import #import @@ -770,21 +771,27 @@ if (videoResource != nil) { - NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mov", [NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970]]]]; - NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; + NSURL *convertedLivePhotosUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedLivePhotos"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedLivePhotosUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + NSURL *fileUrl = [convertedLivePhotosUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; - [[PHAssetResourceManager defaultManager] writeDataForAssetResource:videoResource toFile:fileUrl options:nil completionHandler:^(NSError * _Nullable error) - { - if (error == nil) - { - [subscriber putNext:[[AVPlayerItem alloc] initWithURL:fileUrl]]; - [subscriber putCompletion]; - } - else - { - [subscriber putError:nil]; - } - }]; + if ([[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path isDirectory:nil]) { + [subscriber putNext:[[AVPlayerItem alloc] initWithURL:fileUrl]]; + [subscriber putCompletion]; + } else { + [[PHAssetResourceManager defaultManager] writeDataForAssetResource:videoResource toFile:fileUrl options:nil completionHandler:^(NSError * _Nullable error) + { + if (error == nil) + { + [subscriber putNext:[[AVPlayerItem alloc] initWithURL:fileUrl]]; + [subscriber putCompletion]; + } + else + { + [subscriber putError:nil]; + } + }]; + } } else { @@ -850,9 +857,11 @@ if (processLive) { - NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mov", asset.identifier]]; - NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; - if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) + NSURL *convertedLivePhotosUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedLivePhotos"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedLivePhotosUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + NSURL *fileUrl = [convertedLivePhotosUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + + if ([[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path]) { [subscriber putNext:[[AVURLAsset alloc] initWithURL:fileUrl options:nil]]; [subscriber putCompletion]; diff --git a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m index 0053a35a4f..920ee4ff2d 100644 --- a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m +++ b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m @@ -773,25 +773,77 @@ SSignal *imageSignal = assetSignal; if (adjustments.sendAsGif) { - [signals addObject:[inlineThumbnailSignal(asset) map:^NSDictionary *(UIImage *image) + NSTimeInterval trimStartValue = 0.0; + if ([adjustments isKindOfClass:[TGVideoEditAdjustments class]]) { + TGVideoEditAdjustments *videoAdjustments = (TGVideoEditAdjustments *)adjustments; + trimStartValue = videoAdjustments.trimStartValue; + } + + UIImage *(^cropVideoThumbnail)(UIImage *, CGSize, CGSize, bool) = ^UIImage *(UIImage *image, CGSize targetSize, CGSize sourceSize, bool resize) { - NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; - dict[@"type"] = @"cloudPhoto"; - dict[@"previewImage"] = image; - dict[@"livePhoto"] = @true; - dict[@"asset"] = asset; - dict[@"adjustments"] = adjustments; + if ([adjustments cropAppliedForAvatar:false] || adjustments.hasPainting || adjustments.toolsApplied) + { + CGRect scaledCropRect = CGRectMake(adjustments.cropRect.origin.x * image.size.width / adjustments.originalSize.width, adjustments.cropRect.origin.y * image.size.height / adjustments.originalSize.height, adjustments.cropRect.size.width * image.size.width / adjustments.originalSize.width, adjustments.cropRect.size.height * image.size.height / adjustments.originalSize.height); + UIImage *paintingImage = adjustments.paintingData.stillImage; + if (paintingImage == nil) { + paintingImage = adjustments.paintingData.image; + } + if (adjustments.toolsApplied) { + image = [PGPhotoEditor resultImageForImage:image adjustments:adjustments]; + } + return TGPhotoEditorCrop(image, paintingImage, adjustments.cropOrientation, 0, scaledCropRect, adjustments.cropMirrored, targetSize, sourceSize, resize); + } - if (adjustments.paintingData.stickers.count > 0) - dict[@"stickers"] = adjustments.paintingData.stickers; - - if (timer != nil) - dict[@"timer"] = timer; - else if (groupedId != nil && !hasAnyTimers) - dict[@"groupedId"] = groupedId; - - id generatedItem = descriptionGenerator(dict, caption, entities, nil); - return generatedItem; + return image; + }; + + SSignal *trimmedVideoThumbnailSignal = [[TGMediaAssetImageSignals avAssetForVideoAsset:asset allowNetworkAccess:false] mapToSignal:^SSignal *(AVAsset *avAsset) + { + CGSize imageSize = TGFillSize(asset.dimensions, CGSizeMake(512, 512)); + return [[TGMediaAssetImageSignals videoThumbnailForAVAsset:avAsset size:imageSize timestamp:CMTimeMakeWithSeconds(trimStartValue, NSEC_PER_SEC)] map:^UIImage *(UIImage *image) + { + return cropVideoThumbnail(image, TGScaleToFill(asset.dimensions, CGSizeMake(512, 512)), asset.dimensions, true); + }]; + }]; + + SSignal *videoThumbnailSignal = [inlineThumbnailSignal(asset) map:^UIImage *(UIImage *image) + { + return cropVideoThumbnail(image, image.size, image.size, false); + }]; + + SSignal *thumbnailSignal = trimStartValue > FLT_EPSILON ? trimmedVideoThumbnailSignal : videoThumbnailSignal; + + TGMediaVideoConversionPreset preset = [TGMediaVideoConverter presetFromAdjustments:adjustments]; + CGSize dimensions = [TGMediaVideoConverter dimensionsFor:asset.originalSize adjustments:adjustments preset:preset]; + + TGCameraCapturedVideo *videoAsset = [[TGCameraCapturedVideo alloc] initWithAsset:asset livePhoto:true]; + [signals addObject:[thumbnailSignal mapToSignal:^SSignal *(UIImage *image) + { + return [videoAsset.avAsset map:^id(AVURLAsset *avAsset) { + NSTimeInterval duration = CMTimeGetSeconds(avAsset.duration); + if ([adjustments isKindOfClass:[TGVideoEditAdjustments class]]) { + TGVideoEditAdjustments *videoAdjustments = (TGVideoEditAdjustments *)adjustments; + duration = videoAdjustments.trimApplied ? (videoAdjustments.trimEndValue - videoAdjustments.trimStartValue) : duration; + } + + NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; + dict[@"type"] = @"cameraVideo"; + dict[@"url"] = avAsset.URL; + dict[@"previewImage"] = image; + dict[@"duration"] = @(duration); + dict[@"dimensions"] = [NSValue valueWithCGSize:dimensions]; + dict[@"adjustments"] = adjustments; + + if (adjustments.paintingData.stickers.count > 0) + dict[@"stickers"] = adjustments.paintingData.stickers; + if (timer != nil) + dict[@"timer"] = timer; + else if (groupedId != nil && !hasAnyTimers) + dict[@"groupedId"] = groupedId; + + id generatedItem = descriptionGenerator(dict, caption, entities, nil); + return generatedItem; + }]; }]]; } else diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m index 638486cb1a..60ec2130fa 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m @@ -159,9 +159,9 @@ _muteButton.hidden = true; _muteButton.adjustsImageWhenHighlighted = false; [_muteButton setBackgroundImage:[TGPhotoEditorInterfaceAssets gifBackgroundImage] forState:UIControlStateNormal]; - [_muteButton setImage:[TGPhotoEditorInterfaceAssets gifIcon] forState:UIControlStateNormal]; - [_muteButton setImage:[TGPhotoEditorInterfaceAssets gifActiveIcon] forState:UIControlStateSelected]; - [_muteButton setImage:[TGPhotoEditorInterfaceAssets gifActiveIcon] forState:UIControlStateSelected | UIControlStateHighlighted]; + [_muteButton setImage:[TGPhotoEditorInterfaceAssets muteIcon] forState:UIControlStateNormal]; + [_muteButton setImage:[TGPhotoEditorInterfaceAssets muteActiveIcon] forState:UIControlStateSelected]; + [_muteButton setImage:[TGPhotoEditorInterfaceAssets muteActiveIcon] forState:UIControlStateSelected | UIControlStateHighlighted]; [_muteButton addTarget:self action:@selector(toggleSendAsGif) forControlEvents:UIControlEventTouchUpInside]; [_wrapperView addSubview:_muteButton]; @@ -574,8 +574,6 @@ [strongSelf->_portraitToolbarView setEditButtonsEnabled:available animated:true]; [strongSelf->_landscapeToolbarView setEditButtonsEnabled:available animated:true]; - - bool sendableAsGif = !strongSelf->_inhibitMute && [strongItemView isKindOfClass:[TGMediaPickerGalleryVideoItemView class]]; if ([strongSelf->_currentItem isKindOfClass:[TGMediaPickerGalleryVideoItem class]]) { TGMediaPickerGalleryVideoItem *item = (TGMediaPickerGalleryVideoItem *)strongSelf->_currentItem; @@ -586,6 +584,22 @@ strongSelf->_muteButton.hidden = !sendableAsGif; } }]]; + + UIImage *muteIcon = [TGPhotoEditorInterfaceAssets muteIcon]; + UIImage *muteActiveIcon = [TGPhotoEditorInterfaceAssets muteActiveIcon]; + if ([item isKindOfClass:[TGMediaPickerGalleryVideoItem class]]) { + TGMediaPickerGalleryVideoItem *videoGalleryItem = (TGMediaPickerGalleryVideoItem *)item; + if ([videoGalleryItem.editableMediaItem isKindOfClass:[TGMediaAsset class]]) { + TGMediaAsset *asset = (TGMediaAsset *)videoGalleryItem.editableMediaItem; + if (asset.type == TGMediaAssetPhotoType) { + muteIcon = [TGPhotoEditorInterfaceAssets gifIcon]; + muteActiveIcon = [TGPhotoEditorInterfaceAssets gifActiveIcon]; + } + } + } + [_muteButton setImage:muteIcon forState:UIControlStateNormal]; + [_muteButton setImage:muteActiveIcon forState:UIControlStateSelected]; + [_muteButton setImage:muteActiveIcon forState:UIControlStateSelected | UIControlStateHighlighted]; } - (TGPhotoEditorTab)currentTabs @@ -1264,7 +1278,7 @@ return; TGModernGalleryItemView *currentItemView = _currentItemView; - bool sendableAsGif = [currentItemView isKindOfClass:[TGMediaPickerGalleryVideoItemView class]]; // || ([currentItemView.item isKindOfClass:[TGMediaPickerGalleryPhotoItem class]]; && ((TGMediaPickerGalleryPhotoItem *)currentItemView.item).asset.subtypes & TGMediaAssetSubtypePhotoLive); + bool sendableAsGif = [currentItemView isKindOfClass:[TGMediaPickerGalleryVideoItemView class]]; if (sendableAsGif) [(TGMediaPickerGalleryVideoItemView *)currentItemView toggleSendAsGif]; } diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m index 20692716e2..cb463180b6 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m @@ -352,7 +352,7 @@ _itemBeingEdited = item; - PGPhotoEditorValues *editorValues = (PGPhotoEditorValues *)[item.editingContext adjustmentsForItem:item.editableMediaItem]; + id adjustments = [item.editingContext adjustmentsForItem:item.editableMediaItem]; NSString *caption = [item.editingContext captionForItem:item.editableMediaItem]; @@ -365,6 +365,8 @@ TGPhotoEntitiesContainerView *entitiesView = nil; + id editableMediaItem = item.editableMediaItem; + bool isVideo = false; if ([editorReferenceView isKindOfClass:[UIImageView class]]) { @@ -389,13 +391,15 @@ entitiesView = [videoItemView entitiesView]; isVideo = true; + + editableMediaItem = videoItemView.editableMediaItem; } if (self.useGalleryImageAsEditableItemImage && self.storeOriginalImageForItem != nil) self.storeOriginalImageForItem(item.editableMediaItem, screenImage); TGPhotoEditorControllerIntent intent = isVideo ? TGPhotoEditorControllerVideoIntent : TGPhotoEditorControllerGenericIntent; - TGPhotoEditorController *controller = [[TGPhotoEditorController alloc] initWithContext:_context item:item.editableMediaItem intent:intent adjustments:editorValues caption:caption screenImage:screenImage availableTabs:_interfaceView.currentTabs selectedTab:tab]; + TGPhotoEditorController *controller = [[TGPhotoEditorController alloc] initWithContext:_context item:editableMediaItem intent:intent adjustments:adjustments caption:caption screenImage:screenImage availableTabs:_interfaceView.currentTabs selectedTab:tab]; controller.entitiesView = entitiesView; controller.editingContext = _editingContext; controller.stickersContext = _stickersContext; @@ -429,7 +433,7 @@ if (hasChanges) { if (didFinishEditingItem != nil) { - didFinishEditingItem(item.editableMediaItem, adjustments, resultImage, thumbnailImage); + didFinishEditingItem(editableMediaItem, adjustments, resultImage, thumbnailImage); } } @@ -448,7 +452,7 @@ return; if (strongSelf.didFinishRenderingFullSizeImage != nil) - strongSelf.didFinishRenderingFullSizeImage(item.editableMediaItem, image); + strongSelf.didFinishRenderingFullSizeImage(editableMediaItem, image); }; controller.captionSet = ^(NSString *caption, NSArray *entities) diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m index 90fc17467f..5d69fcaa36 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m @@ -20,6 +20,8 @@ #import "TGMediaPickerGalleryItem.h" #import "TGMediaPickerGalleryVideoItem.h" +#import "TGCameraCapturedVideo.h" + #import #import @@ -96,6 +98,8 @@ SMetaDisposable *_downloadDisposable; SMetaDisposable *_currentAudioSession; + SVariable *_editableItemVariable; + UIEdgeInsets _safeAreaInset; bool _requestingThumbnails; @@ -127,6 +131,8 @@ _videoDurationDisposable = [[SMetaDisposable alloc] init]; _adjustmentsDisposable = [[SMetaDisposable alloc] init]; + + _editableItemVariable = [[SVariable alloc] init]; _containerView = [[UIView alloc] initWithFrame:self.bounds]; _containerView.clipsToBounds = true; @@ -434,23 +440,27 @@ [self.imageView setSignal:imageSignal]; + [_editableItemVariable set:[SSignal single:[self editableMediaItem]]]; + if (item.editingContext != nil) { - SSignal *adjustmentsSignal = [item.editingContext adjustmentsSignalForItem:item.editableMediaItem]; - [_adjustmentsDisposable setDisposable:[[adjustmentsSignal deliverOn:[SQueue mainQueue]] startWithNext:^(__unused id next) + SSignal *adjustmentsSignal = [[self editableItemSignal] mapToSignal:^SSignal *(id editableItem) { + return [item.editingContext adjustmentsSignalForItem:editableItem]; + }]; + [_adjustmentsDisposable setDisposable:[[adjustmentsSignal deliverOn:[SQueue mainQueue]] startWithNext:^(id adjustments) { __strong TGMediaPickerGalleryVideoItemView *strongSelf = weakSelf; if (strongSelf == nil) return; [strongSelf _layoutPlayerView]; - TGVideoEditAdjustments *adjustments = (TGVideoEditAdjustments *)[strongSelf.item.editingContext adjustmentsForItem:strongSelf.item.editableMediaItem]; strongSelf->_paintingImageView.image = adjustments.paintingData.image; - strongSelf->_sendAsGif = adjustments.sendAsGif; - [strongSelf _mutePlayer:adjustments.sendAsGif]; + id baseAdjustments = [strongSelf.item.editingContext adjustmentsForItem:strongSelf.item.editableMediaItem]; + strongSelf->_sendAsGif = baseAdjustments.sendAsGif; + [strongSelf _mutePlayer:baseAdjustments.sendAsGif]; - if (adjustments.sendAsGif || ([strongSelf itemIsLivePhoto])) + if (baseAdjustments.sendAsGif || ([strongSelf itemIsLivePhoto])) [strongSelf setPlayButtonHidden:true animated:false]; [strongSelf->_entitiesContainerView setupWithPaintingData:adjustments.paintingData]; @@ -1370,6 +1380,23 @@ #pragma mark - Edit Adjustments +- (SSignal *)editableItemSignal { + return [_editableItemVariable signal]; +} + +- (id)editableMediaItem { + TGVideoEditAdjustments *adjustments = (TGVideoEditAdjustments *)[self.item.editingContext adjustmentsForItem:self.item.editableMediaItem]; + if ([self itemIsLivePhoto]) { + if (adjustments.sendAsGif) { + return [[TGCameraCapturedVideo alloc] initWithAsset:self.item.editableMediaItem livePhoto:true]; + } else { + return self.item.editableMediaItem; + } + } else { + return self.item.editableMediaItem; + } +} + - (void)toggleSendAsGif { TGVideoEditAdjustments *adjustments = (TGVideoEditAdjustments *)[self.item.editingContext adjustmentsForItem:self.item.editableMediaItem]; @@ -1388,43 +1415,45 @@ trimEndValue = adjustments.trimEndValue; } } - NSTimeInterval trimDuration = trimEndValue - trimStartValue; +// NSTimeInterval trimDuration = trimEndValue - trimStartValue; bool sendAsGif = !adjustments.sendAsGif; - if (sendAsGif && _scrubberView.allowsTrimming) - { - if (trimDuration > TGVideoEditMaximumGifDuration) - { - trimEndValue = trimStartValue + TGVideoEditMaximumGifDuration; - - if (_scrubberView.value > trimEndValue) - { - [self stop]; - [_scrubberView setValue:_scrubberView.trimStartValue resetPosition:true]; - [self _seekToPosition:_scrubberView.value manual:true]; - } - - _scrubberView.trimStartValue = trimStartValue; - _scrubberView.trimEndValue = trimEndValue; - [_scrubberView setTrimApplied:true]; - [self updatePlayerRange:trimEndValue]; - } - } - else if (_shouldResetScrubber) - { - trimStartValue = 0.0; - trimEndValue = _videoDuration; - - _scrubberView.trimStartValue = trimStartValue; - _scrubberView.trimEndValue = trimEndValue; - - [_scrubberView setTrimApplied:false]; - [self updatePlayerRange:trimEndValue]; - } +// if (sendAsGif && _scrubberView.allowsTrimming) +// { +// if (trimDuration > TGVideoEditMaximumGifDuration) +// { +// trimEndValue = trimStartValue + TGVideoEditMaximumGifDuration; +// +// if (_scrubberView.value > trimEndValue) +// { +// [self stop]; +// [_scrubberView setValue:_scrubberView.trimStartValue resetPosition:true]; +// [self _seekToPosition:_scrubberView.value manual:true]; +// } +// +// _scrubberView.trimStartValue = trimStartValue; +// _scrubberView.trimEndValue = trimEndValue; +// [_scrubberView setTrimApplied:true]; +// [self updatePlayerRange:trimEndValue]; +// } +// } +// else if (_shouldResetScrubber) +// { +// trimStartValue = 0.0; +// trimEndValue = _videoDuration; +// +// _scrubberView.trimStartValue = trimStartValue; +// _scrubberView.trimEndValue = trimEndValue; +// +// [_scrubberView setTrimApplied:false]; +// [self updatePlayerRange:trimEndValue]; +// } TGVideoEditAdjustments *updatedAdjustments = [TGVideoEditAdjustments editAdjustmentsWithOriginalSize:_videoDimensions cropRect:cropRect cropOrientation:adjustments.cropOrientation cropRotation:adjustments.cropRotation cropLockedAspectRatio:adjustments.cropLockedAspectRatio cropMirrored:adjustments.cropMirrored trimStartValue:trimStartValue trimEndValue:trimEndValue toolValues:adjustments.toolValues paintingData:adjustments.paintingData sendAsGif:sendAsGif preset:adjustments.preset]; [self.item.editingContext setAdjustments:updatedAdjustments forItem:self.item.editableMediaItem]; + [_editableItemVariable set:[SSignal single:[self editableMediaItem]]]; + if (sendAsGif) { if (UIInterfaceOrientationIsPortrait([[LegacyComponentsGlobals provider] applicationStatusBarOrientation])) @@ -1552,7 +1581,7 @@ SSignal *avAsset = self.item.avAsset ?: [SSignal single:_player.currentItem.asset]; TGMediaEditingContext *editingContext = self.item.editingContext; - id editableItem = self.item.editableMediaItem; + id editableItem = self.editableMediaItem; SSignal *thumbnailsSignal = nil; if ([self.item.asset isKindOfClass:[TGMediaAsset class]] && ![self itemIsLivePhoto]) diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m index 445bf65b70..3f86397b91 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m @@ -370,17 +370,17 @@ case TGMediaAssetGifType: { -// TGCameraCapturedVideo *convertedAsset = [[TGCameraCapturedVideo alloc] initWithAsset:asset]; -// galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:convertedAsset]; - galleryItem = [[TGMediaPickerGalleryGifItem alloc] initWithAsset:asset]; + TGCameraCapturedVideo *convertedAsset = [[TGCameraCapturedVideo alloc] initWithAsset:asset livePhoto:false]; + galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:convertedAsset]; +// galleryItem = [[TGMediaPickerGalleryGifItem alloc] initWithAsset:asset]; } break; default: { -// if (asset.subtypes & TGMediaAssetSubtypePhotoLive) -// galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:asset]; -// else + if (asset.subtypes & TGMediaAssetSubtypePhotoLive) + galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:asset]; + else galleryItem = [[TGMediaPickerGalleryPhotoItem alloc] initWithAsset:asset]; } break; diff --git a/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m b/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m index 262c029fb2..8beac5ce0e 100644 --- a/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m +++ b/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m @@ -135,16 +135,26 @@ return muteBackground; } -+ (UIImage *)gifIcon ++ (UIImage *)muteIcon { return TGComponentsImageNamed(@"PhotoEditorMute.png"); } -+ (UIImage *)gifActiveIcon ++ (UIImage *)muteActiveIcon { return TGTintedImage([self gifIcon], [self accentColor]); } ++ (UIImage *)gifIcon +{ + return TGTintedImage([UIImage imageNamed:@"Editor/Gif"], [self toolbarIconColor]); +} + ++ (UIImage *)gifActiveIcon +{ + return TGTintedImage([UIImage imageNamed:@"Editor/Gif"], [self accentColor]); +} + + (UIImage *)groupIcon { return TGTintedImage(TGComponentsImageNamed(@"PhotoEditorGroupPhotosIcon.png"), UIColorRGB(0x4cb4ff)); diff --git a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift index 53d3b5a46b..2b1f9776e9 100644 --- a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift +++ b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift @@ -503,7 +503,7 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { } let mediaAccessoryPanel = MediaNavigationAccessoryPanel(context: self.context) - mediaAccessoryPanel.containerNode.headerNode.displayScrubber = type != .voice + mediaAccessoryPanel.containerNode.headerNode.displayScrubber = item.playbackData?.type != .instantVideo mediaAccessoryPanel.close = { [weak self] in if let strongSelf = self, let (_, _, _, _, type, _) = strongSelf.playlistStateAndType { strongSelf.context.sharedContext.mediaManager.setPlaylist(nil, type: type, control: SharedMediaPlayerControlAction.playback(.pause)) diff --git a/submodules/TelegramCore/Sources/PeersNearby.swift b/submodules/TelegramCore/Sources/PeersNearby.swift index 83d82b6e8a..2ab193029e 100644 --- a/submodules/TelegramCore/Sources/PeersNearby.swift +++ b/submodules/TelegramCore/Sources/PeersNearby.swift @@ -155,7 +155,7 @@ public final class PeersNearbyContext { var selfPeer: PeerNearby? for entry in updatedEntries { switch entry { - case let .selfPeer: + case .selfPeer: if let index = existingSelfPeer { entries[index] = entry } else { diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index c8202c96e7..8e3220690a 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -4264,945 +4264,945 @@ public final class PresentationStrings: Equatable { public var DialogList_UnknownPinLimitError: String { return self._s[3812]! } public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3813]! } public var ChatList_Context_Unmute: String { return self._s[3814]! } - public var Group_MessagePhotoUpdated: String { return self._s[3815]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3816]! } - public var Conversation_ContextMenuBan: String { return self._s[3817]! } - public var TwoStepAuth_EmailSent: String { return self._s[3818]! } - public var MessagePoll_NoVotes: String { return self._s[3819]! } - public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3820]! } - public var Passport_Language_is: String { return self._s[3822]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3824]! } - public var Tour_Text5: String { return self._s[3825]! } + public var KeyCommand_SearchInChat: String { return self._s[3815]! } + public var Group_MessagePhotoUpdated: String { return self._s[3816]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3817]! } + public var Conversation_ContextMenuBan: String { return self._s[3818]! } + public var TwoStepAuth_EmailSent: String { return self._s[3819]! } + public var MessagePoll_NoVotes: String { return self._s[3820]! } + public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3821]! } + public var Passport_Language_is: String { return self._s[3823]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3825]! } + public var Tour_Text5: String { return self._s[3826]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3828]!, self._r[3828]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3829]!, self._r[3829]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3829]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3830]! } + public var Undo_SecretChatDeleted: String { return self._s[3830]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3831]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3831]!, self._r[3831]!, [_0]) + return formatWithArgumentRanges(self._s[3832]!, self._r[3832]!, [_0]) } - public var Forward_ErrorDisabledForChat: String { return self._s[3832]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3833]! } - public var Paint_Edit: String { return self._s[3835]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[3837]! } - public var Undo_DeletedGroup: String { return self._s[3839]! } - public var LoginPassword_ForgotPassword: String { return self._s[3840]! } - public var Wallet_WordImport_IncorrectTitle: String { return self._s[3841]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3842]! } + public var Forward_ErrorDisabledForChat: String { return self._s[3833]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3834]! } + public var Paint_Edit: String { return self._s[3836]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[3838]! } + public var Undo_DeletedGroup: String { return self._s[3840]! } + public var LoginPassword_ForgotPassword: String { return self._s[3841]! } + public var Wallet_WordImport_IncorrectTitle: String { return self._s[3842]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3843]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3843]!, self._r[3843]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3844]!, self._r[3844]!, [_0, _1]) } - public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3844]! } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3845]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3846]! } - public var Passport_Language_uz: String { return self._s[3847]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3848]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3849]! } - public var Map_StopLiveLocation: String { return self._s[3851]! } - public var VoiceOver_MessageContextSend: String { return self._s[3853]! } - public var PasscodeSettings_Help: String { return self._s[3854]! } - public var NotificationsSound_Input: String { return self._s[3855]! } - public var Share_Title: String { return self._s[3858]! } - public var LogoutOptions_Title: String { return self._s[3859]! } - public var Wallet_Send_AddressText: String { return self._s[3860]! } - public var Login_TermsOfServiceAgree: String { return self._s[3861]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3862]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3863]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3864]! } - public var EnterPasscode_EnterTitle: String { return self._s[3865]! } + public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3845]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3846]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3847]! } + public var Passport_Language_uz: String { return self._s[3848]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3849]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3850]! } + public var Map_StopLiveLocation: String { return self._s[3852]! } + public var VoiceOver_MessageContextSend: String { return self._s[3854]! } + public var PasscodeSettings_Help: String { return self._s[3855]! } + public var NotificationsSound_Input: String { return self._s[3856]! } + public var Share_Title: String { return self._s[3859]! } + public var LogoutOptions_Title: String { return self._s[3860]! } + public var Wallet_Send_AddressText: String { return self._s[3861]! } + public var Login_TermsOfServiceAgree: String { return self._s[3862]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3863]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3864]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3865]! } + public var EnterPasscode_EnterTitle: String { return self._s[3866]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3866]!, self._r[3866]!, [_0]) + return formatWithArgumentRanges(self._s[3867]!, self._r[3867]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3867]! } - public var Conversation_AddToContacts: String { return self._s[3868]! } + public var Settings_CopyPhoneNumber: String { return self._s[3868]! } + public var Conversation_AddToContacts: String { return self._s[3869]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3869]!, self._r[3869]!, [_0]) + return formatWithArgumentRanges(self._s[3870]!, self._r[3870]!, [_0]) } - public var NotificationsSound_Keys: String { return self._s[3870]! } + public var NotificationsSound_Keys: String { return self._s[3871]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3871]!, self._r[3871]!, [_0]) + return formatWithArgumentRanges(self._s[3872]!, self._r[3872]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3872]! } - public var Message_Video: String { return self._s[3873]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3874]! } + public var Notification_MessageLifetime1w: String { return self._s[3873]! } + public var Message_Video: String { return self._s[3874]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3875]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3875]!, self._r[3875]!, [_1]) + return formatWithArgumentRanges(self._s[3876]!, self._r[3876]!, [_1]) } - public var Wallet_Receive_AmountInfo: String { return self._s[3878]! } - public var Stats_Overview: String { return self._s[3879]! } + public var Wallet_Receive_AmountInfo: String { return self._s[3879]! } + public var Stats_Overview: String { return self._s[3880]! } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3880]!, self._r[3880]!, [_0]) - } - public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3881]!, self._r[3881]!, [_0]) } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3882]! } - public var Passport_Language_mk: String { return self._s[3883]! } - public var ChatListFolder_CategoryNonContacts: String { return self._s[3884]! } - public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3885]!, self._r[3885]!, [_1, _2, _3]) + public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3882]!, self._r[3882]!, [_0]) } - public var CreatePoll_CancelConfirmation: String { return self._s[3886]! } - public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3887]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3889]! } - public var PrivacyPolicy_Decline: String { return self._s[3890]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3891]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3892]! } - public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3893]! } - public var Permissions_SiriAllow_v0: String { return self._s[3895]! } - public var Wallet_Month_ShortAugust: String { return self._s[3896]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3897]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3883]! } + public var Passport_Language_mk: String { return self._s[3884]! } + public var ChatListFolder_CategoryNonContacts: String { return self._s[3885]! } + public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3886]!, self._r[3886]!, [_1, _2, _3]) + } + public var CreatePoll_CancelConfirmation: String { return self._s[3887]! } + public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3888]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3890]! } + public var PrivacyPolicy_Decline: String { return self._s[3891]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3892]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3893]! } + public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3894]! } + public var Permissions_SiriAllow_v0: String { return self._s[3896]! } + public var Wallet_Month_ShortAugust: String { return self._s[3897]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3898]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3898]!, self._r[3898]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3899]!, self._r[3899]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3899]!, self._r[3899]!, [_0]) + return formatWithArgumentRanges(self._s[3900]!, self._r[3900]!, [_0]) } - public var Paint_Regular: String { return self._s[3900]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3901]! } - public var SocksProxySetup_ShareLink: String { return self._s[3902]! } - public var Wallet_Qr_Title: String { return self._s[3903]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3904]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3906]! } - public var Wallet_Settings_Configuration: String { return self._s[3907]! } - public var GroupInfo_InviteByLink: String { return self._s[3908]! } - public var MessageTimer_Custom: String { return self._s[3909]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3910]! } - public var Conversation_StopQuizConfirmationTitle: String { return self._s[3911]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3913]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[3914]! } - public var VoiceOver_Chat_Selected: String { return self._s[3915]! } - public var Paint_Pen: String { return self._s[3916]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3917]! } - public var Channel_Username_InvalidTaken: String { return self._s[3918]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3919]! } - public var Wallet_WordCheck_TryAgain: String { return self._s[3920]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[3921]! } - public var Settings_ChatBackground: String { return self._s[3922]! } - public var Channel_Subscribers_Title: String { return self._s[3923]! } - public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3924]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3925]! } - public var Watch_ConnectionDescription: String { return self._s[3926]! } - public var OldChannels_NoticeText: String { return self._s[3929]! } - public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3930]! } - public var IntentsSettings_SuggestBy: String { return self._s[3932]! } - public var Theme_ThemeChangedText: String { return self._s[3933]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3934]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3935]! } - public var Wallet_Send_TransactionInProgress: String { return self._s[3936]! } - public var Conversation_SendDice: String { return self._s[3937]! } - public var EditProfile_Title: String { return self._s[3938]! } - public var NotificationsSound_Bamboo: String { return self._s[3940]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3942]! } - public var Login_SmsRequestState2: String { return self._s[3943]! } - public var Passport_Language_ar: String { return self._s[3944]! } + public var Paint_Regular: String { return self._s[3901]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3902]! } + public var SocksProxySetup_ShareLink: String { return self._s[3903]! } + public var Wallet_Qr_Title: String { return self._s[3904]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3905]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3907]! } + public var Wallet_Settings_Configuration: String { return self._s[3908]! } + public var GroupInfo_InviteByLink: String { return self._s[3909]! } + public var MessageTimer_Custom: String { return self._s[3910]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3911]! } + public var Conversation_StopQuizConfirmationTitle: String { return self._s[3912]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3914]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[3915]! } + public var VoiceOver_Chat_Selected: String { return self._s[3916]! } + public var Paint_Pen: String { return self._s[3917]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3918]! } + public var Channel_Username_InvalidTaken: String { return self._s[3919]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3920]! } + public var Wallet_WordCheck_TryAgain: String { return self._s[3921]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[3922]! } + public var Settings_ChatBackground: String { return self._s[3923]! } + public var Channel_Subscribers_Title: String { return self._s[3924]! } + public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3925]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3926]! } + public var Watch_ConnectionDescription: String { return self._s[3927]! } + public var OldChannels_NoticeText: String { return self._s[3930]! } + public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3931]! } + public var IntentsSettings_SuggestBy: String { return self._s[3933]! } + public var Theme_ThemeChangedText: String { return self._s[3934]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3935]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3936]! } + public var Wallet_Send_TransactionInProgress: String { return self._s[3937]! } + public var Conversation_SendDice: String { return self._s[3938]! } + public var EditProfile_Title: String { return self._s[3939]! } + public var NotificationsSound_Bamboo: String { return self._s[3941]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3943]! } + public var Login_SmsRequestState2: String { return self._s[3944]! } + public var Passport_Language_ar: String { return self._s[3945]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3945]!, self._r[3945]!, [_0]) + return formatWithArgumentRanges(self._s[3946]!, self._r[3946]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3946]! } - public var Wallet_Created_Text: String { return self._s[3947]! } - public var Conversation_MessageDialogEdit: String { return self._s[3949]! } - public var Wallet_Created_Proceed: String { return self._s[3950]! } - public var Wallet_Words_Done: String { return self._s[3951]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[3952]! } - public var ChatListFolder_NameChannels: String { return self._s[3953]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3947]! } + public var Wallet_Created_Text: String { return self._s[3948]! } + public var Conversation_MessageDialogEdit: String { return self._s[3950]! } + public var Wallet_Created_Proceed: String { return self._s[3951]! } + public var Wallet_Words_Done: String { return self._s[3952]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[3953]! } + public var ChatListFolder_NameChannels: String { return self._s[3954]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_1]) + return formatWithArgumentRanges(self._s[3955]!, self._r[3955]!, [_1]) } - public var Common_Close: String { return self._s[3955]! } - public var GroupInfo_PublicLink: String { return self._s[3956]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3957]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3958]! } + public var Common_Close: String { return self._s[3956]! } + public var GroupInfo_PublicLink: String { return self._s[3957]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3958]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3959]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3962]!, self._r[3962]!, [_0]) + return formatWithArgumentRanges(self._s[3963]!, self._r[3963]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3963]! } + public var UserInfo_About_Placeholder: String { return self._s[3964]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3964]!, self._r[3964]!, [_0]) + return formatWithArgumentRanges(self._s[3965]!, self._r[3965]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3965]! } - public var Channel_Info_Banned: String { return self._s[3967]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3966]! } + public var Channel_Info_Banned: String { return self._s[3968]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3968]!, self._r[3968]!, [_0]) + return formatWithArgumentRanges(self._s[3969]!, self._r[3969]!, [_0]) } - public var Appearance_Other: String { return self._s[3969]! } - public var Passport_Language_my: String { return self._s[3970]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3971]! } + public var Appearance_Other: String { return self._s[3970]! } + public var Passport_Language_my: String { return self._s[3971]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3972]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3972]!, self._r[3972]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3973]!, self._r[3973]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3973]! } - public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3974]! } - public var Preview_CopyAddress: String { return self._s[3975]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3974]! } + public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3975]! } + public var Preview_CopyAddress: String { return self._s[3976]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3976]!, self._r[3976]!, [_0]) + return formatWithArgumentRanges(self._s[3977]!, self._r[3977]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3977]! } - public var UserInfo_BotSettings: String { return self._s[3978]! } - public var LiveLocation_MenuStopAll: String { return self._s[3980]! } - public var Passport_PasswordCreate: String { return self._s[3981]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3982]! } - public var Message_PinnedLocationMessage: String { return self._s[3983]! } - public var Map_Satellite: String { return self._s[3984]! } - public var Watch_Message_Unsupported: String { return self._s[3985]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3986]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3987]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3978]! } + public var UserInfo_BotSettings: String { return self._s[3979]! } + public var LiveLocation_MenuStopAll: String { return self._s[3981]! } + public var Passport_PasswordCreate: String { return self._s[3982]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3983]! } + public var Message_PinnedLocationMessage: String { return self._s[3984]! } + public var Map_Satellite: String { return self._s[3985]! } + public var Watch_Message_Unsupported: String { return self._s[3986]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3987]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3988]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3988]!, self._r[3988]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3989]!, self._r[3989]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3989]!, self._r[3989]!, [_0]) + return formatWithArgumentRanges(self._s[3990]!, self._r[3990]!, [_0]) } - public var Wallet_WordImport_Continue: String { return self._s[3990]! } + public var Wallet_WordImport_Continue: String { return self._s[3991]! } public func TwoFactorSetup_EmailVerification_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3991]!, self._r[3991]!, [_0]) + return formatWithArgumentRanges(self._s[3992]!, self._r[3992]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3992]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3993]! } - public var NotificationsSound_None: String { return self._s[3994]! } - public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3995]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3997]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3998]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3993]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3994]! } + public var NotificationsSound_None: String { return self._s[3995]! } + public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3996]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3998]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3999]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3999]!, self._r[3999]!, [_1]) + return formatWithArgumentRanges(self._s[4000]!, self._r[4000]!, [_1]) } - public var Cache_Indexing: String { return self._s[4000]! } - public var DialogList_RecentTitlePeople: String { return self._s[4002]! } - public var DialogList_EncryptionRejected: String { return self._s[4003]! } - public var GroupInfo_Administrators: String { return self._s[4004]! } - public var Passport_ScanPassportHelp: String { return self._s[4005]! } - public var Application_Name: String { return self._s[4006]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[4007]! } - public var Conversation_Timer_Title: String { return self._s[4008]! } - public var ChatList_PeerTypeGroup: String { return self._s[4009]! } - public var PeopleNearby_MakeVisible: String { return self._s[4011]! } - public var Appearance_ThemeCarouselDay: String { return self._s[4012]! } - public var Stats_GrowthTitle: String { return self._s[4013]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4014]! } + public var Cache_Indexing: String { return self._s[4001]! } + public var DialogList_RecentTitlePeople: String { return self._s[4003]! } + public var DialogList_EncryptionRejected: String { return self._s[4004]! } + public var GroupInfo_Administrators: String { return self._s[4005]! } + public var Passport_ScanPassportHelp: String { return self._s[4006]! } + public var Application_Name: String { return self._s[4007]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[4008]! } + public var Conversation_Timer_Title: String { return self._s[4009]! } + public var ChatList_PeerTypeGroup: String { return self._s[4010]! } + public var PeopleNearby_MakeVisible: String { return self._s[4012]! } + public var Appearance_ThemeCarouselDay: String { return self._s[4013]! } + public var Stats_GrowthTitle: String { return self._s[4014]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4015]! } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4015]!, self._r[4015]!, [_0]) - } - public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4016]!, self._r[4016]!, [_0]) } - public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { + public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4017]!, self._r[4017]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4018]! } - public var Privacy_ChatsTitle: String { return self._s[4019]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[4020]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4021]! } - public var Watch_Suggestion_HoldOn: String { return self._s[4022]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[4023]! } - public var WebBrowser_Title: String { return self._s[4024]! } - public var Group_LinkedChannel: String { return self._s[4025]! } - public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4026]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4027]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4028]! } - public var Appearance_TextSize_UseSystem: String { return self._s[4029]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[4030]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4032]! } - public var Channel_Setup_TypePublic: String { return self._s[4034]! } + public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4018]!, self._r[4018]!, [_0]) + } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4019]! } + public var Privacy_ChatsTitle: String { return self._s[4020]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[4021]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4022]! } + public var Watch_Suggestion_HoldOn: String { return self._s[4023]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[4024]! } + public var WebBrowser_Title: String { return self._s[4025]! } + public var Group_LinkedChannel: String { return self._s[4026]! } + public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4027]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4028]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4029]! } + public var Appearance_TextSize_UseSystem: String { return self._s[4030]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[4031]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4033]! } + public var Channel_Setup_TypePublic: String { return self._s[4035]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4035]!, self._r[4035]!, [_0]) + return formatWithArgumentRanges(self._s[4036]!, self._r[4036]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[4037]! } - public var MessagePoll_ViewResults: String { return self._s[4038]! } - public var Map_OpenInMaps: String { return self._s[4040]! } + public var Channel_TypeSetup_Title: String { return self._s[4038]! } + public var MessagePoll_ViewResults: String { return self._s[4039]! } + public var Map_OpenInMaps: String { return self._s[4041]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4041]!, self._r[4041]!, [_1]) + return formatWithArgumentRanges(self._s[4042]!, self._r[4042]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[4043]! } + public var NotificationsSound_Tremolo: String { return self._s[4044]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4044]!, self._r[4044]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4045]!, self._r[4045]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[4045]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4046]! } - public var Passport_PasswordHelp: String { return self._s[4048]! } - public var Login_CodeExpiredError: String { return self._s[4049]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4050]! } - public var Conversation_TitleUnmute: String { return self._s[4051]! } - public var Passport_Identity_ScansHelp: String { return self._s[4052]! } - public var Passport_Language_lo: String { return self._s[4053]! } - public var Camera_FlashAuto: String { return self._s[4054]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[4055]! } - public var Common_Cancel: String { return self._s[4056]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[4057]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4058]! } - public var Appearance_TintAllColors: String { return self._s[4059]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[4046]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4047]! } + public var Passport_PasswordHelp: String { return self._s[4049]! } + public var Login_CodeExpiredError: String { return self._s[4050]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4051]! } + public var Conversation_TitleUnmute: String { return self._s[4052]! } + public var Passport_Identity_ScansHelp: String { return self._s[4053]! } + public var Passport_Language_lo: String { return self._s[4054]! } + public var Camera_FlashAuto: String { return self._s[4055]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[4056]! } + public var Common_Cancel: String { return self._s[4057]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[4058]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4059]! } + public var Appearance_TintAllColors: String { return self._s[4060]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4060]!, self._r[4060]!, [_1]) + return formatWithArgumentRanges(self._s[4061]!, self._r[4061]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[4061]! } - public var ChatSettings_Title: String { return self._s[4063]! } - public var Passport_PasswordReset: String { return self._s[4064]! } - public var SocksProxySetup_TypeNone: String { return self._s[4065]! } - public var EditTheme_Title: String { return self._s[4068]! } - public var PhoneNumberHelp_Help: String { return self._s[4069]! } - public var Checkout_EnterPassword: String { return self._s[4070]! } - public var Activity_UploadingDocument: String { return self._s[4072]! } - public var Share_AuthTitle: String { return self._s[4073]! } - public var State_Connecting: String { return self._s[4074]! } - public var Profile_MessageLifetime1w: String { return self._s[4075]! } - public var Conversation_ContextMenuReport: String { return self._s[4076]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4077]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[4078]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[4062]! } + public var ChatSettings_Title: String { return self._s[4064]! } + public var Passport_PasswordReset: String { return self._s[4065]! } + public var SocksProxySetup_TypeNone: String { return self._s[4066]! } + public var EditTheme_Title: String { return self._s[4069]! } + public var PhoneNumberHelp_Help: String { return self._s[4070]! } + public var Checkout_EnterPassword: String { return self._s[4071]! } + public var Activity_UploadingDocument: String { return self._s[4073]! } + public var Share_AuthTitle: String { return self._s[4074]! } + public var State_Connecting: String { return self._s[4075]! } + public var Profile_MessageLifetime1w: String { return self._s[4076]! } + public var Conversation_ContextMenuReport: String { return self._s[4077]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4078]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[4079]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4079]!, self._r[4079]!, [_0]) + return formatWithArgumentRanges(self._s[4080]!, self._r[4080]!, [_0]) } - public var AuthSessions_Terminate: String { return self._s[4080]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4081]! } - public var PeerInfo_PaneAudio: String { return self._s[4082]! } + public var AuthSessions_Terminate: String { return self._s[4081]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4082]! } + public var PeerInfo_PaneAudio: String { return self._s[4083]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4083]!, self._r[4083]!, [_0]) + return formatWithArgumentRanges(self._s[4084]!, self._r[4084]!, [_0]) } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4085]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4086]! } - public var PhotoEditor_Set: String { return self._s[4087]! } - public var EmptyGroupInfo_Title: String { return self._s[4088]! } - public var Login_PadPhoneHelp: String { return self._s[4090]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4092]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4094]! } - public var NotificationsSound_Complete: String { return self._s[4095]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4096]! } - public var Group_Info_AdminLog: String { return self._s[4097]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4098]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4086]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4087]! } + public var PhotoEditor_Set: String { return self._s[4088]! } + public var EmptyGroupInfo_Title: String { return self._s[4089]! } + public var Login_PadPhoneHelp: String { return self._s[4091]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4093]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4095]! } + public var NotificationsSound_Complete: String { return self._s[4096]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4097]! } + public var Group_Info_AdminLog: String { return self._s[4098]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4099]! } public func Wallet_Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4099]!, self._r[4099]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4100]!, self._r[4100]!, [_1, _2, _3]) } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4100]! } - public var Group_Location_CreateInThisPlace: String { return self._s[4102]! } - public var Conversation_Admin: String { return self._s[4103]! } - public var Conversation_GifTooltip: String { return self._s[4104]! } - public var Passport_NotLoggedInMessage: String { return self._s[4105]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4101]! } + public var Group_Location_CreateInThisPlace: String { return self._s[4103]! } + public var Conversation_Admin: String { return self._s[4104]! } + public var Conversation_GifTooltip: String { return self._s[4105]! } + public var Passport_NotLoggedInMessage: String { return self._s[4106]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4107]!, self._r[4107]!, [_0]) + return formatWithArgumentRanges(self._s[4108]!, self._r[4108]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[4108]! } - public var SharedMedia_EmptyTitle: String { return self._s[4110]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4112]! } - public var Username_Help: String { return self._s[4113]! } - public var DialogList_LanguageTooltip: String { return self._s[4115]! } - public var Map_LoadError: String { return self._s[4116]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4117]! } - public var Channel_AdminLog_AddMembers: String { return self._s[4118]! } - public var ArchivedChats_IntroTitle2: String { return self._s[4119]! } - public var Notification_Exceptions_NewException: String { return self._s[4120]! } - public var TwoStepAuth_EmailTitle: String { return self._s[4121]! } - public var WatchRemote_AlertText: String { return self._s[4122]! } + public var Profile_MessageLifetimeForever: String { return self._s[4109]! } + public var SharedMedia_EmptyTitle: String { return self._s[4111]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4113]! } + public var Username_Help: String { return self._s[4114]! } + public var DialogList_LanguageTooltip: String { return self._s[4116]! } + public var Map_LoadError: String { return self._s[4117]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4118]! } + public var Channel_AdminLog_AddMembers: String { return self._s[4119]! } + public var ArchivedChats_IntroTitle2: String { return self._s[4120]! } + public var Notification_Exceptions_NewException: String { return self._s[4121]! } + public var TwoStepAuth_EmailTitle: String { return self._s[4122]! } + public var WatchRemote_AlertText: String { return self._s[4123]! } public func Wallet_Send_ConfirmationText(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4123]!, self._r[4123]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4124]!, self._r[4124]!, [_1, _2, _3]) } - public var ChatSettings_ConnectionType_Title: String { return self._s[4127]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[4128]! } public func PUSH_PINNED_QUIZ(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4128]!, self._r[4128]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4129]!, self._r[4129]!, [_1, _2]) } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4129]!, self._r[4129]!, [_0]) + return formatWithArgumentRanges(self._s[4130]!, self._r[4130]!, [_0]) } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4130]! } - public var WebBrowser_DefaultBrowser: String { return self._s[4131]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[4132]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4131]! } + public var WebBrowser_DefaultBrowser: String { return self._s[4132]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[4133]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4133]!, self._r[4133]!, [_0]) + return formatWithArgumentRanges(self._s[4134]!, self._r[4134]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4134]!, self._r[4134]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4135]!, self._r[4135]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[4135]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4136]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[4138]! } - public var Wallet_Created_ExportErrorText: String { return self._s[4139]! } - public var ChatList_UndoArchiveText1: String { return self._s[4140]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4141]! } - public var AccessDenied_VideoMicrophone: String { return self._s[4142]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4143]! } - public var Cache_ClearNone: String { return self._s[4144]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[4145]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[4146]! } + public var Group_AdminLog_EmptyText: String { return self._s[4136]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4137]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[4139]! } + public var Wallet_Created_ExportErrorText: String { return self._s[4140]! } + public var ChatList_UndoArchiveText1: String { return self._s[4141]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4142]! } + public var AccessDenied_VideoMicrophone: String { return self._s[4143]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4144]! } + public var Cache_ClearNone: String { return self._s[4145]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[4146]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[4147]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4147]!, self._r[4147]!, [_0]) + return formatWithArgumentRanges(self._s[4148]!, self._r[4148]!, [_0]) } - public var Passport_Identity_Country: String { return self._s[4148]! } + public var Passport_Identity_Country: String { return self._s[4149]! } public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4149]!, self._r[4149]!, [_0]) - } - public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4150]!, self._r[4150]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[4151]! } - public var AccessDenied_Settings: String { return self._s[4152]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4153]! } - public var Month_ShortMay: String { return self._s[4155]! } - public var Compose_NewGroup: String { return self._s[4157]! } - public var Group_Setup_TypePrivate: String { return self._s[4159]! } - public var Login_PadPhoneHelpTitle: String { return self._s[4161]! } - public var Appearance_ThemeDayClassic: String { return self._s[4162]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4163]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[4164]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4165]! } - public var Conversation_typing: String { return self._s[4167]! } - public var Undo_ScheduledMessagesCleared: String { return self._s[4168]! } - public var Paint_Masks: String { return self._s[4169]! } - public var Contacts_DeselectAll: String { return self._s[4170]! } - public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4171]!, self._r[4171]!, [_0]) + public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4151]!, self._r[4151]!, [_0]) } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4172]! } - public var Username_InvalidTaken: String { return self._s[4173]! } - public var Call_StatusNoAnswer: String { return self._s[4174]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[4175]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4176]! } - public var Passport_Identity_Selfie: String { return self._s[4177]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4178]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4179]! } - public var Conversation_ClearSecretHistory: String { return self._s[4180]! } - public var PeopleNearby_Description: String { return self._s[4182]! } - public var NetworkUsageSettings_Title: String { return self._s[4183]! } - public var Your_cards_security_code_is_invalid: String { return self._s[4185]! } - public var Stats_EnabledNotifications: String { return self._s[4186]! } + public var Exceptions_AddToExceptions: String { return self._s[4152]! } + public var AccessDenied_Settings: String { return self._s[4153]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4154]! } + public var Month_ShortMay: String { return self._s[4156]! } + public var Compose_NewGroup: String { return self._s[4158]! } + public var Group_Setup_TypePrivate: String { return self._s[4160]! } + public var Login_PadPhoneHelpTitle: String { return self._s[4162]! } + public var Appearance_ThemeDayClassic: String { return self._s[4163]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4164]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[4165]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4166]! } + public var Conversation_typing: String { return self._s[4168]! } + public var Undo_ScheduledMessagesCleared: String { return self._s[4169]! } + public var Paint_Masks: String { return self._s[4170]! } + public var Contacts_DeselectAll: String { return self._s[4171]! } + public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4172]!, self._r[4172]!, [_0]) + } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4173]! } + public var Username_InvalidTaken: String { return self._s[4174]! } + public var Call_StatusNoAnswer: String { return self._s[4175]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[4176]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4177]! } + public var Passport_Identity_Selfie: String { return self._s[4178]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4179]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4180]! } + public var Conversation_ClearSecretHistory: String { return self._s[4181]! } + public var PeopleNearby_Description: String { return self._s[4183]! } + public var NetworkUsageSettings_Title: String { return self._s[4184]! } + public var Your_cards_security_code_is_invalid: String { return self._s[4186]! } + public var Stats_EnabledNotifications: String { return self._s[4187]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4188]!, self._r[4188]!, [_0]) + return formatWithArgumentRanges(self._s[4189]!, self._r[4189]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4189]!, self._r[4189]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4190]!, self._r[4190]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[4191]! } - public var VoiceOver_Navigation_Search: String { return self._s[4192]! } - public var Map_LiveLocationTitle: String { return self._s[4193]! } - public var Login_InfoAvatarAdd: String { return self._s[4194]! } - public var Passport_Identity_FilesView: String { return self._s[4195]! } - public var ChatListFolderSettings_Title: String { return self._s[4196]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[4197]! } - public var Privacy_Calls_NeverAllow: String { return self._s[4198]! } - public var VoiceOver_Chat_File: String { return self._s[4199]! } - public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4200]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[4192]! } + public var VoiceOver_Navigation_Search: String { return self._s[4193]! } + public var Map_LiveLocationTitle: String { return self._s[4194]! } + public var Login_InfoAvatarAdd: String { return self._s[4195]! } + public var Passport_Identity_FilesView: String { return self._s[4196]! } + public var ChatListFolderSettings_Title: String { return self._s[4197]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[4198]! } + public var Privacy_Calls_NeverAllow: String { return self._s[4199]! } + public var VoiceOver_Chat_File: String { return self._s[4200]! } + public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4201]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4201]!, self._r[4201]!, [_0]) + return formatWithArgumentRanges(self._s[4202]!, self._r[4202]!, [_0]) } - public var ChatList_EmptyChatList: String { return self._s[4203]! } - public var ContactInfo_PhoneNumberHidden: String { return self._s[4204]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[4205]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4206]! } + public var ChatList_EmptyChatList: String { return self._s[4204]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[4205]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[4206]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4207]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4207]!, self._r[4207]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4208]!, self._r[4208]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4208]! } - public var Wallet_Intro_CreateErrorText: String { return self._s[4209]! } - public var Tour_Title2: String { return self._s[4210]! } - public var Wallet_Sent_ViewWallet: String { return self._s[4211]! } - public var Conversation_FileOpenIn: String { return self._s[4212]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4213]! } - public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4214]! } - public var Wallpaper_Set: String { return self._s[4215]! } - public var Passport_Identity_Translations: String { return self._s[4217]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4209]! } + public var Wallet_Intro_CreateErrorText: String { return self._s[4210]! } + public var Tour_Title2: String { return self._s[4211]! } + public var Wallet_Sent_ViewWallet: String { return self._s[4212]! } + public var Conversation_FileOpenIn: String { return self._s[4213]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4214]! } + public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4215]! } + public var Wallpaper_Set: String { return self._s[4216]! } + public var Passport_Identity_Translations: String { return self._s[4218]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4218]!, self._r[4218]!, [_0]) + return formatWithArgumentRanges(self._s[4219]!, self._r[4219]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[4219]! } + public var Channel_LeaveChannel: String { return self._s[4220]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4220]!, self._r[4220]!, [_1]) + return formatWithArgumentRanges(self._s[4221]!, self._r[4221]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4222]! } - public var PhotoEditor_HighlightsTint: String { return self._s[4223]! } - public var MessagePoll_LabelPoll: String { return self._s[4224]! } - public var Passport_Email_Delete: String { return self._s[4225]! } - public var Conversation_Mute: String { return self._s[4227]! } - public var Channel_AddBotAsAdmin: String { return self._s[4228]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[4230]! } - public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4231]! } - public var ChatSettings_IntentsSettings: String { return self._s[4233]! } - public var Channel_Management_LabelOwner: String { return self._s[4234]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4223]! } + public var PhotoEditor_HighlightsTint: String { return self._s[4224]! } + public var MessagePoll_LabelPoll: String { return self._s[4225]! } + public var Passport_Email_Delete: String { return self._s[4226]! } + public var Conversation_Mute: String { return self._s[4228]! } + public var Channel_AddBotAsAdmin: String { return self._s[4229]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[4231]! } + public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4232]! } + public var ChatSettings_IntentsSettings: String { return self._s[4234]! } + public var Channel_Management_LabelOwner: String { return self._s[4235]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4235]!, self._r[4235]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4236]!, self._r[4236]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[4236]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[4237]! } - public var Common_No: String { return self._s[4238]! } - public var Weekday_Sunday: String { return self._s[4239]! } - public var Notification_Reply: String { return self._s[4240]! } - public var Conversation_ViewMessage: String { return self._s[4241]! } + public var Calls_CallTabDescription: String { return self._s[4237]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[4238]! } + public var Common_No: String { return self._s[4239]! } + public var Weekday_Sunday: String { return self._s[4240]! } + public var Notification_Reply: String { return self._s[4241]! } + public var Conversation_ViewMessage: String { return self._s[4242]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) - } - public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4243]!, self._r[4243]!, [_0]) } + public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4244]!, self._r[4244]!, [_0]) + } public func Wallet_Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4244]!, self._r[4244]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4245]!, self._r[4245]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4245]! } - public var Wallet_Send_Title: String { return self._s[4246]! } - public var Message_PinnedDocumentMessage: String { return self._s[4247]! } - public var Wallet_Info_RefreshErrorText: String { return self._s[4248]! } - public var DialogList_TabTitle: String { return self._s[4250]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4251]! } - public var Passport_FieldEmail: String { return self._s[4252]! } - public var Conversation_UnpinMessageAlert: String { return self._s[4253]! } - public var Passport_Address_TypeBankStatement: String { return self._s[4254]! } - public var Wallet_SecureStorageReset_Title: String { return self._s[4255]! } - public var Passport_Identity_ExpiryDate: String { return self._s[4256]! } - public var Privacy_Calls_P2P: String { return self._s[4257]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4246]! } + public var Wallet_Send_Title: String { return self._s[4247]! } + public var Message_PinnedDocumentMessage: String { return self._s[4248]! } + public var Wallet_Info_RefreshErrorText: String { return self._s[4249]! } + public var DialogList_TabTitle: String { return self._s[4251]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4252]! } + public var Passport_FieldEmail: String { return self._s[4253]! } + public var Conversation_UnpinMessageAlert: String { return self._s[4254]! } + public var Passport_Address_TypeBankStatement: String { return self._s[4255]! } + public var Wallet_SecureStorageReset_Title: String { return self._s[4256]! } + public var Passport_Identity_ExpiryDate: String { return self._s[4257]! } + public var Privacy_Calls_P2P: String { return self._s[4258]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4259]!, self._r[4259]!, [_0]) + return formatWithArgumentRanges(self._s[4260]!, self._r[4260]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[4260]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[4261]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4261]!, self._r[4261]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4262]!, self._r[4262]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[4262]! } - public var EnterPasscode_ChangeTitle: String { return self._s[4263]! } - public var TwoFactorSetup_Email_Title: String { return self._s[4264]! } - public var Passport_InfoText: String { return self._s[4265]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4266]! } + public var Stickers_ClearRecent: String { return self._s[4263]! } + public var EnterPasscode_ChangeTitle: String { return self._s[4264]! } + public var TwoFactorSetup_Email_Title: String { return self._s[4265]! } + public var Passport_InfoText: String { return self._s[4266]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4267]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4267]!, self._r[4267]!, [_0]) + return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4269]!, self._r[4269]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4269]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[4270]! } - public var VoiceOver_Navigation_Compose: String { return self._s[4271]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[4272]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[4274]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4275]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4270]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[4271]! } + public var VoiceOver_Navigation_Compose: String { return self._s[4272]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[4273]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[4275]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4276]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4276]!, self._r[4276]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4277]!, self._r[4277]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4279]! } - public var ChatSettings_OpenLinksIn: String { return self._s[4280]! } - public var Map_HomeAndWorkTitle: String { return self._s[4281]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4280]! } + public var ChatSettings_OpenLinksIn: String { return self._s[4281]! } + public var Map_HomeAndWorkTitle: String { return self._s[4282]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4283]!, self._r[4283]!, [_0]) + return formatWithArgumentRanges(self._s[4284]!, self._r[4284]!, [_0]) } - public var DialogList_Unread: String { return self._s[4284]! } + public var DialogList_Unread: String { return self._s[4285]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4285]!, self._r[4285]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4286]!, self._r[4286]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[4286]! } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4287]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4288]! } + public var User_DeletedAccount: String { return self._s[4287]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4288]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4289]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4289]!, self._r[4289]!, [_0]) + return formatWithArgumentRanges(self._s[4290]!, self._r[4290]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[4290]! } - public var SharedMedia_CategoryMedia: String { return self._s[4291]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4292]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4293]! } - public var Watch_ChatList_Compose: String { return self._s[4294]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4295]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[4296]! } - public var Watch_Microphone_Access: String { return self._s[4297]! } - public var Group_Setup_HistoryHeader: String { return self._s[4298]! } - public var Map_SetThisLocation: String { return self._s[4299]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4300]! } - public var Activity_UploadingPhoto: String { return self._s[4301]! } - public var Conversation_Edit: String { return self._s[4303]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[4304]! } - public var Login_TermsOfServiceDecline: String { return self._s[4305]! } - public var Message_PinnedContactMessage: String { return self._s[4306]! } + public var UserInfo_NotificationsDefault: String { return self._s[4291]! } + public var SharedMedia_CategoryMedia: String { return self._s[4292]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4293]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4294]! } + public var Watch_ChatList_Compose: String { return self._s[4295]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4296]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[4297]! } + public var Watch_Microphone_Access: String { return self._s[4298]! } + public var Group_Setup_HistoryHeader: String { return self._s[4299]! } + public var Map_SetThisLocation: String { return self._s[4300]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4301]! } + public var Activity_UploadingPhoto: String { return self._s[4302]! } + public var Conversation_Edit: String { return self._s[4304]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[4305]! } + public var Login_TermsOfServiceDecline: String { return self._s[4306]! } + public var Message_PinnedContactMessage: String { return self._s[4307]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4307]!, self._r[4307]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[4309]!, self._r[4309]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[4309]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[4311]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4312]! } + public var Appearance_LargeEmoji: String { return self._s[4310]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[4312]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4313]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4313]!, self._r[4313]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4314]!, self._r[4314]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[4314]! } - public var Message_PinnedPhotoMessage: String { return self._s[4315]! } - public var Passport_FieldPhone: String { return self._s[4316]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4317]! } - public var Stats_NotificationsTitle: String { return self._s[4318]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[4319]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[4321]! } - public var Conversation_Call: String { return self._s[4322]! } - public var Common_TakePhoto: String { return self._s[4324]! } - public var Group_EditAdmin_RankTitle: String { return self._s[4325]! } - public var Wallet_Receive_CommentHeader: String { return self._s[4326]! } - public var Channel_NotificationLoading: String { return self._s[4327]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[4315]! } + public var Message_PinnedPhotoMessage: String { return self._s[4316]! } + public var Passport_FieldPhone: String { return self._s[4317]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4318]! } + public var Stats_NotificationsTitle: String { return self._s[4319]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[4320]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[4322]! } + public var Conversation_Call: String { return self._s[4323]! } + public var Common_TakePhoto: String { return self._s[4325]! } + public var Group_EditAdmin_RankTitle: String { return self._s[4326]! } + public var Wallet_Receive_CommentHeader: String { return self._s[4327]! } + public var Channel_NotificationLoading: String { return self._s[4328]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4328]!, self._r[4328]!, [_0]) - } - public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4329]!, self._r[4329]!, [_0]) } + public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4330]!, self._r[4330]!, [_0]) + } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4330]!, self._r[4330]!, [_1]) + return formatWithArgumentRanges(self._s[4331]!, self._r[4331]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[4331]! } + public var Permissions_SiriTitle_v0: String { return self._s[4332]! } public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4332]!, self._r[4332]!, [_0]) - } - public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4333]!, self._r[4333]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[4334]! } - public var Wallet_Info_ReceiveGrams: String { return self._s[4335]! } - public var ClearCache_FreeSpace: String { return self._s[4336]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[4337]! } - public var Common_edit: String { return self._s[4338]! } - public var PrivacySettings_AuthSessions: String { return self._s[4339]! } - public var Month_ShortJune: String { return self._s[4340]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4341]! } - public var Call_ReportSend: String { return self._s[4342]! } - public var Watch_LastSeen_JustNow: String { return self._s[4343]! } - public var Notifications_MessageNotifications: String { return self._s[4344]! } - public var WallpaperSearch_ColorGreen: String { return self._s[4345]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[4347]! } - public var Group_Status: String { return self._s[4348]! } + public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4334]!, self._r[4334]!, [_0]) + } + public var Channel_MessagePhotoRemoved: String { return self._s[4335]! } + public var Wallet_Info_ReceiveGrams: String { return self._s[4336]! } + public var ClearCache_FreeSpace: String { return self._s[4337]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[4338]! } + public var Common_edit: String { return self._s[4339]! } + public var PrivacySettings_AuthSessions: String { return self._s[4340]! } + public var Month_ShortJune: String { return self._s[4341]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4342]! } + public var Call_ReportSend: String { return self._s[4343]! } + public var Watch_LastSeen_JustNow: String { return self._s[4344]! } + public var Notifications_MessageNotifications: String { return self._s[4345]! } + public var WallpaperSearch_ColorGreen: String { return self._s[4346]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[4348]! } + public var Group_Status: String { return self._s[4349]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4349]!, self._r[4349]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4350]!, self._r[4350]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[4350]! } - public var ShareMenu_ShareTo: String { return self._s[4351]! } - public var Conversation_Moderate_Ban: String { return self._s[4352]! } + public var TextFormat_AddLinkTitle: String { return self._s[4351]! } + public var ShareMenu_ShareTo: String { return self._s[4352]! } + public var Conversation_Moderate_Ban: String { return self._s[4353]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4353]!, self._r[4353]!, [_0]) + return formatWithArgumentRanges(self._s[4354]!, self._r[4354]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[4354]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4355]! } + public var SharedMedia_ViewInChat: String { return self._s[4355]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4356]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4356]!, self._r[4356]!, [_1]) + return formatWithArgumentRanges(self._s[4357]!, self._r[4357]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4357]!, self._r[4357]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4358]!, self._r[4358]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4359]!, self._r[4359]!, [_0]) + return formatWithArgumentRanges(self._s[4360]!, self._r[4360]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[4360]! } - public var Appearance_ReduceMotion: String { return self._s[4361]! } + public var Map_OpenInHereMaps: String { return self._s[4361]! } + public var Appearance_ReduceMotion: String { return self._s[4362]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4362]!, self._r[4362]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4363]!, self._r[4363]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[4363]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[4364]! } - public var PhotoEditor_Skip: String { return self._s[4365]! } - public func MuteExpires_Hours(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[4364]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[4365]! } + public var PhotoEditor_Skip: String { return self._s[4366]! } + public func Call_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, _1, _2) + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_ShareVideo(_ value: Int32) -> String { + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + public func MuteFor_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + public func MessageTimer_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, _1, _2) } - public func ForwardedGifs(_ value: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Link(_ value: Int32) -> String { + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func ForwardedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_MessagePhotos(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, _1, _2) } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func ForwardedAudios(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _1, _2) } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _1, _2) + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func ChatList_SelectedChats(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func Call_Minutes(_ value: Int32) -> String { + public func PollResults_ShowMore(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_Leave(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) } public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func SharedMedia_Link(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + public func OldChannels_InactiveWeek(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageViews(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_InviteContacts(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + public func ForwardedLocations(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedPolls(_ value: Int32) -> String { + public func QuickSend_Photos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func ForwardedContacts(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) } public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedFiles(_ value: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) @@ -5212,326 +5212,327 @@ public final class PresentationStrings: Equatable { let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) } - public func Passport_Scans(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_StickerCount(_ value: Int32) -> String { + public func MuteExpires_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, _1, _2) + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, _2, _1, _3) + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func Media_ShareItem(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessageVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InstantPage_Views(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeletedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_QuizCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) } public func OldChannels_GroupFormat(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + public func MuteExpires_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func ChatList_MessagePhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) } - public func Invitation_Members(_ value: Int32) -> String { + public func ChatList_MessageVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + public func Notification_GameScoreExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func OldChannels_InactiveYear(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSimple(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Photo(_ value: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) } public func Map_ETAMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessagePoll_QuizCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) } public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) } public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index 2c3b952f62..f854e25a99 100644 Binary files a/submodules/TelegramUI/Resources/PresentationStrings.mapping and b/submodules/TelegramUI/Resources/PresentationStrings.mapping differ diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 8511d3895f..331a840742 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -9069,7 +9069,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G }) } }), - KeyShortcut(input: "F", modifiers: [.command], action: { [weak self] in + KeyShortcut(title: strings.KeyCommand_SearchInChat, input: "F", modifiers: [.command], action: { [weak self] in if let strongSelf = self { strongSelf.beginMessageSearch("") } diff --git a/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift b/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift index b4dab234ff..414c34cc5c 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift @@ -213,7 +213,7 @@ final class PeerInfoListPaneNode: ASDisplayNode, PeerInfoPaneNode { } let mediaAccessoryPanel = MediaNavigationAccessoryPanel(context: self.context) - mediaAccessoryPanel.containerNode.headerNode.displayScrubber = type != .voice + mediaAccessoryPanel.containerNode.headerNode.displayScrubber = item.playbackData?.type != .instantVideo mediaAccessoryPanel.close = { [weak self] in if let strongSelf = self, let (_, _, _, _, type, _) = strongSelf.playlistStateAndType { strongSelf.context.sharedContext.mediaManager.setPlaylist(nil, type: type, control: SharedMediaPlayerControlAction.playback(.pause)) diff --git a/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift b/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift index c9158573a6..dbf1098e8f 100644 --- a/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift +++ b/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift @@ -421,14 +421,51 @@ public func legacyEnqueueWebSearchMessages(_ selectionState: TGMediaSelectionCon var signals: [Any] = [] for result in results { let editableItem = LegacyWebSearchItem(result: result) - if editingState.adjustments(for: editableItem) != nil { + if let adjustments = editingState.adjustments(for: editableItem) { + var animated = false + if let entities = adjustments.paintingData?.entities { + for entity in entities { + if let paintEntity = entity as? TGPhotoPaintEntity, paintEntity.animated { + animated = true + break + } + } + } + if let imageSignal = editingState.imageSignal(for: editableItem) { let signal = imageSignal.map { image -> Any in if let image = image as? UIImage { - let dict: [AnyHashable: Any] = [ + var dict: [AnyHashable: Any] = [ "type": "editedPhoto", "image": image ] + + if animated { + dict["isAnimation"] = true + if let photoEditorValues = adjustments as? PGPhotoEditorValues { + dict["adjustments"] = TGVideoEditAdjustments(photoEditorValues: photoEditorValues) + } + + let filePath = NSTemporaryDirectory().appending("/gifvideo_\(arc4random()).jpg") + let data = image.jpegData(compressionQuality: 0.8) + if let data = data { + let _ = try? data.write(to: URL(fileURLWithPath: filePath), options: []) + } + dict["url"] = NSURL(fileURLWithPath: filePath) + + if adjustments.cropApplied(forAvatar: false) || adjustments.hasPainting() || adjustments.toolsApplied() { + var paintingImage: UIImage? = adjustments.paintingData?.stillImage + if paintingImage == nil { + paintingImage = adjustments.paintingData?.image + } + + let thumbnailImage = TGPhotoEditorVideoExtCrop(image, paintingImage, adjustments.cropOrientation, adjustments.cropRotation, adjustments.cropRect, adjustments.cropMirrored, TGScaleToFill(image.size, CGSize(width: 512.0, height: 512.0)), adjustments.originalSize, true, true, true) + if let thumbnailImage = thumbnailImage { + dict["previewImage"] = thumbnailImage + } + } + } + return legacyAssetPickerItemGenerator()(dict, nil, nil, nil) as Any } else { return SSignal.complete()