TRAVIS_OS_NAME=osx default= <<<<<< ENV ./codecov.yml .gitattributes .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata Configs/App-Debug.xcconfig Configs/App-Release.xcconfig Configs/App-Shared.xcconfig Configs/Module-Debug.xcconfig Configs/Module-Release.xcconfig Configs/Module-Shared.xcconfig Configs/Test-Debug.xcconfig Configs/Test-Release.xcconfig Configs/Test-Shared.xcconfig Docs/API-Diff/5.0/apidiff.css Docs/Diagrams/SDWebImage.mdj Examples/CustomPathImages/4ad9ae8eabfec60b40bf48f0bfc2d120 Examples/SDWebImage Demo.xcodeproj/project.pbxproj Examples/SDWebImage Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata Examples/SDWebImage Demo.xcodeproj/xcshareddata/xcschemes/SDWebImage OSX Demo.xcscheme Examples/SDWebImage Demo.xcodeproj/xcshareddata/xcschemes/SDWebImage TV Demo.xcscheme Examples/SDWebImage Demo.xcodeproj/xcshareddata/xcschemes/SDWebImage Watch Demo.xcscheme Examples/SDWebImage Demo.xcodeproj/xcshareddata/xcschemes/SDWebImage iOS Demo.xcscheme Examples/SDWebImage Demo/AppDelegate.h Examples/SDWebImage Demo/AppDelegate.m Examples/SDWebImage Demo/Assets.xcassets/AppIcon.appiconset/Contents.json Examples/SDWebImage Demo/Assets.xcassets/Contents.json Examples/SDWebImage Demo/Assets.xcassets/placeholder.imageset/Contents.json Examples/SDWebImage Demo/DetailViewController.h Examples/SDWebImage Demo/DetailViewController.m Examples/SDWebImage Demo/LaunchScreen.storyboard Examples/SDWebImage Demo/MasterViewController.h Examples/SDWebImage Demo/MasterViewController.m Examples/SDWebImage Demo/SDWebImage Demo-Info.plist Examples/SDWebImage Demo/SDWebImage Demo-Prefix.pch Examples/SDWebImage Demo/en.lproj/DetailViewController.xib Examples/SDWebImage Demo/en.lproj/MasterViewController.xib Examples/SDWebImage Demo/main.m Examples/SDWebImage OSX Demo/AppDelegate.h Examples/SDWebImage OSX Demo/AppDelegate.m Examples/SDWebImage OSX Demo/Assets.xcassets/AppIcon.appiconset/Contents.json Examples/SDWebImage OSX Demo/Assets.xcassets/Contents.json Examples/SDWebImage OSX Demo/Base.lproj/Main.storyboard Examples/SDWebImage OSX Demo/Info.plist Examples/SDWebImage OSX Demo/ViewController.h Examples/SDWebImage OSX Demo/ViewController.m Examples/SDWebImage OSX Demo/main.m Examples/SDWebImage TV Demo/AppDelegate.h Examples/SDWebImage TV Demo/AppDelegate.m Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/Contents.json Examples/SDWebImage TV Demo/Assets.xcassets/LaunchImage.launchimage/Contents.json Examples/SDWebImage TV Demo/Base.lproj/Main.storyboard Examples/SDWebImage TV Demo/Info.plist Examples/SDWebImage TV Demo/ViewController.h Examples/SDWebImage TV Demo/ViewController.m Examples/SDWebImage TV Demo/main.m Examples/SDWebImage Watch Demo Extension/Assets.xcassets/README__ignoredByTemplate__ Examples/SDWebImage Watch Demo Extension/ExtensionDelegate.h Examples/SDWebImage Watch Demo Extension/ExtensionDelegate.m Examples/SDWebImage Watch Demo Extension/Info.plist Examples/SDWebImage Watch Demo Extension/InterfaceController.h Examples/SDWebImage Watch Demo Extension/InterfaceController.m Examples/SDWebImage Watch Demo Extension/NotificationController.h Examples/SDWebImage Watch Demo Extension/NotificationController.m Examples/SDWebImage Watch Demo Extension/PushNotificationPayload.apns Examples/SDWebImage Watch Demo/Assets.xcassets/AppIcon.appiconset/Contents.json Examples/SDWebImage Watch Demo/Base.lproj/Interface.storyboard Examples/SDWebImage Watch Demo/Info.plist LICENSE Package.swift Podfile SDWebImage.podspec SDWebImage.xcodeproj/project.pbxproj SDWebImage.xcodeproj/xcshareddata/xcschemes/SDWebImage XCFramework.xcscheme SDWebImage.xcodeproj/xcshareddata/xcschemes/SDWebImage static.xcscheme SDWebImage.xcodeproj/xcshareddata/xcschemes/SDWebImage.xcscheme SDWebImage.xcodeproj/xcshareddata/xcschemes/SDWebImageMapKit.xcscheme SDWebImage.xcworkspace/contents.xcworkspacedata SDWebImage.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings SDWebImage/Core/NSButton+WebCache.h SDWebImage/Core/NSButton+WebCache.m SDWebImage/Core/NSData+ImageContentType.h SDWebImage/Core/NSData+ImageContentType.m SDWebImage/Core/NSImage+Compatibility.h SDWebImage/Core/NSImage+Compatibility.m SDWebImage/Core/SDAnimatedImage.h SDWebImage/Core/SDAnimatedImage.m SDWebImage/Core/SDAnimatedImagePlayer.h SDWebImage/Core/SDAnimatedImagePlayer.m SDWebImage/Core/SDAnimatedImageRep.h SDWebImage/Core/SDAnimatedImageRep.m SDWebImage/Core/SDAnimatedImageView+WebCache.h SDWebImage/Core/SDAnimatedImageView+WebCache.m SDWebImage/Core/SDAnimatedImageView.h SDWebImage/Core/SDAnimatedImageView.m SDWebImage/Core/SDDiskCache.h SDWebImage/Core/SDDiskCache.m SDWebImage/Core/SDGraphicsImageRenderer.h SDWebImage/Core/SDGraphicsImageRenderer.m SDWebImage/Core/SDImageAPNGCoder.h SDWebImage/Core/SDImageAPNGCoder.m SDWebImage/Core/SDImageAWebPCoder.h SDWebImage/Core/SDImageAWebPCoder.m SDWebImage/Core/SDImageCache.h SDWebImage/Core/SDImageCache.m SDWebImage/Core/SDImageCacheConfig.h SDWebImage/Core/SDImageCacheConfig.m SDWebImage/Core/SDImageCacheDefine.h SDWebImage/Core/SDImageCacheDefine.m SDWebImage/Core/SDImageCachesManager.h SDWebImage/Core/SDImageCachesManager.m SDWebImage/Core/SDImageCoder.h SDWebImage/Core/SDImageCoder.m SDWebImage/Core/SDImageCoderHelper.h SDWebImage/Core/SDImageCoderHelper.m SDWebImage/Core/SDImageCodersManager.h SDWebImage/Core/SDImageCodersManager.m SDWebImage/Core/SDImageFrame.h SDWebImage/Core/SDImageFrame.m SDWebImage/Core/SDImageGIFCoder.h SDWebImage/Core/SDImageGIFCoder.m SDWebImage/Core/SDImageGraphics.h SDWebImage/Core/SDImageGraphics.m SDWebImage/Core/SDImageHEICCoder.h SDWebImage/Core/SDImageHEICCoder.m SDWebImage/Core/SDImageIOAnimatedCoder.h SDWebImage/Core/SDImageIOAnimatedCoder.m SDWebImage/Core/SDImageIOCoder.h SDWebImage/Core/SDImageIOCoder.m SDWebImage/Core/SDImageLoader.h SDWebImage/Core/SDImageLoader.m SDWebImage/Core/SDImageLoadersManager.h SDWebImage/Core/SDImageLoadersManager.m SDWebImage/Core/SDImageTransformer.h SDWebImage/Core/SDImageTransformer.m SDWebImage/Core/SDMemoryCache.h SDWebImage/Core/SDMemoryCache.m SDWebImage/Core/SDWebImageCacheKeyFilter.h SDWebImage/Core/SDWebImageCacheKeyFilter.m SDWebImage/Core/SDWebImageCacheSerializer.h SDWebImage/Core/SDWebImageCacheSerializer.m SDWebImage/Core/SDWebImageCompat.h SDWebImage/Core/SDWebImageCompat.m SDWebImage/Core/SDWebImageDefine.h SDWebImage/Core/SDWebImageDefine.m SDWebImage/Core/SDWebImageDownloader.h SDWebImage/Core/SDWebImageDownloader.m SDWebImage/Core/SDWebImageDownloaderConfig.h SDWebImage/Core/SDWebImageDownloaderConfig.m SDWebImage/Core/SDWebImageDownloaderDecryptor.h SDWebImage/Core/SDWebImageDownloaderDecryptor.m SDWebImage/Core/SDWebImageDownloaderOperation.h SDWebImage/Core/SDWebImageDownloaderOperation.m SDWebImage/Core/SDWebImageDownloaderRequestModifier.h SDWebImage/Core/SDWebImageDownloaderRequestModifier.m SDWebImage/Core/SDWebImageDownloaderResponseModifier.h SDWebImage/Core/SDWebImageDownloaderResponseModifier.m SDWebImage/Core/SDWebImageError.h SDWebImage/Core/SDWebImageError.m SDWebImage/Core/SDWebImageIndicator.h SDWebImage/Core/SDWebImageIndicator.m SDWebImage/Core/SDWebImageManager.h SDWebImage/Core/SDWebImageManager.m SDWebImage/Core/SDWebImageOperation.h SDWebImage/Core/SDWebImageOperation.m SDWebImage/Core/SDWebImageOptionsProcessor.h SDWebImage/Core/SDWebImageOptionsProcessor.m SDWebImage/Core/SDWebImagePrefetcher.h SDWebImage/Core/SDWebImagePrefetcher.m SDWebImage/Core/SDWebImageTransition.h SDWebImage/Core/SDWebImageTransition.m SDWebImage/Core/UIButton+WebCache.h SDWebImage/Core/UIButton+WebCache.m SDWebImage/Core/UIImage+ExtendedCacheData.h SDWebImage/Core/UIImage+ExtendedCacheData.m SDWebImage/Core/UIImage+ForceDecode.h SDWebImage/Core/UIImage+ForceDecode.m SDWebImage/Core/UIImage+GIF.h SDWebImage/Core/UIImage+GIF.m SDWebImage/Core/UIImage+MemoryCacheCost.h SDWebImage/Core/UIImage+MemoryCacheCost.m SDWebImage/Core/UIImage+Metadata.h SDWebImage/Core/UIImage+Metadata.m SDWebImage/Core/UIImage+MultiFormat.h SDWebImage/Core/UIImage+MultiFormat.m SDWebImage/Core/UIImage+Transform.h SDWebImage/Core/UIImage+Transform.m SDWebImage/Core/UIImageView+HighlightedWebCache.h SDWebImage/Core/UIImageView+HighlightedWebCache.m SDWebImage/Core/UIImageView+WebCache.h SDWebImage/Core/UIImageView+WebCache.m SDWebImage/Core/UIView+WebCache.h SDWebImage/Core/UIView+WebCache.m SDWebImage/Core/UIView+WebCacheOperation.h SDWebImage/Core/UIView+WebCacheOperation.m SDWebImage/Private/NSBezierPath+SDRoundedCorners.h SDWebImage/Private/NSBezierPath+SDRoundedCorners.m SDWebImage/Private/SDAssociatedObject.h SDWebImage/Private/SDAssociatedObject.m SDWebImage/Private/SDAsyncBlockOperation.h SDWebImage/Private/SDAsyncBlockOperation.m SDWebImage/Private/SDDeviceHelper.h SDWebImage/Private/SDDeviceHelper.m SDWebImage/Private/SDDisplayLink.h SDWebImage/Private/SDDisplayLink.m SDWebImage/Private/SDFileAttributeHelper.h SDWebImage/Private/SDFileAttributeHelper.m SDWebImage/Private/SDImageAssetManager.h SDWebImage/Private/SDImageAssetManager.m SDWebImage/Private/SDImageCachesManagerOperation.h SDWebImage/Private/SDImageCachesManagerOperation.m SDWebImage/Private/SDImageIOAnimatedCoderInternal.h SDWebImage/Private/SDInternalMacros.h SDWebImage/Private/SDInternalMacros.m SDWebImage/Private/SDWeakProxy.h SDWebImage/Private/SDWeakProxy.m SDWebImage/Private/SDWebImageTransitionInternal.h SDWebImage/Private/SDmetamacros.h SDWebImage/Private/UIColor+SDHexString.h SDWebImage/Private/UIColor+SDHexString.m SDWebImage/include/SDWebImage/NSButton+WebCache.h SDWebImage/include/SDWebImage/NSData+ImageContentType.h SDWebImage/include/SDWebImage/NSImage+Compatibility.h SDWebImage/include/SDWebImage/SDAnimatedImage.h SDWebImage/include/SDWebImage/SDAnimatedImagePlayer.h SDWebImage/include/SDWebImage/SDAnimatedImageRep.h SDWebImage/include/SDWebImage/SDAnimatedImageView+WebCache.h SDWebImage/include/SDWebImage/SDAnimatedImageView.h SDWebImage/include/SDWebImage/SDDiskCache.h SDWebImage/include/SDWebImage/SDGraphicsImageRenderer.h SDWebImage/include/SDWebImage/SDImageAPNGCoder.h SDWebImage/include/SDWebImage/SDImageAWebPCoder.h SDWebImage/include/SDWebImage/SDImageCache.h SDWebImage/include/SDWebImage/SDImageCacheConfig.h SDWebImage/include/SDWebImage/SDImageCacheDefine.h SDWebImage/include/SDWebImage/SDImageCachesManager.h SDWebImage/include/SDWebImage/SDImageCoder.h SDWebImage/include/SDWebImage/SDImageCoderHelper.h SDWebImage/include/SDWebImage/SDImageCodersManager.h SDWebImage/include/SDWebImage/SDImageFrame.h SDWebImage/include/SDWebImage/SDImageGIFCoder.h SDWebImage/include/SDWebImage/SDImageGraphics.h SDWebImage/include/SDWebImage/SDImageHEICCoder.h SDWebImage/include/SDWebImage/SDImageIOAnimatedCoder.h SDWebImage/include/SDWebImage/SDImageIOCoder.h SDWebImage/include/SDWebImage/SDImageLoader.h SDWebImage/include/SDWebImage/SDImageLoadersManager.h SDWebImage/include/SDWebImage/SDImageTransformer.h SDWebImage/include/SDWebImage/SDMemoryCache.h SDWebImage/include/SDWebImage/SDWebImage.h SDWebImage/include/SDWebImage/SDWebImageCacheKeyFilter.h SDWebImage/include/SDWebImage/SDWebImageCacheSerializer.h SDWebImage/include/SDWebImage/SDWebImageCompat.h SDWebImage/include/SDWebImage/SDWebImageDefine.h SDWebImage/include/SDWebImage/SDWebImageDownloader.h SDWebImage/include/SDWebImage/SDWebImageDownloaderConfig.h SDWebImage/include/SDWebImage/SDWebImageDownloaderDecryptor.h SDWebImage/include/SDWebImage/SDWebImageDownloaderOperation.h SDWebImage/include/SDWebImage/SDWebImageDownloaderRequestModifier.h SDWebImage/include/SDWebImage/SDWebImageDownloaderResponseModifier.h SDWebImage/include/SDWebImage/SDWebImageError.h SDWebImage/include/SDWebImage/SDWebImageIndicator.h SDWebImage/include/SDWebImage/SDWebImageManager.h SDWebImage/include/SDWebImage/SDWebImageOperation.h SDWebImage/include/SDWebImage/SDWebImageOptionsProcessor.h SDWebImage/include/SDWebImage/SDWebImagePrefetcher.h SDWebImage/include/SDWebImage/SDWebImageTransition.h SDWebImage/include/SDWebImage/UIButton+WebCache.h SDWebImage/include/SDWebImage/UIImage+ExtendedCacheData.h SDWebImage/include/SDWebImage/UIImage+ForceDecode.h SDWebImage/include/SDWebImage/UIImage+GIF.h SDWebImage/include/SDWebImage/UIImage+MemoryCacheCost.h SDWebImage/include/SDWebImage/UIImage+Metadata.h SDWebImage/include/SDWebImage/UIImage+MultiFormat.h SDWebImage/include/SDWebImage/UIImage+Transform.h SDWebImage/include/SDWebImage/UIImageView+HighlightedWebCache.h SDWebImage/include/SDWebImage/UIImageView+WebCache.h SDWebImage/include/SDWebImage/UIView+WebCache.h SDWebImage/include/SDWebImage/UIView+WebCacheOperation.h SDWebImageMapKit/MapKit/MKAnnotationView+WebCache.h SDWebImageMapKit/MapKit/MKAnnotationView+WebCache.m SDWebImageMapKit/include/SDWebImageMapKit/MKAnnotationView+WebCache.h SDWebImageMapKit/include/SDWebImageMapKit/SDWebImageMapKit.h Tests/SDWebImage Tests.xcodeproj/project.pbxproj Tests/SDWebImage Tests.xcodeproj/xcshareddata/xcschemes/Tests Mac.xcscheme Tests/SDWebImage Tests.xcodeproj/xcshareddata/xcschemes/Tests TV.xcscheme Tests/SDWebImage Tests.xcodeproj/xcshareddata/xcschemes/Tests iOS.xcscheme Tests/Tests Mac/Info.plist Tests/Tests TV/Info.plist Tests/Tests/Images/TestImage.heic Tests/Tests/Images/TestImage.heif Tests/Tests/Images/TestImageAnimated.apng Tests/Tests/Images/TestImageAnimated.heic Tests/Tests/Images/TestImageAnimated.webp Tests/Tests/Images/TestImageStatic.webp Tests/Tests/SDAnimatedImageTest.m Tests/Tests/SDCategoriesTests.m Tests/Tests/SDImageCacheTests.m Tests/Tests/SDImageCoderTests.m Tests/Tests/SDImageTransformerTests.m Tests/Tests/SDMockFileManager.h Tests/Tests/SDMockFileManager.m Tests/Tests/SDTestCase.h Tests/Tests/SDTestCase.m Tests/Tests/SDUtilsTests.m Tests/Tests/SDWebCacheCategoriesTests.m Tests/Tests/SDWebImageDownloaderTests.m Tests/Tests/SDWebImageManagerTests.m Tests/Tests/SDWebImagePrefetcherTests.m Tests/Tests/SDWebImageTestCache.h Tests/Tests/SDWebImageTestCache.m Tests/Tests/SDWebImageTestCoder.h Tests/Tests/SDWebImageTestCoder.m Tests/Tests/SDWebImageTestDownloadOperation.h Tests/Tests/SDWebImageTestDownloadOperation.m Tests/Tests/SDWebImageTestLoader.h Tests/Tests/SDWebImageTestLoader.m Tests/Tests/SDWebImageTestTransformer.h Tests/Tests/SDWebImageTestTransformer.m Tests/Tests/Tests-Info.plist Tests/Tests/Tests-Prefix.pch WebImage/Info.plist WebImage/SDWebImage.h WebImage/SDWebImageMapKit.h <<<<<< network # path=./SDWebImage.framework.coverage.txt /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/NSButton+WebCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "NSButton+WebCache.h" 10| | 11| |#if SD_MAC 12| | 13| |#import "objc/runtime.h" 14| |#import "UIView+WebCacheOperation.h" 15| |#import "UIView+WebCache.h" 16| |#import "SDInternalMacros.h" 17| | 18| |static NSString * const SDAlternateImageOperationKey = @"NSButtonAlternateImageOperation"; 19| | 20| |@implementation NSButton (WebCache) 21| | 22| |#pragma mark - Image 23| | 24| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url { 25| 0| [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil]; 26| 0|} 27| | 28| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder { 29| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil]; 30| 0|} 31| | 32| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options { 33| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil]; 34| 0|} 35| | 36| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options context:(nullable SDWebImageContext *)context { 37| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:context progress:nil completed:nil]; 38| 0|} 39| | 40| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock { 41| 1| [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock]; 42| 1|} 43| | 44| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock { 45| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock]; 46| 0|} 47| | 48| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock { 49| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock]; 50| 0|} 51| | 52| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options progress:(nullable SDImageLoaderProgressBlock)progressBlock completed:(nullable SDExternalCompletionBlock)completedBlock { 53| 1| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:nil progress:progressBlock completed:completedBlock]; 54| 1|} 55| | 56| |- (void)sd_setImageWithURL:(nullable NSURL *)url 57| | placeholderImage:(nullable UIImage *)placeholder 58| | options:(SDWebImageOptions)options 59| | context:(nullable SDWebImageContext *)context 60| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 61| 1| completed:(nullable SDExternalCompletionBlock)completedBlock { 62| 1| self.sd_currentImageURL = url; 63| 1| [self sd_internalSetImageWithURL:url 64| 1| placeholderImage:placeholder 65| 1| options:options 66| 1| context:context 67| 1| setImageBlock:nil 68| 1| progress:progressBlock 69| 1| completed:^(NSImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { 70| 1| if (completedBlock) { 71| 1| completedBlock(image, error, cacheType, imageURL); 72| 1| } 73| 1| }]; 74| 1|} 75| | 76| |#pragma mark - Alternate Image 77| | 78| 0|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url { 79| 0| [self sd_setAlternateImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil]; 80| 0|} 81| | 82| 0|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder { 83| 0| [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil]; 84| 0|} 85| | 86| 0|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options { 87| 0| [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil]; 88| 0|} 89| | 90| 0|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options context:(nullable SDWebImageContext *)context { 91| 0| [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:options context:context progress:nil completed:nil]; 92| 0|} 93| | 94| 1|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock { 95| 1| [self sd_setAlternateImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock]; 96| 1|} 97| | 98| 0|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock { 99| 0| [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock]; 100| 0|} 101| | 102| 0|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock { 103| 0| [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock]; 104| 0|} 105| | 106| 1|- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options progress:(nullable SDImageLoaderProgressBlock)progressBlock completed:(nullable SDExternalCompletionBlock)completedBlock { 107| 1| [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:options context:nil progress:progressBlock completed:completedBlock]; 108| 1|} 109| | 110| |- (void)sd_setAlternateImageWithURL:(nullable NSURL *)url 111| | placeholderImage:(nullable UIImage *)placeholder 112| | options:(SDWebImageOptions)options 113| | context:(nullable SDWebImageContext *)context 114| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 115| 1| completed:(nullable SDExternalCompletionBlock)completedBlock { 116| 1| self.sd_currentAlternateImageURL = url; 117| 1| 118| 1| SDWebImageMutableContext *mutableContext; 119| 1| if (context) { 120| 0| mutableContext = [context mutableCopy]; 121| 1| } else { 122| 1| mutableContext = [NSMutableDictionary dictionary]; 123| 1| } 124| 1| mutableContext[SDWebImageContextSetImageOperationKey] = SDAlternateImageOperationKey; 125| 1| @weakify(self); 126| 1| [self sd_internalSetImageWithURL:url 127| 1| placeholderImage:placeholder 128| 1| options:options 129| 1| context:mutableContext 130| 2| setImageBlock:^(NSImage * _Nullable image, NSData * _Nullable imageData, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { 131| 2| @strongify(self); 132| 2| self.alternateImage = image; 133| 2| } 134| 1| progress:progressBlock 135| 1| completed:^(NSImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { 136| 1| if (completedBlock) { 137| 1| completedBlock(image, error, cacheType, imageURL); 138| 1| } 139| 1| }]; 140| 1|} 141| | 142| |#pragma mark - Cancel 143| | 144| 0|- (void)sd_cancelCurrentImageLoad { 145| 0| [self sd_cancelImageLoadOperationWithKey:NSStringFromClass([self class])]; 146| 0|} 147| | 148| 0|- (void)sd_cancelCurrentAlternateImageLoad { 149| 0| [self sd_cancelImageLoadOperationWithKey:SDAlternateImageOperationKey]; 150| 0|} 151| | 152| |#pragma mar - Private 153| | 154| 0|- (NSURL *)sd_currentImageURL { 155| 0| return objc_getAssociatedObject(self, @selector(sd_currentImageURL)); 156| 0|} 157| | 158| 1|- (void)setSd_currentImageURL:(NSURL *)sd_currentImageURL { 159| 1| objc_setAssociatedObject(self, @selector(sd_currentImageURL), sd_currentImageURL, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 160| 1|} 161| | 162| 0|- (NSURL *)sd_currentAlternateImageURL { 163| 0| return objc_getAssociatedObject(self, @selector(sd_currentAlternateImageURL)); 164| 0|} 165| | 166| 1|- (void)setSd_currentAlternateImageURL:(NSURL *)sd_currentAlternateImageURL { 167| 1| objc_setAssociatedObject(self, @selector(sd_currentAlternateImageURL), sd_currentAlternateImageURL, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 168| 1|} 169| | 170| |@end 171| | 172| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * (c) Fabrice Aneche 5| | * 6| | * For the full copyright and license information, please view the LICENSE 7| | * file that was distributed with this source code. 8| | */ 9| | 10| |#import "NSData+ImageContentType.h" 11| |#if SD_MAC 12| |#import 13| |#else 14| |#import 15| |#endif 16| |#import "SDImageIOAnimatedCoderInternal.h" 17| | 18| 0|#define kSVGTagEnd @"" 19| | 20| |@implementation NSData (ImageContentType) 21| | 22| 265|+ (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data { 23| 265| if (!data) { 24| 1| return SDImageFormatUndefined; 25| 1| } 26| 264| 27| 264| // File signatures table: http://www.garykessler.net/library/file_sigs.html 28| 264| uint8_t c; 29| 264| [data getBytes:&c length:1]; 30| 264| switch (c) { 31| 264| case 0xFF: 32| 132| return SDImageFormatJPEG; 33| 264| case 0x89: 34| 59| return SDImageFormatPNG; 35| 264| case 0x47: 36| 49| return SDImageFormatGIF; 37| 264| case 0x49: 38| 0| case 0x4D: 39| 0| return SDImageFormatTIFF; 40| 2| case 0x52: { 41| 2| if (data.length >= 12) { 42| 2| //RIFF....WEBP 43| 2| NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding]; 44| 2| if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) { 45| 2| return SDImageFormatWebP; 46| 2| } 47| 0| } 48| 0| break; 49| 0| } 50| 10| case 0x00: { 51| 10| if (data.length >= 12) { 52| 10| //....ftypheic ....ftypheix ....ftyphevc ....ftyphevx 53| 10| NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(4, 8)] encoding:NSASCIIStringEncoding]; 54| 10| if ([testString isEqualToString:@"ftypheic"] 55| 10| || [testString isEqualToString:@"ftypheix"] 56| 10| || [testString isEqualToString:@"ftyphevc"] 57| 10| || [testString isEqualToString:@"ftyphevx"]) { 58| 4| return SDImageFormatHEIC; 59| 4| } 60| 6| //....ftypmif1 ....ftypmsf1 61| 6| if ([testString isEqualToString:@"ftypmif1"] || [testString isEqualToString:@"ftypmsf1"]) { 62| 6| return SDImageFormatHEIF; 63| 6| } 64| 0| } 65| 0| break; 66| 0| } 67| 4| case 0x25: { 68| 4| if (data.length >= 4) { 69| 4| //%PDF 70| 4| NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(1, 3)] encoding:NSASCIIStringEncoding]; 71| 4| if ([testString isEqualToString:@"PDF"]) { 72| 4| return SDImageFormatPDF; 73| 4| } 74| 0| } 75| 0| } 76| 0| case 0x3C: { 77| 0| // Check end with SVG tag 78| 0| if ([data rangeOfData:[kSVGTagEnd dataUsingEncoding:NSUTF8StringEncoding] options:NSDataSearchBackwards range: NSMakeRange(data.length - MIN(100, data.length), MIN(100, data.length))].location != NSNotFound) { 79| 0| return SDImageFormatSVG; 80| 0| } 81| 8| } 82| 8| } 83| 8| return SDImageFormatUndefined; 84| 8|} 85| | 86| 45|+ (nonnull CFStringRef)sd_UTTypeFromImageFormat:(SDImageFormat)format { 87| 45| CFStringRef UTType; 88| 45| switch (format) { 89| 45| case SDImageFormatJPEG: 90| 24| UTType = kUTTypeJPEG; 91| 24| break; 92| 45| case SDImageFormatPNG: 93| 8| UTType = kUTTypePNG; 94| 8| break; 95| 45| case SDImageFormatGIF: 96| 10| UTType = kUTTypeGIF; 97| 10| break; 98| 45| case SDImageFormatTIFF: 99| 0| UTType = kUTTypeTIFF; 100| 0| break; 101| 45| case SDImageFormatWebP: 102| 0| UTType = kSDUTTypeWebP; 103| 0| break; 104| 45| case SDImageFormatHEIC: 105| 1| UTType = kSDUTTypeHEIC; 106| 1| break; 107| 45| case SDImageFormatHEIF: 108| 1| UTType = kSDUTTypeHEIF; 109| 1| break; 110| 45| case SDImageFormatPDF: 111| 0| UTType = kUTTypePDF; 112| 0| break; 113| 45| case SDImageFormatSVG: 114| 0| UTType = kUTTypeScalableVectorGraphics; 115| 0| break; 116| 45| default: 117| 1| // default is kUTTypeImage abstract type 118| 1| UTType = kUTTypeImage; 119| 1| break; 120| 45| } 121| 45| return UTType; 122| 45|} 123| | 124| 934|+ (SDImageFormat)sd_imageFormatFromUTType:(CFStringRef)uttype { 125| 934| if (!uttype) { 126| 5| return SDImageFormatUndefined; 127| 5| } 128| 929| SDImageFormat imageFormat; 129| 929| if (CFStringCompare(uttype, kUTTypeJPEG, 0) == kCFCompareEqualTo) { 130| 66| imageFormat = SDImageFormatJPEG; 131| 863| } else if (CFStringCompare(uttype, kUTTypePNG, 0) == kCFCompareEqualTo) { 132| 569| imageFormat = SDImageFormatPNG; 133| 569| } else if (CFStringCompare(uttype, kUTTypeGIF, 0) == kCFCompareEqualTo) { 134| 44| imageFormat = SDImageFormatGIF; 135| 250| } else if (CFStringCompare(uttype, kUTTypeTIFF, 0) == kCFCompareEqualTo) { 136| 0| imageFormat = SDImageFormatTIFF; 137| 250| } else if (CFStringCompare(uttype, kSDUTTypeWebP, 0) == kCFCompareEqualTo) { 138| 0| imageFormat = SDImageFormatWebP; 139| 250| } else if (CFStringCompare(uttype, kSDUTTypeHEIC, 0) == kCFCompareEqualTo) { 140| 6| imageFormat = SDImageFormatHEIC; 141| 244| } else if (CFStringCompare(uttype, kSDUTTypeHEIF, 0) == kCFCompareEqualTo) { 142| 0| imageFormat = SDImageFormatHEIF; 143| 244| } else if (CFStringCompare(uttype, kUTTypePDF, 0) == kCFCompareEqualTo) { 144| 3| imageFormat = SDImageFormatPDF; 145| 241| } else if (CFStringCompare(uttype, kUTTypeScalableVectorGraphics, 0) == kCFCompareEqualTo) { 146| 0| imageFormat = SDImageFormatSVG; 147| 241| } else { 148| 241| imageFormat = SDImageFormatUndefined; 149| 241| } 150| 929| return imageFormat; 151| 929|} 152| | 153| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "NSImage+Compatibility.h" 10| | 11| |#if SD_MAC 12| | 13| |#import "SDImageCoderHelper.h" 14| | 15| |@implementation NSImage (Compatibility) 16| | 17| 0|- (nullable CGImageRef)CGImage { 18| 0| NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 19| 0| CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:nil hints:nil]; 20| 0| return cgImage; 21| 0|} 22| | 23| 84|- (nullable CIImage *)CIImage { 24| 84| NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 25| 84| NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; 26| 84| if (![imageRep isKindOfClass:NSCIImageRep.class]) { 27| 46| return nil; 28| 46| } 29| 38| return ((NSCIImageRep *)imageRep).CIImage; 30| 38|} 31| | 32| 664|- (CGFloat)scale { 33| 664| CGFloat scale = 1; 34| 664| NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 35| 664| NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; 36| 664| CGFloat width = imageRep.size.width; 37| 664| CGFloat height = imageRep.size.height; 38| 664| NSUInteger pixelWidth = imageRep.pixelsWide; 39| 664| NSUInteger pixelHeight = imageRep.pixelsHigh; 40| 664| if (width > 0 && height > 0) { 41| 664| CGFloat widthScale = pixelWidth / width; 42| 664| CGFloat heightScale = pixelHeight / height; 43| 664| if (widthScale == heightScale && widthScale >= 1) { 44| 664| // Protect because there may be `NSImageRepMatchesDevice` (0) 45| 664| scale = widthScale; 46| 664| } 47| 664| } 48| 664| 49| 664| return scale; 50| 664|} 51| | 52| 1.32k|- (instancetype)initWithCGImage:(nonnull CGImageRef)cgImage scale:(CGFloat)scale orientation:(CGImagePropertyOrientation)orientation { 53| 1.32k| NSBitmapImageRep *imageRep; 54| 1.32k| if (orientation != kCGImagePropertyOrientationUp) { 55| 1| // AppKit design is different from UIKit. Where CGImage based image rep does not respect to any orientation. Only data based image rep which contains the EXIF metadata can automatically detect orientation. 56| 1| // This should be nonnull, until the memory is exhausted cause `CGBitmapContextCreate` failed. 57| 1| CGImageRef rotatedCGImage = [SDImageCoderHelper CGImageCreateDecoded:cgImage orientation:orientation]; 58| 1| imageRep = [[NSBitmapImageRep alloc] initWithCGImage:rotatedCGImage]; 59| 1| CGImageRelease(rotatedCGImage); 60| 1.32k| } else { 61| 1.32k| imageRep = [[NSBitmapImageRep alloc] initWithCGImage:cgImage]; 62| 1.32k| } 63| 1.32k| if (scale < 1) { 64| 0| scale = 1; 65| 0| } 66| 1.32k| CGFloat pixelWidth = imageRep.pixelsWide; 67| 1.32k| CGFloat pixelHeight = imageRep.pixelsHigh; 68| 1.32k| NSSize size = NSMakeSize(pixelWidth / scale, pixelHeight / scale); 69| 1.32k| self = [self initWithSize:size]; 70| 1.32k| if (self) { 71| 1.32k| imageRep.size = size; 72| 1.32k| [self addRepresentation:imageRep]; 73| 1.32k| } 74| 1.32k| return self; 75| 1.32k|} 76| | 77| 14|- (instancetype)initWithCIImage:(nonnull CIImage *)ciImage scale:(CGFloat)scale orientation:(CGImagePropertyOrientation)orientation { 78| 14| NSCIImageRep *imageRep; 79| 14| if (orientation != kCGImagePropertyOrientationUp) { 80| 0| CIImage *rotatedCIImage = [ciImage imageByApplyingOrientation:orientation]; 81| 0| imageRep = [[NSCIImageRep alloc] initWithCIImage:rotatedCIImage]; 82| 14| } else { 83| 14| imageRep = [[NSCIImageRep alloc] initWithCIImage:ciImage]; 84| 14| } 85| 14| if (scale < 1) { 86| 0| scale = 1; 87| 0| } 88| 14| CGFloat pixelWidth = imageRep.pixelsWide; 89| 14| CGFloat pixelHeight = imageRep.pixelsHigh; 90| 14| NSSize size = NSMakeSize(pixelWidth / scale, pixelHeight / scale); 91| 14| self = [self initWithSize:size]; 92| 14| if (self) { 93| 14| imageRep.size = size; 94| 14| [self addRepresentation:imageRep]; 95| 14| } 96| 14| return self; 97| 14|} 98| | 99| 0|- (instancetype)initWithData:(nonnull NSData *)data scale:(CGFloat)scale { 100| 0| NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithData:data]; 101| 0| if (!imageRep) { 102| 0| return nil; 103| 0| } 104| 0| if (scale < 1) { 105| 0| scale = 1; 106| 0| } 107| 0| CGFloat pixelWidth = imageRep.pixelsWide; 108| 0| CGFloat pixelHeight = imageRep.pixelsHigh; 109| 0| NSSize size = NSMakeSize(pixelWidth / scale, pixelHeight / scale); 110| 0| self = [self initWithSize:size]; 111| 0| if (self) { 112| 0| imageRep.size = size; 113| 0| [self addRepresentation:imageRep]; 114| 0| } 115| 0| return self; 116| 0|} 117| | 118| |@end 119| | 120| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDAnimatedImage.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDAnimatedImage.h" 10| |#import "NSImage+Compatibility.h" 11| |#import "SDImageCoder.h" 12| |#import "SDImageCodersManager.h" 13| |#import "SDImageFrame.h" 14| |#import "UIImage+MemoryCacheCost.h" 15| |#import "UIImage+Metadata.h" 16| |#import "UIImage+MultiFormat.h" 17| |#import "SDImageCoderHelper.h" 18| |#import "SDImageAssetManager.h" 19| |#import "objc/runtime.h" 20| | 21| 3|static CGFloat SDImageScaleFromPath(NSString *string) { 22| 3| if (string.length == 0 || [string hasSuffix:@"/"]) return 1; 23| 3| NSString *name = string.stringByDeletingPathExtension; 24| 3| __block CGFloat scale = 1; 25| 3| 26| 3| NSRegularExpression *pattern = [NSRegularExpression regularExpressionWithPattern:@"@[0-9]+\\.?[0-9]*x$" options:NSRegularExpressionAnchorsMatchLines error:nil]; 27| 3| [pattern enumerateMatchesInString:name options:kNilOptions range:NSMakeRange(0, name.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { 28| 1| scale = [string substringWithRange:NSMakeRange(result.range.location + 1, result.range.length - 2)].doubleValue; 29| 1| }]; 30| 3| 31| 3| return scale; 32| 3|} 33| | 34| |@interface SDAnimatedImage () 35| | 36| |@property (nonatomic, strong) id animatedCoder; 37| |@property (nonatomic, assign, readwrite) SDImageFormat animatedImageFormat; 38| |@property (atomic, copy) NSArray *loadedAnimatedImageFrames; // Mark as atomic to keep thread-safe 39| |@property (nonatomic, assign, getter=isAllFramesLoaded) BOOL allFramesLoaded; 40| | 41| |@end 42| | 43| |@implementation SDAnimatedImage 44| |@dynamic scale; // call super 45| | 46| |#pragma mark - UIImage override method 47| 1|+ (instancetype)imageNamed:(NSString *)name { 48| |#if __has_include() 49| | return [self imageNamed:name inBundle:nil compatibleWithTraitCollection:nil]; 50| |#else 51| | return [self imageNamed:name inBundle:nil]; 52| 1|#endif 53| 1|} 54| | 55| |#if __has_include() 56| |+ (instancetype)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle compatibleWithTraitCollection:(UITraitCollection *)traitCollection { 57| | if (!traitCollection) { 58| | traitCollection = UIScreen.mainScreen.traitCollection; 59| | } 60| | CGFloat scale = traitCollection.displayScale; 61| | return [self imageNamed:name inBundle:bundle scale:scale]; 62| |} 63| |#else 64| 2|+ (instancetype)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle { 65| 2| return [self imageNamed:name inBundle:bundle scale:0]; 66| 2|} 67| |#endif 68| | 69| |// 0 scale means automatically check 70| 2|+ (instancetype)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle scale:(CGFloat)scale { 71| 2| if (!name) { 72| 0| return nil; 73| 0| } 74| 2| if (!bundle) { 75| 1| bundle = [NSBundle mainBundle]; 76| 1| } 77| 2| SDImageAssetManager *assetManager = [SDImageAssetManager sharedAssetManager]; 78| 2| SDAnimatedImage *image = (SDAnimatedImage *)[assetManager imageForName:name]; 79| 2| if ([image isKindOfClass:[SDAnimatedImage class]]) { 80| 0| return image; 81| 0| } 82| 2| NSString *path = [assetManager getPathForName:name bundle:bundle preferredScale:&scale]; 83| 2| if (!path) { 84| 1| return image; 85| 1| } 86| 1| NSData *data = [NSData dataWithContentsOfFile:path]; 87| 1| if (!data) { 88| 0| return image; 89| 0| } 90| 1| image = [[self alloc] initWithData:data scale:scale]; 91| 1| if (image) { 92| 1| [assetManager storeImage:image forName:name]; 93| 1| } 94| 1| 95| 1| return image; 96| 1|} 97| | 98| 1|+ (instancetype)imageWithContentsOfFile:(NSString *)path { 99| 1| return [[self alloc] initWithContentsOfFile:path]; 100| 1|} 101| | 102| 12|+ (instancetype)imageWithData:(NSData *)data { 103| 12| return [[self alloc] initWithData:data]; 104| 12|} 105| | 106| 0|+ (instancetype)imageWithData:(NSData *)data scale:(CGFloat)scale { 107| 0| return [[self alloc] initWithData:data scale:scale]; 108| 0|} 109| | 110| 3|- (instancetype)initWithContentsOfFile:(NSString *)path { 111| 3| NSData *data = [NSData dataWithContentsOfFile:path]; 112| 3| return [self initWithData:data scale:SDImageScaleFromPath(path)]; 113| 3|} 114| | 115| 13|- (instancetype)initWithData:(NSData *)data { 116| 13| return [self initWithData:data scale:1]; 117| 13|} 118| | 119| 18|- (instancetype)initWithData:(NSData *)data scale:(CGFloat)scale { 120| 18| return [self initWithData:data scale:scale options:nil]; 121| 18|} 122| | 123| 21|- (instancetype)initWithData:(NSData *)data scale:(CGFloat)scale options:(SDImageCoderOptions *)options { 124| 21| if (!data || data.length == 0) { 125| 0| return nil; 126| 0| } 127| 21| data = [data copy]; // avoid mutable data 128| 21| id animatedCoder = nil; 129| 50| for (idcoder in [SDImageCodersManager sharedManager].coders) { 130| 50| if ([coder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) { 131| 29| if ([coder canDecodeFromData:data]) { 132| 20| if (!options) { 133| 17| options = @{SDImageCoderDecodeScaleFactor : @(scale)}; 134| 17| } 135| 20| animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:data options:options]; 136| 20| break; 137| 20| } 138| 29| } 139| 50| } 140| 21| if (!animatedCoder) { 141| 1| return nil; 142| 1| } 143| 20| return [self initWithAnimatedCoder:animatedCoder scale:scale]; 144| 20|} 145| | 146| 27|- (instancetype)initWithAnimatedCoder:(id)animatedCoder scale:(CGFloat)scale { 147| 27| if (!animatedCoder) { 148| 0| return nil; 149| 0| } 150| 27| UIImage *image = [animatedCoder animatedImageFrameAtIndex:0]; 151| 27| if (!image) { 152| 0| return nil; 153| 0| } 154| 27|#if SD_MAC 155| 27| self = [super initWithCGImage:image.CGImage scale:MAX(scale, 1) orientation:kCGImagePropertyOrientationUp]; 156| |#else 157| | self = [super initWithCGImage:image.CGImage scale:MAX(scale, 1) orientation:image.imageOrientation]; 158| |#endif 159| 27| if (self) { 160| 27| // Only keep the animated coder if frame count > 1, save RAM usage for non-animated image format (APNG/WebP) 161| 27| if (animatedCoder.animatedImageFrameCount > 1) { 162| 27| _animatedCoder = animatedCoder; 163| 27| } 164| 27| NSData *data = [animatedCoder animatedImageData]; 165| 27| SDImageFormat format = [NSData sd_imageFormatForImageData:data]; 166| 27| _animatedImageFormat = format; 167| 27| } 168| 27| return self; 169| 27|} 170| | 171| |#pragma mark - Preload 172| 1|- (void)preloadAllFrames { 173| 1| if (!_animatedCoder) { 174| 0| return; 175| 0| } 176| 1| if (!self.isAllFramesLoaded) { 177| 1| NSMutableArray *frames = [NSMutableArray arrayWithCapacity:self.animatedImageFrameCount]; 178| 6| for (size_t i = 0; i < self.animatedImageFrameCount; i++) { 179| 5| UIImage *image = [self animatedImageFrameAtIndex:i]; 180| 5| NSTimeInterval duration = [self animatedImageDurationAtIndex:i]; 181| 5| SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration]; // through the image should be nonnull, used as nullable for `animatedImageFrameAtIndex:` 182| 5| [frames addObject:frame]; 183| 5| } 184| 1| self.loadedAnimatedImageFrames = frames; 185| 1| self.allFramesLoaded = YES; 186| 1| } 187| 1|} 188| | 189| 1|- (void)unloadAllFrames { 190| 1| if (!_animatedCoder) { 191| 0| return; 192| 0| } 193| 1| if (self.isAllFramesLoaded) { 194| 1| self.loadedAnimatedImageFrames = nil; 195| 1| self.allFramesLoaded = NO; 196| 1| } 197| 1|} 198| | 199| |#pragma mark - NSSecureCoding 200| 1|- (instancetype)initWithCoder:(NSCoder *)aDecoder { 201| 1| self = [super initWithCoder:aDecoder]; 202| 1| if (self) { 203| 1| _animatedImageFormat = [aDecoder decodeIntegerForKey:NSStringFromSelector(@selector(animatedImageFormat))]; 204| 1| NSData *animatedImageData = [aDecoder decodeObjectOfClass:[NSData class] forKey:NSStringFromSelector(@selector(animatedImageData))]; 205| 1| if (!animatedImageData) { 206| 0| return self; 207| 0| } 208| 1| CGFloat scale = self.scale; 209| 1| id animatedCoder = nil; 210| 2| for (idcoder in [SDImageCodersManager sharedManager].coders) { 211| 2| if ([coder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) { 212| 1| if ([coder canDecodeFromData:animatedImageData]) { 213| 1| animatedCoder = [[[coder class] alloc] initWithAnimatedImageData:animatedImageData options:@{SDImageCoderDecodeScaleFactor : @(scale)}]; 214| 1| break; 215| 1| } 216| 1| } 217| 2| } 218| 1| if (!animatedCoder) { 219| 0| return self; 220| 0| } 221| 1| if (animatedCoder.animatedImageFrameCount > 1) { 222| 1| _animatedCoder = animatedCoder; 223| 1| } 224| 1| } 225| 1| return self; 226| 1|} 227| | 228| 1|- (void)encodeWithCoder:(NSCoder *)aCoder { 229| 1| [super encodeWithCoder:aCoder]; 230| 1| [aCoder encodeInteger:self.animatedImageFormat forKey:NSStringFromSelector(@selector(animatedImageFormat))]; 231| 1| NSData *animatedImageData = self.animatedImageData; 232| 1| if (animatedImageData) { 233| 1| [aCoder encodeObject:animatedImageData forKey:NSStringFromSelector(@selector(animatedImageData))]; 234| 1| } 235| 1|} 236| | 237| 2|+ (BOOL)supportsSecureCoding { 238| 2| return YES; 239| 2|} 240| | 241| |#pragma mark - SDAnimatedImageProvider 242| | 243| 8|- (NSData *)animatedImageData { 244| 8| return [self.animatedCoder animatedImageData]; 245| 8|} 246| | 247| 18|- (NSUInteger)animatedImageLoopCount { 248| 18| return [self.animatedCoder animatedImageLoopCount]; 249| 18|} 250| | 251| 10.8k|- (NSUInteger)animatedImageFrameCount { 252| 10.8k| return [self.animatedCoder animatedImageFrameCount]; 253| 10.8k|} 254| | 255| 291|- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index { 256| 291| if (index >= self.animatedImageFrameCount) { 257| 0| return nil; 258| 0| } 259| 291| if (self.isAllFramesLoaded) { 260| 1| SDImageFrame *frame = [self.loadedAnimatedImageFrames objectAtIndex:index]; 261| 1| return frame.image; 262| 1| } 263| 290| return [self.animatedCoder animatedImageFrameAtIndex:index]; 264| 290|} 265| | 266| 10.5k|- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index { 267| 10.5k| if (index >= self.animatedImageFrameCount) { 268| 0| return 0; 269| 0| } 270| 10.5k| if (self.isAllFramesLoaded) { 271| 0| SDImageFrame *frame = [self.loadedAnimatedImageFrames objectAtIndex:index]; 272| 0| return frame.duration; 273| 0| } 274| 10.5k| return [self.animatedCoder animatedImageDurationAtIndex:index]; 275| 10.5k|} 276| | 277| |@end 278| | 279| |@implementation SDAnimatedImage (MemoryCacheCost) 280| | 281| 4|- (NSUInteger)sd_memoryCost { 282| 4| NSNumber *value = objc_getAssociatedObject(self, @selector(sd_memoryCost)); 283| 4| if (value != nil) { 284| 0| return value.unsignedIntegerValue; 285| 0| } 286| 4| 287| 4| CGImageRef imageRef = self.CGImage; 288| 4| if (!imageRef) { 289| 0| return 0; 290| 0| } 291| 4| NSUInteger bytesPerFrame = CGImageGetBytesPerRow(imageRef) * CGImageGetHeight(imageRef); 292| 4| NSUInteger frameCount = 1; 293| 4| if (self.isAllFramesLoaded) { 294| 0| frameCount = self.animatedImageFrameCount; 295| 0| } 296| 4| frameCount = frameCount > 0 ? frameCount : 1; 297| 4| NSUInteger cost = bytesPerFrame * frameCount; 298| 4| return cost; 299| 4|} 300| | 301| |@end 302| | 303| |@implementation SDAnimatedImage (Metadata) 304| | 305| 0|- (BOOL)sd_isAnimated { 306| 0| return YES; 307| 0|} 308| | 309| 0|- (NSUInteger)sd_imageLoopCount { 310| 0| return self.animatedImageLoopCount; 311| 0|} 312| | 313| 0|- (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { 314| 0| return; 315| 0|} 316| | 317| 0|- (SDImageFormat)sd_imageFormat { 318| 0| return self.animatedImageFormat; 319| 0|} 320| | 321| 0|- (void)setSd_imageFormat:(SDImageFormat)sd_imageFormat { 322| 0| return; 323| 0|} 324| | 325| 0|- (BOOL)sd_isVector { 326| 0| return NO; 327| 0|} 328| | 329| |@end 330| | 331| |@implementation SDAnimatedImage (MultiFormat) 332| | 333| 0|+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data { 334| 0| return [self sd_imageWithData:data scale:1]; 335| 0|} 336| | 337| 0|+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale { 338| 0| return [self sd_imageWithData:data scale:scale firstFrameOnly:NO]; 339| 0|} 340| | 341| 0|+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale firstFrameOnly:(BOOL)firstFrameOnly { 342| 0| if (!data) { 343| 0| return nil; 344| 0| } 345| 0| return [[self alloc] initWithData:data scale:scale options:@{SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)}]; 346| 0|} 347| | 348| 0|- (nullable NSData *)sd_imageData { 349| 0| NSData *imageData = self.animatedImageData; 350| 0| if (imageData) { 351| 0| return imageData; 352| 0| } else { 353| 0| return [self sd_imageDataAsFormat:self.animatedImageFormat]; 354| 0| } 355| 0|} 356| | 357| 0|- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat { 358| 0| return [self sd_imageDataAsFormat:imageFormat compressionQuality:1]; 359| 0|} 360| | 361| 0|- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality { 362| 0| return [self sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:NO]; 363| 0|} 364| | 365| 0|- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality firstFrameOnly:(BOOL)firstFrameOnly { 366| 0| if (firstFrameOnly) { 367| 0| // First frame, use super implementation 368| 0| return [super sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly]; 369| 0| } 370| 0| NSUInteger frameCount = self.animatedImageFrameCount; 371| 0| if (frameCount <= 1) { 372| 0| // Static image, use super implementation 373| 0| return [super sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly]; 374| 0| } 375| 0| // Keep animated image encoding, loop each frame. 376| 0| NSMutableArray *frames = [NSMutableArray arrayWithCapacity:frameCount]; 377| 0| for (size_t i = 0; i < frameCount; i++) { 378| 0| UIImage *image = [self animatedImageFrameAtIndex:i]; 379| 0| NSTimeInterval duration = [self animatedImageDurationAtIndex:i]; 380| 0| SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration]; 381| 0| [frames addObject:frame]; 382| 0| } 383| 0| UIImage *animatedImage = [SDImageCoderHelper animatedImageWithFrames:frames]; 384| 0| NSData *imageData = [animatedImage sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:firstFrameOnly]; 385| 0| return imageData; 386| 0|} 387| | 388| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDAnimatedImagePlayer.h" 10| |#import "NSImage+Compatibility.h" 11| |#import "SDDisplayLink.h" 12| |#import "SDDeviceHelper.h" 13| |#import "SDInternalMacros.h" 14| | 15| |@interface SDAnimatedImagePlayer () { 16| | NSRunLoopMode _runLoopMode; 17| |} 18| | 19| |@property (nonatomic, strong, readwrite) UIImage *currentFrame; 20| |@property (nonatomic, assign, readwrite) NSUInteger currentFrameIndex; 21| |@property (nonatomic, assign, readwrite) NSUInteger currentLoopCount; 22| |@property (nonatomic, strong) id animatedProvider; 23| |@property (nonatomic, strong) NSMutableDictionary *frameBuffer; 24| |@property (nonatomic, assign) NSTimeInterval currentTime; 25| |@property (nonatomic, assign) BOOL bufferMiss; 26| |@property (nonatomic, assign) BOOL needsDisplayWhenImageBecomesAvailable; 27| |@property (nonatomic, assign) NSUInteger maxBufferCount; 28| |@property (nonatomic, strong) NSOperationQueue *fetchQueue; 29| |@property (nonatomic, strong) dispatch_semaphore_t lock; 30| |@property (nonatomic, strong) SDDisplayLink *displayLink; 31| | 32| |@end 33| | 34| |@implementation SDAnimatedImagePlayer 35| | 36| 18|- (instancetype)initWithProvider:(id)provider { 37| 18| self = [super init]; 38| 18| if (self) { 39| 18| NSUInteger animatedImageFrameCount = provider.animatedImageFrameCount; 40| 18| // Check the frame count 41| 18| if (animatedImageFrameCount <= 1) { 42| 0| return nil; 43| 0| } 44| 18| self.totalFrameCount = animatedImageFrameCount; 45| 18| // Get the current frame and loop count. 46| 18| self.totalLoopCount = provider.animatedImageLoopCount; 47| 18| self.animatedProvider = provider; 48| 18| self.playbackRate = 1.0; 49| |#if SD_UIKIT 50| | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 51| |#endif 52| | } 53| 18| return self; 54| 18|} 55| | 56| 18|+ (instancetype)playerWithProvider:(id)provider { 57| 18| SDAnimatedImagePlayer *player = [[SDAnimatedImagePlayer alloc] initWithProvider:provider]; 58| 18| return player; 59| 18|} 60| | 61| |#pragma mark - Life Cycle 62| | 63| 14|- (void)dealloc { 64| |#if SD_UIKIT 65| | [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 66| |#endif 67| |} 68| | 69| 0|- (void)didReceiveMemoryWarning:(NSNotification *)notification { 70| 0| [_fetchQueue cancelAllOperations]; 71| 0| [_fetchQueue addOperationWithBlock:^{ 72| 0| NSNumber *currentFrameIndex = @(self.currentFrameIndex); 73| 0| SD_LOCK(self.lock); 74| 0| NSArray *keys = self.frameBuffer.allKeys; 75| 0| // only keep the next frame for later rendering 76| 0| for (NSNumber * key in keys) { 77| 0| if (![key isEqualToNumber:currentFrameIndex]) { 78| 0| [self.frameBuffer removeObjectForKey:key]; 79| 0| } 80| 0| } 81| 0| SD_UNLOCK(self.lock); 82| 0| }]; 83| 0|} 84| | 85| |#pragma mark - Private 86| 1.60k|- (NSOperationQueue *)fetchQueue { 87| 1.60k| if (!_fetchQueue) { 88| 6| _fetchQueue = [[NSOperationQueue alloc] init]; 89| 6| _fetchQueue.maxConcurrentOperationCount = 1; 90| 6| } 91| 1.60k| return _fetchQueue; 92| 1.60k|} 93| | 94| 16.5k|- (NSMutableDictionary *)frameBuffer { 95| 16.5k| if (!_frameBuffer) { 96| 7| _frameBuffer = [NSMutableDictionary dictionary]; 97| 7| } 98| 16.5k| return _frameBuffer; 99| 16.5k|} 100| | 101| 27.9k|- (dispatch_semaphore_t)lock { 102| 27.9k| if (!_lock) { 103| 7| _lock = dispatch_semaphore_create(1); 104| 7| } 105| 27.9k| return _lock; 106| 27.9k|} 107| | 108| 8.26k|- (SDDisplayLink *)displayLink { 109| 8.26k| if (!_displayLink) { 110| 7| _displayLink = [SDDisplayLink displayLinkWithTarget:self selector:@selector(displayDidRefresh:)]; 111| 7| [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:self.runLoopMode]; 112| 7| [_displayLink stop]; 113| 7| } 114| 8.26k| return _displayLink; 115| 8.26k|} 116| | 117| 19|- (void)setRunLoopMode:(NSRunLoopMode)runLoopMode { 118| 19| if ([_runLoopMode isEqual:runLoopMode]) { 119| 1| return; 120| 1| } 121| 18| if (_displayLink) { 122| 0| if (_runLoopMode) { 123| 0| [_displayLink removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:_runLoopMode]; 124| 0| } 125| 0| if (runLoopMode.length > 0) { 126| 0| [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:runLoopMode]; 127| 0| } 128| 0| } 129| 18| _runLoopMode = [runLoopMode copy]; 130| 18|} 131| | 132| 7|- (NSRunLoopMode)runLoopMode { 133| 7| if (!_runLoopMode) { 134| 0| _runLoopMode = [[self class] defaultRunLoopMode]; 135| 0| } 136| 7| return _runLoopMode; 137| 7|} 138| | 139| |#pragma mark - State Control 140| | 141| 7|- (void)setupCurrentFrame { 142| 7| if (self.currentFrameIndex != 0) { 143| 0| return; 144| 0| } 145| 7| if ([self.animatedProvider isKindOfClass:[UIImage class]]) { 146| 6| UIImage *image = (UIImage *)self.animatedProvider; 147| 6| // Use the poster image if available 148| 6| #if SD_MAC 149| 6| UIImage *posterFrame = [[NSImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:kCGImagePropertyOrientationUp]; 150| | #else 151| | UIImage *posterFrame = [[UIImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:image.imageOrientation]; 152| | #endif 153| 6| if (posterFrame) { 154| 6| self.currentFrame = posterFrame; 155| 6| SD_LOCK(self.lock); 156| 6| self.frameBuffer[@(self.currentFrameIndex)] = self.currentFrame; 157| 6| SD_UNLOCK(self.lock); 158| 6| [self handleFrameChange]; 159| 6| } 160| 6| } 161| 7|} 162| | 163| 5|- (void)resetCurrentFrameIndex { 164| 5| self.currentFrame = nil; 165| 5| self.currentFrameIndex = 0; 166| 5| self.currentLoopCount = 0; 167| 5| self.currentTime = 0; 168| 5| self.bufferMiss = NO; 169| 5| self.needsDisplayWhenImageBecomesAvailable = NO; 170| 5| [self handleFrameChange]; 171| 5|} 172| | 173| 5|- (void)clearFrameBuffer { 174| 5| SD_LOCK(self.lock); 175| 5| [_frameBuffer removeAllObjects]; 176| 5| SD_UNLOCK(self.lock); 177| 5|} 178| | 179| |#pragma mark - Animation Control 180| 9|- (void)startPlaying { 181| 9| [self.displayLink start]; 182| 9| // Setup frame 183| 9| if (self.currentFrameIndex == 0 && !self.currentFrame) { 184| 7| [self setupCurrentFrame]; 185| 7| } 186| 9| // Calculate max buffer size 187| 9| [self calculateMaxBufferCount]; 188| 9|} 189| | 190| 5|- (void)stopPlaying { 191| 5| [_fetchQueue cancelAllOperations]; 192| 5| // Using `_displayLink` here because when UIImageView dealloc, it may trigger `[self stopAnimating]`, we already release the display link in SDAnimatedImageView's dealloc method. 193| 5| [_displayLink stop]; 194| 5| [self resetCurrentFrameIndex]; 195| 5|} 196| | 197| 48|- (void)pausePlaying { 198| 48| [_fetchQueue cancelAllOperations]; 199| 48| [_displayLink stop]; 200| 48|} 201| | 202| 13.0k|- (BOOL)isPlaying { 203| 13.0k| return _displayLink.isRunning; 204| 13.0k|} 205| | 206| 103|- (void)seekToFrameAtIndex:(NSUInteger)index loopCount:(NSUInteger)loopCount { 207| 103| if (index >= self.totalFrameCount) { 208| 0| return; 209| 0| } 210| 103| self.currentFrameIndex = index; 211| 103| self.currentLoopCount = loopCount; 212| 103| self.currentFrame = [self.animatedProvider animatedImageFrameAtIndex:index]; 213| 103| [self handleFrameChange]; 214| 103|} 215| | 216| |#pragma mark - Core Render 217| 8.04k|- (void)displayDidRefresh:(SDDisplayLink *)displayLink { 218| 8.04k| // If for some reason a wild call makes it through when we shouldn't be animating, bail. 219| 8.04k| // Early return! 220| 8.04k| if (!self.isPlaying) { 221| 3| return; 222| 3| } 223| 8.04k| 224| 8.04k| NSUInteger totalFrameCount = self.totalFrameCount; 225| 8.04k| if (totalFrameCount <= 1) { 226| 0| // Total frame count less than 1, wrong configuration and stop animating 227| 0| [self stopPlaying]; 228| 0| return; 229| 0| } 230| 8.04k| 231| 8.04k| NSTimeInterval playbackRate = self.playbackRate; 232| 8.04k| if (playbackRate <= 0) { 233| 0| // Does not support <= 0 play rate 234| 0| [self stopPlaying]; 235| 0| return; 236| 0| } 237| 8.04k| 238| 8.04k| // Calculate refresh duration 239| 8.04k| NSTimeInterval duration = self.displayLink.duration; 240| 8.04k| 241| 8.04k| NSUInteger currentFrameIndex = self.currentFrameIndex; 242| 8.04k| NSUInteger nextFrameIndex = (currentFrameIndex + 1) % totalFrameCount; 243| 8.04k| 244| 8.04k| // Check if we need to display new frame firstly 245| 8.04k| BOOL bufferFull = NO; 246| 8.04k| if (self.needsDisplayWhenImageBecomesAvailable) { 247| 4.96k| UIImage *currentFrame; 248| 4.96k| SD_LOCK(self.lock); 249| 4.96k| currentFrame = self.frameBuffer[@(currentFrameIndex)]; 250| 4.96k| SD_UNLOCK(self.lock); 251| 4.96k| 252| 4.96k| // Update the current frame 253| 4.96k| if (currentFrame) { 254| 3.79k| SD_LOCK(self.lock); 255| 3.79k| // Remove the frame buffer if need 256| 3.79k| if (self.frameBuffer.count > self.maxBufferCount) { 257| 0| self.frameBuffer[@(currentFrameIndex)] = nil; 258| 0| } 259| 3.79k| // Check whether we can stop fetch 260| 3.79k| if (self.frameBuffer.count == totalFrameCount) { 261| 3.58k| bufferFull = YES; 262| 3.58k| } 263| 3.79k| SD_UNLOCK(self.lock); 264| 3.79k| 265| 3.79k| // Update the current frame immediately 266| 3.79k| self.currentFrame = currentFrame; 267| 3.79k| [self handleFrameChange]; 268| 3.79k| 269| 3.79k| self.bufferMiss = NO; 270| 3.79k| self.needsDisplayWhenImageBecomesAvailable = NO; 271| 3.79k| } 272| 1.16k| else { 273| 1.16k| self.bufferMiss = YES; 274| 1.16k| } 275| 4.96k| } 276| 8.04k| 277| 8.04k| // Check if we have the frame buffer 278| 8.04k| if (!self.bufferMiss) { 279| 6.87k| // Then check if timestamp is reached 280| 6.87k| self.currentTime += duration; 281| 6.87k| NSTimeInterval currentDuration = [self.animatedProvider animatedImageDurationAtIndex:currentFrameIndex]; 282| 6.87k| currentDuration = currentDuration / playbackRate; 283| 6.87k| if (self.currentTime < currentDuration) { 284| 3.07k| // Current frame timestamp not reached, return 285| 3.07k| return; 286| 3.07k| } 287| 3.80k| 288| 3.80k| // Otherwise, we should be ready to display next frame 289| 3.80k| self.needsDisplayWhenImageBecomesAvailable = YES; 290| 3.80k| self.currentFrameIndex = nextFrameIndex; 291| 3.80k| self.currentTime -= currentDuration; 292| 3.80k| NSTimeInterval nextDuration = [self.animatedProvider animatedImageDurationAtIndex:nextFrameIndex]; 293| 3.80k| nextDuration = nextDuration / playbackRate; 294| 3.80k| if (self.currentTime > nextDuration) { 295| 0| // Do not skip frame 296| 0| self.currentTime = nextDuration; 297| 0| } 298| 3.80k| 299| 3.80k| // Update the loop count when last frame rendered 300| 3.80k| if (nextFrameIndex == 0) { 301| 39| // Update the loop count 302| 39| self.currentLoopCount++; 303| 39| [self handleLoopChange]; 304| 39| 305| 39| // if reached the max loop count, stop animating, 0 means loop indefinitely 306| 39| NSUInteger maxLoopCount = self.totalLoopCount; 307| 39| if (maxLoopCount != 0 && (self.currentLoopCount >= maxLoopCount)) { 308| 0| [self stopPlaying]; 309| 0| return; 310| 0| } 311| 4.96k| } 312| 3.80k| } 313| 4.96k| 314| 4.96k| // Since we support handler, check animating state again 315| 4.96k| if (!self.isPlaying) { 316| 3| return; 317| 3| } 318| 4.96k| 319| 4.96k| // Check if we should prefetch next frame or current frame 320| 4.96k| // When buffer miss, means the decode speed is slower than render speed, we fetch current miss frame 321| 4.96k| // Or, most cases, the decode speed is faster than render speed, we fetch next frame 322| 4.96k| NSUInteger fetchFrameIndex = self.bufferMiss? currentFrameIndex : nextFrameIndex; 323| 4.96k| UIImage *fetchFrame; 324| 4.96k| SD_LOCK(self.lock); 325| 4.96k| fetchFrame = self.bufferMiss? nil : self.frameBuffer[@(nextFrameIndex)]; 326| 4.96k| SD_UNLOCK(self.lock); 327| 4.96k| 328| 4.96k| if (!fetchFrame && !bufferFull && self.fetchQueue.operationCount == 0) { 329| 219| // Prefetch next frame in background queue 330| 219| id animatedProvider = self.animatedProvider; 331| 219| @weakify(self); 332| 219| NSOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ 333| 219| @strongify(self); 334| 219| if (!self) { 335| 0| return; 336| 0| } 337| 219| UIImage *frame = [animatedProvider animatedImageFrameAtIndex:fetchFrameIndex]; 338| 219| 339| 219| BOOL isAnimating = self.displayLink.isRunning; 340| 219| if (isAnimating) { 341| 218| SD_LOCK(self.lock); 342| 218| self.frameBuffer[@(fetchFrameIndex)] = frame; 343| 218| SD_UNLOCK(self.lock); 344| 218| } 345| 219| }]; 346| 219| [self.fetchQueue addOperation:operation]; 347| 219| } 348| 4.96k|} 349| | 350| 3.91k|- (void)handleFrameChange { 351| 3.91k| if (self.animationFrameHandler) { 352| 3.91k| self.animationFrameHandler(self.currentFrameIndex, self.currentFrame); 353| 3.91k| } 354| 3.91k|} 355| | 356| 39|- (void)handleLoopChange { 357| 39| if (self.animationLoopHandler) { 358| 39| self.animationLoopHandler(self.currentLoopCount); 359| 39| } 360| 39|} 361| | 362| |#pragma mark - Util 363| 9|- (void)calculateMaxBufferCount { 364| 9| NSUInteger bytes = CGImageGetBytesPerRow(self.currentFrame.CGImage) * CGImageGetHeight(self.currentFrame.CGImage); 365| 9| if (bytes == 0) bytes = 1024; 366| 9| 367| 9| NSUInteger max = 0; 368| 9| if (self.maxBufferSize > 0) { 369| 0| max = self.maxBufferSize; 370| 9| } else { 371| 9| // Calculate based on current memory, these factors are by experience 372| 9| NSUInteger total = [SDDeviceHelper totalMemory]; 373| 9| NSUInteger free = [SDDeviceHelper freeMemory]; 374| 9| max = MIN(total * 0.2, free * 0.6); 375| 9| } 376| 9| 377| 9| NSUInteger maxBufferCount = (double)max / (double)bytes; 378| 9| if (!maxBufferCount) { 379| 0| // At least 1 frame 380| 0| maxBufferCount = 1; 381| 0| } 382| 9| 383| 9| self.maxBufferCount = maxBufferCount; 384| 9|} 385| | 386| 0|+ (NSString *)defaultRunLoopMode { 387| 0| // Key off `activeProcessorCount` (as opposed to `processorCount`) since the system could shut down cores in certain situations. 388| 0| return [NSProcessInfo processInfo].activeProcessorCount > 1 ? NSRunLoopCommonModes : NSDefaultRunLoopMode; 389| 0|} 390| | 391| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDAnimatedImageRep.h" 10| | 11| |#if SD_MAC 12| | 13| |#import "SDImageIOAnimatedCoderInternal.h" 14| |#import "SDImageGIFCoder.h" 15| |#import "SDImageAPNGCoder.h" 16| |#import "SDImageHEICCoder.h" 17| |#import "SDImageAWebPCoder.h" 18| | 19| |@implementation SDAnimatedImageRep { 20| | CGImageSourceRef _imageSource; 21| |} 22| | 23| 105|- (void)dealloc { 24| 105| if (_imageSource) { 25| 52| CFRelease(_imageSource); 26| 52| _imageSource = NULL; 27| 52| } 28| 105|} 29| | 30| |// `NSBitmapImageRep`'s `imageRepWithData:` is not designed initializer 31| 0|+ (instancetype)imageRepWithData:(NSData *)data { 32| 0| SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data]; 33| 0| return imageRep; 34| 0|} 35| | 36| |// We should override init method for `NSBitmapImageRep` to do initialize about animated image format 37| |#pragma clang diagnostic push 38| |#pragma clang diagnostic ignored "-Wunguarded-availability" 39| 53|- (instancetype)initWithData:(NSData *)data { 40| 53| self = [super initWithData:data]; 41| 53| if (self) { 42| 53| CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef) data, NULL); 43| 53| if (!imageSource) { 44| 0| return self; 45| 0| } 46| 53| _imageSource = imageSource; 47| 53| NSUInteger frameCount = CGImageSourceGetCount(imageSource); 48| 53| if (frameCount <= 1) { 49| 27| return self; 50| 27| } 51| 26| CFStringRef type = CGImageSourceGetType(imageSource); 52| 26| if (!type) { 53| 0| return self; 54| 0| } 55| 26| if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { 56| 17| // GIF 57| 17| // Fix the `NSBitmapImageRep` GIF loop count calculation issue 58| 17| // Which will use 0 when there are no loop count information metadata in GIF data 59| 17| NSUInteger loopCount = [SDImageGIFCoder imageLoopCountWithSource:imageSource]; 60| 17| [self setProperty:NSImageLoopCount withValue:@(loopCount)]; 61| 17| } else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) { 62| 8| // APNG 63| 8| // Do initialize about frame count, current frame/duration and loop count 64| 8| [self setProperty:NSImageFrameCount withValue:@(frameCount)]; 65| 8| [self setProperty:NSImageCurrentFrame withValue:@(0)]; 66| 8| NSUInteger loopCount = [SDImageAPNGCoder imageLoopCountWithSource:imageSource]; 67| 8| [self setProperty:NSImageLoopCount withValue:@(loopCount)]; 68| 8| } else if (CFStringCompare(type, kSDUTTypeHEICS, 0) == kCFCompareEqualTo) { 69| 1| // HEIC 70| 1| // Do initialize about frame count, current frame/duration and loop count 71| 1| [self setProperty:NSImageFrameCount withValue:@(frameCount)]; 72| 1| [self setProperty:NSImageCurrentFrame withValue:@(0)]; 73| 1| NSUInteger loopCount = [SDImageHEICCoder imageLoopCountWithSource:imageSource]; 74| 1| [self setProperty:NSImageLoopCount withValue:@(loopCount)]; 75| 1| } else if (CFStringCompare(type, kSDUTTypeWebP, 0) == kCFCompareEqualTo) { 76| 0| // WebP 77| 0| // Do initialize about frame count, current frame/duration and loop count 78| 0| [self setProperty:NSImageFrameCount withValue:@(frameCount)]; 79| 0| [self setProperty:NSImageCurrentFrame withValue:@(0)]; 80| 0| NSUInteger loopCount = [SDImageAWebPCoder imageLoopCountWithSource:imageSource]; 81| 0| [self setProperty:NSImageLoopCount withValue:@(loopCount)]; 82| 0| } 83| 26| } 84| 53| return self; 85| 53|} 86| | 87| |// `NSBitmapImageRep` will use `kCGImagePropertyGIFDelayTime` whenever you call `setProperty:withValue:` with `NSImageCurrentFrame` to change the current frame. We override it and use the actual `kCGImagePropertyGIFUnclampedDelayTime` if need. 88| 510|- (void)setProperty:(NSBitmapImageRepPropertyKey)property withValue:(id)value { 89| 510| [super setProperty:property withValue:value]; 90| 510| if ([property isEqualToString:NSImageCurrentFrame]) { 91| 352| // Access the image source 92| 352| CGImageSourceRef imageSource = _imageSource; 93| 352| if (!imageSource) { 94| 25| return; 95| 25| } 96| 327| // Check format type 97| 327| CFStringRef type = CGImageSourceGetType(imageSource); 98| 327| if (!type) { 99| 0| return; 100| 0| } 101| 327| NSUInteger index = [value unsignedIntegerValue]; 102| 327| NSTimeInterval frameDuration = 0; 103| 327| if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { 104| 15| // GIF 105| 15| frameDuration = [SDImageGIFCoder frameDurationAtIndex:index source:imageSource]; 106| 312| } else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) { 107| 311| // APNG 108| 311| frameDuration = [SDImageAPNGCoder frameDurationAtIndex:index source:imageSource]; 109| 311| } else if (CFStringCompare(type, kSDUTTypeHEICS, 0) == kCFCompareEqualTo) { 110| 1| // HEIC 111| 1| frameDuration = [SDImageHEICCoder frameDurationAtIndex:index source:imageSource]; 112| 1| } else if (CFStringCompare(type, kSDUTTypeWebP, 0) == kCFCompareEqualTo) { 113| 0| // WebP 114| 0| frameDuration = [SDImageAWebPCoder frameDurationAtIndex:index source:imageSource]; 115| 0| } 116| 327| if (!frameDuration) { 117| 0| return; 118| 0| } 119| 327| // Reset super frame duration with the actual frame duration 120| 327| [super setProperty:NSImageCurrentFrameDuration withValue:@(frameDuration)]; 121| 327| } 122| 510|} 123| |#pragma clang diagnostic pop 124| | 125| |@end 126| | 127| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDAnimatedImageView+WebCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDAnimatedImageView+WebCache.h" 10| | 11| |#if SD_UIKIT || SD_MAC 12| | 13| |#import "UIView+WebCache.h" 14| |#import "SDAnimatedImage.h" 15| | 16| |@implementation SDAnimatedImageView (WebCache) 17| | 18| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url { 19| 0| [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil]; 20| 0|} 21| | 22| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder { 23| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil]; 24| 0|} 25| | 26| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options { 27| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil]; 28| 0|} 29| | 30| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options context:(nullable SDWebImageContext *)context { 31| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:context progress:nil completed:nil]; 32| 0|} 33| | 34| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock { 35| 1| [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock]; 36| 1|} 37| | 38| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock { 39| 1| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock]; 40| 1|} 41| | 42| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock { 43| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock]; 44| 0|} 45| | 46| 3|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options progress:(nullable SDImageLoaderProgressBlock)progressBlock completed:(nullable SDExternalCompletionBlock)completedBlock { 47| 3| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:nil progress:progressBlock completed:completedBlock]; 48| 3|} 49| | 50| |- (void)sd_setImageWithURL:(nullable NSURL *)url 51| | placeholderImage:(nullable UIImage *)placeholder 52| | options:(SDWebImageOptions)options 53| | context:(nullable SDWebImageContext *)context 54| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 55| 3| completed:(nullable SDExternalCompletionBlock)completedBlock { 56| 3| Class animatedImageClass = [SDAnimatedImage class]; 57| 3| SDWebImageMutableContext *mutableContext; 58| 3| if (context) { 59| 0| mutableContext = [context mutableCopy]; 60| 3| } else { 61| 3| mutableContext = [NSMutableDictionary dictionary]; 62| 3| } 63| 3| mutableContext[SDWebImageContextAnimatedImageClass] = animatedImageClass; 64| 3| [self sd_internalSetImageWithURL:url 65| 3| placeholderImage:placeholder 66| 3| options:options 67| 3| context:mutableContext 68| 3| setImageBlock:nil 69| 3| progress:progressBlock 70| 3| completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { 71| 3| if (completedBlock) { 72| 3| completedBlock(image, error, cacheType, imageURL); 73| 3| } 74| 3| }]; 75| 3|} 76| | 77| |@end 78| | 79| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDAnimatedImageView.h" 10| | 11| |#if SD_UIKIT || SD_MAC 12| | 13| |#import "SDAnimatedImagePlayer.h" 14| |#import "UIImage+Metadata.h" 15| |#import "NSImage+Compatibility.h" 16| |#import "SDInternalMacros.h" 17| |#import "objc/runtime.h" 18| | 19| |@interface UIImageView () 20| |@end 21| | 22| |@interface SDAnimatedImageView () { 23| | BOOL _initFinished; // Extra flag to mark the `commonInit` is called 24| | NSRunLoopMode _runLoopMode; 25| | NSUInteger _maxBufferSize; 26| | double _playbackRate; 27| |} 28| | 29| |@property (nonatomic, strong, readwrite) UIImage *currentFrame; 30| |@property (nonatomic, assign, readwrite) NSUInteger currentFrameIndex; 31| |@property (nonatomic, assign, readwrite) NSUInteger currentLoopCount; 32| |@property (nonatomic, assign) BOOL shouldAnimate; 33| |@property (nonatomic, assign) BOOL isProgressive; 34| |@property (nonatomic,strong) SDAnimatedImagePlayer *player; // The animation player. 35| |@property (nonatomic) CALayer *imageViewLayer; // The actual rendering layer. 36| | 37| |@end 38| | 39| |@implementation SDAnimatedImageView 40| |#if SD_UIKIT 41| |@dynamic animationRepeatCount; // we re-use this property from `UIImageView` super class on iOS. 42| |#endif 43| | 44| |#pragma mark - Initializers 45| | 46| |#if SD_MAC 47| |+ (instancetype)imageViewWithImage:(NSImage *)image 48| 1|{ 49| 1| NSRect frame = NSMakeRect(0, 0, image.size.width, image.size.height); 50| 1| SDAnimatedImageView *imageView = [[SDAnimatedImageView alloc] initWithFrame:frame]; 51| 1| [imageView setImage:image]; 52| 1| return imageView; 53| 1|} 54| |#else 55| |// -initWithImage: isn't documented as a designated initializer of UIImageView, but it actually seems to be. 56| |// Using -initWithImage: doesn't call any of the other designated initializers. 57| |- (instancetype)initWithImage:(UIImage *)image 58| |{ 59| | self = [super initWithImage:image]; 60| | if (self) { 61| | [self commonInit]; 62| | } 63| | return self; 64| |} 65| | 66| |// -initWithImage:highlightedImage: also isn't documented as a designated initializer of UIImageView, but it doesn't call any other designated initializers. 67| |- (instancetype)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage 68| |{ 69| | self = [super initWithImage:image highlightedImage:highlightedImage]; 70| | if (self) { 71| | [self commonInit]; 72| | } 73| | return self; 74| |} 75| |#endif 76| | 77| |- (instancetype)initWithFrame:(CGRect)frame 78| 17|{ 79| 17| self = [super initWithFrame:frame]; 80| 17| if (self) { 81| 17| [self commonInit]; 82| 17| } 83| 17| return self; 84| 17|} 85| | 86| |- (instancetype)initWithCoder:(NSCoder *)aDecoder 87| 0|{ 88| 0| self = [super initWithCoder:aDecoder]; 89| 0| if (self) { 90| 0| [self commonInit]; 91| 0| } 92| 0| return self; 93| 0|} 94| | 95| |- (void)commonInit 96| 17|{ 97| 17| // Pay attention that UIKit's `initWithImage:` will trigger a `setImage:` during initialization before this `commonInit`. 98| 17| // So the properties which rely on this order, should using lazy-evaluation or do extra check in `setImage:`. 99| 17| self.autoPlayAnimatedImage = YES; 100| 17| self.shouldCustomLoopCount = NO; 101| 17| self.shouldIncrementalLoad = YES; 102| 17| self.playbackRate = 1.0; 103| 17|#if SD_MAC 104| 17| self.wantsLayer = YES; 105| 17|#endif 106| 17| // Mark commonInit finished 107| 17| _initFinished = YES; 108| 17|} 109| | 110| |#pragma mark - Accessors 111| |#pragma mark Public 112| | 113| |- (void)setImage:(UIImage *)image 114| 24|{ 115| 24| if (self.image == image) { 116| 3| return; 117| 3| } 118| 21| 119| 21| // Check Progressive rendering 120| 21| [self updateIsProgressiveWithImage:image]; 121| 21| 122| 21| if (!self.isProgressive) { 123| 17| // Stop animating 124| 17| self.player = nil; 125| 17| self.currentFrame = nil; 126| 17| self.currentFrameIndex = 0; 127| 17| self.currentLoopCount = 0; 128| 17| } 129| 21| 130| 21| // We need call super method to keep function. This will impliedly call `setNeedsDisplay`. But we have no way to avoid this when using animated image. So we call `setNeedsDisplay` again at the end. 131| 21| super.image = image; 132| 21| if ([image.class conformsToProtocol:@protocol(SDAnimatedImage)]) { 133| 19| if (!self.player) { 134| 18| id provider; 135| 18| // Check progressive loading 136| 18| if (self.isProgressive) { 137| 3| provider = [self progressiveAnimatedCoderForImage:image]; 138| 15| } else { 139| 15| provider = (id)image; 140| 15| } 141| 18| // Create animated player 142| 18| self.player = [SDAnimatedImagePlayer playerWithProvider:provider]; 143| 18| } else { 144| 1| // Update Frame Count 145| 1| self.player.totalFrameCount = [(id)image animatedImageFrameCount]; 146| 1| } 147| 19| 148| 19| if (!self.player) { 149| 0| // animated player nil means the image format is not supported, or frame count <= 1 150| 0| return; 151| 0| } 152| 19| 153| 19| // Custom Loop Count 154| 19| if (self.shouldCustomLoopCount) { 155| 0| self.player.totalLoopCount = self.animationRepeatCount; 156| 0| } 157| 19| 158| 19| // RunLoop Mode 159| 19| self.player.runLoopMode = self.runLoopMode; 160| 19| 161| 19| // Max Buffer Size 162| 19| self.player.maxBufferSize = self.maxBufferSize; 163| 19| 164| 19| // Play Rate 165| 19| self.player.playbackRate = self.playbackRate; 166| 19| 167| 19| // Setup handler 168| 19| @weakify(self); 169| 3.81k| self.player.animationFrameHandler = ^(NSUInteger index, UIImage * frame) { 170| 3.81k| @strongify(self); 171| 3.81k| self.currentFrameIndex = index; 172| 3.81k| self.currentFrame = frame; 173| 3.81k| [self.imageViewLayer setNeedsDisplay]; 174| 3.81k| }; 175| 39| self.player.animationLoopHandler = ^(NSUInteger loopCount) { 176| 39| @strongify(self); 177| 39| // Progressive image reach the current last frame index. Keep the state and pause animating. Wait for later restart 178| 39| if (self.isProgressive) { 179| 2| NSUInteger lastFrameIndex = self.player.totalFrameCount - 1; 180| 2| [self.player seekToFrameAtIndex:lastFrameIndex loopCount:0]; 181| 2| [self.player pausePlaying]; 182| 37| } else { 183| 37| self.currentLoopCount = loopCount; 184| 37| } 185| 39| }; 186| 19| 187| 19| // Ensure disabled highlighting; it's not supported (see `-setHighlighted:`). 188| 19| super.highlighted = NO; 189| 19| 190| 19| [self stopAnimating]; 191| 19| [self checkPlay]; 192| 19| 193| 19| [self.imageViewLayer setNeedsDisplay]; 194| 19| } 195| 21|} 196| | 197| |#pragma mark - Configuration 198| | 199| |- (void)setRunLoopMode:(NSRunLoopMode)runLoopMode 200| 0|{ 201| 0| _runLoopMode = [runLoopMode copy]; 202| 0| self.player.runLoopMode = runLoopMode; 203| 0|} 204| | 205| |- (NSRunLoopMode)runLoopMode 206| 19|{ 207| 19| if (!_runLoopMode) { 208| 15| _runLoopMode = [[self class] defaultRunLoopMode]; 209| 15| } 210| 19| return _runLoopMode; 211| 19|} 212| | 213| 15|+ (NSString *)defaultRunLoopMode { 214| 15| // Key off `activeProcessorCount` (as opposed to `processorCount`) since the system could shut down cores in certain situations. 215| 15| return [NSProcessInfo processInfo].activeProcessorCount > 1 ? NSRunLoopCommonModes : NSDefaultRunLoopMode; 216| 15|} 217| | 218| |- (void)setMaxBufferSize:(NSUInteger)maxBufferSize 219| 0|{ 220| 0| _maxBufferSize = maxBufferSize; 221| 0| self.player.maxBufferSize = maxBufferSize; 222| 0|} 223| | 224| 19|- (NSUInteger)maxBufferSize { 225| 19| return _maxBufferSize; // Defaults to 0 226| 19|} 227| | 228| |- (void)setPlaybackRate:(double)playbackRate 229| 17|{ 230| 17| _playbackRate = playbackRate; 231| 17| self.player.playbackRate = playbackRate; 232| 17|} 233| | 234| |- (double)playbackRate 235| 19|{ 236| 19| if (!_initFinished) { 237| 0| return 1.0; // Defaults to 1.0 238| 0| } 239| 19| return _playbackRate; 240| 19|} 241| | 242| |- (BOOL)shouldIncrementalLoad 243| 21|{ 244| 21| if (!_initFinished) { 245| 0| return YES; // Defaults to YES 246| 0| } 247| 21| return _initFinished; 248| 21|} 249| | 250| |#pragma mark - UIView Method Overrides 251| |#pragma mark Observing View-Related Changes 252| | 253| |#if SD_MAC 254| |- (void)viewDidMoveToSuperview 255| |#else 256| |- (void)didMoveToSuperview 257| |#endif 258| 11|{ 259| 11|#if SD_MAC 260| 11| [super viewDidMoveToSuperview]; 261| |#else 262| | [super didMoveToSuperview]; 263| |#endif 264| | 265| 11| [self checkPlay]; 266| 11|} 267| | 268| |#if SD_MAC 269| |- (void)viewDidMoveToWindow 270| |#else 271| |- (void)didMoveToWindow 272| |#endif 273| 11|{ 274| 11|#if SD_MAC 275| 11| [super viewDidMoveToWindow]; 276| |#else 277| | [super didMoveToWindow]; 278| |#endif 279| | 280| 11| [self checkPlay]; 281| 11|} 282| | 283| |#if SD_MAC 284| |- (void)setAlphaValue:(CGFloat)alphaValue 285| |#else 286| |- (void)setAlpha:(CGFloat)alpha 287| |#endif 288| 0|{ 289| 0|#if SD_MAC 290| 0| [super setAlphaValue:alphaValue]; 291| |#else 292| | [super setAlpha:alpha]; 293| |#endif 294| | 295| 0| [self checkPlay]; 296| 0|} 297| | 298| |- (void)setHidden:(BOOL)hidden 299| 1|{ 300| 1| [super setHidden:hidden]; 301| 1| 302| 1| [self checkPlay]; 303| 1|} 304| | 305| |#pragma mark - UIImageView Method Overrides 306| |#pragma mark Image Data 307| | 308| |- (void)setAnimationRepeatCount:(NSInteger)animationRepeatCount 309| 0|{ 310| |#if SD_UIKIT 311| | [super setAnimationRepeatCount:animationRepeatCount]; 312| |#else 313| | _animationRepeatCount = animationRepeatCount; 314| 0|#endif 315| 0| 316| 0| if (self.shouldCustomLoopCount) { 317| 0| self.player.totalLoopCount = animationRepeatCount; 318| 0| } 319| 0|} 320| | 321| |- (void)startAnimating 322| 9|{ 323| 9| if (self.player) { 324| 9| [self updateShouldAnimate]; 325| 9| if (self.shouldAnimate) { 326| 9| [self.player startPlaying]; 327| 9| } 328| 9| } else { 329| |#if SD_UIKIT 330| | [super startAnimating]; 331| |#else 332| | [super setAnimates:YES]; 333| 0|#endif 334| 0| } 335| 9|} 336| | 337| |- (void)stopAnimating 338| 65|{ 339| 65| if (self.player) { 340| 51| if (self.resetFrameIndexWhenStopped) { 341| 5| [self.player stopPlaying]; 342| 46| } else { 343| 46| [self.player pausePlaying]; 344| 46| } 345| 51| if (self.clearBufferWhenStopped) { 346| 5| [self.player clearFrameBuffer]; 347| 5| } 348| 51| } else { 349| |#if SD_UIKIT 350| | [super stopAnimating]; 351| |#else 352| | [super setAnimates:NO]; 353| 14|#endif 354| 14| } 355| 65|} 356| | 357| |#if SD_UIKIT 358| |- (BOOL)isAnimating 359| |{ 360| | if (self.player) { 361| | return self.player.isPlaying; 362| | } else { 363| | return [super isAnimating]; 364| | } 365| |} 366| |#endif 367| | 368| |#if SD_MAC 369| |- (BOOL)animates 370| 3|{ 371| 3| if (self.player) { 372| 3| return self.player.isPlaying; 373| 3| } else { 374| 0| return [super animates]; 375| 0| } 376| 3|} 377| | 378| |- (void)setAnimates:(BOOL)animates 379| 19|{ 380| 19| if (animates) { 381| 2| [self startAnimating]; 382| 17| } else { 383| 17| [self stopAnimating]; 384| 17| } 385| 19|} 386| |#endif 387| | 388| |#pragma mark Highlighted Image Unsupport 389| | 390| |- (void)setHighlighted:(BOOL)highlighted 391| 0|{ 392| 0| // Highlighted image is unsupported for animated images, but implementing it breaks the image view when embedded in a UICollectionViewCell. 393| 0| if (!self.player) { 394| 0| [super setHighlighted:highlighted]; 395| 0| } 396| 0|} 397| | 398| | 399| |#pragma mark - Private Methods 400| |#pragma mark Animation 401| | 402| |/// Check if it should be played 403| |- (void)checkPlay 404| 42|{ 405| 42| if (self.autoPlayAnimatedImage) { 406| 36| [self updateShouldAnimate]; 407| 36| if (self.shouldAnimate) { 408| 7| [self startAnimating]; 409| 29| } else { 410| 29| [self stopAnimating]; 411| 29| } 412| 36| } 413| 42|} 414| | 415| |// Don't repeatedly check our window & superview in `-displayDidRefresh:` for performance reasons. 416| |// Just update our cached value whenever the animated image or visibility (window, superview, hidden, alpha) is changed. 417| |- (void)updateShouldAnimate 418| 45|{ 419| 45|#if SD_MAC 420| 45| BOOL isVisible = self.window && self.superview && ![self isHidden] && self.alphaValue > 0.0; 421| |#else 422| | BOOL isVisible = self.window && self.superview && ![self isHidden] && self.alpha > 0.0; 423| |#endif 424| | self.shouldAnimate = self.player && isVisible; 425| 45|} 426| | 427| |// Update progressive status only after `setImage:` call. 428| |- (void)updateIsProgressiveWithImage:(UIImage *)image 429| 21|{ 430| 21| self.isProgressive = NO; 431| 21| if (!self.shouldIncrementalLoad) { 432| 0| // Early return 433| 0| return; 434| 0| } 435| 21| // We must use `image.class conformsToProtocol:` instead of `image conformsToProtocol:` here 436| 21| // Because UIKit on macOS, using internal hard-coded override method, which returns NO 437| 21| id currentAnimatedCoder = [self progressiveAnimatedCoderForImage:image]; 438| 21| if (currentAnimatedCoder) { 439| 4| UIImage *previousImage = self.image; 440| 4| if (!previousImage) { 441| 3| // If current animated coder supports progressive, and no previous image to check, start progressive loading 442| 3| self.isProgressive = YES; 443| 3| } else { 444| 1| id previousAnimatedCoder = [self progressiveAnimatedCoderForImage:previousImage]; 445| 1| if (previousAnimatedCoder == currentAnimatedCoder) { 446| 1| // If current animated coder is the same as previous, start progressive loading 447| 1| self.isProgressive = YES; 448| 1| } 449| 1| } 450| 4| } 451| 21|} 452| | 453| |// Check if image can represent a `Progressive Animated Image` during loading 454| |- (id)progressiveAnimatedCoderForImage:(UIImage *)image 455| 25|{ 456| 25| if ([image.class conformsToProtocol:@protocol(SDAnimatedImage)] && image.sd_isIncremental && [image respondsToSelector:@selector(animatedCoder)]) { 457| 8| id animatedCoder = [(id)image animatedCoder]; 458| 8| if ([animatedCoder conformsToProtocol:@protocol(SDProgressiveImageCoder)]) { 459| 8| return (id)animatedCoder; 460| 8| } 461| 17| } 462| 17| return nil; 463| 17|} 464| | 465| | 466| |#pragma mark Providing the Layer's Content 467| |#pragma mark - CALayerDelegate 468| | 469| |- (void)displayLayer:(CALayer *)layer 470| 493|{ 471| 493| UIImage *currentFrame = self.currentFrame; 472| 493| if (currentFrame) { 473| 493| layer.contentsScale = currentFrame.scale; 474| 493| layer.contents = (__bridge id)currentFrame.CGImage; 475| 493| } else { 476| 0| // If we have no animation frames, call super implementation. iOS 14+ UIImageView use this delegate method for rendering. 477| 0| if ([UIImageView instancesRespondToSelector:@selector(displayLayer:)]) { 478| 0| [super displayLayer:layer]; 479| 0| } 480| 0| } 481| 493|} 482| | 483| |#if SD_MAC 484| |// NSImageView use a subview. We need this subview's layer for actual rendering. 485| |// Why using this design may because of properties like `imageAlignment` and `imageScaling`, which it's not available for UIImageView.contentMode (it's impossible to align left and keep aspect ratio at the same time) 486| 3.83k|- (NSView *)imageView { 487| 3.83k| NSImageView *imageView = objc_getAssociatedObject(self, SD_SEL_SPI(imageView)); 488| 3.83k| if (!imageView) { 489| 3.83k| // macOS 10.14 490| 3.83k| imageView = objc_getAssociatedObject(self, SD_SEL_SPI(imageSubview)); 491| 3.83k| } 492| 3.83k| return imageView; 493| 3.83k|} 494| | 495| |// on macOS, it's the imageView subview's layer (we use layer-hosting view to let CALayerDelegate works) 496| 3.83k|- (CALayer *)imageViewLayer { 497| 3.83k| NSView *imageView = self.imageView; 498| 3.83k| if (!imageView) { 499| 22| return nil; 500| 22| } 501| 3.80k| if (!_imageViewLayer) { 502| 5| _imageViewLayer = [CALayer new]; 503| 5| _imageViewLayer.delegate = self; 504| 5| imageView.layer = _imageViewLayer; 505| 5| imageView.wantsLayer = YES; 506| 5| } 507| 3.80k| return _imageViewLayer; 508| 3.80k|} 509| |#else 510| |// on iOS, it's the imageView itself's layer 511| |- (CALayer *)imageViewLayer { 512| | return self.layer; 513| |} 514| | 515| |#endif 516| | 517| |@end 518| | 519| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDDiskCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDDiskCache.h" 10| |#import "SDImageCacheConfig.h" 11| |#import "SDFileAttributeHelper.h" 12| |#import 13| | 14| |static NSString * const SDDiskCacheExtendedAttributeName = @"com.hackemist.SDDiskCache"; 15| | 16| |@interface SDDiskCache () 17| | 18| |@property (nonatomic, copy) NSString *diskCachePath; 19| |@property (nonatomic, strong, nonnull) NSFileManager *fileManager; 20| | 21| |@end 22| | 23| |@implementation SDDiskCache 24| | 25| 0|- (instancetype)init { 26| 0| NSAssert(NO, @"Use `initWithCachePath:` with the disk cache path"); 27| 0| return nil; 28| 0|} 29| | 30| |#pragma mark - SDcachePathForKeyDiskCache Protocol 31| 16|- (instancetype)initWithCachePath:(NSString *)cachePath config:(nonnull SDImageCacheConfig *)config { 32| 16| if (self = [super init]) { 33| 16| _diskCachePath = cachePath; 34| 16| _config = config; 35| 16| [self commonInit]; 36| 16| } 37| 16| return self; 38| 16|} 39| | 40| 16|- (void)commonInit { 41| 16| if (self.config.fileManager) { 42| 2| self.fileManager = self.config.fileManager; 43| 14| } else { 44| 14| self.fileManager = [NSFileManager new]; 45| 14| } 46| 16|} 47| | 48| 12|- (BOOL)containsDataForKey:(NSString *)key { 49| 12| NSParameterAssert(key); 50| 12| NSString *filePath = [self cachePathForKey:key]; 51| 12| BOOL exists = [self.fileManager fileExistsAtPath:filePath]; 52| 12| 53| 12| // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name 54| 12| // checking the key with and without the extension 55| 12| if (!exists) { 56| 4| exists = [self.fileManager fileExistsAtPath:filePath.stringByDeletingPathExtension]; 57| 4| } 58| 12| 59| 12| return exists; 60| 12|} 61| | 62| 63|- (NSData *)dataForKey:(NSString *)key { 63| 63| NSParameterAssert(key); 64| 63| NSString *filePath = [self cachePathForKey:key]; 65| 63| NSData *data = [NSData dataWithContentsOfFile:filePath options:self.config.diskCacheReadingOptions error:nil]; 66| 63| if (data) { 67| 14| return data; 68| 14| } 69| 49| 70| 49| // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name 71| 49| // checking the key with and without the extension 72| 49| data = [NSData dataWithContentsOfFile:filePath.stringByDeletingPathExtension options:self.config.diskCacheReadingOptions error:nil]; 73| 49| if (data) { 74| 0| return data; 75| 0| } 76| 49| 77| 49| return nil; 78| 49|} 79| | 80| 64|- (void)setData:(NSData *)data forKey:(NSString *)key { 81| 64| NSParameterAssert(data); 82| 64| NSParameterAssert(key); 83| 64| if (![self.fileManager fileExistsAtPath:self.diskCachePath]) { 84| 5| [self.fileManager createDirectoryAtPath:self.diskCachePath withIntermediateDirectories:YES attributes:nil error:NULL]; 85| 5| } 86| 64| 87| 64| // get cache Path for image key 88| 64| NSString *cachePathForKey = [self cachePathForKey:key]; 89| 64| // transform to NSURL 90| 64| NSURL *fileURL = [NSURL fileURLWithPath:cachePathForKey]; 91| 64| 92| 64| [data writeToURL:fileURL options:self.config.diskCacheWritingOptions error:nil]; 93| 64| 94| 64| // disable iCloud backup 95| 64| if (self.config.shouldDisableiCloud) { 96| 64| // ignore iCloud backup resource value error 97| 64| [fileURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:nil]; 98| 64| } 99| 64|} 100| | 101| 11|- (NSData *)extendedDataForKey:(NSString *)key { 102| 11| NSParameterAssert(key); 103| 11| 104| 11| // get cache Path for image key 105| 11| NSString *cachePathForKey = [self cachePathForKey:key]; 106| 11| 107| 11| NSData *extendedData = [SDFileAttributeHelper extendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; 108| 11| 109| 11| return extendedData; 110| 11|} 111| | 112| 4|- (void)setExtendedData:(NSData *)extendedData forKey:(NSString *)key { 113| 4| NSParameterAssert(key); 114| 4| // get cache Path for image key 115| 4| NSString *cachePathForKey = [self cachePathForKey:key]; 116| 4| 117| 4| if (!extendedData) { 118| 1| // Remove 119| 1| [SDFileAttributeHelper removeExtendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; 120| 3| } else { 121| 3| // Override 122| 3| [SDFileAttributeHelper setExtendedAttribute:SDDiskCacheExtendedAttributeName value:extendedData atPath:cachePathForKey traverseLink:NO overwrite:YES error:nil]; 123| 3| } 124| 4|} 125| | 126| 28|- (void)removeDataForKey:(NSString *)key { 127| 28| NSParameterAssert(key); 128| 28| NSString *filePath = [self cachePathForKey:key]; 129| 28| [self.fileManager removeItemAtPath:filePath error:nil]; 130| 28|} 131| | 132| 8|- (void)removeAllData { 133| 8| [self.fileManager removeItemAtPath:self.diskCachePath error:nil]; 134| 8| [self.fileManager createDirectoryAtPath:self.diskCachePath 135| 8| withIntermediateDirectories:YES 136| 8| attributes:nil 137| 8| error:NULL]; 138| 8|} 139| | 140| 3|- (void)removeExpiredData { 141| 3| NSURL *diskCacheURL = [NSURL fileURLWithPath:self.diskCachePath isDirectory:YES]; 142| 3| 143| 3| // Compute content date key to be used for tests 144| 3| NSURLResourceKey cacheContentDateKey = NSURLContentModificationDateKey; 145| 3| switch (self.config.diskCacheExpireType) { 146| 3| case SDImageCacheConfigExpireTypeAccessDate: 147| 0| cacheContentDateKey = NSURLContentAccessDateKey; 148| 0| break; 149| 3| case SDImageCacheConfigExpireTypeModificationDate: 150| 3| cacheContentDateKey = NSURLContentModificationDateKey; 151| 3| break; 152| 3| case SDImageCacheConfigExpireTypeCreationDate: 153| 0| cacheContentDateKey = NSURLCreationDateKey; 154| 0| break; 155| 3| case SDImageCacheConfigExpireTypeChangeDate: 156| 0| cacheContentDateKey = NSURLAttributeModificationDateKey; 157| 0| break; 158| 3| default: 159| 0| break; 160| 3| } 161| 3| 162| 3| NSArray *resourceKeys = @[NSURLIsDirectoryKey, cacheContentDateKey, NSURLTotalFileAllocatedSizeKey]; 163| 3| 164| 3| // This enumerator prefetches useful properties for our cache files. 165| 3| NSDirectoryEnumerator *fileEnumerator = [self.fileManager enumeratorAtURL:diskCacheURL 166| 3| includingPropertiesForKeys:resourceKeys 167| 3| options:NSDirectoryEnumerationSkipsHiddenFiles 168| 3| errorHandler:NULL]; 169| 3| 170| 3| NSDate *expirationDate = (self.config.maxDiskAge < 0) ? nil: [NSDate dateWithTimeIntervalSinceNow:-self.config.maxDiskAge]; 171| 3| NSMutableDictionary *> *cacheFiles = [NSMutableDictionary dictionary]; 172| 3| NSUInteger currentCacheSize = 0; 173| 3| 174| 3| // Enumerate all of the files in the cache directory. This loop has two purposes: 175| 3| // 176| 3| // 1. Removing files that are older than the expiration date. 177| 3| // 2. Storing file attributes for the size-based cleanup pass. 178| 3| NSMutableArray *urlsToDelete = [[NSMutableArray alloc] init]; 179| 3| for (NSURL *fileURL in fileEnumerator) { 180| 2| NSError *error; 181| 2| NSDictionary *resourceValues = [fileURL resourceValuesForKeys:resourceKeys error:&error]; 182| 2| 183| 2| // Skip directories and errors. 184| 2| if (error || !resourceValues || [resourceValues[NSURLIsDirectoryKey] boolValue]) { 185| 0| continue; 186| 0| } 187| 2| 188| 2| // Remove files that are older than the expiration date; 189| 2| NSDate *modifiedDate = resourceValues[cacheContentDateKey]; 190| 2| if (expirationDate && [[modifiedDate laterDate:expirationDate] isEqualToDate:expirationDate]) { 191| 1| [urlsToDelete addObject:fileURL]; 192| 1| continue; 193| 1| } 194| 1| 195| 1| // Store a reference to this file and account for its total size. 196| 1| NSNumber *totalAllocatedSize = resourceValues[NSURLTotalFileAllocatedSizeKey]; 197| 1| currentCacheSize += totalAllocatedSize.unsignedIntegerValue; 198| 1| cacheFiles[fileURL] = resourceValues; 199| 1| } 200| 3| 201| 3| for (NSURL *fileURL in urlsToDelete) { 202| 1| [self.fileManager removeItemAtURL:fileURL error:nil]; 203| 1| } 204| 3| 205| 3| // If our remaining disk cache exceeds a configured maximum size, perform a second 206| 3| // size-based cleanup pass. We delete the oldest files first. 207| 3| NSUInteger maxDiskSize = self.config.maxDiskSize; 208| 3| if (maxDiskSize > 0 && currentCacheSize > maxDiskSize) { 209| 1| // Target half of our maximum cache size for this cleanup pass. 210| 1| const NSUInteger desiredCacheSize = maxDiskSize / 2; 211| 1| 212| 1| // Sort the remaining cache files by their last modification time or last access time (oldest first). 213| 1| NSArray *sortedFiles = [cacheFiles keysSortedByValueWithOptions:NSSortConcurrent 214| 1| usingComparator:^NSComparisonResult(id obj1, id obj2) { 215| 0| return [obj1[cacheContentDateKey] compare:obj2[cacheContentDateKey]]; 216| 0| }]; 217| 1| 218| 1| // Delete files until we fall below our desired cache size. 219| 1| for (NSURL *fileURL in sortedFiles) { 220| 1| if ([self.fileManager removeItemAtURL:fileURL error:nil]) { 221| 1| NSDictionary *resourceValues = cacheFiles[fileURL]; 222| 1| NSNumber *totalAllocatedSize = resourceValues[NSURLTotalFileAllocatedSizeKey]; 223| 1| currentCacheSize -= totalAllocatedSize.unsignedIntegerValue; 224| 1| 225| 1| if (currentCacheSize < desiredCacheSize) { 226| 1| break; 227| 1| } 228| 1| } 229| 1| } 230| 1| } 231| 3|} 232| | 233| 189|- (nullable NSString *)cachePathForKey:(NSString *)key { 234| 189| NSParameterAssert(key); 235| 189| return [self cachePathForKey:key inPath:self.diskCachePath]; 236| 189|} 237| | 238| 7|- (NSUInteger)totalSize { 239| 7| NSUInteger size = 0; 240| 7| NSDirectoryEnumerator *fileEnumerator = [self.fileManager enumeratorAtPath:self.diskCachePath]; 241| 7| for (NSString *fileName in fileEnumerator) { 242| 2| NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName]; 243| 2| NSDictionary *attrs = [self.fileManager attributesOfItemAtPath:filePath error:nil]; 244| 2| size += [attrs fileSize]; 245| 2| } 246| 7| return size; 247| 7|} 248| | 249| 8|- (NSUInteger)totalCount { 250| 8| NSUInteger count = 0; 251| 8| NSDirectoryEnumerator *fileEnumerator = [self.fileManager enumeratorAtPath:self.diskCachePath]; 252| 8| count = fileEnumerator.allObjects.count; 253| 8| return count; 254| 8|} 255| | 256| |#pragma mark - Cache paths 257| | 258| 189|- (nullable NSString *)cachePathForKey:(nullable NSString *)key inPath:(nonnull NSString *)path { 259| 189| NSString *filename = SDDiskCacheFileNameForKey(key); 260| 189| return [path stringByAppendingPathComponent:filename]; 261| 189|} 262| | 263| 2|- (void)moveCacheDirectoryFromPath:(nonnull NSString *)srcPath toPath:(nonnull NSString *)dstPath { 264| 2| NSParameterAssert(srcPath); 265| 2| NSParameterAssert(dstPath); 266| 2| // Check if old path is equal to new path 267| 2| if ([srcPath isEqualToString:dstPath]) { 268| 0| return; 269| 0| } 270| 2| BOOL isDirectory; 271| 2| // Check if old path is directory 272| 2| if (![self.fileManager fileExistsAtPath:srcPath isDirectory:&isDirectory] || !isDirectory) { 273| 1| return; 274| 1| } 275| 1| // Check if new path is directory 276| 1| if (![self.fileManager fileExistsAtPath:dstPath isDirectory:&isDirectory] || !isDirectory) { 277| 0| if (!isDirectory) { 278| 0| // New path is not directory, remove file 279| 0| [self.fileManager removeItemAtPath:dstPath error:nil]; 280| 0| } 281| 0| NSString *dstParentPath = [dstPath stringByDeletingLastPathComponent]; 282| 0| // Creates any non-existent parent directories as part of creating the directory in path 283| 0| if (![self.fileManager fileExistsAtPath:dstParentPath]) { 284| 0| [self.fileManager createDirectoryAtPath:dstParentPath withIntermediateDirectories:YES attributes:nil error:NULL]; 285| 0| } 286| 0| // New directory does not exist, rename directory 287| 0| [self.fileManager moveItemAtPath:srcPath toPath:dstPath error:nil]; 288| 1| } else { 289| 1| // New directory exist, merge the files 290| 1| NSDirectoryEnumerator *dirEnumerator = [self.fileManager enumeratorAtPath:srcPath]; 291| 1| NSString *file; 292| 2| while ((file = [dirEnumerator nextObject])) { 293| 1| [self.fileManager moveItemAtPath:[srcPath stringByAppendingPathComponent:file] toPath:[dstPath stringByAppendingPathComponent:file] error:nil]; 294| 1| } 295| 1| // Remove the old path 296| 1| [self.fileManager removeItemAtPath:srcPath error:nil]; 297| 1| } 298| 1|} 299| | 300| |#pragma mark - Hash 301| | 302| 189|#define SD_MAX_FILE_EXTENSION_LENGTH (NAME_MAX - CC_MD5_DIGEST_LENGTH * 2 - 1) 303| | 304| |#pragma clang diagnostic push 305| |#pragma clang diagnostic ignored "-Wdeprecated-declarations" 306| 189|static inline NSString * _Nonnull SDDiskCacheFileNameForKey(NSString * _Nullable key) { 307| 189| const char *str = key.UTF8String; 308| 189| if (str == NULL) { 309| 0| str = ""; 310| 0| } 311| 189| unsigned char r[CC_MD5_DIGEST_LENGTH]; 312| 189| CC_MD5(str, (CC_LONG)strlen(str), r); 313| 189| NSURL *keyURL = [NSURL URLWithString:key]; 314| 189| NSString *ext = keyURL ? keyURL.pathExtension : key.pathExtension; 315| 189| // File system has file name length limit, we need to check if ext is too long, we don't add it to the filename 316| 189| if (ext.length > SD_MAX_FILE_EXTENSION_LENGTH) { 317| 1| ext = nil; 318| 1| } 319| 189| NSString *filename = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%@", 320| 189| r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], 321| 189| r[11], r[12], r[13], r[14], r[15], ext.length == 0 ? @"" : [NSString stringWithFormat:@".%@", ext]]; 322| 189| return filename; 323| 189|} 324| |#pragma clang diagnostic pop 325| | 326| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDGraphicsImageRenderer.h" 10| |#import "SDImageGraphics.h" 11| | 12| |@interface SDGraphicsImageRendererFormat () 13| |#if SD_UIKIT 14| |@property (nonatomic, strong) UIGraphicsImageRendererFormat *uiformat API_AVAILABLE(ios(10.0), tvos(10.0)); 15| |#endif 16| |@end 17| | 18| |@implementation SDGraphicsImageRendererFormat 19| |@synthesize scale = _scale; 20| |@synthesize opaque = _opaque; 21| |@synthesize preferredRange = _preferredRange; 22| | 23| |#pragma mark - Property 24| 18|- (CGFloat)scale { 25| |#if SD_UIKIT 26| | if (@available(iOS 10.0, tvOS 10.10, *)) { 27| | return self.uiformat.scale; 28| | } else { 29| | return _scale; 30| | } 31| |#else 32| | return _scale; 33| 18|#endif 34| 18|} 35| | 36| 30|- (void)setScale:(CGFloat)scale { 37| |#if SD_UIKIT 38| | if (@available(iOS 10.0, tvOS 10.10, *)) { 39| | self.uiformat.scale = scale; 40| | } else { 41| | _scale = scale; 42| | } 43| |#else 44| | _scale = scale; 45| 30|#endif 46| 30|} 47| | 48| 17|- (BOOL)opaque { 49| |#if SD_UIKIT 50| | if (@available(iOS 10.0, tvOS 10.10, *)) { 51| | return self.uiformat.opaque; 52| | } else { 53| | return _opaque; 54| | } 55| |#else 56| | return _opaque; 57| 17|#endif 58| 17|} 59| | 60| 17|- (void)setOpaque:(BOOL)opaque { 61| |#if SD_UIKIT 62| | if (@available(iOS 10.0, tvOS 10.10, *)) { 63| | self.uiformat.opaque = opaque; 64| | } else { 65| | _opaque = opaque; 66| | } 67| |#else 68| | _opaque = opaque; 69| 17|#endif 70| 17|} 71| | 72| |#pragma clang diagnostic push 73| |#pragma clang diagnostic ignored "-Wdeprecated-declarations" 74| 1|- (SDGraphicsImageRendererFormatRange)preferredRange { 75| |#if SD_UIKIT 76| | if (@available(iOS 10.0, tvOS 10.10, *)) { 77| | if (@available(iOS 12.0, tvOS 12.0, *)) { 78| | return (SDGraphicsImageRendererFormatRange)self.uiformat.preferredRange; 79| | } else { 80| | BOOL prefersExtendedRange = self.uiformat.prefersExtendedRange; 81| | if (prefersExtendedRange) { 82| | return SDGraphicsImageRendererFormatRangeExtended; 83| | } else { 84| | return SDGraphicsImageRendererFormatRangeStandard; 85| | } 86| | } 87| | } else { 88| | return _preferredRange; 89| | } 90| |#else 91| | return _preferredRange; 92| 1|#endif 93| 1|} 94| | 95| 16|- (void)setPreferredRange:(SDGraphicsImageRendererFormatRange)preferredRange { 96| |#if SD_UIKIT 97| | if (@available(iOS 10.0, tvOS 10.10, *)) { 98| | if (@available(iOS 12.0, tvOS 12.0, *)) { 99| | self.uiformat.preferredRange = (UIGraphicsImageRendererFormatRange)preferredRange; 100| | } else { 101| | switch (preferredRange) { 102| | case SDGraphicsImageRendererFormatRangeExtended: 103| | self.uiformat.prefersExtendedRange = YES; 104| | break; 105| | case SDGraphicsImageRendererFormatRangeStandard: 106| | self.uiformat.prefersExtendedRange = NO; 107| | default: 108| | // Automatic means default 109| | break; 110| | } 111| | } 112| | } else { 113| | _preferredRange = preferredRange; 114| | } 115| |#else 116| | _preferredRange = preferredRange; 117| 16|#endif 118| 16|} 119| |#pragma clang diagnostic pop 120| | 121| 14|- (instancetype)init { 122| 14| self = [super init]; 123| 14| if (self) { 124| |#if SD_UIKIT 125| | if (@available(iOS 10.0, tvOS 10.10, *)) { 126| | UIGraphicsImageRendererFormat *uiformat = [[UIGraphicsImageRendererFormat alloc] init]; 127| | self.uiformat = uiformat; 128| | } else { 129| |#endif 130| |#if SD_WATCH 131| | CGFloat screenScale = [WKInterfaceDevice currentDevice].screenScale; 132| |#elif SD_UIKIT 133| | CGFloat screenScale = [UIScreen mainScreen].scale; 134| |#elif SD_MAC 135| | CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; 136| 14|#endif 137| 14| self.scale = screenScale; 138| 14| self.opaque = NO; 139| 14| self.preferredRange = SDGraphicsImageRendererFormatRangeStandard; 140| |#if SD_UIKIT 141| | } 142| |#endif 143| | } 144| 14| return self; 145| 14|} 146| | 147| |#pragma clang diagnostic push 148| |#pragma clang diagnostic ignored "-Wunguarded-availability" 149| 2|- (instancetype)initForMainScreen { 150| 2| self = [super init]; 151| 2| if (self) { 152| |#if SD_UIKIT 153| | if (@available(iOS 10.0, tvOS 10.0, *)) { 154| | UIGraphicsImageRendererFormat *uiformat; 155| | // iOS 11.0.0 GM does have `preferredFormat`, but iOS 11 betas did not (argh!) 156| | if ([UIGraphicsImageRenderer respondsToSelector:@selector(preferredFormat)]) { 157| | uiformat = [UIGraphicsImageRendererFormat preferredFormat]; 158| | } else { 159| | uiformat = [UIGraphicsImageRendererFormat defaultFormat]; 160| | } 161| | self.uiformat = uiformat; 162| | } else { 163| |#endif 164| |#if SD_WATCH 165| | CGFloat screenScale = [WKInterfaceDevice currentDevice].screenScale; 166| |#elif SD_UIKIT 167| | CGFloat screenScale = [UIScreen mainScreen].scale; 168| |#elif SD_MAC 169| | CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; 170| 2|#endif 171| 2| self.scale = screenScale; 172| 2| self.opaque = NO; 173| 2| self.preferredRange = SDGraphicsImageRendererFormatRangeStandard; 174| |#if SD_UIKIT 175| | } 176| |#endif 177| | } 178| 2| return self; 179| 2|} 180| |#pragma clang diagnostic pop 181| | 182| 2|+ (instancetype)preferredFormat { 183| 2| SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] initForMainScreen]; 184| 2| return format; 185| 2|} 186| | 187| |@end 188| | 189| |@interface SDGraphicsImageRenderer () 190| |@property (nonatomic, assign) CGSize size; 191| |@property (nonatomic, strong) SDGraphicsImageRendererFormat *format; 192| |#if SD_UIKIT 193| |@property (nonatomic, strong) UIGraphicsImageRenderer *uirenderer API_AVAILABLE(ios(10.0), tvos(10.0)); 194| |#endif 195| |@end 196| | 197| |@implementation SDGraphicsImageRenderer 198| | 199| 0|- (instancetype)initWithSize:(CGSize)size { 200| 0| return [self initWithSize:size format:SDGraphicsImageRendererFormat.preferredFormat]; 201| 0|} 202| | 203| 16|- (instancetype)initWithSize:(CGSize)size format:(SDGraphicsImageRendererFormat *)format { 204| 16| NSParameterAssert(format); 205| 16| self = [super init]; 206| 16| if (self) { 207| 16| self.size = size; 208| 16| self.format = format; 209| |#if SD_UIKIT 210| | if (@available(iOS 10.0, tvOS 10.0, *)) { 211| | UIGraphicsImageRendererFormat *uiformat = format.uiformat; 212| | self.uirenderer = [[UIGraphicsImageRenderer alloc] initWithSize:size format:uiformat]; 213| | } 214| |#endif 215| | } 216| 16| return self; 217| 16|} 218| | 219| 16|- (UIImage *)imageWithActions:(NS_NOESCAPE SDGraphicsImageDrawingActions)actions { 220| 16| NSParameterAssert(actions); 221| |#if SD_UIKIT 222| | if (@available(iOS 10.0, tvOS 10.0, *)) { 223| | UIGraphicsImageDrawingActions uiactions = ^(UIGraphicsImageRendererContext *rendererContext) { 224| | if (actions) { 225| | actions(rendererContext.CGContext); 226| | } 227| | }; 228| | return [self.uirenderer imageWithActions:uiactions]; 229| | } else { 230| |#endif 231| | SDGraphicsBeginImageContextWithOptions(self.size, self.format.opaque, self.format.scale); 232| 16| CGContextRef context = SDGraphicsGetCurrentContext(); 233| 16| if (actions) { 234| 16| actions(context); 235| 16| } 236| 16| UIImage *image = SDGraphicsGetImageFromCurrentImageContext(); 237| 16| SDGraphicsEndImageContext(); 238| 16| return image; 239| |#if SD_UIKIT 240| | } 241| |#endif 242| |} 243| | 244| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageAPNGCoder.h" 10| |#if SD_MAC 11| |#import 12| |#else 13| |#import 14| |#endif 15| | 16| |// iOS 8 Image/IO framework binary does not contains these APNG constants, so we define them. Thanks Apple :) 17| |// We can not use runtime @available check for this issue, because it's a global symbol and should be loaded during launch time by dyld. So hack if the min deployment target version < iOS 9.0, whatever it running on iOS 9+ or not. 18| |#if (__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0) 19| |const CFStringRef kCGImagePropertyAPNGLoopCount = (__bridge CFStringRef)@"LoopCount"; 20| |const CFStringRef kCGImagePropertyAPNGDelayTime = (__bridge CFStringRef)@"DelayTime"; 21| |const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef)@"UnclampedDelayTime"; 22| |#endif 23| | 24| |@implementation SDImageAPNGCoder 25| | 26| 4|+ (instancetype)sharedCoder { 27| 4| static SDImageAPNGCoder *coder; 28| 4| static dispatch_once_t onceToken; 29| 4| dispatch_once(&onceToken, ^{ 30| 1| coder = [[SDImageAPNGCoder alloc] init]; 31| 1| }); 32| 4| return coder; 33| 4|} 34| | 35| |#pragma mark - Subclass Override 36| | 37| 476|+ (SDImageFormat)imageFormat { 38| 476| return SDImageFormatPNG; 39| 476|} 40| | 41| 3|+ (NSString *)imageUTType { 42| 3| return (__bridge NSString *)kUTTypePNG; 43| 3|} 44| | 45| 1.66k|+ (NSString *)dictionaryProperty { 46| 1.66k| return (__bridge NSString *)kCGImagePropertyPNGDictionary; 47| 1.66k|} 48| | 49| 1.43k|+ (NSString *)unclampedDelayTimeProperty { 50| 1.43k| return (__bridge NSString *)kCGImagePropertyAPNGUnclampedDelayTime; 51| 1.43k|} 52| | 53| 203|+ (NSString *)delayTimeProperty { 54| 203| return (__bridge NSString *)kCGImagePropertyAPNGDelayTime; 55| 203|} 56| | 57| 27|+ (NSString *)loopCountProperty { 58| 27| return (__bridge NSString *)kCGImagePropertyAPNGLoopCount; 59| 27|} 60| | 61| 26|+ (NSUInteger)defaultLoopCount { 62| 26| return 0; 63| 26|} 64| | 65| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageAWebPCoder.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDImageAWebPCoder.h" 10| |#import "SDImageIOAnimatedCoderInternal.h" 11| | 12| |// These constants are available from iOS 14+ and Xcode 12. This raw value is used for toolchain and firmware compatibility 13| |static NSString * kSDCGImagePropertyWebPDictionary = @"{WebP}"; 14| |static NSString * kSDCGImagePropertyWebPLoopCount = @"LoopCount"; 15| |static NSString * kSDCGImagePropertyWebPDelayTime = @"DelayTime"; 16| |static NSString * kSDCGImagePropertyWebPUnclampedDelayTime = @"UnclampedDelayTime"; 17| | 18| |@implementation SDImageAWebPCoder 19| | 20| 0|+ (void)initialize { 21| |#if __IPHONE_14_0 || __TVOS_14_0 || __MAC_11_0 || __WATCHOS_7_0 22| | // Xcode 12 23| | if (@available(iOS 14, tvOS 14, macOS 11, watchOS 7, *)) { 24| | // Use SDK instead of raw value 25| | kSDCGImagePropertyWebPDictionary = (__bridge NSString *)kCGImagePropertyWebPDictionary; 26| | kSDCGImagePropertyWebPLoopCount = (__bridge NSString *)kCGImagePropertyWebPLoopCount; 27| | kSDCGImagePropertyWebPDelayTime = (__bridge NSString *)kCGImagePropertyWebPDelayTime; 28| | kSDCGImagePropertyWebPUnclampedDelayTime = (__bridge NSString *)kCGImagePropertyWebPUnclampedDelayTime; 29| | } 30| |#endif 31| |} 32| | 33| 0|+ (instancetype)sharedCoder { 34| 0| static SDImageAWebPCoder *coder; 35| 0| static dispatch_once_t onceToken; 36| 0| dispatch_once(&onceToken, ^{ 37| 0| coder = [[SDImageAWebPCoder alloc] init]; 38| 0| }); 39| 0| return coder; 40| 0|} 41| | 42| |#pragma mark - SDImageCoder 43| | 44| 0|- (BOOL)canDecodeFromData:(nullable NSData *)data { 45| 0| switch ([NSData sd_imageFormatForImageData:data]) { 46| 0| case SDImageFormatWebP: 47| 0| // Check WebP decoding compatibility 48| 0| return [self.class canDecodeFromFormat:SDImageFormatWebP]; 49| 0| default: 50| 0| return NO; 51| 0| } 52| 0|} 53| | 54| 0|- (BOOL)canIncrementalDecodeFromData:(NSData *)data { 55| 0| return [self canDecodeFromData:data]; 56| 0|} 57| | 58| 0|- (BOOL)canEncodeToFormat:(SDImageFormat)format { 59| 0| switch (format) { 60| 0| case SDImageFormatWebP: 61| 0| // Check WebP encoding compatibility 62| 0| return [self.class canEncodeToFormat:SDImageFormatWebP]; 63| 0| default: 64| 0| return NO; 65| 0| } 66| 0|} 67| | 68| |#pragma mark - Subclass Override 69| | 70| 0|+ (SDImageFormat)imageFormat { 71| 0| return SDImageFormatWebP; 72| 0|} 73| | 74| 0|+ (NSString *)imageUTType { 75| 0| return (__bridge NSString *)kSDUTTypeWebP; 76| 0|} 77| | 78| 0|+ (NSString *)dictionaryProperty { 79| 0| return kSDCGImagePropertyWebPDictionary; 80| 0|} 81| | 82| 0|+ (NSString *)unclampedDelayTimeProperty { 83| 0| return kSDCGImagePropertyWebPUnclampedDelayTime; 84| 0|} 85| | 86| 0|+ (NSString *)delayTimeProperty { 87| 0| return kSDCGImagePropertyWebPDelayTime; 88| 0|} 89| | 90| 0|+ (NSString *)loopCountProperty { 91| 0| return kSDCGImagePropertyWebPLoopCount; 92| 0|} 93| | 94| 0|+ (NSUInteger)defaultLoopCount { 95| 0| return 0; 96| 0|} 97| | 98| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageCache.h" 10| |#import "NSImage+Compatibility.h" 11| |#import "SDImageCodersManager.h" 12| |#import "SDImageCoderHelper.h" 13| |#import "SDAnimatedImage.h" 14| |#import "UIImage+MemoryCacheCost.h" 15| |#import "UIImage+Metadata.h" 16| |#import "UIImage+ExtendedCacheData.h" 17| | 18| |static NSString * _defaultDiskCacheDirectory; 19| | 20| |@interface SDImageCache () 21| | 22| |#pragma mark - Properties 23| |@property (nonatomic, strong, readwrite, nonnull) id memoryCache; 24| |@property (nonatomic, strong, readwrite, nonnull) id diskCache; 25| |@property (nonatomic, copy, readwrite, nonnull) SDImageCacheConfig *config; 26| |@property (nonatomic, copy, readwrite, nonnull) NSString *diskCachePath; 27| |@property (nonatomic, strong, nullable) dispatch_queue_t ioQueue; 28| | 29| |@end 30| | 31| | 32| |@implementation SDImageCache 33| | 34| |#pragma mark - Singleton, init, dealloc 35| | 36| 143|+ (nonnull instancetype)sharedImageCache { 37| 143| static dispatch_once_t once; 38| 143| static id instance; 39| 143| dispatch_once(&once, ^{ 40| 1| instance = [self new]; 41| 1| }); 42| 143| return instance; 43| 143|} 44| | 45| 16|+ (NSString *)defaultDiskCacheDirectory { 46| 16| if (!_defaultDiskCacheDirectory) { 47| 2| _defaultDiskCacheDirectory = [[self userCacheDirectory] stringByAppendingPathComponent:@"com.hackemist.SDImageCache"]; 48| 2| } 49| 16| return _defaultDiskCacheDirectory; 50| 16|} 51| | 52| 2|+ (void)setDefaultDiskCacheDirectory:(NSString *)defaultDiskCacheDirectory { 53| 2| _defaultDiskCacheDirectory = [defaultDiskCacheDirectory copy]; 54| 2|} 55| | 56| 2|- (instancetype)init { 57| 2| return [self initWithNamespace:@"default"]; 58| 2|} 59| | 60| 12|- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns { 61| 12| return [self initWithNamespace:ns diskCacheDirectory:nil]; 62| 12|} 63| | 64| |- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns 65| 12| diskCacheDirectory:(nullable NSString *)directory { 66| 12| return [self initWithNamespace:ns diskCacheDirectory:directory config:SDImageCacheConfig.defaultCacheConfig]; 67| 12|} 68| | 69| |- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns 70| | diskCacheDirectory:(nullable NSString *)directory 71| 15| config:(nullable SDImageCacheConfig *)config { 72| 15| if ((self = [super init])) { 73| 15| NSAssert(ns, @"Cache namespace should not be nil"); 74| 15| 75| 15| // Create IO serial queue 76| 15| _ioQueue = dispatch_queue_create("com.hackemist.SDImageCache", DISPATCH_QUEUE_SERIAL); 77| 15| 78| 15| if (!config) { 79| 0| config = SDImageCacheConfig.defaultCacheConfig; 80| 0| } 81| 15| _config = [config copy]; 82| 15| 83| 15| // Init the memory cache 84| 15| NSAssert([config.memoryCacheClass conformsToProtocol:@protocol(SDMemoryCache)], @"Custom memory cache class must conform to `SDMemoryCache` protocol"); 85| 15| _memoryCache = [[config.memoryCacheClass alloc] initWithConfig:_config]; 86| 15| 87| 15| // Init the disk cache 88| 15| if (!directory) { 89| 14| // Use default disk cache directory 90| 14| directory = [self.class defaultDiskCacheDirectory]; 91| 14| } 92| 15| _diskCachePath = [directory stringByAppendingPathComponent:ns]; 93| 15| 94| 15| NSAssert([config.diskCacheClass conformsToProtocol:@protocol(SDDiskCache)], @"Custom disk cache class must conform to `SDDiskCache` protocol"); 95| 15| _diskCache = [[config.diskCacheClass alloc] initWithCachePath:_diskCachePath config:_config]; 96| 15| 97| 15| // Check and migrate disk cache directory if need 98| 15| [self migrateDiskCacheDirectory]; 99| 15| 100| |#if SD_UIKIT 101| | // Subscribe to app events 102| | [[NSNotificationCenter defaultCenter] addObserver:self 103| | selector:@selector(applicationWillTerminate:) 104| | name:UIApplicationWillTerminateNotification 105| | object:nil]; 106| | 107| | [[NSNotificationCenter defaultCenter] addObserver:self 108| | selector:@selector(applicationDidEnterBackground:) 109| | name:UIApplicationDidEnterBackgroundNotification 110| | object:nil]; 111| |#endif 112| |#if SD_MAC 113| 15| [[NSNotificationCenter defaultCenter] addObserver:self 114| 15| selector:@selector(applicationWillTerminate:) 115| 15| name:NSApplicationWillTerminateNotification 116| 15| object:nil]; 117| 15|#endif 118| 15| } 119| 15| 120| 15| return self; 121| 15|} 122| | 123| 14|- (void)dealloc { 124| 14| [[NSNotificationCenter defaultCenter] removeObserver:self]; 125| 14|} 126| | 127| |#pragma mark - Cache paths 128| | 129| 8|- (nullable NSString *)cachePathForKey:(nullable NSString *)key { 130| 8| if (!key) { 131| 1| return nil; 132| 1| } 133| 7| return [self.diskCache cachePathForKey:key]; 134| 7|} 135| | 136| 4|+ (nullable NSString *)userCacheDirectory { 137| 4| NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 138| 4| return paths.firstObject; 139| 4|} 140| | 141| 15|- (void)migrateDiskCacheDirectory { 142| 15| if ([self.diskCache isKindOfClass:[SDDiskCache class]]) { 143| 14| static dispatch_once_t onceToken; 144| 14| dispatch_once(&onceToken, ^{ 145| 1| // ~/Library/Caches/com.hackemist.SDImageCache/default/ 146| 1| NSString *newDefaultPath = [[[self.class userCacheDirectory] stringByAppendingPathComponent:@"com.hackemist.SDImageCache"] stringByAppendingPathComponent:@"default"]; 147| 1| // ~/Library/Caches/default/com.hackemist.SDWebImageCache.default/ 148| 1| NSString *oldDefaultPath = [[[self.class userCacheDirectory] stringByAppendingPathComponent:@"default"] stringByAppendingPathComponent:@"com.hackemist.SDWebImageCache.default"]; 149| 1| dispatch_async(self.ioQueue, ^{ 150| 1| [((SDDiskCache *)self.diskCache) moveCacheDirectoryFromPath:oldDefaultPath toPath:newDefaultPath]; 151| 1| }); 152| 1| }); 153| 14| } 154| 15|} 155| | 156| |#pragma mark - Store Ops 157| | 158| |- (void)storeImage:(nullable UIImage *)image 159| | forKey:(nullable NSString *)key 160| 10| completion:(nullable SDWebImageNoParamsBlock)completionBlock { 161| 10| [self storeImage:image imageData:nil forKey:key toDisk:YES completion:completionBlock]; 162| 10|} 163| | 164| |- (void)storeImage:(nullable UIImage *)image 165| | forKey:(nullable NSString *)key 166| | toDisk:(BOOL)toDisk 167| 12| completion:(nullable SDWebImageNoParamsBlock)completionBlock { 168| 12| [self storeImage:image imageData:nil forKey:key toDisk:toDisk completion:completionBlock]; 169| 12|} 170| | 171| |- (void)storeImage:(nullable UIImage *)image 172| | imageData:(nullable NSData *)imageData 173| | forKey:(nullable NSString *)key 174| | toDisk:(BOOL)toDisk 175| 23| completion:(nullable SDWebImageNoParamsBlock)completionBlock { 176| 23| return [self storeImage:image imageData:imageData forKey:key toMemory:YES toDisk:toDisk completion:completionBlock]; 177| 23|} 178| | 179| |- (void)storeImage:(nullable UIImage *)image 180| | imageData:(nullable NSData *)imageData 181| | forKey:(nullable NSString *)key 182| | toMemory:(BOOL)toMemory 183| | toDisk:(BOOL)toDisk 184| 72| completion:(nullable SDWebImageNoParamsBlock)completionBlock { 185| 72| if (!image || !key) { 186| 0| if (completionBlock) { 187| 0| completionBlock(); 188| 0| } 189| 0| return; 190| 0| } 191| 72| // if memory cache is enabled 192| 72| if (toMemory && self.config.shouldCacheImagesInMemory) { 193| 69| NSUInteger cost = image.sd_memoryCost; 194| 69| [self.memoryCache setObject:image forKey:key cost:cost]; 195| 69| } 196| 72| 197| 72| if (toDisk) { 198| 58| dispatch_async(self.ioQueue, ^{ 199| 58| @autoreleasepool { 200| 58| NSData *data = imageData; 201| 58| if (!data && [image conformsToProtocol:@protocol(SDAnimatedImage)]) { 202| 1| // If image is custom animated image class, prefer its original animated data 203| 1| data = [((id)image) animatedImageData]; 204| 1| } 205| 58| if (!data && image) { 206| 22| // Check image's associated image format, may return .undefined 207| 22| SDImageFormat format = image.sd_imageFormat; 208| 22| if (format == SDImageFormatUndefined) { 209| 3| // If image is animated, use GIF (APNG may be better, but has bugs before macOS 10.14) 210| 3| if (image.sd_isAnimated) { 211| 1| format = SDImageFormatGIF; 212| 2| } else { 213| 2| // If we do not have any data to detect image format, check whether it contains alpha channel to use PNG or JPEG format 214| 2| if ([SDImageCoderHelper CGImageContainsAlpha:image.CGImage]) { 215| 1| format = SDImageFormatPNG; 216| 1| } else { 217| 1| format = SDImageFormatJPEG; 218| 1| } 219| 2| } 220| 3| } 221| 22| data = [[SDImageCodersManager sharedManager] encodedDataWithImage:image format:format options:nil]; 222| 22| } 223| 58| [self _storeImageDataToDisk:data forKey:key]; 224| 58| if (image) { 225| 58| // Check extended data 226| 58| id extendedObject = image.sd_extendedObject; 227| 58| if ([extendedObject conformsToProtocol:@protocol(NSCoding)]) { 228| 3| NSData *extendedData; 229| 3| if (@available(iOS 11, tvOS 11, macOS 10.13, watchOS 4, *)) { 230| 3| NSError *error; 231| 3| extendedData = [NSKeyedArchiver archivedDataWithRootObject:extendedObject requiringSecureCoding:NO error:&error]; 232| 3| if (error) { 233| 0| NSLog(@"NSKeyedArchiver archive failed with error: %@", error); 234| 0| } 235| 3| } else { 236| 0| @try { 237| 0|#pragma clang diagnostic push 238| 0|#pragma clang diagnostic ignored "-Wdeprecated-declarations" 239| 0| extendedData = [NSKeyedArchiver archivedDataWithRootObject:extendedObject]; 240| 0|#pragma clang diagnostic pop 241| 0| } @catch (NSException *exception) { 242| 0| NSLog(@"NSKeyedArchiver archive failed with exception: %@", exception); 243| 0| } 244| 0| } 245| 3| if (extendedData) { 246| 3| [self.diskCache setExtendedData:extendedData forKey:key]; 247| 3| } 248| 3| } 249| 58| } 250| 58| } 251| 58| 252| 58| if (completionBlock) { 253| 51| dispatch_async(dispatch_get_main_queue(), ^{ 254| 51| completionBlock(); 255| 51| }); 256| 51| } 257| 58| }); 258| 58| } else { 259| 14| if (completionBlock) { 260| 8| completionBlock(); 261| 8| } 262| 14| } 263| 72|} 264| | 265| 3|- (void)storeImageToMemory:(UIImage *)image forKey:(NSString *)key { 266| 3| if (!image || !key) { 267| 0| return; 268| 0| } 269| 3| NSUInteger cost = image.sd_memoryCost; 270| 3| [self.memoryCache setObject:image forKey:key cost:cost]; 271| 3|} 272| | 273| |- (void)storeImageDataToDisk:(nullable NSData *)imageData 274| 4| forKey:(nullable NSString *)key { 275| 4| if (!imageData || !key) { 276| 0| return; 277| 0| } 278| 4| 279| 4| dispatch_sync(self.ioQueue, ^{ 280| 4| [self _storeImageDataToDisk:imageData forKey:key]; 281| 4| }); 282| 4|} 283| | 284| |// Make sure to call from io queue by caller 285| 62|- (void)_storeImageDataToDisk:(nullable NSData *)imageData forKey:(nullable NSString *)key { 286| 62| if (!imageData || !key) { 287| 0| return; 288| 0| } 289| 62| 290| 62| [self.diskCache setData:imageData forKey:key]; 291| 62|} 292| | 293| |#pragma mark - Query and Retrieve Ops 294| | 295| 11|- (void)diskImageExistsWithKey:(nullable NSString *)key completion:(nullable SDImageCacheCheckCompletionBlock)completionBlock { 296| 11| dispatch_async(self.ioQueue, ^{ 297| 11| BOOL exists = [self _diskImageDataExistsWithKey:key]; 298| 11| if (completionBlock) { 299| 11| dispatch_async(dispatch_get_main_queue(), ^{ 300| 11| completionBlock(exists); 301| 11| }); 302| 11| } 303| 11| }); 304| 11|} 305| | 306| 1|- (BOOL)diskImageDataExistsWithKey:(nullable NSString *)key { 307| 1| if (!key) { 308| 0| return NO; 309| 0| } 310| 1| 311| 1| __block BOOL exists = NO; 312| 1| dispatch_sync(self.ioQueue, ^{ 313| 1| exists = [self _diskImageDataExistsWithKey:key]; 314| 1| }); 315| 1| 316| 1| return exists; 317| 1|} 318| | 319| |// Make sure to call from io queue by caller 320| 12|- (BOOL)_diskImageDataExistsWithKey:(nullable NSString *)key { 321| 12| if (!key) { 322| 0| return NO; 323| 0| } 324| 12| 325| 12| return [self.diskCache containsDataForKey:key]; 326| 12|} 327| | 328| 0|- (void)diskImageDataQueryForKey:(NSString *)key completion:(SDImageCacheQueryDataCompletionBlock)completionBlock { 329| 0| dispatch_async(self.ioQueue, ^{ 330| 0| NSData *imageData = [self diskImageDataBySearchingAllPathsForKey:key]; 331| 0| if (completionBlock) { 332| 0| dispatch_async(dispatch_get_main_queue(), ^{ 333| 0| completionBlock(imageData); 334| 0| }); 335| 0| } 336| 0| }); 337| 0|} 338| | 339| 12|- (nullable NSData *)diskImageDataForKey:(nullable NSString *)key { 340| 12| if (!key) { 341| 0| return nil; 342| 0| } 343| 12| __block NSData *imageData = nil; 344| 12| dispatch_sync(self.ioQueue, ^{ 345| 12| imageData = [self diskImageDataBySearchingAllPathsForKey:key]; 346| 12| }); 347| 12| 348| 12| return imageData; 349| 12|} 350| | 351| 100|- (nullable UIImage *)imageFromMemoryCacheForKey:(nullable NSString *)key { 352| 100| return [self.memoryCache objectForKey:key]; 353| 100|} 354| | 355| 9|- (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key { 356| 9| return [self imageFromDiskCacheForKey:key options:0 context:nil]; 357| 9|} 358| | 359| 9|- (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context { 360| 9| NSData *data = [self diskImageDataForKey:key]; 361| 9| UIImage *diskImage = [self diskImageForKey:key data:data options:options context:context]; 362| 9| if (diskImage && self.config.shouldCacheImagesInMemory) { 363| 7| NSUInteger cost = diskImage.sd_memoryCost; 364| 7| [self.memoryCache setObject:diskImage forKey:key cost:cost]; 365| 7| } 366| 9| 367| 9| return diskImage; 368| 9|} 369| | 370| 0|- (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key { 371| 0| return [self imageFromCacheForKey:key options:0 context:nil]; 372| 0|} 373| | 374| 0|- (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context { 375| 0| // First check the in-memory cache... 376| 0| UIImage *image = [self imageFromMemoryCacheForKey:key]; 377| 0| if (image) { 378| 0| return image; 379| 0| } 380| 0| 381| 0| // Second check the disk cache... 382| 0| image = [self imageFromDiskCacheForKey:key options:options context:context]; 383| 0| return image; 384| 0|} 385| | 386| 63|- (nullable NSData *)diskImageDataBySearchingAllPathsForKey:(nullable NSString *)key { 387| 63| if (!key) { 388| 0| return nil; 389| 0| } 390| 63| 391| 63| NSData *data = [self.diskCache dataForKey:key]; 392| 63| if (data) { 393| 14| return data; 394| 14| } 395| 49| 396| 49| // Addtional cache path for custom pre-load cache 397| 49| if (self.additionalCachePathBlock) { 398| 0| NSString *filePath = self.additionalCachePathBlock(key); 399| 0| if (filePath) { 400| 0| data = [NSData dataWithContentsOfFile:filePath options:self.config.diskCacheReadingOptions error:nil]; 401| 0| } 402| 0| } 403| 49| 404| 49| return data; 405| 49|} 406| | 407| 0|- (nullable UIImage *)diskImageForKey:(nullable NSString *)key { 408| 0| NSData *data = [self diskImageDataForKey:key]; 409| 0| return [self diskImageForKey:key data:data]; 410| 0|} 411| | 412| 0|- (nullable UIImage *)diskImageForKey:(nullable NSString *)key data:(nullable NSData *)data { 413| 0| return [self diskImageForKey:key data:data options:0 context:nil]; 414| 0|} 415| | 416| 12|- (nullable UIImage *)diskImageForKey:(nullable NSString *)key data:(nullable NSData *)data options:(SDImageCacheOptions)options context:(SDWebImageContext *)context { 417| 12| if (data) { 418| 10| UIImage *image = SDImageCacheDecodeImageData(data, key, [[self class] imageOptionsFromCacheOptions:options], context); 419| 10| if (image) { 420| 10| // Check extended data 421| 10| NSData *extendedData = [self.diskCache extendedDataForKey:key]; 422| 10| if (extendedData) { 423| 1| id extendedObject; 424| 1| if (@available(iOS 11, tvOS 11, macOS 10.13, watchOS 4, *)) { 425| 1| NSError *error; 426| 1| NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:extendedData error:&error]; 427| 1| unarchiver.requiresSecureCoding = NO; 428| 1| extendedObject = [unarchiver decodeTopLevelObjectForKey:NSKeyedArchiveRootObjectKey error:&error]; 429| 1| if (error) { 430| 0| NSLog(@"NSKeyedUnarchiver unarchive failed with error: %@", error); 431| 0| } 432| 1| } else { 433| 0| @try { 434| 0|#pragma clang diagnostic push 435| 0|#pragma clang diagnostic ignored "-Wdeprecated-declarations" 436| 0| extendedObject = [NSKeyedUnarchiver unarchiveObjectWithData:extendedData]; 437| 0|#pragma clang diagnostic pop 438| 0| } @catch (NSException *exception) { 439| 0| NSLog(@"NSKeyedUnarchiver unarchive failed with exception: %@", exception); 440| 0| } 441| 0| } 442| 1| image.sd_extendedObject = extendedObject; 443| 1| } 444| 10| } 445| 10| return image; 446| 10| } else { 447| 2| return nil; 448| 2| } 449| 12|} 450| | 451| 2|- (nullable NSOperation *)queryCacheOperationForKey:(NSString *)key done:(SDImageCacheQueryCompletionBlock)doneBlock { 452| 2| return [self queryCacheOperationForKey:key options:0 done:doneBlock]; 453| 2|} 454| | 455| 3|- (nullable NSOperation *)queryCacheOperationForKey:(NSString *)key options:(SDImageCacheOptions)options done:(SDImageCacheQueryCompletionBlock)doneBlock { 456| 3| return [self queryCacheOperationForKey:key options:options context:nil done:doneBlock]; 457| 3|} 458| | 459| 5|- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context done:(nullable SDImageCacheQueryCompletionBlock)doneBlock { 460| 5| return [self queryCacheOperationForKey:key options:options context:context cacheType:SDImageCacheTypeAll done:doneBlock]; 461| 5|} 462| | 463| 73|- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key options:(SDImageCacheOptions)options context:(nullable SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType done:(nullable SDImageCacheQueryCompletionBlock)doneBlock { 464| 73| if (!key) { 465| 0| if (doneBlock) { 466| 0| doneBlock(nil, nil, SDImageCacheTypeNone); 467| 0| } 468| 0| return nil; 469| 0| } 470| 73| // Invalid cache type 471| 73| if (queryCacheType == SDImageCacheTypeNone) { 472| 0| if (doneBlock) { 473| 0| doneBlock(nil, nil, SDImageCacheTypeNone); 474| 0| } 475| 0| return nil; 476| 0| } 477| 73| 478| 73| // First check the in-memory cache... 479| 73| UIImage *image; 480| 73| if (queryCacheType != SDImageCacheTypeDisk) { 481| 72| image = [self imageFromMemoryCacheForKey:key]; 482| 72| } 483| 73| 484| 73| if (image) { 485| 20| if (options & SDImageCacheDecodeFirstFrameOnly) { 486| 1| // Ensure static image 487| 1| Class animatedImageClass = image.class; 488| 1| if (image.sd_isAnimated || ([animatedImageClass isSubclassOfClass:[UIImage class]] && [animatedImageClass conformsToProtocol:@protocol(SDAnimatedImage)])) { 489| 1|#if SD_MAC 490| 1| image = [[NSImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:kCGImagePropertyOrientationUp]; 491| |#else 492| | image = [[UIImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:image.imageOrientation]; 493| |#endif 494| | } 495| 19| } else if (options & SDImageCacheMatchAnimatedImageClass) { 496| 1| // Check image class matching 497| 1| Class animatedImageClass = image.class; 498| 1| Class desiredImageClass = context[SDWebImageContextAnimatedImageClass]; 499| 1| if (desiredImageClass && ![animatedImageClass isSubclassOfClass:desiredImageClass]) { 500| 1| image = nil; 501| 1| } 502| 1| } 503| 20| } 504| 73| 505| 73| BOOL shouldQueryMemoryOnly = (queryCacheType == SDImageCacheTypeMemory) || (image && !(options & SDImageCacheQueryMemoryData)); 506| 73| if (shouldQueryMemoryOnly) { 507| 20| if (doneBlock) { 508| 20| doneBlock(image, nil, SDImageCacheTypeMemory); 509| 20| } 510| 20| return nil; 511| 20| } 512| 53| 513| 53| // Second check the disk cache... 514| 53| NSOperation *operation = [NSOperation new]; 515| 53| // Check whether we need to synchronously query disk 516| 53| // 1. in-memory cache hit & memoryDataSync 517| 53| // 2. in-memory cache miss & diskDataSync 518| 53| BOOL shouldQueryDiskSync = ((image && options & SDImageCacheQueryMemoryDataSync) || 519| 53| (!image && options & SDImageCacheQueryDiskDataSync)); 520| 53| void(^queryDiskBlock)(void) = ^{ 521| 53| if (operation.isCancelled) { 522| 3| if (doneBlock) { 523| 3| doneBlock(nil, nil, SDImageCacheTypeNone); 524| 3| } 525| 3| return; 526| 3| } 527| 50| 528| 50| @autoreleasepool { 529| 50| NSData *diskData = [self diskImageDataBySearchingAllPathsForKey:key]; 530| 50| UIImage *diskImage; 531| 50| if (image) { 532| 0| // the image is from in-memory cache, but need image data 533| 0| diskImage = image; 534| 50| } else if (diskData) { 535| 3| // decode image data only if in-memory cache missed 536| 3| diskImage = [self diskImageForKey:key data:diskData options:options context:context]; 537| 3| if (diskImage && self.config.shouldCacheImagesInMemory) { 538| 3| NSUInteger cost = diskImage.sd_memoryCost; 539| 3| [self.memoryCache setObject:diskImage forKey:key cost:cost]; 540| 3| } 541| 3| } 542| 50| 543| 50| if (doneBlock) { 544| 50| if (shouldQueryDiskSync) { 545| 0| doneBlock(diskImage, diskData, SDImageCacheTypeDisk); 546| 50| } else { 547| 50| dispatch_async(dispatch_get_main_queue(), ^{ 548| 50| doneBlock(diskImage, diskData, SDImageCacheTypeDisk); 549| 50| }); 550| 50| } 551| 50| } 552| 50| } 553| 50| }; 554| 53| 555| 53| // Query in ioQueue to keep IO-safe 556| 53| if (shouldQueryDiskSync) { 557| 0| dispatch_sync(self.ioQueue, queryDiskBlock); 558| 53| } else { 559| 53| dispatch_async(self.ioQueue, queryDiskBlock); 560| 53| } 561| 53| 562| 53| return operation; 563| 53|} 564| | 565| |#pragma mark - Remove Ops 566| | 567| 14|- (void)removeImageForKey:(nullable NSString *)key withCompletion:(nullable SDWebImageNoParamsBlock)completion { 568| 14| [self removeImageForKey:key fromDisk:YES withCompletion:completion]; 569| 14|} 570| | 571| 16|- (void)removeImageForKey:(nullable NSString *)key fromDisk:(BOOL)fromDisk withCompletion:(nullable SDWebImageNoParamsBlock)completion { 572| 16| [self removeImageForKey:key fromMemory:YES fromDisk:fromDisk withCompletion:completion]; 573| 16|} 574| | 575| 23|- (void)removeImageForKey:(nullable NSString *)key fromMemory:(BOOL)fromMemory fromDisk:(BOOL)fromDisk withCompletion:(nullable SDWebImageNoParamsBlock)completion { 576| 23| if (key == nil) { 577| 0| return; 578| 0| } 579| 23| 580| 23| if (fromMemory && self.config.shouldCacheImagesInMemory) { 581| 22| [self.memoryCache removeObjectForKey:key]; 582| 22| } 583| 23| 584| 23| if (fromDisk) { 585| 16| dispatch_async(self.ioQueue, ^{ 586| 16| [self.diskCache removeDataForKey:key]; 587| 16| 588| 16| if (completion) { 589| 16| dispatch_async(dispatch_get_main_queue(), ^{ 590| 16| completion(); 591| 16| }); 592| 16| } 593| 16| }); 594| 16| } else if (completion) { 595| 5| completion(); 596| 5| } 597| 23|} 598| | 599| 12|- (void)removeImageFromMemoryForKey:(NSString *)key { 600| 12| if (!key) { 601| 0| return; 602| 0| } 603| 12| 604| 12| [self.memoryCache removeObjectForKey:key]; 605| 12|} 606| | 607| 12|- (void)removeImageFromDiskForKey:(NSString *)key { 608| 12| if (!key) { 609| 0| return; 610| 0| } 611| 12| dispatch_sync(self.ioQueue, ^{ 612| 12| [self _removeImageFromDiskForKey:key]; 613| 12| }); 614| 12|} 615| | 616| |// Make sure to call from io queue by caller 617| 12|- (void)_removeImageFromDiskForKey:(NSString *)key { 618| 12| if (!key) { 619| 0| return; 620| 0| } 621| 12| 622| 12| [self.diskCache removeDataForKey:key]; 623| 12|} 624| | 625| |#pragma mark - Cache clean Ops 626| | 627| 10|- (void)clearMemory { 628| 10| [self.memoryCache removeAllObjects]; 629| 10|} 630| | 631| 7|- (void)clearDiskOnCompletion:(nullable SDWebImageNoParamsBlock)completion { 632| 7| dispatch_async(self.ioQueue, ^{ 633| 7| [self.diskCache removeAllData]; 634| 7| if (completion) { 635| 5| dispatch_async(dispatch_get_main_queue(), ^{ 636| 5| completion(); 637| 5| }); 638| 5| } 639| 7| }); 640| 7|} 641| | 642| 1|- (void)deleteOldFilesWithCompletionBlock:(nullable SDWebImageNoParamsBlock)completionBlock { 643| 1| dispatch_async(self.ioQueue, ^{ 644| 1| [self.diskCache removeExpiredData]; 645| 1| if (completionBlock) { 646| 1| dispatch_async(dispatch_get_main_queue(), ^{ 647| 1| completionBlock(); 648| 1| }); 649| 1| } 650| 1| }); 651| 1|} 652| | 653| |#pragma mark - UIApplicationWillTerminateNotification 654| | 655| |#if SD_UIKIT || SD_MAC 656| 0|- (void)applicationWillTerminate:(NSNotification *)notification { 657| 0| [self deleteOldFilesWithCompletionBlock:nil]; 658| 0|} 659| |#endif 660| | 661| |#pragma mark - UIApplicationDidEnterBackgroundNotification 662| | 663| |#if SD_UIKIT 664| |- (void)applicationDidEnterBackground:(NSNotification *)notification { 665| | if (!self.config.shouldRemoveExpiredDataWhenEnterBackground) { 666| | return; 667| | } 668| | Class UIApplicationClass = NSClassFromString(@"UIApplication"); 669| | if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) { 670| | return; 671| | } 672| | UIApplication *application = [UIApplication performSelector:@selector(sharedApplication)]; 673| | __block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 674| | // Clean up any unfinished task business by marking where you 675| | // stopped or ending the task outright. 676| | [application endBackgroundTask:bgTask]; 677| | bgTask = UIBackgroundTaskInvalid; 678| | }]; 679| | 680| | // Start the long-running task and return immediately. 681| | [self deleteOldFilesWithCompletionBlock:^{ 682| | [application endBackgroundTask:bgTask]; 683| | bgTask = UIBackgroundTaskInvalid; 684| | }]; 685| |} 686| |#endif 687| | 688| |#pragma mark - Cache Info 689| | 690| 1|- (NSUInteger)totalDiskSize { 691| 1| __block NSUInteger size = 0; 692| 1| dispatch_sync(self.ioQueue, ^{ 693| 1| size = [self.diskCache totalSize]; 694| 1| }); 695| 1| return size; 696| 1|} 697| | 698| 2|- (NSUInteger)totalDiskCount { 699| 2| __block NSUInteger count = 0; 700| 2| dispatch_sync(self.ioQueue, ^{ 701| 2| count = [self.diskCache totalCount]; 702| 2| }); 703| 2| return count; 704| 2|} 705| | 706| 1|- (void)calculateSizeWithCompletionBlock:(nullable SDImageCacheCalculateSizeBlock)completionBlock { 707| 1| dispatch_async(self.ioQueue, ^{ 708| 1| NSUInteger fileCount = [self.diskCache totalCount]; 709| 1| NSUInteger totalSize = [self.diskCache totalSize]; 710| 1| if (completionBlock) { 711| 1| dispatch_async(dispatch_get_main_queue(), ^{ 712| 1| completionBlock(fileCount, totalSize); 713| 1| }); 714| 1| } 715| 1| }); 716| 1|} 717| | 718| |#pragma mark - Helper 719| 10|+ (SDWebImageOptions)imageOptionsFromCacheOptions:(SDImageCacheOptions)cacheOptions { 720| 10| SDWebImageOptions options = 0; 721| 10| if (cacheOptions & SDImageCacheScaleDownLargeImages) options |= SDWebImageScaleDownLargeImages; 722| 10| if (cacheOptions & SDImageCacheDecodeFirstFrameOnly) options |= SDWebImageDecodeFirstFrameOnly; 723| 10| if (cacheOptions & SDImageCachePreloadAllFrames) options |= SDWebImagePreloadAllFrames; 724| 10| if (cacheOptions & SDImageCacheAvoidDecodeImage) options |= SDWebImageAvoidDecodeImage; 725| 10| if (cacheOptions & SDImageCacheMatchAnimatedImageClass) options |= SDWebImageMatchAnimatedImageClass; 726| 10| 727| 10| return options; 728| 10|} 729| | 730| |@end 731| | 732| |@implementation SDImageCache (SDImageCache) 733| | 734| |#pragma mark - SDImageCache 735| | 736| 0|- (id)queryImageForKey:(NSString *)key options:(SDWebImageOptions)options context:(nullable SDWebImageContext *)context completion:(nullable SDImageCacheQueryCompletionBlock)completionBlock { 737| 0| return [self queryImageForKey:key options:options context:context cacheType:SDImageCacheTypeAll completion:completionBlock]; 738| 0|} 739| | 740| 68|- (id)queryImageForKey:(NSString *)key options:(SDWebImageOptions)options context:(nullable SDWebImageContext *)context cacheType:(SDImageCacheType)cacheType completion:(nullable SDImageCacheQueryCompletionBlock)completionBlock { 741| 68| SDImageCacheOptions cacheOptions = 0; 742| 68| if (options & SDWebImageQueryMemoryData) cacheOptions |= SDImageCacheQueryMemoryData; 743| 68| if (options & SDWebImageQueryMemoryDataSync) cacheOptions |= SDImageCacheQueryMemoryDataSync; 744| 68| if (options & SDWebImageQueryDiskDataSync) cacheOptions |= SDImageCacheQueryDiskDataSync; 745| 68| if (options & SDWebImageScaleDownLargeImages) cacheOptions |= SDImageCacheScaleDownLargeImages; 746| 68| if (options & SDWebImageAvoidDecodeImage) cacheOptions |= SDImageCacheAvoidDecodeImage; 747| 68| if (options & SDWebImageDecodeFirstFrameOnly) cacheOptions |= SDImageCacheDecodeFirstFrameOnly; 748| 68| if (options & SDWebImagePreloadAllFrames) cacheOptions |= SDImageCachePreloadAllFrames; 749| 68| if (options & SDWebImageMatchAnimatedImageClass) cacheOptions |= SDImageCacheMatchAnimatedImageClass; 750| 68| 751| 68| return [self queryCacheOperationForKey:key options:cacheOptions context:context cacheType:cacheType done:completionBlock]; 752| 68|} 753| | 754| 49|- (void)storeImage:(UIImage *)image imageData:(NSData *)imageData forKey:(nullable NSString *)key cacheType:(SDImageCacheType)cacheType completion:(nullable SDWebImageNoParamsBlock)completionBlock { 755| 49| switch (cacheType) { 756| 49| case SDImageCacheTypeNone: { 757| 2| [self storeImage:image imageData:imageData forKey:key toMemory:NO toDisk:NO completion:completionBlock]; 758| 2| } 759| 2| break; 760| 49| case SDImageCacheTypeMemory: { 761| 8| [self storeImage:image imageData:imageData forKey:key toMemory:YES toDisk:NO completion:completionBlock]; 762| 8| } 763| 8| break; 764| 49| case SDImageCacheTypeDisk: { 765| 1| [self storeImage:image imageData:imageData forKey:key toMemory:NO toDisk:YES completion:completionBlock]; 766| 1| } 767| 1| break; 768| 49| case SDImageCacheTypeAll: { 769| 38| [self storeImage:image imageData:imageData forKey:key toMemory:YES toDisk:YES completion:completionBlock]; 770| 38| } 771| 38| break; 772| 49| default: { 773| 0| if (completionBlock) { 774| 0| completionBlock(); 775| 0| } 776| 0| } 777| 0| break; 778| 49| } 779| 49|} 780| | 781| 7|- (void)removeImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(nullable SDWebImageNoParamsBlock)completionBlock { 782| 7| switch (cacheType) { 783| 7| case SDImageCacheTypeNone: { 784| 0| [self removeImageForKey:key fromMemory:NO fromDisk:NO withCompletion:completionBlock]; 785| 0| } 786| 0| break; 787| 7| case SDImageCacheTypeMemory: { 788| 6| [self removeImageForKey:key fromMemory:YES fromDisk:NO withCompletion:completionBlock]; 789| 6| } 790| 6| break; 791| 7| case SDImageCacheTypeDisk: { 792| 1| [self removeImageForKey:key fromMemory:NO fromDisk:YES withCompletion:completionBlock]; 793| 1| } 794| 1| break; 795| 7| case SDImageCacheTypeAll: { 796| 0| [self removeImageForKey:key fromMemory:YES fromDisk:YES withCompletion:completionBlock]; 797| 0| } 798| 0| break; 799| 7| default: { 800| 0| if (completionBlock) { 801| 0| completionBlock(); 802| 0| } 803| 0| } 804| 0| break; 805| 7| } 806| 7|} 807| | 808| 8|- (void)containsImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(nullable SDImageCacheContainsCompletionBlock)completionBlock { 809| 8| switch (cacheType) { 810| 8| case SDImageCacheTypeNone: { 811| 0| if (completionBlock) { 812| 0| completionBlock(SDImageCacheTypeNone); 813| 0| } 814| 0| } 815| 0| break; 816| 8| case SDImageCacheTypeMemory: { 817| 3| BOOL isInMemoryCache = ([self imageFromMemoryCacheForKey:key] != nil); 818| 3| if (completionBlock) { 819| 3| completionBlock(isInMemoryCache ? SDImageCacheTypeMemory : SDImageCacheTypeNone); 820| 3| } 821| 3| } 822| 3| break; 823| 8| case SDImageCacheTypeDisk: { 824| 0| [self diskImageExistsWithKey:key completion:^(BOOL isInDiskCache) { 825| 0| if (completionBlock) { 826| 0| completionBlock(isInDiskCache ? SDImageCacheTypeDisk : SDImageCacheTypeNone); 827| 0| } 828| 0| }]; 829| 0| } 830| 0| break; 831| 8| case SDImageCacheTypeAll: { 832| 5| BOOL isInMemoryCache = ([self imageFromMemoryCacheForKey:key] != nil); 833| 5| if (isInMemoryCache) { 834| 3| if (completionBlock) { 835| 3| completionBlock(SDImageCacheTypeMemory); 836| 3| } 837| 3| return; 838| 3| } 839| 2| [self diskImageExistsWithKey:key completion:^(BOOL isInDiskCache) { 840| 2| if (completionBlock) { 841| 2| completionBlock(isInDiskCache ? SDImageCacheTypeDisk : SDImageCacheTypeNone); 842| 2| } 843| 2| }]; 844| 2| } 845| 2| break; 846| 2| default: 847| 0| if (completionBlock) { 848| 0| completionBlock(SDImageCacheTypeNone); 849| 0| } 850| 0| break; 851| 8| } 852| 8|} 853| | 854| 7|- (void)clearWithCacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock { 855| 7| switch (cacheType) { 856| 7| case SDImageCacheTypeNone: { 857| 0| if (completionBlock) { 858| 0| completionBlock(); 859| 0| } 860| 0| } 861| 0| break; 862| 7| case SDImageCacheTypeMemory: { 863| 6| [self clearMemory]; 864| 6| if (completionBlock) { 865| 4| completionBlock(); 866| 4| } 867| 6| } 868| 6| break; 869| 7| case SDImageCacheTypeDisk: { 870| 0| [self clearDiskOnCompletion:completionBlock]; 871| 0| } 872| 0| break; 873| 7| case SDImageCacheTypeAll: { 874| 1| [self clearMemory]; 875| 1| [self clearDiskOnCompletion:completionBlock]; 876| 1| } 877| 1| break; 878| 7| default: { 879| 0| if (completionBlock) { 880| 0| completionBlock(); 881| 0| } 882| 0| } 883| 0| break; 884| 7| } 885| 7|} 886| | 887| |@end 888| | /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageCacheConfig.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageCacheConfig.h" 10| |#import "SDMemoryCache.h" 11| |#import "SDDiskCache.h" 12| | 13| |static SDImageCacheConfig *_defaultCacheConfig; 14| |static const NSInteger kDefaultCacheMaxDiskAge = 60 * 60 * 24 * 7; // 1 week 15| | 16| |@implementation SDImageCacheConfig 17| | 18| 14|+ (SDImageCacheConfig *)defaultCacheConfig { 19| 14| static dispatch_once_t onceToken; 20| 14| dispatch_once(&onceToken, ^{ 21| 1| _defaultCacheConfig = [SDImageCacheConfig new]; 22| 1| }); 23| 14| return _defaultCacheConfig; 24| 14|} 25| | 26| 21|- (instancetype)init { 27| 21| if (self = [super init]) { 28| 21| _shouldDisableiCloud = YES; 29| 21| _shouldCacheImagesInMemory = YES; 30| 21| _shouldUseWeakMemoryCache = YES; 31| 21| _shouldRemoveExpiredDataWhenEnterBackground = YES; 32| 21| _diskCacheReadingOptions = 0; 33| 21| _diskCacheWritingOptions = NSDataWritingAtomic; 34| 21| _maxDiskAge = kDefaultCacheMaxDiskAge; 35| 21| _maxDiskSize = 0; 36| 21| _diskCacheExpireType = SDImageCacheConfigExpireTypeModificationDate; 37| 21| _memoryCacheClass = [SDMemoryCache class]; 38| 21| _diskCacheClass = [SDDiskCache class]; 39| 21| } 40| 21| return self; 41| 21|} 42| | 43| 15|- (id)copyWithZone:(NSZone *)zone { 44| 15| SDImageCacheConfig *config = [[[self class] allocWithZone:zone] init]; 45| 15| config.shouldDisableiCloud = self.shouldDisableiCloud; 46| 15| config.shouldCacheImagesInMemory = self.shouldCacheImagesInMemory; 47| 15| config.shouldUseWeakMemoryCache = self.shouldUseWeakMemoryCache; 48| 15| config.shouldRemoveExpiredDataWhenEnterBackground = self.shouldRemoveExpiredDataWhenEnterBackground; 49| 15| config.diskCacheReadingOptions = self.diskCacheReadingOptions; 50| 15| config.diskCacheWritingOptions = self.diskCacheWritingOptions; 51| 15| config.maxDiskAge = self.maxDiskAge; 52| 15| config.maxDiskSize = self.maxDiskSize; 53| 15| config.maxMemoryCost = self.maxMemoryCost; 54| 15| config.maxMemoryCount = self.maxMemoryCount; 55| 15| config.diskCacheExpireType = self.diskCacheExpireType; 56| 15| config.fileManager = self.fileManager; // NSFileManager does not conform to NSCopying, just pass the reference 57| 15| config.memoryCacheClass = self.memoryCacheClass; 58| 15| config.diskCacheClass = self.diskCacheClass; 59| 15| 60| 15| return config; 61| 15|} 62| | 63| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageCacheDefine.h" 10| |#import "SDImageCodersManager.h" 11| |#import "SDImageCoderHelper.h" 12| |#import "SDAnimatedImage.h" 13| |#import "UIImage+Metadata.h" 14| |#import "SDInternalMacros.h" 15| | 16| 10|UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonnull imageData, NSString * _Nonnull cacheKey, SDWebImageOptions options, SDWebImageContext * _Nullable context) { 17| 10| UIImage *image; 18| 10| BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); 19| 10| NSNumber *scaleValue = context[SDWebImageContextImageScaleFactor]; 20| 10| CGFloat scale = scaleValue.doubleValue >= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); 21| 10| NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; 22| 10| NSValue *thumbnailSizeValue; 23| 10| BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); 24| 10| if (shouldScaleDown) { 25| 0| CGFloat thumbnailPixels = SDImageCoderHelper.defaultScaleDownLimitBytes / 4; 26| 0| CGFloat dimension = ceil(sqrt(thumbnailPixels)); 27| 0| thumbnailSizeValue = @(CGSizeMake(dimension, dimension)); 28| 0| } 29| 10| if (context[SDWebImageContextImageThumbnailPixelSize]) { 30| 0| thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; 31| 0| } 32| 10| 33| 10| SDImageCoderMutableOptions *mutableCoderOptions = [NSMutableDictionary dictionaryWithCapacity:2]; 34| 10| mutableCoderOptions[SDImageCoderDecodeFirstFrameOnly] = @(decodeFirstFrame); 35| 10| mutableCoderOptions[SDImageCoderDecodeScaleFactor] = @(scale); 36| 10| mutableCoderOptions[SDImageCoderDecodePreserveAspectRatio] = preserveAspectRatioValue; 37| 10| mutableCoderOptions[SDImageCoderDecodeThumbnailPixelSize] = thumbnailSizeValue; 38| 10| mutableCoderOptions[SDImageCoderWebImageContext] = context; 39| 10| SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; 40| 10| 41| 10| // Grab the image coder 42| 10| id imageCoder; 43| 10| if ([context[SDWebImageContextImageCoder] conformsToProtocol:@protocol(SDImageCoder)]) { 44| 0| imageCoder = context[SDWebImageContextImageCoder]; 45| 10| } else { 46| 10| imageCoder = [SDImageCodersManager sharedManager]; 47| 10| } 48| 10| 49| 10| if (!decodeFirstFrame) { 50| 10| Class animatedImageClass = context[SDWebImageContextAnimatedImageClass]; 51| 10| // check whether we should use `SDAnimatedImage` 52| 10| if ([animatedImageClass isSubclassOfClass:[UIImage class]] && [animatedImageClass conformsToProtocol:@protocol(SDAnimatedImage)]) { 53| 1| image = [[animatedImageClass alloc] initWithData:imageData scale:scale options:coderOptions]; 54| 1| if (image) { 55| 1| // Preload frames if supported 56| 1| if (options & SDWebImagePreloadAllFrames && [image respondsToSelector:@selector(preloadAllFrames)]) { 57| 0| [((id)image) preloadAllFrames]; 58| 0| } 59| 1| } else { 60| 0| // Check image class matching 61| 0| if (options & SDWebImageMatchAnimatedImageClass) { 62| 0| return nil; 63| 0| } 64| 10| } 65| 1| } 66| 10| } 67| 10| if (!image) { 68| 9| image = [imageCoder decodedImageWithData:imageData options:coderOptions]; 69| 9| } 70| 10| if (image) { 71| 10| BOOL shouldDecode = !SD_OPTIONS_CONTAINS(options, SDWebImageAvoidDecodeImage); 72| 10| if ([image.class conformsToProtocol:@protocol(SDAnimatedImage)]) { 73| 1| // `SDAnimatedImage` do not decode 74| 1| shouldDecode = NO; 75| 9| } else if (image.sd_isAnimated) { 76| 2| // animated image do not decode 77| 2| shouldDecode = NO; 78| 2| } 79| 10| if (shouldDecode) { 80| 7| image = [SDImageCoderHelper decodedImageWithImage:image]; 81| 7| } 82| 10| } 83| 10| 84| 10| return image; 85| 10|} /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageCachesManager.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageCachesManager.h" 10| |#import "SDImageCachesManagerOperation.h" 11| |#import "SDImageCache.h" 12| |#import "SDInternalMacros.h" 13| | 14| |@interface SDImageCachesManager () 15| | 16| |@property (nonatomic, strong, nonnull) dispatch_semaphore_t cachesLock; 17| | 18| |@end 19| | 20| |@implementation SDImageCachesManager 21| |{ 22| | NSMutableArray> *_imageCaches; 23| |} 24| | 25| 6|+ (SDImageCachesManager *)sharedManager { 26| 6| static dispatch_once_t onceToken; 27| 6| static SDImageCachesManager *manager; 28| 6| dispatch_once(&onceToken, ^{ 29| 1| manager = [[SDImageCachesManager alloc] init]; 30| 1| }); 31| 6| return manager; 32| 6|} 33| | 34| 4|- (instancetype)init { 35| 4| self = [super init]; 36| 4| if (self) { 37| 4| self.queryOperationPolicy = SDImageCachesManagerOperationPolicySerial; 38| 4| self.storeOperationPolicy = SDImageCachesManagerOperationPolicyHighestOnly; 39| 4| self.removeOperationPolicy = SDImageCachesManagerOperationPolicyConcurrent; 40| 4| self.containsOperationPolicy = SDImageCachesManagerOperationPolicySerial; 41| 4| self.clearOperationPolicy = SDImageCachesManagerOperationPolicyConcurrent; 42| 4| // initialize with default image caches 43| 4| _imageCaches = [NSMutableArray arrayWithObject:[SDImageCache sharedImageCache]]; 44| 4| _cachesLock = dispatch_semaphore_create(1); 45| 4| } 46| 4| return self; 47| 4|} 48| | 49| 26|- (NSArray> *)caches { 50| 26| SD_LOCK(self.cachesLock); 51| 26| NSArray> *caches = [_imageCaches copy]; 52| 26| SD_UNLOCK(self.cachesLock); 53| 26| return caches; 54| 26|} 55| | 56| 3|- (void)setCaches:(NSArray> *)caches { 57| 3| SD_LOCK(self.cachesLock); 58| 3| [_imageCaches removeAllObjects]; 59| 3| if (caches.count) { 60| 3| [_imageCaches addObjectsFromArray:caches]; 61| 3| } 62| 3| SD_UNLOCK(self.cachesLock); 63| 3|} 64| | 65| |#pragma mark - Cache IO operations 66| | 67| 0|- (void)addCache:(id)cache { 68| 0| if (![cache conformsToProtocol:@protocol(SDImageCache)]) { 69| 0| return; 70| 0| } 71| 0| SD_LOCK(self.cachesLock); 72| 0| [_imageCaches addObject:cache]; 73| 0| SD_UNLOCK(self.cachesLock); 74| 0|} 75| | 76| 0|- (void)removeCache:(id)cache { 77| 0| if (![cache conformsToProtocol:@protocol(SDImageCache)]) { 78| 0| return; 79| 0| } 80| 0| SD_LOCK(self.cachesLock); 81| 0| [_imageCaches removeObject:cache]; 82| 0| SD_UNLOCK(self.cachesLock); 83| 0|} 84| | 85| |#pragma mark - SDImageCache 86| | 87| 0|- (id)queryImageForKey:(NSString *)key options:(SDWebImageOptions)options context:(SDWebImageContext *)context completion:(SDImageCacheQueryCompletionBlock)completionBlock { 88| 0| return [self queryImageForKey:key options:options context:context cacheType:SDImageCacheTypeAll completion:completionBlock]; 89| 0|} 90| | 91| 6|- (id)queryImageForKey:(NSString *)key options:(SDWebImageOptions)options context:(SDWebImageContext *)context cacheType:(SDImageCacheType)cacheType completion:(SDImageCacheQueryCompletionBlock)completionBlock { 92| 6| if (!key) { 93| 0| return nil; 94| 0| } 95| 6| NSArray> *caches = self.caches; 96| 6| NSUInteger count = caches.count; 97| 6| if (count == 0) { 98| 0| return nil; 99| 6| } else if (count == 1) { 100| 2| return [caches.firstObject queryImageForKey:key options:options context:context cacheType:cacheType completion:completionBlock]; 101| 2| } 102| 4| switch (self.queryOperationPolicy) { 103| 4| case SDImageCachesManagerOperationPolicyHighestOnly: { 104| 1| id cache = caches.lastObject; 105| 1| return [cache queryImageForKey:key options:options context:context cacheType:cacheType completion:completionBlock]; 106| 4| } 107| 4| break; 108| 4| case SDImageCachesManagerOperationPolicyLowestOnly: { 109| 1| id cache = caches.firstObject; 110| 1| return [cache queryImageForKey:key options:options context:context cacheType:cacheType completion:completionBlock]; 111| 4| } 112| 4| break; 113| 4| case SDImageCachesManagerOperationPolicyConcurrent: { 114| 1| SDImageCachesManagerOperation *operation = [SDImageCachesManagerOperation new]; 115| 1| [operation beginWithTotalCount:caches.count]; 116| 1| [self concurrentQueryImageForKey:key options:options context:context cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator operation:operation]; 117| 1| return operation; 118| 4| } 119| 4| break; 120| 4| case SDImageCachesManagerOperationPolicySerial: { 121| 1| SDImageCachesManagerOperation *operation = [SDImageCachesManagerOperation new]; 122| 1| [operation beginWithTotalCount:caches.count]; 123| 1| [self serialQueryImageForKey:key options:options context:context cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator operation:operation]; 124| 1| return operation; 125| 4| } 126| 4| break; 127| 4| default: 128| 0| return nil; 129| 4| break; 130| 4| } 131| 4|} 132| | 133| 5|- (void)storeImage:(UIImage *)image imageData:(NSData *)imageData forKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock { 134| 5| if (!key) { 135| 0| return; 136| 0| } 137| 5| NSArray> *caches = self.caches; 138| 5| NSUInteger count = caches.count; 139| 5| if (count == 0) { 140| 0| return; 141| 5| } else if (count == 1) { 142| 1| [caches.firstObject storeImage:image imageData:imageData forKey:key cacheType:cacheType completion:completionBlock]; 143| 1| return; 144| 1| } 145| 4| switch (self.storeOperationPolicy) { 146| 4| case SDImageCachesManagerOperationPolicyHighestOnly: { 147| 1| id cache = caches.lastObject; 148| 1| [cache storeImage:image imageData:imageData forKey:key cacheType:cacheType completion:completionBlock]; 149| 1| } 150| 1| break; 151| 4| case SDImageCachesManagerOperationPolicyLowestOnly: { 152| 1| id cache = caches.firstObject; 153| 1| [cache storeImage:image imageData:imageData forKey:key cacheType:cacheType completion:completionBlock]; 154| 1| } 155| 1| break; 156| 4| case SDImageCachesManagerOperationPolicyConcurrent: { 157| 1| SDImageCachesManagerOperation *operation = [SDImageCachesManagerOperation new]; 158| 1| [operation beginWithTotalCount:caches.count]; 159| 1| [self concurrentStoreImage:image imageData:imageData forKey:key cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator operation:operation]; 160| 1| } 161| 1| break; 162| 4| case SDImageCachesManagerOperationPolicySerial: { 163| 1| [self serialStoreImage:image imageData:imageData forKey:key cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator]; 164| 1| } 165| 1| break; 166| 4| default: 167| 0| break; 168| 4| } 169| 4|} 170| | 171| 5|- (void)removeImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock { 172| 5| if (!key) { 173| 0| return; 174| 0| } 175| 5| NSArray> *caches = self.caches; 176| 5| NSUInteger count = caches.count; 177| 5| if (count == 0) { 178| 0| return; 179| 5| } else if (count == 1) { 180| 1| [caches.firstObject removeImageForKey:key cacheType:cacheType completion:completionBlock]; 181| 1| return; 182| 1| } 183| 4| switch (self.removeOperationPolicy) { 184| 4| case SDImageCachesManagerOperationPolicyHighestOnly: { 185| 1| id cache = caches.lastObject; 186| 1| [cache removeImageForKey:key cacheType:cacheType completion:completionBlock]; 187| 1| } 188| 1| break; 189| 4| case SDImageCachesManagerOperationPolicyLowestOnly: { 190| 1| id cache = caches.firstObject; 191| 1| [cache removeImageForKey:key cacheType:cacheType completion:completionBlock]; 192| 1| } 193| 1| break; 194| 4| case SDImageCachesManagerOperationPolicyConcurrent: { 195| 1| SDImageCachesManagerOperation *operation = [SDImageCachesManagerOperation new]; 196| 1| [operation beginWithTotalCount:caches.count]; 197| 1| [self concurrentRemoveImageForKey:key cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator operation:operation]; 198| 1| } 199| 1| break; 200| 4| case SDImageCachesManagerOperationPolicySerial: { 201| 1| [self serialRemoveImageForKey:key cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator]; 202| 1| } 203| 1| break; 204| 4| default: 205| 0| break; 206| 4| } 207| 4|} 208| | 209| 5|- (void)containsImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDImageCacheContainsCompletionBlock)completionBlock { 210| 5| if (!key) { 211| 0| return; 212| 0| } 213| 5| NSArray> *caches = self.caches; 214| 5| NSUInteger count = caches.count; 215| 5| if (count == 0) { 216| 0| return; 217| 5| } else if (count == 1) { 218| 1| [caches.firstObject containsImageForKey:key cacheType:cacheType completion:completionBlock]; 219| 1| return; 220| 1| } 221| 4| switch (self.clearOperationPolicy) { 222| 4| case SDImageCachesManagerOperationPolicyHighestOnly: { 223| 1| id cache = caches.lastObject; 224| 1| [cache containsImageForKey:key cacheType:cacheType completion:completionBlock]; 225| 1| } 226| 1| break; 227| 4| case SDImageCachesManagerOperationPolicyLowestOnly: { 228| 1| id cache = caches.firstObject; 229| 1| [cache containsImageForKey:key cacheType:cacheType completion:completionBlock]; 230| 1| } 231| 1| break; 232| 4| case SDImageCachesManagerOperationPolicyConcurrent: { 233| 1| SDImageCachesManagerOperation *operation = [SDImageCachesManagerOperation new]; 234| 1| [operation beginWithTotalCount:caches.count]; 235| 1| [self concurrentContainsImageForKey:key cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator operation:operation]; 236| 1| } 237| 1| break; 238| 4| case SDImageCachesManagerOperationPolicySerial: { 239| 1| SDImageCachesManagerOperation *operation = [SDImageCachesManagerOperation new]; 240| 1| [operation beginWithTotalCount:caches.count]; 241| 1| [self serialContainsImageForKey:key cacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator operation:operation]; 242| 1| } 243| 1| break; 244| 4| default: 245| 0| break; 246| 4| } 247| 4|} 248| | 249| 5|- (void)clearWithCacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock { 250| 5| NSArray> *caches = self.caches; 251| 5| NSUInteger count = caches.count; 252| 5| if (count == 0) { 253| 0| return; 254| 5| } else if (count == 1) { 255| 1| [caches.firstObject clearWithCacheType:cacheType completion:completionBlock]; 256| 1| return; 257| 1| } 258| 4| switch (self.clearOperationPolicy) { 259| 4| case SDImageCachesManagerOperationPolicyHighestOnly: { 260| 1| id cache = caches.lastObject; 261| 1| [cache clearWithCacheType:cacheType completion:completionBlock]; 262| 1| } 263| 1| break; 264| 4| case SDImageCachesManagerOperationPolicyLowestOnly: { 265| 1| id cache = caches.firstObject; 266| 1| [cache clearWithCacheType:cacheType completion:completionBlock]; 267| 1| } 268| 1| break; 269| 4| case SDImageCachesManagerOperationPolicyConcurrent: { 270| 1| SDImageCachesManagerOperation *operation = [SDImageCachesManagerOperation new]; 271| 1| [operation beginWithTotalCount:caches.count]; 272| 1| [self concurrentClearWithCacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator operation:operation]; 273| 1| } 274| 1| break; 275| 4| case SDImageCachesManagerOperationPolicySerial: { 276| 1| [self serialClearWithCacheType:cacheType completion:completionBlock enumerator:caches.reverseObjectEnumerator]; 277| 1| } 278| 1| break; 279| 4| default: 280| 0| break; 281| 4| } 282| 4|} 283| | 284| |#pragma mark - Concurrent Operation 285| | 286| 1|- (void)concurrentQueryImageForKey:(NSString *)key options:(SDWebImageOptions)options context:(SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType completion:(SDImageCacheQueryCompletionBlock)completionBlock enumerator:(NSEnumerator> *)enumerator operation:(SDImageCachesManagerOperation *)operation { 287| 1| NSParameterAssert(enumerator); 288| 1| NSParameterAssert(operation); 289| 2| for (id cache in enumerator) { 290| 2| [cache queryImageForKey:key options:options context:context cacheType:queryCacheType completion:^(UIImage * _Nullable image, NSData * _Nullable data, SDImageCacheType cacheType) { 291| 2| if (operation.isCancelled) { 292| 0| // Cancelled 293| 0| return; 294| 0| } 295| 2| if (operation.isFinished) { 296| 0| // Finished 297| 0| return; 298| 0| } 299| 2| [operation completeOne]; 300| 2| if (image) { 301| 0| // Success 302| 0| [operation done]; 303| 0| if (completionBlock) { 304| 0| completionBlock(image, data, cacheType); 305| 0| } 306| 0| return; 307| 0| } 308| 2| if (operation.pendingCount == 0) { 309| 1| // Complete 310| 1| [operation done]; 311| 1| if (completionBlock) { 312| 0| completionBlock(nil, nil, SDImageCacheTypeNone); 313| 0| } 314| 1| } 315| 2| }]; 316| 2| } 317| 1|} 318| | 319| 1|- (void)concurrentStoreImage:(UIImage *)image imageData:(NSData *)imageData forKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock enumerator:(NSEnumerator> *)enumerator operation:(SDImageCachesManagerOperation *)operation { 320| 1| NSParameterAssert(enumerator); 321| 1| NSParameterAssert(operation); 322| 2| for (id cache in enumerator) { 323| 2| [cache storeImage:image imageData:imageData forKey:key cacheType:cacheType completion:^{ 324| 2| if (operation.isCancelled) { 325| 0| // Cancelled 326| 0| return; 327| 0| } 328| 2| if (operation.isFinished) { 329| 0| // Finished 330| 0| return; 331| 0| } 332| 2| [operation completeOne]; 333| 2| if (operation.pendingCount == 0) { 334| 1| // Complete 335| 1| [operation done]; 336| 1| if (completionBlock) { 337| 0| completionBlock(); 338| 0| } 339| 1| } 340| 2| }]; 341| 2| } 342| 1|} 343| | 344| 1|- (void)concurrentRemoveImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock enumerator:(NSEnumerator> *)enumerator operation:(SDImageCachesManagerOperation *)operation { 345| 1| NSParameterAssert(enumerator); 346| 1| NSParameterAssert(operation); 347| 2| for (id cache in enumerator) { 348| 2| [cache removeImageForKey:key cacheType:cacheType completion:^{ 349| 2| if (operation.isCancelled) { 350| 0| // Cancelled 351| 0| return; 352| 0| } 353| 2| if (operation.isFinished) { 354| 0| // Finished 355| 0| return; 356| 0| } 357| 2| [operation completeOne]; 358| 2| if (operation.pendingCount == 0) { 359| 1| // Complete 360| 1| [operation done]; 361| 1| if (completionBlock) { 362| 0| completionBlock(); 363| 0| } 364| 1| } 365| 2| }]; 366| 2| } 367| 1|} 368| | 369| 1|- (void)concurrentContainsImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDImageCacheContainsCompletionBlock)completionBlock enumerator:(NSEnumerator> *)enumerator operation:(SDImageCachesManagerOperation *)operation { 370| 1| NSParameterAssert(enumerator); 371| 1| NSParameterAssert(operation); 372| 2| for (id cache in enumerator) { 373| 2| [cache containsImageForKey:key cacheType:cacheType completion:^(SDImageCacheType containsCacheType) { 374| 2| if (operation.isCancelled) { 375| 0| // Cancelled 376| 0| return; 377| 0| } 378| 2| if (operation.isFinished) { 379| 1| // Finished 380| 1| return; 381| 1| } 382| 1| [operation completeOne]; 383| 1| if (containsCacheType != SDImageCacheTypeNone) { 384| 1| // Success 385| 1| [operation done]; 386| 1| if (completionBlock) { 387| 1| completionBlock(containsCacheType); 388| 1| } 389| 1| return; 390| 1| } 391| 0| if (operation.pendingCount == 0) { 392| 0| // Complete 393| 0| [operation done]; 394| 0| if (completionBlock) { 395| 0| completionBlock(SDImageCacheTypeNone); 396| 0| } 397| 0| } 398| 0| }]; 399| 2| } 400| 1|} 401| | 402| 1|- (void)concurrentClearWithCacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock enumerator:(NSEnumerator> *)enumerator operation:(SDImageCachesManagerOperation *)operation { 403| 1| NSParameterAssert(enumerator); 404| 1| NSParameterAssert(operation); 405| 2| for (id cache in enumerator) { 406| 2| [cache clearWithCacheType:cacheType completion:^{ 407| 2| if (operation.isCancelled) { 408| 0| // Cancelled 409| 0| return; 410| 0| } 411| 2| if (operation.isFinished) { 412| 0| // Finished 413| 0| return; 414| 0| } 415| 2| [operation completeOne]; 416| 2| if (operation.pendingCount == 0) { 417| 1| // Complete 418| 1| [operation done]; 419| 1| if (completionBlock) { 420| 0| completionBlock(); 421| 0| } 422| 1| } 423| 2| }]; 424| 2| } 425| 1|} 426| | 427| |#pragma mark - Serial Operation 428| | 429| 2|- (void)serialQueryImageForKey:(NSString *)key options:(SDWebImageOptions)options context:(SDWebImageContext *)context cacheType:(SDImageCacheType)queryCacheType completion:(SDImageCacheQueryCompletionBlock)completionBlock enumerator:(NSEnumerator> *)enumerator operation:(SDImageCachesManagerOperation *)operation { 430| 2| NSParameterAssert(enumerator); 431| 2| NSParameterAssert(operation); 432| 2| id cache = enumerator.nextObject; 433| 2| if (!cache) { 434| 0| // Complete 435| 0| [operation done]; 436| 0| if (completionBlock) { 437| 0| completionBlock(nil, nil, SDImageCacheTypeNone); 438| 0| } 439| 0| return; 440| 0| } 441| 2| @weakify(self); 442| 2| [cache queryImageForKey:key options:options context:context cacheType:queryCacheType completion:^(UIImage * _Nullable image, NSData * _Nullable data, SDImageCacheType cacheType) { 443| 2| @strongify(self); 444| 2| if (operation.isCancelled) { 445| 0| // Cancelled 446| 0| return; 447| 0| } 448| 2| if (operation.isFinished) { 449| 0| // Finished 450| 0| return; 451| 0| } 452| 2| [operation completeOne]; 453| 2| if (image) { 454| 1| // Success 455| 1| [operation done]; 456| 1| if (completionBlock) { 457| 0| completionBlock(image, data, cacheType); 458| 0| } 459| 1| return; 460| 1| } 461| 1| // Next 462| 1| [self serialQueryImageForKey:key options:options context:context cacheType:queryCacheType completion:completionBlock enumerator:enumerator operation:operation]; 463| 1| }]; 464| 2|} 465| | 466| 3|- (void)serialStoreImage:(UIImage *)image imageData:(NSData *)imageData forKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock enumerator:(NSEnumerator> *)enumerator { 467| 3| NSParameterAssert(enumerator); 468| 3| id cache = enumerator.nextObject; 469| 3| if (!cache) { 470| 1| // Complete 471| 1| if (completionBlock) { 472| 0| completionBlock(); 473| 0| } 474| 1| return; 475| 1| } 476| 2| @weakify(self); 477| 2| [cache storeImage:image imageData:imageData forKey:key cacheType:cacheType completion:^{ 478| 2| @strongify(self); 479| 2| // Next 480| 2| [self serialStoreImage:image imageData:imageData forKey:key cacheType:cacheType completion:completionBlock enumerator:enumerator]; 481| 2| }]; 482| 2|} 483| | 484| 3|- (void)serialRemoveImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock enumerator:(NSEnumerator> *)enumerator { 485| 3| NSParameterAssert(enumerator); 486| 3| id cache = enumerator.nextObject; 487| 3| if (!cache) { 488| 1| // Complete 489| 1| if (completionBlock) { 490| 0| completionBlock(); 491| 0| } 492| 1| return; 493| 1| } 494| 2| @weakify(self); 495| 2| [cache removeImageForKey:key cacheType:cacheType completion:^{ 496| 2| @strongify(self); 497| 2| // Next 498| 2| [self serialRemoveImageForKey:key cacheType:cacheType completion:completionBlock enumerator:enumerator]; 499| 2| }]; 500| 2|} 501| | 502| 1|- (void)serialContainsImageForKey:(NSString *)key cacheType:(SDImageCacheType)cacheType completion:(SDImageCacheContainsCompletionBlock)completionBlock enumerator:(NSEnumerator> *)enumerator operation:(SDImageCachesManagerOperation *)operation { 503| 1| NSParameterAssert(enumerator); 504| 1| NSParameterAssert(operation); 505| 1| id cache = enumerator.nextObject; 506| 1| if (!cache) { 507| 0| // Complete 508| 0| [operation done]; 509| 0| if (completionBlock) { 510| 0| completionBlock(SDImageCacheTypeNone); 511| 0| } 512| 0| return; 513| 0| } 514| 1| @weakify(self); 515| 1| [cache containsImageForKey:key cacheType:cacheType completion:^(SDImageCacheType containsCacheType) { 516| 1| @strongify(self); 517| 1| if (operation.isCancelled) { 518| 0| // Cancelled 519| 0| return; 520| 0| } 521| 1| if (operation.isFinished) { 522| 0| // Finished 523| 0| return; 524| 0| } 525| 1| [operation completeOne]; 526| 1| if (containsCacheType != SDImageCacheTypeNone) { 527| 1| // Success 528| 1| [operation done]; 529| 1| if (completionBlock) { 530| 1| completionBlock(containsCacheType); 531| 1| } 532| 1| return; 533| 1| } 534| 0| // Next 535| 0| [self serialContainsImageForKey:key cacheType:cacheType completion:completionBlock enumerator:enumerator operation:operation]; 536| 0| }]; 537| 1|} 538| | 539| 3|- (void)serialClearWithCacheType:(SDImageCacheType)cacheType completion:(SDWebImageNoParamsBlock)completionBlock enumerator:(NSEnumerator> *)enumerator { 540| 3| NSParameterAssert(enumerator); 541| 3| id cache = enumerator.nextObject; 542| 3| if (!cache) { 543| 1| // Complete 544| 1| if (completionBlock) { 545| 0| completionBlock(); 546| 0| } 547| 1| return; 548| 1| } 549| 2| @weakify(self); 550| 2| [cache clearWithCacheType:cacheType completion:^{ 551| 2| @strongify(self); 552| 2| // Next 553| 2| [self serialClearWithCacheType:cacheType completion:completionBlock enumerator:enumerator]; 554| 2| }]; 555| 2|} 556| | 557| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageCoderHelper.h" 10| |#import "SDImageFrame.h" 11| |#import "NSImage+Compatibility.h" 12| |#import "NSData+ImageContentType.h" 13| |#import "SDAnimatedImageRep.h" 14| |#import "UIImage+ForceDecode.h" 15| |#import "SDAssociatedObject.h" 16| |#import "UIImage+Metadata.h" 17| |#import "SDInternalMacros.h" 18| |#import 19| | 20| 223|static inline size_t SDByteAlign(size_t size, size_t alignment) { 21| 223| return ((size + (alignment - 1)) / alignment) * alignment; 22| 223|} 23| | 24| |static const size_t kBytesPerPixel = 4; 25| |static const size_t kBitsPerComponent = 8; 26| | 27| |static const CGFloat kBytesPerMB = 1024.0f * 1024.0f; 28| |/* 29| | * Defines the maximum size in MB of the decoded image when the flag `SDWebImageScaleDownLargeImages` is set 30| | * Suggested value for iPad1 and iPhone 3GS: 60. 31| | * Suggested value for iPad2 and iPhone 4: 120. 32| | * Suggested value for iPhone 3G and iPod 2 and earlier devices: 30. 33| | */ 34| |#if SD_MAC 35| |static CGFloat kDestImageLimitBytes = 90.f * kBytesPerMB; 36| |#elif SD_UIKIT 37| |static CGFloat kDestImageLimitBytes = 60.f * kBytesPerMB; 38| |#elif SD_WATCH 39| |static CGFloat kDestImageLimitBytes = 30.f * kBytesPerMB; 40| |#endif 41| | 42| |static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to overlap the seems where tiles meet. 43| | 44| |@implementation SDImageCoderHelper 45| | 46| 6|+ (UIImage *)animatedImageWithFrames:(NSArray *)frames { 47| 6| NSUInteger frameCount = frames.count; 48| 6| if (frameCount == 0) { 49| 0| return nil; 50| 0| } 51| 6| 52| 6| UIImage *animatedImage; 53| 6| 54| |#if SD_UIKIT || SD_WATCH 55| | NSUInteger durations[frameCount]; 56| | for (size_t i = 0; i < frameCount; i++) { 57| | durations[i] = frames[i].duration * 1000; 58| | } 59| | NSUInteger const gcd = gcdArray(frameCount, durations); 60| | __block NSUInteger totalDuration = 0; 61| | NSMutableArray *animatedImages = [NSMutableArray arrayWithCapacity:frameCount]; 62| | [frames enumerateObjectsUsingBlock:^(SDImageFrame * _Nonnull frame, NSUInteger idx, BOOL * _Nonnull stop) { 63| | UIImage *image = frame.image; 64| | NSUInteger duration = frame.duration * 1000; 65| | totalDuration += duration; 66| | NSUInteger repeatCount; 67| | if (gcd) { 68| | repeatCount = duration / gcd; 69| | } else { 70| | repeatCount = 1; 71| | } 72| | for (size_t i = 0; i < repeatCount; ++i) { 73| | [animatedImages addObject:image]; 74| | } 75| | }]; 76| | 77| | animatedImage = [UIImage animatedImageWithImages:animatedImages duration:totalDuration / 1000.f]; 78| | 79| |#else 80| | 81| 6| NSMutableData *imageData = [NSMutableData data]; 82| 6| CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:SDImageFormatGIF]; 83| 6| // Create an image destination. GIF does not support EXIF image orientation 84| 6| CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, frameCount, NULL); 85| 6| if (!imageDestination) { 86| 0| // Handle failure. 87| 0| return nil; 88| 0| } 89| 6| 90| 458| for (size_t i = 0; i < frameCount; i++) { 91| 452| @autoreleasepool { 92| 452| SDImageFrame *frame = frames[i]; 93| 452| NSTimeInterval frameDuration = frame.duration; 94| 452| CGImageRef frameImageRef = frame.image.CGImage; 95| 452| NSDictionary *frameProperties = @{(__bridge NSString *)kCGImagePropertyGIFDictionary : @{(__bridge NSString *)kCGImagePropertyGIFDelayTime : @(frameDuration)}}; 96| 452| CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)frameProperties); 97| 452| } 98| 452| } 99| 6| // Finalize the destination. 100| 6| if (CGImageDestinationFinalize(imageDestination) == NO) { 101| 0| // Handle failure. 102| 0| CFRelease(imageDestination); 103| 0| return nil; 104| 0| } 105| 6| CFRelease(imageDestination); 106| 6| CGFloat scale = MAX(frames.firstObject.image.scale, 1); 107| 6| 108| 6| SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:imageData]; 109| 6| NSSize size = NSMakeSize(imageRep.pixelsWide / scale, imageRep.pixelsHigh / scale); 110| 6| imageRep.size = size; 111| 6| animatedImage = [[NSImage alloc] initWithSize:size]; 112| 6| [animatedImage addRepresentation:imageRep]; 113| 6|#endif 114| 6| 115| 6| return animatedImage; 116| 6|} 117| | 118| 12|+ (NSArray *)framesFromAnimatedImage:(UIImage *)animatedImage { 119| 12| if (!animatedImage) { 120| 0| return nil; 121| 0| } 122| 12| 123| 12| NSMutableArray *frames = [NSMutableArray array]; 124| 12| NSUInteger frameCount = 0; 125| 12| 126| |#if SD_UIKIT || SD_WATCH 127| | NSArray *animatedImages = animatedImage.images; 128| | frameCount = animatedImages.count; 129| | if (frameCount == 0) { 130| | return nil; 131| | } 132| | 133| | NSTimeInterval avgDuration = animatedImage.duration / frameCount; 134| | if (avgDuration == 0) { 135| | avgDuration = 0.1; // if it's a animated image but no duration, set it to default 100ms (this do not have that 10ms limit like GIF or WebP to allow custom coder provide the limit) 136| | } 137| | 138| | __block NSUInteger index = 0; 139| | __block NSUInteger repeatCount = 1; 140| | __block UIImage *previousImage = animatedImages.firstObject; 141| | [animatedImages enumerateObjectsUsingBlock:^(UIImage * _Nonnull image, NSUInteger idx, BOOL * _Nonnull stop) { 142| | // ignore first 143| | if (idx == 0) { 144| | return; 145| | } 146| | if ([image isEqual:previousImage]) { 147| | repeatCount++; 148| | } else { 149| | SDImageFrame *frame = [SDImageFrame frameWithImage:previousImage duration:avgDuration * repeatCount]; 150| | [frames addObject:frame]; 151| | repeatCount = 1; 152| | index++; 153| | } 154| | previousImage = image; 155| | // last one 156| | if (idx == frameCount - 1) { 157| | SDImageFrame *frame = [SDImageFrame frameWithImage:previousImage duration:avgDuration * repeatCount]; 158| | [frames addObject:frame]; 159| | } 160| | }]; 161| | 162| |#else 163| | 164| 12| NSRect imageRect = NSMakeRect(0, 0, animatedImage.size.width, animatedImage.size.height); 165| 12| NSImageRep *imageRep = [animatedImage bestRepresentationForRect:imageRect context:nil hints:nil]; 166| 12| NSBitmapImageRep *bitmapImageRep; 167| 12| if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) { 168| 12| bitmapImageRep = (NSBitmapImageRep *)imageRep; 169| 12| } 170| 12| if (!bitmapImageRep) { 171| 0| return nil; 172| 0| } 173| 12| frameCount = [[bitmapImageRep valueForProperty:NSImageFrameCount] unsignedIntegerValue]; 174| 12| if (frameCount == 0) { 175| 6| return nil; 176| 6| } 177| 6| CGFloat scale = animatedImage.scale; 178| 6| 179| 324| for (size_t i = 0; i < frameCount; i++) { 180| 318| @autoreleasepool { 181| 318| // NSBitmapImageRep need to manually change frame. "Good taste" API 182| 318| [bitmapImageRep setProperty:NSImageCurrentFrame withValue:@(i)]; 183| 318| NSTimeInterval frameDuration = [[bitmapImageRep valueForProperty:NSImageCurrentFrameDuration] doubleValue]; 184| 318| NSImage *frameImage = [[NSImage alloc] initWithCGImage:bitmapImageRep.CGImage scale:scale orientation:kCGImagePropertyOrientationUp]; 185| 318| SDImageFrame *frame = [SDImageFrame frameWithImage:frameImage duration:frameDuration]; 186| 318| [frames addObject:frame]; 187| 318| } 188| 318| } 189| 6|#endif 190| 6| 191| 6| return frames; 192| 6|} 193| | 194| 92|+ (CGColorSpaceRef)colorSpaceGetDeviceRGB { 195| 92|#if SD_MAC 196| 92| CGColorSpaceRef screenColorSpace = NSScreen.mainScreen.colorSpace.CGColorSpace; 197| 92| if (screenColorSpace) { 198| 92| return screenColorSpace; 199| 92| } 200| 0|#endif 201| 0| static CGColorSpaceRef colorSpace; 202| 0| static dispatch_once_t onceToken; 203| 0| dispatch_once(&onceToken, ^{ 204| |#if SD_UIKIT 205| | if (@available(iOS 9.0, tvOS 9.0, *)) { 206| | colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); 207| | } else { 208| | colorSpace = CGColorSpaceCreateDeviceRGB(); 209| | } 210| |#else 211| | colorSpace = CGColorSpaceCreateDeviceRGB(); 212| 0|#endif 213| 0| }); 214| 0| return colorSpace; 215| 0|} 216| | 217| 320|+ (BOOL)CGImageContainsAlpha:(CGImageRef)cgImage { 218| 320| if (!cgImage) { 219| 0| return NO; 220| 0| } 221| 320| CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(cgImage); 222| 320| BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone || 223| 320| alphaInfo == kCGImageAlphaNoneSkipFirst || 224| 320| alphaInfo == kCGImageAlphaNoneSkipLast); 225| 320| return hasAlpha; 226| 320|} 227| | 228| 81|+ (CGImageRef)CGImageCreateDecoded:(CGImageRef)cgImage { 229| 81| return [self CGImageCreateDecoded:cgImage orientation:kCGImagePropertyOrientationUp]; 230| 81|} 231| | 232| 90|+ (CGImageRef)CGImageCreateDecoded:(CGImageRef)cgImage orientation:(CGImagePropertyOrientation)orientation { 233| 90| if (!cgImage) { 234| 0| return NULL; 235| 0| } 236| 90| size_t width = CGImageGetWidth(cgImage); 237| 90| size_t height = CGImageGetHeight(cgImage); 238| 90| if (width == 0 || height == 0) return NULL; 239| 90| size_t newWidth; 240| 90| size_t newHeight; 241| 90| switch (orientation) { 242| 90| case kCGImagePropertyOrientationLeft: 243| 4| case kCGImagePropertyOrientationLeftMirrored: 244| 4| case kCGImagePropertyOrientationRight: 245| 4| case kCGImagePropertyOrientationRightMirrored: { 246| 4| // These orientation should swap width & height 247| 4| newWidth = height; 248| 4| newHeight = width; 249| 4| } 250| 4| break; 251| 86| default: { 252| 86| newWidth = width; 253| 86| newHeight = height; 254| 86| } 255| 86| break; 256| 90| } 257| 90| 258| 90| BOOL hasAlpha = [self CGImageContainsAlpha:cgImage]; 259| 90| // iOS prefer BGRA8888 (premultiplied) or BGRX8888 bitmapInfo for screen rendering, which is same as `UIGraphicsBeginImageContext()` or `- [CALayer drawInContext:]` 260| 90| // Though you can use any supported bitmapInfo (see: https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-BCIBHHBB ) and let Core Graphics reorder it when you call `CGContextDrawImage` 261| 90| // But since our build-in coders use this bitmapInfo, this can have a little performance benefit 262| 90| CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host; 263| 90| bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; 264| 90| CGContextRef context = CGBitmapContextCreate(NULL, newWidth, newHeight, 8, 0, [self colorSpaceGetDeviceRGB], bitmapInfo); 265| 90| if (!context) { 266| 0| return NULL; 267| 0| } 268| 90| 269| 90| // Apply transform 270| 90| CGAffineTransform transform = SDCGContextTransformFromOrientation(orientation, CGSizeMake(newWidth, newHeight)); 271| 90| CGContextConcatCTM(context, transform); 272| 90| CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage); // The rect is bounding box of CGImage, don't swap width & height 273| 90| CGImageRef newImageRef = CGBitmapContextCreateImage(context); 274| 90| CGContextRelease(context); 275| 90| 276| 90| return newImageRef; 277| 90|} 278| | 279| 223|+ (CGImageRef)CGImageCreateScaled:(CGImageRef)cgImage size:(CGSize)size { 280| 223| if (!cgImage) { 281| 0| return NULL; 282| 0| } 283| 223| size_t width = CGImageGetWidth(cgImage); 284| 223| size_t height = CGImageGetHeight(cgImage); 285| 223| if (width == size.width && height == size.height) { 286| 0| CGImageRetain(cgImage); 287| 0| return cgImage; 288| 0| } 289| 223| 290| 223| __block vImage_Buffer input_buffer = {}, output_buffer = {}; 291| 223| @onExit { 292| 223| if (input_buffer.data) free(input_buffer.data); 293| 223| if (output_buffer.data) free(output_buffer.data); 294| 223| }; 295| 223| BOOL hasAlpha = [self CGImageContainsAlpha:cgImage]; 296| 223| // iOS display alpha info (BGRA8888/BGRX8888) 297| 223| CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host; 298| 223| bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; 299| 223| vImage_CGImageFormat format = (vImage_CGImageFormat) { 300| 223| .bitsPerComponent = 8, 301| 223| .bitsPerPixel = 32, 302| 223| .colorSpace = NULL, 303| 223| .bitmapInfo = bitmapInfo, 304| 223| .version = 0, 305| 223| .decode = NULL, 306| 223| .renderingIntent = kCGRenderingIntentDefault, 307| 223| }; 308| 223| 309| 223| vImage_Error a_ret = vImageBuffer_InitWithCGImage(&input_buffer, &format, NULL, cgImage, kvImageNoFlags); 310| 223| if (a_ret != kvImageNoError) return NULL; 311| 223| output_buffer.width = MAX(size.width, 0); 312| 223| output_buffer.height = MAX(size.height, 0); 313| 223| output_buffer.rowBytes = SDByteAlign(output_buffer.width * 4, 64); 314| 223| output_buffer.data = malloc(output_buffer.rowBytes * output_buffer.height); 315| 223| if (!output_buffer.data) return NULL; 316| 223| 317| 223| vImage_Error ret = vImageScale_ARGB8888(&input_buffer, &output_buffer, NULL, kvImageHighQualityResampling); 318| 223| if (ret != kvImageNoError) return NULL; 319| 223| 320| 223| CGImageRef outputImage = vImageCreateCGImageFromBuffer(&output_buffer, &format, NULL, NULL, kvImageNoFlags, &ret); 321| 223| if (ret != kvImageNoError) { 322| 0| CGImageRelease(outputImage); 323| 0| return NULL; 324| 0| } 325| 223| 326| 223| return outputImage; 327| 223|} 328| | 329| 82|+ (UIImage *)decodedImageWithImage:(UIImage *)image { 330| 82| if (![self shouldDecodeImage:image]) { 331| 1| return image; 332| 1| } 333| 81| 334| 81| CGImageRef imageRef = [self CGImageCreateDecoded:image.CGImage]; 335| 81| if (!imageRef) { 336| 0| return image; 337| 0| } 338| 81|#if SD_MAC 339| 81| UIImage *decodedImage = [[UIImage alloc] initWithCGImage:imageRef scale:image.scale orientation:kCGImagePropertyOrientationUp]; 340| |#else 341| | UIImage *decodedImage = [[UIImage alloc] initWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation]; 342| |#endif 343| | CGImageRelease(imageRef); 344| 81| SDImageCopyAssociatedObject(image, decodedImage); 345| 81| decodedImage.sd_isDecoded = YES; 346| 81| return decodedImage; 347| 81|} 348| | 349| 3|+ (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image limitBytes:(NSUInteger)bytes { 350| 3| if (![self shouldDecodeImage:image]) { 351| 0| return image; 352| 0| } 353| 3| 354| 3| if (![self shouldScaleDownImage:image limitBytes:bytes]) { 355| 1| return [self decodedImageWithImage:image]; 356| 1| } 357| 2| 358| 2| CGFloat destTotalPixels; 359| 2| CGFloat tileTotalPixels; 360| 2| if (bytes == 0) { 361| 0| bytes = kDestImageLimitBytes; 362| 0| } 363| 2| destTotalPixels = bytes / kBytesPerPixel; 364| 2| tileTotalPixels = destTotalPixels / 3; 365| 2| CGContextRef destContext; 366| 2| 367| 2| // autorelease the bitmap context and all vars to help system to free memory when there are memory warning. 368| 2| // on iOS7, do not forget to call [[SDImageCache sharedImageCache] clearMemory]; 369| 2| @autoreleasepool { 370| 2| CGImageRef sourceImageRef = image.CGImage; 371| 2| 372| 2| CGSize sourceResolution = CGSizeZero; 373| 2| sourceResolution.width = CGImageGetWidth(sourceImageRef); 374| 2| sourceResolution.height = CGImageGetHeight(sourceImageRef); 375| 2| CGFloat sourceTotalPixels = sourceResolution.width * sourceResolution.height; 376| 2| // Determine the scale ratio to apply to the input image 377| 2| // that results in an output image of the defined size. 378| 2| // see kDestImageSizeMB, and how it relates to destTotalPixels. 379| 2| CGFloat imageScale = sqrt(destTotalPixels / sourceTotalPixels); 380| 2| CGSize destResolution = CGSizeZero; 381| 2| destResolution.width = MAX(1, (int)(sourceResolution.width * imageScale)); 382| 2| destResolution.height = MAX(1, (int)(sourceResolution.height * imageScale)); 383| 2| 384| 2| // device color space 385| 2| CGColorSpaceRef colorspaceRef = [self colorSpaceGetDeviceRGB]; 386| 2| BOOL hasAlpha = [self CGImageContainsAlpha:sourceImageRef]; 387| 2| // iOS display alpha info (BGRA8888/BGRX8888) 388| 2| CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host; 389| 2| bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; 390| 2| 391| 2| // kCGImageAlphaNone is not supported in CGBitmapContextCreate. 392| 2| // Since the original image here has no alpha info, use kCGImageAlphaNoneSkipFirst 393| 2| // to create bitmap graphics contexts without alpha info. 394| 2| destContext = CGBitmapContextCreate(NULL, 395| 2| destResolution.width, 396| 2| destResolution.height, 397| 2| kBitsPerComponent, 398| 2| 0, 399| 2| colorspaceRef, 400| 2| bitmapInfo); 401| 2| 402| 2| if (destContext == NULL) { 403| 0| return image; 404| 0| } 405| 2| CGContextSetInterpolationQuality(destContext, kCGInterpolationHigh); 406| 2| 407| 2| // Now define the size of the rectangle to be used for the 408| 2| // incremental bits from the input image to the output image. 409| 2| // we use a source tile width equal to the width of the source 410| 2| // image due to the way that iOS retrieves image data from disk. 411| 2| // iOS must decode an image from disk in full width 'bands', even 412| 2| // if current graphics context is clipped to a subrect within that 413| 2| // band. Therefore we fully utilize all of the pixel data that results 414| 2| // from a decoding operation by anchoring our tile size to the full 415| 2| // width of the input image. 416| 2| CGRect sourceTile = CGRectZero; 417| 2| sourceTile.size.width = sourceResolution.width; 418| 2| // The source tile height is dynamic. Since we specified the size 419| 2| // of the source tile in MB, see how many rows of pixels high it 420| 2| // can be given the input image width. 421| 2| sourceTile.size.height = MAX(1, (int)(tileTotalPixels / sourceTile.size.width)); 422| 2| sourceTile.origin.x = 0.0f; 423| 2| // The output tile is the same proportions as the input tile, but 424| 2| // scaled to image scale. 425| 2| CGRect destTile; 426| 2| destTile.size.width = destResolution.width; 427| 2| destTile.size.height = sourceTile.size.height * imageScale; 428| 2| destTile.origin.x = 0.0f; 429| 2| // The source seem overlap is proportionate to the destination seem overlap. 430| 2| // this is the amount of pixels to overlap each tile as we assemble the output image. 431| 2| float sourceSeemOverlap = (int)((kDestSeemOverlap/destResolution.height)*sourceResolution.height); 432| 2| CGImageRef sourceTileImageRef; 433| 2| // calculate the number of read/write operations required to assemble the 434| 2| // output image. 435| 2| int iterations = (int)( sourceResolution.height / sourceTile.size.height ); 436| 2| // If tile height doesn't divide the image height evenly, add another iteration 437| 2| // to account for the remaining pixels. 438| 2| int remainder = (int)sourceResolution.height % (int)sourceTile.size.height; 439| 2| if(remainder) { 440| 1| iterations++; 441| 1| } 442| 2| // Add seem overlaps to the tiles, but save the original tile height for y coordinate calculations. 443| 2| float sourceTileHeightMinusOverlap = sourceTile.size.height; 444| 2| sourceTile.size.height += sourceSeemOverlap; 445| 2| destTile.size.height += kDestSeemOverlap; 446| 66| for( int y = 0; y < iterations; ++y ) { 447| 64| @autoreleasepool { 448| 64| sourceTile.origin.y = y * sourceTileHeightMinusOverlap + sourceSeemOverlap; 449| 64| destTile.origin.y = destResolution.height - (( y + 1 ) * sourceTileHeightMinusOverlap * imageScale + kDestSeemOverlap); 450| 64| sourceTileImageRef = CGImageCreateWithImageInRect( sourceImageRef, sourceTile ); 451| 64| if( y == iterations - 1 && remainder ) { 452| 1| float dify = destTile.size.height; 453| 1| destTile.size.height = CGImageGetHeight( sourceTileImageRef ) * imageScale; 454| 1| dify -= destTile.size.height; 455| 1| destTile.origin.y += dify; 456| 1| } 457| 64| CGContextDrawImage( destContext, destTile, sourceTileImageRef ); 458| 64| CGImageRelease( sourceTileImageRef ); 459| 64| } 460| 64| } 461| 2| 462| 2| CGImageRef destImageRef = CGBitmapContextCreateImage(destContext); 463| 2| CGContextRelease(destContext); 464| 2| if (destImageRef == NULL) { 465| 0| return image; 466| 0| } 467| 2|#if SD_MAC 468| 2| UIImage *destImage = [[UIImage alloc] initWithCGImage:destImageRef scale:image.scale orientation:kCGImagePropertyOrientationUp]; 469| |#else 470| | UIImage *destImage = [[UIImage alloc] initWithCGImage:destImageRef scale:image.scale orientation:image.imageOrientation]; 471| |#endif 472| | CGImageRelease(destImageRef); 473| 2| if (destImage == nil) { 474| 0| return image; 475| 0| } 476| 2| SDImageCopyAssociatedObject(image, destImage); 477| 2| destImage.sd_isDecoded = YES; 478| 2| return destImage; 479| 2| } 480| 2|} 481| | 482| 5|+ (NSUInteger)defaultScaleDownLimitBytes { 483| 5| return kDestImageLimitBytes; 484| 5|} 485| | 486| 2|+ (void)setDefaultScaleDownLimitBytes:(NSUInteger)defaultScaleDownLimitBytes { 487| 2| if (defaultScaleDownLimitBytes < kBytesPerPixel) { 488| 0| return; 489| 0| } 490| 2| kDestImageLimitBytes = defaultScaleDownLimitBytes; 491| 2|} 492| | 493| |#if SD_UIKIT || SD_WATCH 494| |// Convert an EXIF image orientation to an iOS one. 495| |+ (UIImageOrientation)imageOrientationFromEXIFOrientation:(CGImagePropertyOrientation)exifOrientation { 496| | UIImageOrientation imageOrientation = UIImageOrientationUp; 497| | switch (exifOrientation) { 498| | case kCGImagePropertyOrientationUp: 499| | imageOrientation = UIImageOrientationUp; 500| | break; 501| | case kCGImagePropertyOrientationDown: 502| | imageOrientation = UIImageOrientationDown; 503| | break; 504| | case kCGImagePropertyOrientationLeft: 505| | imageOrientation = UIImageOrientationLeft; 506| | break; 507| | case kCGImagePropertyOrientationRight: 508| | imageOrientation = UIImageOrientationRight; 509| | break; 510| | case kCGImagePropertyOrientationUpMirrored: 511| | imageOrientation = UIImageOrientationUpMirrored; 512| | break; 513| | case kCGImagePropertyOrientationDownMirrored: 514| | imageOrientation = UIImageOrientationDownMirrored; 515| | break; 516| | case kCGImagePropertyOrientationLeftMirrored: 517| | imageOrientation = UIImageOrientationLeftMirrored; 518| | break; 519| | case kCGImagePropertyOrientationRightMirrored: 520| | imageOrientation = UIImageOrientationRightMirrored; 521| | break; 522| | default: 523| | break; 524| | } 525| | return imageOrientation; 526| |} 527| | 528| |// Convert an iOS orientation to an EXIF image orientation. 529| |+ (CGImagePropertyOrientation)exifOrientationFromImageOrientation:(UIImageOrientation)imageOrientation { 530| | CGImagePropertyOrientation exifOrientation = kCGImagePropertyOrientationUp; 531| | switch (imageOrientation) { 532| | case UIImageOrientationUp: 533| | exifOrientation = kCGImagePropertyOrientationUp; 534| | break; 535| | case UIImageOrientationDown: 536| | exifOrientation = kCGImagePropertyOrientationDown; 537| | break; 538| | case UIImageOrientationLeft: 539| | exifOrientation = kCGImagePropertyOrientationLeft; 540| | break; 541| | case UIImageOrientationRight: 542| | exifOrientation = kCGImagePropertyOrientationRight; 543| | break; 544| | case UIImageOrientationUpMirrored: 545| | exifOrientation = kCGImagePropertyOrientationUpMirrored; 546| | break; 547| | case UIImageOrientationDownMirrored: 548| | exifOrientation = kCGImagePropertyOrientationDownMirrored; 549| | break; 550| | case UIImageOrientationLeftMirrored: 551| | exifOrientation = kCGImagePropertyOrientationLeftMirrored; 552| | break; 553| | case UIImageOrientationRightMirrored: 554| | exifOrientation = kCGImagePropertyOrientationRightMirrored; 555| | break; 556| | default: 557| | break; 558| | } 559| | return exifOrientation; 560| |} 561| |#endif 562| | 563| |#pragma mark - Helper Function 564| 85|+ (BOOL)shouldDecodeImage:(nullable UIImage *)image { 565| 85| // Prevent "CGBitmapContextCreateImage: invalid context 0x0" error 566| 85| if (image == nil) { 567| 0| return NO; 568| 0| } 569| 85| // Avoid extra decode 570| 85| if (image.sd_isDecoded) { 571| 0| return NO; 572| 0| } 573| 85| // do not decode animated images 574| 85| if (image.sd_isAnimated) { 575| 1| return NO; 576| 1| } 577| 84| // do not decode vector images 578| 84| if (image.sd_isVector) { 579| 0| return NO; 580| 0| } 581| 84| 582| 84| return YES; 583| 84|} 584| | 585| 3|+ (BOOL)shouldScaleDownImage:(nonnull UIImage *)image limitBytes:(NSUInteger)bytes { 586| 3| BOOL shouldScaleDown = YES; 587| 3| 588| 3| CGImageRef sourceImageRef = image.CGImage; 589| 3| CGSize sourceResolution = CGSizeZero; 590| 3| sourceResolution.width = CGImageGetWidth(sourceImageRef); 591| 3| sourceResolution.height = CGImageGetHeight(sourceImageRef); 592| 3| float sourceTotalPixels = sourceResolution.width * sourceResolution.height; 593| 3| if (sourceTotalPixels <= 0) { 594| 0| return NO; 595| 0| } 596| 3| CGFloat destTotalPixels; 597| 3| if (bytes == 0) { 598| 1| bytes = [self defaultScaleDownLimitBytes]; 599| 1| } 600| 3| bytes = MAX(bytes, kBytesPerPixel); 601| 3| destTotalPixels = bytes / kBytesPerPixel; 602| 3| float imageScale = destTotalPixels / sourceTotalPixels; 603| 3| if (imageScale < 1) { 604| 2| shouldScaleDown = YES; 605| 2| } else { 606| 1| shouldScaleDown = NO; 607| 1| } 608| 3| 609| 3| return shouldScaleDown; 610| 3|} 611| | 612| 90|static inline CGAffineTransform SDCGContextTransformFromOrientation(CGImagePropertyOrientation orientation, CGSize size) { 613| 90| // Inspiration from @libfeihu 614| 90| // We need to calculate the proper transformation to make the image upright. 615| 90| // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored. 616| 90| CGAffineTransform transform = CGAffineTransformIdentity; 617| 90| 618| 90| switch (orientation) { 619| 90| case kCGImagePropertyOrientationDown: 620| 2| case kCGImagePropertyOrientationDownMirrored: 621| 2| transform = CGAffineTransformTranslate(transform, size.width, size.height); 622| 2| transform = CGAffineTransformRotate(transform, M_PI); 623| 2| break; 624| 2| 625| 2| case kCGImagePropertyOrientationLeft: 626| 2| case kCGImagePropertyOrientationLeftMirrored: 627| 2| transform = CGAffineTransformTranslate(transform, size.width, 0); 628| 2| transform = CGAffineTransformRotate(transform, M_PI_2); 629| 2| break; 630| 2| 631| 2| case kCGImagePropertyOrientationRight: 632| 2| case kCGImagePropertyOrientationRightMirrored: 633| 2| transform = CGAffineTransformTranslate(transform, 0, size.height); 634| 2| transform = CGAffineTransformRotate(transform, -M_PI_2); 635| 2| break; 636| 84| case kCGImagePropertyOrientationUp: 637| 84| case kCGImagePropertyOrientationUpMirrored: 638| 84| break; 639| 90| } 640| 90| 641| 90| switch (orientation) { 642| 90| case kCGImagePropertyOrientationUpMirrored: 643| 3| case kCGImagePropertyOrientationDownMirrored: 644| 3| transform = CGAffineTransformTranslate(transform, size.width, 0); 645| 3| transform = CGAffineTransformScale(transform, -1, 1); 646| 3| break; 647| 3| 648| 3| case kCGImagePropertyOrientationLeftMirrored: 649| 2| case kCGImagePropertyOrientationRightMirrored: 650| 2| transform = CGAffineTransformTranslate(transform, size.height, 0); 651| 2| transform = CGAffineTransformScale(transform, -1, 1); 652| 2| break; 653| 85| case kCGImagePropertyOrientationUp: 654| 85| case kCGImagePropertyOrientationDown: 655| 85| case kCGImagePropertyOrientationLeft: 656| 85| case kCGImagePropertyOrientationRight: 657| 85| break; 658| 90| } 659| 90| 660| 90| return transform; 661| 90|} 662| | 663| |#if SD_UIKIT || SD_WATCH 664| |static NSUInteger gcd(NSUInteger a, NSUInteger b) { 665| | NSUInteger c; 666| | while (a != 0) { 667| | c = a; 668| | a = b % a; 669| | b = c; 670| | } 671| | return b; 672| |} 673| | 674| |static NSUInteger gcdArray(size_t const count, NSUInteger const * const values) { 675| | if (count == 0) { 676| | return 0; 677| | } 678| | NSUInteger result = values[0]; 679| | for (size_t i = 1; i < count; ++i) { 680| | result = gcd(values[i], result); 681| | } 682| | return result; 683| |} 684| |#endif 685| | 686| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageCodersManager.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageCodersManager.h" 10| |#import "SDImageIOCoder.h" 11| |#import "SDImageGIFCoder.h" 12| |#import "SDImageAPNGCoder.h" 13| |#import "SDImageHEICCoder.h" 14| |#import "SDInternalMacros.h" 15| | 16| |@interface SDImageCodersManager () 17| | 18| |@property (nonatomic, strong, nonnull) dispatch_semaphore_t codersLock; 19| | 20| |@end 21| | 22| |@implementation SDImageCodersManager 23| |{ 24| | NSMutableArray> *_imageCoders; 25| |} 26| | 27| 157|+ (nonnull instancetype)sharedManager { 28| 157| static dispatch_once_t once; 29| 157| static id instance; 30| 157| dispatch_once(&once, ^{ 31| 1| instance = [self new]; 32| 1| }); 33| 157| return instance; 34| 157|} 35| | 36| 2|- (instancetype)init { 37| 2| if (self = [super init]) { 38| 2| // initialize with default coders 39| 2| _imageCoders = [NSMutableArray arrayWithArray:@[[SDImageIOCoder sharedCoder], [SDImageGIFCoder sharedCoder], [SDImageAPNGCoder sharedCoder]]]; 40| 2| _codersLock = dispatch_semaphore_create(1); 41| 2| } 42| 2| return self; 43| 2|} 44| | 45| |- (NSArray> *)coders 46| 152|{ 47| 152| SD_LOCK(self.codersLock); 48| 152| NSArray> *coders = [_imageCoders copy]; 49| 152| SD_UNLOCK(self.codersLock); 50| 152| return coders; 51| 152|} 52| | 53| |- (void)setCoders:(NSArray> *)coders 54| 1|{ 55| 1| SD_LOCK(self.codersLock); 56| 1| [_imageCoders removeAllObjects]; 57| 1| if (coders.count) { 58| 1| [_imageCoders addObjectsFromArray:coders]; 59| 1| } 60| 1| SD_UNLOCK(self.codersLock); 61| 1|} 62| | 63| |#pragma mark - Coder IO operations 64| | 65| 2|- (void)addCoder:(nonnull id)coder { 66| 2| if (![coder conformsToProtocol:@protocol(SDImageCoder)]) { 67| 0| return; 68| 0| } 69| 2| SD_LOCK(self.codersLock); 70| 2| [_imageCoders addObject:coder]; 71| 2| SD_UNLOCK(self.codersLock); 72| 2|} 73| | 74| 2|- (void)removeCoder:(nonnull id)coder { 75| 2| if (![coder conformsToProtocol:@protocol(SDImageCoder)]) { 76| 0| return; 77| 0| } 78| 2| SD_LOCK(self.codersLock); 79| 2| [_imageCoders removeObject:coder]; 80| 2| SD_UNLOCK(self.codersLock); 81| 2|} 82| | 83| |#pragma mark - SDImageCoder 84| 1|- (BOOL)canDecodeFromData:(NSData *)data { 85| 1| NSArray> *coders = self.coders; 86| 1| for (id coder in coders.reverseObjectEnumerator) { 87| 1| if ([coder canDecodeFromData:data]) { 88| 1| return YES; 89| 1| } 90| 1| } 91| 1| return NO; 92| 1|} 93| | 94| 1|- (BOOL)canEncodeToFormat:(SDImageFormat)format { 95| 1| NSArray> *coders = self.coders; 96| 1| for (id coder in coders.reverseObjectEnumerator) { 97| 1| if ([coder canEncodeToFormat:format]) { 98| 1| return YES; 99| 1| } 100| 1| } 101| 1| return NO; 102| 1|} 103| | 104| 88|- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options { 105| 88| if (!data) { 106| 1| return nil; 107| 1| } 108| 87| UIImage *image; 109| 87| NSArray> *coders = self.coders; 110| 189| for (id coder in coders.reverseObjectEnumerator) { 111| 189| if ([coder canDecodeFromData:data]) { 112| 87| image = [coder decodedImageWithData:data options:options]; 113| 87| break; 114| 87| } 115| 189| } 116| 87| 117| 87| return image; 118| 87|} 119| | 120| 38|- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options { 121| 38| if (!image) { 122| 1| return nil; 123| 1| } 124| 37| NSArray> *coders = self.coders; 125| 87| for (id coder in coders.reverseObjectEnumerator) { 126| 87| if ([coder canEncodeToFormat:format]) { 127| 37| return [coder encodedDataWithImage:image format:format options:options]; 128| 37| } 129| 87| } 130| 37| return nil; 131| 37|} 132| | 133| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageFrame.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageFrame.h" 10| | 11| |@interface SDImageFrame () 12| | 13| |@property (nonatomic, strong, readwrite, nonnull) UIImage *image; 14| |@property (nonatomic, readwrite, assign) NSTimeInterval duration; 15| | 16| |@end 17| | 18| |@implementation SDImageFrame 19| | 20| 775|+ (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration { 21| 775| SDImageFrame *frame = [[SDImageFrame alloc] init]; 22| 775| frame.image = image; 23| 775| frame.duration = duration; 24| 775| 25| 775| return frame; 26| 775|} 27| | 28| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageGIFCoder.h" 10| |#if SD_MAC 11| |#import 12| |#else 13| |#import 14| |#endif 15| | 16| |@implementation SDImageGIFCoder 17| | 18| 6|+ (instancetype)sharedCoder { 19| 6| static SDImageGIFCoder *coder; 20| 6| static dispatch_once_t onceToken; 21| 6| dispatch_once(&onceToken, ^{ 22| 1| coder = [[SDImageGIFCoder alloc] init]; 23| 1| }); 24| 6| return coder; 25| 6|} 26| | 27| |#pragma mark - Subclass Override 28| | 29| 140|+ (SDImageFormat)imageFormat { 30| 140| return SDImageFormatGIF; 31| 140|} 32| | 33| 3|+ (NSString *)imageUTType { 34| 3| return (__bridge NSString *)kUTTypeGIF; 35| 3|} 36| | 37| 336|+ (NSString *)dictionaryProperty { 38| 336| return (__bridge NSString *)kCGImagePropertyGIFDictionary; 39| 336|} 40| | 41| 178|+ (NSString *)unclampedDelayTimeProperty { 42| 178| return (__bridge NSString *)kCGImagePropertyGIFUnclampedDelayTime; 43| 178|} 44| | 45| 116|+ (NSString *)delayTimeProperty { 46| 116| return (__bridge NSString *)kCGImagePropertyGIFDelayTime; 47| 116|} 48| | 49| 42|+ (NSString *)loopCountProperty { 50| 42| return (__bridge NSString *)kCGImagePropertyGIFLoopCount; 51| 42|} 52| | 53| 38|+ (NSUInteger)defaultLoopCount { 54| 38| return 1; 55| 38|} 56| | 57| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageGraphics.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageGraphics.h" 10| |#import "NSImage+Compatibility.h" 11| |#import "objc/runtime.h" 12| | 13| |#if SD_MAC 14| |static void *kNSGraphicsContextScaleFactorKey; 15| | 16| 16|static CGContextRef SDCGContextCreateBitmapContext(CGSize size, BOOL opaque, CGFloat scale) { 17| 16| if (scale == 0) { 18| 0| // Match `UIGraphicsBeginImageContextWithOptions`, reset to the scale factor of the device’s main screen if scale is 0. 19| 0| scale = [NSScreen mainScreen].backingScaleFactor; 20| 0| } 21| 16| size_t width = ceil(size.width * scale); 22| 16| size_t height = ceil(size.height * scale); 23| 16| if (width < 1 || height < 1) return NULL; 24| 16| 25| 16| //pre-multiplied BGRA for non-opaque, BGRX for opaque, 8-bits per component, as Apple's doc 26| 16| CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); 27| 16| CGImageAlphaInfo alphaInfo = kCGBitmapByteOrder32Host | (opaque ? kCGImageAlphaNoneSkipFirst : kCGImageAlphaPremultipliedFirst); 28| 16| CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 0, space, kCGBitmapByteOrderDefault | alphaInfo); 29| 16| CGColorSpaceRelease(space); 30| 16| if (!context) { 31| 0| return NULL; 32| 0| } 33| 16| CGContextScaleCTM(context, scale, scale); 34| 16| 35| 16| return context; 36| 16|} 37| |#endif 38| | 39| 16|CGContextRef SDGraphicsGetCurrentContext(void) { 40| |#if SD_UIKIT || SD_WATCH 41| | return UIGraphicsGetCurrentContext(); 42| |#else 43| | return NSGraphicsContext.currentContext.CGContext; 44| 16|#endif 45| 16|} 46| | 47| 0|void SDGraphicsBeginImageContext(CGSize size) { 48| |#if SD_UIKIT || SD_WATCH 49| | UIGraphicsBeginImageContext(size); 50| |#else 51| | SDGraphicsBeginImageContextWithOptions(size, NO, 1.0); 52| 0|#endif 53| 0|} 54| | 55| 16|void SDGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) { 56| |#if SD_UIKIT || SD_WATCH 57| | UIGraphicsBeginImageContextWithOptions(size, opaque, scale); 58| |#else 59| | CGContextRef context = SDCGContextCreateBitmapContext(size, opaque, scale); 60| 16| if (!context) { 61| 0| return; 62| 0| } 63| 16| NSGraphicsContext *graphicsContext = [NSGraphicsContext graphicsContextWithCGContext:context flipped:NO]; 64| 16| objc_setAssociatedObject(graphicsContext, &kNSGraphicsContextScaleFactorKey, @(scale), OBJC_ASSOCIATION_RETAIN); 65| 16| CGContextRelease(context); 66| 16| [NSGraphicsContext saveGraphicsState]; 67| 16| NSGraphicsContext.currentContext = graphicsContext; 68| 16|#endif 69| 16|} 70| | 71| 16|void SDGraphicsEndImageContext(void) { 72| |#if SD_UIKIT || SD_WATCH 73| | UIGraphicsEndImageContext(); 74| |#else 75| | [NSGraphicsContext restoreGraphicsState]; 76| 16|#endif 77| 16|} 78| | 79| 16|UIImage * SDGraphicsGetImageFromCurrentImageContext(void) { 80| |#if SD_UIKIT || SD_WATCH 81| | return UIGraphicsGetImageFromCurrentImageContext(); 82| |#else 83| | NSGraphicsContext *context = NSGraphicsContext.currentContext; 84| 16| CGContextRef contextRef = context.CGContext; 85| 16| if (!contextRef) { 86| 0| return nil; 87| 0| } 88| 16| CGImageRef imageRef = CGBitmapContextCreateImage(contextRef); 89| 16| if (!imageRef) { 90| 0| return nil; 91| 0| } 92| 16| CGFloat scale = 0; 93| 16| NSNumber *scaleFactor = objc_getAssociatedObject(context, &kNSGraphicsContextScaleFactorKey); 94| 16| if ([scaleFactor isKindOfClass:[NSNumber class]]) { 95| 16| scale = scaleFactor.doubleValue; 96| 16| } 97| 16| if (!scale) { 98| 0| // reset to the scale factor of the device’s main screen if scale is 0. 99| 0| scale = [NSScreen mainScreen].backingScaleFactor; 100| 0| } 101| 16| NSImage *image = [[NSImage alloc] initWithCGImage:imageRef scale:scale orientation:kCGImagePropertyOrientationUp]; 102| 16| CGImageRelease(imageRef); 103| 16| return image; 104| 16|#endif 105| 16|} /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDImageHEICCoder.h" 10| |#import "SDImageIOAnimatedCoderInternal.h" 11| | 12| |// These constants are available from iOS 13+ and Xcode 11. This raw value is used for toolchain and firmware compatibility 13| |static NSString * kSDCGImagePropertyHEICSDictionary = @"{HEICS}"; 14| |static NSString * kSDCGImagePropertyHEICSLoopCount = @"LoopCount"; 15| |static NSString * kSDCGImagePropertyHEICSDelayTime = @"DelayTime"; 16| |static NSString * kSDCGImagePropertyHEICSUnclampedDelayTime = @"UnclampedDelayTime"; 17| | 18| |@implementation SDImageHEICCoder 19| | 20| 1|+ (void)initialize { 21| 1|#if __IPHONE_13_0 || __TVOS_13_0 || __MAC_10_15 || __WATCHOS_6_0 22| 1| // Xcode 11 23| 1| if (@available(iOS 13, tvOS 13, macOS 10.15, watchOS 6, *)) { 24| 1| // Use SDK instead of raw value 25| 1| kSDCGImagePropertyHEICSDictionary = (__bridge NSString *)kCGImagePropertyHEICSDictionary; 26| 1| kSDCGImagePropertyHEICSLoopCount = (__bridge NSString *)kCGImagePropertyHEICSLoopCount; 27| 1| kSDCGImagePropertyHEICSDelayTime = (__bridge NSString *)kCGImagePropertyHEICSDelayTime; 28| 1| kSDCGImagePropertyHEICSUnclampedDelayTime = (__bridge NSString *)kCGImagePropertyHEICSUnclampedDelayTime; 29| 1| } 30| 1|#endif 31| 1|} 32| | 33| 1|+ (instancetype)sharedCoder { 34| 1| static SDImageHEICCoder *coder; 35| 1| static dispatch_once_t onceToken; 36| 1| dispatch_once(&onceToken, ^{ 37| 1| coder = [[SDImageHEICCoder alloc] init]; 38| 1| }); 39| 1| return coder; 40| 1|} 41| | 42| |#pragma mark - SDImageCoder 43| | 44| 1|- (BOOL)canDecodeFromData:(nullable NSData *)data { 45| 1| switch ([NSData sd_imageFormatForImageData:data]) { 46| 1| case SDImageFormatHEIC: 47| 0| // Check HEIC decoding compatibility 48| 0| return [self.class canDecodeFromFormat:SDImageFormatHEIC]; 49| 1| case SDImageFormatHEIF: 50| 1| // Check HEIF decoding compatibility 51| 1| return [self.class canDecodeFromFormat:SDImageFormatHEIF]; 52| 1| default: 53| 0| return NO; 54| 1| } 55| 1|} 56| | 57| 0|- (BOOL)canIncrementalDecodeFromData:(NSData *)data { 58| 0| return [self canDecodeFromData:data]; 59| 0|} 60| | 61| 0|- (BOOL)canEncodeToFormat:(SDImageFormat)format { 62| 0| switch (format) { 63| 0| case SDImageFormatHEIC: 64| 0| // Check HEIC encoding compatibility 65| 0| return [self.class canEncodeToFormat:SDImageFormatHEIC]; 66| 0| case SDImageFormatHEIF: 67| 0| // Check HEIF encoding compatibility 68| 0| return [self.class canEncodeToFormat:SDImageFormatHEIF]; 69| 0| default: 70| 0| return NO; 71| 0| } 72| 0|} 73| | 74| |#pragma mark - Subclass Override 75| | 76| 2|+ (SDImageFormat)imageFormat { 77| 2| return SDImageFormatHEIC; 78| 2|} 79| | 80| 0|+ (NSString *)imageUTType { 81| 0| return (__bridge NSString *)kSDUTTypeHEIC; 82| 0|} 83| | 84| 244|+ (NSString *)dictionaryProperty { 85| 244| return kSDCGImagePropertyHEICSDictionary; 86| 244|} 87| | 88| 241|+ (NSString *)unclampedDelayTimeProperty { 89| 241| return kSDCGImagePropertyHEICSUnclampedDelayTime; 90| 241|} 91| | 92| 0|+ (NSString *)delayTimeProperty { 93| 0| return kSDCGImagePropertyHEICSDelayTime; 94| 0|} 95| | 96| 3|+ (NSString *)loopCountProperty { 97| 3| return kSDCGImagePropertyHEICSLoopCount; 98| 3|} 99| | 100| 3|+ (NSUInteger)defaultLoopCount { 101| 3| return 0; 102| 3|} 103| | 104| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDImageIOAnimatedCoder.h" 10| |#import "NSImage+Compatibility.h" 11| |#import "UIImage+Metadata.h" 12| |#import "NSData+ImageContentType.h" 13| |#import "SDImageCoderHelper.h" 14| |#import "SDAnimatedImageRep.h" 15| |#import "UIImage+ForceDecode.h" 16| | 17| |// Specify DPI for vector format in CGImageSource, like PDF 18| |static NSString * kSDCGImageSourceRasterizationDPI = @"kCGImageSourceRasterizationDPI"; 19| |// Specify File Size for lossy format encoding, like JPEG 20| |static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestinationRequestedFileSize"; 21| | 22| |@interface SDImageIOCoderFrame : NSObject 23| | 24| |@property (nonatomic, assign) NSUInteger index; // Frame index (zero based) 25| |@property (nonatomic, assign) NSTimeInterval duration; // Frame duration in seconds 26| | 27| |@end 28| | 29| |@implementation SDImageIOCoderFrame 30| |@end 31| | 32| |@implementation SDImageIOAnimatedCoder { 33| | size_t _width, _height; 34| | CGImageSourceRef _imageSource; 35| | NSData *_imageData; 36| | CGFloat _scale; 37| | NSUInteger _loopCount; 38| | NSUInteger _frameCount; 39| | NSArray *_frames; 40| | BOOL _finished; 41| | BOOL _preserveAspectRatio; 42| | CGSize _thumbnailSize; 43| |} 44| | 45| |- (void)dealloc 46| 26|{ 47| 26| if (_imageSource) { 48| 25| CFRelease(_imageSource); 49| 25| _imageSource = NULL; 50| 25| } 51| |#if SD_UIKIT 52| | [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 53| |#endif 54| |} 55| | 56| |- (void)didReceiveMemoryWarning:(NSNotification *)notification 57| 0|{ 58| 0| if (_imageSource) { 59| 0| for (size_t i = 0; i < _frameCount; i++) { 60| 0| CGImageSourceRemoveCacheAtIndex(_imageSource, i); 61| 0| } 62| 0| } 63| 0|} 64| | 65| |#pragma mark - Subclass Override 66| | 67| 1|+ (SDImageFormat)imageFormat { 68| 1| @throw [NSException exceptionWithName:NSInternalInconsistencyException 69| 1| reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] 70| 1| userInfo:nil]; 71| 1|} 72| | 73| 0|+ (NSString *)imageUTType { 74| 0| @throw [NSException exceptionWithName:NSInternalInconsistencyException 75| 0| reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] 76| 0| userInfo:nil]; 77| 0|} 78| | 79| 0|+ (NSString *)dictionaryProperty { 80| 0| @throw [NSException exceptionWithName:NSInternalInconsistencyException 81| 0| reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] 82| 0| userInfo:nil]; 83| 0|} 84| | 85| 0|+ (NSString *)unclampedDelayTimeProperty { 86| 0| @throw [NSException exceptionWithName:NSInternalInconsistencyException 87| 0| reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] 88| 0| userInfo:nil]; 89| 0|} 90| | 91| 0|+ (NSString *)delayTimeProperty { 92| 0| @throw [NSException exceptionWithName:NSInternalInconsistencyException 93| 0| reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] 94| 0| userInfo:nil]; 95| 0|} 96| | 97| 0|+ (NSString *)loopCountProperty { 98| 0| @throw [NSException exceptionWithName:NSInternalInconsistencyException 99| 0| reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] 100| 0| userInfo:nil]; 101| 0|} 102| | 103| 0|+ (NSUInteger)defaultLoopCount { 104| 0| @throw [NSException exceptionWithName:NSInternalInconsistencyException 105| 0| reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] 106| 0| userInfo:nil]; 107| 0|} 108| | 109| |#pragma mark - Utils 110| | 111| 1|+ (BOOL)canDecodeFromFormat:(SDImageFormat)format { 112| 1| static dispatch_once_t onceToken; 113| 1| static NSSet *imageUTTypeSet; 114| 1| dispatch_once(&onceToken, ^{ 115| 1| NSArray *imageUTTypes = (__bridge_transfer NSArray *)CGImageSourceCopyTypeIdentifiers(); 116| 1| imageUTTypeSet = [NSSet setWithArray:imageUTTypes]; 117| 1| }); 118| 1| CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; 119| 1| if ([imageUTTypeSet containsObject:(__bridge NSString *)(imageUTType)]) { 120| 1| // Can decode from target format 121| 1| return YES; 122| 1| } 123| 0| return NO; 124| 0|} 125| | 126| 0|+ (BOOL)canEncodeToFormat:(SDImageFormat)format { 127| 0| static dispatch_once_t onceToken; 128| 0| static NSSet *imageUTTypeSet; 129| 0| dispatch_once(&onceToken, ^{ 130| 0| NSArray *imageUTTypes = (__bridge_transfer NSArray *)CGImageDestinationCopyTypeIdentifiers(); 131| 0| imageUTTypeSet = [NSSet setWithArray:imageUTTypes]; 132| 0| }); 133| 0| CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; 134| 0| if ([imageUTTypeSet containsObject:(__bridge NSString *)(imageUTType)]) { 135| 0| // Can encode to target format 136| 0| return YES; 137| 0| } 138| 0| return NO; 139| 0|} 140| | 141| 67|+ (NSUInteger)imageLoopCountWithSource:(CGImageSourceRef)source { 142| 67| NSUInteger loopCount = self.defaultLoopCount; 143| 67| NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, NULL); 144| 67| NSDictionary *containerProperties = imageProperties[self.dictionaryProperty]; 145| 67| if (containerProperties) { 146| 66| NSNumber *containerLoopCount = containerProperties[self.loopCountProperty]; 147| 66| if (containerLoopCount != nil) { 148| 59| loopCount = containerLoopCount.unsignedIntegerValue; 149| 59| } 150| 66| } 151| 67| return loopCount; 152| 67|} 153| | 154| 1.85k|+ (NSTimeInterval)frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source { 155| 1.85k| NSDictionary *options = @{ 156| 1.85k| (__bridge NSString *)kCGImageSourceShouldCacheImmediately : @(YES), 157| 1.85k| (__bridge NSString *)kCGImageSourceShouldCache : @(YES) // Always cache to reduce CPU usage 158| 1.85k| }; 159| 1.85k| NSTimeInterval frameDuration = 0.1; 160| 1.85k| CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, (__bridge CFDictionaryRef)options); 161| 1.85k| if (!cfFrameProperties) { 162| 0| return frameDuration; 163| 0| } 164| 1.85k| NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties; 165| 1.85k| NSDictionary *containerProperties = frameProperties[self.dictionaryProperty]; 166| 1.85k| 167| 1.85k| NSNumber *delayTimeUnclampedProp = containerProperties[self.unclampedDelayTimeProperty]; 168| 1.85k| if (delayTimeUnclampedProp != nil) { 169| 1.84k| frameDuration = [delayTimeUnclampedProp doubleValue]; 170| 1.84k| } else { 171| 1| NSNumber *delayTimeProp = containerProperties[self.delayTimeProperty]; 172| 1| if (delayTimeProp != nil) { 173| 0| frameDuration = [delayTimeProp doubleValue]; 174| 0| } 175| 1| } 176| 1.85k| 177| 1.85k| // Many annoying ads specify a 0 duration to make an image flash as quickly as possible. 178| 1.85k| // We follow Firefox's behavior and use a duration of 100 ms for any frames that specify 179| 1.85k| // a duration of <= 10 ms. See and 180| 1.85k| // for more information. 181| 1.85k| 182| 1.85k| if (frameDuration < 0.011) { 183| 0| frameDuration = 0.1; 184| 0| } 185| 1.85k| 186| 1.85k| CFRelease(cfFrameProperties); 187| 1.85k| return frameDuration; 188| 1.85k|} 189| | 190| 872|+ (UIImage *)createFrameAtIndex:(NSUInteger)index source:(CGImageSourceRef)source scale:(CGFloat)scale preserveAspectRatio:(BOOL)preserveAspectRatio thumbnailSize:(CGSize)thumbnailSize options:(NSDictionary *)options { 191| 872| // Some options need to pass to `CGImageSourceCopyPropertiesAtIndex` before `CGImageSourceCreateImageAtIndex`, or ImageIO will ignore them because they parse once :) 192| 872| // Parse the image properties 193| 872| NSDictionary *properties = (__bridge_transfer NSDictionary *)CGImageSourceCopyPropertiesAtIndex(source, index, (__bridge CFDictionaryRef)options); 194| 872| NSUInteger pixelWidth = [properties[(__bridge NSString *)kCGImagePropertyPixelWidth] unsignedIntegerValue]; 195| 872| NSUInteger pixelHeight = [properties[(__bridge NSString *)kCGImagePropertyPixelHeight] unsignedIntegerValue]; 196| 872| CGImagePropertyOrientation exifOrientation = (CGImagePropertyOrientation)[properties[(__bridge NSString *)kCGImagePropertyOrientation] unsignedIntegerValue]; 197| 872| if (!exifOrientation) { 198| 864| exifOrientation = kCGImagePropertyOrientationUp; 199| 864| } 200| 872| 201| 872| CFStringRef uttype = CGImageSourceGetType(source); 202| 872| // Check vector format 203| 872| BOOL isVector = NO; 204| 872| if ([NSData sd_imageFormatFromUTType:uttype] == SDImageFormatPDF) { 205| 3| isVector = YES; 206| 3| } 207| 872| 208| 872| NSMutableDictionary *decodingOptions; 209| 872| if (options) { 210| 356| decodingOptions = [NSMutableDictionary dictionaryWithDictionary:options]; 211| 516| } else { 212| 516| decodingOptions = [NSMutableDictionary dictionary]; 213| 516| } 214| 872| CGImageRef imageRef; 215| 872| BOOL createFullImage = thumbnailSize.width == 0 || thumbnailSize.height == 0 || pixelWidth == 0 || pixelHeight == 0 || (pixelWidth <= thumbnailSize.width && pixelHeight <= thumbnailSize.height); 216| 872| if (createFullImage) { 217| 424| if (isVector) { 218| 3| if (thumbnailSize.width == 0 || thumbnailSize.height == 0) { 219| 1| // Provide the default pixel count for vector images, simply just use the screen size 220| |#if SD_WATCH 221| | thumbnailSize = WKInterfaceDevice.currentDevice.screenBounds.size; 222| |#elif SD_UIKIT 223| | thumbnailSize = UIScreen.mainScreen.bounds.size; 224| |#elif SD_MAC 225| | thumbnailSize = NSScreen.mainScreen.frame.size; 226| 1|#endif 227| 1| } 228| 3| CGFloat maxPixelSize = MAX(thumbnailSize.width, thumbnailSize.height); 229| 3| NSUInteger DPIPerPixel = 2; 230| 3| NSUInteger rasterizationDPI = maxPixelSize * DPIPerPixel; 231| 3| decodingOptions[kSDCGImageSourceRasterizationDPI] = @(rasterizationDPI); 232| 3| } 233| 424| imageRef = CGImageSourceCreateImageAtIndex(source, index, (__bridge CFDictionaryRef)[decodingOptions copy]); 234| 448| } else { 235| 448| decodingOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailWithTransform] = @(preserveAspectRatio); 236| 448| CGFloat maxPixelSize; 237| 448| if (preserveAspectRatio) { 238| 225| CGFloat pixelRatio = pixelWidth / pixelHeight; 239| 225| CGFloat thumbnailRatio = thumbnailSize.width / thumbnailSize.height; 240| 225| if (pixelRatio > thumbnailRatio) { 241| 0| maxPixelSize = thumbnailSize.width; 242| 225| } else { 243| 225| maxPixelSize = thumbnailSize.height; 244| 225| } 245| 225| } else { 246| 223| maxPixelSize = MAX(thumbnailSize.width, thumbnailSize.height); 247| 223| } 248| 448| decodingOptions[(__bridge NSString *)kCGImageSourceThumbnailMaxPixelSize] = @(maxPixelSize); 249| 448| decodingOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailFromImageAlways] = @(YES); 250| 448| imageRef = CGImageSourceCreateThumbnailAtIndex(source, index, (__bridge CFDictionaryRef)[decodingOptions copy]); 251| 448| } 252| 872| if (!imageRef) { 253| 4| return nil; 254| 4| } 255| 868| // Thumbnail image post-process 256| 868| if (!createFullImage) { 257| 448| if (preserveAspectRatio) { 258| 225| // kCGImageSourceCreateThumbnailWithTransform will apply EXIF transform as well, we should not apply twice 259| 225| exifOrientation = kCGImagePropertyOrientationUp; 260| 225| } else { 261| 223| // `CGImageSourceCreateThumbnailAtIndex` take only pixel dimension, if not `preserveAspectRatio`, we should manual scale to the target size 262| 223| CGImageRef scaledImageRef = [SDImageCoderHelper CGImageCreateScaled:imageRef size:thumbnailSize]; 263| 223| CGImageRelease(imageRef); 264| 223| imageRef = scaledImageRef; 265| 223| } 266| 448| } 267| 868| 268| |#if SD_UIKIT || SD_WATCH 269| | UIImageOrientation imageOrientation = [SDImageCoderHelper imageOrientationFromEXIFOrientation:exifOrientation]; 270| | UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:scale orientation:imageOrientation]; 271| |#else 272| 868| UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:scale orientation:exifOrientation]; 273| 868|#endif 274| 868| CGImageRelease(imageRef); 275| 868| return image; 276| 868|} 277| | 278| |#pragma mark - Decode 279| 171|- (BOOL)canDecodeFromData:(nullable NSData *)data { 280| 171| return ([NSData sd_imageFormatForImageData:data] == self.class.imageFormat); 281| 171|} 282| | 283| 54|- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options { 284| 54| if (!data) { 285| 0| return nil; 286| 0| } 287| 54| CGFloat scale = 1; 288| 54| NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; 289| 54| if (scaleFactor != nil) { 290| 37| scale = MAX([scaleFactor doubleValue], 1); 291| 37| } 292| 54| 293| 54| CGSize thumbnailSize = CGSizeZero; 294| 54| NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; 295| 54| if (thumbnailSizeValue != nil) { 296| 7|#if SD_MAC 297| 7| thumbnailSize = thumbnailSizeValue.sizeValue; 298| |#else 299| | thumbnailSize = thumbnailSizeValue.CGSizeValue; 300| |#endif 301| | } 302| 54| 303| 54| BOOL preserveAspectRatio = YES; 304| 54| NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; 305| 54| if (preserveAspectRatioValue != nil) { 306| 6| preserveAspectRatio = preserveAspectRatioValue.boolValue; 307| 6| } 308| 54| 309| 54|#if SD_MAC 310| 54| // If don't use thumbnail, prefers the built-in generation of frames (GIF/APNG) 311| 54| // Which decode frames in time and reduce memory usage 312| 54| if (thumbnailSize.width == 0 || thumbnailSize.height == 0) { 313| 47| SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data]; 314| 47| NSSize size = NSMakeSize(imageRep.pixelsWide / scale, imageRep.pixelsHigh / scale); 315| 47| imageRep.size = size; 316| 47| NSImage *animatedImage = [[NSImage alloc] initWithSize:size]; 317| 47| [animatedImage addRepresentation:imageRep]; 318| 47| return animatedImage; 319| 47| } 320| 7|#endif 321| 7| 322| 7| CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); 323| 7| if (!source) { 324| 0| return nil; 325| 0| } 326| 7| size_t count = CGImageSourceGetCount(source); 327| 7| UIImage *animatedImage; 328| 7| 329| 7| BOOL decodeFirstFrame = [options[SDImageCoderDecodeFirstFrameOnly] boolValue]; 330| 7| if (decodeFirstFrame || count <= 1) { 331| 1| animatedImage = [self.class createFrameAtIndex:0 source:source scale:scale preserveAspectRatio:preserveAspectRatio thumbnailSize:thumbnailSize options:nil]; 332| 6| } else { 333| 6| NSMutableArray *frames = [NSMutableArray array]; 334| 6| 335| 458| for (size_t i = 0; i < count; i++) { 336| 452| UIImage *image = [self.class createFrameAtIndex:i source:source scale:scale preserveAspectRatio:preserveAspectRatio thumbnailSize:thumbnailSize options:nil]; 337| 452| if (!image) { 338| 0| continue; 339| 0| } 340| 452| 341| 452| NSTimeInterval duration = [self.class frameDurationAtIndex:i source:source]; 342| 452| 343| 452| SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration]; 344| 452| [frames addObject:frame]; 345| 452| } 346| 6| 347| 6| NSUInteger loopCount = [self.class imageLoopCountWithSource:source]; 348| 6| 349| 6| animatedImage = [SDImageCoderHelper animatedImageWithFrames:frames]; 350| 6| animatedImage.sd_imageLoopCount = loopCount; 351| 6| } 352| 7| animatedImage.sd_imageFormat = self.class.imageFormat; 353| 7| CFRelease(source); 354| 7| 355| 7| return animatedImage; 356| 7|} 357| | 358| |#pragma mark - Progressive Decode 359| | 360| 6|- (BOOL)canIncrementalDecodeFromData:(NSData *)data { 361| 6| return ([NSData sd_imageFormatForImageData:data] == self.class.imageFormat); 362| 6|} 363| | 364| 6|- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options { 365| 6| self = [super init]; 366| 6| if (self) { 367| 6| NSString *imageUTType = self.class.imageUTType; 368| 6| _imageSource = CGImageSourceCreateIncremental((__bridge CFDictionaryRef)@{(__bridge NSString *)kCGImageSourceTypeIdentifierHint : imageUTType}); 369| 6| CGFloat scale = 1; 370| 6| NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; 371| 6| if (scaleFactor != nil) { 372| 4| scale = MAX([scaleFactor doubleValue], 1); 373| 4| } 374| 6| _scale = scale; 375| 6| CGSize thumbnailSize = CGSizeZero; 376| 6| NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; 377| 6| if (thumbnailSizeValue != nil) { 378| 1| #if SD_MAC 379| 1| thumbnailSize = thumbnailSizeValue.sizeValue; 380| | #else 381| | thumbnailSize = thumbnailSizeValue.CGSizeValue; 382| | #endif 383| | } 384| 6| _thumbnailSize = thumbnailSize; 385| 6| BOOL preserveAspectRatio = YES; 386| 6| NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; 387| 6| if (preserveAspectRatioValue != nil) { 388| 0| preserveAspectRatio = preserveAspectRatioValue.boolValue; 389| 0| } 390| 6| _preserveAspectRatio = preserveAspectRatio; 391| |#if SD_UIKIT 392| | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 393| |#endif 394| | } 395| 6| return self; 396| 6|} 397| | 398| 12|- (void)updateIncrementalData:(NSData *)data finished:(BOOL)finished { 399| 12| if (_finished) { 400| 0| return; 401| 0| } 402| 12| _imageData = data; 403| 12| _finished = finished; 404| 12| 405| 12| // The following code is from http://www.cocoaintheshell.com/2011/05/progressive-images-download-imageio/ 406| 12| // Thanks to the author @Nyx0uf 407| 12| 408| 12| // Update the data source, we must pass ALL the data, not just the new bytes 409| 12| CGImageSourceUpdateData(_imageSource, (__bridge CFDataRef)data, finished); 410| 12| 411| 12| if (_width + _height == 0) { 412| 6| NSDictionary *options = @{ 413| 6| (__bridge NSString *)kCGImageSourceShouldCacheImmediately : @(YES), 414| 6| (__bridge NSString *)kCGImageSourceShouldCache : @(YES) // Always cache to reduce CPU usage 415| 6| }; 416| 6| CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(_imageSource, 0, (__bridge CFDictionaryRef)options); 417| 6| if (properties) { 418| 6| CFTypeRef val = CFDictionaryGetValue(properties, kCGImagePropertyPixelHeight); 419| 6| if (val) CFNumberGetValue(val, kCFNumberLongType, &_height); 420| 6| val = CFDictionaryGetValue(properties, kCGImagePropertyPixelWidth); 421| 6| if (val) CFNumberGetValue(val, kCFNumberLongType, &_width); 422| 6| CFRelease(properties); 423| 6| } 424| 6| } 425| 12| 426| 12| // For animated image progressive decoding because the frame count and duration may be changed. 427| 12| [self scanAndCheckFramesValidWithImageSource:_imageSource]; 428| 12|} 429| | 430| 6|- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options { 431| 6| UIImage *image; 432| 6| 433| 6| if (_width + _height > 0) { 434| 6| // Create the image 435| 6| CGFloat scale = _scale; 436| 6| NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; 437| 6| if (scaleFactor != nil) { 438| 6| scale = MAX([scaleFactor doubleValue], 1); 439| 6| } 440| 6| image = [self.class createFrameAtIndex:0 source:_imageSource scale:scale preserveAspectRatio:_preserveAspectRatio thumbnailSize:_thumbnailSize options:nil]; 441| 6| if (image) { 442| 6| image.sd_imageFormat = self.class.imageFormat; 443| 6| } 444| 6| } 445| 6| 446| 6| return image; 447| 6|} 448| | 449| |#pragma mark - Encode 450| 61|- (BOOL)canEncodeToFormat:(SDImageFormat)format { 451| 61| return (format == self.class.imageFormat); 452| 61|} 453| | 454| 12|- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options { 455| 12| if (!image) { 456| 0| return nil; 457| 0| } 458| 12| CGImageRef imageRef = image.CGImage; 459| 12| if (!imageRef) { 460| 0| // Earily return, supports CGImage only 461| 0| return nil; 462| 0| } 463| 12| 464| 12| if (format != self.class.imageFormat) { 465| 0| return nil; 466| 0| } 467| 12| 468| 12| NSMutableData *imageData = [NSMutableData data]; 469| 12| CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; 470| 12| NSArray *frames = [SDImageCoderHelper framesFromAnimatedImage:image]; 471| 12| 472| 12| // Create an image destination. Animated Image does not support EXIF image orientation TODO 473| 12| // The `CGImageDestinationCreateWithData` will log a warning when count is 0, use 1 instead. 474| 12| CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, frames.count ?: 1, NULL); 475| 12| if (!imageDestination) { 476| 0| // Handle failure. 477| 0| return nil; 478| 0| } 479| 12| NSMutableDictionary *properties = [NSMutableDictionary dictionary]; 480| 12| // Encoding Options 481| 12| double compressionQuality = 1; 482| 12| if (options[SDImageCoderEncodeCompressionQuality]) { 483| 2| compressionQuality = [options[SDImageCoderEncodeCompressionQuality] doubleValue]; 484| 2| } 485| 12| properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = @(compressionQuality); 486| 12| CGColorRef backgroundColor = [options[SDImageCoderEncodeBackgroundColor] CGColor]; 487| 12| if (backgroundColor) { 488| 0| properties[(__bridge NSString *)kCGImageDestinationBackgroundColor] = (__bridge id)(backgroundColor); 489| 0| } 490| 12| CGSize maxPixelSize = CGSizeZero; 491| 12| NSValue *maxPixelSizeValue = options[SDImageCoderEncodeMaxPixelSize]; 492| 12| if (maxPixelSizeValue != nil) { 493| 2|#if SD_MAC 494| 2| maxPixelSize = maxPixelSizeValue.sizeValue; 495| |#else 496| | maxPixelSize = maxPixelSizeValue.CGSizeValue; 497| |#endif 498| | } 499| 12| NSUInteger pixelWidth = CGImageGetWidth(imageRef); 500| 12| NSUInteger pixelHeight = CGImageGetHeight(imageRef); 501| 12| CGFloat finalPixelSize = 0; 502| 12| if (maxPixelSize.width > 0 && maxPixelSize.height > 0 && pixelWidth > maxPixelSize.width && pixelHeight > maxPixelSize.height) { 503| 1| CGFloat pixelRatio = pixelWidth / pixelHeight; 504| 1| CGFloat maxPixelSizeRatio = maxPixelSize.width / maxPixelSize.height; 505| 1| if (pixelRatio > maxPixelSizeRatio) { 506| 0| finalPixelSize = maxPixelSize.width; 507| 1| } else { 508| 1| finalPixelSize = maxPixelSize.height; 509| 1| } 510| 1| properties[(__bridge NSString *)kCGImageDestinationImageMaxPixelSize] = @(finalPixelSize); 511| 1| } 512| 12| NSUInteger maxFileSize = [options[SDImageCoderEncodeMaxFileSize] unsignedIntegerValue]; 513| 12| if (maxFileSize > 0) { 514| 0| properties[kSDCGImageDestinationRequestedFileSize] = @(maxFileSize); 515| 0| // Remove the quality if we have file size limit 516| 0| properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = nil; 517| 0| } 518| 12| BOOL embedThumbnail = NO; 519| 12| if (options[SDImageCoderEncodeEmbedThumbnail]) { 520| 0| embedThumbnail = [options[SDImageCoderEncodeEmbedThumbnail] boolValue]; 521| 0| } 522| 12| properties[(__bridge NSString *)kCGImageDestinationEmbedThumbnail] = @(embedThumbnail); 523| 12| 524| 12| BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue]; 525| 12| if (encodeFirstFrame || frames.count == 0) { 526| 6| // for static single images 527| 6| CGImageDestinationAddImage(imageDestination, imageRef, (__bridge CFDictionaryRef)properties); 528| 6| } else { 529| 6| // for animated images 530| 6| NSUInteger loopCount = image.sd_imageLoopCount; 531| 6| NSDictionary *containerProperties = @{ 532| 6| self.class.dictionaryProperty: @{self.class.loopCountProperty : @(loopCount)} 533| 6| }; 534| 6| // container level properties (applies for `CGImageDestinationSetProperties`, not individual frames) 535| 6| CGImageDestinationSetProperties(imageDestination, (__bridge CFDictionaryRef)containerProperties); 536| 6| 537| 324| for (size_t i = 0; i < frames.count; i++) { 538| 318| SDImageFrame *frame = frames[i]; 539| 318| NSTimeInterval frameDuration = frame.duration; 540| 318| CGImageRef frameImageRef = frame.image.CGImage; 541| 318| properties[self.class.dictionaryProperty] = @{self.class.delayTimeProperty : @(frameDuration)}; 542| 318| CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)properties); 543| 318| } 544| 6| } 545| 12| // Finalize the destination. 546| 12| if (CGImageDestinationFinalize(imageDestination) == NO) { 547| 0| // Handle failure. 548| 0| imageData = nil; 549| 0| } 550| 12| 551| 12| CFRelease(imageDestination); 552| 12| 553| 12| return [imageData copy]; 554| 12|} 555| | 556| |#pragma mark - SDAnimatedImageCoder 557| 23|- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDImageCoderOptions *)options { 558| 23| if (!data) { 559| 0| return nil; 560| 0| } 561| 23| self = [super init]; 562| 23| if (self) { 563| 23| CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); 564| 23| if (!imageSource) { 565| 0| return nil; 566| 0| } 567| 23| BOOL framesValid = [self scanAndCheckFramesValidWithImageSource:imageSource]; 568| 23| if (!framesValid) { 569| 0| CFRelease(imageSource); 570| 0| return nil; 571| 0| } 572| 23| CGFloat scale = 1; 573| 23| NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; 574| 23| if (scaleFactor != nil) { 575| 21| scale = MAX([scaleFactor doubleValue], 1); 576| 21| } 577| 23| _scale = scale; 578| 23| CGSize thumbnailSize = CGSizeZero; 579| 23| NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; 580| 23| if (thumbnailSizeValue != nil) { 581| 0| #if SD_MAC 582| 0| thumbnailSize = thumbnailSizeValue.sizeValue; 583| | #else 584| | thumbnailSize = thumbnailSizeValue.CGSizeValue; 585| | #endif 586| | } 587| 23| _thumbnailSize = thumbnailSize; 588| 23| BOOL preserveAspectRatio = YES; 589| 23| NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; 590| 23| if (preserveAspectRatioValue != nil) { 591| 0| preserveAspectRatio = preserveAspectRatioValue.boolValue; 592| 0| } 593| 23| _preserveAspectRatio = preserveAspectRatio; 594| 23| _imageSource = imageSource; 595| 23| _imageData = data; 596| |#if SD_UIKIT 597| | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 598| |#endif 599| | } 600| 23| return self; 601| 23|} 602| | 603| 35|- (BOOL)scanAndCheckFramesValidWithImageSource:(CGImageSourceRef)imageSource { 604| 35| if (!imageSource) { 605| 0| return NO; 606| 0| } 607| 35| NSUInteger frameCount = CGImageSourceGetCount(imageSource); 608| 35| NSUInteger loopCount = [self.class imageLoopCountWithSource:imageSource]; 609| 35| NSMutableArray *frames = [NSMutableArray array]; 610| 35| 611| 1.10k| for (size_t i = 0; i < frameCount; i++) { 612| 1.07k| SDImageIOCoderFrame *frame = [[SDImageIOCoderFrame alloc] init]; 613| 1.07k| frame.index = i; 614| 1.07k| frame.duration = [self.class frameDurationAtIndex:i source:imageSource]; 615| 1.07k| [frames addObject:frame]; 616| 1.07k| } 617| 35| 618| 35| _frameCount = frameCount; 619| 35| _loopCount = loopCount; 620| 35| _frames = [frames copy]; 621| 35| 622| 35| return YES; 623| 35|} 624| | 625| 35|- (NSData *)animatedImageData { 626| 35| return _imageData; 627| 35|} 628| | 629| 21|- (NSUInteger)animatedImageLoopCount { 630| 21| return _loopCount; 631| 21|} 632| | 633| 10.9k|- (NSUInteger)animatedImageFrameCount { 634| 10.9k| return _frameCount; 635| 10.9k|} 636| | 637| 10.6k|- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index { 638| 10.6k| if (index >= _frameCount) { 639| 0| return 0; 640| 0| } 641| 10.6k| return _frames[index].duration; 642| 10.6k|} 643| | 644| 356|- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index { 645| 356| if (index >= _frameCount) { 646| 0| return nil; 647| 0| } 648| 356| // Animated Image should not use the CGContext solution to force decode. Prefers to use Image/IO built in method, which is safer and memory friendly, see https://github.com/SDWebImage/SDWebImage/issues/2961 649| 356| NSDictionary *options = @{ 650| 356| (__bridge NSString *)kCGImageSourceShouldCacheImmediately : @(YES), 651| 356| (__bridge NSString *)kCGImageSourceShouldCache : @(YES) // Always cache to reduce CPU usage 652| 356| }; 653| 356| UIImage *image = [self.class createFrameAtIndex:index source:_imageSource scale:_scale preserveAspectRatio:_preserveAspectRatio thumbnailSize:_thumbnailSize options:options]; 654| 356| if (!image) { 655| 0| return nil; 656| 0| } 657| 356| image.sd_imageFormat = self.class.imageFormat; 658| 356| image.sd_isDecoded = YES;; 659| 356| return image; 660| 356|} 661| | 662| |@end 663| | /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageIOCoder.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageIOCoder.h" 10| |#import "SDImageCoderHelper.h" 11| |#import "NSImage+Compatibility.h" 12| |#import 13| |#import "UIImage+Metadata.h" 14| |#import "SDImageIOAnimatedCoderInternal.h" 15| | 16| |// Specify File Size for lossy format encoding, like JPEG 17| |static NSString * kSDCGImageDestinationRequestedFileSize = @"kCGImageDestinationRequestedFileSize"; 18| | 19| |@implementation SDImageIOCoder { 20| | size_t _width, _height; 21| | CGImagePropertyOrientation _orientation; 22| | CGImageSourceRef _imageSource; 23| | CGFloat _scale; 24| | BOOL _finished; 25| | BOOL _preserveAspectRatio; 26| | CGSize _thumbnailSize; 27| |} 28| | 29| 0|- (void)dealloc { 30| 0| if (_imageSource) { 31| 0| CFRelease(_imageSource); 32| 0| _imageSource = NULL; 33| 0| } 34| |#if SD_UIKIT 35| | [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 36| |#endif 37| |} 38| | 39| |- (void)didReceiveMemoryWarning:(NSNotification *)notification 40| 0|{ 41| 0| if (_imageSource) { 42| 0| CGImageSourceRemoveCacheAtIndex(_imageSource, 0); 43| 0| } 44| 0|} 45| | 46| 7|+ (instancetype)sharedCoder { 47| 7| static SDImageIOCoder *coder; 48| 7| static dispatch_once_t onceToken; 49| 7| dispatch_once(&onceToken, ^{ 50| 1| coder = [[SDImageIOCoder alloc] init]; 51| 1| }); 52| 7| return coder; 53| 7|} 54| | 55| |#pragma mark - Decode 56| 52|- (BOOL)canDecodeFromData:(nullable NSData *)data { 57| 52| return YES; 58| 52|} 59| | 60| 57|- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options { 61| 57| if (!data) { 62| 0| return nil; 63| 0| } 64| 57| CGFloat scale = 1; 65| 57| NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; 66| 57| if (scaleFactor != nil) { 67| 47| scale = MAX([scaleFactor doubleValue], 1) ; 68| 47| } 69| 57| 70| 57| CGSize thumbnailSize = CGSizeZero; 71| 57| NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; 72| 57| if (thumbnailSizeValue != nil) { 73| 7|#if SD_MAC 74| 7| thumbnailSize = thumbnailSizeValue.sizeValue; 75| |#else 76| | thumbnailSize = thumbnailSizeValue.CGSizeValue; 77| |#endif 78| | } 79| 57| 80| 57| BOOL preserveAspectRatio = YES; 81| 57| NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; 82| 57| if (preserveAspectRatioValue != nil) { 83| 6| preserveAspectRatio = preserveAspectRatioValue.boolValue; 84| 6| } 85| 57| 86| 57| CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); 87| 57| if (!source) { 88| 0| return nil; 89| 0| } 90| 57| 91| 57| UIImage *image = [SDImageIOAnimatedCoder createFrameAtIndex:0 source:source scale:scale preserveAspectRatio:preserveAspectRatio thumbnailSize:thumbnailSize options:nil]; 92| 57| CFRelease(source); 93| 57| if (!image) { 94| 4| return nil; 95| 4| } 96| 53| 97| 53| image.sd_imageFormat = [NSData sd_imageFormatForImageData:data]; 98| 53| return image; 99| 53|} 100| | 101| |#pragma mark - Progressive Decode 102| | 103| 0|- (BOOL)canIncrementalDecodeFromData:(NSData *)data { 104| 0| return [self canDecodeFromData:data]; 105| 0|} 106| | 107| 0|- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options { 108| 0| self = [super init]; 109| 0| if (self) { 110| 0| _imageSource = CGImageSourceCreateIncremental(NULL); 111| 0| CGFloat scale = 1; 112| 0| NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; 113| 0| if (scaleFactor != nil) { 114| 0| scale = MAX([scaleFactor doubleValue], 1); 115| 0| } 116| 0| _scale = scale; 117| 0| CGSize thumbnailSize = CGSizeZero; 118| 0| NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; 119| 0| if (thumbnailSizeValue != nil) { 120| 0| #if SD_MAC 121| 0| thumbnailSize = thumbnailSizeValue.sizeValue; 122| | #else 123| | thumbnailSize = thumbnailSizeValue.CGSizeValue; 124| | #endif 125| | } 126| 0| _thumbnailSize = thumbnailSize; 127| 0| BOOL preserveAspectRatio = YES; 128| 0| NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; 129| 0| if (preserveAspectRatioValue != nil) { 130| 0| preserveAspectRatio = preserveAspectRatioValue.boolValue; 131| 0| } 132| 0| _preserveAspectRatio = preserveAspectRatio; 133| |#if SD_UIKIT 134| | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 135| |#endif 136| | } 137| 0| return self; 138| 0|} 139| | 140| 0|- (void)updateIncrementalData:(NSData *)data finished:(BOOL)finished { 141| 0| if (_finished) { 142| 0| return; 143| 0| } 144| 0| _finished = finished; 145| 0| 146| 0| // The following code is from http://www.cocoaintheshell.com/2011/05/progressive-images-download-imageio/ 147| 0| // Thanks to the author @Nyx0uf 148| 0| 149| 0| // Update the data source, we must pass ALL the data, not just the new bytes 150| 0| CGImageSourceUpdateData(_imageSource, (__bridge CFDataRef)data, finished); 151| 0| 152| 0| if (_width + _height == 0) { 153| 0| CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(_imageSource, 0, NULL); 154| 0| if (properties) { 155| 0| NSInteger orientationValue = 1; 156| 0| CFTypeRef val = CFDictionaryGetValue(properties, kCGImagePropertyPixelHeight); 157| 0| if (val) CFNumberGetValue(val, kCFNumberLongType, &_height); 158| 0| val = CFDictionaryGetValue(properties, kCGImagePropertyPixelWidth); 159| 0| if (val) CFNumberGetValue(val, kCFNumberLongType, &_width); 160| 0| val = CFDictionaryGetValue(properties, kCGImagePropertyOrientation); 161| 0| if (val) CFNumberGetValue(val, kCFNumberNSIntegerType, &orientationValue); 162| 0| CFRelease(properties); 163| 0| 164| 0| // When we draw to Core Graphics, we lose orientation information, 165| 0| // which means the image below born of initWithCGIImage will be 166| 0| // oriented incorrectly sometimes. (Unlike the image born of initWithData 167| 0| // in didCompleteWithError.) So save it here and pass it on later. 168| 0| _orientation = (CGImagePropertyOrientation)orientationValue; 169| 0| } 170| 0| } 171| 0|} 172| | 173| 0|- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options { 174| 0| UIImage *image; 175| 0| 176| 0| if (_width + _height > 0) { 177| 0| // Create the image 178| 0| CGFloat scale = _scale; 179| 0| NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; 180| 0| if (scaleFactor != nil) { 181| 0| scale = MAX([scaleFactor doubleValue], 1); 182| 0| } 183| 0| image = [SDImageIOAnimatedCoder createFrameAtIndex:0 source:_imageSource scale:scale preserveAspectRatio:_preserveAspectRatio thumbnailSize:_thumbnailSize options:nil]; 184| 0| if (image) { 185| 0| CFStringRef uttype = CGImageSourceGetType(_imageSource); 186| 0| image.sd_imageFormat = [NSData sd_imageFormatFromUTType:uttype]; 187| 0| } 188| 0| } 189| 0| 190| 0| return image; 191| 0|} 192| | 193| |#pragma mark - Encode 194| 25|- (BOOL)canEncodeToFormat:(SDImageFormat)format { 195| 25| return YES; 196| 25|} 197| | 198| 25|- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options { 199| 25| if (!image) { 200| 0| return nil; 201| 0| } 202| 25| CGImageRef imageRef = image.CGImage; 203| 25| if (!imageRef) { 204| 0| // Earily return, supports CGImage only 205| 0| return nil; 206| 0| } 207| 25| 208| 25| if (format == SDImageFormatUndefined) { 209| 1| BOOL hasAlpha = [SDImageCoderHelper CGImageContainsAlpha:imageRef]; 210| 1| if (hasAlpha) { 211| 0| format = SDImageFormatPNG; 212| 1| } else { 213| 1| format = SDImageFormatJPEG; 214| 1| } 215| 1| } 216| 25| 217| 25| NSMutableData *imageData = [NSMutableData data]; 218| 25| CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; 219| 25| 220| 25| // Create an image destination. 221| 25| CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, 1, NULL); 222| 25| if (!imageDestination) { 223| 0| // Handle failure. 224| 0| return nil; 225| 0| } 226| 25| 227| 25| NSMutableDictionary *properties = [NSMutableDictionary dictionary]; 228| |#if SD_UIKIT || SD_WATCH 229| | CGImagePropertyOrientation exifOrientation = [SDImageCoderHelper exifOrientationFromImageOrientation:image.imageOrientation]; 230| |#else 231| | CGImagePropertyOrientation exifOrientation = kCGImagePropertyOrientationUp; 232| 25|#endif 233| 25| properties[(__bridge NSString *)kCGImagePropertyOrientation] = @(exifOrientation); 234| 25| // Encoding Options 235| 25| double compressionQuality = 1; 236| 25| if (options[SDImageCoderEncodeCompressionQuality]) { 237| 6| compressionQuality = [options[SDImageCoderEncodeCompressionQuality] doubleValue]; 238| 6| } 239| 25| properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = @(compressionQuality); 240| 25| CGColorRef backgroundColor = [options[SDImageCoderEncodeBackgroundColor] CGColor]; 241| 25| if (backgroundColor) { 242| 1| properties[(__bridge NSString *)kCGImageDestinationBackgroundColor] = (__bridge id)(backgroundColor); 243| 1| } 244| 25| CGSize maxPixelSize = CGSizeZero; 245| 25| NSValue *maxPixelSizeValue = options[SDImageCoderEncodeMaxPixelSize]; 246| 25| if (maxPixelSizeValue != nil) { 247| 0|#if SD_MAC 248| 0| maxPixelSize = maxPixelSizeValue.sizeValue; 249| |#else 250| | maxPixelSize = maxPixelSizeValue.CGSizeValue; 251| |#endif 252| | } 253| 25| NSUInteger pixelWidth = CGImageGetWidth(imageRef); 254| 25| NSUInteger pixelHeight = CGImageGetHeight(imageRef); 255| 25| if (maxPixelSize.width > 0 && maxPixelSize.height > 0 && pixelWidth > maxPixelSize.width && pixelHeight > maxPixelSize.height) { 256| 0| CGFloat pixelRatio = pixelWidth / pixelHeight; 257| 0| CGFloat maxPixelSizeRatio = maxPixelSize.width / maxPixelSize.height; 258| 0| CGFloat finalPixelSize; 259| 0| if (pixelRatio > maxPixelSizeRatio) { 260| 0| finalPixelSize = maxPixelSize.width; 261| 0| } else { 262| 0| finalPixelSize = maxPixelSize.height; 263| 0| } 264| 0| properties[(__bridge NSString *)kCGImageDestinationImageMaxPixelSize] = @(finalPixelSize); 265| 0| } 266| 25| NSUInteger maxFileSize = [options[SDImageCoderEncodeMaxFileSize] unsignedIntegerValue]; 267| 25| if (maxFileSize > 0) { 268| 1| properties[kSDCGImageDestinationRequestedFileSize] = @(maxFileSize); 269| 1| // Remove the quality if we have file size limit 270| 1| properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = nil; 271| 1| } 272| 25| BOOL embedThumbnail = NO; 273| 25| if (options[SDImageCoderEncodeEmbedThumbnail]) { 274| 1| embedThumbnail = [options[SDImageCoderEncodeEmbedThumbnail] boolValue]; 275| 1| } 276| 25| properties[(__bridge NSString *)kCGImageDestinationEmbedThumbnail] = @(embedThumbnail); 277| 25| 278| 25| // Add your image to the destination. 279| 25| CGImageDestinationAddImage(imageDestination, imageRef, (__bridge CFDictionaryRef)properties); 280| 25| 281| 25| // Finalize the destination. 282| 25| if (CGImageDestinationFinalize(imageDestination) == NO) { 283| 0| // Handle failure. 284| 0| imageData = nil; 285| 0| } 286| 25| 287| 25| CFRelease(imageDestination); 288| 25| 289| 25| return [imageData copy]; 290| 25|} 291| | 292| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageLoader.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageLoader.h" 10| |#import "SDWebImageCacheKeyFilter.h" 11| |#import "SDImageCodersManager.h" 12| |#import "SDImageCoderHelper.h" 13| |#import "SDAnimatedImage.h" 14| |#import "UIImage+Metadata.h" 15| |#import "SDInternalMacros.h" 16| |#import "objc/runtime.h" 17| | 18| |static void * SDImageLoaderProgressiveCoderKey = &SDImageLoaderProgressiveCoderKey; 19| | 20| 73|UIImage * _Nullable SDImageLoaderDecodeImageData(NSData * _Nonnull imageData, NSURL * _Nonnull imageURL, SDWebImageOptions options, SDWebImageContext * _Nullable context) { 21| 73| NSCParameterAssert(imageData); 22| 73| NSCParameterAssert(imageURL); 23| 73| 24| 73| UIImage *image; 25| 73| id cacheKeyFilter = context[SDWebImageContextCacheKeyFilter]; 26| 73| NSString *cacheKey; 27| 73| if (cacheKeyFilter) { 28| 1| cacheKey = [cacheKeyFilter cacheKeyForURL:imageURL]; 29| 72| } else { 30| 72| cacheKey = imageURL.absoluteString; 31| 72| } 32| 73| BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); 33| 73| NSNumber *scaleValue = context[SDWebImageContextImageScaleFactor]; 34| 73| CGFloat scale = scaleValue.doubleValue >= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); 35| 73| NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; 36| 73| NSValue *thumbnailSizeValue; 37| 73| BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); 38| 73| if (shouldScaleDown) { 39| 2| CGFloat thumbnailPixels = SDImageCoderHelper.defaultScaleDownLimitBytes / 4; 40| 2| CGFloat dimension = ceil(sqrt(thumbnailPixels)); 41| 2| thumbnailSizeValue = @(CGSizeMake(dimension, dimension)); 42| 2| } 43| 73| if (context[SDWebImageContextImageThumbnailPixelSize]) { 44| 0| thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; 45| 0| } 46| 73| 47| 73| SDImageCoderMutableOptions *mutableCoderOptions = [NSMutableDictionary dictionaryWithCapacity:2]; 48| 73| mutableCoderOptions[SDImageCoderDecodeFirstFrameOnly] = @(decodeFirstFrame); 49| 73| mutableCoderOptions[SDImageCoderDecodeScaleFactor] = @(scale); 50| 73| mutableCoderOptions[SDImageCoderDecodePreserveAspectRatio] = preserveAspectRatioValue; 51| 73| mutableCoderOptions[SDImageCoderDecodeThumbnailPixelSize] = thumbnailSizeValue; 52| 73| mutableCoderOptions[SDImageCoderWebImageContext] = context; 53| 73| SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; 54| 73| 55| 73| // Grab the image coder 56| 73| id imageCoder; 57| 73| if ([context[SDWebImageContextImageCoder] conformsToProtocol:@protocol(SDImageCoder)]) { 58| 0| imageCoder = context[SDWebImageContextImageCoder]; 59| 73| } else { 60| 73| imageCoder = [SDImageCodersManager sharedManager]; 61| 73| } 62| 73| 63| 73| if (!decodeFirstFrame) { 64| 73| // check whether we should use `SDAnimatedImage` 65| 73| Class animatedImageClass = context[SDWebImageContextAnimatedImageClass]; 66| 73| if ([animatedImageClass isSubclassOfClass:[UIImage class]] && [animatedImageClass conformsToProtocol:@protocol(SDAnimatedImage)]) { 67| 2| image = [[animatedImageClass alloc] initWithData:imageData scale:scale options:coderOptions]; 68| 2| if (image) { 69| 2| // Preload frames if supported 70| 2| if (options & SDWebImagePreloadAllFrames && [image respondsToSelector:@selector(preloadAllFrames)]) { 71| 0| [((id)image) preloadAllFrames]; 72| 0| } 73| 2| } else { 74| 0| // Check image class matching 75| 0| if (options & SDWebImageMatchAnimatedImageClass) { 76| 0| return nil; 77| 0| } 78| 73| } 79| 2| } 80| 73| } 81| 73| if (!image) { 82| 71| image = [imageCoder decodedImageWithData:imageData options:coderOptions]; 83| 71| } 84| 73| if (image) { 85| 69| BOOL shouldDecode = !SD_OPTIONS_CONTAINS(options, SDWebImageAvoidDecodeImage); 86| 69| if ([image.class conformsToProtocol:@protocol(SDAnimatedImage)]) { 87| 2| // `SDAnimatedImage` do not decode 88| 2| shouldDecode = NO; 89| 67| } else if (image.sd_isAnimated) { 90| 3| // animated image do not decode 91| 3| shouldDecode = NO; 92| 3| } 93| 69| 94| 69| if (shouldDecode) { 95| 64| image = [SDImageCoderHelper decodedImageWithImage:image]; 96| 64| } 97| 69| } 98| 73| 99| 73| return image; 100| 73|} 101| | 102| 7|UIImage * _Nullable SDImageLoaderDecodeProgressiveImageData(NSData * _Nonnull imageData, NSURL * _Nonnull imageURL, BOOL finished, id _Nonnull operation, SDWebImageOptions options, SDWebImageContext * _Nullable context) { 103| 7| NSCParameterAssert(imageData); 104| 7| NSCParameterAssert(imageURL); 105| 7| NSCParameterAssert(operation); 106| 7| 107| 7| UIImage *image; 108| 7| id cacheKeyFilter = context[SDWebImageContextCacheKeyFilter]; 109| 7| NSString *cacheKey; 110| 7| if (cacheKeyFilter) { 111| 0| cacheKey = [cacheKeyFilter cacheKeyForURL:imageURL]; 112| 7| } else { 113| 7| cacheKey = imageURL.absoluteString; 114| 7| } 115| 7| BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); 116| 7| NSNumber *scaleValue = context[SDWebImageContextImageScaleFactor]; 117| 7| CGFloat scale = scaleValue.doubleValue >= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); 118| 7| NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; 119| 7| NSValue *thumbnailSizeValue; 120| 7| BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); 121| 7| if (shouldScaleDown) { 122| 1| CGFloat thumbnailPixels = SDImageCoderHelper.defaultScaleDownLimitBytes / 4; 123| 1| CGFloat dimension = ceil(sqrt(thumbnailPixels)); 124| 1| thumbnailSizeValue = @(CGSizeMake(dimension, dimension)); 125| 1| } 126| 7| if (context[SDWebImageContextImageThumbnailPixelSize]) { 127| 0| thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; 128| 0| } 129| 7| 130| 7| SDImageCoderMutableOptions *mutableCoderOptions = [NSMutableDictionary dictionaryWithCapacity:2]; 131| 7| mutableCoderOptions[SDImageCoderDecodeFirstFrameOnly] = @(decodeFirstFrame); 132| 7| mutableCoderOptions[SDImageCoderDecodeScaleFactor] = @(scale); 133| 7| mutableCoderOptions[SDImageCoderDecodePreserveAspectRatio] = preserveAspectRatioValue; 134| 7| mutableCoderOptions[SDImageCoderDecodeThumbnailPixelSize] = thumbnailSizeValue; 135| 7| mutableCoderOptions[SDImageCoderWebImageContext] = context; 136| 7| SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; 137| 7| 138| 7| // Grab the progressive image coder 139| 7| id progressiveCoder = objc_getAssociatedObject(operation, SDImageLoaderProgressiveCoderKey); 140| 7| if (!progressiveCoder) { 141| 4| id imageCoder = context[SDWebImageContextImageCoder]; 142| 4| // Check the progressive coder if provided 143| 4| if ([imageCoder conformsToProtocol:@protocol(SDProgressiveImageCoder)]) { 144| 0| progressiveCoder = [[[imageCoder class] alloc] initIncrementalWithOptions:coderOptions]; 145| 4| } else { 146| 4| // We need to create a new instance for progressive decoding to avoid conflicts 147| 6| for (id coder in [SDImageCodersManager sharedManager].coders.reverseObjectEnumerator) { 148| 6| if ([coder conformsToProtocol:@protocol(SDProgressiveImageCoder)] && 149| 6| [((id)coder) canIncrementalDecodeFromData:imageData]) { 150| 4| progressiveCoder = [[[coder class] alloc] initIncrementalWithOptions:coderOptions]; 151| 4| break; 152| 4| } 153| 6| } 154| 4| } 155| 4| objc_setAssociatedObject(operation, SDImageLoaderProgressiveCoderKey, progressiveCoder, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 156| 4| } 157| 7| // If we can't find any progressive coder, disable progressive download 158| 7| if (!progressiveCoder) { 159| 0| return nil; 160| 0| } 161| 7| 162| 7| [progressiveCoder updateIncrementalData:imageData finished:finished]; 163| 7| if (!decodeFirstFrame) { 164| 7| // check whether we should use `SDAnimatedImage` 165| 7| Class animatedImageClass = context[SDWebImageContextAnimatedImageClass]; 166| 7| if ([animatedImageClass isSubclassOfClass:[UIImage class]] && [animatedImageClass conformsToProtocol:@protocol(SDAnimatedImage)] && [progressiveCoder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) { 167| 1| image = [[animatedImageClass alloc] initWithAnimatedCoder:(id)progressiveCoder scale:scale]; 168| 1| if (image) { 169| 1| // Progressive decoding does not preload frames 170| 1| } else { 171| 0| // Check image class matching 172| 0| if (options & SDWebImageMatchAnimatedImageClass) { 173| 0| return nil; 174| 0| } 175| 7| } 176| 1| } 177| 7| } 178| 7| if (!image) { 179| 6| image = [progressiveCoder incrementalDecodedImageWithOptions:coderOptions]; 180| 6| } 181| 7| if (image) { 182| 7| BOOL shouldDecode = !SD_OPTIONS_CONTAINS(options, SDWebImageAvoidDecodeImage); 183| 7| if ([image.class conformsToProtocol:@protocol(SDAnimatedImage)]) { 184| 1| // `SDAnimatedImage` do not decode 185| 1| shouldDecode = NO; 186| 6| } else if (image.sd_isAnimated) { 187| 0| // animated image do not decode 188| 0| shouldDecode = NO; 189| 0| } 190| 7| if (shouldDecode) { 191| 6| image = [SDImageCoderHelper decodedImageWithImage:image]; 192| 6| } 193| 7| // mark the image as progressive (completionBlock one are not mark as progressive) 194| 7| image.sd_isIncremental = YES; 195| 7| } 196| 7| 197| 7| return image; 198| 7|} 199| | 200| |SDWebImageContextOption const SDWebImageContextLoaderCachedImage = @"loaderCachedImage"; /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageLoadersManager.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageLoadersManager.h" 10| |#import "SDWebImageDownloader.h" 11| |#import "SDInternalMacros.h" 12| | 13| |@interface SDImageLoadersManager () 14| | 15| |@property (nonatomic, strong, nonnull) dispatch_semaphore_t loadersLock; 16| | 17| |@end 18| | 19| |@implementation SDImageLoadersManager 20| |{ 21| | NSMutableArray>* _imageLoaders; 22| |} 23| | 24| 1|+ (SDImageLoadersManager *)sharedManager { 25| 1| static dispatch_once_t onceToken; 26| 1| static SDImageLoadersManager *manager; 27| 1| dispatch_once(&onceToken, ^{ 28| 1| manager = [[SDImageLoadersManager alloc] init]; 29| 1| }); 30| 1| return manager; 31| 1|} 32| | 33| 2|- (instancetype)init { 34| 2| self = [super init]; 35| 2| if (self) { 36| 2| // initialize with default image loaders 37| 2| _imageLoaders = [NSMutableArray arrayWithObject:[SDWebImageDownloader sharedDownloader]]; 38| 2| _loadersLock = dispatch_semaphore_create(1); 39| 2| } 40| 2| return self; 41| 2|} 42| | 43| 4|- (NSArray> *)loaders { 44| 4| SD_LOCK(self.loadersLock); 45| 4| NSArray>* loaders = [_imageLoaders copy]; 46| 4| SD_UNLOCK(self.loadersLock); 47| 4| return loaders; 48| 4|} 49| | 50| 1|- (void)setLoaders:(NSArray> *)loaders { 51| 1| SD_LOCK(self.loadersLock); 52| 1| [_imageLoaders removeAllObjects]; 53| 1| if (loaders.count) { 54| 1| [_imageLoaders addObjectsFromArray:loaders]; 55| 1| } 56| 1| SD_UNLOCK(self.loadersLock); 57| 1|} 58| | 59| |#pragma mark - Loader Property 60| | 61| 1|- (void)addLoader:(id)loader { 62| 1| if (![loader conformsToProtocol:@protocol(SDImageLoader)]) { 63| 0| return; 64| 0| } 65| 1| SD_LOCK(self.loadersLock); 66| 1| [_imageLoaders addObject:loader]; 67| 1| SD_UNLOCK(self.loadersLock); 68| 1|} 69| | 70| 1|- (void)removeLoader:(id)loader { 71| 1| if (![loader conformsToProtocol:@protocol(SDImageLoader)]) { 72| 0| return; 73| 0| } 74| 1| SD_LOCK(self.loadersLock); 75| 1| [_imageLoaders removeObject:loader]; 76| 1| SD_UNLOCK(self.loadersLock); 77| 1|} 78| | 79| |#pragma mark - SDImageLoader 80| | 81| 2|- (BOOL)canRequestImageForURL:(nullable NSURL *)url { 82| 2| NSArray> *loaders = self.loaders; 83| 2| for (id loader in loaders.reverseObjectEnumerator) { 84| 2| if ([loader canRequestImageForURL:url]) { 85| 2| return YES; 86| 2| } 87| 2| } 88| 2| return NO; 89| 2|} 90| | 91| 1|- (id)requestImageWithURL:(NSURL *)url options:(SDWebImageOptions)options context:(SDWebImageContext *)context progress:(SDImageLoaderProgressBlock)progressBlock completed:(SDImageLoaderCompletedBlock)completedBlock { 92| 1| if (!url) { 93| 0| return nil; 94| 0| } 95| 1| NSArray> *loaders = self.loaders; 96| 1| for (id loader in loaders.reverseObjectEnumerator) { 97| 1| if ([loader canRequestImageForURL:url]) { 98| 1| return [loader requestImageWithURL:url options:options context:context progress:progressBlock completed:completedBlock]; 99| 1| } 100| 1| } 101| 1| return nil; 102| 1|} 103| | 104| 1|- (BOOL)shouldBlockFailedURLWithURL:(NSURL *)url error:(NSError *)error { 105| 1| NSArray> *loaders = self.loaders; 106| 1| for (id loader in loaders.reverseObjectEnumerator) { 107| 1| if ([loader canRequestImageForURL:url]) { 108| 1| return [loader shouldBlockFailedURLWithURL:url error:error]; 109| 1| } 110| 1| } 111| 1| return NO; 112| 1|} 113| | 114| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDImageTransformer.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageTransformer.h" 10| |#import "UIColor+SDHexString.h" 11| |#if SD_UIKIT || SD_MAC 12| |#import 13| |#endif 14| | 15| |// Separator for different transformerKey, for example, `image.png` |> flip(YES,NO) |> rotate(pi/4,YES) => 'image-SDImageFlippingTransformer(1,0)-SDImageRotationTransformer(0.78539816339,1).png' 16| |static NSString * const SDImageTransformerKeySeparator = @"-"; 17| | 18| 20|NSString * _Nullable SDTransformedKeyForKey(NSString * _Nullable key, NSString * _Nonnull transformerKey) { 19| 20| if (!key || !transformerKey) { 20| 0| return nil; 21| 0| } 22| 20| // Find the file extension 23| 20| NSURL *keyURL = [NSURL URLWithString:key]; 24| 20| NSString *ext = keyURL ? keyURL.pathExtension : key.pathExtension; 25| 20| if (ext.length > 0) { 26| 15| // For non-file URL 27| 15| if (keyURL && !keyURL.isFileURL) { 28| 15| // keep anything except path (like URL query) 29| 15| NSURLComponents *component = [NSURLComponents componentsWithURL:keyURL resolvingAgainstBaseURL:NO]; 30| 15| component.path = [[[component.path.stringByDeletingPathExtension stringByAppendingString:SDImageTransformerKeySeparator] stringByAppendingString:transformerKey] stringByAppendingPathExtension:ext]; 31| 15| return component.URL.absoluteString; 32| 15| } else { 33| 0| // file URL 34| 0| return [[[key.stringByDeletingPathExtension stringByAppendingString:SDImageTransformerKeySeparator] stringByAppendingString:transformerKey] stringByAppendingPathExtension:ext]; 35| 0| } 36| 5| } else { 37| 5| return [[key stringByAppendingString:SDImageTransformerKeySeparator] stringByAppendingString:transformerKey]; 38| 5| } 39| 20|} 40| | 41| 0|NSString * _Nullable SDThumbnailedKeyForKey(NSString * _Nullable key, CGSize thumbnailPixelSize, BOOL preserveAspectRatio) { 42| 0| NSString *thumbnailKey = [NSString stringWithFormat:@"Thumbnail({%f,%f},%d)", thumbnailPixelSize.width, thumbnailPixelSize.height, preserveAspectRatio]; 43| 0| return SDTransformedKeyForKey(key, thumbnailKey); 44| 0|} 45| | 46| |@interface SDImagePipelineTransformer () 47| | 48| |@property (nonatomic, copy, readwrite, nonnull) NSArray> *transformers; 49| |@property (nonatomic, copy, readwrite) NSString *transformerKey; 50| | 51| |@end 52| | 53| |@implementation SDImagePipelineTransformer 54| | 55| 1|+ (instancetype)transformerWithTransformers:(NSArray> *)transformers { 56| 1| SDImagePipelineTransformer *transformer = [SDImagePipelineTransformer new]; 57| 1| transformer.transformers = transformers; 58| 1| transformer.transformerKey = [[self class] cacheKeyForTransformers:transformers]; 59| 1| 60| 1| return transformer; 61| 1|} 62| | 63| 1|+ (NSString *)cacheKeyForTransformers:(NSArray> *)transformers { 64| 1| if (transformers.count == 0) { 65| 0| return @""; 66| 0| } 67| 1| NSMutableArray *cacheKeys = [NSMutableArray arrayWithCapacity:transformers.count]; 68| 8| [transformers enumerateObjectsUsingBlock:^(id _Nonnull transformer, NSUInteger idx, BOOL * _Nonnull stop) { 69| 8| NSString *cacheKey = transformer.transformerKey; 70| 8| [cacheKeys addObject:cacheKey]; 71| 8| }]; 72| 1| 73| 1| return [cacheKeys componentsJoinedByString:SDImageTransformerKeySeparator]; 74| 1|} 75| | 76| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 77| 1| if (!image) { 78| 0| return nil; 79| 0| } 80| 1| UIImage *transformedImage = image; 81| 8| for (id transformer in self.transformers) { 82| 8| transformedImage = [transformer transformedImageWithImage:transformedImage forKey:key]; 83| 8| } 84| 1| return transformedImage; 85| 1|} 86| | 87| |@end 88| | 89| |@interface SDImageRoundCornerTransformer () 90| | 91| |@property (nonatomic, assign) CGFloat cornerRadius; 92| |@property (nonatomic, assign) SDRectCorner corners; 93| |@property (nonatomic, assign) CGFloat borderWidth; 94| |@property (nonatomic, strong, nullable) UIColor *borderColor; 95| | 96| |@end 97| | 98| |@implementation SDImageRoundCornerTransformer 99| | 100| 1|+ (instancetype)transformerWithRadius:(CGFloat)cornerRadius corners:(SDRectCorner)corners borderWidth:(CGFloat)borderWidth borderColor:(UIColor *)borderColor { 101| 1| SDImageRoundCornerTransformer *transformer = [SDImageRoundCornerTransformer new]; 102| 1| transformer.cornerRadius = cornerRadius; 103| 1| transformer.corners = corners; 104| 1| transformer.borderWidth = borderWidth; 105| 1| transformer.borderColor = borderColor; 106| 1| 107| 1| return transformer; 108| 1|} 109| | 110| 1|- (NSString *)transformerKey { 111| 1| return [NSString stringWithFormat:@"SDImageRoundCornerTransformer(%f,%lu,%f,%@)", self.cornerRadius, (unsigned long)self.corners, self.borderWidth, self.borderColor.sd_hexString]; 112| 1|} 113| | 114| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 115| 1| if (!image) { 116| 0| return nil; 117| 0| } 118| 1| return [image sd_roundedCornerImageWithRadius:self.cornerRadius corners:self.corners borderWidth:self.borderWidth borderColor:self.borderColor]; 119| 1|} 120| | 121| |@end 122| | 123| |@interface SDImageResizingTransformer () 124| | 125| |@property (nonatomic, assign) CGSize size; 126| |@property (nonatomic, assign) SDImageScaleMode scaleMode; 127| | 128| |@end 129| | 130| |@implementation SDImageResizingTransformer 131| | 132| 1|+ (instancetype)transformerWithSize:(CGSize)size scaleMode:(SDImageScaleMode)scaleMode { 133| 1| SDImageResizingTransformer *transformer = [SDImageResizingTransformer new]; 134| 1| transformer.size = size; 135| 1| transformer.scaleMode = scaleMode; 136| 1| 137| 1| return transformer; 138| 1|} 139| | 140| 1|- (NSString *)transformerKey { 141| 1| CGSize size = self.size; 142| 1| return [NSString stringWithFormat:@"SDImageResizingTransformer({%f,%f},%lu)", size.width, size.height, (unsigned long)self.scaleMode]; 143| 1|} 144| | 145| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 146| 1| if (!image) { 147| 0| return nil; 148| 0| } 149| 1| return [image sd_resizedImageWithSize:self.size scaleMode:self.scaleMode]; 150| 1|} 151| | 152| |@end 153| | 154| |@interface SDImageCroppingTransformer () 155| | 156| |@property (nonatomic, assign) CGRect rect; 157| | 158| |@end 159| | 160| |@implementation SDImageCroppingTransformer 161| | 162| 1|+ (instancetype)transformerWithRect:(CGRect)rect { 163| 1| SDImageCroppingTransformer *transformer = [SDImageCroppingTransformer new]; 164| 1| transformer.rect = rect; 165| 1| 166| 1| return transformer; 167| 1|} 168| | 169| 1|- (NSString *)transformerKey { 170| 1| CGRect rect = self.rect; 171| 1| return [NSString stringWithFormat:@"SDImageCroppingTransformer({%f,%f,%f,%f})", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height]; 172| 1|} 173| | 174| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 175| 1| if (!image) { 176| 0| return nil; 177| 0| } 178| 1| return [image sd_croppedImageWithRect:self.rect]; 179| 1|} 180| | 181| |@end 182| | 183| |@interface SDImageFlippingTransformer () 184| | 185| |@property (nonatomic, assign) BOOL horizontal; 186| |@property (nonatomic, assign) BOOL vertical; 187| | 188| |@end 189| | 190| |@implementation SDImageFlippingTransformer 191| | 192| 1|+ (instancetype)transformerWithHorizontal:(BOOL)horizontal vertical:(BOOL)vertical { 193| 1| SDImageFlippingTransformer *transformer = [SDImageFlippingTransformer new]; 194| 1| transformer.horizontal = horizontal; 195| 1| transformer.vertical = vertical; 196| 1| 197| 1| return transformer; 198| 1|} 199| | 200| 1|- (NSString *)transformerKey { 201| 1| return [NSString stringWithFormat:@"SDImageFlippingTransformer(%d,%d)", self.horizontal, self.vertical]; 202| 1|} 203| | 204| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 205| 1| if (!image) { 206| 0| return nil; 207| 0| } 208| 1| return [image sd_flippedImageWithHorizontal:self.horizontal vertical:self.vertical]; 209| 1|} 210| | 211| |@end 212| | 213| |@interface SDImageRotationTransformer () 214| | 215| |@property (nonatomic, assign) CGFloat angle; 216| |@property (nonatomic, assign) BOOL fitSize; 217| | 218| |@end 219| | 220| |@implementation SDImageRotationTransformer 221| | 222| 1|+ (instancetype)transformerWithAngle:(CGFloat)angle fitSize:(BOOL)fitSize { 223| 1| SDImageRotationTransformer *transformer = [SDImageRotationTransformer new]; 224| 1| transformer.angle = angle; 225| 1| transformer.fitSize = fitSize; 226| 1| 227| 1| return transformer; 228| 1|} 229| | 230| 1|- (NSString *)transformerKey { 231| 1| return [NSString stringWithFormat:@"SDImageRotationTransformer(%f,%d)", self.angle, self.fitSize]; 232| 1|} 233| | 234| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 235| 1| if (!image) { 236| 0| return nil; 237| 0| } 238| 1| return [image sd_rotatedImageWithAngle:self.angle fitSize:self.fitSize]; 239| 1|} 240| | 241| |@end 242| | 243| |#pragma mark - Image Blending 244| | 245| |@interface SDImageTintTransformer () 246| | 247| |@property (nonatomic, strong, nonnull) UIColor *tintColor; 248| | 249| |@end 250| | 251| |@implementation SDImageTintTransformer 252| | 253| 1|+ (instancetype)transformerWithColor:(UIColor *)tintColor { 254| 1| SDImageTintTransformer *transformer = [SDImageTintTransformer new]; 255| 1| transformer.tintColor = tintColor; 256| 1| 257| 1| return transformer; 258| 1|} 259| | 260| 1|- (NSString *)transformerKey { 261| 1| return [NSString stringWithFormat:@"SDImageTintTransformer(%@)", self.tintColor.sd_hexString]; 262| 1|} 263| | 264| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 265| 1| if (!image) { 266| 0| return nil; 267| 0| } 268| 1| return [image sd_tintedImageWithColor:self.tintColor]; 269| 1|} 270| | 271| |@end 272| | 273| |#pragma mark - Image Effect 274| | 275| |@interface SDImageBlurTransformer () 276| | 277| |@property (nonatomic, assign) CGFloat blurRadius; 278| | 279| |@end 280| | 281| |@implementation SDImageBlurTransformer 282| | 283| 1|+ (instancetype)transformerWithRadius:(CGFloat)blurRadius { 284| 1| SDImageBlurTransformer *transformer = [SDImageBlurTransformer new]; 285| 1| transformer.blurRadius = blurRadius; 286| 1| 287| 1| return transformer; 288| 1|} 289| | 290| 1|- (NSString *)transformerKey { 291| 1| return [NSString stringWithFormat:@"SDImageBlurTransformer(%f)", self.blurRadius]; 292| 1|} 293| | 294| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 295| 1| if (!image) { 296| 0| return nil; 297| 0| } 298| 1| return [image sd_blurredImageWithRadius:self.blurRadius]; 299| 1|} 300| | 301| |@end 302| | 303| |#if SD_UIKIT || SD_MAC 304| |@interface SDImageFilterTransformer () 305| | 306| |@property (nonatomic, strong, nonnull) CIFilter *filter; 307| | 308| |@end 309| | 310| |@implementation SDImageFilterTransformer 311| | 312| 1|+ (instancetype)transformerWithFilter:(CIFilter *)filter { 313| 1| SDImageFilterTransformer *transformer = [SDImageFilterTransformer new]; 314| 1| transformer.filter = filter; 315| 1| 316| 1| return transformer; 317| 1|} 318| | 319| 1|- (NSString *)transformerKey { 320| 1| return [NSString stringWithFormat:@"SDImageFilterTransformer(%@)", self.filter.name]; 321| 1|} 322| | 323| 1|- (UIImage *)transformedImageWithImage:(UIImage *)image forKey:(NSString *)key { 324| 1| if (!image) { 325| 0| return nil; 326| 0| } 327| 1| return [image sd_filteredImageWithFilter:self.filter]; 328| 1|} 329| | 330| |@end 331| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDMemoryCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDMemoryCache.h" 10| |#import "SDImageCacheConfig.h" 11| |#import "UIImage+MemoryCacheCost.h" 12| |#import "SDInternalMacros.h" 13| | 14| |static void * SDMemoryCacheContext = &SDMemoryCacheContext; 15| | 16| |@interface SDMemoryCache () 17| | 18| |@property (nonatomic, strong, nullable) SDImageCacheConfig *config; 19| |#if SD_UIKIT 20| |@property (nonatomic, strong, nonnull) NSMapTable *weakCache; // strong-weak cache 21| |@property (nonatomic, strong, nonnull) dispatch_semaphore_t weakCacheLock; // a lock to keep the access to `weakCache` thread-safe 22| |#endif 23| |@end 24| | 25| |@implementation SDMemoryCache 26| | 27| 13|- (void)dealloc { 28| 13| [_config removeObserver:self forKeyPath:NSStringFromSelector(@selector(maxMemoryCost)) context:SDMemoryCacheContext]; 29| 13| [_config removeObserver:self forKeyPath:NSStringFromSelector(@selector(maxMemoryCount)) context:SDMemoryCacheContext]; 30| |#if SD_UIKIT 31| | [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 32| |#endif 33| | self.delegate = nil; 34| 13|} 35| | 36| 0|- (instancetype)init { 37| 0| self = [super init]; 38| 0| if (self) { 39| 0| _config = [[SDImageCacheConfig alloc] init]; 40| 0| [self commonInit]; 41| 0| } 42| 0| return self; 43| 0|} 44| | 45| 14|- (instancetype)initWithConfig:(SDImageCacheConfig *)config { 46| 14| self = [super init]; 47| 14| if (self) { 48| 14| _config = config; 49| 14| [self commonInit]; 50| 14| } 51| 14| return self; 52| 14|} 53| | 54| 14|- (void)commonInit { 55| 14| SDImageCacheConfig *config = self.config; 56| 14| self.totalCostLimit = config.maxMemoryCost; 57| 14| self.countLimit = config.maxMemoryCount; 58| 14| 59| 14| [config addObserver:self forKeyPath:NSStringFromSelector(@selector(maxMemoryCost)) options:0 context:SDMemoryCacheContext]; 60| 14| [config addObserver:self forKeyPath:NSStringFromSelector(@selector(maxMemoryCount)) options:0 context:SDMemoryCacheContext]; 61| 14| 62| |#if SD_UIKIT 63| | self.weakCache = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsWeakMemory capacity:0]; 64| | self.weakCacheLock = dispatch_semaphore_create(1); 65| | 66| | [[NSNotificationCenter defaultCenter] addObserver:self 67| | selector:@selector(didReceiveMemoryWarning:) 68| | name:UIApplicationDidReceiveMemoryWarningNotification 69| | object:nil]; 70| |#endif 71| |} 72| | 73| |// Current this seems no use on macOS (macOS use virtual memory and do not clear cache when memory warning). So we only override on iOS/tvOS platform. 74| |#if SD_UIKIT 75| |- (void)didReceiveMemoryWarning:(NSNotification *)notification { 76| | // Only remove cache, but keep weak cache 77| | [super removeAllObjects]; 78| |} 79| | 80| |// `setObject:forKey:` just call this with 0 cost. Override this is enough 81| |- (void)setObject:(id)obj forKey:(id)key cost:(NSUInteger)g { 82| | [super setObject:obj forKey:key cost:g]; 83| | if (!self.config.shouldUseWeakMemoryCache) { 84| | return; 85| | } 86| | if (key && obj) { 87| | // Store weak cache 88| | SD_LOCK(self.weakCacheLock); 89| | [self.weakCache setObject:obj forKey:key]; 90| | SD_UNLOCK(self.weakCacheLock); 91| | } 92| |} 93| | 94| |- (id)objectForKey:(id)key { 95| | id obj = [super objectForKey:key]; 96| | if (!self.config.shouldUseWeakMemoryCache) { 97| | return obj; 98| | } 99| | if (key && !obj) { 100| | // Check weak cache 101| | SD_LOCK(self.weakCacheLock); 102| | obj = [self.weakCache objectForKey:key]; 103| | SD_UNLOCK(self.weakCacheLock); 104| | if (obj) { 105| | // Sync cache 106| | NSUInteger cost = 0; 107| | if ([obj isKindOfClass:[UIImage class]]) { 108| | cost = [(UIImage *)obj sd_memoryCost]; 109| | } 110| | [super setObject:obj forKey:key cost:cost]; 111| | } 112| | } 113| | return obj; 114| |} 115| | 116| |- (void)removeObjectForKey:(id)key { 117| | [super removeObjectForKey:key]; 118| | if (!self.config.shouldUseWeakMemoryCache) { 119| | return; 120| | } 121| | if (key) { 122| | // Remove weak cache 123| | SD_LOCK(self.weakCacheLock); 124| | [self.weakCache removeObjectForKey:key]; 125| | SD_UNLOCK(self.weakCacheLock); 126| | } 127| |} 128| | 129| |- (void)removeAllObjects { 130| | [super removeAllObjects]; 131| | if (!self.config.shouldUseWeakMemoryCache) { 132| | return; 133| | } 134| | // Manually remove should also remove weak cache 135| | SD_LOCK(self.weakCacheLock); 136| | [self.weakCache removeAllObjects]; 137| | SD_UNLOCK(self.weakCacheLock); 138| |} 139| |#endif 140| | 141| |#pragma mark - KVO 142| | 143| 0|- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 144| 0| if (context == SDMemoryCacheContext) { 145| 0| if ([keyPath isEqualToString:NSStringFromSelector(@selector(maxMemoryCost))]) { 146| 0| self.totalCostLimit = self.config.maxMemoryCost; 147| 0| } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(maxMemoryCount))]) { 148| 0| self.countLimit = self.config.maxMemoryCount; 149| 0| } 150| 0| } else { 151| 0| [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; 152| 0| } 153| 0|} 154| | 155| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageCacheKeyFilter.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageCacheKeyFilter.h" 10| | 11| |@interface SDWebImageCacheKeyFilter () 12| | 13| |@property (nonatomic, copy, nonnull) SDWebImageCacheKeyFilterBlock block; 14| | 15| |@end 16| | 17| |@implementation SDWebImageCacheKeyFilter 18| | 19| 1|- (instancetype)initWithBlock:(SDWebImageCacheKeyFilterBlock)block { 20| 1| self = [super init]; 21| 1| if (self) { 22| 1| self.block = block; 23| 1| } 24| 1| return self; 25| 1|} 26| | 27| 1|+ (instancetype)cacheKeyFilterWithBlock:(SDWebImageCacheKeyFilterBlock)block { 28| 1| SDWebImageCacheKeyFilter *cacheKeyFilter = [[SDWebImageCacheKeyFilter alloc] initWithBlock:block]; 29| 1| return cacheKeyFilter; 30| 1|} 31| | 32| 4|- (NSString *)cacheKeyForURL:(NSURL *)url { 33| 4| if (!self.block) { 34| 0| return nil; 35| 0| } 36| 4| return self.block(url); 37| 4|} 38| | 39| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageCacheSerializer.h" 10| | 11| |@interface SDWebImageCacheSerializer () 12| | 13| |@property (nonatomic, copy, nonnull) SDWebImageCacheSerializerBlock block; 14| | 15| |@end 16| | 17| |@implementation SDWebImageCacheSerializer 18| | 19| 1|- (instancetype)initWithBlock:(SDWebImageCacheSerializerBlock)block { 20| 1| self = [super init]; 21| 1| if (self) { 22| 1| self.block = block; 23| 1| } 24| 1| return self; 25| 1|} 26| | 27| 1|+ (instancetype)cacheSerializerWithBlock:(SDWebImageCacheSerializerBlock)block { 28| 1| SDWebImageCacheSerializer *cacheSerializer = [[SDWebImageCacheSerializer alloc] initWithBlock:block]; 29| 1| return cacheSerializer; 30| 1|} 31| | 32| 1|- (NSData *)cacheDataWithImage:(UIImage *)image originalData:(NSData *)data imageURL:(nullable NSURL *)imageURL { 33| 1| if (!self.block) { 34| 0| return nil; 35| 0| } 36| 1| return self.block(image, data, imageURL); 37| 1|} 38| | 39| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageCompat.h: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * (c) Jamie Pinkham 5| | * 6| | * For the full copyright and license information, please view the LICENSE 7| | * file that was distributed with this source code. 8| | */ 9| | 10| |#import 11| | 12| |#ifdef __OBJC_GC__ 13| | #error SDWebImage does not support Objective-C Garbage Collection 14| |#endif 15| | 16| |// Seems like TARGET_OS_MAC is always defined (on all platforms). 17| |// To determine if we are running on macOS, use TARGET_OS_OSX in Xcode 8 18| |#if TARGET_OS_OSX 19| | #define SD_MAC 1 20| |#else 21| | #define SD_MAC 0 22| |#endif 23| | 24| |// iOS and tvOS are very similar, UIKit exists on both platforms 25| |// Note: watchOS also has UIKit, but it's very limited 26| |#if TARGET_OS_IOS || TARGET_OS_TV 27| | #define SD_UIKIT 1 28| |#else 29| | #define SD_UIKIT 0 30| |#endif 31| | 32| |#if TARGET_OS_IOS 33| | #define SD_IOS 1 34| |#else 35| | #define SD_IOS 0 36| |#endif 37| | 38| |#if TARGET_OS_TV 39| | #define SD_TV 1 40| |#else 41| | #define SD_TV 0 42| |#endif 43| | 44| |#if TARGET_OS_WATCH 45| | #define SD_WATCH 1 46| |#else 47| | #define SD_WATCH 0 48| |#endif 49| | 50| | 51| |#if SD_MAC 52| | #import 53| | #ifndef UIImage 54| 13.0k| #define UIImage NSImage 55| | #endif 56| | #ifndef UIImageView 57| 15| #define UIImageView NSImageView 58| | #endif 59| | #ifndef UIView 60| 34| #define UIView NSView 61| | #endif 62| | #ifndef UIColor 63| 200| #define UIColor NSColor 64| | #endif 65| |#else 66| | #if SD_UIKIT 67| | #import 68| | #endif 69| | #if SD_WATCH 70| | #import 71| | #ifndef UIView 72| | #define UIView WKInterfaceObject 73| | #endif 74| | #ifndef UIImageView 75| | #define UIImageView WKInterfaceImage 76| | #endif 77| | #endif 78| |#endif 79| | 80| |#ifndef NS_ENUM 81| |#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type 82| |#endif 83| | 84| |#ifndef NS_OPTIONS 85| |#define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type 86| |#endif 87| | 88| |#ifndef dispatch_main_async_safe 89| |#define dispatch_main_async_safe(block)\ 90| 190| if (dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL) == dispatch_queue_get_label(dispatch_get_main_queue())) {\ 91| 189| block();\ ------------------ | SDWebImageDownloaderOperation.m:__40-[SDWebImageDownloaderOperation cancel:]_block_invoke: | 91| 3| block();\ ------------------ | SDWebImageDownloaderOperation.m:__88-[SDWebImageDownloaderOperation callCompletionBlocksWithImage:imageData:error:finished:]_block_invoke: | 91| 5| block();\ ------------------ | SDWebImageManager.m:__104-[SDWebImageManager callCompletionBlockForOperation:completion:image:data:error:cacheType:finished:url:]_block_invoke: | 91| 150| block();\ ------------------ | UIView+WebCache.m:__113-[NSView(WebCache) sd_internalSetImageWithURL:placeholderImage:options:context:setImageBlock:progress:completed:]_block_invoke: | 91| 15| block();\ ------------------ | UIView+WebCache.m:__113-[NSView(WebCache) sd_internalSetImageWithURL:placeholderImage:options:context:setImageBlock:progress:completed:]_block_invoke.59: | 91| 14| block();\ ------------------ | Unexecuted instantiation: UIView+WebCache.m:__113-[NSView(WebCache) sd_internalSetImageWithURL:placeholderImage:options:context:setImageBlock:progress:completed:]_block_invoke.68 ------------------ | UIView+WebCache.m:__42-[NSView(WebCache) sd_startImageIndicator]_block_invoke: | 91| 1| block();\ ------------------ | UIView+WebCache.m:__41-[NSView(WebCache) sd_stopImageIndicator]_block_invoke: | 91| 1| block();\ ------------------ 92| 102| } else {\ 93| 214| dispatch_async(dispatch_get_main_queue(), block);\ ------------------ | Unexecuted instantiation: SDWebImageDownloaderOperation.m:__40-[SDWebImageDownloaderOperation cancel:]_block_invoke.45 ------------------ | SDWebImageDownloaderOperation.m:__88-[SDWebImageDownloaderOperation callCompletionBlocksWithImage:imageData:error:finished:]_block_invoke.238: | 93| 172| dispatch_async(dispatch_get_main_queue(), block);\ ------------------ | SDWebImageManager.m:__104-[SDWebImageManager callCompletionBlockForOperation:completion:image:data:error:cacheType:finished:url:]_block_invoke.245: | 93| 42| dispatch_async(dispatch_get_main_queue(), block);\ ------------------ | Unexecuted instantiation: UIView+WebCache.m:__113-[NSView(WebCache) sd_internalSetImageWithURL:placeholderImage:options:context:setImageBlock:progress:completed:]_block_invoke.30 ------------------ | Unexecuted instantiation: UIView+WebCache.m:__113-[NSView(WebCache) sd_internalSetImageWithURL:placeholderImage:options:context:setImageBlock:progress:completed:]_block_invoke.62 ------------------ | Unexecuted instantiation: UIView+WebCache.m:__113-[NSView(WebCache) sd_internalSetImageWithURL:placeholderImage:options:context:setImageBlock:progress:completed:]_block_invoke.75 ------------------ | Unexecuted instantiation: UIView+WebCache.m:__42-[NSView(WebCache) sd_startImageIndicator]_block_invoke.135 ------------------ | Unexecuted instantiation: UIView+WebCache.m:__41-[NSView(WebCache) sd_stopImageIndicator]_block_invoke_2 ------------------ 94| 102| } 95| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageDefine.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageDefine.h" 10| |#import "UIImage+Metadata.h" 11| |#import "NSImage+Compatibility.h" 12| |#import "SDAssociatedObject.h" 13| | 14| |#pragma mark - Image scale 15| | 16| 90|static inline NSArray * _Nonnull SDImageScaleFactors() { 17| 90| return @[@2, @3]; 18| 90|} 19| | 20| 90|inline CGFloat SDImageScaleFactorForKey(NSString * _Nullable key) { 21| 90| CGFloat scale = 1; 22| 90| if (!key) { 23| 0| return scale; 24| 0| } 25| 90| // Check if target OS support scale 26| |#if SD_WATCH 27| | if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) 28| |#elif SD_UIKIT 29| | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 30| |#elif SD_MAC 31| 90| if ([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]) 32| 90|#endif 33| 90| { 34| 90| // a@2x.png -> 8 35| 90| if (key.length >= 8) { 36| 90| // Fast check 37| 90| BOOL isURL = [key hasPrefix:@"http://"] || [key hasPrefix:@"https://"]; 38| 179| for (NSNumber *scaleFactor in SDImageScaleFactors()) { 39| 179| // @2x. for file name and normal url 40| 179| NSString *fileScale = [NSString stringWithFormat:@"@%@x.", scaleFactor]; 41| 179| if ([key containsString:fileScale]) { 42| 1| scale = scaleFactor.doubleValue; 43| 1| return scale; 44| 1| } 45| 178| if (isURL) { 46| 158| // %402x. for url encode 47| 158| NSString *urlScale = [NSString stringWithFormat:@"%%40%@x.", scaleFactor]; 48| 158| if ([key containsString:urlScale]) { 49| 0| scale = scaleFactor.doubleValue; 50| 0| return scale; 51| 0| } 52| 158| } 53| 178| } 54| 90| } 55| 90| } 56| 90| return scale; 57| 90|} 58| | 59| 2|inline UIImage * _Nullable SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullable image) { 60| 2| if (!image) { 61| 1| return nil; 62| 1| } 63| 1| CGFloat scale = SDImageScaleFactorForKey(key); 64| 1| return SDScaledImageForScaleFactor(scale, image); 65| 1|} 66| | 67| 1|inline UIImage * _Nullable SDScaledImageForScaleFactor(CGFloat scale, UIImage * _Nullable image) { 68| 1| if (!image) { 69| 0| return nil; 70| 0| } 71| 1| if (scale <= 1) { 72| 0| return image; 73| 0| } 74| 1| if (scale == image.scale) { 75| 0| return image; 76| 0| } 77| 1| UIImage *scaledImage; 78| 1| if (image.sd_isAnimated) { 79| 1| UIImage *animatedImage; 80| |#if SD_UIKIT || SD_WATCH 81| | // `UIAnimatedImage` images share the same size and scale. 82| | NSMutableArray *scaledImages = [NSMutableArray array]; 83| | 84| | for (UIImage *tempImage in image.images) { 85| | UIImage *tempScaledImage = [[UIImage alloc] initWithCGImage:tempImage.CGImage scale:scale orientation:tempImage.imageOrientation]; 86| | [scaledImages addObject:tempScaledImage]; 87| | } 88| | 89| | animatedImage = [UIImage animatedImageWithImages:scaledImages duration:image.duration]; 90| | animatedImage.sd_imageLoopCount = image.sd_imageLoopCount; 91| |#else 92| | // Animated GIF for `NSImage` need to grab `NSBitmapImageRep`; 93| 1| NSRect imageRect = NSMakeRect(0, 0, image.size.width, image.size.height); 94| 1| NSImageRep *imageRep = [image bestRepresentationForRect:imageRect context:nil hints:nil]; 95| 1| NSBitmapImageRep *bitmapImageRep; 96| 1| if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) { 97| 1| bitmapImageRep = (NSBitmapImageRep *)imageRep; 98| 1| } 99| 1| if (bitmapImageRep) { 100| 1| NSSize size = NSMakeSize(image.size.width / scale, image.size.height / scale); 101| 1| animatedImage = [[NSImage alloc] initWithSize:size]; 102| 1| bitmapImageRep.size = size; 103| 1| [animatedImage addRepresentation:bitmapImageRep]; 104| 1| } 105| 1|#endif 106| 1| scaledImage = animatedImage; 107| 1| } else { 108| |#if SD_UIKIT || SD_WATCH 109| | scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation]; 110| |#else 111| | scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:kCGImagePropertyOrientationUp]; 112| 0|#endif 113| 0| } 114| 1| SDImageCopyAssociatedObject(image, scaledImage); 115| 1| 116| 1| return scaledImage; 117| 1|} 118| | 119| |#pragma mark - Context option 120| | 121| |SDWebImageContextOption const SDWebImageContextSetImageOperationKey = @"setImageOperationKey"; 122| |SDWebImageContextOption const SDWebImageContextCustomManager = @"customManager"; 123| |SDWebImageContextOption const SDWebImageContextImageCache = @"imageCache"; 124| |SDWebImageContextOption const SDWebImageContextImageLoader = @"imageLoader"; 125| |SDWebImageContextOption const SDWebImageContextImageCoder = @"imageCoder"; 126| |SDWebImageContextOption const SDWebImageContextImageTransformer = @"imageTransformer"; 127| |SDWebImageContextOption const SDWebImageContextImageScaleFactor = @"imageScaleFactor"; 128| |SDWebImageContextOption const SDWebImageContextImagePreserveAspectRatio = @"imagePreserveAspectRatio"; 129| |SDWebImageContextOption const SDWebImageContextImageThumbnailPixelSize = @"imageThumbnailPixelSize"; 130| |SDWebImageContextOption const SDWebImageContextQueryCacheType = @"queryCacheType"; 131| |SDWebImageContextOption const SDWebImageContextStoreCacheType = @"storeCacheType"; 132| |SDWebImageContextOption const SDWebImageContextOriginalQueryCacheType = @"originalQueryCacheType"; 133| |SDWebImageContextOption const SDWebImageContextOriginalStoreCacheType = @"originalStoreCacheType"; 134| |SDWebImageContextOption const SDWebImageContextAnimatedImageClass = @"animatedImageClass"; 135| |SDWebImageContextOption const SDWebImageContextDownloadRequestModifier = @"downloadRequestModifier"; 136| |SDWebImageContextOption const SDWebImageContextDownloadResponseModifier = @"downloadResponseModifier"; 137| |SDWebImageContextOption const SDWebImageContextDownloadDecryptor = @"downloadDecryptor"; 138| |SDWebImageContextOption const SDWebImageContextCacheKeyFilter = @"cacheKeyFilter"; 139| |SDWebImageContextOption const SDWebImageContextCacheSerializer = @"cacheSerializer"; /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageDownloader.h" 10| |#import "SDWebImageDownloaderConfig.h" 11| |#import "SDWebImageDownloaderOperation.h" 12| |#import "SDWebImageError.h" 13| |#import "SDInternalMacros.h" 14| | 15| |NSNotificationName const SDWebImageDownloadStartNotification = @"SDWebImageDownloadStartNotification"; 16| |NSNotificationName const SDWebImageDownloadReceiveResponseNotification = @"SDWebImageDownloadReceiveResponseNotification"; 17| |NSNotificationName const SDWebImageDownloadStopNotification = @"SDWebImageDownloadStopNotification"; 18| |NSNotificationName const SDWebImageDownloadFinishNotification = @"SDWebImageDownloadFinishNotification"; 19| | 20| |static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; 21| | 22| |@interface SDWebImageDownloadToken () 23| | 24| |@property (nonatomic, strong, nullable, readwrite) NSURL *url; 25| |@property (nonatomic, strong, nullable, readwrite) NSURLRequest *request; 26| |@property (nonatomic, strong, nullable, readwrite) NSURLResponse *response; 27| |@property (nonatomic, strong, nullable, readwrite) NSURLSessionTaskMetrics *metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); 28| |@property (nonatomic, weak, nullable, readwrite) id downloadOperationCancelToken; 29| |@property (nonatomic, weak, nullable) NSOperation *downloadOperation; 30| |@property (nonatomic, assign, getter=isCancelled) BOOL cancelled; 31| | 32| |- (nonnull instancetype)init NS_UNAVAILABLE; 33| |+ (nonnull instancetype)new NS_UNAVAILABLE; 34| |- (nonnull instancetype)initWithDownloadOperation:(nullable NSOperation *)downloadOperation; 35| | 36| |@end 37| | 38| |@interface SDWebImageDownloader () 39| | 40| |@property (strong, nonatomic, nonnull) NSOperationQueue *downloadQueue; 41| |@property (strong, nonatomic, nonnull) NSMutableDictionary *> *URLOperations; 42| |@property (strong, nonatomic, nullable) NSMutableDictionary *HTTPHeaders; 43| |@property (strong, nonatomic, nonnull) dispatch_semaphore_t HTTPHeadersLock; // A lock to keep the access to `HTTPHeaders` thread-safe 44| |@property (strong, nonatomic, nonnull) dispatch_semaphore_t operationsLock; // A lock to keep the access to `URLOperations` thread-safe 45| | 46| |// The session in which data tasks will run 47| |@property (strong, nonatomic) NSURLSession *session; 48| | 49| |@end 50| | 51| |@implementation SDWebImageDownloader 52| | 53| 1|+ (void)initialize { 54| 1| // Bind SDNetworkActivityIndicator if available (download it here: http://github.com/rs/SDNetworkActivityIndicator ) 55| 1| // To use it, just add #import "SDNetworkActivityIndicator.h" in addition to the SDWebImage import 56| 1| if (NSClassFromString(@"SDNetworkActivityIndicator")) { 57| 0| 58| 0|#pragma clang diagnostic push 59| 0|#pragma clang diagnostic ignored "-Warc-performSelector-leaks" 60| 0| id activityIndicator = [NSClassFromString(@"SDNetworkActivityIndicator") performSelector:NSSelectorFromString(@"sharedActivityIndicator")]; 61| 0|#pragma clang diagnostic pop 62| 0| 63| 0| // Remove observer in case it was previously added. 64| 0| [[NSNotificationCenter defaultCenter] removeObserver:activityIndicator name:SDWebImageDownloadStartNotification object:nil]; 65| 0| [[NSNotificationCenter defaultCenter] removeObserver:activityIndicator name:SDWebImageDownloadStopNotification object:nil]; 66| 0| 67| 0| [[NSNotificationCenter defaultCenter] addObserver:activityIndicator 68| 0| selector:NSSelectorFromString(@"startActivity") 69| 0| name:SDWebImageDownloadStartNotification object:nil]; 70| 0| [[NSNotificationCenter defaultCenter] addObserver:activityIndicator 71| 0| selector:NSSelectorFromString(@"stopActivity") 72| 0| name:SDWebImageDownloadStopNotification object:nil]; 73| 0| } 74| 1|} 75| | 76| 53|+ (nonnull instancetype)sharedDownloader { 77| 53| static dispatch_once_t once; 78| 53| static id instance; 79| 53| dispatch_once(&once, ^{ 80| 1| instance = [self new]; 81| 1| }); 82| 53| return instance; 83| 53|} 84| | 85| 7|- (nonnull instancetype)init { 86| 7| return [self initWithConfig:SDWebImageDownloaderConfig.defaultDownloaderConfig]; 87| 7|} 88| | 89| 11|- (instancetype)initWithConfig:(SDWebImageDownloaderConfig *)config { 90| 11| self = [super init]; 91| 11| if (self) { 92| 11| if (!config) { 93| 1| config = SDWebImageDownloaderConfig.defaultDownloaderConfig; 94| 1| } 95| 11| _config = [config copy]; 96| 11| [_config addObserver:self forKeyPath:NSStringFromSelector(@selector(maxConcurrentDownloads)) options:0 context:SDWebImageDownloaderContext]; 97| 11| _downloadQueue = [NSOperationQueue new]; 98| 11| _downloadQueue.maxConcurrentOperationCount = _config.maxConcurrentDownloads; 99| 11| _downloadQueue.name = @"com.hackemist.SDWebImageDownloader"; 100| 11| _URLOperations = [NSMutableDictionary new]; 101| 11| NSMutableDictionary *headerDictionary = [NSMutableDictionary dictionary]; 102| 11| NSString *userAgent = nil; 103| |#if SD_UIKIT 104| | // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 105| | userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]]; 106| |#elif SD_WATCH 107| | // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 108| | userAgent = [NSString stringWithFormat:@"%@/%@ (%@; watchOS %@; Scale/%0.2f)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[WKInterfaceDevice currentDevice] model], [[WKInterfaceDevice currentDevice] systemVersion], [[WKInterfaceDevice currentDevice] screenScale]]; 109| |#elif SD_MAC 110| 11| userAgent = [NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleExecutableKey] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleIdentifierKey], [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"] ?: [[NSBundle mainBundle] infoDictionary][(__bridge NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]; 111| 11|#endif 112| 11| if (userAgent) { 113| 11| if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) { 114| 0| NSMutableString *mutableUserAgent = [userAgent mutableCopy]; 115| 0| if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, (__bridge CFStringRef)@"Any-Latin; Latin-ASCII; [:^ASCII:] Remove", false)) { 116| 0| userAgent = mutableUserAgent; 117| 0| } 118| 0| } 119| 11| headerDictionary[@"User-Agent"] = userAgent; 120| 11| } 121| 11| headerDictionary[@"Accept"] = @"image/*,*/*;q=0.8"; 122| 11| _HTTPHeaders = headerDictionary; 123| 11| _HTTPHeadersLock = dispatch_semaphore_create(1); 124| 11| _operationsLock = dispatch_semaphore_create(1); 125| 11| NSURLSessionConfiguration *sessionConfiguration = _config.sessionConfiguration; 126| 11| if (!sessionConfiguration) { 127| 11| sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; 128| 11| } 129| 11| /** 130| 11| * Create the session for this task 131| 11| * We send nil as delegate queue so that the session creates a serial operation queue for performing all delegate 132| 11| * method calls and completion handler calls. 133| 11| */ 134| 11| _session = [NSURLSession sessionWithConfiguration:sessionConfiguration 135| 11| delegate:self 136| 11| delegateQueue:nil]; 137| 11| } 138| 11| return self; 139| 11|} 140| | 141| 8|- (void)dealloc { 142| 8| [self.session invalidateAndCancel]; 143| 8| self.session = nil; 144| 8| 145| 8| [self.downloadQueue cancelAllOperations]; 146| 8| [self.config removeObserver:self forKeyPath:NSStringFromSelector(@selector(maxConcurrentDownloads)) context:SDWebImageDownloaderContext]; 147| 8|} 148| | 149| 8|- (void)invalidateSessionAndCancel:(BOOL)cancelPendingOperations { 150| 8| if (self == [SDWebImageDownloader sharedDownloader]) { 151| 0| return; 152| 0| } 153| 8| if (cancelPendingOperations) { 154| 8| [self.session invalidateAndCancel]; 155| 8| } else { 156| 0| [self.session finishTasksAndInvalidate]; 157| 0| } 158| 8|} 159| | 160| 2|- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(nullable NSString *)field { 161| 2| if (!field) { 162| 0| return; 163| 0| } 164| 2| SD_LOCK(self.HTTPHeadersLock); 165| 2| [self.HTTPHeaders setValue:value forKey:field]; 166| 2| SD_UNLOCK(self.HTTPHeadersLock); 167| 2|} 168| | 169| 3|- (nullable NSString *)valueForHTTPHeaderField:(nullable NSString *)field { 170| 3| if (!field) { 171| 0| return nil; 172| 0| } 173| 3| SD_LOCK(self.HTTPHeadersLock); 174| 3| NSString *value = [self.HTTPHeaders objectForKey:field]; 175| 3| SD_UNLOCK(self.HTTPHeadersLock); 176| 3| return value; 177| 3|} 178| | 179| |- (nullable SDWebImageDownloadToken *)downloadImageWithURL:(NSURL *)url 180| 3| completed:(SDWebImageDownloaderCompletedBlock)completedBlock { 181| 3| return [self downloadImageWithURL:url options:0 progress:nil completed:completedBlock]; 182| 3|} 183| | 184| |- (nullable SDWebImageDownloadToken *)downloadImageWithURL:(NSURL *)url 185| | options:(SDWebImageDownloaderOptions)options 186| | progress:(SDWebImageDownloaderProgressBlock)progressBlock 187| 39| completed:(SDWebImageDownloaderCompletedBlock)completedBlock { 188| 39| return [self downloadImageWithURL:url options:options context:nil progress:progressBlock completed:completedBlock]; 189| 39|} 190| | 191| |- (nullable SDWebImageDownloadToken *)downloadImageWithURL:(nullable NSURL *)url 192| | options:(SDWebImageDownloaderOptions)options 193| | context:(nullable SDWebImageContext *)context 194| | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock 195| 85| completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock { 196| 85| // The URL will be used as the key to the callbacks dictionary so it cannot be nil. If it is nil immediately call the completed block with no image or data. 197| 85| if (url == nil) { 198| 1| if (completedBlock) { 199| 1| NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidURL userInfo:@{NSLocalizedDescriptionKey : @"Image url is nil"}]; 200| 1| completedBlock(nil, nil, error, YES); 201| 1| } 202| 1| return nil; 203| 1| } 204| 84| 205| 84| SD_LOCK(self.operationsLock); 206| 84| id downloadOperationCancelToken; 207| 84| NSOperation *operation = [self.URLOperations objectForKey:url]; 208| 84| // There is a case that the operation may be marked as finished or cancelled, but not been removed from `self.URLOperations`. 209| 84| if (!operation || operation.isFinished || operation.isCancelled) { 210| 83| operation = [self createDownloaderOperationWithUrl:url options:options context:context]; 211| 83| if (!operation) { 212| 1| SD_UNLOCK(self.operationsLock); 213| 1| if (completedBlock) { 214| 1| NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadOperation userInfo:@{NSLocalizedDescriptionKey : @"Downloader operation is nil"}]; 215| 1| completedBlock(nil, nil, error, YES); 216| 1| } 217| 1| return nil; 218| 1| } 219| 82| @weakify(self); 220| 82| operation.completionBlock = ^{ 221| 81| @strongify(self); 222| 81| if (!self) { 223| 0| return; 224| 0| } 225| 81| SD_LOCK(self.operationsLock); 226| 81| [self.URLOperations removeObjectForKey:url]; 227| 81| SD_UNLOCK(self.operationsLock); 228| 81| }; 229| 82| self.URLOperations[url] = operation; 230| 82| // Add the handlers before submitting to operation queue, avoid the race condition that operation finished before setting handlers. 231| 82| downloadOperationCancelToken = [operation addHandlersForProgress:progressBlock completed:completedBlock]; 232| 82| // Add operation to operation queue only after all configuration done according to Apple's doc. 233| 82| // `addOperation:` does not synchronously execute the `operation.completionBlock` so this will not cause deadlock. 234| 82| [self.downloadQueue addOperation:operation]; 235| 82| } else { 236| 1| // When we reuse the download operation to attach more callbacks, there may be thread safe issue because the getter of callbacks may in another queue (decoding queue or delegate queue) 237| 1| // So we lock the operation here, and in `SDWebImageDownloaderOperation`, we use `@synchonzied (self)`, to ensure the thread safe between these two classes. 238| 1| @synchronized (operation) { 239| 1| downloadOperationCancelToken = [operation addHandlersForProgress:progressBlock completed:completedBlock]; 240| 1| } 241| 1| if (!operation.isExecuting) { 242| 1| if (options & SDWebImageDownloaderHighPriority) { 243| 0| operation.queuePriority = NSOperationQueuePriorityHigh; 244| 1| } else if (options & SDWebImageDownloaderLowPriority) { 245| 0| operation.queuePriority = NSOperationQueuePriorityLow; 246| 1| } else { 247| 1| operation.queuePriority = NSOperationQueuePriorityNormal; 248| 1| } 249| 1| } 250| 1| } 251| 84| SD_UNLOCK(self.operationsLock); 252| 83| 253| 83| SDWebImageDownloadToken *token = [[SDWebImageDownloadToken alloc] initWithDownloadOperation:operation]; 254| 83| token.url = url; 255| 83| token.request = operation.request; 256| 83| token.downloadOperationCancelToken = downloadOperationCancelToken; 257| 83| 258| 83| return token; 259| 84|} 260| | 261| |- (nullable NSOperation *)createDownloaderOperationWithUrl:(nonnull NSURL *)url 262| | options:(SDWebImageDownloaderOptions)options 263| 83| context:(nullable SDWebImageContext *)context { 264| 83| NSTimeInterval timeoutInterval = self.config.downloadTimeout; 265| 83| if (timeoutInterval == 0.0) { 266| 0| timeoutInterval = 15.0; 267| 0| } 268| 83| 269| 83| // In order to prevent from potential duplicate caching (NSURLCache + SDImageCache) we disable the cache for image requests if told otherwise 270| 83| NSURLRequestCachePolicy cachePolicy = options & SDWebImageDownloaderUseNSURLCache ? NSURLRequestUseProtocolCachePolicy : NSURLRequestReloadIgnoringLocalCacheData; 271| 83| NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:cachePolicy timeoutInterval:timeoutInterval]; 272| 83| mutableRequest.HTTPShouldHandleCookies = SD_OPTIONS_CONTAINS(options, SDWebImageDownloaderHandleCookies); 273| 83| mutableRequest.HTTPShouldUsePipelining = YES; 274| 83| SD_LOCK(self.HTTPHeadersLock); 275| 83| mutableRequest.allHTTPHeaderFields = self.HTTPHeaders; 276| 83| SD_UNLOCK(self.HTTPHeadersLock); 277| 83| 278| 83| // Context Option 279| 83| SDWebImageMutableContext *mutableContext; 280| 83| if (context) { 281| 17| mutableContext = [context mutableCopy]; 282| 66| } else { 283| 66| mutableContext = [NSMutableDictionary dictionary]; 284| 66| } 285| 83| 286| 83| // Request Modifier 287| 83| id requestModifier; 288| 83| if ([context valueForKey:SDWebImageContextDownloadRequestModifier]) { 289| 0| requestModifier = [context valueForKey:SDWebImageContextDownloadRequestModifier]; 290| 83| } else { 291| 83| requestModifier = self.requestModifier; 292| 83| } 293| 83| 294| 83| NSURLRequest *request; 295| 83| if (requestModifier) { 296| 2| NSURLRequest *modifiedRequest = [requestModifier modifiedRequestWithRequest:[mutableRequest copy]]; 297| 2| // If modified request is nil, early return 298| 2| if (!modifiedRequest) { 299| 1| return nil; 300| 1| } else { 301| 1| request = [modifiedRequest copy]; 302| 1| } 303| 81| } else { 304| 81| request = [mutableRequest copy]; 305| 81| } 306| 83| // Response Modifier 307| 83| id responseModifier; 308| 82| if ([context valueForKey:SDWebImageContextDownloadResponseModifier]) { 309| 1| responseModifier = [context valueForKey:SDWebImageContextDownloadResponseModifier]; 310| 81| } else { 311| 81| responseModifier = self.responseModifier; 312| 81| } 313| 82| if (responseModifier) { 314| 2| mutableContext[SDWebImageContextDownloadResponseModifier] = responseModifier; 315| 2| } 316| 82| // Decryptor 317| 82| id decryptor; 318| 82| if ([context valueForKey:SDWebImageContextDownloadDecryptor]) { 319| 2| decryptor = [context valueForKey:SDWebImageContextDownloadDecryptor]; 320| 80| } else { 321| 80| decryptor = self.decryptor; 322| 80| } 323| 82| if (decryptor) { 324| 3| mutableContext[SDWebImageContextDownloadDecryptor] = decryptor; 325| 3| } 326| 82| 327| 82| context = [mutableContext copy]; 328| 82| 329| 82| // Operation Class 330| 82| Class operationClass = self.config.operationClass; 331| 82| if (operationClass && [operationClass isSubclassOfClass:[NSOperation class]] && [operationClass conformsToProtocol:@protocol(SDWebImageDownloaderOperation)]) { 332| 1| // Custom operation class 333| 81| } else { 334| 81| operationClass = [SDWebImageDownloaderOperation class]; 335| 81| } 336| 82| NSOperation *operation = [[operationClass alloc] initWithRequest:request inSession:self.session options:options context:context]; 337| 82| 338| 82| if ([operation respondsToSelector:@selector(setCredential:)]) { 339| 81| if (self.config.urlCredential) { 340| 0| operation.credential = self.config.urlCredential; 341| 81| } else if (self.config.username && self.config.password) { 342| 10| operation.credential = [NSURLCredential credentialWithUser:self.config.username password:self.config.password persistence:NSURLCredentialPersistenceForSession]; 343| 10| } 344| 81| } 345| 82| 346| 82| if ([operation respondsToSelector:@selector(setMinimumProgressInterval:)]) { 347| 81| operation.minimumProgressInterval = MIN(MAX(self.config.minimumProgressInterval, 0), 1); 348| 81| } 349| 82| 350| 82| if (options & SDWebImageDownloaderHighPriority) { 351| 0| operation.queuePriority = NSOperationQueuePriorityHigh; 352| 82| } else if (options & SDWebImageDownloaderLowPriority) { 353| 25| operation.queuePriority = NSOperationQueuePriorityLow; 354| 25| } 355| 82| 356| 82| if (self.config.executionOrder == SDWebImageDownloaderLIFOExecutionOrder) { 357| 14| // Emulate LIFO execution order by systematically, each previous adding operation can dependency the new operation 358| 14| // This can gurantee the new operation to be execulated firstly, even if when some operations finished, meanwhile you appending new operations 359| 14| // Just make last added operation dependents new operation can not solve this problem. See test case #test15DownloaderLIFOExecutionOrder 360| 84| for (NSOperation *pendingOperation in self.downloadQueue.operations) { 361| 84| [pendingOperation addDependency:operation]; 362| 84| } 363| 14| } 364| 82| 365| 82| return operation; 366| 83|} 367| | 368| 1|- (void)cancelAllDownloads { 369| 1| [self.downloadQueue cancelAllOperations]; 370| 1|} 371| | 372| |#pragma mark - Properties 373| | 374| 0|- (BOOL)isSuspended { 375| 0| return self.downloadQueue.isSuspended; 376| 0|} 377| | 378| 0|- (void)setSuspended:(BOOL)suspended { 379| 0| self.downloadQueue.suspended = suspended; 380| 0|} 381| | 382| 5|- (NSUInteger)currentDownloadCount { 383| 5| return self.downloadQueue.operationCount; 384| 5|} 385| | 386| 0|- (NSURLSessionConfiguration *)sessionConfiguration { 387| 0| return self.session.configuration; 388| 0|} 389| | 390| |#pragma mark - KVO 391| | 392| 2|- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 393| 2| if (context == SDWebImageDownloaderContext) { 394| 2| if ([keyPath isEqualToString:NSStringFromSelector(@selector(maxConcurrentDownloads))]) { 395| 2| self.downloadQueue.maxConcurrentOperationCount = self.config.maxConcurrentDownloads; 396| 2| } 397| 2| } else { 398| 0| [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; 399| 0| } 400| 2|} 401| | 402| |#pragma mark Helper methods 403| | 404| 410|- (NSOperation *)operationWithTask:(NSURLSessionTask *)task { 405| 410| NSOperation *returnOperation = nil; 406| 812| for (NSOperation *operation in self.downloadQueue.operations) { 407| 812| if ([operation respondsToSelector:@selector(dataTask)]) { 408| 805| // So we lock the operation here, and in `SDWebImageDownloaderOperation`, we use `@synchonzied (self)`, to ensure the thread safe between these two classes. 409| 805| NSURLSessionTask *operationTask; 410| 805| @synchronized (operation) { 411| 805| operationTask = operation.dataTask; 412| 805| } 413| 805| if (operationTask.taskIdentifier == task.taskIdentifier) { 414| 410| returnOperation = operation; 415| 410| break; 416| 410| } 417| 805| } 418| 812| } 419| 410| return returnOperation; 420| 410|} 421| | 422| |#pragma mark NSURLSessionDataDelegate 423| | 424| |- (void)URLSession:(NSURLSession *)session 425| | dataTask:(NSURLSessionDataTask *)dataTask 426| |didReceiveResponse:(NSURLResponse *)response 427| 77| completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { 428| 77| 429| 77| // Identify the operation that runs this task and pass it the delegate method 430| 77| NSOperation *dataOperation = [self operationWithTask:dataTask]; 431| 77| if ([dataOperation respondsToSelector:@selector(URLSession:dataTask:didReceiveResponse:completionHandler:)]) { 432| 77| [dataOperation URLSession:session dataTask:dataTask didReceiveResponse:response completionHandler:completionHandler]; 433| 77| } else { 434| 0| if (completionHandler) { 435| 0| completionHandler(NSURLSessionResponseAllow); 436| 0| } 437| 0| } 438| 77|} 439| | 440| 94|- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { 441| 94| 442| 94| // Identify the operation that runs this task and pass it the delegate method 443| 94| NSOperation *dataOperation = [self operationWithTask:dataTask]; 444| 94| if ([dataOperation respondsToSelector:@selector(URLSession:dataTask:didReceiveData:)]) { 445| 94| [dataOperation URLSession:session dataTask:dataTask didReceiveData:data]; 446| 94| } 447| 94|} 448| | 449| |- (void)URLSession:(NSURLSession *)session 450| | dataTask:(NSURLSessionDataTask *)dataTask 451| | willCacheResponse:(NSCachedURLResponse *)proposedResponse 452| 74| completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler { 453| 74| 454| 74| // Identify the operation that runs this task and pass it the delegate method 455| 74| NSOperation *dataOperation = [self operationWithTask:dataTask]; 456| 74| if ([dataOperation respondsToSelector:@selector(URLSession:dataTask:willCacheResponse:completionHandler:)]) { 457| 74| [dataOperation URLSession:session dataTask:dataTask willCacheResponse:proposedResponse completionHandler:completionHandler]; 458| 74| } else { 459| 0| if (completionHandler) { 460| 0| completionHandler(proposedResponse); 461| 0| } 462| 0| } 463| 74|} 464| | 465| |#pragma mark NSURLSessionTaskDelegate 466| | 467| 78|- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { 468| 78| 469| 78| // Identify the operation that runs this task and pass it the delegate method 470| 78| NSOperation *dataOperation = [self operationWithTask:task]; 471| 78| if ([dataOperation respondsToSelector:@selector(URLSession:task:didCompleteWithError:)]) { 472| 78| [dataOperation URLSession:session task:task didCompleteWithError:error]; 473| 78| } 474| 78|} 475| | 476| 1|- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler { 477| 1| 478| 1| // Identify the operation that runs this task and pass it the delegate method 479| 1| NSOperation *dataOperation = [self operationWithTask:task]; 480| 1| if ([dataOperation respondsToSelector:@selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)]) { 481| 0| [dataOperation URLSession:session task:task willPerformHTTPRedirection:response newRequest:request completionHandler:completionHandler]; 482| 1| } else { 483| 1| if (completionHandler) { 484| 1| completionHandler(request); 485| 1| } 486| 1| } 487| 1|} 488| | 489| 8|- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { 490| 8| 491| 8| // Identify the operation that runs this task and pass it the delegate method 492| 8| NSOperation *dataOperation = [self operationWithTask:task]; 493| 8| if ([dataOperation respondsToSelector:@selector(URLSession:task:didReceiveChallenge:completionHandler:)]) { 494| 8| [dataOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler]; 495| 8| } else { 496| 0| if (completionHandler) { 497| 0| completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil); 498| 0| } 499| 0| } 500| 8|} 501| | 502| 78|- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) { 503| 78| 504| 78| // Identify the operation that runs this task and pass it the delegate method 505| 78| NSOperation *dataOperation = [self operationWithTask:task]; 506| 78| if ([dataOperation respondsToSelector:@selector(URLSession:task:didFinishCollectingMetrics:)]) { 507| 78| [dataOperation URLSession:session task:task didFinishCollectingMetrics:metrics]; 508| 78| } 509| 78|} 510| | 511| |@end 512| | 513| |@implementation SDWebImageDownloadToken 514| | 515| 83|- (void)dealloc { 516| 83| [[NSNotificationCenter defaultCenter] removeObserver:self name:SDWebImageDownloadReceiveResponseNotification object:nil]; 517| 83| [[NSNotificationCenter defaultCenter] removeObserver:self name:SDWebImageDownloadStopNotification object:nil]; 518| 83|} 519| | 520| 83|- (instancetype)initWithDownloadOperation:(NSOperation *)downloadOperation { 521| 83| self = [super init]; 522| 83| if (self) { 523| 83| _downloadOperation = downloadOperation; 524| 83| [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadDidReceiveResponse:) name:SDWebImageDownloadReceiveResponseNotification object:downloadOperation]; 525| 83| [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadDidStop:) name:SDWebImageDownloadStopNotification object:downloadOperation]; 526| 83| } 527| 83| return self; 528| 83|} 529| | 530| 70|- (void)downloadDidReceiveResponse:(NSNotification *)notification { 531| 70| NSOperation *downloadOperation = notification.object; 532| 70| if (downloadOperation && downloadOperation == self.downloadOperation) { 533| 70| self.response = downloadOperation.response; 534| 70| } 535| 70|} 536| | 537| 70|- (void)downloadDidStop:(NSNotification *)notification { 538| 70| NSOperation *downloadOperation = notification.object; 539| 70| if (downloadOperation && downloadOperation == self.downloadOperation) { 540| 70| if ([downloadOperation respondsToSelector:@selector(metrics)]) { 541| 70| if (@available(iOS 10.0, tvOS 10.0, macOS 10.12, watchOS 3.0, *)) { 542| 70| self.metrics = downloadOperation.metrics; 543| 70| } 544| 70| } 545| 70| } 546| 70|} 547| | 548| 3|- (void)cancel { 549| 3| @synchronized (self) { 550| 3| if (self.isCancelled) { 551| 0| return; 552| 0| } 553| 3| self.cancelled = YES; 554| 3| [self.downloadOperation cancel:self.downloadOperationCancelToken]; 555| 3| self.downloadOperationCancelToken = nil; 556| 3| } 557| 3|} 558| | 559| |@end 560| | 561| |@implementation SDWebImageDownloader (SDImageLoader) 562| | 563| 57|- (BOOL)canRequestImageForURL:(NSURL *)url { 564| 57| if (!url) { 565| 0| return NO; 566| 0| } 567| 57| // Always pass YES to let URLSession or custom download operation to determine 568| 57| return YES; 569| 57|} 570| | 571| 43|- (id)requestImageWithURL:(NSURL *)url options:(SDWebImageOptions)options context:(SDWebImageContext *)context progress:(SDImageLoaderProgressBlock)progressBlock completed:(SDImageLoaderCompletedBlock)completedBlock { 572| 43| UIImage *cachedImage = context[SDWebImageContextLoaderCachedImage]; 573| 43| 574| 43| SDWebImageDownloaderOptions downloaderOptions = 0; 575| 43| if (options & SDWebImageLowPriority) downloaderOptions |= SDWebImageDownloaderLowPriority; 576| 43| if (options & SDWebImageProgressiveLoad) downloaderOptions |= SDWebImageDownloaderProgressiveLoad; 577| 43| if (options & SDWebImageRefreshCached) downloaderOptions |= SDWebImageDownloaderUseNSURLCache; 578| 43| if (options & SDWebImageContinueInBackground) downloaderOptions |= SDWebImageDownloaderContinueInBackground; 579| 43| if (options & SDWebImageHandleCookies) downloaderOptions |= SDWebImageDownloaderHandleCookies; 580| 43| if (options & SDWebImageAllowInvalidSSLCertificates) downloaderOptions |= SDWebImageDownloaderAllowInvalidSSLCertificates; 581| 43| if (options & SDWebImageHighPriority) downloaderOptions |= SDWebImageDownloaderHighPriority; 582| 43| if (options & SDWebImageScaleDownLargeImages) downloaderOptions |= SDWebImageDownloaderScaleDownLargeImages; 583| 43| if (options & SDWebImageAvoidDecodeImage) downloaderOptions |= SDWebImageDownloaderAvoidDecodeImage; 584| 43| if (options & SDWebImageDecodeFirstFrameOnly) downloaderOptions |= SDWebImageDownloaderDecodeFirstFrameOnly; 585| 43| if (options & SDWebImagePreloadAllFrames) downloaderOptions |= SDWebImageDownloaderPreloadAllFrames; 586| 43| if (options & SDWebImageMatchAnimatedImageClass) downloaderOptions |= SDWebImageDownloaderMatchAnimatedImageClass; 587| 43| 588| 43| if (cachedImage && options & SDWebImageRefreshCached) { 589| 2| // force progressive off if image already cached but forced refreshing 590| 2| downloaderOptions &= ~SDWebImageDownloaderProgressiveLoad; 591| 2| // ignore image read from NSURLCache if image if cached but force refreshing 592| 2| downloaderOptions |= SDWebImageDownloaderIgnoreCachedResponse; 593| 2| } 594| 43| 595| 43| return [self downloadImageWithURL:url options:downloaderOptions context:context progress:progressBlock completed:completedBlock]; 596| 43|} 597| | 598| 4|- (BOOL)shouldBlockFailedURLWithURL:(NSURL *)url error:(NSError *)error { 599| 4| BOOL shouldBlockFailedURL; 600| 4| // Filter the error domain and check error codes 601| 4| if ([error.domain isEqualToString:SDWebImageErrorDomain]) { 602| 4| shouldBlockFailedURL = ( error.code == SDWebImageErrorInvalidURL 603| 4| || error.code == SDWebImageErrorBadImageData); 604| 4| } else if ([error.domain isEqualToString:NSURLErrorDomain]) { 605| 0| shouldBlockFailedURL = ( error.code != NSURLErrorNotConnectedToInternet 606| 0| && error.code != NSURLErrorCancelled 607| 0| && error.code != NSURLErrorTimedOut 608| 0| && error.code != NSURLErrorInternationalRoamingOff 609| 0| && error.code != NSURLErrorDataNotAllowed 610| 0| && error.code != NSURLErrorCannotFindHost 611| 0| && error.code != NSURLErrorCannotConnectToHost 612| 0| && error.code != NSURLErrorNetworkConnectionLost); 613| 0| } else { 614| 0| shouldBlockFailedURL = NO; 615| 0| } 616| 4| return shouldBlockFailedURL; 617| 4|} 618| | 619| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageDownloaderConfig.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageDownloaderConfig.h" 10| | 11| |static SDWebImageDownloaderConfig * _defaultDownloaderConfig; 12| | 13| |@implementation SDWebImageDownloaderConfig 14| | 15| 10|+ (SDWebImageDownloaderConfig *)defaultDownloaderConfig { 16| 10| static dispatch_once_t onceToken; 17| 10| dispatch_once(&onceToken, ^{ 18| 1| _defaultDownloaderConfig = [SDWebImageDownloaderConfig new]; 19| 1| }); 20| 10| return _defaultDownloaderConfig; 21| 10|} 22| | 23| 13|- (instancetype)init { 24| 13| self = [super init]; 25| 13| if (self) { 26| 13| _maxConcurrentDownloads = 6; 27| 13| _downloadTimeout = 15.0; 28| 13| _executionOrder = SDWebImageDownloaderFIFOExecutionOrder; 29| 13| } 30| 13| return self; 31| 13|} 32| | 33| 11|- (id)copyWithZone:(NSZone *)zone { 34| 11| SDWebImageDownloaderConfig *config = [[[self class] allocWithZone:zone] init]; 35| 11| config.maxConcurrentDownloads = self.maxConcurrentDownloads; 36| 11| config.downloadTimeout = self.downloadTimeout; 37| 11| config.minimumProgressInterval = self.minimumProgressInterval; 38| 11| config.sessionConfiguration = [self.sessionConfiguration copyWithZone:zone]; 39| 11| config.operationClass = self.operationClass; 40| 11| config.executionOrder = self.executionOrder; 41| 11| config.urlCredential = self.urlCredential; 42| 11| config.username = self.username; 43| 11| config.password = self.password; 44| 11| 45| 11| return config; 46| 11|} 47| | 48| | 49| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDWebImageDownloaderDecryptor.h" 10| | 11| |@interface SDWebImageDownloaderDecryptor () 12| | 13| |@property (nonatomic, copy, nonnull) SDWebImageDownloaderDecryptorBlock block; 14| | 15| |@end 16| | 17| |@implementation SDWebImageDownloaderDecryptor 18| | 19| 3|- (instancetype)initWithBlock:(SDWebImageDownloaderDecryptorBlock)block { 20| 3| self = [super init]; 21| 3| if (self) { 22| 3| self.block = block; 23| 3| } 24| 3| return self; 25| 3|} 26| | 27| 3|+ (instancetype)decryptorWithBlock:(SDWebImageDownloaderDecryptorBlock)block { 28| 3| SDWebImageDownloaderDecryptor *decryptor = [[SDWebImageDownloaderDecryptor alloc] initWithBlock:block]; 29| 3| return decryptor; 30| 3|} 31| | 32| 3|- (nullable NSData *)decryptedDataWithData:(nonnull NSData *)data response:(nullable NSURLResponse *)response { 33| 3| if (!self.block) { 34| 0| return nil; 35| 0| } 36| 3| return self.block(data, response); 37| 3|} 38| | 39| |@end 40| | 41| |@implementation SDWebImageDownloaderDecryptor (Conveniences) 42| | 43| 1|+ (SDWebImageDownloaderDecryptor *)base64Decryptor { 44| 1| static SDWebImageDownloaderDecryptor *decryptor; 45| 1| static dispatch_once_t onceToken; 46| 1| dispatch_once(&onceToken, ^{ 47| 1| decryptor = [SDWebImageDownloaderDecryptor decryptorWithBlock:^NSData * _Nullable(NSData * _Nonnull data, NSURLResponse * _Nullable response) { 48| 1| NSData *modifiedData = [[NSData alloc] initWithBase64EncodedData:data options:NSDataBase64DecodingIgnoreUnknownCharacters]; 49| 1| return modifiedData; 50| 1| }]; 51| 1| }); 52| 1| return decryptor; 53| 1|} 54| | 55| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageDownloaderOperation.h" 10| |#import "SDWebImageError.h" 11| |#import "SDInternalMacros.h" 12| |#import "SDWebImageDownloaderResponseModifier.h" 13| |#import "SDWebImageDownloaderDecryptor.h" 14| | 15| |// iOS 8 Foundation.framework extern these symbol but the define is in CFNetwork.framework. We just fix this without import CFNetwork.framework 16| |#if ((__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0) || (__MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_11)) 17| |const float NSURLSessionTaskPriorityHigh = 0.75; 18| |const float NSURLSessionTaskPriorityDefault = 0.5; 19| |const float NSURLSessionTaskPriorityLow = 0.25; 20| |#endif 21| | 22| |static NSString *const kProgressCallbackKey = @"progress"; 23| |static NSString *const kCompletedCallbackKey = @"completed"; 24| | 25| |typedef NSMutableDictionary SDCallbacksDictionary; 26| | 27| |@interface SDWebImageDownloaderOperation () 28| | 29| |@property (strong, nonatomic, nonnull) NSMutableArray *callbackBlocks; 30| | 31| |@property (assign, nonatomic, readwrite) SDWebImageDownloaderOptions options; 32| |@property (copy, nonatomic, readwrite, nullable) SDWebImageContext *context; 33| | 34| |@property (assign, nonatomic, getter = isExecuting) BOOL executing; 35| |@property (assign, nonatomic, getter = isFinished) BOOL finished; 36| |@property (strong, nonatomic, nullable) NSMutableData *imageData; 37| |@property (copy, nonatomic, nullable) NSData *cachedData; // for `SDWebImageDownloaderIgnoreCachedResponse` 38| |@property (assign, nonatomic) NSUInteger expectedSize; // may be 0 39| |@property (assign, nonatomic) NSUInteger receivedSize; 40| |@property (strong, nonatomic, nullable, readwrite) NSURLResponse *response; 41| |@property (strong, nonatomic, nullable) NSError *responseError; 42| |@property (assign, nonatomic) double previousProgress; // previous progress percent 43| | 44| |@property (strong, nonatomic, nullable) id responseModifier; // modify original URLResponse 45| |@property (strong, nonatomic, nullable) id decryptor; // decrypt image data 46| | 47| |// This is weak because it is injected by whoever manages this session. If this gets nil-ed out, we won't be able to run 48| |// the task associated with this operation 49| |@property (weak, nonatomic, nullable) NSURLSession *unownedSession; 50| |// This is set if we're using not using an injected NSURLSession. We're responsible of invalidating this one 51| |@property (strong, nonatomic, nullable) NSURLSession *ownedSession; 52| | 53| |@property (strong, nonatomic, readwrite, nullable) NSURLSessionTask *dataTask; 54| | 55| |@property (strong, nonatomic, readwrite, nullable) NSURLSessionTaskMetrics *metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); 56| | 57| |@property (strong, nonatomic, nonnull) NSOperationQueue *coderQueue; // the serial operation queue to do image decoding 58| |#if SD_UIKIT 59| |@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundTaskId; 60| |#endif 61| | 62| |@end 63| | 64| |@implementation SDWebImageDownloaderOperation 65| | 66| |@synthesize executing = _executing; 67| |@synthesize finished = _finished; 68| | 69| 0|- (nonnull instancetype)init { 70| 0| return [self initWithRequest:nil inSession:nil options:0]; 71| 0|} 72| | 73| 1|- (instancetype)initWithRequest:(NSURLRequest *)request inSession:(NSURLSession *)session options:(SDWebImageDownloaderOptions)options { 74| 1| return [self initWithRequest:request inSession:session options:options context:nil]; 75| 1|} 76| | 77| |- (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request 78| | inSession:(nullable NSURLSession *)session 79| | options:(SDWebImageDownloaderOptions)options 80| 82| context:(nullable SDWebImageContext *)context { 81| 82| if ((self = [super init])) { 82| 82| _request = [request copy]; 83| 82| _options = options; 84| 82| _context = [context copy]; 85| 82| _callbackBlocks = [NSMutableArray new]; 86| 82| _responseModifier = context[SDWebImageContextDownloadResponseModifier]; 87| 82| _decryptor = context[SDWebImageContextDownloadDecryptor]; 88| 82| _executing = NO; 89| 82| _finished = NO; 90| 82| _expectedSize = 0; 91| 82| _unownedSession = session; 92| 82| _coderQueue = [NSOperationQueue new]; 93| 82| _coderQueue.maxConcurrentOperationCount = 1; 94| |#if SD_UIKIT 95| | _backgroundTaskId = UIBackgroundTaskInvalid; 96| |#endif 97| | } 98| 82| return self; 99| 82|} 100| | 101| |- (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock 102| 83| completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock { 103| 83| SDCallbacksDictionary *callbacks = [NSMutableDictionary new]; 104| 83| if (progressBlock) callbacks[kProgressCallbackKey] = [progressBlock copy]; 105| 83| if (completedBlock) callbacks[kCompletedCallbackKey] = [completedBlock copy]; 106| 83| @synchronized (self) { 107| 83| [self.callbackBlocks addObject:callbacks]; 108| 83| } 109| 83| return callbacks; 110| 83|} 111| | 112| 408|- (nullable NSArray *)callbacksForKey:(NSString *)key { 113| 408| NSMutableArray *callbacks; 114| 408| @synchronized (self) { 115| 408| callbacks = [[self.callbackBlocks valueForKey:key] mutableCopy]; 116| 408| } 117| 408| // We need to remove [NSNull null] because there might not always be a progress block for each callback 118| 408| [callbacks removeObjectIdenticalTo:[NSNull null]]; 119| 408| return [callbacks copy]; // strip mutability here 120| 408|} 121| | 122| 3|- (BOOL)cancel:(nullable id)token { 123| 3| if (!token) return NO; 124| 3| 125| 3| BOOL shouldCancel = NO; 126| 3| @synchronized (self) { 127| 3| NSMutableArray *tempCallbackBlocks = [self.callbackBlocks mutableCopy]; 128| 3| [tempCallbackBlocks removeObjectIdenticalTo:token]; 129| 3| if (tempCallbackBlocks.count == 0) { 130| 2| shouldCancel = YES; 131| 2| } 132| 3| } 133| 3| if (shouldCancel) { 134| 2| // Cancel operation running and callback last token's completion block 135| 2| [self cancel]; 136| 2| } else { 137| 1| // Only callback this token's completion block 138| 1| @synchronized (self) { 139| 1| [self.callbackBlocks removeObjectIdenticalTo:token]; 140| 1| } 141| 1| SDWebImageDownloaderCompletedBlock completedBlock = [token valueForKey:kCompletedCallbackKey]; 142| 1| dispatch_main_async_safe(^{ 143| 1| if (completedBlock) { 144| 1| completedBlock(nil, nil, [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user during sending the request"}], YES); 145| 1| } 146| 1| }); 147| 1| } 148| 3| return shouldCancel; 149| 3|} 150| | 151| 82|- (void)start { 152| 82| @synchronized (self) { 153| 82| if (self.isCancelled) { 154| 3| self.finished = YES; 155| 3| // Operation cancelled by user before sending the request 156| 3| [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user before sending the request"}]]; 157| 3| [self reset]; 158| 3| return; 159| 3| } 160| 79| 161| |#if SD_UIKIT 162| | Class UIApplicationClass = NSClassFromString(@"UIApplication"); 163| | BOOL hasApplication = UIApplicationClass && [UIApplicationClass respondsToSelector:@selector(sharedApplication)]; 164| | if (hasApplication && [self shouldContinueWhenAppEntersBackground]) { 165| | __weak typeof(self) wself = self; 166| | UIApplication * app = [UIApplicationClass performSelector:@selector(sharedApplication)]; 167| | self.backgroundTaskId = [app beginBackgroundTaskWithExpirationHandler:^{ 168| | [wself cancel]; 169| | }]; 170| | } 171| |#endif 172| 79| NSURLSession *session = self.unownedSession; 173| 79| if (!session) { 174| 1| NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; 175| 1| sessionConfig.timeoutIntervalForRequest = 15; 176| 1| 177| 1| /** 178| 1| * Create the session for this task 179| 1| * We send nil as delegate queue so that the session creates a serial operation queue for performing all delegate 180| 1| * method calls and completion handler calls. 181| 1| */ 182| 1| session = [NSURLSession sessionWithConfiguration:sessionConfig 183| 1| delegate:self 184| 1| delegateQueue:nil]; 185| 1| self.ownedSession = session; 186| 1| } 187| 79| 188| 79| if (self.options & SDWebImageDownloaderIgnoreCachedResponse) { 189| 2| // Grab the cached data for later check 190| 2| NSURLCache *URLCache = session.configuration.URLCache; 191| 2| if (!URLCache) { 192| 0| URLCache = [NSURLCache sharedURLCache]; 193| 0| } 194| 2| NSCachedURLResponse *cachedResponse; 195| 2| // NSURLCache's `cachedResponseForRequest:` is not thread-safe, see https://developer.apple.com/documentation/foundation/nsurlcache#2317483 196| 2| @synchronized (URLCache) { 197| 2| cachedResponse = [URLCache cachedResponseForRequest:self.request]; 198| 2| } 199| 2| if (cachedResponse) { 200| 2| self.cachedData = cachedResponse.data; 201| 2| } 202| 2| } 203| 79| 204| 79| self.dataTask = [session dataTaskWithRequest:self.request]; 205| 79| self.executing = YES; 206| 79| } 207| 79| 208| 79| if (self.dataTask) { 209| 79| if (self.options & SDWebImageDownloaderHighPriority) { 210| 0| self.dataTask.priority = NSURLSessionTaskPriorityHigh; 211| 0| self.coderQueue.qualityOfService = NSQualityOfServiceUserInteractive; 212| 79| } else if (self.options & SDWebImageDownloaderLowPriority) { 213| 25| self.dataTask.priority = NSURLSessionTaskPriorityLow; 214| 25| self.coderQueue.qualityOfService = NSQualityOfServiceBackground; 215| 54| } else { 216| 54| self.dataTask.priority = NSURLSessionTaskPriorityDefault; 217| 54| self.coderQueue.qualityOfService = NSQualityOfServiceDefault; 218| 54| } 219| 79| [self.dataTask resume]; 220| 79| for (SDWebImageDownloaderProgressBlock progressBlock in [self callbacksForKey:kProgressCallbackKey]) { 221| 8| progressBlock(0, NSURLResponseUnknownLength, self.request.URL); 222| 8| } 223| 79| __block typeof(self) strongSelf = self; 224| 79| dispatch_async(dispatch_get_main_queue(), ^{ 225| 79| [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStartNotification object:strongSelf]; 226| 79| }); 227| 79| } else { 228| 0| [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadOperation userInfo:@{NSLocalizedDescriptionKey : @"Task can't be initialized"}]]; 229| 0| [self done]; 230| 0| } 231| 79|} 232| | 233| 3|- (void)cancel { 234| 3| @synchronized (self) { 235| 3| [self cancelInternal]; 236| 3| } 237| 3|} 238| | 239| 3|- (void)cancelInternal { 240| 3| if (self.isFinished) return; 241| 3| [super cancel]; 242| 3| 243| 3| if (self.dataTask) { 244| 0| [self.dataTask cancel]; 245| 0| __block typeof(self) strongSelf = self; 246| 0| dispatch_async(dispatch_get_main_queue(), ^{ 247| 0| [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:strongSelf]; 248| 0| }); 249| 0| 250| 0| // As we cancelled the task, its callback won't be called and thus won't 251| 0| // maintain the isFinished and isExecuting flags. 252| 0| if (self.isExecuting) self.executing = NO; 253| 0| if (!self.isFinished) self.finished = YES; 254| 3| } else { 255| 3| // Operation cancelled by user during sending the request 256| 3| [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user during sending the request"}]]; 257| 3| } 258| 3| 259| 3| [self reset]; 260| 3|} 261| | 262| 79|- (void)done { 263| 79| self.finished = YES; 264| 79| self.executing = NO; 265| 79| [self reset]; 266| 79|} 267| | 268| 85|- (void)reset { 269| 85| @synchronized (self) { 270| 85| [self.callbackBlocks removeAllObjects]; 271| 85| self.dataTask = nil; 272| 85| 273| 85| if (self.ownedSession) { 274| 1| [self.ownedSession invalidateAndCancel]; 275| 1| self.ownedSession = nil; 276| 1| } 277| 85| 278| |#if SD_UIKIT 279| | if (self.backgroundTaskId != UIBackgroundTaskInvalid) { 280| | // If backgroundTaskId != UIBackgroundTaskInvalid, sharedApplication is always exist 281| | UIApplication * app = [UIApplication performSelector:@selector(sharedApplication)]; 282| | [app endBackgroundTask:self.backgroundTaskId]; 283| | self.backgroundTaskId = UIBackgroundTaskInvalid; 284| | } 285| |#endif 286| | } 287| 85|} 288| | 289| 82|- (void)setFinished:(BOOL)finished { 290| 82| [self willChangeValueForKey:@"isFinished"]; 291| 82| _finished = finished; 292| 82| [self didChangeValueForKey:@"isFinished"]; 293| 82|} 294| | 295| 158|- (void)setExecuting:(BOOL)executing { 296| 158| [self willChangeValueForKey:@"isExecuting"]; 297| 158| _executing = executing; 298| 158| [self didChangeValueForKey:@"isExecuting"]; 299| 158|} 300| | 301| 0|- (BOOL)isConcurrent { 302| 0| return YES; 303| 0|} 304| | 305| |#pragma mark NSURLSessionDataDelegate 306| | 307| |- (void)URLSession:(NSURLSession *)session 308| | dataTask:(NSURLSessionDataTask *)dataTask 309| |didReceiveResponse:(NSURLResponse *)response 310| 78| completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { 311| 78| NSURLSessionResponseDisposition disposition = NSURLSessionResponseAllow; 312| 78| 313| 78| // Check response modifier, if return nil, will marked as cancelled. 314| 78| BOOL valid = YES; 315| 78| if (self.responseModifier && response) { 316| 2| response = [self.responseModifier modifiedResponseWithResponse:response]; 317| 2| if (!response) { 318| 1| valid = NO; 319| 1| self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadResponse userInfo:@{NSLocalizedDescriptionKey : @"Download marked as failed because response is nil"}]; 320| 1| } 321| 2| } 322| 78| 323| 78| NSInteger expected = (NSInteger)response.expectedContentLength; 324| 78| expected = expected > 0 ? expected : 0; 325| 78| self.expectedSize = expected; 326| 78| self.response = response; 327| 78| 328| 78| NSInteger statusCode = [response respondsToSelector:@selector(statusCode)] ? ((NSHTTPURLResponse *)response).statusCode : 200; 329| 78| // Status code should between [200,400) 330| 78| BOOL statusCodeValid = statusCode >= 200 && statusCode < 400; 331| 78| if (!statusCodeValid) { 332| 3| valid = NO; 333| 3| self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadStatusCode userInfo:@{NSLocalizedDescriptionKey : @"Download marked as failed because response status code is not in 200-400", SDWebImageErrorDownloadStatusCodeKey : @(statusCode)}]; 334| 3| } 335| 78| //'304 Not Modified' is an exceptional one 336| 78| //URLSession current behavior will return 200 status code when the server respond 304 and URLCache hit. But this is not a standard behavior and we just add a check 337| 78| if (statusCode == 304 && !self.cachedData) { 338| 0| valid = NO; 339| 0| self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCacheNotModified userInfo:@{NSLocalizedDescriptionKey : @"Download response status code is 304 not modified and ignored"}]; 340| 0| } 341| 78| 342| 78| if (valid) { 343| 74| for (SDWebImageDownloaderProgressBlock progressBlock in [self callbacksForKey:kProgressCallbackKey]) { 344| 8| progressBlock(0, expected, self.request.URL); 345| 8| } 346| 74| } else { 347| 4| // Status code invalid and marked as cancelled. Do not call `[self.dataTask cancel]` which may mass up URLSession life cycle 348| 4| disposition = NSURLSessionResponseCancel; 349| 4| } 350| 78| __block typeof(self) strongSelf = self; 351| 78| dispatch_async(dispatch_get_main_queue(), ^{ 352| 78| [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadReceiveResponseNotification object:strongSelf]; 353| 78| }); 354| 78| 355| 78| if (completionHandler) { 356| 78| completionHandler(disposition); 357| 78| } 358| 78|} 359| | 360| 95|- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { 361| 95| if (!self.imageData) { 362| 74| self.imageData = [[NSMutableData alloc] initWithCapacity:self.expectedSize]; 363| 74| } 364| 95| [self.imageData appendData:data]; 365| 95| 366| 95| self.receivedSize = self.imageData.length; 367| 95| if (self.expectedSize == 0) { 368| 0| // Unknown expectedSize, immediately call progressBlock and return 369| 0| for (SDWebImageDownloaderProgressBlock progressBlock in [self callbacksForKey:kProgressCallbackKey]) { 370| 0| progressBlock(self.receivedSize, self.expectedSize, self.request.URL); 371| 0| } 372| 0| return; 373| 0| } 374| 95| 375| 95| // Get the finish status 376| 95| BOOL finished = (self.receivedSize >= self.expectedSize); 377| 95| // Get the current progress 378| 95| double currentProgress = (double)self.receivedSize / (double)self.expectedSize; 379| 95| double previousProgress = self.previousProgress; 380| 95| double progressInterval = currentProgress - previousProgress; 381| 95| // Check if we need callback progress 382| 95| if (!finished && (progressInterval < self.minimumProgressInterval)) { 383| 5| return; 384| 5| } 385| 90| self.previousProgress = currentProgress; 386| 90| 387| 90| // Using data decryptor will disable the progressive decoding, since there are no support for progressive decrypt 388| 90| BOOL supportProgressive = (self.options & SDWebImageDownloaderProgressiveLoad) && !self.decryptor; 389| 90| if (supportProgressive) { 390| 12| // Get the image data 391| 12| NSData *imageData = [self.imageData copy]; 392| 12| 393| 12| // keep maximum one progressive decode process during download 394| 12| if (self.coderQueue.operationCount == 0) { 395| 8| // NSOperation have autoreleasepool, don't need to create extra one 396| 8| [self.coderQueue addOperationWithBlock:^{ 397| 7| UIImage *image = SDImageLoaderDecodeProgressiveImageData(imageData, self.request.URL, finished, self, [[self class] imageOptionsFromDownloaderOptions:self.options], self.context); 398| 7| if (image) { 399| 7| // We do not keep the progressive decoding image even when `finished`=YES. Because they are for view rendering but not take full function from downloader options. And some coders implementation may not keep consistent between progressive decoding and normal decoding. 400| 7| 401| 7| [self callCompletionBlocksWithImage:image imageData:nil error:nil finished:NO]; 402| 7| } 403| 7| }]; 404| 8| } 405| 12| } 406| 90| 407| 90| for (SDWebImageDownloaderProgressBlock progressBlock in [self callbacksForKey:kProgressCallbackKey]) { 408| 10| progressBlock(self.receivedSize, self.expectedSize, self.request.URL); 409| 10| } 410| 90|} 411| | 412| |- (void)URLSession:(NSURLSession *)session 413| | dataTask:(NSURLSessionDataTask *)dataTask 414| | willCacheResponse:(NSCachedURLResponse *)proposedResponse 415| 75| completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler { 416| 75| 417| 75| NSCachedURLResponse *cachedResponse = proposedResponse; 418| 75| 419| 75| if (!(self.options & SDWebImageDownloaderUseNSURLCache)) { 420| 71| // Prevents caching of responses 421| 71| cachedResponse = nil; 422| 71| } 423| 75| if (completionHandler) { 424| 75| completionHandler(cachedResponse); 425| 75| } 426| 75|} 427| | 428| |#pragma mark NSURLSessionTaskDelegate 429| | 430| 79|- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { 431| 79| // If we already cancel the operation or anything mark the operation finished, don't callback twice 432| 79| if (self.isFinished) return; 433| 79| 434| 79| @synchronized(self) { 435| 79| self.dataTask = nil; 436| 79| __block typeof(self) strongSelf = self; 437| 79| dispatch_async(dispatch_get_main_queue(), ^{ 438| 79| [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:strongSelf]; 439| 79| if (!error) { 440| 74| [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadFinishNotification object:strongSelf]; 441| 74| } 442| 79| }); 443| 79| } 444| 79| 445| 79| // make sure to call `[self done]` to mark operation as finished 446| 79| if (error) { 447| 5| // custom error instead of URLSession error 448| 5| if (self.responseError) { 449| 4| error = self.responseError; 450| 4| } 451| 5| [self callCompletionBlocksWithError:error]; 452| 5| [self done]; 453| 74| } else { 454| 74| if ([self callbacksForKey:kCompletedCallbackKey].count > 0) { 455| 73| NSData *imageData = [self.imageData copy]; 456| 73| self.imageData = nil; 457| 73| // data decryptor 458| 73| if (imageData && self.decryptor) { 459| 3| imageData = [self.decryptor decryptedDataWithData:imageData response:self.response]; 460| 3| } 461| 73| if (imageData) { 462| 72| /** if you specified to only use cached data via `SDWebImageDownloaderIgnoreCachedResponse`, 463| 72| * then we should check if the cached data is equal to image data 464| 72| */ 465| 72| if (self.options & SDWebImageDownloaderIgnoreCachedResponse && [self.cachedData isEqualToData:imageData]) { 466| 2| self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCacheNotModified userInfo:@{NSLocalizedDescriptionKey : @"Downloaded image is not modified and ignored"}]; 467| 2| // call completion block with not modified error 468| 2| [self callCompletionBlocksWithError:self.responseError]; 469| 2| [self done]; 470| 70| } else { 471| 70| // decode the image in coder queue, cancel all previous decoding process 472| 70| [self.coderQueue cancelAllOperations]; 473| 70| [self.coderQueue addOperationWithBlock:^{ 474| 70| UIImage *image = SDImageLoaderDecodeImageData(imageData, self.request.URL, [[self class] imageOptionsFromDownloaderOptions:self.options], self.context); 475| 70| CGSize imageSize = image.size; 476| 70| if (imageSize.width == 0 || imageSize.height == 0) { 477| 4| NSString *description = image == nil ? @"Downloaded image decode failed" : @"Downloaded image has 0 pixels"; 478| 4| [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorBadImageData userInfo:@{NSLocalizedDescriptionKey : description}]]; 479| 66| } else { 480| 66| [self callCompletionBlocksWithImage:image imageData:imageData error:nil finished:YES]; 481| 66| } 482| 70| [self done]; 483| 70| }]; 484| 70| } 485| 72| } else { 486| 1| [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorBadImageData userInfo:@{NSLocalizedDescriptionKey : @"Image data is nil"}]]; 487| 1| [self done]; 488| 1| } 489| 73| } else { 490| 1| [self done]; 491| 1| } 492| 74| } 493| 79|} 494| | 495| 8|- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { 496| 8| 497| 8| NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; 498| 8| __block NSURLCredential *credential = nil; 499| 8| 500| 8| if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { 501| 7| if (!(self.options & SDWebImageDownloaderAllowInvalidSSLCertificates)) { 502| 7| disposition = NSURLSessionAuthChallengePerformDefaultHandling; 503| 7| } else { 504| 0| credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; 505| 0| disposition = NSURLSessionAuthChallengeUseCredential; 506| 0| } 507| 7| } else { 508| 1| if (challenge.previousFailureCount == 0) { 509| 1| if (self.credential) { 510| 1| credential = self.credential; 511| 1| disposition = NSURLSessionAuthChallengeUseCredential; 512| 1| } else { 513| 0| disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; 514| 0| } 515| 1| } else { 516| 0| disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; 517| 0| } 518| 1| } 519| 8| 520| 8| if (completionHandler) { 521| 8| completionHandler(disposition, credential); 522| 8| } 523| 8|} 524| | 525| 79|- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) { 526| 79| self.metrics = metrics; 527| 79|} 528| | 529| |#pragma mark Helper methods 530| 77|+ (SDWebImageOptions)imageOptionsFromDownloaderOptions:(SDWebImageDownloaderOptions)downloadOptions { 531| 77| SDWebImageOptions options = 0; 532| 77| if (downloadOptions & SDWebImageDownloaderScaleDownLargeImages) options |= SDWebImageScaleDownLargeImages; 533| 77| if (downloadOptions & SDWebImageDownloaderDecodeFirstFrameOnly) options |= SDWebImageDecodeFirstFrameOnly; 534| 77| if (downloadOptions & SDWebImageDownloaderPreloadAllFrames) options |= SDWebImagePreloadAllFrames; 535| 77| if (downloadOptions & SDWebImageDownloaderAvoidDecodeImage) options |= SDWebImageAvoidDecodeImage; 536| 77| if (downloadOptions & SDWebImageDownloaderMatchAnimatedImageClass) options |= SDWebImageMatchAnimatedImageClass; 537| 77| 538| 77| return options; 539| 77|} 540| | 541| 0|- (BOOL)shouldContinueWhenAppEntersBackground { 542| 0| return SD_OPTIONS_CONTAINS(self.options, SDWebImageDownloaderContinueInBackground); 543| 0|} 544| | 545| 18|- (void)callCompletionBlocksWithError:(nullable NSError *)error { 546| 18| [self callCompletionBlocksWithImage:nil imageData:nil error:error finished:YES]; 547| 18|} 548| | 549| |- (void)callCompletionBlocksWithImage:(nullable UIImage *)image 550| | imageData:(nullable NSData *)imageData 551| | error:(nullable NSError *)error 552| 91| finished:(BOOL)finished { 553| 91| NSArray *completionBlocks = [self callbacksForKey:kCompletedCallbackKey]; 554| 91| dispatch_main_async_safe(^{ 555| 91| for (SDWebImageDownloaderCompletedBlock completedBlock in completionBlocks) { 556| 91| completedBlock(image, imageData, error, finished); 557| 91| } 558| 91| }); 559| 91|} 560| | 561| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageDownloaderRequestModifier.h" 10| | 11| |@interface SDWebImageDownloaderRequestModifier () 12| | 13| |@property (nonatomic, copy, nonnull) SDWebImageDownloaderRequestModifierBlock block; 14| | 15| |@end 16| | 17| |@implementation SDWebImageDownloaderRequestModifier 18| | 19| 2|- (instancetype)initWithBlock:(SDWebImageDownloaderRequestModifierBlock)block { 20| 2| self = [super init]; 21| 2| if (self) { 22| 2| self.block = block; 23| 2| } 24| 2| return self; 25| 2|} 26| | 27| 1|+ (instancetype)requestModifierWithBlock:(SDWebImageDownloaderRequestModifierBlock)block { 28| 1| SDWebImageDownloaderRequestModifier *requestModifier = [[SDWebImageDownloaderRequestModifier alloc] initWithBlock:block]; 29| 1| return requestModifier; 30| 1|} 31| | 32| 3|- (NSURLRequest *)modifiedRequestWithRequest:(NSURLRequest *)request { 33| 3| if (!self.block) { 34| 0| return nil; 35| 0| } 36| 3| return self.block(request); 37| 3|} 38| | 39| |@end 40| | 41| |@implementation SDWebImageDownloaderRequestModifier (Conveniences) 42| | 43| 0|- (instancetype)initWithMethod:(NSString *)method { 44| 0| return [self initWithMethod:method headers:nil body:nil]; 45| 0|} 46| | 47| 1|- (instancetype)initWithHeaders:(NSDictionary *)headers { 48| 1| return [self initWithMethod:nil headers:headers body:nil]; 49| 1|} 50| | 51| 0|- (instancetype)initWithBody:(NSData *)body { 52| 0| return [self initWithMethod:nil headers:nil body:body]; 53| 0|} 54| | 55| 1|- (instancetype)initWithMethod:(NSString *)method headers:(NSDictionary *)headers body:(NSData *)body { 56| 1| method = method ? [method copy] : @"GET"; 57| 1| headers = [headers copy]; 58| 1| body = [body copy]; 59| 1| return [self initWithBlock:^NSURLRequest * _Nullable(NSURLRequest * _Nonnull request) { 60| 1| NSMutableURLRequest *mutableRequest = [request mutableCopy]; 61| 1| mutableRequest.HTTPMethod = method; 62| 1| mutableRequest.HTTPBody = body; 63| 1| for (NSString *header in headers) { 64| 1| NSString *value = headers[header]; 65| 1| [mutableRequest setValue:value forHTTPHeaderField:header]; 66| 1| } 67| 1| return [mutableRequest copy]; 68| 1| }]; 69| 1|} 70| | 71| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| | 10| |#import "SDWebImageDownloaderResponseModifier.h" 11| | 12| |@interface SDWebImageDownloaderResponseModifier () 13| | 14| |@property (nonatomic, copy, nonnull) SDWebImageDownloaderResponseModifierBlock block; 15| | 16| |@end 17| | 18| |@implementation SDWebImageDownloaderResponseModifier 19| | 20| 3|- (instancetype)initWithBlock:(SDWebImageDownloaderResponseModifierBlock)block { 21| 3| self = [super init]; 22| 3| if (self) { 23| 3| self.block = block; 24| 3| } 25| 3| return self; 26| 3|} 27| | 28| 2|+ (instancetype)responseModifierWithBlock:(SDWebImageDownloaderResponseModifierBlock)block { 29| 2| SDWebImageDownloaderResponseModifier *responseModifier = [[SDWebImageDownloaderResponseModifier alloc] initWithBlock:block]; 30| 2| return responseModifier; 31| 2|} 32| | 33| 3|- (nullable NSURLResponse *)modifiedResponseWithResponse:(nonnull NSURLResponse *)response { 34| 3| if (!self.block) { 35| 0| return nil; 36| 0| } 37| 3| return self.block(response); 38| 3|} 39| | 40| |@end 41| | 42| |@implementation SDWebImageDownloaderResponseModifier (Conveniences) 43| | 44| 0|- (instancetype)initWithStatusCode:(NSInteger)statusCode { 45| 0| return [self initWithStatusCode:statusCode version:nil headers:nil]; 46| 0|} 47| | 48| 0|- (instancetype)initWithVersion:(NSString *)version { 49| 0| return [self initWithStatusCode:200 version:version headers:nil]; 50| 0|} 51| | 52| 1|- (instancetype)initWithHeaders:(NSDictionary *)headers { 53| 1| return [self initWithStatusCode:200 version:nil headers:headers]; 54| 1|} 55| | 56| 1|- (instancetype)initWithStatusCode:(NSInteger)statusCode version:(NSString *)version headers:(NSDictionary *)headers { 57| 1| version = version ? [version copy] : @"HTTP/1.1"; 58| 1| headers = [headers copy]; 59| 1| return [self initWithBlock:^NSURLResponse * _Nullable(NSURLResponse * _Nonnull response) { 60| 1| if (![response isKindOfClass:NSHTTPURLResponse.class]) { 61| 0| return response; 62| 0| } 63| 1| NSMutableDictionary *mutableHeaders = [((NSHTTPURLResponse *)response).allHeaderFields mutableCopy]; 64| 1| for (NSString *header in headers) { 65| 1| NSString *value = headers[header]; 66| 1| mutableHeaders[header] = value; 67| 1| } 68| 1| NSHTTPURLResponse *httpResponse = [[NSHTTPURLResponse alloc] initWithURL:response.URL statusCode:statusCode HTTPVersion:version headerFields:[mutableHeaders copy]]; 69| 1| return httpResponse; 70| 1| }]; 71| 1|} 72| | 73| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageIndicator.h" 10| | 11| |#if SD_UIKIT || SD_MAC 12| | 13| |#if SD_MAC 14| |#import 15| |#endif 16| | 17| |#if SD_UIKIT 18| |#if __IPHONE_13_0 || __TVOS_13_0 || __MAC_10_15 19| |// Xcode 11 20| |#else 21| |// Supports Xcode 10 users, for those users, define these enum 22| |static NSInteger UIActivityIndicatorViewStyleMedium = 100; 23| |static NSInteger UIActivityIndicatorViewStyleLarge = 101; 24| |#endif 25| |#endif 26| | 27| |#pragma mark - Activity Indicator 28| | 29| |@interface SDWebImageActivityIndicator () 30| | 31| |#if SD_UIKIT 32| |@property (nonatomic, strong, readwrite, nonnull) UIActivityIndicatorView *indicatorView; 33| |#else 34| |@property (nonatomic, strong, readwrite, nonnull) NSProgressIndicator *indicatorView; 35| |#endif 36| | 37| |@end 38| | 39| |@implementation SDWebImageActivityIndicator 40| | 41| 4|- (instancetype)init { 42| 4| self = [super init]; 43| 4| if (self) { 44| 4| [self commonInit]; 45| 4| } 46| 4| return self; 47| 4|} 48| | 49| |#if SD_UIKIT 50| |#pragma clang diagnostic push 51| |#pragma clang diagnostic ignored "-Wdeprecated-declarations" 52| |- (void)commonInit { 53| | self.indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 54| | self.indicatorView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin; 55| |} 56| |#pragma clang diagnostic pop 57| |#endif 58| | 59| |#if SD_MAC 60| 4|- (void)commonInit { 61| 4| self.indicatorView = [[NSProgressIndicator alloc] initWithFrame:NSZeroRect]; 62| 4| self.indicatorView.style = NSProgressIndicatorStyleSpinning; 63| 4| self.indicatorView.controlSize = NSControlSizeSmall; 64| 4| [self.indicatorView sizeToFit]; 65| 4| self.indicatorView.autoresizingMask = NSViewMaxXMargin | NSViewMinXMargin | NSViewMaxYMargin | NSViewMinYMargin; 66| 4|} 67| |#endif 68| | 69| 0|- (void)startAnimatingIndicator { 70| |#if SD_UIKIT 71| | [self.indicatorView startAnimating]; 72| |#else 73| | [self.indicatorView startAnimation:nil]; 74| 0|#endif 75| 0| self.indicatorView.hidden = NO; 76| 0|} 77| | 78| 0|- (void)stopAnimatingIndicator { 79| |#if SD_UIKIT 80| | [self.indicatorView stopAnimating]; 81| |#else 82| | [self.indicatorView stopAnimation:nil]; 83| 0|#endif 84| 0| self.indicatorView.hidden = YES; 85| 0|} 86| | 87| |@end 88| | 89| |@implementation SDWebImageActivityIndicator (Conveniences) 90| | 91| |#pragma clang diagnostic push 92| |#pragma clang diagnostic ignored "-Wdeprecated-declarations" 93| 2|+ (SDWebImageActivityIndicator *)grayIndicator { 94| 2| SDWebImageActivityIndicator *indicator = [SDWebImageActivityIndicator new]; 95| |#if SD_UIKIT 96| |#if SD_IOS 97| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; 98| |#else 99| | indicator.indicatorView.color = [UIColor colorWithWhite:0 alpha:0.45]; // Color from `UIActivityIndicatorViewStyleGray` 100| |#endif 101| |#else 102| | indicator.indicatorView.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; // Disable dark mode support 103| 2|#endif 104| 2| return indicator; 105| 2|} 106| | 107| 1|+ (SDWebImageActivityIndicator *)grayLargeIndicator { 108| 1| SDWebImageActivityIndicator *indicator = SDWebImageActivityIndicator.grayIndicator; 109| |#if SD_UIKIT 110| | UIColor *grayColor = indicator.indicatorView.color; 111| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; 112| | indicator.indicatorView.color = grayColor; 113| |#else 114| | indicator.indicatorView.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; // Disable dark mode support 115| 1| indicator.indicatorView.controlSize = NSControlSizeRegular; 116| 1|#endif 117| 1| [indicator.indicatorView sizeToFit]; 118| 1| return indicator; 119| 1|} 120| | 121| 2|+ (SDWebImageActivityIndicator *)whiteIndicator { 122| 2| SDWebImageActivityIndicator *indicator = [SDWebImageActivityIndicator new]; 123| |#if SD_UIKIT 124| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite; 125| |#else 126| | indicator.indicatorView.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; // Disable dark mode support 127| 2| CIFilter *lighten = [CIFilter filterWithName:@"CIColorControls"]; 128| 2| [lighten setDefaults]; 129| 2| [lighten setValue:@(1) forKey:kCIInputBrightnessKey]; 130| 2| indicator.indicatorView.contentFilters = @[lighten]; 131| 2|#endif 132| 2| return indicator; 133| 2|} 134| | 135| 1|+ (SDWebImageActivityIndicator *)whiteLargeIndicator { 136| 1| SDWebImageActivityIndicator *indicator = SDWebImageActivityIndicator.whiteIndicator; 137| |#if SD_UIKIT 138| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; 139| |#else 140| | indicator.indicatorView.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua]; // Disable dark mode support 141| 1| indicator.indicatorView.controlSize = NSControlSizeRegular; 142| 1| [indicator.indicatorView sizeToFit]; 143| 1|#endif 144| 1| return indicator; 145| 1|} 146| | 147| 0|+ (SDWebImageActivityIndicator *)largeIndicator { 148| 0| SDWebImageActivityIndicator *indicator = [SDWebImageActivityIndicator new]; 149| |#if SD_UIKIT 150| | if (@available(iOS 13.0, tvOS 13.0, *)) { 151| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleLarge; 152| | } else { 153| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; 154| | } 155| |#else 156| | indicator.indicatorView.controlSize = NSControlSizeRegular; 157| 0| [indicator.indicatorView sizeToFit]; 158| 0|#endif 159| 0| return indicator; 160| 0|} 161| | 162| 0|+ (SDWebImageActivityIndicator *)mediumIndicator { 163| 0| SDWebImageActivityIndicator *indicator = [SDWebImageActivityIndicator new]; 164| |#if SD_UIKIT 165| | if (@available(iOS 13.0, tvOS 13.0, *)) { 166| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleMedium; 167| | } else { 168| | indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite; 169| | } 170| |#else 171| | indicator.indicatorView.controlSize = NSControlSizeSmall; 172| 0| [indicator.indicatorView sizeToFit]; 173| 0|#endif 174| 0| return indicator; 175| 0|} 176| |#pragma clang diagnostic pop 177| | 178| |@end 179| | 180| |#pragma mark - Progress Indicator 181| | 182| |@interface SDWebImageProgressIndicator () 183| | 184| |#if SD_UIKIT 185| |@property (nonatomic, strong, readwrite, nonnull) UIProgressView *indicatorView; 186| |#else 187| |@property (nonatomic, strong, readwrite, nonnull) NSProgressIndicator *indicatorView; 188| |#endif 189| | 190| |@end 191| | 192| |@implementation SDWebImageProgressIndicator 193| | 194| 1|- (instancetype)init { 195| 1| self = [super init]; 196| 1| if (self) { 197| 1| [self commonInit]; 198| 1| } 199| 1| return self; 200| 1|} 201| | 202| |#if SD_UIKIT 203| |- (void)commonInit { 204| | self.indicatorView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; 205| | self.indicatorView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin; 206| |} 207| |#endif 208| | 209| |#if SD_MAC 210| 1|- (void)commonInit { 211| 1| self.indicatorView = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0, 0, 160, 0)]; // Width from `UIProgressView` default width 212| 1| self.indicatorView.style = NSProgressIndicatorStyleBar; 213| 1| self.indicatorView.controlSize = NSControlSizeSmall; 214| 1| [self.indicatorView sizeToFit]; 215| 1| self.indicatorView.autoresizingMask = NSViewMaxXMargin | NSViewMinXMargin | NSViewMaxYMargin | NSViewMinYMargin; 216| 1|} 217| |#endif 218| | 219| |#pragma clang diagnostic push 220| |#pragma clang diagnostic ignored "-Wunguarded-availability" 221| 1|- (void)startAnimatingIndicator { 222| 1| self.indicatorView.hidden = NO; 223| |#if SD_UIKIT 224| | if ([self.indicatorView respondsToSelector:@selector(observedProgress)] && self.indicatorView.observedProgress) { 225| | // Ignore NSProgress 226| | } else { 227| | self.indicatorView.progress = 0; 228| | } 229| |#else 230| | self.indicatorView.indeterminate = YES; 231| 1| self.indicatorView.doubleValue = 0; 232| 1| [self.indicatorView startAnimation:nil]; 233| 1|#endif 234| 1|} 235| | 236| 1|- (void)stopAnimatingIndicator { 237| 1| self.indicatorView.hidden = YES; 238| |#if SD_UIKIT 239| | if ([self.indicatorView respondsToSelector:@selector(observedProgress)] && self.indicatorView.observedProgress) { 240| | // Ignore NSProgress 241| | } else { 242| | self.indicatorView.progress = 1; 243| | } 244| |#else 245| | self.indicatorView.indeterminate = NO; 246| 1| self.indicatorView.doubleValue = 100; 247| 1| [self.indicatorView stopAnimation:nil]; 248| 1|#endif 249| 1|} 250| | 251| 3|- (void)updateIndicatorProgress:(double)progress { 252| |#if SD_UIKIT 253| | if ([self.indicatorView respondsToSelector:@selector(observedProgress)] && self.indicatorView.observedProgress) { 254| | // Ignore NSProgress 255| | } else { 256| | [self.indicatorView setProgress:progress animated:YES]; 257| | } 258| |#else 259| | self.indicatorView.indeterminate = progress > 0 ? NO : YES; 260| 3| self.indicatorView.doubleValue = progress * 100; 261| 3|#endif 262| 3|} 263| |#pragma clang diagnostic pop 264| | 265| |@end 266| | 267| |@implementation SDWebImageProgressIndicator (Conveniences) 268| | 269| 1|+ (SDWebImageProgressIndicator *)defaultIndicator { 270| 1| SDWebImageProgressIndicator *indicator = [SDWebImageProgressIndicator new]; 271| 1| return indicator; 272| 1|} 273| | 274| |#if SD_IOS 275| |+ (SDWebImageProgressIndicator *)barIndicator { 276| | SDWebImageProgressIndicator *indicator = [SDWebImageProgressIndicator new]; 277| | indicator.indicatorView.progressViewStyle = UIProgressViewStyleBar; 278| | return indicator; 279| |} 280| |#endif 281| | 282| |@end 283| | 284| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageManager.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageManager.h" 10| |#import "SDImageCache.h" 11| |#import "SDWebImageDownloader.h" 12| |#import "UIImage+Metadata.h" 13| |#import "SDAssociatedObject.h" 14| |#import "SDWebImageError.h" 15| |#import "SDInternalMacros.h" 16| | 17| |static id _defaultImageCache; 18| |static id _defaultImageLoader; 19| | 20| |@interface SDWebImageCombinedOperation () 21| | 22| |@property (assign, nonatomic, getter = isCancelled) BOOL cancelled; 23| |@property (strong, nonatomic, readwrite, nullable) id loaderOperation; 24| |@property (strong, nonatomic, readwrite, nullable) id cacheOperation; 25| |@property (weak, nonatomic, nullable) SDWebImageManager *manager; 26| | 27| |@end 28| | 29| |@interface SDWebImageManager () 30| | 31| |@property (strong, nonatomic, readwrite, nonnull) SDImageCache *imageCache; 32| |@property (strong, nonatomic, readwrite, nonnull) id imageLoader; 33| |@property (strong, nonatomic, nonnull) NSMutableSet *failedURLs; 34| |@property (strong, nonatomic, nonnull) dispatch_semaphore_t failedURLsLock; // a lock to keep the access to `failedURLs` thread-safe 35| |@property (strong, nonatomic, nonnull) NSMutableSet *runningOperations; 36| |@property (strong, nonatomic, nonnull) dispatch_semaphore_t runningOperationsLock; // a lock to keep the access to `runningOperations` thread-safe 37| | 38| |@end 39| | 40| |@implementation SDWebImageManager 41| | 42| 7|+ (id)defaultImageCache { 43| 7| return _defaultImageCache; 44| 7|} 45| | 46| 0|+ (void)setDefaultImageCache:(id)defaultImageCache { 47| 0| if (defaultImageCache && ![defaultImageCache conformsToProtocol:@protocol(SDImageCache)]) { 48| 0| return; 49| 0| } 50| 0| _defaultImageCache = defaultImageCache; 51| 0|} 52| | 53| 7|+ (id)defaultImageLoader { 54| 7| return _defaultImageLoader; 55| 7|} 56| | 57| 0|+ (void)setDefaultImageLoader:(id)defaultImageLoader { 58| 0| if (defaultImageLoader && ![defaultImageLoader conformsToProtocol:@protocol(SDImageLoader)]) { 59| 0| return; 60| 0| } 61| 0| _defaultImageLoader = defaultImageLoader; 62| 0|} 63| | 64| 34|+ (nonnull instancetype)sharedManager { 65| 34| static dispatch_once_t once; 66| 34| static id instance; 67| 34| dispatch_once(&once, ^{ 68| 1| instance = [self new]; 69| 1| }); 70| 34| return instance; 71| 34|} 72| | 73| 7|- (nonnull instancetype)init { 74| 7| id cache = [[self class] defaultImageCache]; 75| 7| if (!cache) { 76| 7| cache = [SDImageCache sharedImageCache]; 77| 7| } 78| 7| id loader = [[self class] defaultImageLoader]; 79| 7| if (!loader) { 80| 7| loader = [SDWebImageDownloader sharedDownloader]; 81| 7| } 82| 7| return [self initWithCache:cache loader:loader]; 83| 7|} 84| | 85| 13|- (nonnull instancetype)initWithCache:(nonnull id)cache loader:(nonnull id)loader { 86| 13| if ((self = [super init])) { 87| 13| _imageCache = cache; 88| 13| _imageLoader = loader; 89| 13| _failedURLs = [NSMutableSet new]; 90| 13| _failedURLsLock = dispatch_semaphore_create(1); 91| 13| _runningOperations = [NSMutableSet new]; 92| 13| _runningOperationsLock = dispatch_semaphore_create(1); 93| 13| } 94| 13| return self; 95| 13|} 96| | 97| 4|- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url { 98| 4| if (!url) { 99| 0| return @""; 100| 0| } 101| 4| 102| 4| NSString *key; 103| 4| // Cache Key Filter 104| 4| id cacheKeyFilter = self.cacheKeyFilter; 105| 4| if (cacheKeyFilter) { 106| 0| key = [cacheKeyFilter cacheKeyForURL:url]; 107| 4| } else { 108| 4| key = url.absoluteString; 109| 4| } 110| 4| 111| 4| return key; 112| 4|} 113| | 114| 146|- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url context:(nullable SDWebImageContext *)context { 115| 146| if (!url) { 116| 0| return @""; 117| 0| } 118| 146| 119| 146| NSString *key; 120| 146| // Cache Key Filter 121| 146| id cacheKeyFilter = self.cacheKeyFilter; 122| 146| if (context[SDWebImageContextCacheKeyFilter]) { 123| 3| cacheKeyFilter = context[SDWebImageContextCacheKeyFilter]; 124| 3| } 125| 146| if (cacheKeyFilter) { 126| 3| key = [cacheKeyFilter cacheKeyForURL:url]; 127| 143| } else { 128| 143| key = url.absoluteString; 129| 143| } 130| 146| 131| 146| // Thumbnail Key Appending 132| 146| NSValue *thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; 133| 146| if (thumbnailSizeValue != nil) { 134| 0| CGSize thumbnailSize = CGSizeZero; 135| 0|#if SD_MAC 136| 0| thumbnailSize = thumbnailSizeValue.sizeValue; 137| |#else 138| | thumbnailSize = thumbnailSizeValue.CGSizeValue; 139| |#endif 140| | BOOL preserveAspectRatio = YES; 141| 0| NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; 142| 0| if (preserveAspectRatioValue != nil) { 143| 0| preserveAspectRatio = preserveAspectRatioValue.boolValue; 144| 0| } 145| 0| key = SDThumbnailedKeyForKey(key, thumbnailSize, preserveAspectRatio); 146| 0| } 147| 146| 148| 146| // Transformer Key Appending 149| 146| id transformer = self.transformer; 150| 146| if (context[SDWebImageContextImageTransformer]) { 151| 25| transformer = context[SDWebImageContextImageTransformer]; 152| 25| if (![transformer conformsToProtocol:@protocol(SDImageTransformer)]) { 153| 16| transformer = nil; 154| 16| } 155| 25| } 156| 146| if (transformer) { 157| 10| key = SDTransformedKeyForKey(key, transformer.transformerKey); 158| 10| } 159| 146| 160| 146| return key; 161| 146|} 162| | 163| 10|- (SDWebImageCombinedOperation *)loadImageWithURL:(NSURL *)url options:(SDWebImageOptions)options progress:(SDImageLoaderProgressBlock)progressBlock completed:(SDInternalCompletionBlock)completedBlock { 164| 10| return [self loadImageWithURL:url options:options context:nil progress:progressBlock completed:completedBlock]; 165| 10|} 166| | 167| |- (SDWebImageCombinedOperation *)loadImageWithURL:(nullable NSURL *)url 168| | options:(SDWebImageOptions)options 169| | context:(nullable SDWebImageContext *)context 170| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 171| 62| completed:(nonnull SDInternalCompletionBlock)completedBlock { 172| 62| // Invoking this method without a completedBlock is pointless 173| 62| NSAssert(completedBlock != nil, @"If you mean to prefetch the image, use -[SDWebImagePrefetcher prefetchURLs] instead"); 174| 62| 175| 62| // Very common mistake is to send the URL using NSString object instead of NSURL. For some strange reason, Xcode won't 176| 62| // throw any warning for this type mismatch. Here we failsafe this error by allowing URLs to be passed as NSString. 177| 62| if ([url isKindOfClass:NSString.class]) { 178| 10| url = [NSURL URLWithString:(NSString *)url]; 179| 10| } 180| 62| 181| 62| // Prevents app crashing on argument type error like sending NSNull instead of NSURL 182| 62| if (![url isKindOfClass:NSURL.class]) { 183| 0| url = nil; 184| 0| } 185| 62| 186| 62| SDWebImageCombinedOperation *operation = [SDWebImageCombinedOperation new]; 187| 62| operation.manager = self; 188| 62| 189| 62| BOOL isFailedUrl = NO; 190| 62| if (url) { 191| 62| SD_LOCK(self.failedURLsLock); 192| 62| isFailedUrl = [self.failedURLs containsObject:url]; 193| 62| SD_UNLOCK(self.failedURLsLock); 194| 62| } 195| 62| 196| 62| if (url.absoluteString.length == 0 || (!(options & SDWebImageRetryFailed) && isFailedUrl)) { 197| 0| NSString *description = isFailedUrl ? @"Image url is blacklisted" : @"Image url is nil"; 198| 0| NSInteger code = isFailedUrl ? SDWebImageErrorBlackListed : SDWebImageErrorInvalidURL; 199| 0| [self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:code userInfo:@{NSLocalizedDescriptionKey : description}] url:url]; 200| 0| return operation; 201| 0| } 202| 62| 203| 62| SD_LOCK(self.runningOperationsLock); 204| 62| [self.runningOperations addObject:operation]; 205| 62| SD_UNLOCK(self.runningOperationsLock); 206| 62| 207| 62| // Preprocess the options and context arg to decide the final the result for manager 208| 62| SDWebImageOptionsResult *result = [self processedResultForURL:url options:options context:context]; 209| 62| 210| 62| // Start the entry to load image from cache 211| 62| [self callCacheProcessForOperation:operation url:url options:result.options context:result.context progress:progressBlock completed:completedBlock]; 212| 62| 213| 62| return operation; 214| 62|} 215| | 216| 1|- (void)cancelAll { 217| 1| SD_LOCK(self.runningOperationsLock); 218| 1| NSSet *copiedOperations = [self.runningOperations copy]; 219| 1| SD_UNLOCK(self.runningOperationsLock); 220| 1| [copiedOperations makeObjectsPerformSelector:@selector(cancel)]; // This will call `safelyRemoveOperationFromRunning:` and remove from the array 221| 1|} 222| | 223| 2|- (BOOL)isRunning { 224| 2| BOOL isRunning = NO; 225| 2| SD_LOCK(self.runningOperationsLock); 226| 2| isRunning = (self.runningOperations.count > 0); 227| 2| SD_UNLOCK(self.runningOperationsLock); 228| 2| return isRunning; 229| 2|} 230| | 231| 0|- (void)removeFailedURL:(NSURL *)url { 232| 0| if (!url) { 233| 0| return; 234| 0| } 235| 0| SD_LOCK(self.failedURLsLock); 236| 0| [self.failedURLs removeObject:url]; 237| 0| SD_UNLOCK(self.failedURLsLock); 238| 0|} 239| | 240| 0|- (void)removeAllFailedURLs { 241| 0| SD_LOCK(self.failedURLsLock); 242| 0| [self.failedURLs removeAllObjects]; 243| 0| SD_UNLOCK(self.failedURLsLock); 244| 0|} 245| | 246| |#pragma mark - Private 247| | 248| |// Query normal cache process 249| |- (void)callCacheProcessForOperation:(nonnull SDWebImageCombinedOperation *)operation 250| | url:(nonnull NSURL *)url 251| | options:(SDWebImageOptions)options 252| | context:(nullable SDWebImageContext *)context 253| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 254| 62| completed:(nullable SDInternalCompletionBlock)completedBlock { 255| 62| // Grab the image cache to use 256| 62| id imageCache; 257| 62| if ([context[SDWebImageContextImageCache] conformsToProtocol:@protocol(SDImageCache)]) { 258| 1| imageCache = context[SDWebImageContextImageCache]; 259| 61| } else { 260| 61| imageCache = self.imageCache; 261| 61| } 262| 62| 263| 62| // Get the query cache type 264| 62| SDImageCacheType queryCacheType = SDImageCacheTypeAll; 265| 62| if (context[SDWebImageContextQueryCacheType]) { 266| 2| queryCacheType = [context[SDWebImageContextQueryCacheType] integerValue]; 267| 2| } 268| 62| 269| 62| // Check whether we should query cache 270| 62| BOOL shouldQueryCache = !SD_OPTIONS_CONTAINS(options, SDWebImageFromLoaderOnly); 271| 62| if (shouldQueryCache) { 272| 61| NSString *key = [self cacheKeyForURL:url context:context]; 273| 61| @weakify(operation); 274| 61| operation.cacheOperation = [imageCache queryImageForKey:key options:options context:context cacheType:queryCacheType completion:^(UIImage * _Nullable cachedImage, NSData * _Nullable cachedData, SDImageCacheType cacheType) { 275| 61| @strongify(operation); 276| 61| if (!operation || operation.isCancelled) { 277| 3| // Image combined operation cancelled by user 278| 3| [self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user during querying the cache"}] url:url]; 279| 3| [self safelyRemoveOperationFromRunning:operation]; 280| 3| return; 281| 58| } else if (context[SDWebImageContextImageTransformer] && !cachedImage) { 282| 4| // Have a chance to query original cache instead of downloading 283| 4| [self callOriginalCacheProcessForOperation:operation url:url options:options context:context progress:progressBlock completed:completedBlock]; 284| 4| return; 285| 4| } 286| 54| 287| 54| // Continue download process 288| 54| [self callDownloadProcessForOperation:operation url:url options:options context:context cachedImage:cachedImage cachedData:cachedData cacheType:cacheType progress:progressBlock completed:completedBlock]; 289| 54| }]; 290| 61| } else { 291| 1| // Continue download process 292| 1| [self callDownloadProcessForOperation:operation url:url options:options context:context cachedImage:nil cachedData:nil cacheType:SDImageCacheTypeNone progress:progressBlock completed:completedBlock]; 293| 1| } 294| 62|} 295| | 296| |// Query original cache process 297| |- (void)callOriginalCacheProcessForOperation:(nonnull SDWebImageCombinedOperation *)operation 298| | url:(nonnull NSURL *)url 299| | options:(SDWebImageOptions)options 300| | context:(nullable SDWebImageContext *)context 301| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 302| 4| completed:(nullable SDInternalCompletionBlock)completedBlock { 303| 4| // Grab the image cache to use 304| 4| id imageCache; 305| 4| if ([context[SDWebImageContextImageCache] conformsToProtocol:@protocol(SDImageCache)]) { 306| 0| imageCache = context[SDWebImageContextImageCache]; 307| 4| } else { 308| 4| imageCache = self.imageCache; 309| 4| } 310| 4| 311| 4| // Get the original query cache type 312| 4| SDImageCacheType originalQueryCacheType = SDImageCacheTypeNone; 313| 4| if (context[SDWebImageContextOriginalQueryCacheType]) { 314| 1| originalQueryCacheType = [context[SDWebImageContextOriginalQueryCacheType] integerValue]; 315| 1| } 316| 4| 317| 4| // Check whether we should query original cache 318| 4| BOOL shouldQueryOriginalCache = (originalQueryCacheType != SDImageCacheTypeNone); 319| 4| if (shouldQueryOriginalCache) { 320| 1| // Change originContext to mutable 321| 1| SDWebImageMutableContext * __block originContext; 322| 1| if (context) { 323| 1| originContext = [context mutableCopy]; 324| 1| } else { 325| 0| originContext = [NSMutableDictionary dictionary]; 326| 0| } 327| 1| 328| 1| // Disable transformer for cache key generation 329| 1| id transformer = originContext[SDWebImageContextImageTransformer]; 330| 1| originContext[SDWebImageContextImageTransformer] = [NSNull null]; 331| 1| 332| 1| NSString *key = [self cacheKeyForURL:url context:originContext]; 333| 1| @weakify(operation); 334| 1| operation.cacheOperation = [imageCache queryImageForKey:key options:options context:context cacheType:originalQueryCacheType completion:^(UIImage * _Nullable cachedImage, NSData * _Nullable cachedData, SDImageCacheType cacheType) { 335| 1| @strongify(operation); 336| 1| if (!operation || operation.isCancelled) { 337| 0| // Image combined operation cancelled by user 338| 0| [self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user during querying the cache"}] url:url]; 339| 0| [self safelyRemoveOperationFromRunning:operation]; 340| 0| return; 341| 0| } 342| 1| 343| 1| // Add original transformer 344| 1| if (transformer) { 345| 1| originContext[SDWebImageContextImageTransformer] = transformer; 346| 1| } 347| 1| 348| 1| // Use the store cache process instead of downloading, and ignore .refreshCached option for now 349| 1| [self callStoreCacheProcessForOperation:operation url:url options:options context:context downloadedImage:cachedImage downloadedData:cachedData finished:YES progress:progressBlock completed:completedBlock]; 350| 1| 351| 1| [self safelyRemoveOperationFromRunning:operation]; 352| 1| }]; 353| 3| } else { 354| 3| // Continue download process 355| 3| [self callDownloadProcessForOperation:operation url:url options:options context:context cachedImage:nil cachedData:nil cacheType:originalQueryCacheType progress:progressBlock completed:completedBlock]; 356| 3| } 357| 4|} 358| | 359| |// Download process 360| |- (void)callDownloadProcessForOperation:(nonnull SDWebImageCombinedOperation *)operation 361| | url:(nonnull NSURL *)url 362| | options:(SDWebImageOptions)options 363| | context:(SDWebImageContext *)context 364| | cachedImage:(nullable UIImage *)cachedImage 365| | cachedData:(nullable NSData *)cachedData 366| | cacheType:(SDImageCacheType)cacheType 367| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 368| 58| completed:(nullable SDInternalCompletionBlock)completedBlock { 369| 58| // Grab the image loader to use 370| 58| id imageLoader; 371| 58| if ([context[SDWebImageContextImageLoader] conformsToProtocol:@protocol(SDImageLoader)]) { 372| 1| imageLoader = context[SDWebImageContextImageLoader]; 373| 57| } else { 374| 57| imageLoader = self.imageLoader; 375| 57| } 376| 58| 377| 58| // Check whether we should download image from network 378| 58| BOOL shouldDownload = !SD_OPTIONS_CONTAINS(options, SDWebImageFromCacheOnly); 379| 58| shouldDownload &= (!cachedImage || options & SDWebImageRefreshCached); 380| 58| shouldDownload &= (![self.delegate respondsToSelector:@selector(imageManager:shouldDownloadImageForURL:)] || [self.delegate imageManager:self shouldDownloadImageForURL:url]); 381| 58| shouldDownload &= [imageLoader canRequestImageForURL:url]; 382| 58| if (shouldDownload) { 383| 44| if (cachedImage && options & SDWebImageRefreshCached) { 384| 2| // If image was found in the cache but SDWebImageRefreshCached is provided, notify about the cached image 385| 2| // AND try to re-download it in order to let a chance to NSURLCache to refresh it from server. 386| 2| [self callCompletionBlockForOperation:operation completion:completedBlock image:cachedImage data:cachedData error:nil cacheType:cacheType finished:YES url:url]; 387| 2| // Pass the cached image to the image loader. The image loader should check whether the remote image is equal to the cached image. 388| 2| SDWebImageMutableContext *mutableContext; 389| 2| if (context) { 390| 0| mutableContext = [context mutableCopy]; 391| 2| } else { 392| 2| mutableContext = [NSMutableDictionary dictionary]; 393| 2| } 394| 2| mutableContext[SDWebImageContextLoaderCachedImage] = cachedImage; 395| 2| context = [mutableContext copy]; 396| 2| } 397| 44| 398| 44| @weakify(operation); 399| 46| operation.loaderOperation = [imageLoader requestImageWithURL:url options:options context:context progress:progressBlock completed:^(UIImage *downloadedImage, NSData *downloadedData, NSError *error, BOOL finished) { 400| 46| @strongify(operation); 401| 46| if (!operation || operation.isCancelled) { 402| 0| // Image combined operation cancelled by user 403| 0| [self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorCancelled userInfo:@{NSLocalizedDescriptionKey : @"Operation cancelled by user during sending the request"}] url:url]; 404| 46| } else if (cachedImage && options & SDWebImageRefreshCached && [error.domain isEqualToString:SDWebImageErrorDomain] && error.code == SDWebImageErrorCacheNotModified) { 405| 2| // Image refresh hit the NSURLCache cache, do not call the completion block 406| 44| } else if ([error.domain isEqualToString:SDWebImageErrorDomain] && error.code == SDWebImageErrorCancelled) { 407| 0| // Download operation cancelled by user before sending the request, don't block failed URL 408| 0| [self callCompletionBlockForOperation:operation completion:completedBlock error:error url:url]; 409| 44| } else if (error) { 410| 4| [self callCompletionBlockForOperation:operation completion:completedBlock error:error url:url]; 411| 4| BOOL shouldBlockFailedURL = [self shouldBlockFailedURLWithURL:url error:error options:options context:context]; 412| 4| 413| 4| if (shouldBlockFailedURL) { 414| 3| SD_LOCK(self.failedURLsLock); 415| 3| [self.failedURLs addObject:url]; 416| 3| SD_UNLOCK(self.failedURLsLock); 417| 3| } 418| 40| } else { 419| 40| if ((options & SDWebImageRetryFailed)) { 420| 0| SD_LOCK(self.failedURLsLock); 421| 0| [self.failedURLs removeObject:url]; 422| 0| SD_UNLOCK(self.failedURLsLock); 423| 0| } 424| 40| // Continue store cache process 425| 40| [self callStoreCacheProcessForOperation:operation url:url options:options context:context downloadedImage:downloadedImage downloadedData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; 426| 40| } 427| 46| 428| 46| if (finished) { 429| 44| [self safelyRemoveOperationFromRunning:operation]; 430| 44| } 431| 46| }]; 432| 44| } else if (cachedImage) { 433| 13| [self callCompletionBlockForOperation:operation completion:completedBlock image:cachedImage data:cachedData error:nil cacheType:cacheType finished:YES url:url]; 434| 13| [self safelyRemoveOperationFromRunning:operation]; 435| 13| } else { 436| 1| // Image not in cache and download disallowed by delegate 437| 1| [self callCompletionBlockForOperation:operation completion:completedBlock image:nil data:nil error:nil cacheType:SDImageCacheTypeNone finished:YES url:url]; 438| 1| [self safelyRemoveOperationFromRunning:operation]; 439| 1| } 440| 58|} 441| | 442| |// Store cache process 443| |- (void)callStoreCacheProcessForOperation:(nonnull SDWebImageCombinedOperation *)operation 444| | url:(nonnull NSURL *)url 445| | options:(SDWebImageOptions)options 446| | context:(SDWebImageContext *)context 447| | downloadedImage:(nullable UIImage *)downloadedImage 448| | downloadedData:(nullable NSData *)downloadedData 449| | finished:(BOOL)finished 450| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 451| 41| completed:(nullable SDInternalCompletionBlock)completedBlock { 452| 41| // the target image store cache type 453| 41| SDImageCacheType storeCacheType = SDImageCacheTypeAll; 454| 41| if (context[SDWebImageContextStoreCacheType]) { 455| 2| storeCacheType = [context[SDWebImageContextStoreCacheType] integerValue]; 456| 2| } 457| 41| // the original store image cache type 458| 41| SDImageCacheType originalStoreCacheType = SDImageCacheTypeNone; 459| 41| if (context[SDWebImageContextOriginalStoreCacheType]) { 460| 2| originalStoreCacheType = [context[SDWebImageContextOriginalStoreCacheType] integerValue]; 461| 2| } 462| 41| // origin cache key 463| 41| SDWebImageMutableContext *originContext = [context mutableCopy]; 464| 41| // disable transformer for cache key generation 465| 41| originContext[SDWebImageContextImageTransformer] = [NSNull null]; 466| 41| NSString *key = [self cacheKeyForURL:url context:originContext]; 467| 41| id transformer = context[SDWebImageContextImageTransformer]; 468| 41| if (![transformer conformsToProtocol:@protocol(SDImageTransformer)]) { 469| 37| transformer = nil; 470| 37| } 471| 41| id cacheSerializer = context[SDWebImageContextCacheSerializer]; 472| 41| 473| 41| BOOL shouldTransformImage = downloadedImage && transformer; 474| 41| shouldTransformImage = shouldTransformImage && (!downloadedImage.sd_isAnimated || (options & SDWebImageTransformAnimatedImage)); 475| 41| shouldTransformImage = shouldTransformImage && (!downloadedImage.sd_isVector || (options & SDWebImageTransformVectorImage)); 476| 41| BOOL shouldCacheOriginal = downloadedImage && finished; 477| 41| 478| 41| // if available, store original image to cache 479| 41| if (shouldCacheOriginal) { 480| 39| // normally use the store cache type, but if target image is transformed, use original store cache type instead 481| 39| SDImageCacheType targetStoreCacheType = shouldTransformImage ? originalStoreCacheType : storeCacheType; 482| 39| if (cacheSerializer && (targetStoreCacheType == SDImageCacheTypeDisk || targetStoreCacheType == SDImageCacheTypeAll)) { 483| 1| dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 484| 1| @autoreleasepool { 485| 1| NSData *cacheData = [cacheSerializer cacheDataWithImage:downloadedImage originalData:downloadedData imageURL:url]; 486| 1| [self storeImage:downloadedImage imageData:cacheData forKey:key cacheType:targetStoreCacheType options:options context:context completion:^{ 487| 1| // Continue transform process 488| 1| [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; 489| 1| }]; 490| 1| } 491| 1| }); 492| 38| } else { 493| 38| [self storeImage:downloadedImage imageData:downloadedData forKey:key cacheType:targetStoreCacheType options:options context:context completion:^{ 494| 38| // Continue transform process 495| 38| [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; 496| 38| }]; 497| 38| } 498| 39| } else { 499| 2| // Continue transform process 500| 2| [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; 501| 2| } 502| 41|} 503| | 504| |// Transform process 505| |- (void)callTransformProcessForOperation:(nonnull SDWebImageCombinedOperation *)operation 506| | url:(nonnull NSURL *)url 507| | options:(SDWebImageOptions)options 508| | context:(SDWebImageContext *)context 509| | originalImage:(nullable UIImage *)originalImage 510| | originalData:(nullable NSData *)originalData 511| | finished:(BOOL)finished 512| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 513| 41| completed:(nullable SDInternalCompletionBlock)completedBlock { 514| 41| // the target image store cache type 515| 41| SDImageCacheType storeCacheType = SDImageCacheTypeAll; 516| 41| if (context[SDWebImageContextStoreCacheType]) { 517| 2| storeCacheType = [context[SDWebImageContextStoreCacheType] integerValue]; 518| 2| } 519| 41| // transformed cache key 520| 41| NSString *key = [self cacheKeyForURL:url context:context]; 521| 41| id transformer = context[SDWebImageContextImageTransformer]; 522| 41| if (![transformer conformsToProtocol:@protocol(SDImageTransformer)]) { 523| 37| transformer = nil; 524| 37| } 525| 41| id cacheSerializer = context[SDWebImageContextCacheSerializer]; 526| 41| 527| 41| BOOL shouldTransformImage = originalImage && transformer; 528| 41| shouldTransformImage = shouldTransformImage && (!originalImage.sd_isAnimated || (options & SDWebImageTransformAnimatedImage)); 529| 41| shouldTransformImage = shouldTransformImage && (!originalImage.sd_isVector || (options & SDWebImageTransformVectorImage)); 530| 41| // if available, store transformed image to cache 531| 41| if (shouldTransformImage) { 532| 4| dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 533| 4| @autoreleasepool { 534| 4| UIImage *transformedImage = [transformer transformedImageWithImage:originalImage forKey:key]; 535| 4| if (transformedImage && finished) { 536| 4| BOOL imageWasTransformed = ![transformedImage isEqual:originalImage]; 537| 4| NSData *cacheData; 538| 4| // pass nil if the image was transformed, so we can recalculate the data from the image 539| 4| if (cacheSerializer && (storeCacheType == SDImageCacheTypeDisk || storeCacheType == SDImageCacheTypeAll)) { 540| 0| cacheData = [cacheSerializer cacheDataWithImage:transformedImage originalData:(imageWasTransformed ? nil : originalData) imageURL:url]; 541| 4| } else { 542| 4| cacheData = (imageWasTransformed ? nil : originalData); 543| 4| } 544| 4| [self storeImage:transformedImage imageData:cacheData forKey:key cacheType:storeCacheType options:options context:context completion:^{ 545| 4| [self callCompletionBlockForOperation:operation completion:completedBlock image:transformedImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; 546| 4| }]; 547| 4| } else { 548| 0| [self callCompletionBlockForOperation:operation completion:completedBlock image:transformedImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; 549| 0| } 550| 4| } 551| 4| }); 552| 37| } else { 553| 37| [self callCompletionBlockForOperation:operation completion:completedBlock image:originalImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; 554| 37| } 555| 41|} 556| | 557| |#pragma mark - Helper 558| | 559| 65|- (void)safelyRemoveOperationFromRunning:(nullable SDWebImageCombinedOperation*)operation { 560| 65| if (!operation) { 561| 1| return; 562| 1| } 563| 64| SD_LOCK(self.runningOperationsLock); 564| 64| [self.runningOperations removeObject:operation]; 565| 64| SD_UNLOCK(self.runningOperationsLock); 566| 64|} 567| | 568| |- (void)storeImage:(nullable UIImage *)image 569| | imageData:(nullable NSData *)data 570| | forKey:(nullable NSString *)key 571| | cacheType:(SDImageCacheType)cacheType 572| | options:(SDWebImageOptions)options 573| | context:(nullable SDWebImageContext *)context 574| 43| completion:(nullable SDWebImageNoParamsBlock)completion { 575| 43| id imageCache; 576| 43| if ([context[SDWebImageContextImageCache] conformsToProtocol:@protocol(SDImageCache)]) { 577| 1| imageCache = context[SDWebImageContextImageCache]; 578| 42| } else { 579| 42| imageCache = self.imageCache; 580| 42| } 581| 43| BOOL waitStoreCache = SD_OPTIONS_CONTAINS(options, SDWebImageWaitStoreCache); 582| 43| // Check whether we should wait the store cache finished. If not, callback immediately 583| 43| [imageCache storeImage:image imageData:data forKey:key cacheType:cacheType completion:^{ 584| 43| if (waitStoreCache) { 585| 1| if (completion) { 586| 1| completion(); 587| 1| } 588| 1| } 589| 43| }]; 590| 43| if (!waitStoreCache) { 591| 42| if (completion) { 592| 42| completion(); 593| 42| } 594| 42| } 595| 43|} 596| | 597| |- (void)callCompletionBlockForOperation:(nullable SDWebImageCombinedOperation*)operation 598| | completion:(nullable SDInternalCompletionBlock)completionBlock 599| | error:(nullable NSError *)error 600| 7| url:(nullable NSURL *)url { 601| 7| [self callCompletionBlockForOperation:operation completion:completionBlock image:nil data:nil error:error cacheType:SDImageCacheTypeNone finished:YES url:url]; 602| 7|} 603| | 604| |- (void)callCompletionBlockForOperation:(nullable SDWebImageCombinedOperation*)operation 605| | completion:(nullable SDInternalCompletionBlock)completionBlock 606| | image:(nullable UIImage *)image 607| | data:(nullable NSData *)data 608| | error:(nullable NSError *)error 609| | cacheType:(SDImageCacheType)cacheType 610| | finished:(BOOL)finished 611| 64| url:(nullable NSURL *)url { 612| 64| dispatch_main_async_safe(^{ 613| 64| if (completionBlock) { 614| 64| completionBlock(image, data, error, cacheType, finished, url); 615| 64| } 616| 64| }); 617| 64|} 618| | 619| |- (BOOL)shouldBlockFailedURLWithURL:(nonnull NSURL *)url 620| | error:(nonnull NSError *)error 621| | options:(SDWebImageOptions)options 622| 4| context:(nullable SDWebImageContext *)context { 623| 4| id imageLoader; 624| 4| if ([context[SDWebImageContextImageLoader] conformsToProtocol:@protocol(SDImageLoader)]) { 625| 0| imageLoader = context[SDWebImageContextImageLoader]; 626| 4| } else { 627| 4| imageLoader = self.imageLoader; 628| 4| } 629| 4| // Check whether we should block failed url 630| 4| BOOL shouldBlockFailedURL; 631| 4| if ([self.delegate respondsToSelector:@selector(imageManager:shouldBlockFailedURL:withError:)]) { 632| 0| shouldBlockFailedURL = [self.delegate imageManager:self shouldBlockFailedURL:url withError:error]; 633| 4| } else { 634| 4| shouldBlockFailedURL = [imageLoader shouldBlockFailedURLWithURL:url error:error]; 635| 4| } 636| 4| 637| 4| return shouldBlockFailedURL; 638| 4|} 639| | 640| 62|- (SDWebImageOptionsResult *)processedResultForURL:(NSURL *)url options:(SDWebImageOptions)options context:(SDWebImageContext *)context { 641| 62| SDWebImageOptionsResult *result; 642| 62| SDWebImageMutableContext *mutableContext = [SDWebImageMutableContext dictionary]; 643| 62| 644| 62| // Image Transformer from manager 645| 62| if (!context[SDWebImageContextImageTransformer]) { 646| 60| id transformer = self.transformer; 647| 60| [mutableContext setValue:transformer forKey:SDWebImageContextImageTransformer]; 648| 60| } 649| 62| // Cache key filter from manager 650| 62| if (!context[SDWebImageContextCacheKeyFilter]) { 651| 62| id cacheKeyFilter = self.cacheKeyFilter; 652| 62| [mutableContext setValue:cacheKeyFilter forKey:SDWebImageContextCacheKeyFilter]; 653| 62| } 654| 62| // Cache serializer from manager 655| 62| if (!context[SDWebImageContextCacheSerializer]) { 656| 62| id cacheSerializer = self.cacheSerializer; 657| 62| [mutableContext setValue:cacheSerializer forKey:SDWebImageContextCacheSerializer]; 658| 62| } 659| 62| 660| 62| if (mutableContext.count > 0) { 661| 4| if (context) { 662| 2| [mutableContext addEntriesFromDictionary:context]; 663| 2| } 664| 4| context = [mutableContext copy]; 665| 4| } 666| 62| 667| 62| // Apply options processor 668| 62| if (self.optionsProcessor) { 669| 2| result = [self.optionsProcessor processedResultForURL:url options:options context:context]; 670| 2| } 671| 62| if (!result) { 672| 60| // Use default options result 673| 60| result = [[SDWebImageOptionsResult alloc] initWithOptions:options context:context]; 674| 60| } 675| 62| 676| 62| return result; 677| 62|} 678| | 679| |@end 680| | 681| | 682| |@implementation SDWebImageCombinedOperation 683| | 684| 3|- (void)cancel { 685| 3| @synchronized(self) { 686| 3| if (self.isCancelled) { 687| 0| return; 688| 0| } 689| 3| self.cancelled = YES; 690| 3| if (self.cacheOperation) { 691| 3| [self.cacheOperation cancel]; 692| 3| self.cacheOperation = nil; 693| 3| } 694| 3| if (self.loaderOperation) { 695| 0| [self.loaderOperation cancel]; 696| 0| self.loaderOperation = nil; 697| 0| } 698| 3| [self.manager safelyRemoveOperationFromRunning:self]; 699| 3| } 700| 3|} 701| | 702| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageOptionsProcessor.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageOptionsProcessor.h" 10| | 11| |@interface SDWebImageOptionsResult () 12| | 13| |@property (nonatomic, assign) SDWebImageOptions options; 14| |@property (nonatomic, copy, nullable) SDWebImageContext *context; 15| | 16| |@end 17| | 18| |@implementation SDWebImageOptionsResult 19| | 20| 62|- (instancetype)initWithOptions:(SDWebImageOptions)options context:(SDWebImageContext *)context { 21| 62| self = [super init]; 22| 62| if (self) { 23| 62| self.options = options; 24| 62| self.context = context; 25| 62| } 26| 62| return self; 27| 62|} 28| | 29| |@end 30| | 31| |@interface SDWebImageOptionsProcessor () 32| | 33| |@property (nonatomic, copy, nonnull) SDWebImageOptionsProcessorBlock block; 34| | 35| |@end 36| | 37| |@implementation SDWebImageOptionsProcessor 38| | 39| 2|- (instancetype)initWithBlock:(SDWebImageOptionsProcessorBlock)block { 40| 2| self = [super init]; 41| 2| if (self) { 42| 2| self.block = block; 43| 2| } 44| 2| return self; 45| 2|} 46| | 47| 2|+ (instancetype)optionsProcessorWithBlock:(SDWebImageOptionsProcessorBlock)block { 48| 2| SDWebImageOptionsProcessor *optionsProcessor = [[SDWebImageOptionsProcessor alloc] initWithBlock:block]; 49| 2| return optionsProcessor; 50| 2|} 51| | 52| 2|- (SDWebImageOptionsResult *)processedResultForURL:(NSURL *)url options:(SDWebImageOptions)options context:(SDWebImageContext *)context { 53| 2| if (!self.block) { 54| 0| return nil; 55| 0| } 56| 2| return self.block(url, options, context); 57| 2|} 58| | 59| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImagePrefetcher.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImagePrefetcher.h" 10| |#import "SDAsyncBlockOperation.h" 11| |#import "SDInternalMacros.h" 12| |#import 13| | 14| |@interface SDWebImagePrefetchToken () { 15| | @public 16| | // Though current implementation, `SDWebImageManager` completion block is always on main queue. But however, there is no guarantee in docs. And we may introduce config to specify custom queue in the future. 17| | // These value are just used as incrementing counter, keep thread-safe using memory_order_relaxed for performance. 18| | atomic_ulong _skippedCount; 19| | atomic_ulong _finishedCount; 20| | atomic_flag _isAllFinished; 21| | 22| | unsigned long _totalCount; 23| | 24| | // Used to ensure NSPointerArray thread safe 25| | dispatch_semaphore_t _prefetchOperationsLock; 26| | dispatch_semaphore_t _loadOperationsLock; 27| |} 28| | 29| |@property (nonatomic, copy, readwrite) NSArray *urls; 30| |@property (nonatomic, strong) NSPointerArray *loadOperations; 31| |@property (nonatomic, strong) NSPointerArray *prefetchOperations; 32| |@property (nonatomic, weak) SDWebImagePrefetcher *prefetcher; 33| |@property (nonatomic, copy, nullable) SDWebImagePrefetcherCompletionBlock completionBlock; 34| |@property (nonatomic, copy, nullable) SDWebImagePrefetcherProgressBlock progressBlock; 35| | 36| |@end 37| | 38| |@interface SDWebImagePrefetcher () 39| | 40| |@property (strong, nonatomic, nonnull) SDWebImageManager *manager; 41| |@property (strong, atomic, nonnull) NSMutableSet *runningTokens; 42| |@property (strong, nonatomic, nonnull) NSOperationQueue *prefetchQueue; 43| | 44| |@end 45| | 46| |@implementation SDWebImagePrefetcher 47| | 48| 5|+ (nonnull instancetype)sharedImagePrefetcher { 49| 5| static dispatch_once_t once; 50| 5| static id instance; 51| 5| dispatch_once(&once, ^{ 52| 1| instance = [self new]; 53| 1| }); 54| 5| return instance; 55| 5|} 56| | 57| 5|- (nonnull instancetype)init { 58| 5| return [self initWithImageManager:[SDWebImageManager new]]; 59| 5|} 60| | 61| 5|- (nonnull instancetype)initWithImageManager:(SDWebImageManager *)manager { 62| 5| if ((self = [super init])) { 63| 5| _manager = manager; 64| 5| _runningTokens = [NSMutableSet set]; 65| 5| _options = SDWebImageLowPriority; 66| 5| _delegateQueue = dispatch_get_main_queue(); 67| 5| _prefetchQueue = [NSOperationQueue new]; 68| 5| self.maxConcurrentPrefetchCount = 3; 69| 5| } 70| 5| return self; 71| 5|} 72| | 73| 6|- (void)setMaxConcurrentPrefetchCount:(NSUInteger)maxConcurrentPrefetchCount { 74| 6| self.prefetchQueue.maxConcurrentOperationCount = maxConcurrentPrefetchCount; 75| 6|} 76| | 77| 0|- (NSUInteger)maxConcurrentPrefetchCount { 78| 0| return self.prefetchQueue.maxConcurrentOperationCount; 79| 0|} 80| | 81| |#pragma mark - Prefetch 82| 1|- (nullable SDWebImagePrefetchToken *)prefetchURLs:(nullable NSArray *)urls { 83| 1| return [self prefetchURLs:urls progress:nil completed:nil]; 84| 1|} 85| | 86| |- (nullable SDWebImagePrefetchToken *)prefetchURLs:(nullable NSArray *)urls 87| | progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock 88| 7| completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock { 89| 7| if (!urls || urls.count == 0) { 90| 1| if (completionBlock) { 91| 1| completionBlock(0, 0); 92| 1| } 93| 1| return nil; 94| 1| } 95| 6| SDWebImagePrefetchToken *token = [SDWebImagePrefetchToken new]; 96| 6| token.prefetcher = self; 97| 6| token.urls = urls; 98| 6| token->_skippedCount = 0; 99| 6| token->_finishedCount = 0; 100| 6| token->_totalCount = token.urls.count; 101| 6| atomic_flag_clear(&(token->_isAllFinished)); 102| 6| token.loadOperations = [NSPointerArray weakObjectsPointerArray]; 103| 6| token.prefetchOperations = [NSPointerArray weakObjectsPointerArray]; 104| 6| token.progressBlock = progressBlock; 105| 6| token.completionBlock = completionBlock; 106| 6| [self addRunningToken:token]; 107| 6| [self startPrefetchWithToken:token]; 108| 6| 109| 6| return token; 110| 6|} 111| | 112| 6|- (void)startPrefetchWithToken:(SDWebImagePrefetchToken * _Nonnull)token { 113| 33| for (NSURL *url in token.urls) { 114| 33| @autoreleasepool { 115| 33| @weakify(self); 116| 33| SDAsyncBlockOperation *prefetchOperation = [SDAsyncBlockOperation blockOperationWithBlock:^(SDAsyncBlockOperation * _Nonnull asyncOperation) { 117| 30| @strongify(self); 118| 30| if (!self || asyncOperation.isCancelled) { 119| 0| return; 120| 0| } 121| 30| id operation = [self.manager loadImageWithURL:url options:self.options context:self.context progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { 122| 30| @strongify(self); 123| 30| if (!self) { 124| 0| return; 125| 0| } 126| 30| if (!finished) { 127| 0| return; 128| 0| } 129| 30| atomic_fetch_add_explicit(&(token->_finishedCount), 1, memory_order_relaxed); 130| 30| if (error) { 131| 3| // Add last failed 132| 3| atomic_fetch_add_explicit(&(token->_skippedCount), 1, memory_order_relaxed); 133| 3| } 134| 30| 135| 30| // Current operation finished 136| 30| [self callProgressBlockForToken:token imageURL:imageURL]; 137| 30| 138| 30| if (atomic_load_explicit(&(token->_finishedCount), memory_order_relaxed) == token->_totalCount) { 139| 5| // All finished 140| 5| if (!atomic_flag_test_and_set_explicit(&(token->_isAllFinished), memory_order_relaxed)) { 141| 5| [self callCompletionBlockForToken:token]; 142| 5| [self removeRunningToken:token]; 143| 5| } 144| 5| } 145| 30| [asyncOperation complete]; 146| 30| }]; 147| 30| NSAssert(operation != nil, @"Operation should not be nil, [SDWebImageManager loadImageWithURL:options:context:progress:completed:] break prefetch logic"); 148| 30| SD_LOCK(token->_loadOperationsLock); 149| 30| [token.loadOperations addPointer:(__bridge void *)operation]; 150| 30| SD_UNLOCK(token->_loadOperationsLock); 151| 30| }]; 152| 33| SD_LOCK(token->_prefetchOperationsLock); 153| 33| [token.prefetchOperations addPointer:(__bridge void *)prefetchOperation]; 154| 33| SD_UNLOCK(token->_prefetchOperationsLock); 155| 33| [self.prefetchQueue addOperation:prefetchOperation]; 156| 33| } 157| 33| } 158| 6|} 159| | 160| |#pragma mark - Cancel 161| 0|- (void)cancelPrefetching { 162| 0| @synchronized(self.runningTokens) { 163| 0| NSSet *copiedTokens = [self.runningTokens copy]; 164| 0| [copiedTokens makeObjectsPerformSelector:@selector(cancel)]; 165| 0| [self.runningTokens removeAllObjects]; 166| 0| } 167| 0|} 168| | 169| 30|- (void)callProgressBlockForToken:(SDWebImagePrefetchToken *)token imageURL:(NSURL *)url { 170| 30| if (!token) { 171| 0| return; 172| 0| } 173| 30| BOOL shouldCallDelegate = [self.delegate respondsToSelector:@selector(imagePrefetcher:didPrefetchURL:finishedCount:totalCount:)]; 174| 30| NSUInteger tokenFinishedCount = [self tokenFinishedCount]; 175| 30| NSUInteger tokenTotalCount = [self tokenTotalCount]; 176| 30| NSUInteger finishedCount = atomic_load_explicit(&(token->_finishedCount), memory_order_relaxed); 177| 30| NSUInteger totalCount = token->_totalCount; 178| 30| dispatch_async(self.delegateQueue, ^{ 179| 30| if (shouldCallDelegate) { 180| 20| [self.delegate imagePrefetcher:self didPrefetchURL:url finishedCount:tokenFinishedCount totalCount:tokenTotalCount]; 181| 20| } 182| 30| if (token.progressBlock) { 183| 27| token.progressBlock(finishedCount, totalCount); 184| 27| } 185| 30| }); 186| 30|} 187| | 188| 5|- (void)callCompletionBlockForToken:(SDWebImagePrefetchToken *)token { 189| 5| if (!token) { 190| 0| return; 191| 0| } 192| 5| BOOL shoulCallDelegate = [self.delegate respondsToSelector:@selector(imagePrefetcher:didFinishWithTotalCount:skippedCount:)] && ([self countOfRunningTokens] == 1); // last one 193| 5| NSUInteger tokenTotalCount = [self tokenTotalCount]; 194| 5| NSUInteger tokenSkippedCount = [self tokenSkippedCount]; 195| 5| NSUInteger finishedCount = atomic_load_explicit(&(token->_finishedCount), memory_order_relaxed); 196| 5| NSUInteger skippedCount = atomic_load_explicit(&(token->_skippedCount), memory_order_relaxed); 197| 5| dispatch_async(self.delegateQueue, ^{ 198| 5| if (shoulCallDelegate) { 199| 1| [self.delegate imagePrefetcher:self didFinishWithTotalCount:tokenTotalCount skippedCount:tokenSkippedCount]; 200| 1| } 201| 5| if (token.completionBlock) { 202| 5| token.completionBlock(finishedCount, skippedCount); 203| 5| } 204| 5| }); 205| 5|} 206| | 207| |#pragma mark - Helper 208| 35|- (NSUInteger)tokenTotalCount { 209| 35| NSUInteger tokenTotalCount = 0; 210| 35| @synchronized (self.runningTokens) { 211| 38| for (SDWebImagePrefetchToken *token in self.runningTokens) { 212| 38| tokenTotalCount += token->_totalCount; 213| 38| } 214| 35| } 215| 35| return tokenTotalCount; 216| 35|} 217| | 218| 5|- (NSUInteger)tokenSkippedCount { 219| 5| NSUInteger tokenSkippedCount = 0; 220| 5| @synchronized (self.runningTokens) { 221| 6| for (SDWebImagePrefetchToken *token in self.runningTokens) { 222| 6| tokenSkippedCount += atomic_load_explicit(&(token->_skippedCount), memory_order_relaxed); 223| 6| } 224| 5| } 225| 5| return tokenSkippedCount; 226| 5|} 227| | 228| 30|- (NSUInteger)tokenFinishedCount { 229| 30| NSUInteger tokenFinishedCount = 0; 230| 30| @synchronized (self.runningTokens) { 231| 32| for (SDWebImagePrefetchToken *token in self.runningTokens) { 232| 32| tokenFinishedCount += atomic_load_explicit(&(token->_finishedCount), memory_order_relaxed); 233| 32| } 234| 30| } 235| 30| return tokenFinishedCount; 236| 30|} 237| | 238| 6|- (void)addRunningToken:(SDWebImagePrefetchToken *)token { 239| 6| if (!token) { 240| 0| return; 241| 0| } 242| 6| @synchronized (self.runningTokens) { 243| 6| [self.runningTokens addObject:token]; 244| 6| } 245| 6|} 246| | 247| 6|- (void)removeRunningToken:(SDWebImagePrefetchToken *)token { 248| 6| if (!token) { 249| 0| return; 250| 0| } 251| 6| @synchronized (self.runningTokens) { 252| 6| [self.runningTokens removeObject:token]; 253| 6| } 254| 6|} 255| | 256| 1|- (NSUInteger)countOfRunningTokens { 257| 1| NSUInteger count = 0; 258| 1| @synchronized (self.runningTokens) { 259| 1| count = self.runningTokens.count; 260| 1| } 261| 1| return count; 262| 1|} 263| | 264| |@end 265| | 266| |@implementation SDWebImagePrefetchToken 267| | 268| 6|- (instancetype)init { 269| 6| self = [super init]; 270| 6| if (self) { 271| 6| _prefetchOperationsLock = dispatch_semaphore_create(1); 272| 6| _loadOperationsLock = dispatch_semaphore_create(1); 273| 6| } 274| 6| return self; 275| 6|} 276| | 277| 1|- (void)cancel { 278| 1| SD_LOCK(_prefetchOperationsLock); 279| 1| [self.prefetchOperations compact]; 280| 3| for (id operation in self.prefetchOperations) { 281| 3| id strongOperation = operation; 282| 3| if (strongOperation) { 283| 3| [strongOperation cancel]; 284| 3| } 285| 3| } 286| 1| self.prefetchOperations.count = 0; 287| 1| SD_UNLOCK(_prefetchOperationsLock); 288| 1| 289| 1| SD_LOCK(_loadOperationsLock); 290| 1| [self.loadOperations compact]; 291| 1| for (id operation in self.loadOperations) { 292| 0| id strongOperation = operation; 293| 0| if (strongOperation) { 294| 0| [strongOperation cancel]; 295| 0| } 296| 0| } 297| 1| self.loadOperations.count = 0; 298| 1| SD_UNLOCK(_loadOperationsLock); 299| 1| 300| 1| self.completionBlock = nil; 301| 1| self.progressBlock = nil; 302| 1| [self.prefetcher removeRunningToken:self]; 303| 1|} 304| | 305| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/SDWebImageTransition.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWebImageTransition.h" 10| | 11| |#if SD_UIKIT || SD_MAC 12| | 13| |#if SD_MAC 14| |#import "SDWebImageTransitionInternal.h" 15| |#import "SDInternalMacros.h" 16| | 17| 2|CAMediaTimingFunction * SDTimingFunctionFromAnimationOptions(SDWebImageAnimationOptions options) { 18| 2| if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveLinear, options)) { 19| 0| return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 20| 2| } else if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveEaseIn, options)) { 21| 0| return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 22| 2| } else if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveEaseOut, options)) { 23| 0| return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 24| 2| } else if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveEaseInOut, options)) { 25| 0| return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 26| 2| } else { 27| 2| return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; 28| 2| } 29| 2|} 30| | 31| 2|CATransition * SDTransitionFromAnimationOptions(SDWebImageAnimationOptions options) { 32| 2| if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionCrossDissolve)) { 33| 1| CATransition *trans = [CATransition animation]; 34| 1| trans.type = kCATransitionFade; 35| 1| return trans; 36| 1| } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromLeft)) { 37| 0| CATransition *trans = [CATransition animation]; 38| 0| trans.type = kCATransitionPush; 39| 0| trans.subtype = kCATransitionFromLeft; 40| 0| return trans; 41| 1| } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromRight)) { 42| 0| CATransition *trans = [CATransition animation]; 43| 0| trans.type = kCATransitionPush; 44| 0| trans.subtype = kCATransitionFromRight; 45| 0| return trans; 46| 1| } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromTop)) { 47| 0| CATransition *trans = [CATransition animation]; 48| 0| trans.type = kCATransitionPush; 49| 0| trans.subtype = kCATransitionFromTop; 50| 0| return trans; 51| 1| } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromBottom)) { 52| 0| CATransition *trans = [CATransition animation]; 53| 0| trans.type = kCATransitionPush; 54| 0| trans.subtype = kCATransitionFromBottom; 55| 0| return trans; 56| 1| } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionCurlUp)) { 57| 0| CATransition *trans = [CATransition animation]; 58| 0| trans.type = kCATransitionReveal; 59| 0| trans.subtype = kCATransitionFromTop; 60| 0| return trans; 61| 1| } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionCurlDown)) { 62| 1| CATransition *trans = [CATransition animation]; 63| 1| trans.type = kCATransitionReveal; 64| 1| trans.subtype = kCATransitionFromBottom; 65| 1| return trans; 66| 1| } else { 67| 0| return nil; 68| 0| } 69| 2|} 70| |#endif 71| | 72| |@implementation SDWebImageTransition 73| | 74| 8|- (instancetype)init { 75| 8| self = [super init]; 76| 8| if (self) { 77| 8| self.duration = 0.5; 78| 8| } 79| 8| return self; 80| 8|} 81| | 82| |@end 83| | 84| |@implementation SDWebImageTransition (Conveniences) 85| | 86| 2|+ (SDWebImageTransition *)fadeTransition { 87| 2| return [self fadeTransitionWithDuration:0.5]; 88| 2|} 89| | 90| 2|+ (SDWebImageTransition *)fadeTransitionWithDuration:(NSTimeInterval)duration { 91| 2| SDWebImageTransition *transition = [SDWebImageTransition new]; 92| |#if SD_UIKIT 93| | transition.animationOptions = UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction; 94| |#else 95| | transition.animationOptions = SDWebImageAnimationOptionTransitionCrossDissolve; 96| 2|#endif 97| 2| return transition; 98| 2|} 99| | 100| 1|+ (SDWebImageTransition *)flipFromLeftTransition { 101| 1| return [self flipFromLeftTransitionWithDuration:0.5]; 102| 1|} 103| | 104| 1|+ (SDWebImageTransition *)flipFromLeftTransitionWithDuration:(NSTimeInterval)duration { 105| 1| SDWebImageTransition *transition = [SDWebImageTransition new]; 106| |#if SD_UIKIT 107| | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowUserInteraction; 108| |#else 109| | transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromLeft; 110| 1|#endif 111| 1| return transition; 112| 1|} 113| | 114| 1|+ (SDWebImageTransition *)flipFromRightTransition { 115| 1| return [self flipFromRightTransitionWithDuration:0.5]; 116| 1|} 117| | 118| 1|+ (SDWebImageTransition *)flipFromRightTransitionWithDuration:(NSTimeInterval)duration { 119| 1| SDWebImageTransition *transition = [SDWebImageTransition new]; 120| |#if SD_UIKIT 121| | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionAllowUserInteraction; 122| |#else 123| | transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromRight; 124| 1|#endif 125| 1| return transition; 126| 1|} 127| | 128| 1|+ (SDWebImageTransition *)flipFromTopTransition { 129| 1| return [self flipFromTopTransitionWithDuration:0.5]; 130| 1|} 131| | 132| 1|+ (SDWebImageTransition *)flipFromTopTransitionWithDuration:(NSTimeInterval)duration { 133| 1| SDWebImageTransition *transition = [SDWebImageTransition new]; 134| |#if SD_UIKIT 135| | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromTop | UIViewAnimationOptionAllowUserInteraction; 136| |#else 137| | transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromTop; 138| 1|#endif 139| 1| return transition; 140| 1|} 141| | 142| 1|+ (SDWebImageTransition *)flipFromBottomTransition { 143| 1| return [self flipFromBottomTransitionWithDuration:0.5]; 144| 1|} 145| | 146| 1|+ (SDWebImageTransition *)flipFromBottomTransitionWithDuration:(NSTimeInterval)duration { 147| 1| SDWebImageTransition *transition = [SDWebImageTransition new]; 148| |#if SD_UIKIT 149| | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromBottom | UIViewAnimationOptionAllowUserInteraction; 150| |#else 151| | transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromBottom; 152| 1|#endif 153| 1| return transition; 154| 1|} 155| | 156| 1|+ (SDWebImageTransition *)curlUpTransition { 157| 1| return [self curlUpTransitionWithDuration:0.5]; 158| 1|} 159| | 160| 1|+ (SDWebImageTransition *)curlUpTransitionWithDuration:(NSTimeInterval)duration { 161| 1| SDWebImageTransition *transition = [SDWebImageTransition new]; 162| |#if SD_UIKIT 163| | transition.animationOptions = UIViewAnimationOptionTransitionCurlUp | UIViewAnimationOptionAllowUserInteraction; 164| |#else 165| | transition.animationOptions = SDWebImageAnimationOptionTransitionCurlUp; 166| 1|#endif 167| 1| return transition; 168| 1|} 169| | 170| 1|+ (SDWebImageTransition *)curlDownTransition { 171| 1| return [self curlDownTransitionWithDuration:0.5]; 172| 1|} 173| | 174| 1|+ (SDWebImageTransition *)curlDownTransitionWithDuration:(NSTimeInterval)duration { 175| 1| SDWebImageTransition *transition = [SDWebImageTransition new]; 176| |#if SD_UIKIT 177| | transition.animationOptions = UIViewAnimationOptionTransitionCurlDown | UIViewAnimationOptionAllowUserInteraction; 178| |#else 179| | transition.animationOptions = SDWebImageAnimationOptionTransitionCurlDown; 180| 1|#endif 181| 1| transition.duration = duration; 182| 1| return transition; 183| 1|} 184| | 185| |@end 186| | 187| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* (c) Fabrice Aneche 5| |* 6| |* For the full copyright and license information, please view the LICENSE 7| |* file that was distributed with this source code. 8| |*/ 9| | 10| |#import "UIImage+ExtendedCacheData.h" 11| |#import 12| | 13| |@implementation UIImage (ExtendedCacheData) 14| | 15| 143|- (id)sd_extendedObject { 16| 143| return objc_getAssociatedObject(self, @selector(sd_extendedObject)); 17| 143|} 18| | 19| 86|- (void)setSd_extendedObject:(id)sd_extendedObject { 20| 86| objc_setAssociatedObject(self, @selector(sd_extendedObject), sd_extendedObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 21| 86|} 22| | 23| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImage+ForceDecode.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIImage+ForceDecode.h" 10| |#import "SDImageCoderHelper.h" 11| |#import "objc/runtime.h" 12| | 13| |@implementation UIImage (ForceDecode) 14| | 15| 171|- (BOOL)sd_isDecoded { 16| 171| NSNumber *value = objc_getAssociatedObject(self, @selector(sd_isDecoded)); 17| 171| return value.boolValue; 18| 171|} 19| | 20| 523|- (void)setSd_isDecoded:(BOOL)sd_isDecoded { 21| 523| objc_setAssociatedObject(self, @selector(sd_isDecoded), @(sd_isDecoded), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 22| 523|} 23| | 24| 5|+ (nullable UIImage *)sd_decodedImageWithImage:(nullable UIImage *)image { 25| 5| if (!image) { 26| 1| return nil; 27| 1| } 28| 4| return [SDImageCoderHelper decodedImageWithImage:image]; 29| 4|} 30| | 31| 2|+ (nullable UIImage *)sd_decodedAndScaledDownImageWithImage:(nullable UIImage *)image { 32| 2| return [self sd_decodedAndScaledDownImageWithImage:image limitBytes:0]; 33| 2|} 34| | 35| 4|+ (nullable UIImage *)sd_decodedAndScaledDownImageWithImage:(nullable UIImage *)image limitBytes:(NSUInteger)bytes { 36| 4| if (!image) { 37| 1| return nil; 38| 1| } 39| 3| return [SDImageCoderHelper decodedAndScaledDownImageWithImage:image limitBytes:bytes]; 40| 3|} 41| | 42| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImage+GIF.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * (c) Laurin Brandner 5| | * 6| | * For the full copyright and license information, please view the LICENSE 7| | * file that was distributed with this source code. 8| | */ 9| | 10| |#import "UIImage+GIF.h" 11| |#import "SDImageGIFCoder.h" 12| | 13| |@implementation UIImage (GIF) 14| | 15| 3|+ (nullable UIImage *)sd_imageWithGIFData:(nullable NSData *)data { 16| 3| if (!data) { 17| 1| return nil; 18| 1| } 19| 2| return [[SDImageGIFCoder sharedCoder] decodedImageWithData:data options:0]; 20| 2|} 21| | 22| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImage+MemoryCacheCost.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIImage+MemoryCacheCost.h" 10| |#import "objc/runtime.h" 11| |#import "NSImage+Compatibility.h" 12| | 13| 78|FOUNDATION_STATIC_INLINE NSUInteger SDMemoryCacheCostForImage(UIImage *image) { 14| 78| CGImageRef imageRef = image.CGImage; 15| 78| if (!imageRef) { 16| 0| return 0; 17| 0| } 18| 78| NSUInteger bytesPerFrame = CGImageGetBytesPerRow(imageRef) * CGImageGetHeight(imageRef); 19| 78| NSUInteger frameCount; 20| 78|#if SD_MAC 21| 78| frameCount = 1; 22| |#elif SD_UIKIT || SD_WATCH 23| | frameCount = image.images.count > 0 ? image.images.count : 1; 24| |#endif 25| | NSUInteger cost = bytesPerFrame * frameCount; 26| 78| return cost; 27| 78|} 28| | 29| |@implementation UIImage (MemoryCacheCost) 30| | 31| 78|- (NSUInteger)sd_memoryCost { 32| 78| NSNumber *value = objc_getAssociatedObject(self, @selector(sd_memoryCost)); 33| 78| NSUInteger memoryCost; 34| 78| if (value != nil) { 35| 0| memoryCost = [value unsignedIntegerValue]; 36| 78| } else { 37| 78| memoryCost = SDMemoryCacheCostForImage(self); 38| 78| } 39| 78| return memoryCost; 40| 78|} 41| | 42| 0|- (void)setSd_memoryCost:(NSUInteger)sd_memoryCost { 43| 0| objc_setAssociatedObject(self, @selector(sd_memoryCost), @(sd_memoryCost), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 44| 0|} 45| | 46| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImage+Metadata.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIImage+Metadata.h" 10| |#import "NSImage+Compatibility.h" 11| |#import "SDInternalMacros.h" 12| |#import "objc/runtime.h" 13| | 14| |@implementation UIImage (Metadata) 15| | 16| |#if SD_UIKIT || SD_WATCH 17| | 18| |- (NSUInteger)sd_imageLoopCount { 19| | NSUInteger imageLoopCount = 0; 20| | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageLoopCount)); 21| | if ([value isKindOfClass:[NSNumber class]]) { 22| | imageLoopCount = value.unsignedIntegerValue; 23| | } 24| | return imageLoopCount; 25| |} 26| | 27| |- (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { 28| | NSNumber *value = @(sd_imageLoopCount); 29| | objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 30| |} 31| | 32| |- (BOOL)sd_isAnimated { 33| | return (self.images != nil); 34| |} 35| | 36| |#pragma clang diagnostic push 37| |#pragma clang diagnostic ignored "-Warc-performSelector-leaks" 38| |- (BOOL)sd_isVector { 39| | if (@available(iOS 13.0, tvOS 13.0, watchOS 6.0, *)) { 40| | // Xcode 11 supports symbol image, keep Xcode 10 compatible currently 41| | SEL SymbolSelector = NSSelectorFromString(@"isSymbolImage"); 42| | if ([self respondsToSelector:SymbolSelector] && [self performSelector:SymbolSelector]) { 43| | return YES; 44| | } 45| | // SVG 46| | SEL SVGSelector = SD_SEL_SPI(CGSVGDocument); 47| | if ([self respondsToSelector:SVGSelector] && [self performSelector:SVGSelector]) { 48| | return YES; 49| | } 50| | } 51| | if (@available(iOS 11.0, tvOS 11.0, watchOS 4.0, *)) { 52| | // PDF 53| | SEL PDFSelector = SD_SEL_SPI(CGPDFPage); 54| | if ([self respondsToSelector:PDFSelector] && [self performSelector:PDFSelector]) { 55| | return YES; 56| | } 57| | } 58| | return NO; 59| |} 60| |#pragma clang diagnostic pop 61| | 62| |#else 63| | 64| 91|- (NSUInteger)sd_imageLoopCount { 65| 91| NSUInteger imageLoopCount = 0; 66| 91| NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 67| 91| NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; 68| 91| NSBitmapImageRep *bitmapImageRep; 69| 91| if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) { 70| 91| bitmapImageRep = (NSBitmapImageRep *)imageRep; 71| 91| } 72| 91| if (bitmapImageRep) { 73| 91| imageLoopCount = [[bitmapImageRep valueForProperty:NSImageLoopCount] unsignedIntegerValue]; 74| 91| } 75| 91| return imageLoopCount; 76| 91|} 77| | 78| 90|- (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount { 79| 90| NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 80| 90| NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; 81| 90| NSBitmapImageRep *bitmapImageRep; 82| 90| if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) { 83| 90| bitmapImageRep = (NSBitmapImageRep *)imageRep; 84| 90| } 85| 90| if (bitmapImageRep) { 86| 90| [bitmapImageRep setProperty:NSImageLoopCount withValue:@(sd_imageLoopCount)]; 87| 90| } 88| 90|} 89| | 90| 195|- (BOOL)sd_isAnimated { 91| 195| BOOL isAnimated = NO; 92| 195| NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 93| 195| NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; 94| 195| NSBitmapImageRep *bitmapImageRep; 95| 195| if ([imageRep isKindOfClass:[NSBitmapImageRep class]]) { 96| 195| bitmapImageRep = (NSBitmapImageRep *)imageRep; 97| 195| } 98| 195| if (bitmapImageRep) { 99| 195| NSUInteger frameCount = [[bitmapImageRep valueForProperty:NSImageFrameCount] unsignedIntegerValue]; 100| 195| isAnimated = frameCount > 1 ? YES : NO; 101| 195| } 102| 195| return isAnimated; 103| 195|} 104| | 105| 92|- (BOOL)sd_isVector { 106| 92| NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); 107| 92| NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; 108| 92| if ([imageRep isKindOfClass:[NSPDFImageRep class]]) { 109| 0| return YES; 110| 0| } 111| 92| if ([imageRep isKindOfClass:[NSEPSImageRep class]]) { 112| 0| return YES; 113| 0| } 114| 92| if ([NSStringFromClass(imageRep.class) hasSuffix:@"NSSVGImageRep"]) { 115| 0| return YES; 116| 0| } 117| 92| return NO; 118| 92|} 119| | 120| |#endif 121| | 122| 115|- (SDImageFormat)sd_imageFormat { 123| 115| SDImageFormat imageFormat = SDImageFormatUndefined; 124| 115| NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageFormat)); 125| 115| if ([value isKindOfClass:[NSNumber class]]) { 126| 54| imageFormat = value.integerValue; 127| 54| return imageFormat; 128| 54| } 129| 61| // Check CGImage's UTType, may return nil for non-Image/IO based image 130| 61| if (@available(iOS 9.0, tvOS 9.0, macOS 10.11, watchOS 2.0, *)) { 131| 61| CFStringRef uttype = CGImageGetUTType(self.CGImage); 132| 61| imageFormat = [NSData sd_imageFormatFromUTType:uttype]; 133| 61| } 134| 61| return imageFormat; 135| 61|} 136| | 137| 508|- (void)setSd_imageFormat:(SDImageFormat)sd_imageFormat { 138| 508| objc_setAssociatedObject(self, @selector(sd_imageFormat), @(sd_imageFormat), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 139| 508|} 140| | 141| 95|- (void)setSd_isIncremental:(BOOL)sd_isIncremental { 142| 95| objc_setAssociatedObject(self, @selector(sd_isIncremental), @(sd_isIncremental), OBJC_ASSOCIATION_RETAIN_NONATOMIC); 143| 95|} 144| | 145| 108|- (BOOL)sd_isIncremental { 146| 108| NSNumber *value = objc_getAssociatedObject(self, @selector(sd_isIncremental)); 147| 108| return value.boolValue; 148| 108|} 149| | 150| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImage+MultiFormat.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIImage+MultiFormat.h" 10| |#import "SDImageCodersManager.h" 11| | 12| |@implementation UIImage (MultiFormat) 13| | 14| 7|+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data { 15| 7| return [self sd_imageWithData:data scale:1]; 16| 7|} 17| | 18| 7|+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale { 19| 7| return [self sd_imageWithData:data scale:scale firstFrameOnly:NO]; 20| 7|} 21| | 22| 8|+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale firstFrameOnly:(BOOL)firstFrameOnly { 23| 8| if (!data) { 24| 2| return nil; 25| 2| } 26| 6| SDImageCoderOptions *options = @{SDImageCoderDecodeScaleFactor : @(MAX(scale, 1)), SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)}; 27| 6| return [[SDImageCodersManager sharedManager] decodedImageWithData:data options:options]; 28| 6|} 29| | 30| 1|- (nullable NSData *)sd_imageData { 31| 1| return [self sd_imageDataAsFormat:SDImageFormatUndefined]; 32| 1|} 33| | 34| 9|- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat { 35| 9| return [self sd_imageDataAsFormat:imageFormat compressionQuality:1]; 36| 9|} 37| | 38| 11|- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality { 39| 11| return [self sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:NO]; 40| 11|} 41| | 42| 11|- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality firstFrameOnly:(BOOL)firstFrameOnly { 43| 11| SDImageCoderOptions *options = @{SDImageCoderEncodeCompressionQuality : @(compressionQuality), SDImageCoderEncodeFirstFrameOnly : @(firstFrameOnly)}; 44| 11| return [[SDImageCodersManager sharedManager] encodedDataWithImage:self format:imageFormat options:options]; 45| 11|} 46| | 47| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImage+Transform.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIImage+Transform.h" 10| |#import "NSImage+Compatibility.h" 11| |#import "SDImageGraphics.h" 12| |#import "SDGraphicsImageRenderer.h" 13| |#import "NSBezierPath+SDRoundedCorners.h" 14| |#import 15| |#if SD_UIKIT || SD_MAC 16| |#import 17| |#endif 18| | 19| 5|static inline CGRect SDCGRectFitWithScaleMode(CGRect rect, CGSize size, SDImageScaleMode scaleMode) { 20| 5| rect = CGRectStandardize(rect); 21| 5| size.width = size.width < 0 ? -size.width : size.width; 22| 5| size.height = size.height < 0 ? -size.height : size.height; 23| 5| CGPoint center = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect)); 24| 5| switch (scaleMode) { 25| 5| case SDImageScaleModeAspectFit: 26| 3| case SDImageScaleModeAspectFill: { 27| 3| if (rect.size.width < 0.01 || rect.size.height < 0.01 || 28| 3| size.width < 0.01 || size.height < 0.01) { 29| 0| rect.origin = center; 30| 0| rect.size = CGSizeZero; 31| 3| } else { 32| 3| CGFloat scale; 33| 3| if (scaleMode == SDImageScaleModeAspectFit) { 34| 2| if (size.width / size.height < rect.size.width / rect.size.height) { 35| 2| scale = rect.size.height / size.height; 36| 2| } else { 37| 0| scale = rect.size.width / size.width; 38| 0| } 39| 2| } else { 40| 1| if (size.width / size.height < rect.size.width / rect.size.height) { 41| 0| scale = rect.size.width / size.width; 42| 1| } else { 43| 1| scale = rect.size.height / size.height; 44| 1| } 45| 1| } 46| 3| size.width *= scale; 47| 3| size.height *= scale; 48| 3| rect.size = size; 49| 3| rect.origin = CGPointMake(center.x - size.width * 0.5, center.y - size.height * 0.5); 50| 3| } 51| 3| } break; 52| 3| case SDImageScaleModeFill: 53| 2| default: { 54| 2| rect = rect; 55| 2| } 56| 5| } 57| 5| return rect; 58| 5|} 59| | 60| 244|static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitmapInfo) { 61| 244| // Get alpha info, byteOrder info 62| 244| CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; 63| 244| CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask; 64| 244| CGFloat r = 0, g = 0, b = 0, a = 1; 65| 244| 66| 244| BOOL byteOrderNormal = NO; 67| 244| switch (byteOrderInfo) { 68| 244| case kCGBitmapByteOrderDefault: { 69| 121| byteOrderNormal = YES; 70| 121| } break; 71| 244| case kCGBitmapByteOrder32Little: { 72| 123| } break; 73| 244| case kCGBitmapByteOrder32Big: { 74| 0| byteOrderNormal = YES; 75| 0| } break; 76| 244| default: break; 77| 244| } 78| 244| switch (alphaInfo) { 79| 244| case kCGImageAlphaPremultipliedFirst: 80| 115| case kCGImageAlphaFirst: { 81| 115| if (byteOrderNormal) { 82| 0| // ARGB8888 83| 0| a = pixel[0] / 255.0; 84| 0| r = pixel[1] / 255.0; 85| 0| g = pixel[2] / 255.0; 86| 0| b = pixel[3] / 255.0; 87| 115| } else { 88| 115| // BGRA8888 89| 115| b = pixel[0] / 255.0; 90| 115| g = pixel[1] / 255.0; 91| 115| r = pixel[2] / 255.0; 92| 115| a = pixel[3] / 255.0; 93| 115| } 94| 115| } 95| 115| break; 96| 120| case kCGImageAlphaPremultipliedLast: 97| 120| case kCGImageAlphaLast: { 98| 120| if (byteOrderNormal) { 99| 120| // RGBA8888 100| 120| r = pixel[0] / 255.0; 101| 120| g = pixel[1] / 255.0; 102| 120| b = pixel[2] / 255.0; 103| 120| a = pixel[3] / 255.0; 104| 120| } else { 105| 0| // ABGR8888 106| 0| a = pixel[0] / 255.0; 107| 0| b = pixel[1] / 255.0; 108| 0| g = pixel[2] / 255.0; 109| 0| r = pixel[3] / 255.0; 110| 0| } 111| 120| } 112| 120| break; 113| 120| case kCGImageAlphaNone: { 114| 0| if (byteOrderNormal) { 115| 0| // RGB 116| 0| r = pixel[0] / 255.0; 117| 0| g = pixel[1] / 255.0; 118| 0| b = pixel[2] / 255.0; 119| 0| } else { 120| 0| // BGR 121| 0| b = pixel[0] / 255.0; 122| 0| g = pixel[1] / 255.0; 123| 0| r = pixel[2] / 255.0; 124| 0| } 125| 0| } 126| 0| break; 127| 120| case kCGImageAlphaNoneSkipLast: { 128| 1| if (byteOrderNormal) { 129| 1| // RGBX 130| 1| r = pixel[0] / 255.0; 131| 1| g = pixel[1] / 255.0; 132| 1| b = pixel[2] / 255.0; 133| 1| } else { 134| 0| // XBGR 135| 0| b = pixel[1] / 255.0; 136| 0| g = pixel[2] / 255.0; 137| 0| r = pixel[3] / 255.0; 138| 0| } 139| 1| } 140| 1| break; 141| 120| case kCGImageAlphaNoneSkipFirst: { 142| 8| if (byteOrderNormal) { 143| 0| // XRGB 144| 0| r = pixel[1] / 255.0; 145| 0| g = pixel[2] / 255.0; 146| 0| b = pixel[3] / 255.0; 147| 8| } else { 148| 8| // BGRX 149| 8| b = pixel[0] / 255.0; 150| 8| g = pixel[1] / 255.0; 151| 8| r = pixel[2] / 255.0; 152| 8| } 153| 8| } 154| 8| break; 155| 120| case kCGImageAlphaOnly: { 156| 0| // A 157| 0| a = pixel[0] / 255.0; 158| 0| } 159| 0| break; 160| 120| default: 161| 0| break; 162| 244| } 163| 244| 164| 244| return [UIColor colorWithRed:r green:g blue:b alpha:a]; 165| 244|} 166| | 167| |#if SD_UIKIT || SD_MAC 168| |// Create-Rule, caller should call CGImageRelease 169| 12|static inline CGImageRef _Nullable SDCreateCGImageFromCIImage(CIImage * _Nonnull ciImage) { 170| 12| CGImageRef imageRef = NULL; 171| 12| if (@available(iOS 10, macOS 10.12, tvOS 10, *)) { 172| 12| imageRef = ciImage.CGImage; 173| 12| } 174| 12| if (!imageRef) { 175| 12| CIContext *context = [CIContext context]; 176| 12| imageRef = [context createCGImage:ciImage fromRect:ciImage.extent]; 177| 12| } else { 178| 0| CGImageRetain(imageRef); 179| 0| } 180| 12| return imageRef; 181| 12|} 182| |#endif 183| | 184| |@implementation UIImage (Transform) 185| | 186| 5|- (void)sd_drawInRect:(CGRect)rect context:(CGContextRef)context scaleMode:(SDImageScaleMode)scaleMode clipsToBounds:(BOOL)clips { 187| 5| CGRect drawRect = SDCGRectFitWithScaleMode(rect, self.size, scaleMode); 188| 5| if (drawRect.size.width == 0 || drawRect.size.height == 0) return; 189| 5| if (clips) { 190| 0| if (context) { 191| 0| CGContextSaveGState(context); 192| 0| CGContextAddRect(context, rect); 193| 0| CGContextClip(context); 194| 0| [self drawInRect:drawRect]; 195| 0| CGContextRestoreGState(context); 196| 0| } 197| 5| } else { 198| 5| [self drawInRect:drawRect]; 199| 5| } 200| 5|} 201| | 202| 5|- (nullable UIImage *)sd_resizedImageWithSize:(CGSize)size scaleMode:(SDImageScaleMode)scaleMode { 203| 5| if (size.width <= 0 || size.height <= 0) return nil; 204| 5| SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; 205| 5| format.scale = self.scale; 206| 5| SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:size format:format]; 207| 5| UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { 208| 5| [self sd_drawInRect:CGRectMake(0, 0, size.width, size.height) context:context scaleMode:scaleMode clipsToBounds:NO]; 209| 5| }]; 210| 5| return image; 211| 5|} 212| | 213| 3|- (nullable UIImage *)sd_croppedImageWithRect:(CGRect)rect { 214| 3| rect.origin.x *= self.scale; 215| 3| rect.origin.y *= self.scale; 216| 3| rect.size.width *= self.scale; 217| 3| rect.size.height *= self.scale; 218| 3| if (rect.size.width <= 0 || rect.size.height <= 0) return nil; 219| 3| 220| 3|#if SD_UIKIT || SD_MAC 221| 3| // CIImage shortcut 222| 3| if (self.CIImage) { 223| 1| CGRect croppingRect = CGRectMake(rect.origin.x, self.size.height - CGRectGetMaxY(rect), rect.size.width, rect.size.height); 224| 1| CIImage *ciImage = [self.CIImage imageByCroppingToRect:croppingRect]; 225| |#if SD_UIKIT 226| | UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; 227| |#else 228| 1| UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; 229| 1|#endif 230| 1| return image; 231| 1| } 232| 2|#endif 233| 2| 234| 2| CGImageRef imageRef = self.CGImage; 235| 2| if (!imageRef) { 236| 0| return nil; 237| 0| } 238| 2| 239| 2| CGImageRef croppedImageRef = CGImageCreateWithImageInRect(imageRef, rect); 240| 2| if (!croppedImageRef) { 241| 0| return nil; 242| 0| } 243| |#if SD_UIKIT || SD_WATCH 244| | UIImage *image = [UIImage imageWithCGImage:croppedImageRef scale:self.scale orientation:self.imageOrientation]; 245| |#else 246| 2| UIImage *image = [[UIImage alloc] initWithCGImage:croppedImageRef scale:self.scale orientation:kCGImagePropertyOrientationUp]; 247| 2|#endif 248| 2| CGImageRelease(croppedImageRef); 249| 2| return image; 250| 2|} 251| | 252| 3|- (nullable UIImage *)sd_roundedCornerImageWithRadius:(CGFloat)cornerRadius corners:(SDRectCorner)corners borderWidth:(CGFloat)borderWidth borderColor:(nullable UIColor *)borderColor { 253| 3| SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; 254| 3| format.scale = self.scale; 255| 3| SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:self.size format:format]; 256| 3| UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { 257| 3| CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height); 258| 3| 259| 3| CGFloat minSize = MIN(self.size.width, self.size.height); 260| 3| if (borderWidth < minSize / 2) { 261| |#if SD_UIKIT || SD_WATCH 262| | UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadii:CGSizeMake(cornerRadius, cornerRadius)]; 263| |#else 264| | NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadius:cornerRadius]; 265| 3|#endif 266| 3| [path closePath]; 267| 3| 268| 3| CGContextSaveGState(context); 269| 3| [path addClip]; 270| 3| [self drawInRect:rect]; 271| 3| CGContextRestoreGState(context); 272| 3| } 273| 3| 274| 3| if (borderColor && borderWidth < minSize / 2 && borderWidth > 0) { 275| 3| CGFloat strokeInset = (floor(borderWidth * self.scale) + 0.5) / self.scale; 276| 3| CGRect strokeRect = CGRectInset(rect, strokeInset, strokeInset); 277| 3| CGFloat strokeRadius = cornerRadius > self.scale / 2 ? cornerRadius - self.scale / 2 : 0; 278| |#if SD_UIKIT || SD_WATCH 279| | UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadii:CGSizeMake(strokeRadius, strokeRadius)]; 280| |#else 281| | NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadius:strokeRadius]; 282| 3|#endif 283| 3| [path closePath]; 284| 3| 285| 3| path.lineWidth = borderWidth; 286| 3| [borderColor setStroke]; 287| 3| [path stroke]; 288| 3| } 289| 3| }]; 290| 3| return image; 291| 3|} 292| | 293| 5|- (nullable UIImage *)sd_rotatedImageWithAngle:(CGFloat)angle fitSize:(BOOL)fitSize { 294| 5| size_t width = self.size.width; 295| 5| size_t height = self.size.height; 296| 5| CGRect newRect = CGRectApplyAffineTransform(CGRectMake(0, 0, width, height), 297| 5| fitSize ? CGAffineTransformMakeRotation(angle) : CGAffineTransformIdentity); 298| 5| 299| 5|#if SD_UIKIT || SD_MAC 300| 5| // CIImage shortcut 301| 5| if (self.CIImage) { 302| 2| CIImage *ciImage = self.CIImage; 303| 2| if (fitSize) { 304| 1| CGAffineTransform transform = CGAffineTransformMakeRotation(angle); 305| 1| ciImage = [ciImage imageByApplyingTransform:transform]; 306| 1| } else { 307| 1| CIFilter *filter = [CIFilter filterWithName:@"CIStraightenFilter"]; 308| 1| [filter setValue:ciImage forKey:kCIInputImageKey]; 309| 1| [filter setValue:@(angle) forKey:kCIInputAngleKey]; 310| 1| ciImage = filter.outputImage; 311| 1| } 312| |#if SD_UIKIT || SD_WATCH 313| | UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; 314| |#else 315| 2| UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; 316| 2|#endif 317| 2| return image; 318| 2| } 319| 3|#endif 320| 3| 321| 3| SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; 322| 3| format.scale = self.scale; 323| 3| SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:newRect.size format:format]; 324| 3| UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { 325| 3| CGContextSetShouldAntialias(context, true); 326| 3| CGContextSetAllowsAntialiasing(context, true); 327| 3| CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 328| 3| CGContextTranslateCTM(context, +(newRect.size.width * 0.5), +(newRect.size.height * 0.5)); 329| |#if SD_UIKIT || SD_WATCH 330| | // Use UIKit coordinate system counterclockwise (⟲) 331| | CGContextRotateCTM(context, -angle); 332| |#else 333| | CGContextRotateCTM(context, angle); 334| 3|#endif 335| 3| 336| 3| [self drawInRect:CGRectMake(-(width * 0.5), -(height * 0.5), width, height)]; 337| 3| }]; 338| 3| return image; 339| 3|} 340| | 341| 3|- (nullable UIImage *)sd_flippedImageWithHorizontal:(BOOL)horizontal vertical:(BOOL)vertical { 342| 3| size_t width = self.size.width; 343| 3| size_t height = self.size.height; 344| 3| 345| 3|#if SD_UIKIT || SD_MAC 346| 3| // CIImage shortcut 347| 3| if (self.CIImage) { 348| 1| CGAffineTransform transform = CGAffineTransformIdentity; 349| 1| // Use UIKit coordinate system 350| 1| if (horizontal) { 351| 1| CGAffineTransform flipHorizontal = CGAffineTransformMake(-1, 0, 0, 1, width, 0); 352| 1| transform = CGAffineTransformConcat(transform, flipHorizontal); 353| 1| } 354| 1| if (vertical) { 355| 1| CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, height); 356| 1| transform = CGAffineTransformConcat(transform, flipVertical); 357| 1| } 358| 1| CIImage *ciImage = [self.CIImage imageByApplyingTransform:transform]; 359| |#if SD_UIKIT 360| | UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; 361| |#else 362| 1| UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; 363| 1|#endif 364| 1| return image; 365| 1| } 366| 2|#endif 367| 2| 368| 2| SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; 369| 2| format.scale = self.scale; 370| 2| SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:self.size format:format]; 371| 2| UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { 372| 2| // Use UIKit coordinate system 373| 2| if (horizontal) { 374| 2| CGAffineTransform flipHorizontal = CGAffineTransformMake(-1, 0, 0, 1, width, 0); 375| 2| CGContextConcatCTM(context, flipHorizontal); 376| 2| } 377| 2| if (vertical) { 378| 2| CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, height); 379| 2| CGContextConcatCTM(context, flipVertical); 380| 2| } 381| 2| [self drawInRect:CGRectMake(0, 0, width, height)]; 382| 2| }]; 383| 2| return image; 384| 2|} 385| | 386| |#pragma mark - Image Blending 387| | 388| 3|- (nullable UIImage *)sd_tintedImageWithColor:(nonnull UIColor *)tintColor { 389| 3| BOOL hasTint = CGColorGetAlpha(tintColor.CGColor) > __FLT_EPSILON__; 390| 3| if (!hasTint) { 391| 1| return self; 392| 1| } 393| 2| 394| 2|#if SD_UIKIT || SD_MAC 395| 2| // CIImage shortcut 396| 2| if (self.CIImage) { 397| 1| CIImage *ciImage = self.CIImage; 398| 1| CIImage *colorImage = [CIImage imageWithColor:[[CIColor alloc] initWithColor:tintColor]]; 399| 1| colorImage = [colorImage imageByCroppingToRect:ciImage.extent]; 400| 1| CIFilter *filter = [CIFilter filterWithName:@"CISourceAtopCompositing"]; 401| 1| [filter setValue:colorImage forKey:kCIInputImageKey]; 402| 1| [filter setValue:ciImage forKey:kCIInputBackgroundImageKey]; 403| 1| ciImage = filter.outputImage; 404| |#if SD_UIKIT 405| | UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; 406| |#else 407| 1| UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; 408| 1|#endif 409| 1| return image; 410| 1| } 411| 1|#endif 412| 1| 413| 1| CGSize size = self.size; 414| 1| CGRect rect = { CGPointZero, size }; 415| 1| CGFloat scale = self.scale; 416| 1| 417| 1| // blend mode, see https://en.wikipedia.org/wiki/Alpha_compositing 418| 1| CGBlendMode blendMode = kCGBlendModeSourceAtop; 419| 1| 420| 1| SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; 421| 1| format.scale = scale; 422| 1| SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:size format:format]; 423| 1| UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { 424| 1| [self drawInRect:rect]; 425| 1| CGContextSetBlendMode(context, blendMode); 426| 1| CGContextSetFillColorWithColor(context, tintColor.CGColor); 427| 1| CGContextFillRect(context, rect); 428| 1| }]; 429| 1| return image; 430| 1|} 431| | 432| 44|- (nullable UIColor *)sd_colorAtPoint:(CGPoint)point { 433| 44| CGImageRef imageRef = NULL; 434| 44| // CIImage compatible 435| 44|#if SD_UIKIT || SD_MAC 436| 44| if (self.CIImage) { 437| 11| imageRef = SDCreateCGImageFromCIImage(self.CIImage); 438| 11| } 439| 44|#endif 440| 44| if (!imageRef) { 441| 33| imageRef = self.CGImage; 442| 33| CGImageRetain(imageRef); 443| 33| } 444| 44| if (!imageRef) { 445| 0| return nil; 446| 0| } 447| 44| 448| 44| // Check point 449| 44| CGFloat width = CGImageGetWidth(imageRef); 450| 44| CGFloat height = CGImageGetHeight(imageRef); 451| 44| if (point.x < 0 || point.y < 0 || point.x >= width || point.y >= height) { 452| 0| CGImageRelease(imageRef); 453| 0| return nil; 454| 0| } 455| 44| 456| 44| // Get pixels 457| 44| CGDataProviderRef provider = CGImageGetDataProvider(imageRef); 458| 44| if (!provider) { 459| 0| CGImageRelease(imageRef); 460| 0| return nil; 461| 0| } 462| 44| CFDataRef data = CGDataProviderCopyData(provider); 463| 44| if (!data) { 464| 0| CGImageRelease(imageRef); 465| 0| return nil; 466| 0| } 467| 44| 468| 44| // Get pixel at point 469| 44| size_t bytesPerRow = CGImageGetBytesPerRow(imageRef); 470| 44| size_t components = CGImageGetBitsPerPixel(imageRef) / CGImageGetBitsPerComponent(imageRef); 471| 44| CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); 472| 44| 473| 44| CFRange range = CFRangeMake(bytesPerRow * point.y + components * point.x, 4); 474| 44| if (CFDataGetLength(data) < range.location + range.length) { 475| 0| CFRelease(data); 476| 0| CGImageRelease(imageRef); 477| 0| return nil; 478| 0| } 479| 44| Pixel_8888 pixel = {0}; 480| 44| CFDataGetBytes(data, range, pixel); 481| 44| CFRelease(data); 482| 44| CGImageRelease(imageRef); 483| 44| // Convert to color 484| 44| return SDGetColorFromPixel(pixel, bitmapInfo); 485| 44|} 486| | 487| 2|- (nullable NSArray *)sd_colorsWithRect:(CGRect)rect { 488| 2| CGImageRef imageRef = NULL; 489| 2| // CIImage compatible 490| 2|#if SD_UIKIT || SD_MAC 491| 2| if (self.CIImage) { 492| 1| imageRef = SDCreateCGImageFromCIImage(self.CIImage); 493| 1| } 494| 2|#endif 495| 2| if (!imageRef) { 496| 1| imageRef = self.CGImage; 497| 1| CGImageRetain(imageRef); 498| 1| } 499| 2| if (!imageRef) { 500| 0| return nil; 501| 0| } 502| 2| 503| 2| // Check rect 504| 2| CGFloat width = CGImageGetWidth(imageRef); 505| 2| CGFloat height = CGImageGetHeight(imageRef); 506| 2| if (CGRectGetWidth(rect) <= 0 || CGRectGetHeight(rect) <= 0 || CGRectGetMinX(rect) < 0 || CGRectGetMinY(rect) < 0 || CGRectGetMaxX(rect) > width || CGRectGetMaxY(rect) > height) { 507| 0| CGImageRelease(imageRef); 508| 0| return nil; 509| 0| } 510| 2| 511| 2| // Get pixels 512| 2| CGDataProviderRef provider = CGImageGetDataProvider(imageRef); 513| 2| if (!provider) { 514| 0| CGImageRelease(imageRef); 515| 0| return nil; 516| 0| } 517| 2| CFDataRef data = CGDataProviderCopyData(provider); 518| 2| if (!data) { 519| 0| CGImageRelease(imageRef); 520| 0| return nil; 521| 0| } 522| 2| 523| 2| // Get pixels with rect 524| 2| size_t bytesPerRow = CGImageGetBytesPerRow(imageRef); 525| 2| size_t components = CGImageGetBitsPerPixel(imageRef) / CGImageGetBitsPerComponent(imageRef); 526| 2| 527| 2| size_t start = bytesPerRow * CGRectGetMinY(rect) + components * CGRectGetMinX(rect); 528| 2| size_t end = bytesPerRow * (CGRectGetMaxY(rect) - 1) + components * CGRectGetMaxX(rect); 529| 2| if (CFDataGetLength(data) < (CFIndex)end) { 530| 0| CFRelease(data); 531| 0| CGImageRelease(imageRef); 532| 0| return nil; 533| 0| } 534| 2| 535| 2| const UInt8 *pixels = CFDataGetBytePtr(data); 536| 2| size_t row = CGRectGetMinY(rect); 537| 2| size_t col = CGRectGetMaxX(rect); 538| 2| 539| 2| // Convert to color 540| 2| CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); 541| 2| NSMutableArray *colors = [NSMutableArray arrayWithCapacity:CGRectGetWidth(rect) * CGRectGetHeight(rect)]; 542| 220| for (size_t index = start; index < end; index += 4) { 543| 218| if (index >= row * bytesPerRow + col * components) { 544| 18| // Index beyond the end of current row, go next row 545| 18| row++; 546| 18| index = row * bytesPerRow + CGRectGetMinX(rect) * components; 547| 18| index -= 4; 548| 18| continue; 549| 18| } 550| 200| Pixel_8888 pixel = {pixels[index], pixels[index+1], pixels[index+2], pixels[index+3]}; 551| 200| UIColor *color = SDGetColorFromPixel(pixel, bitmapInfo); 552| 200| [colors addObject:color]; 553| 200| } 554| 2| CFRelease(data); 555| 2| CGImageRelease(imageRef); 556| 2| 557| 2| return [colors copy]; 558| 2|} 559| | 560| |#pragma mark - Image Effect 561| | 562| |// We use vImage to do box convolve for performance and support for watchOS. However, you can just use `CIFilter.CIGaussianBlur`. For other blur effect, use any filter in `CICategoryBlur` 563| 3|- (nullable UIImage *)sd_blurredImageWithRadius:(CGFloat)blurRadius { 564| 3| if (self.size.width < 1 || self.size.height < 1) { 565| 0| return nil; 566| 0| } 567| 3| BOOL hasBlur = blurRadius > __FLT_EPSILON__; 568| 3| if (!hasBlur) { 569| 0| return self; 570| 0| } 571| 3| 572| 3| CGFloat scale = self.scale; 573| 3| CGFloat inputRadius = blurRadius * scale; 574| 3|#if SD_UIKIT || SD_MAC 575| 3| if (self.CIImage) { 576| 1| CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"]; 577| 1| [filter setValue:self.CIImage forKey:kCIInputImageKey]; 578| 1| [filter setValue:@(inputRadius) forKey:kCIInputRadiusKey]; 579| 1| CIImage *ciImage = filter.outputImage; 580| 1| ciImage = [ciImage imageByCroppingToRect:CGRectMake(0, 0, self.size.width, self.size.height)]; 581| |#if SD_UIKIT 582| | UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; 583| |#else 584| 1| UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; 585| 1|#endif 586| 1| return image; 587| 1| } 588| 2|#endif 589| 2| 590| 2| CGImageRef imageRef = self.CGImage; 591| 2| 592| 2| //convert to BGRA if it isn't 593| 2| if (CGImageGetBitsPerPixel(imageRef) != 32 || 594| 2| CGImageGetBitsPerComponent(imageRef) != 8 || 595| 2| !((CGImageGetBitmapInfo(imageRef) & kCGBitmapAlphaInfoMask))) { 596| 0| SDGraphicsBeginImageContextWithOptions(self.size, NO, self.scale); 597| 0| [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; 598| 0| imageRef = SDGraphicsGetImageFromCurrentImageContext().CGImage; 599| 0| SDGraphicsEndImageContext(); 600| 0| } 601| 2| 602| 2| vImage_Buffer effect = {}, scratch = {}; 603| 2| vImage_Buffer *input = NULL, *output = NULL; 604| 2| 605| 2| vImage_CGImageFormat format = { 606| 2| .bitsPerComponent = 8, 607| 2| .bitsPerPixel = 32, 608| 2| .colorSpace = NULL, 609| 2| .bitmapInfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host, //requests a BGRA buffer. 610| 2| .version = 0, 611| 2| .decode = NULL, 612| 2| .renderingIntent = kCGRenderingIntentDefault 613| 2| }; 614| 2| 615| 2| vImage_Error err; 616| 2| err = vImageBuffer_InitWithCGImage(&effect, &format, NULL, imageRef, kvImageNoFlags); 617| 2| if (err != kvImageNoError) { 618| 0| NSLog(@"UIImage+Transform error: vImageBuffer_InitWithCGImage returned error code %zi for inputImage: %@", err, self); 619| 0| return nil; 620| 0| } 621| 2| err = vImageBuffer_Init(&scratch, effect.height, effect.width, format.bitsPerPixel, kvImageNoFlags); 622| 2| if (err != kvImageNoError) { 623| 0| NSLog(@"UIImage+Transform error: vImageBuffer_Init returned error code %zi for inputImage: %@", err, self); 624| 0| return nil; 625| 0| } 626| 2| 627| 2| input = &effect; 628| 2| output = &scratch; 629| 2| 630| 2| if (hasBlur) { 631| 2| // A description of how to compute the box kernel width from the Gaussian 632| 2| // radius (aka standard deviation) appears in the SVG spec: 633| 2| // http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement 634| 2| // 635| 2| // For larger values of 's' (s >= 2.0), an approximation can be used: Three 636| 2| // successive box-blurs build a piece-wise quadratic convolution kernel, which 637| 2| // approximates the Gaussian kernel to within roughly 3%. 638| 2| // 639| 2| // let d = floor(s * 3*sqrt(2*pi)/4 + 0.5) 640| 2| // 641| 2| // ... if d is odd, use three box-blurs of size 'd', centered on the output pixel. 642| 2| // 643| 2| if (inputRadius - 2.0 < __FLT_EPSILON__) inputRadius = 2.0; 644| 2| uint32_t radius = floor(inputRadius * 3.0 * sqrt(2 * M_PI) / 4 + 0.5); 645| 2| radius |= 1; // force radius to be odd so that the three box-blur methodology works. 646| 2| int iterations; 647| 2| if (blurRadius * scale < 0.5) iterations = 1; 648| 2| else if (blurRadius * scale < 1.5) iterations = 2; 649| 2| else iterations = 3; 650| 2| NSInteger tempSize = vImageBoxConvolve_ARGB8888(input, output, NULL, 0, 0, radius, radius, NULL, kvImageGetTempBufferSize | kvImageEdgeExtend); 651| 2| void *temp = malloc(tempSize); 652| 8| for (int i = 0; i < iterations; i++) { 653| 6| vImageBoxConvolve_ARGB8888(input, output, temp, 0, 0, radius, radius, NULL, kvImageEdgeExtend); 654| 6| vImage_Buffer *tmp = input; 655| 6| input = output; 656| 6| output = tmp; 657| 6| } 658| 2| free(temp); 659| 2| } 660| 2| 661| 2| CGImageRef effectCGImage = NULL; 662| 2| effectCGImage = vImageCreateCGImageFromBuffer(input, &format, NULL, NULL, kvImageNoAllocate, NULL); 663| 2| if (effectCGImage == NULL) { 664| 0| effectCGImage = vImageCreateCGImageFromBuffer(input, &format, NULL, NULL, kvImageNoFlags, NULL); 665| 0| free(input->data); 666| 0| } 667| 2| free(output->data); 668| |#if SD_UIKIT || SD_WATCH 669| | UIImage *outputImage = [UIImage imageWithCGImage:effectCGImage scale:self.scale orientation:self.imageOrientation]; 670| |#else 671| 2| UIImage *outputImage = [[UIImage alloc] initWithCGImage:effectCGImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; 672| 2|#endif 673| 2| CGImageRelease(effectCGImage); 674| 2| 675| 2| return outputImage; 676| 2|} 677| | 678| |#if SD_UIKIT || SD_MAC 679| 3|- (nullable UIImage *)sd_filteredImageWithFilter:(nonnull CIFilter *)filter { 680| 3| CIImage *inputImage; 681| 3| if (self.CIImage) { 682| 1| inputImage = self.CIImage; 683| 2| } else { 684| 2| CGImageRef imageRef = self.CGImage; 685| 2| if (!imageRef) { 686| 0| return nil; 687| 0| } 688| 2| inputImage = [CIImage imageWithCGImage:imageRef]; 689| 2| } 690| 3| if (!inputImage) return nil; 691| 3| 692| 3| CIContext *context = [CIContext context]; 693| 3| [filter setValue:inputImage forKey:kCIInputImageKey]; 694| 3| CIImage *outputImage = filter.outputImage; 695| 3| if (!outputImage) return nil; 696| 3| 697| 3| CGImageRef imageRef = [context createCGImage:outputImage fromRect:outputImage.extent]; 698| 3| if (!imageRef) return nil; 699| 3| 700| |#if SD_UIKIT 701| | UIImage *image = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation]; 702| |#else 703| 3| UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:self.scale orientation:kCGImagePropertyOrientationUp]; 704| 3|#endif 705| 3| CGImageRelease(imageRef); 706| 3| 707| 3| return image; 708| 3|} 709| |#endif 710| | 711| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIImageView+WebCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIImageView+WebCache.h" 10| |#import "objc/runtime.h" 11| |#import "UIView+WebCacheOperation.h" 12| |#import "UIView+WebCache.h" 13| | 14| |@implementation UIImageView (WebCache) 15| | 16| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url { 17| 0| [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil]; 18| 0|} 19| | 20| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder { 21| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil]; 22| 0|} 23| | 24| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options { 25| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil]; 26| 0|} 27| | 28| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options context:(nullable SDWebImageContext *)context { 29| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:context progress:nil completed:nil]; 30| 0|} 31| | 32| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock { 33| 1| [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock]; 34| 1|} 35| | 36| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock { 37| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock]; 38| 0|} 39| | 40| 2|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock { 41| 2| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock]; 42| 2|} 43| | 44| 4|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options progress:(nullable SDImageLoaderProgressBlock)progressBlock completed:(nullable SDExternalCompletionBlock)completedBlock { 45| 4| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:nil progress:progressBlock completed:completedBlock]; 46| 4|} 47| | 48| |- (void)sd_setImageWithURL:(nullable NSURL *)url 49| | placeholderImage:(nullable UIImage *)placeholder 50| | options:(SDWebImageOptions)options 51| | context:(nullable SDWebImageContext *)context 52| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 53| 4| completed:(nullable SDExternalCompletionBlock)completedBlock { 54| 4| [self sd_internalSetImageWithURL:url 55| 4| placeholderImage:placeholder 56| 4| options:options 57| 4| context:context 58| 4| setImageBlock:nil 59| 4| progress:progressBlock 60| 4| completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { 61| 4| if (completedBlock) { 62| 4| completedBlock(image, error, cacheType, imageURL); 63| 4| } 64| 4| }]; 65| 4|} 66| | 67| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIView+WebCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIView+WebCache.h" 10| |#import "objc/runtime.h" 11| |#import "UIView+WebCacheOperation.h" 12| |#import "SDWebImageError.h" 13| |#import "SDInternalMacros.h" 14| |#import "SDWebImageTransitionInternal.h" 15| | 16| |const int64_t SDWebImageProgressUnitCountUnknown = 1LL; 17| | 18| |@implementation UIView (WebCache) 19| | 20| 1|- (nullable NSURL *)sd_imageURL { 21| 1| return objc_getAssociatedObject(self, @selector(sd_imageURL)); 22| 1|} 23| | 24| 15|- (void)setSd_imageURL:(NSURL * _Nullable)sd_imageURL { 25| 15| objc_setAssociatedObject(self, @selector(sd_imageURL), sd_imageURL, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 26| 15|} 27| | 28| 9|- (nullable NSString *)sd_latestOperationKey { 29| 9| return objc_getAssociatedObject(self, @selector(sd_latestOperationKey)); 30| 9|} 31| | 32| 17|- (void)setSd_latestOperationKey:(NSString * _Nullable)sd_latestOperationKey { 33| 17| objc_setAssociatedObject(self, @selector(sd_latestOperationKey), sd_latestOperationKey, OBJC_ASSOCIATION_COPY_NONATOMIC); 34| 17|} 35| | 36| 3|- (NSProgress *)sd_imageProgress { 37| 3| NSProgress *progress = objc_getAssociatedObject(self, @selector(sd_imageProgress)); 38| 3| if (!progress) { 39| 1| progress = [[NSProgress alloc] initWithParent:nil userInfo:nil]; 40| 1| self.sd_imageProgress = progress; 41| 1| } 42| 3| return progress; 43| 3|} 44| | 45| 1|- (void)setSd_imageProgress:(NSProgress *)sd_imageProgress { 46| 1| objc_setAssociatedObject(self, @selector(sd_imageProgress), sd_imageProgress, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 47| 1|} 48| | 49| |- (void)sd_internalSetImageWithURL:(nullable NSURL *)url 50| | placeholderImage:(nullable UIImage *)placeholder 51| | options:(SDWebImageOptions)options 52| | context:(nullable SDWebImageContext *)context 53| | setImageBlock:(nullable SDSetImageBlock)setImageBlock 54| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 55| 15| completed:(nullable SDInternalCompletionBlock)completedBlock { 56| 15| if (context) { 57| 5| // copy to avoid mutable object 58| 5| context = [context copy]; 59| 10| } else { 60| 10| context = [NSDictionary dictionary]; 61| 10| } 62| 15| NSString *validOperationKey = context[SDWebImageContextSetImageOperationKey]; 63| 15| if (!validOperationKey) { 64| 14| // pass through the operation key to downstream, which can used for tracing operation or image view class 65| 14| validOperationKey = NSStringFromClass([self class]); 66| 14| SDWebImageMutableContext *mutableContext = [context mutableCopy]; 67| 14| mutableContext[SDWebImageContextSetImageOperationKey] = validOperationKey; 68| 14| context = [mutableContext copy]; 69| 14| } 70| 15| self.sd_latestOperationKey = validOperationKey; 71| 15| [self sd_cancelImageLoadOperationWithKey:validOperationKey]; 72| 15| self.sd_imageURL = url; 73| 15| 74| 15| if (!(options & SDWebImageDelayPlaceholder)) { 75| 15| dispatch_main_async_safe(^{ 76| 15| [self sd_setImage:placeholder imageData:nil basedOnClassOrViaCustomSetImageBlock:setImageBlock cacheType:SDImageCacheTypeNone imageURL:url]; 77| 15| }); 78| 15| } 79| 15| 80| 15| if (url) { 81| 15| // reset the progress 82| 15| NSProgress *imageProgress = objc_getAssociatedObject(self, @selector(sd_imageProgress)); 83| 15| if (imageProgress) { 84| 1| imageProgress.totalUnitCount = 0; 85| 1| imageProgress.completedUnitCount = 0; 86| 1| } 87| 15| 88| 15|#if SD_UIKIT || SD_MAC 89| 15| // check and start image indicator 90| 15| [self sd_startImageIndicator]; 91| 15| id imageIndicator = self.sd_imageIndicator; 92| 15|#endif 93| 15| SDWebImageManager *manager = context[SDWebImageContextCustomManager]; 94| 15| if (!manager) { 95| 14| manager = [SDWebImageManager sharedManager]; 96| 14| } else { 97| 1| // remove this manager to avoid retain cycle (manger -> loader -> operation -> context -> manager) 98| 1| SDWebImageMutableContext *mutableContext = [context mutableCopy]; 99| 1| mutableContext[SDWebImageContextCustomManager] = nil; 100| 1| context = [mutableContext copy]; 101| 1| } 102| 15| 103| 19| SDImageLoaderProgressBlock combinedProgressBlock = ^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) { 104| 19| if (imageProgress) { 105| 3| imageProgress.totalUnitCount = expectedSize; 106| 3| imageProgress.completedUnitCount = receivedSize; 107| 3| } 108| 19|#if SD_UIKIT || SD_MAC 109| 19| if ([imageIndicator respondsToSelector:@selector(updateIndicatorProgress:)]) { 110| 3| double progress = 0; 111| 3| if (expectedSize != 0) { 112| 3| progress = (double)receivedSize / expectedSize; 113| 3| } 114| 3| progress = MAX(MIN(progress, 1), 0); // 0.0 - 1.0 115| 3| dispatch_async(dispatch_get_main_queue(), ^{ 116| 3| [imageIndicator updateIndicatorProgress:progress]; 117| 3| }); 118| 3| } 119| 19|#endif 120| 19| if (progressBlock) { 121| 7| progressBlock(receivedSize, expectedSize, targetURL); 122| 7| } 123| 19| }; 124| 15| @weakify(self); 125| 16| id operation = [manager loadImageWithURL:url options:options context:context progress:combinedProgressBlock completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 126| 16| @strongify(self); 127| 16| if (!self) { return; } 128| 15| // if the progress not been updated, mark it to complete state 129| 15| if (imageProgress && finished && !error && imageProgress.totalUnitCount == 0 && imageProgress.completedUnitCount == 0) { 130| 0| imageProgress.totalUnitCount = SDWebImageProgressUnitCountUnknown; 131| 0| imageProgress.completedUnitCount = SDWebImageProgressUnitCountUnknown; 132| 0| } 133| 15| 134| 15|#if SD_UIKIT || SD_MAC 135| 15| // check and stop image indicator 136| 15| if (finished) { 137| 14| [self sd_stopImageIndicator]; 138| 14| } 139| 15|#endif 140| 15| 141| 15| BOOL shouldCallCompletedBlock = finished || (options & SDWebImageAvoidAutoSetImage); 142| 15| BOOL shouldNotSetImage = ((image && (options & SDWebImageAvoidAutoSetImage)) || 143| 15| (!image && !(options & SDWebImageDelayPlaceholder))); 144| 15| SDWebImageNoParamsBlock callCompletedBlockClojure = ^{ 145| 15| if (!self) { return; } 146| 15| if (!shouldNotSetImage) { 147| 14| [self sd_setNeedsLayout]; 148| 14| } 149| 15| if (completedBlock && shouldCallCompletedBlock) { 150| 14| completedBlock(image, data, error, cacheType, finished, url); 151| 14| } 152| 15| }; 153| 15| 154| 15| // case 1a: we got an image, but the SDWebImageAvoidAutoSetImage flag is set 155| 15| // OR 156| 15| // case 1b: we got no image and the SDWebImageDelayPlaceholder is not set 157| 15| if (shouldNotSetImage) { 158| 1| dispatch_main_async_safe(callCompletedBlockClojure); 159| 1| return; 160| 1| } 161| 14| 162| 14| UIImage *targetImage = nil; 163| 14| NSData *targetData = nil; 164| 14| if (image) { 165| 14| // case 2a: we got an image and the SDWebImageAvoidAutoSetImage is not set 166| 14| targetImage = image; 167| 14| targetData = data; 168| 14| } else if (options & SDWebImageDelayPlaceholder) { 169| 0| // case 2b: we got no image and the SDWebImageDelayPlaceholder flag is set 170| 0| targetImage = placeholder; 171| 0| targetData = nil; 172| 0| } 173| 14| 174| 14|#if SD_UIKIT || SD_MAC 175| 14| // check whether we should use the image transition 176| 14| SDWebImageTransition *transition = nil; 177| 14| BOOL shouldUseTransition = NO; 178| 14| if (options & SDWebImageForceTransition) { 179| 1| // Always 180| 1| shouldUseTransition = YES; 181| 13| } else if (cacheType == SDImageCacheTypeNone) { 182| 6| // From network 183| 6| shouldUseTransition = YES; 184| 7| } else { 185| 7| // From disk (and, user don't use sync query) 186| 7| if (cacheType == SDImageCacheTypeMemory) { 187| 5| shouldUseTransition = NO; 188| 5| } else if (cacheType == SDImageCacheTypeDisk) { 189| 2| if (options & SDWebImageQueryMemoryDataSync || options & SDWebImageQueryDiskDataSync) { 190| 0| shouldUseTransition = NO; 191| 2| } else { 192| 2| shouldUseTransition = YES; 193| 2| } 194| 2| } else { 195| 0| // Not valid cache type, fallback 196| 0| shouldUseTransition = NO; 197| 0| } 198| 7| } 199| 14| if (finished && shouldUseTransition) { 200| 8| transition = self.sd_imageTransition; 201| 8| } 202| 14|#endif 203| 14| dispatch_main_async_safe(^{ 204| 14|#if SD_UIKIT || SD_MAC 205| 14| [self sd_setImage:targetImage imageData:targetData basedOnClassOrViaCustomSetImageBlock:setImageBlock transition:transition cacheType:cacheType imageURL:imageURL]; 206| |#else 207| | [self sd_setImage:targetImage imageData:targetData basedOnClassOrViaCustomSetImageBlock:setImageBlock cacheType:cacheType imageURL:imageURL]; 208| |#endif 209| | callCompletedBlockClojure(); 210| 14| }); 211| 14| }]; 212| 15| [self sd_setImageLoadOperation:operation forKey:validOperationKey]; 213| 15| } else { 214| 0|#if SD_UIKIT || SD_MAC 215| 0| [self sd_stopImageIndicator]; 216| 0|#endif 217| 0| dispatch_main_async_safe(^{ 218| 0| if (completedBlock) { 219| 0| NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidURL userInfo:@{NSLocalizedDescriptionKey : @"Image url is nil"}]; 220| 0| completedBlock(nil, nil, error, SDImageCacheTypeNone, YES, url); 221| 0| } 222| 0| }); 223| 0| } 224| 15|} 225| | 226| 2|- (void)sd_cancelCurrentImageLoad { 227| 2| [self sd_cancelImageLoadOperationWithKey:self.sd_latestOperationKey]; 228| 2| self.sd_latestOperationKey = nil; 229| 2|} 230| | 231| 15|- (void)sd_setImage:(UIImage *)image imageData:(NSData *)imageData basedOnClassOrViaCustomSetImageBlock:(SDSetImageBlock)setImageBlock cacheType:(SDImageCacheType)cacheType imageURL:(NSURL *)imageURL { 232| 15|#if SD_UIKIT || SD_MAC 233| 15| [self sd_setImage:image imageData:imageData basedOnClassOrViaCustomSetImageBlock:setImageBlock transition:nil cacheType:cacheType imageURL:imageURL]; 234| |#else 235| | // watchOS does not support view transition. Simplify the logic 236| | if (setImageBlock) { 237| | setImageBlock(image, imageData, cacheType, imageURL); 238| | } else if ([self isKindOfClass:[UIImageView class]]) { 239| | UIImageView *imageView = (UIImageView *)self; 240| | [imageView setImage:image]; 241| | } 242| |#endif 243| |} 244| | 245| |#if SD_UIKIT || SD_MAC 246| 29|- (void)sd_setImage:(UIImage *)image imageData:(NSData *)imageData basedOnClassOrViaCustomSetImageBlock:(SDSetImageBlock)setImageBlock transition:(SDWebImageTransition *)transition cacheType:(SDImageCacheType)cacheType imageURL:(NSURL *)imageURL { 247| 29| UIView *view = self; 248| 29| SDSetImageBlock finalSetImageBlock; 249| 29| if (setImageBlock) { 250| 6| finalSetImageBlock = setImageBlock; 251| 23| } else if ([view isKindOfClass:[UIImageView class]]) { 252| 15| UIImageView *imageView = (UIImageView *)view; 253| 15| finalSetImageBlock = ^(UIImage *setImage, NSData *setImageData, SDImageCacheType setCacheType, NSURL *setImageURL) { 254| 15| imageView.image = setImage; 255| 15| }; 256| 15| } 257| |#if SD_UIKIT 258| | else if ([view isKindOfClass:[UIButton class]]) { 259| | UIButton *button = (UIButton *)view; 260| | finalSetImageBlock = ^(UIImage *setImage, NSData *setImageData, SDImageCacheType setCacheType, NSURL *setImageURL) { 261| | [button setImage:setImage forState:UIControlStateNormal]; 262| | }; 263| | } 264| |#endif 265| |#if SD_MAC 266| 8| else if ([view isKindOfClass:[NSButton class]]) { 267| 2| NSButton *button = (NSButton *)view; 268| 2| finalSetImageBlock = ^(UIImage *setImage, NSData *setImageData, SDImageCacheType setCacheType, NSURL *setImageURL) { 269| 2| button.image = setImage; 270| 2| }; 271| 2| } 272| 29|#endif 273| 29| 274| 29| if (transition) { 275| |#if SD_UIKIT 276| | [UIView transitionWithView:view duration:0 options:0 animations:^{ 277| | if (!view.sd_latestOperationKey) { 278| | return; 279| | } 280| | // 0 duration to let UIKit render placeholder and prepares block 281| | if (transition.prepares) { 282| | transition.prepares(view, image, imageData, cacheType, imageURL); 283| | } 284| | } completion:^(BOOL finished) { 285| | [UIView transitionWithView:view duration:transition.duration options:transition.animationOptions animations:^{ 286| | if (!view.sd_latestOperationKey) { 287| | return; 288| | } 289| | if (finalSetImageBlock && !transition.avoidAutoSetImage) { 290| | finalSetImageBlock(image, imageData, cacheType, imageURL); 291| | } 292| | if (transition.animations) { 293| | transition.animations(view, image); 294| | } 295| | } completion:^(BOOL finished) { 296| | if (!view.sd_latestOperationKey) { 297| | return; 298| | } 299| | if (transition.completion) { 300| | transition.completion(finished); 301| | } 302| | }]; 303| | }]; 304| |#elif SD_MAC 305| 2| [NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull prepareContext) { 306| 2| if (!view.sd_latestOperationKey) { 307| 0| return; 308| 0| } 309| 2| // 0 duration to let AppKit render placeholder and prepares block 310| 2| prepareContext.duration = 0; 311| 2| if (transition.prepares) { 312| 0| transition.prepares(view, image, imageData, cacheType, imageURL); 313| 0| } 314| 2| } completionHandler:^{ 315| 2| [NSAnimationContext runAnimationGroup:^(NSAnimationContext * _Nonnull context) { 316| 2| if (!view.sd_latestOperationKey) { 317| 0| return; 318| 0| } 319| 2| context.duration = transition.duration; 320| 2|#pragma clang diagnostic push 321| 2|#pragma clang diagnostic ignored "-Wdeprecated-declarations" 322| 2| CAMediaTimingFunction *timingFunction = transition.timingFunction; 323| 2|#pragma clang diagnostic pop 324| 2| if (!timingFunction) { 325| 2| timingFunction = SDTimingFunctionFromAnimationOptions(transition.animationOptions); 326| 2| } 327| 2| context.timingFunction = timingFunction; 328| 2| context.allowsImplicitAnimation = SD_OPTIONS_CONTAINS(transition.animationOptions, SDWebImageAnimationOptionAllowsImplicitAnimation); 329| 2| if (finalSetImageBlock && !transition.avoidAutoSetImage) { 330| 2| finalSetImageBlock(image, imageData, cacheType, imageURL); 331| 2| } 332| 2| CATransition *trans = SDTransitionFromAnimationOptions(transition.animationOptions); 333| 2| if (trans) { 334| 2| [view.layer addAnimation:trans forKey:kCATransition]; 335| 2| } 336| 2| if (transition.animations) { 337| 0| transition.animations(view, image); 338| 0| } 339| 2| } completionHandler:^{ 340| 2| if (!view.sd_latestOperationKey) { 341| 0| return; 342| 0| } 343| 2| if (transition.completion) { 344| 0| transition.completion(YES); 345| 0| } 346| 2| }]; 347| 2| }]; 348| 2|#endif 349| 27| } else { 350| 27| if (finalSetImageBlock) { 351| 21| finalSetImageBlock(image, imageData, cacheType, imageURL); 352| 21| } 353| 27| } 354| 29|} 355| |#endif 356| | 357| 14|- (void)sd_setNeedsLayout { 358| |#if SD_UIKIT 359| | [self setNeedsLayout]; 360| |#elif SD_MAC 361| | [self setNeedsLayout:YES]; 362| |#elif SD_WATCH 363| | // Do nothing because WatchKit automatically layout the view after property change 364| |#endif 365| |} 366| | 367| |#if SD_UIKIT || SD_MAC 368| | 369| |#pragma mark - Image Transition 370| 10|- (SDWebImageTransition *)sd_imageTransition { 371| 10| return objc_getAssociatedObject(self, @selector(sd_imageTransition)); 372| 10|} 373| | 374| 8|- (void)setSd_imageTransition:(SDWebImageTransition *)sd_imageTransition { 375| 8| objc_setAssociatedObject(self, @selector(sd_imageTransition), sd_imageTransition, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 376| 8|} 377| | 378| |#pragma mark - Indicator 379| 54|- (id)sd_imageIndicator { 380| 54| return objc_getAssociatedObject(self, @selector(sd_imageIndicator)); 381| 54|} 382| | 383| 5|- (void)setSd_imageIndicator:(id)sd_imageIndicator { 384| 5| // Remove the old indicator view 385| 5| id previousIndicator = self.sd_imageIndicator; 386| 5| [previousIndicator.indicatorView removeFromSuperview]; 387| 5| 388| 5| objc_setAssociatedObject(self, @selector(sd_imageIndicator), sd_imageIndicator, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 389| 5| 390| 5| // Add the new indicator view 391| 5| UIView *view = sd_imageIndicator.indicatorView; 392| 5| if (CGRectEqualToRect(view.frame, CGRectZero)) { 393| 0| view.frame = self.bounds; 394| 0| } 395| 5| // Center the indicator view 396| 5|#if SD_MAC 397| 5| [view setFrameOrigin:CGPointMake(round((NSWidth(self.bounds) - NSWidth(view.frame)) / 2), round((NSHeight(self.bounds) - NSHeight(view.frame)) / 2))]; 398| |#else 399| | view.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); 400| |#endif 401| | view.hidden = NO; 402| 5| [self addSubview:view]; 403| 5|} 404| | 405| 15|- (void)sd_startImageIndicator { 406| 15| id imageIndicator = self.sd_imageIndicator; 407| 15| if (!imageIndicator) { 408| 14| return; 409| 14| } 410| 1| dispatch_main_async_safe(^{ 411| 1| [imageIndicator startAnimatingIndicator]; 412| 1| }); 413| 1|} 414| | 415| 14|- (void)sd_stopImageIndicator { 416| 14| id imageIndicator = self.sd_imageIndicator; 417| 14| if (!imageIndicator) { 418| 13| return; 419| 13| } 420| 1| dispatch_main_async_safe(^{ 421| 1| [imageIndicator stopAnimatingIndicator]; 422| 1| }); 423| 1|} 424| | 425| |#endif 426| | 427| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Core/UIView+WebCacheOperation.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIView+WebCacheOperation.h" 10| |#import "objc/runtime.h" 11| | 12| |static char loadOperationKey; 13| | 14| |// key is strong, value is weak because operation instance is retained by SDWebImageManager's runningOperations property 15| |// we should use lock to keep thread-safe because these method may not be accessed from main queue 16| |typedef NSMapTable> SDOperationsDictionary; 17| | 18| |@implementation UIView (WebCacheOperation) 19| | 20| 48|- (SDOperationsDictionary *)sd_operationDictionary { 21| 48| @synchronized(self) { 22| 48| SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); 23| 48| if (operations) { 24| 33| return operations; 25| 33| } 26| 15| operations = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsWeakMemory capacity:0]; 27| 15| objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 28| 15| return operations; 29| 15| } 30| 15|} 31| | 32| 1|- (nullable id)sd_imageLoadOperationForKey:(nullable NSString *)key { 33| 1| id operation; 34| 1| if (key) { 35| 1| SDOperationsDictionary *operationDictionary = [self sd_operationDictionary]; 36| 1| @synchronized (self) { 37| 1| operation = [operationDictionary objectForKey:key]; 38| 1| } 39| 1| } 40| 1| return operation; 41| 1|} 42| | 43| 15|- (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key { 44| 15| if (key) { 45| 15| [self sd_cancelImageLoadOperationWithKey:key]; 46| 15| if (operation) { 47| 15| SDOperationsDictionary *operationDictionary = [self sd_operationDictionary]; 48| 15| @synchronized (self) { 49| 15| [operationDictionary setObject:operation forKey:key]; 50| 15| } 51| 15| } 52| 15| } 53| 15|} 54| | 55| 32|- (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key { 56| 32| if (key) { 57| 32| // Cancel in progress downloader from queue 58| 32| SDOperationsDictionary *operationDictionary = [self sd_operationDictionary]; 59| 32| id operation; 60| 32| 61| 32| @synchronized (self) { 62| 32| operation = [operationDictionary objectForKey:key]; 63| 32| } 64| 32| if (operation) { 65| 2| if ([operation conformsToProtocol:@protocol(SDWebImageOperation)]) { 66| 2| [operation cancel]; 67| 2| } 68| 2| @synchronized (self) { 69| 2| [operationDictionary removeObjectForKey:key]; 70| 2| } 71| 2| } 72| 32| } 73| 32|} 74| | 75| 0|- (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key { 76| 0| if (key) { 77| 0| SDOperationsDictionary *operationDictionary = [self sd_operationDictionary]; 78| 0| @synchronized (self) { 79| 0| [operationDictionary removeObjectForKey:key]; 80| 0| } 81| 0| } 82| 0|} 83| | 84| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/NSBezierPath+SDRoundedCorners.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "NSBezierPath+SDRoundedCorners.h" 10| | 11| |#if SD_MAC 12| | 13| |@implementation NSBezierPath (SDRoundedCorners) 14| | 15| 6|+ (instancetype)sd_bezierPathWithRoundedRect:(NSRect)rect byRoundingCorners:(SDRectCorner)corners cornerRadius:(CGFloat)cornerRadius { 16| 6| NSBezierPath *path = [NSBezierPath bezierPath]; 17| 6| 18| 6| CGFloat maxCorner = MIN(NSWidth(rect), NSHeight(rect)) / 2; 19| 6| 20| 6| CGFloat topLeftRadius = MIN(maxCorner, (corners & SDRectCornerTopLeft) ? cornerRadius : 0); 21| 6| CGFloat topRightRadius = MIN(maxCorner, (corners & SDRectCornerTopRight) ? cornerRadius : 0); 22| 6| CGFloat bottomLeftRadius = MIN(maxCorner, (corners & SDRectCornerBottomLeft) ? cornerRadius : 0); 23| 6| CGFloat bottomRightRadius = MIN(maxCorner, (corners & SDRectCornerBottomRight) ? cornerRadius : 0); 24| 6| 25| 6| NSPoint topLeft = NSMakePoint(NSMinX(rect), NSMaxY(rect)); 26| 6| NSPoint topRight = NSMakePoint(NSMaxX(rect), NSMaxY(rect)); 27| 6| NSPoint bottomLeft = NSMakePoint(NSMinX(rect), NSMinY(rect)); 28| 6| NSPoint bottomRight = NSMakePoint(NSMaxX(rect), NSMinY(rect)); 29| 6| 30| 6| [path moveToPoint:NSMakePoint(NSMidX(rect), NSMaxY(rect))]; 31| 6| [path appendBezierPathWithArcFromPoint:topLeft toPoint:bottomLeft radius:topLeftRadius]; 32| 6| [path appendBezierPathWithArcFromPoint:bottomLeft toPoint:bottomRight radius:bottomLeftRadius]; 33| 6| [path appendBezierPathWithArcFromPoint:bottomRight toPoint:topRight radius:bottomRightRadius]; 34| 6| [path appendBezierPathWithArcFromPoint:topRight toPoint:topLeft radius:topRightRadius]; 35| 6| [path closePath]; 36| 6| 37| 6| return path; 38| 6|} 39| | 40| |@end 41| | 42| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDAssociatedObject.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDAssociatedObject.h" 10| |#import "UIImage+Metadata.h" 11| |#import "UIImage+ExtendedCacheData.h" 12| |#import "UIImage+MemoryCacheCost.h" 13| |#import "UIImage+ForceDecode.h" 14| | 15| 84|void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable target) { 16| 84| if (!source || !target) { 17| 0| return; 18| 0| } 19| 84| // Image Metadata 20| 84| target.sd_isIncremental = source.sd_isIncremental; 21| 84| target.sd_imageLoopCount = source.sd_imageLoopCount; 22| 84| target.sd_imageFormat = source.sd_imageFormat; 23| 84| // Force Decode 24| 84| target.sd_isDecoded = source.sd_isDecoded; 25| 84| // Extended Cache Data 26| 84| target.sd_extendedObject = source.sd_extendedObject; 27| 84|} /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDAsyncBlockOperation.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDAsyncBlockOperation.h" 10| | 11| |@interface SDAsyncBlockOperation () 12| | 13| |@property (assign, nonatomic, getter = isExecuting) BOOL executing; 14| |@property (assign, nonatomic, getter = isFinished) BOOL finished; 15| |@property (nonatomic, copy, nonnull) SDAsyncBlock executionBlock; 16| | 17| |@end 18| | 19| |@implementation SDAsyncBlockOperation 20| | 21| |@synthesize executing = _executing; 22| |@synthesize finished = _finished; 23| | 24| 33|- (nonnull instancetype)initWithBlock:(nonnull SDAsyncBlock)block { 25| 33| self = [super init]; 26| 33| if (self) { 27| 33| self.executionBlock = block; 28| 33| } 29| 33| return self; 30| 33|} 31| | 32| 33|+ (nonnull instancetype)blockOperationWithBlock:(nonnull SDAsyncBlock)block { 33| 33| SDAsyncBlockOperation *operation = [[SDAsyncBlockOperation alloc] initWithBlock:block]; 34| 33| return operation; 35| 33|} 36| | 37| 33|- (void)start { 38| 33| @synchronized (self) { 39| 33| if (self.isCancelled) { 40| 3| self.finished = YES; 41| 3| return; 42| 3| } 43| 30| 44| 30| self.finished = NO; 45| 30| self.executing = YES; 46| 30| 47| 30| if (self.executionBlock) { 48| 30| self.executionBlock(self); 49| 30| } else { 50| 0| self.executing = NO; 51| 0| self.finished = YES; 52| 0| } 53| 30| } 54| 30|} 55| | 56| 3|- (void)cancel { 57| 3| @synchronized (self) { 58| 3| [super cancel]; 59| 3| if (self.isExecuting) { 60| 0| self.executing = NO; 61| 0| self.finished = YES; 62| 0| } 63| 3| } 64| 3|} 65| | 66| | 67| 30|- (void)complete { 68| 30| @synchronized (self) { 69| 30| if (self.isExecuting) { 70| 30| self.finished = YES; 71| 30| self.executing = NO; 72| 30| } 73| 30| } 74| 30| } 75| | 76| 63|- (void)setFinished:(BOOL)finished { 77| 63| [self willChangeValueForKey:@"isFinished"]; 78| 63| _finished = finished; 79| 63| [self didChangeValueForKey:@"isFinished"]; 80| 63|} 81| | 82| 60|- (void)setExecuting:(BOOL)executing { 83| 60| [self willChangeValueForKey:@"isExecuting"]; 84| 60| _executing = executing; 85| 60| [self didChangeValueForKey:@"isExecuting"]; 86| 60|} 87| | 88| 0|- (BOOL)isConcurrent { 89| 0| return YES; 90| 0|} 91| | 92| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDDeviceHelper.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDDeviceHelper.h" 10| |#import 11| | 12| |@implementation SDDeviceHelper 13| | 14| 9|+ (NSUInteger)totalMemory { 15| 9| return (NSUInteger)[[NSProcessInfo processInfo] physicalMemory]; 16| 9|} 17| | 18| 9|+ (NSUInteger)freeMemory { 19| 9| mach_port_t host_port = mach_host_self(); 20| 9| mach_msg_type_number_t host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t); 21| 9| vm_size_t page_size; 22| 9| vm_statistics_data_t vm_stat; 23| 9| kern_return_t kern; 24| 9| 25| 9| kern = host_page_size(host_port, &page_size); 26| 9| if (kern != KERN_SUCCESS) return 0; 27| 9| kern = host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size); 28| 9| if (kern != KERN_SUCCESS) return 0; 29| 9| return vm_stat.free_count * page_size; 30| 9|} 31| | 32| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDDisplayLink.m: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import "SDDisplayLink.h" 10| |#import "SDWeakProxy.h" 11| |#if SD_MAC 12| |#import 13| |#elif SD_IOS || SD_TV 14| |#import 15| |#endif 16| | 17| |#if SD_MAC 18| |static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext); 19| |#endif 20| | 21| 1|#define kSDDisplayLinkInterval 1.0 / 60 22| | 23| |@interface SDDisplayLink () 24| | 25| |#if SD_MAC 26| |@property (nonatomic, assign) CVDisplayLinkRef displayLink; 27| |@property (nonatomic, assign) CVTimeStamp outputTime; 28| |@property (nonatomic, copy) NSRunLoopMode runloopMode; 29| |#elif SD_IOS || SD_TV 30| |@property (nonatomic, strong) CADisplayLink *displayLink; 31| |#else 32| |@property (nonatomic, strong) NSTimer *displayLink; 33| |@property (nonatomic, strong) NSRunLoop *runloop; 34| |@property (nonatomic, copy) NSRunLoopMode runloopMode; 35| |@property (nonatomic, assign) NSTimeInterval currentFireDate; 36| |#endif 37| | 38| |@end 39| | 40| |@implementation SDDisplayLink 41| | 42| 5|- (void)dealloc { 43| 5|#if SD_MAC 44| 5| if (_displayLink) { 45| 5| CVDisplayLinkRelease(_displayLink); 46| 5| _displayLink = NULL; 47| 5| } 48| |#elif SD_IOS || SD_TV 49| | [_displayLink invalidate]; 50| | _displayLink = nil; 51| |#else 52| | [_displayLink invalidate]; 53| | _displayLink = nil; 54| |#endif 55| |} 56| | 57| 8|- (instancetype)initWithTarget:(id)target selector:(SEL)sel { 58| 8| self = [super init]; 59| 8| if (self) { 60| 8| _target = target; 61| 8| _selector = sel; 62| 8|#if SD_MAC 63| 8| CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink); 64| 8| CVDisplayLinkSetOutputCallback(_displayLink, DisplayLinkCallback, (__bridge void *)self); 65| |#elif SD_IOS || SD_TV 66| | SDWeakProxy *weakProxy = [SDWeakProxy proxyWithTarget:self]; 67| | _displayLink = [CADisplayLink displayLinkWithTarget:weakProxy selector:@selector(displayLinkDidRefresh:)]; 68| |#else 69| | SDWeakProxy *weakProxy = [SDWeakProxy proxyWithTarget:self]; 70| | _displayLink = [NSTimer timerWithTimeInterval:kSDDisplayLinkInterval target:weakProxy selector:@selector(displayLinkDidRefresh:) userInfo:nil repeats:YES]; 71| |#endif 72| | } 73| 8| return self; 74| 8|} 75| | 76| 8|+ (instancetype)displayLinkWithTarget:(id)target selector:(SEL)sel { 77| 8| SDDisplayLink *displayLink = [[SDDisplayLink alloc] initWithTarget:target selector:sel]; 78| 8| return displayLink; 79| 8|} 80| | 81| 8.15k|- (CFTimeInterval)duration { 82| 8.15k|#if SD_MAC 83| 8.15k| CVTimeStamp outputTime = self.outputTime; 84| 8.15k| NSTimeInterval duration = 0; 85| 8.15k| double periodPerSecond = (double)outputTime.videoTimeScale * outputTime.rateScalar; 86| 8.15k| if (periodPerSecond > 0) { 87| 8.15k| duration = (double)outputTime.videoRefreshPeriod / periodPerSecond; 88| 8.15k| } 89| |#elif SD_IOS || SD_TV 90| |#pragma clang diagnostic push 91| |#pragma clang diagnostic ignored "-Wdeprecated-declarations" 92| | NSTimeInterval duration = self.displayLink.duration * self.displayLink.frameInterval; 93| |#pragma clang diagnostic pop 94| |#else 95| | NSTimeInterval duration = 0; 96| | if (self.displayLink.isValid && self.currentFireDate != 0) { 97| | NSTimeInterval nextFireDate = CFRunLoopTimerGetNextFireDate((__bridge CFRunLoopTimerRef)self.displayLink); 98| | duration = nextFireDate - self.currentFireDate; 99| | } 100| |#endif 101| 8.15k| if (duration == 0) { 102| 1| duration = kSDDisplayLinkInterval; 103| 1| } 104| 8.15k| return duration; 105| 8.15k|} 106| | 107| 13.2k|- (BOOL)isRunning { 108| 13.2k|#if SD_MAC 109| 13.2k| return CVDisplayLinkIsRunning(self.displayLink); 110| |#elif SD_IOS || SD_TV 111| | return !self.displayLink.isPaused; 112| |#else 113| | return self.displayLink.isValid; 114| |#endif 115| |} 116| | 117| 8|- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode { 118| 8| if (!runloop || !mode) { 119| 0| return; 120| 0| } 121| 8|#if SD_MAC 122| 8| self.runloopMode = mode; 123| |#elif SD_IOS || SD_TV 124| | [self.displayLink addToRunLoop:runloop forMode:mode]; 125| |#else 126| | self.runloop = runloop; 127| | self.runloopMode = mode; 128| | CFRunLoopMode cfMode; 129| | if ([mode isEqualToString:NSDefaultRunLoopMode]) { 130| | cfMode = kCFRunLoopDefaultMode; 131| | } else if ([mode isEqualToString:NSRunLoopCommonModes]) { 132| | cfMode = kCFRunLoopCommonModes; 133| | } else { 134| | cfMode = (__bridge CFStringRef)mode; 135| | } 136| | CFRunLoopAddTimer(runloop.getCFRunLoop, (__bridge CFRunLoopTimerRef)self.displayLink, cfMode); 137| |#endif 138| |} 139| | 140| 0|- (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode { 141| 0| if (!runloop || !mode) { 142| 0| return; 143| 0| } 144| 0|#if SD_MAC 145| 0| self.runloopMode = nil; 146| |#elif SD_IOS || SD_TV 147| | [self.displayLink removeFromRunLoop:runloop forMode:mode]; 148| |#else 149| | self.runloop = nil; 150| | self.runloopMode = nil; 151| | CFRunLoopMode cfMode; 152| | if ([mode isEqualToString:NSDefaultRunLoopMode]) { 153| | cfMode = kCFRunLoopDefaultMode; 154| | } else if ([mode isEqualToString:NSRunLoopCommonModes]) { 155| | cfMode = kCFRunLoopCommonModes; 156| | } else { 157| | cfMode = (__bridge CFStringRef)mode; 158| | } 159| | CFRunLoopRemoveTimer(runloop.getCFRunLoop, (__bridge CFRunLoopTimerRef)self.displayLink, cfMode); 160| |#endif 161| |} 162| | 163| 11|- (void)start { 164| 11|#if SD_MAC 165| 11| CVDisplayLinkStart(self.displayLink); 166| |#elif SD_IOS || SD_TV 167| | self.displayLink.paused = NO; 168| |#else 169| | if (self.displayLink.isValid) { 170| | [self.displayLink fire]; 171| | } else { 172| | SDWeakProxy *weakProxy = [SDWeakProxy proxyWithTarget:self]; 173| | self.displayLink = [NSTimer timerWithTimeInterval:kSDDisplayLinkInterval target:weakProxy selector:@selector(displayLinkDidRefresh:) userInfo:nil repeats:YES]; 174| | [self addToRunLoop:self.runloop forMode:self.runloopMode]; 175| | } 176| |#endif 177| |} 178| | 179| 26|- (void)stop { 180| 26|#if SD_MAC 181| 26| CVDisplayLinkStop(self.displayLink); 182| |#elif SD_IOS || SD_TV 183| | self.displayLink.paused = YES; 184| |#else 185| | [self.displayLink invalidate]; 186| |#endif 187| |} 188| | 189| 8.16k|- (void)displayLinkDidRefresh:(id)displayLink { 190| 8.16k|#if SD_MAC 191| 8.16k| // CVDisplayLink does not use runloop, but we can provide similar behavior for modes 192| 8.16k| // May use `default` runloop to avoid extra callback when in `eventTracking` (mouse drag, scroll) or `modalPanel` (modal panel) 193| 8.16k| NSString *runloopMode = self.runloopMode; 194| 8.16k| if (![runloopMode isEqualToString:NSRunLoopCommonModes] && ![runloopMode isEqualToString:NSRunLoop.mainRunLoop.currentMode]) { 195| 0| return; 196| 0| } 197| 8.16k|#endif 198| 8.16k|#pragma clang diagnostic push 199| 8.16k|#pragma clang diagnostic ignored "-Warc-performSelector-leaks" 200| 8.16k| [_target performSelector:_selector withObject:self]; 201| 8.16k|#pragma clang diagnostic pop 202| |#if SD_WATCH 203| | self.currentFireDate = CFRunLoopTimerGetNextFireDate((__bridge CFRunLoopTimerRef)self.displayLink); 204| |#endif 205| |} 206| | 207| |@end 208| | 209| |#if SD_MAC 210| 8.16k|static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) { 211| 8.16k| // CVDisplayLink callback is not on main queue 212| 8.16k| SDDisplayLink *object = (__bridge SDDisplayLink *)displayLinkContext; 213| 8.16k| if (inOutputTime) { 214| 8.16k| object.outputTime = *inOutputTime; 215| 8.16k| } 216| 8.16k| __weak SDDisplayLink *weakObject = object; 217| 8.16k| dispatch_async(dispatch_get_main_queue(), ^{ 218| 8.16k| [weakObject displayLinkDidRefresh:(__bridge id)(displayLink)]; 219| 8.16k| }); 220| 8.16k| return kCVReturnSuccess; 221| 8.16k|} 222| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m: 1| |// 2| |// This file is from https://gist.github.com/zydeco/6292773 3| |// 4| |// Created by Jesús A. Álvarez on 2008-12-17. 5| |// Copyright 2008-2009 namedfork.net. All rights reserved. 6| |// 7| | 8| |#import "SDFileAttributeHelper.h" 9| |#import 10| | 11| |@implementation SDFileAttributeHelper 12| | 13| 2|+ (NSArray*)extendedAttributeNamesAtPath:(NSString *)path traverseLink:(BOOL)follow error:(NSError **)err { 14| 2| int flags = follow? 0 : XATTR_NOFOLLOW; 15| 2| 16| 2| // get size of name list 17| 2| ssize_t nameBuffLen = listxattr([path fileSystemRepresentation], NULL, 0, flags); 18| 2| if (nameBuffLen == -1) { 19| 0| if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: 20| 0| @{ 21| 0| @"error": [NSString stringWithUTF8String:strerror(errno)], 22| 0| @"function": @"listxattr", 23| 0| @":path": path, 24| 0| @":traverseLink": @(follow) 25| 0| } 26| 0| ]; 27| 0| return nil; 28| 2| } else if (nameBuffLen == 0) return @[]; 29| 1| 30| 1| // get name list 31| 1| NSMutableData *nameBuff = [NSMutableData dataWithLength:nameBuffLen]; 32| 1| listxattr([path fileSystemRepresentation], [nameBuff mutableBytes], nameBuffLen, flags); 33| 1| 34| 1| // convert to array 35| 1| NSMutableArray * names = [NSMutableArray arrayWithCapacity:5]; 36| 1| char *nextName, *endOfNames = [nameBuff mutableBytes] + nameBuffLen; 37| 2| for(nextName = [nameBuff mutableBytes]; nextName < endOfNames; nextName += 1+strlen(nextName)) 38| 1| [names addObject:[NSString stringWithUTF8String:nextName]]; 39| 1| return names.copy; 40| 1|} 41| | 42| 2|+ (BOOL)hasExtendedAttribute:(NSString *)name atPath:(NSString *)path traverseLink:(BOOL)follow error:(NSError **)err { 43| 2| int flags = follow? 0 : XATTR_NOFOLLOW; 44| 2| 45| 2| // get size of name list 46| 2| ssize_t nameBuffLen = listxattr([path fileSystemRepresentation], NULL, 0, flags); 47| 2| if (nameBuffLen == -1) { 48| 0| if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: 49| 0| @{ 50| 0| @"error": [NSString stringWithUTF8String:strerror(errno)], 51| 0| @"function": @"listxattr", 52| 0| @":path": path, 53| 0| @":traverseLink": @(follow) 54| 0| } 55| 0| ]; 56| 0| return NO; 57| 2| } else if (nameBuffLen == 0) return NO; 58| 1| 59| 1| // get name list 60| 1| NSMutableData *nameBuff = [NSMutableData dataWithLength:nameBuffLen]; 61| 1| listxattr([path fileSystemRepresentation], [nameBuff mutableBytes], nameBuffLen, flags); 62| 1| 63| 1| // find our name 64| 1| char *nextName, *endOfNames = [nameBuff mutableBytes] + nameBuffLen; 65| 1| for(nextName = [nameBuff mutableBytes]; nextName < endOfNames; nextName += 1+strlen(nextName)) 66| 1| if (strcmp(nextName, [name UTF8String]) == 0) return YES; 67| 1| return NO; 68| 1|} 69| | 70| 12|+ (NSData *)extendedAttribute:(NSString *)name atPath:(NSString *)path traverseLink:(BOOL)follow error:(NSError **)err { 71| 12| int flags = follow? 0 : XATTR_NOFOLLOW; 72| 12| // get length 73| 12| ssize_t attrLen = getxattr([path fileSystemRepresentation], [name UTF8String], NULL, 0, 0, flags); 74| 12| if (attrLen == -1) { 75| 9| if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: 76| 0| @{ 77| 0| @"error": [NSString stringWithUTF8String:strerror(errno)], 78| 0| @"function": @"getxattr", 79| 0| @":name": name, 80| 0| @":path": path, 81| 0| @":traverseLink": @(follow) 82| 0| } 83| 0| ]; 84| 9| return nil; 85| 9| } 86| 3| 87| 3| // get attribute data 88| 3| NSMutableData *attrData = [NSMutableData dataWithLength:attrLen]; 89| 3| getxattr([path fileSystemRepresentation], [name UTF8String], [attrData mutableBytes], attrLen, 0, flags); 90| 3| return attrData; 91| 3|} 92| | 93| 4|+ (BOOL)setExtendedAttribute:(NSString *)name value:(NSData *)value atPath:(NSString *)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError **)err { 94| 4| int flags = (follow? 0 : XATTR_NOFOLLOW) | (overwrite? 0 : XATTR_CREATE); 95| 4| if (0 == setxattr([path fileSystemRepresentation], [name UTF8String], [value bytes], [value length], 0, flags)) return YES; 96| 0| // error 97| 0| if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: 98| 0| @{ 99| 0| @"error": [NSString stringWithUTF8String:strerror(errno)], 100| 0| @"function": @"setxattr", 101| 0| @":name": name, 102| 0| @":value.length": @(value.length), 103| 0| @":path": path, 104| 0| @":traverseLink": @(follow), 105| 0| @":overwrite": @(overwrite) 106| 0| } 107| 0| ]; 108| 0| return NO; 109| 0|} 110| | 111| 2|+ (BOOL)removeExtendedAttribute:(NSString *)name atPath:(NSString *)path traverseLink:(BOOL)follow error:(NSError **)err { 112| 2| int flags = (follow? 0 : XATTR_NOFOLLOW); 113| 2| if (0 == removexattr([path fileSystemRepresentation], [name UTF8String], flags)) return YES; 114| 0| // error 115| 0| if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: 116| 0| @{ 117| 0| @"error": [NSString stringWithUTF8String:strerror(errno)], 118| 0| @"function": @"removexattr", 119| 0| @":name": name, 120| 0| @":path": path, 121| 0| @":traverseLink": @(follow) 122| 0| } 123| 0| ]; 124| 0| return NO; 125| 0|} 126| | 127| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDImageAssetManager.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageAssetManager.h" 10| |#import "SDInternalMacros.h" 11| | 12| 2|static NSArray *SDBundlePreferredScales() { 13| 2| static NSArray *scales; 14| 2| static dispatch_once_t onceToken; 15| 2| dispatch_once(&onceToken, ^{ 16| |#if SD_WATCH 17| | CGFloat screenScale = [WKInterfaceDevice currentDevice].screenScale; 18| |#elif SD_UIKIT 19| | CGFloat screenScale = [UIScreen mainScreen].scale; 20| |#elif SD_MAC 21| | CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; 22| 1|#endif 23| 1| if (screenScale <= 1) { 24| 1| scales = @[@1,@2,@3]; 25| 1| } else if (screenScale <= 2) { 26| 0| scales = @[@2,@3,@1]; 27| 0| } else { 28| 0| scales = @[@3,@2,@1]; 29| 0| } 30| 1| }); 31| 2| return scales; 32| 2|} 33| | 34| |@implementation SDImageAssetManager { 35| | dispatch_semaphore_t _lock; 36| |} 37| | 38| 2|+ (instancetype)sharedAssetManager { 39| 2| static dispatch_once_t onceToken; 40| 2| static SDImageAssetManager *assetManager; 41| 2| dispatch_once(&onceToken, ^{ 42| 1| assetManager = [[SDImageAssetManager alloc] init]; 43| 1| }); 44| 2| return assetManager; 45| 2|} 46| | 47| 1|- (instancetype)init { 48| 1| self = [super init]; 49| 1| if (self) { 50| 1| NSPointerFunctionsOptions valueOptions; 51| 1|#if SD_MAC 52| 1| // Apple says that NSImage use a weak reference to value 53| 1| valueOptions = NSPointerFunctionsWeakMemory; 54| |#else 55| | // Apple says that UIImage use a strong reference to value 56| | valueOptions = NSPointerFunctionsStrongMemory; 57| |#endif 58| | _imageTable = [NSMapTable mapTableWithKeyOptions:NSPointerFunctionsCopyIn valueOptions:valueOptions]; 59| 1| _lock = dispatch_semaphore_create(1); 60| |#if SD_UIKIT 61| | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 62| |#endif 63| | } 64| 1| return self; 65| 1|} 66| | 67| 0|- (void)dealloc { 68| |#if SD_UIKIT 69| | [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; 70| |#endif 71| |} 72| | 73| 0|- (void)didReceiveMemoryWarning:(NSNotification *)notification { 74| 0| SD_LOCK(_lock); 75| 0| [self.imageTable removeAllObjects]; 76| 0| SD_UNLOCK(_lock); 77| 0|} 78| | 79| 2|- (NSString *)getPathForName:(NSString *)name bundle:(NSBundle *)bundle preferredScale:(CGFloat *)scale { 80| 2| NSParameterAssert(name); 81| 2| NSParameterAssert(bundle); 82| 2| NSString *path; 83| 2| if (name.length == 0) { 84| 0| return path; 85| 0| } 86| 2| if ([name hasSuffix:@"/"]) { 87| 0| return path; 88| 0| } 89| 2| NSString *extension = name.pathExtension; 90| 2| if (extension.length == 0) { 91| 0| // If no extension, follow Apple's doc, check PNG format 92| 0| extension = @"png"; 93| 0| } 94| 2| name = [name stringByDeletingPathExtension]; 95| 2| 96| 2| CGFloat providedScale = *scale; 97| 2| NSArray *scales = SDBundlePreferredScales(); 98| 2| 99| 2| // Check if file name contains scale 100| 8| for (size_t i = 0; i < scales.count; i++) { 101| 6| NSNumber *scaleValue = scales[i]; 102| 6| if ([name hasSuffix:[NSString stringWithFormat:@"@%@x", scaleValue]]) { 103| 0| path = [bundle pathForResource:name ofType:extension]; 104| 0| if (path) { 105| 0| *scale = scaleValue.doubleValue; // override 106| 0| return path; 107| 0| } 108| 0| } 109| 6| } 110| 2| 111| 2| // Search with provided scale first 112| 2| if (providedScale != 0) { 113| 0| NSString *scaledName = [name stringByAppendingFormat:@"@%@x", @(providedScale)]; 114| 0| path = [bundle pathForResource:scaledName ofType:extension]; 115| 0| if (path) { 116| 0| return path; 117| 0| } 118| 2| } 119| 2| 120| 2| // Search with preferred scale 121| 8| for (size_t i = 0; i < scales.count; i++) { 122| 6| NSNumber *scaleValue = scales[i]; 123| 6| if (scaleValue.doubleValue == providedScale) { 124| 0| // Ignore provided scale 125| 0| continue; 126| 0| } 127| 6| NSString *scaledName = [name stringByAppendingFormat:@"@%@x", scaleValue]; 128| 6| path = [bundle pathForResource:scaledName ofType:extension]; 129| 6| if (path) { 130| 0| *scale = scaleValue.doubleValue; // override 131| 0| return path; 132| 0| } 133| 6| } 134| 2| 135| 2| // Search without scale 136| 2| path = [bundle pathForResource:name ofType:extension]; 137| 2| 138| 2| return path; 139| 2|} 140| | 141| 2|- (UIImage *)imageForName:(NSString *)name { 142| 2| NSParameterAssert(name); 143| 2| UIImage *image; 144| 2| SD_LOCK(_lock); 145| 2| image = [self.imageTable objectForKey:name]; 146| 2| SD_UNLOCK(_lock); 147| 2| return image; 148| 2|} 149| | 150| 1|- (void)storeImage:(UIImage *)image forName:(NSString *)name { 151| 1| NSParameterAssert(image); 152| 1| NSParameterAssert(name); 153| 1| SD_LOCK(_lock); 154| 1| [self.imageTable setObject:image forKey:name]; 155| 1| SD_UNLOCK(_lock); 156| 1|} 157| | 158| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDImageCachesManagerOperation.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDImageCachesManagerOperation.h" 10| |#import "SDInternalMacros.h" 11| | 12| |@implementation SDImageCachesManagerOperation 13| |{ 14| | dispatch_semaphore_t _pendingCountLock; 15| |} 16| | 17| |@synthesize executing = _executing; 18| |@synthesize finished = _finished; 19| |@synthesize cancelled = _cancelled; 20| |@synthesize pendingCount = _pendingCount; 21| | 22| 7|- (instancetype)init { 23| 7| if (self = [super init]) { 24| 7| _pendingCountLock = dispatch_semaphore_create(1); 25| 7| _pendingCount = 0; 26| 7| } 27| 7| return self; 28| 7|} 29| | 30| 7|- (void)beginWithTotalCount:(NSUInteger)totalCount { 31| 7| self.executing = YES; 32| 7| self.finished = NO; 33| 7| _pendingCount = totalCount; 34| 7|} 35| | 36| 8|- (NSUInteger)pendingCount { 37| 8| SD_LOCK(_pendingCountLock); 38| 8| NSUInteger pendingCount = _pendingCount; 39| 8| SD_UNLOCK(_pendingCountLock); 40| 8| return pendingCount; 41| 8|} 42| | 43| 12|- (void)completeOne { 44| 12| SD_LOCK(_pendingCountLock); 45| 12| _pendingCount = _pendingCount > 0 ? _pendingCount - 1 : 0; 46| 12| SD_UNLOCK(_pendingCountLock); 47| 12|} 48| | 49| 0|- (void)cancel { 50| 0| self.cancelled = YES; 51| 0| [self reset]; 52| 0|} 53| | 54| 7|- (void)done { 55| 7| self.finished = YES; 56| 7| self.executing = NO; 57| 7| [self reset]; 58| 7|} 59| | 60| 7|- (void)reset { 61| 7| SD_LOCK(_pendingCountLock); 62| 7| _pendingCount = 0; 63| 7| SD_UNLOCK(_pendingCountLock); 64| 7|} 65| | 66| 14|- (void)setFinished:(BOOL)finished { 67| 14| [self willChangeValueForKey:@"isFinished"]; 68| 14| _finished = finished; 69| 14| [self didChangeValueForKey:@"isFinished"]; 70| 14|} 71| | 72| 14|- (void)setExecuting:(BOOL)executing { 73| 14| [self willChangeValueForKey:@"isExecuting"]; 74| 14| _executing = executing; 75| 14| [self didChangeValueForKey:@"isExecuting"]; 76| 14|} 77| | 78| 0|- (void)setCancelled:(BOOL)cancelled { 79| 0| [self willChangeValueForKey:@"isCancelled"]; 80| 0| _cancelled = cancelled; 81| 0| [self didChangeValueForKey:@"isCancelled"]; 82| 0|} 83| | 84| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h: 1| |/* 2| |* This file is part of the SDWebImage package. 3| |* (c) Olivier Poitrey 4| |* 5| |* For the full copyright and license information, please view the LICENSE 6| |* file that was distributed with this source code. 7| |*/ 8| | 9| |#import 10| |#import "SDImageIOAnimatedCoder.h" 11| | 12| |// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation 13| 251|#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") 14| 245|#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") 15| |// HEIC Sequence (Animated Image) 16| 2|#define kSDUTTypeHEICS ((__bridge CFStringRef)@"public.heics") 17| |// kUTTypeWebP seems not defined in public UTI framework, Apple use the hardcode string, we define them :) 18| 250|#define kSDUTTypeWebP ((__bridge CFStringRef)@"org.webmproject.webp") 19| | 20| |@interface SDImageIOAnimatedCoder () 21| | 22| |+ (NSTimeInterval)frameDurationAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source; 23| |+ (NSUInteger)imageLoopCountWithSource:(nonnull CGImageSourceRef)source; 24| |+ (nullable UIImage *)createFrameAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source scale:(CGFloat)scale preserveAspectRatio:(BOOL)preserveAspectRatio thumbnailSize:(CGSize)thumbnailSize options:(nullable NSDictionary *)options; 25| |+ (BOOL)canEncodeToFormat:(SDImageFormat)format; 26| |+ (BOOL)canDecodeFromFormat:(SDImageFormat)format; 27| | 28| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDInternalMacros.h: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import 10| |#import "SDmetamacros.h" 11| | 12| |#ifndef SD_LOCK 13| 14.9k|#define SD_LOCK(lock) dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER); 14| |#endif 15| | 16| |#ifndef SD_UNLOCK 17| 14.6k|#define SD_UNLOCK(lock) dispatch_semaphore_signal(lock); 18| |#endif 19| | 20| |#ifndef SD_OPTIONS_CONTAINS 21| 785|#define SD_OPTIONS_CONTAINS(options, value) (((options) & (value)) == (value)) 22| |#endif 23| | 24| |#ifndef SD_CSTRING 25| 7.66k|#define SD_CSTRING(str) #str 26| |#endif 27| | 28| |#ifndef SD_NSSTRING 29| 7.66k|#define SD_NSSTRING(str) @(SD_CSTRING(str)) 30| |#endif 31| | 32| |#ifndef SD_SEL_SPI 33| 7.66k|#define SD_SEL_SPI(name) NSSelectorFromString([NSString stringWithFormat:@"_%@", SD_NSSTRING(name)]) 34| |#endif 35| | 36| |#ifndef weakify 37| 484|#define weakify(...) \ 38| 484|sd_keywordify \ 39| 484|metamacro_foreach_cxt(sd_weakify_,, __weak, __VA_ARGS__) 40| |#endif 41| | 42| |#ifndef strongify 43| 4.34k|#define strongify(...) \ 44| 4.34k|sd_keywordify \ 45| 4.34k|_Pragma("clang diagnostic push") \ 46| 4.34k|_Pragma("clang diagnostic ignored \"-Wshadow\"") \ 47| 4.34k|metamacro_foreach(sd_strongify_,, __VA_ARGS__) \ 48| 4.34k|_Pragma("clang diagnostic pop") 49| |#endif 50| | 51| 484|#define sd_weakify_(INDEX, CONTEXT, VAR) \ 52| 484|CONTEXT __typeof__(VAR) metamacro_concat(VAR, _weak_) = (VAR); 53| | 54| 4.34k|#define sd_strongify_(INDEX, VAR) \ 55| 4.34k|__strong __typeof__(VAR) VAR = metamacro_concat(VAR, _weak_); 56| | 57| |#if DEBUG 58| 5.05k|#define sd_keywordify autoreleasepool {} 59| |#else 60| |#define sd_keywordify try {} @catch (...) {} 61| |#endif 62| | 63| |#ifndef onExit 64| 223|#define onExit \ 65| 223|sd_keywordify \ 66| 223|__strong sd_cleanupBlock_t metamacro_concat(sd_exitBlock_, __LINE__) __attribute__((cleanup(sd_executeCleanupBlock), unused)) = ^ 67| |#endif 68| | 69| |typedef void (^sd_cleanupBlock_t)(void); 70| | 71| |#if defined(__cplusplus) 72| |extern "C" { 73| |#endif 74| | void sd_executeCleanupBlock (__strong sd_cleanupBlock_t *block); 75| |#if defined(__cplusplus) 76| |} 77| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDInternalMacros.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDInternalMacros.h" 10| | 11| 224|void sd_executeCleanupBlock (__strong sd_cleanupBlock_t *block) { 12| 224| (*block)(); 13| 224|} /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDWeakProxy.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "SDWeakProxy.h" 10| | 11| |@implementation SDWeakProxy 12| | 13| 1|- (instancetype)initWithTarget:(id)target { 14| 1| _target = target; 15| 1| return self; 16| 1|} 17| | 18| 1|+ (instancetype)proxyWithTarget:(id)target { 19| 1| return [[SDWeakProxy alloc] initWithTarget:target]; 20| 1|} 21| | 22| 1|- (id)forwardingTargetForSelector:(SEL)selector { 23| 1| return _target; 24| 1|} 25| | 26| 1|- (void)forwardInvocation:(NSInvocation *)invocation { 27| 1| void *null = NULL; 28| 1| [invocation setReturnValue:&null]; 29| 1|} 30| | 31| 1|- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector { 32| 1| return [NSObject instanceMethodSignatureForSelector:@selector(init)]; 33| 1|} 34| | 35| 1|- (BOOL)respondsToSelector:(SEL)aSelector { 36| 1| return [_target respondsToSelector:aSelector]; 37| 1|} 38| | 39| 1|- (BOOL)isEqual:(id)object { 40| 1| return [_target isEqual:object]; 41| 1|} 42| | 43| 1|- (NSUInteger)hash { 44| 1| return [_target hash]; 45| 1|} 46| | 47| 1|- (Class)superclass { 48| 1| return [_target superclass]; 49| 1|} 50| | 51| 1|- (Class)class { 52| 1| return [_target class]; 53| 1|} 54| | 55| 1|- (BOOL)isKindOfClass:(Class)aClass { 56| 1| return [_target isKindOfClass:aClass]; 57| 1|} 58| | 59| 1|- (BOOL)isMemberOfClass:(Class)aClass { 60| 1| return [_target isMemberOfClass:aClass]; 61| 1|} 62| | 63| 1|- (BOOL)conformsToProtocol:(Protocol *)aProtocol { 64| 1| return [_target conformsToProtocol:aProtocol]; 65| 1|} 66| | 67| 1|- (BOOL)isProxy { 68| 1| return YES; 69| 1|} 70| | 71| 1|- (NSString *)description { 72| 1| return [_target description]; 73| 1|} 74| | 75| 1|- (NSString *)debugDescription { 76| 1| return [_target debugDescription]; 77| 1|} 78| | 79| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/SDmetamacros.h: 1| |/** 2| | * Macros for metaprogramming 3| | * ExtendedC 4| | * 5| | * Copyright (C) 2012 Justin Spahr-Summers 6| | * Released under the MIT license 7| | */ 8| | 9| |#ifndef EXTC_METAMACROS_H 10| |#define EXTC_METAMACROS_H 11| | 12| | 13| |/** 14| | * Executes one or more expressions (which may have a void type, such as a call 15| | * to a function that returns no value) and always returns true. 16| | */ 17| |#define metamacro_exprify(...) \ 18| | ((__VA_ARGS__), true) 19| | 20| |/** 21| | * Returns a string representation of VALUE after full macro expansion. 22| | */ 23| |#define metamacro_stringify(VALUE) \ 24| | metamacro_stringify_(VALUE) 25| | 26| |/** 27| | * Returns A and B concatenated after full macro expansion. 28| | */ 29| |#define metamacro_concat(A, B) \ 30| 9.17k| metamacro_concat_(A, B) 31| | 32| |/** 33| | * Returns the Nth variadic argument (starting from zero). At least 34| | * N + 1 variadic arguments must be given. N must be between zero and twenty, 35| | * inclusive. 36| | */ 37| |#define metamacro_at(N, ...) \ 38| | metamacro_concat(metamacro_at, N)(__VA_ARGS__) 39| | 40| |/** 41| | * Returns the number of arguments (up to twenty) provided to the macro. At 42| | * least one argument must be provided. 43| | * 44| | * Inspired by P99: http://p99.gforge.inria.fr 45| | */ 46| |#define metamacro_argcount(...) \ 47| | metamacro_at(20, __VA_ARGS__, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) 48| | 49| |/** 50| | * Identical to #metamacro_foreach_cxt, except that no CONTEXT argument is 51| | * given. Only the index and current argument will thus be passed to MACRO. 52| | */ 53| |#define metamacro_foreach(MACRO, SEP, ...) \ 54| 4.34k| metamacro_foreach_cxt(metamacro_foreach_iter, SEP, MACRO, __VA_ARGS__) 55| | 56| |/** 57| | * For each consecutive variadic argument (up to twenty), MACRO is passed the 58| | * zero-based index of the current argument, CONTEXT, and then the argument 59| | * itself. The results of adjoining invocations of MACRO are then separated by 60| | * SEP. 61| | * 62| | * Inspired by P99: http://p99.gforge.inria.fr 63| | */ 64| |#define metamacro_foreach_cxt(MACRO, SEP, CONTEXT, ...) \ 65| 4.83k| metamacro_concat(metamacro_foreach_cxt, metamacro_argcount(__VA_ARGS__))(MACRO, SEP, CONTEXT, __VA_ARGS__) 66| | 67| |/** 68| | * Identical to #metamacro_foreach_cxt. This can be used when the former would 69| | * fail due to recursive macro expansion. 70| | */ 71| |#define metamacro_foreach_cxt_recursive(MACRO, SEP, CONTEXT, ...) \ 72| | metamacro_concat(metamacro_foreach_cxt_recursive, metamacro_argcount(__VA_ARGS__))(MACRO, SEP, CONTEXT, __VA_ARGS__) 73| | 74| |/** 75| | * In consecutive order, appends each variadic argument (up to twenty) onto 76| | * BASE. The resulting concatenations are then separated by SEP. 77| | * 78| | * This is primarily useful to manipulate a list of macro invocations into instead 79| | * invoking a different, possibly related macro. 80| | */ 81| |#define metamacro_foreach_concat(BASE, SEP, ...) \ 82| | metamacro_foreach_cxt(metamacro_foreach_concat_iter, SEP, BASE, __VA_ARGS__) 83| | 84| |/** 85| | * Iterates COUNT times, each time invoking MACRO with the current index 86| | * (starting at zero) and CONTEXT. The results of adjoining invocations of MACRO 87| | * are then separated by SEP. 88| | * 89| | * COUNT must be an integer between zero and twenty, inclusive. 90| | */ 91| |#define metamacro_for_cxt(COUNT, MACRO, SEP, CONTEXT) \ 92| | metamacro_concat(metamacro_for_cxt, COUNT)(MACRO, SEP, CONTEXT) 93| | 94| |/** 95| | * Returns the first argument given. At least one argument must be provided. 96| | * 97| | * This is useful when implementing a variadic macro, where you may have only 98| | * one variadic argument, but no way to retrieve it (for example, because \c ... 99| | * always needs to match at least one argument). 100| | * 101| | * @code 102| | 103| |#define varmacro(...) \ 104| | metamacro_head(__VA_ARGS__) 105| | 106| | * @endcode 107| | */ 108| |#define metamacro_head(...) \ 109| | metamacro_head_(__VA_ARGS__, 0) 110| | 111| |/** 112| | * Returns every argument except the first. At least two arguments must be 113| | * provided. 114| | */ 115| |#define metamacro_tail(...) \ 116| | metamacro_tail_(__VA_ARGS__) 117| | 118| |/** 119| | * Returns the first N (up to twenty) variadic arguments as a new argument list. 120| | * At least N variadic arguments must be provided. 121| | */ 122| |#define metamacro_take(N, ...) \ 123| | metamacro_concat(metamacro_take, N)(__VA_ARGS__) 124| | 125| |/** 126| | * Removes the first N (up to twenty) variadic arguments from the given argument 127| | * list. At least N variadic arguments must be provided. 128| | */ 129| |#define metamacro_drop(N, ...) \ 130| | metamacro_concat(metamacro_drop, N)(__VA_ARGS__) 131| | 132| |/** 133| | * Decrements VAL, which must be a number between zero and twenty, inclusive. 134| | * 135| | * This is primarily useful when dealing with indexes and counts in 136| | * metaprogramming. 137| | */ 138| |#define metamacro_dec(VAL) \ 139| | metamacro_at(VAL, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19) 140| | 141| |/** 142| | * Increments VAL, which must be a number between zero and twenty, inclusive. 143| | * 144| | * This is primarily useful when dealing with indexes and counts in 145| | * metaprogramming. 146| | */ 147| |#define metamacro_inc(VAL) \ 148| | metamacro_at(VAL, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21) 149| | 150| |/** 151| | * If A is equal to B, the next argument list is expanded; otherwise, the 152| | * argument list after that is expanded. A and B must be numbers between zero 153| | * and twenty, inclusive. Additionally, B must be greater than or equal to A. 154| | * 155| | * @code 156| | 157| |// expands to true 158| |metamacro_if_eq(0, 0)(true)(false) 159| | 160| |// expands to false 161| |metamacro_if_eq(0, 1)(true)(false) 162| | 163| | * @endcode 164| | * 165| | * This is primarily useful when dealing with indexes and counts in 166| | * metaprogramming. 167| | */ 168| |#define metamacro_if_eq(A, B) \ 169| | metamacro_concat(metamacro_if_eq, A)(B) 170| | 171| |/** 172| | * Identical to #metamacro_if_eq. This can be used when the former would fail 173| | * due to recursive macro expansion. 174| | */ 175| |#define metamacro_if_eq_recursive(A, B) \ 176| | metamacro_concat(metamacro_if_eq_recursive, A)(B) 177| | 178| |/** 179| | * Returns 1 if N is an even number, or 0 otherwise. N must be between zero and 180| | * twenty, inclusive. 181| | * 182| | * For the purposes of this test, zero is considered even. 183| | */ 184| |#define metamacro_is_even(N) \ 185| | metamacro_at(N, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1) 186| | 187| |/** 188| | * Returns the logical NOT of B, which must be the number zero or one. 189| | */ 190| |#define metamacro_not(B) \ 191| | metamacro_at(B, 1, 0) 192| | 193| |// IMPLEMENTATION DETAILS FOLLOW! 194| |// Do not write code that depends on anything below this line. 195| |#define metamacro_stringify_(VALUE) # VALUE 196| 9.17k|#define metamacro_concat_(A, B) A ## B 197| 4.34k|#define metamacro_foreach_iter(INDEX, MACRO, ARG) MACRO(INDEX, ARG) 198| |#define metamacro_head_(FIRST, ...) FIRST 199| |#define metamacro_tail_(FIRST, ...) __VA_ARGS__ 200| |#define metamacro_consume_(...) 201| |#define metamacro_expand_(...) __VA_ARGS__ 202| | 203| |// implemented from scratch so that metamacro_concat() doesn't end up nesting 204| |#define metamacro_foreach_concat_iter(INDEX, BASE, ARG) metamacro_foreach_concat_iter_(BASE, ARG) 205| |#define metamacro_foreach_concat_iter_(BASE, ARG) BASE ## ARG 206| | 207| |// metamacro_at expansions 208| |#define metamacro_at0(...) metamacro_head(__VA_ARGS__) 209| |#define metamacro_at1(_0, ...) metamacro_head(__VA_ARGS__) 210| |#define metamacro_at2(_0, _1, ...) metamacro_head(__VA_ARGS__) 211| |#define metamacro_at3(_0, _1, _2, ...) metamacro_head(__VA_ARGS__) 212| |#define metamacro_at4(_0, _1, _2, _3, ...) metamacro_head(__VA_ARGS__) 213| |#define metamacro_at5(_0, _1, _2, _3, _4, ...) metamacro_head(__VA_ARGS__) 214| |#define metamacro_at6(_0, _1, _2, _3, _4, _5, ...) metamacro_head(__VA_ARGS__) 215| |#define metamacro_at7(_0, _1, _2, _3, _4, _5, _6, ...) metamacro_head(__VA_ARGS__) 216| |#define metamacro_at8(_0, _1, _2, _3, _4, _5, _6, _7, ...) metamacro_head(__VA_ARGS__) 217| |#define metamacro_at9(_0, _1, _2, _3, _4, _5, _6, _7, _8, ...) metamacro_head(__VA_ARGS__) 218| |#define metamacro_at10(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, ...) metamacro_head(__VA_ARGS__) 219| |#define metamacro_at11(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, ...) metamacro_head(__VA_ARGS__) 220| |#define metamacro_at12(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, ...) metamacro_head(__VA_ARGS__) 221| |#define metamacro_at13(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, ...) metamacro_head(__VA_ARGS__) 222| |#define metamacro_at14(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, ...) metamacro_head(__VA_ARGS__) 223| |#define metamacro_at15(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, ...) metamacro_head(__VA_ARGS__) 224| |#define metamacro_at16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) metamacro_head(__VA_ARGS__) 225| |#define metamacro_at17(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, ...) metamacro_head(__VA_ARGS__) 226| |#define metamacro_at18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) metamacro_head(__VA_ARGS__) 227| |#define metamacro_at19(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, ...) metamacro_head(__VA_ARGS__) 228| |#define metamacro_at20(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, ...) metamacro_head(__VA_ARGS__) 229| | 230| |// metamacro_foreach_cxt expansions 231| |#define metamacro_foreach_cxt0(MACRO, SEP, CONTEXT) 232| 4.83k|#define metamacro_foreach_cxt1(MACRO, SEP, CONTEXT, _0) MACRO(0, CONTEXT, _0) 233| | 234| |#define metamacro_foreach_cxt2(MACRO, SEP, CONTEXT, _0, _1) \ 235| | metamacro_foreach_cxt1(MACRO, SEP, CONTEXT, _0) \ 236| | SEP \ 237| | MACRO(1, CONTEXT, _1) 238| | 239| |#define metamacro_foreach_cxt3(MACRO, SEP, CONTEXT, _0, _1, _2) \ 240| | metamacro_foreach_cxt2(MACRO, SEP, CONTEXT, _0, _1) \ 241| | SEP \ 242| | MACRO(2, CONTEXT, _2) 243| | 244| |#define metamacro_foreach_cxt4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ 245| | metamacro_foreach_cxt3(MACRO, SEP, CONTEXT, _0, _1, _2) \ 246| | SEP \ 247| | MACRO(3, CONTEXT, _3) 248| | 249| |#define metamacro_foreach_cxt5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ 250| | metamacro_foreach_cxt4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ 251| | SEP \ 252| | MACRO(4, CONTEXT, _4) 253| | 254| |#define metamacro_foreach_cxt6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ 255| | metamacro_foreach_cxt5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ 256| | SEP \ 257| | MACRO(5, CONTEXT, _5) 258| | 259| |#define metamacro_foreach_cxt7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ 260| | metamacro_foreach_cxt6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ 261| | SEP \ 262| | MACRO(6, CONTEXT, _6) 263| | 264| |#define metamacro_foreach_cxt8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ 265| | metamacro_foreach_cxt7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ 266| | SEP \ 267| | MACRO(7, CONTEXT, _7) 268| | 269| |#define metamacro_foreach_cxt9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ 270| | metamacro_foreach_cxt8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ 271| | SEP \ 272| | MACRO(8, CONTEXT, _8) 273| | 274| |#define metamacro_foreach_cxt10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ 275| | metamacro_foreach_cxt9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ 276| | SEP \ 277| | MACRO(9, CONTEXT, _9) 278| | 279| |#define metamacro_foreach_cxt11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ 280| | metamacro_foreach_cxt10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ 281| | SEP \ 282| | MACRO(10, CONTEXT, _10) 283| | 284| |#define metamacro_foreach_cxt12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ 285| | metamacro_foreach_cxt11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ 286| | SEP \ 287| | MACRO(11, CONTEXT, _11) 288| | 289| |#define metamacro_foreach_cxt13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ 290| | metamacro_foreach_cxt12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ 291| | SEP \ 292| | MACRO(12, CONTEXT, _12) 293| | 294| |#define metamacro_foreach_cxt14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ 295| | metamacro_foreach_cxt13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ 296| | SEP \ 297| | MACRO(13, CONTEXT, _13) 298| | 299| |#define metamacro_foreach_cxt15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ 300| | metamacro_foreach_cxt14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ 301| | SEP \ 302| | MACRO(14, CONTEXT, _14) 303| | 304| |#define metamacro_foreach_cxt16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ 305| | metamacro_foreach_cxt15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ 306| | SEP \ 307| | MACRO(15, CONTEXT, _15) 308| | 309| |#define metamacro_foreach_cxt17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ 310| | metamacro_foreach_cxt16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ 311| | SEP \ 312| | MACRO(16, CONTEXT, _16) 313| | 314| |#define metamacro_foreach_cxt18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ 315| | metamacro_foreach_cxt17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ 316| | SEP \ 317| | MACRO(17, CONTEXT, _17) 318| | 319| |#define metamacro_foreach_cxt19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ 320| | metamacro_foreach_cxt18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ 321| | SEP \ 322| | MACRO(18, CONTEXT, _18) 323| | 324| |#define metamacro_foreach_cxt20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ 325| | metamacro_foreach_cxt19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ 326| | SEP \ 327| | MACRO(19, CONTEXT, _19) 328| | 329| |// metamacro_foreach_cxt_recursive expansions 330| |#define metamacro_foreach_cxt_recursive0(MACRO, SEP, CONTEXT) 331| |#define metamacro_foreach_cxt_recursive1(MACRO, SEP, CONTEXT, _0) MACRO(0, CONTEXT, _0) 332| | 333| |#define metamacro_foreach_cxt_recursive2(MACRO, SEP, CONTEXT, _0, _1) \ 334| | metamacro_foreach_cxt_recursive1(MACRO, SEP, CONTEXT, _0) \ 335| | SEP \ 336| | MACRO(1, CONTEXT, _1) 337| | 338| |#define metamacro_foreach_cxt_recursive3(MACRO, SEP, CONTEXT, _0, _1, _2) \ 339| | metamacro_foreach_cxt_recursive2(MACRO, SEP, CONTEXT, _0, _1) \ 340| | SEP \ 341| | MACRO(2, CONTEXT, _2) 342| | 343| |#define metamacro_foreach_cxt_recursive4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ 344| | metamacro_foreach_cxt_recursive3(MACRO, SEP, CONTEXT, _0, _1, _2) \ 345| | SEP \ 346| | MACRO(3, CONTEXT, _3) 347| | 348| |#define metamacro_foreach_cxt_recursive5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ 349| | metamacro_foreach_cxt_recursive4(MACRO, SEP, CONTEXT, _0, _1, _2, _3) \ 350| | SEP \ 351| | MACRO(4, CONTEXT, _4) 352| | 353| |#define metamacro_foreach_cxt_recursive6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ 354| | metamacro_foreach_cxt_recursive5(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4) \ 355| | SEP \ 356| | MACRO(5, CONTEXT, _5) 357| | 358| |#define metamacro_foreach_cxt_recursive7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ 359| | metamacro_foreach_cxt_recursive6(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5) \ 360| | SEP \ 361| | MACRO(6, CONTEXT, _6) 362| | 363| |#define metamacro_foreach_cxt_recursive8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ 364| | metamacro_foreach_cxt_recursive7(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6) \ 365| | SEP \ 366| | MACRO(7, CONTEXT, _7) 367| | 368| |#define metamacro_foreach_cxt_recursive9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ 369| | metamacro_foreach_cxt_recursive8(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7) \ 370| | SEP \ 371| | MACRO(8, CONTEXT, _8) 372| | 373| |#define metamacro_foreach_cxt_recursive10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ 374| | metamacro_foreach_cxt_recursive9(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8) \ 375| | SEP \ 376| | MACRO(9, CONTEXT, _9) 377| | 378| |#define metamacro_foreach_cxt_recursive11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ 379| | metamacro_foreach_cxt_recursive10(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ 380| | SEP \ 381| | MACRO(10, CONTEXT, _10) 382| | 383| |#define metamacro_foreach_cxt_recursive12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ 384| | metamacro_foreach_cxt_recursive11(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ 385| | SEP \ 386| | MACRO(11, CONTEXT, _11) 387| | 388| |#define metamacro_foreach_cxt_recursive13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ 389| | metamacro_foreach_cxt_recursive12(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) \ 390| | SEP \ 391| | MACRO(12, CONTEXT, _12) 392| | 393| |#define metamacro_foreach_cxt_recursive14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ 394| | metamacro_foreach_cxt_recursive13(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) \ 395| | SEP \ 396| | MACRO(13, CONTEXT, _13) 397| | 398| |#define metamacro_foreach_cxt_recursive15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ 399| | metamacro_foreach_cxt_recursive14(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) \ 400| | SEP \ 401| | MACRO(14, CONTEXT, _14) 402| | 403| |#define metamacro_foreach_cxt_recursive16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ 404| | metamacro_foreach_cxt_recursive15(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) \ 405| | SEP \ 406| | MACRO(15, CONTEXT, _15) 407| | 408| |#define metamacro_foreach_cxt_recursive17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ 409| | metamacro_foreach_cxt_recursive16(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) \ 410| | SEP \ 411| | MACRO(16, CONTEXT, _16) 412| | 413| |#define metamacro_foreach_cxt_recursive18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ 414| | metamacro_foreach_cxt_recursive17(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \ 415| | SEP \ 416| | MACRO(17, CONTEXT, _17) 417| | 418| |#define metamacro_foreach_cxt_recursive19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ 419| | metamacro_foreach_cxt_recursive18(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) \ 420| | SEP \ 421| | MACRO(18, CONTEXT, _18) 422| | 423| |#define metamacro_foreach_cxt_recursive20(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) \ 424| | metamacro_foreach_cxt_recursive19(MACRO, SEP, CONTEXT, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) \ 425| | SEP \ 426| | MACRO(19, CONTEXT, _19) 427| | 428| |// metamacro_for_cxt expansions 429| |#define metamacro_for_cxt0(MACRO, SEP, CONTEXT) 430| |#define metamacro_for_cxt1(MACRO, SEP, CONTEXT) MACRO(0, CONTEXT) 431| | 432| |#define metamacro_for_cxt2(MACRO, SEP, CONTEXT) \ 433| | metamacro_for_cxt1(MACRO, SEP, CONTEXT) \ 434| | SEP \ 435| | MACRO(1, CONTEXT) 436| | 437| |#define metamacro_for_cxt3(MACRO, SEP, CONTEXT) \ 438| | metamacro_for_cxt2(MACRO, SEP, CONTEXT) \ 439| | SEP \ 440| | MACRO(2, CONTEXT) 441| | 442| |#define metamacro_for_cxt4(MACRO, SEP, CONTEXT) \ 443| | metamacro_for_cxt3(MACRO, SEP, CONTEXT) \ 444| | SEP \ 445| | MACRO(3, CONTEXT) 446| | 447| |#define metamacro_for_cxt5(MACRO, SEP, CONTEXT) \ 448| | metamacro_for_cxt4(MACRO, SEP, CONTEXT) \ 449| | SEP \ 450| | MACRO(4, CONTEXT) 451| | 452| |#define metamacro_for_cxt6(MACRO, SEP, CONTEXT) \ 453| | metamacro_for_cxt5(MACRO, SEP, CONTEXT) \ 454| | SEP \ 455| | MACRO(5, CONTEXT) 456| | 457| |#define metamacro_for_cxt7(MACRO, SEP, CONTEXT) \ 458| | metamacro_for_cxt6(MACRO, SEP, CONTEXT) \ 459| | SEP \ 460| | MACRO(6, CONTEXT) 461| | 462| |#define metamacro_for_cxt8(MACRO, SEP, CONTEXT) \ 463| | metamacro_for_cxt7(MACRO, SEP, CONTEXT) \ 464| | SEP \ 465| | MACRO(7, CONTEXT) 466| | 467| |#define metamacro_for_cxt9(MACRO, SEP, CONTEXT) \ 468| | metamacro_for_cxt8(MACRO, SEP, CONTEXT) \ 469| | SEP \ 470| | MACRO(8, CONTEXT) 471| | 472| |#define metamacro_for_cxt10(MACRO, SEP, CONTEXT) \ 473| | metamacro_for_cxt9(MACRO, SEP, CONTEXT) \ 474| | SEP \ 475| | MACRO(9, CONTEXT) 476| | 477| |#define metamacro_for_cxt11(MACRO, SEP, CONTEXT) \ 478| | metamacro_for_cxt10(MACRO, SEP, CONTEXT) \ 479| | SEP \ 480| | MACRO(10, CONTEXT) 481| | 482| |#define metamacro_for_cxt12(MACRO, SEP, CONTEXT) \ 483| | metamacro_for_cxt11(MACRO, SEP, CONTEXT) \ 484| | SEP \ 485| | MACRO(11, CONTEXT) 486| | 487| |#define metamacro_for_cxt13(MACRO, SEP, CONTEXT) \ 488| | metamacro_for_cxt12(MACRO, SEP, CONTEXT) \ 489| | SEP \ 490| | MACRO(12, CONTEXT) 491| | 492| |#define metamacro_for_cxt14(MACRO, SEP, CONTEXT) \ 493| | metamacro_for_cxt13(MACRO, SEP, CONTEXT) \ 494| | SEP \ 495| | MACRO(13, CONTEXT) 496| | 497| |#define metamacro_for_cxt15(MACRO, SEP, CONTEXT) \ 498| | metamacro_for_cxt14(MACRO, SEP, CONTEXT) \ 499| | SEP \ 500| | MACRO(14, CONTEXT) 501| | 502| |#define metamacro_for_cxt16(MACRO, SEP, CONTEXT) \ 503| | metamacro_for_cxt15(MACRO, SEP, CONTEXT) \ 504| | SEP \ 505| | MACRO(15, CONTEXT) 506| | 507| |#define metamacro_for_cxt17(MACRO, SEP, CONTEXT) \ 508| | metamacro_for_cxt16(MACRO, SEP, CONTEXT) \ 509| | SEP \ 510| | MACRO(16, CONTEXT) 511| | 512| |#define metamacro_for_cxt18(MACRO, SEP, CONTEXT) \ 513| | metamacro_for_cxt17(MACRO, SEP, CONTEXT) \ 514| | SEP \ 515| | MACRO(17, CONTEXT) 516| | 517| |#define metamacro_for_cxt19(MACRO, SEP, CONTEXT) \ 518| | metamacro_for_cxt18(MACRO, SEP, CONTEXT) \ 519| | SEP \ 520| | MACRO(18, CONTEXT) 521| | 522| |#define metamacro_for_cxt20(MACRO, SEP, CONTEXT) \ 523| | metamacro_for_cxt19(MACRO, SEP, CONTEXT) \ 524| | SEP \ 525| | MACRO(19, CONTEXT) 526| | 527| |// metamacro_if_eq expansions 528| |#define metamacro_if_eq0(VALUE) \ 529| | metamacro_concat(metamacro_if_eq0_, VALUE) 530| | 531| |#define metamacro_if_eq0_0(...) __VA_ARGS__ metamacro_consume_ 532| |#define metamacro_if_eq0_1(...) metamacro_expand_ 533| |#define metamacro_if_eq0_2(...) metamacro_expand_ 534| |#define metamacro_if_eq0_3(...) metamacro_expand_ 535| |#define metamacro_if_eq0_4(...) metamacro_expand_ 536| |#define metamacro_if_eq0_5(...) metamacro_expand_ 537| |#define metamacro_if_eq0_6(...) metamacro_expand_ 538| |#define metamacro_if_eq0_7(...) metamacro_expand_ 539| |#define metamacro_if_eq0_8(...) metamacro_expand_ 540| |#define metamacro_if_eq0_9(...) metamacro_expand_ 541| |#define metamacro_if_eq0_10(...) metamacro_expand_ 542| |#define metamacro_if_eq0_11(...) metamacro_expand_ 543| |#define metamacro_if_eq0_12(...) metamacro_expand_ 544| |#define metamacro_if_eq0_13(...) metamacro_expand_ 545| |#define metamacro_if_eq0_14(...) metamacro_expand_ 546| |#define metamacro_if_eq0_15(...) metamacro_expand_ 547| |#define metamacro_if_eq0_16(...) metamacro_expand_ 548| |#define metamacro_if_eq0_17(...) metamacro_expand_ 549| |#define metamacro_if_eq0_18(...) metamacro_expand_ 550| |#define metamacro_if_eq0_19(...) metamacro_expand_ 551| |#define metamacro_if_eq0_20(...) metamacro_expand_ 552| | 553| |#define metamacro_if_eq1(VALUE) metamacro_if_eq0(metamacro_dec(VALUE)) 554| |#define metamacro_if_eq2(VALUE) metamacro_if_eq1(metamacro_dec(VALUE)) 555| |#define metamacro_if_eq3(VALUE) metamacro_if_eq2(metamacro_dec(VALUE)) 556| |#define metamacro_if_eq4(VALUE) metamacro_if_eq3(metamacro_dec(VALUE)) 557| |#define metamacro_if_eq5(VALUE) metamacro_if_eq4(metamacro_dec(VALUE)) 558| |#define metamacro_if_eq6(VALUE) metamacro_if_eq5(metamacro_dec(VALUE)) 559| |#define metamacro_if_eq7(VALUE) metamacro_if_eq6(metamacro_dec(VALUE)) 560| |#define metamacro_if_eq8(VALUE) metamacro_if_eq7(metamacro_dec(VALUE)) 561| |#define metamacro_if_eq9(VALUE) metamacro_if_eq8(metamacro_dec(VALUE)) 562| |#define metamacro_if_eq10(VALUE) metamacro_if_eq9(metamacro_dec(VALUE)) 563| |#define metamacro_if_eq11(VALUE) metamacro_if_eq10(metamacro_dec(VALUE)) 564| |#define metamacro_if_eq12(VALUE) metamacro_if_eq11(metamacro_dec(VALUE)) 565| |#define metamacro_if_eq13(VALUE) metamacro_if_eq12(metamacro_dec(VALUE)) 566| |#define metamacro_if_eq14(VALUE) metamacro_if_eq13(metamacro_dec(VALUE)) 567| |#define metamacro_if_eq15(VALUE) metamacro_if_eq14(metamacro_dec(VALUE)) 568| |#define metamacro_if_eq16(VALUE) metamacro_if_eq15(metamacro_dec(VALUE)) 569| |#define metamacro_if_eq17(VALUE) metamacro_if_eq16(metamacro_dec(VALUE)) 570| |#define metamacro_if_eq18(VALUE) metamacro_if_eq17(metamacro_dec(VALUE)) 571| |#define metamacro_if_eq19(VALUE) metamacro_if_eq18(metamacro_dec(VALUE)) 572| |#define metamacro_if_eq20(VALUE) metamacro_if_eq19(metamacro_dec(VALUE)) 573| | 574| |// metamacro_if_eq_recursive expansions 575| |#define metamacro_if_eq_recursive0(VALUE) \ 576| | metamacro_concat(metamacro_if_eq_recursive0_, VALUE) 577| | 578| |#define metamacro_if_eq_recursive0_0(...) __VA_ARGS__ metamacro_consume_ 579| |#define metamacro_if_eq_recursive0_1(...) metamacro_expand_ 580| |#define metamacro_if_eq_recursive0_2(...) metamacro_expand_ 581| |#define metamacro_if_eq_recursive0_3(...) metamacro_expand_ 582| |#define metamacro_if_eq_recursive0_4(...) metamacro_expand_ 583| |#define metamacro_if_eq_recursive0_5(...) metamacro_expand_ 584| |#define metamacro_if_eq_recursive0_6(...) metamacro_expand_ 585| |#define metamacro_if_eq_recursive0_7(...) metamacro_expand_ 586| |#define metamacro_if_eq_recursive0_8(...) metamacro_expand_ 587| |#define metamacro_if_eq_recursive0_9(...) metamacro_expand_ 588| |#define metamacro_if_eq_recursive0_10(...) metamacro_expand_ 589| |#define metamacro_if_eq_recursive0_11(...) metamacro_expand_ 590| |#define metamacro_if_eq_recursive0_12(...) metamacro_expand_ 591| |#define metamacro_if_eq_recursive0_13(...) metamacro_expand_ 592| |#define metamacro_if_eq_recursive0_14(...) metamacro_expand_ 593| |#define metamacro_if_eq_recursive0_15(...) metamacro_expand_ 594| |#define metamacro_if_eq_recursive0_16(...) metamacro_expand_ 595| |#define metamacro_if_eq_recursive0_17(...) metamacro_expand_ 596| |#define metamacro_if_eq_recursive0_18(...) metamacro_expand_ 597| |#define metamacro_if_eq_recursive0_19(...) metamacro_expand_ 598| |#define metamacro_if_eq_recursive0_20(...) metamacro_expand_ 599| | 600| |#define metamacro_if_eq_recursive1(VALUE) metamacro_if_eq_recursive0(metamacro_dec(VALUE)) 601| |#define metamacro_if_eq_recursive2(VALUE) metamacro_if_eq_recursive1(metamacro_dec(VALUE)) 602| |#define metamacro_if_eq_recursive3(VALUE) metamacro_if_eq_recursive2(metamacro_dec(VALUE)) 603| |#define metamacro_if_eq_recursive4(VALUE) metamacro_if_eq_recursive3(metamacro_dec(VALUE)) 604| |#define metamacro_if_eq_recursive5(VALUE) metamacro_if_eq_recursive4(metamacro_dec(VALUE)) 605| |#define metamacro_if_eq_recursive6(VALUE) metamacro_if_eq_recursive5(metamacro_dec(VALUE)) 606| |#define metamacro_if_eq_recursive7(VALUE) metamacro_if_eq_recursive6(metamacro_dec(VALUE)) 607| |#define metamacro_if_eq_recursive8(VALUE) metamacro_if_eq_recursive7(metamacro_dec(VALUE)) 608| |#define metamacro_if_eq_recursive9(VALUE) metamacro_if_eq_recursive8(metamacro_dec(VALUE)) 609| |#define metamacro_if_eq_recursive10(VALUE) metamacro_if_eq_recursive9(metamacro_dec(VALUE)) 610| |#define metamacro_if_eq_recursive11(VALUE) metamacro_if_eq_recursive10(metamacro_dec(VALUE)) 611| |#define metamacro_if_eq_recursive12(VALUE) metamacro_if_eq_recursive11(metamacro_dec(VALUE)) 612| |#define metamacro_if_eq_recursive13(VALUE) metamacro_if_eq_recursive12(metamacro_dec(VALUE)) 613| |#define metamacro_if_eq_recursive14(VALUE) metamacro_if_eq_recursive13(metamacro_dec(VALUE)) 614| |#define metamacro_if_eq_recursive15(VALUE) metamacro_if_eq_recursive14(metamacro_dec(VALUE)) 615| |#define metamacro_if_eq_recursive16(VALUE) metamacro_if_eq_recursive15(metamacro_dec(VALUE)) 616| |#define metamacro_if_eq_recursive17(VALUE) metamacro_if_eq_recursive16(metamacro_dec(VALUE)) 617| |#define metamacro_if_eq_recursive18(VALUE) metamacro_if_eq_recursive17(metamacro_dec(VALUE)) 618| |#define metamacro_if_eq_recursive19(VALUE) metamacro_if_eq_recursive18(metamacro_dec(VALUE)) 619| |#define metamacro_if_eq_recursive20(VALUE) metamacro_if_eq_recursive19(metamacro_dec(VALUE)) 620| | 621| |// metamacro_take expansions 622| |#define metamacro_take0(...) 623| |#define metamacro_take1(...) metamacro_head(__VA_ARGS__) 624| |#define metamacro_take2(...) metamacro_head(__VA_ARGS__), metamacro_take1(metamacro_tail(__VA_ARGS__)) 625| |#define metamacro_take3(...) metamacro_head(__VA_ARGS__), metamacro_take2(metamacro_tail(__VA_ARGS__)) 626| |#define metamacro_take4(...) metamacro_head(__VA_ARGS__), metamacro_take3(metamacro_tail(__VA_ARGS__)) 627| |#define metamacro_take5(...) metamacro_head(__VA_ARGS__), metamacro_take4(metamacro_tail(__VA_ARGS__)) 628| |#define metamacro_take6(...) metamacro_head(__VA_ARGS__), metamacro_take5(metamacro_tail(__VA_ARGS__)) 629| |#define metamacro_take7(...) metamacro_head(__VA_ARGS__), metamacro_take6(metamacro_tail(__VA_ARGS__)) 630| |#define metamacro_take8(...) metamacro_head(__VA_ARGS__), metamacro_take7(metamacro_tail(__VA_ARGS__)) 631| |#define metamacro_take9(...) metamacro_head(__VA_ARGS__), metamacro_take8(metamacro_tail(__VA_ARGS__)) 632| |#define metamacro_take10(...) metamacro_head(__VA_ARGS__), metamacro_take9(metamacro_tail(__VA_ARGS__)) 633| |#define metamacro_take11(...) metamacro_head(__VA_ARGS__), metamacro_take10(metamacro_tail(__VA_ARGS__)) 634| |#define metamacro_take12(...) metamacro_head(__VA_ARGS__), metamacro_take11(metamacro_tail(__VA_ARGS__)) 635| |#define metamacro_take13(...) metamacro_head(__VA_ARGS__), metamacro_take12(metamacro_tail(__VA_ARGS__)) 636| |#define metamacro_take14(...) metamacro_head(__VA_ARGS__), metamacro_take13(metamacro_tail(__VA_ARGS__)) 637| |#define metamacro_take15(...) metamacro_head(__VA_ARGS__), metamacro_take14(metamacro_tail(__VA_ARGS__)) 638| |#define metamacro_take16(...) metamacro_head(__VA_ARGS__), metamacro_take15(metamacro_tail(__VA_ARGS__)) 639| |#define metamacro_take17(...) metamacro_head(__VA_ARGS__), metamacro_take16(metamacro_tail(__VA_ARGS__)) 640| |#define metamacro_take18(...) metamacro_head(__VA_ARGS__), metamacro_take17(metamacro_tail(__VA_ARGS__)) 641| |#define metamacro_take19(...) metamacro_head(__VA_ARGS__), metamacro_take18(metamacro_tail(__VA_ARGS__)) 642| |#define metamacro_take20(...) metamacro_head(__VA_ARGS__), metamacro_take19(metamacro_tail(__VA_ARGS__)) 643| | 644| |// metamacro_drop expansions 645| |#define metamacro_drop0(...) __VA_ARGS__ 646| |#define metamacro_drop1(...) metamacro_tail(__VA_ARGS__) 647| |#define metamacro_drop2(...) metamacro_drop1(metamacro_tail(__VA_ARGS__)) 648| |#define metamacro_drop3(...) metamacro_drop2(metamacro_tail(__VA_ARGS__)) 649| |#define metamacro_drop4(...) metamacro_drop3(metamacro_tail(__VA_ARGS__)) 650| |#define metamacro_drop5(...) metamacro_drop4(metamacro_tail(__VA_ARGS__)) 651| |#define metamacro_drop6(...) metamacro_drop5(metamacro_tail(__VA_ARGS__)) 652| |#define metamacro_drop7(...) metamacro_drop6(metamacro_tail(__VA_ARGS__)) 653| |#define metamacro_drop8(...) metamacro_drop7(metamacro_tail(__VA_ARGS__)) 654| |#define metamacro_drop9(...) metamacro_drop8(metamacro_tail(__VA_ARGS__)) 655| |#define metamacro_drop10(...) metamacro_drop9(metamacro_tail(__VA_ARGS__)) 656| |#define metamacro_drop11(...) metamacro_drop10(metamacro_tail(__VA_ARGS__)) 657| |#define metamacro_drop12(...) metamacro_drop11(metamacro_tail(__VA_ARGS__)) 658| |#define metamacro_drop13(...) metamacro_drop12(metamacro_tail(__VA_ARGS__)) 659| |#define metamacro_drop14(...) metamacro_drop13(metamacro_tail(__VA_ARGS__)) 660| |#define metamacro_drop15(...) metamacro_drop14(metamacro_tail(__VA_ARGS__)) 661| |#define metamacro_drop16(...) metamacro_drop15(metamacro_tail(__VA_ARGS__)) 662| |#define metamacro_drop17(...) metamacro_drop16(metamacro_tail(__VA_ARGS__)) 663| |#define metamacro_drop18(...) metamacro_drop17(metamacro_tail(__VA_ARGS__)) 664| |#define metamacro_drop19(...) metamacro_drop18(metamacro_tail(__VA_ARGS__)) 665| |#define metamacro_drop20(...) metamacro_drop19(metamacro_tail(__VA_ARGS__)) 666| | 667| |#endif /Users/travis/build/SDWebImage/SDWebImage/SDWebImage/Private/UIColor+SDHexString.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "UIColor+SDHexString.h" 10| | 11| |@implementation UIColor (SDHexString) 12| | 13| 66|- (NSString *)sd_hexString { 14| 66| CGFloat red, green, blue, alpha; 15| |#if SD_UIKIT 16| | if (![self getRed:&red green:&green blue:&blue alpha:&alpha]) { 17| | [self getWhite:&red alpha:&alpha]; 18| | green = red; 19| | blue = red; 20| | } 21| |#else 22| | @try { 23| 66| [self getRed:&red green:&green blue:&blue alpha:&alpha]; 24| 66| } 25| 66| @catch (NSException *exception) { 26| 66| [self getWhite:&red alpha:&alpha]; 27| 66| green = red; 28| 66| blue = red; 29| 66| } 30| 66|#endif 31| 66| 32| 66| red = roundf(red * 255.f); 33| 66| green = roundf(green * 255.f); 34| 66| blue = roundf(blue * 255.f); 35| 66| alpha = roundf(alpha * 255.f); 36| 66| 37| 66| uint hex = ((uint)alpha << 24) | ((uint)red << 16) | ((uint)green << 8) | ((uint)blue); 38| 66| 39| 66| return [NSString stringWithFormat:@"#%08x", hex]; 40| 66|} 41| | 42| |@end /Users/travis/build/SDWebImage/SDWebImage/SDWebImageMapKit/MapKit/MKAnnotationView+WebCache.m: 1| |/* 2| | * This file is part of the SDWebImage package. 3| | * (c) Olivier Poitrey 4| | * 5| | * For the full copyright and license information, please view the LICENSE 6| | * file that was distributed with this source code. 7| | */ 8| | 9| |#import "MKAnnotationView+WebCache.h" 10| | 11| |#if SD_UIKIT || SD_MAC 12| | 13| |@implementation MKAnnotationView (WebCache) 14| | 15| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url { 16| 0| [self sd_setImageWithURL:url placeholderImage:nil options:0 completed:nil]; 17| 0|} 18| | 19| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder { 20| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 completed:nil]; 21| 0|} 22| | 23| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options { 24| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil]; 25| 0|} 26| | 27| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options context:(nullable SDWebImageContext *)context { 28| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:context progress:nil completed:nil]; 29| 0|} 30| | 31| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock { 32| 1| [self sd_setImageWithURL:url placeholderImage:nil options:0 completed:completedBlock]; 33| 1|} 34| | 35| 0|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock { 36| 0| [self sd_setImageWithURL:url placeholderImage:placeholder options:0 completed:completedBlock]; 37| 0|} 38| | 39| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock { 40| 1| [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock]; 41| 1|} 42| | 43| 1|- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options progress:(nullable SDImageLoaderProgressBlock)progressBlock completed:(nullable SDExternalCompletionBlock)completedBlock { 44| 1| [self sd_setImageWithURL:url placeholderImage:placeholder options:options context:nil progress:progressBlock completed:completedBlock]; 45| 1|} 46| | 47| |- (void)sd_setImageWithURL:(nullable NSURL *)url 48| | placeholderImage:(nullable UIImage *)placeholder 49| | options:(SDWebImageOptions)options 50| | context:(nullable SDWebImageContext *)context 51| | progress:(nullable SDImageLoaderProgressBlock)progressBlock 52| 1| completed:(nullable SDExternalCompletionBlock)completedBlock { 53| 1| __weak typeof(self) wself = self; 54| 1| [self sd_internalSetImageWithURL:url 55| 1| placeholderImage:placeholder 56| 1| options:options 57| 1| context:context 58| 2| setImageBlock:^(UIImage * _Nullable image, NSData * _Nullable imageData, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { 59| 2| wself.image = image; 60| 2| } 61| 1| progress:progressBlock 62| 1| completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { 63| 1| if (completedBlock) { 64| 1| completedBlock(image, error, cacheType, imageURL); 65| 1| } 66| 1| }]; 67| 1|} 68| | 69| |@end 70| | 71| |#endif <<<<<< EOF # path=fixes ./WebImage/SDWebImage.h:9,11,14,17,19,74,85 ./WebImage/SDWebImageMapKit.h:9,11,14,17,19 ./Tests/Tests/SDWebImageManagerTests.m:8,13,15,17,19,23,24,27,29,37,42,44,45,48,50,58,62,64,65,68,76,78,84,86,87,96,107,111,113,114,119,129,131,132,136,143,145,151,155,159,161,162,167,172,182,187,189,190,194,202,204,210,214,216,217,220,228,234,258,260,261,275,277,281,282,296,298,300,301,322,324,325,332,345,347,348,356,376,378,379,383,384 ./Tests/Tests/SDWebImageTestCoder.h:9,12,14 ./Tests/Tests/SDAnimatedImageTest.m:9,13,15,18,21,23,25,27,29,31,33,35,37,42,52,53,58,65,66,73,74,85,86,90,93,96,100,103,104,111,112,119,120,127,128,143,151,152,159,160,171,172,182,185,186,206,207,216,218,223,228,233,242,244,247,249,250,257,260,263,266,269,271,273,276,277,289,290,306,316,317,331,332,335,337,346,352,361,365,367,368,371,375,384,390,399,403,405,406,409,413,420,428,437,439,449,462,473,475,476,479,482,491,497,504,511,518,524,528,530,531,534,536,546,548,558,561,563,564,574,576,577,582,583,587,588,593,594,597,598,603,604,608,609 ./Tests/Tests/SDMockFileManager.h:8,10,13,15,17 ./Tests/Tests/SDWebImageTestCache.m:9,13,15,17,23,25,26,29,30,33,34,37,38,41,42,45,46,48,50,53,54,57,58,61,62,70,72,73,78,79,80,83,84,92,93,94,95,98,99,102,103,109,111,112,116,117,124,125,126,128,130,140,141,148,150,151,168,171,172,173,190,194,197,198,199,202,203,215,222,233,234,238,241,243,244,261,264,265,266,283,286,287,288,292,293 ./Tests/Tests/SDWebImageDownloaderTests.m:9,15,17,24,28,29,31,33,35,37,42,43,46,47,57,58,67,70,71,74,77,79,80,91,97,101,107,109,110,120,121,134,139,140,151,154,155,158,165,168,169,172,180,182,188,190,191,196,201,203,209,211,212,216,220,225,231,233,235,237,238,247,250,251,260,263,264,271,280,281,284,290,293,295,297,298,314,320,327,334,335,341,343,357,364,366,370,371,382,385,386,397,400,401,410,412,422,432,435,437,439,440,449,451,461,463,474,477,479,480,487,491,497,501,504,505,509,515,530,533,536,543,545,552,554,556,557,561,563,570,580,591,601,605,606,611,614,626,638,642,648,658,662,663,666,668,686,689,693,694,703,711,713,714,726,734,736,737,739,743,744 ./Tests/Tests/SDWebImageTestLoader.h:9,12,15,17 ./Tests/Tests/SDUtilsTests.m:9,16,18,20,22,45,46,71,72,77,78,87,90,93,96,100,103,106,109,110,135,136,145,148,149,156,157,159,163,164,168,169 ./Tests/Tests/SDTestCase.h:9,11,12,16,21,29,31,34 ./Tests/Tests/SDCategoriesTests.m:9,14,16,18,20,25,30,31,51,52,62,63,65,69,70,74,75 ./Tests/Tests/SDWebImageTestDownloadOperation.h:9,12,17,20 ./Tests/Tests/SDImageCoderTests.m:9,12,14,16,18,22,23,32,33,45,46,53,54,63,64,74,75,85,86,96,97,111,112,131,132,136,144,152,155,156,163,164,171,172,181,182,195,196,197,205,206,207,215,216,233,234,235,244,245,255,256,257,267,268,269,277,278,279,288,298,304,311,312,313,315,321,322,333,336,340,344,354,355,370,371,394,398,399,404,406,416,426,435,436,437,444,446,447 ./Tests/Tests/SDWebImageTestTransformer.m:9,11,13,16,17,20,21 ./Tests/Tests/SDWebCacheCategoriesTests.m:9,12,14,16,18,20,23,36,37,41,53,55,58,70,71,75,88,89,92,105,106,109,122,123,131,132,134,138,150,151,154,166,168,171,189,191,201,202,213,214,217,228,230,231,236,244,254,255,258,270,277,279,295,297,298,301,306,313,316,321,339,341,342,345,358,367,370,371,394,396,397,400,420,422,423,433,435,436,440,441,445,447 ./Tests/Tests/SDMockFileManager.m:8,10,12,14,16,18,25,30,35,36,37 ./Tests/Tests/SDWebImageTestCoder.m:9,11,13,16,17,20,21,26,27,29,32,34,35,38,39,44,45,48,49,54,55 ./Tests/Tests/SDImageCacheTests.m:8,13,16,18,20,22,25,26,29,30,34,35,38,52,56,57,60,71,75,76,80,91,94,95,99,110,113,114,120,127,133,134,148,149,159,160,170,171,181,182,193,194,210,211,214,215,225,226,230,231,235,236,247,248,253,254,260,261,267,268,274,275,278,282,286,293,296,301,303,304,313,328,329,331,335,338,341,342,344,349,351,352,356,360,368,369,373,375,378,386,390,392,393,400,406,416,424,435,443,448,457,467,475,483,485,486,492,504,505,514,515,523,524,529,538,542,543,580,581,603,605,626,627,637,638,650,651,663,664,672,673,685,686,692,695,714,733,734,741,744,746,758,771,773,774,781,784,786,798,811,813,814,821,848,849,851,856,858,859,864,866,867,873,875,876,882,884,885,889,890,894,895,900,901,906,907,911,912 ./Tests/Tests/SDWebImageTestLoader.m:9,12,14,16,18,26,27,30,31,34,41,46,47,55,58,60,61,64,65 ./Tests/Tests/SDImageTransformerTests.m:9,13,15,18,20,22,24,28,29,32,33,44,45,48,49,52,53,63,64,67,68,71,72,92,93,96,97,100,101,115,116,119,120,123,124,137,141,142,145,146,149,150,164,165,168,169,172,173,187,188,191,192,195,196,210,211,213,232,240,243,267,271,272,275,279,282,285,288,291,295,298,301,304,307,308,310,316,319,329,339,349,359,369,379,389,399,400,402,406,408,409,418,420,421,425,426 ./Tests/Tests/SDWebImageTestCache.h:9,13,16,19,21,23,27,29,32,36,38,40 ./Tests/Tests/SDWebImageTestDownloadOperation.m:9,11,13,15,17,19,22,27,28,32,36,37,38,41,42,47,48,53,54,57,58,64,66,67,72,74,75,79,80 ./Tests/Tests/SDTestCase.m:9,11,19,21,24,25,28,29 ./Tests/Tests/SDWebImagePrefetcherTests.m:9,11,13,15,17,19,24,26,28,32,33,36,40,42,56,58,59,62,68,70,71,74,85,97,109,113,115,116,119,125,139,141,142,152,153,156,162,169,175,177,178,183,184,189,190 ./Tests/Tests/SDWebImageTestTransformer.h:9,11,13,15 ./Pods/Target Support Files/KVOController-tvOS/KVOController-tvOS-umbrella.h:12,16,19 ./Pods/Target Support Files/SDWebImage-Core-MapKit-tvOS/SDWebImage-Core-MapKit-tvOS-umbrella.h:12,73,76 ./Pods/Target Support Files/libwebp-iOS/libwebp-iOS-umbrella.h:12,20,23 ./Pods/Target Support Files/libwebp-tvOS/libwebp-tvOS-umbrella.h:12,20,23 ./Pods/Target Support Files/Pods-Tests Mac/Pods-Tests Mac-umbrella.h:12,13,16 ./Pods/Target Support Files/Expecta-iOS/Expecta-iOS-umbrella.h:12,52,55 ./Pods/Target Support Files/KVOController-macOS/KVOController-macOS-umbrella.h:12,16,19 ./Pods/Target Support Files/SDWebImage-Core/SDWebImage-Core-umbrella.h:12,72,75 ./Pods/Target Support Files/libwebp-macOS/libwebp-macOS-umbrella.h:12,20,23 ./Pods/Target Support Files/Pods-SDWebImage TV Demo/Pods-SDWebImage TV Demo-umbrella.h:12,13,16 ./Pods/Target Support Files/Pods-SDWebImage OSX Demo/Pods-SDWebImage OSX Demo-umbrella.h:12,13,16 ./Pods/Target Support Files/Pods-SDWebImage Watch Demo Extension/Pods-SDWebImage Watch Demo Extension-umbrella.h:12,13,16 ./Pods/Target Support Files/Expecta-macOS/Expecta-macOS-umbrella.h:12,52,55 ./Pods/Target Support Files/SDWebImage-Core-MapKit-macOS/SDWebImage-Core-MapKit-macOS-umbrella.h:12,73,76 ./Pods/Target Support Files/Expecta-tvOS/Expecta-tvOS-umbrella.h:12,52,55 ./Pods/Target Support Files/Pods-Tests TV/Pods-Tests TV-umbrella.h:12,13,16 ./Pods/Target Support Files/Pods-SDWebImage iOS Demo/Pods-SDWebImage iOS Demo-umbrella.h:12,13,16 ./Pods/Target Support Files/libwebp-watchOS/libwebp-watchOS-umbrella.h:12,20,23 ./Pods/Target Support Files/Pods-Tests iOS/Pods-Tests iOS-umbrella.h:12,13,16 ./Pods/Target Support Files/SDWebImage-Core-MapKit-iOS/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./Pods/Target Support Files/KVOController-iOS/KVOController-iOS-umbrella.h:12,16,19 ./Pods/KVOController/FBKVOController/KVOController.h:4,9 ./Pods/KVOController/FBKVOController/FBKVOController.h:4,9,11,15,17,19,21,27,31,33,39,41,46,54,60,64,71,80,88,91,95,98,102,106,111,121,131,141,142,152,162,172,176,184,191,197,199 ./Pods/KVOController/FBKVOController/NSObject+FBKVOController.m:4,9,11,13,17,19,21,24,26,28,30,35,36,38,39,41,43,44,46,48,52,53,55,56,58,60,61,63,64 ./Pods/KVOController/FBKVOController/FBKVOController.m:4,9,11,14,18,20,22,24,41,43,44,46,52,53,54,56,60,61,65,66,71,72,74,79,81,82,84,87,90,95,97,104,106,115,116,123,132,134,135,137,139,140,142,144,145,147,149,150,152,154,155,157,159,160,162,165,168,171,173,174,176,180,183,186,189,192,193,195,197,203,206,209,212,215,217,219,222,223,225,232,233,235,250,251,254,256,257,259,261,262,264,266,269,273,274,276,279,282,283,285,288,289,294,297,306,307,308,310,313,314,319,323,325,326,328,331,332,337,339,344,346,347,348,353,355,357,358,363,364,366,370,374,383,392,393,394,395,396,397,399,401,403,406,407,409,411,413,414,416,423,425,426,428,430,431,433,436,437,439,441,444,447,450,451,459,460,463,466,467,469,471,474,476,481,485,486,491,492,495,498,500,501,503,506,509,512,515,519,520,521,524,527,528,530,533,535,538,541,544,545,547,550,552,555,558,560,565,566,567,569,571,575,576,579,582,583,584,586,590,591,594,595,596,598,603,604,607,610,611,613,618,619,622,623,624,626,630,631,634,637,638,640,644,645,648,649,650,652,655,658,659,661,664,665,667,668,670,672,673,675 ./Pods/KVOController/FBKVOController/NSObject+FBKVOController.h:4,9,11,13,15,18,23,30,39,41 ./Pods/libwebp/src/mux/muxread.c:14,18,21,33,34,40,48,50,58,63,64,68,69,74,75,91,95,97,98,108,111,113,120,123,128,134,151,154,159,163,166,170,171,174,189,193,195,198,204,205,208,214,215,218,227,228,232,236,244,274,280,282,286,287,290,293,296,302,303,306,311,321,322,323,332,349,352,353,355,360,361,365,367,368,372,373,386,387,392,402,406,409,413,414,418,423,424,430,442,443,444,456,457,470,476,479,480,485,489,490,494,500,501,502,507,509,515,517,518,524,526,527,536,537,539,540,545,546,553,554,556,557 ./Pods/libwebp/src/mux/muxinternal.c:14,18,20,32,35,37,40,41,44,49,50,56,60,61,64,69,71,72,77,79,80,83,84,88,89,92,97,99,100,105,110,112,113,116,122,123,125,132,133,136,137,141,145,146,154,155,159,167,169,170,173,178,179,183,184,185,188,200,201,206,208,209,215,217,218,221,225,226,236,240,241,244,254,255,256,268,269,270,272,273,282,286,287,294,296,297,300,303,308,309,314,319,321,322,325,331,332,337,340,341,344,352,355,356,359,368,369,382,384,385,394,399,400,403,408,410,411,418,419,429,430,431,434,435,437,452,454,455,467,470,473,476,480,484,488,495,496,500,503,509,515,516,517,518,519,527,539,540,541,543,544,546,548 ./Pods/libwebp/src/mux/anim_encode.c:12,18,25,29,31,34,39,47,52,59,61,66,69,77,84,89,94,98,102,105,108,116,117,121,122,124,127,130,131,139,140,146,157,158,159,167,168,170,171,173,181,182,188,191,192,195,204,205,206,207,215,216,217,220,221,225,226,227,233,234,235,240,243,247,248,255,264,265,271,279,282,293,296,303,305,309,310,317,318,319,329,331,334,335,336,339,345,346,349,361,364,366,367,380,385,386,396,399,401,402,405,406,411,412,423,428,441,442,444,456,457,459,472,473,475,487,488,490,497,498,499,506,507,518,526,528,529,533,534,549,550,559,560,561,565,566,582,588,589,592,593,608,621,622,629,630,631,634,635,652,653,654,656,657,677,678,679,681,682,700,701,702,704,705,707,745,746,747,758,759,761,762,763,765,766,774,776,777,785,796,806,809,815,819,820,823,827,828,835,836,837,845,848,868,877,889,890,897,901,908,914,916,917,920,925,926,933,943,944,945,950,957,993,1003,1005,1006,1023,1024,1025,1044,1049,1050,1051,1052,1053,1072,1076,1082,1091,1094,1102,1106,1107,1109,1115,1116,1124,1125,1132,1138,1141,1153,1154,1155,1161,1162,1170,1171,1173,1175,1180,1181,1182,1187,1188,1194,1195,1203,1205,1228,1234,1235,1241,1249,1258,1266,1270,1271,1272,1273,1277,1281,1290,1291,1295,1296,1308,1313,1320,1321,1330,1332,1333,1336,1341,1344,1346,1354,1357,1360,1363,1364,1369,1370,1376,1377,1382,1386,1387,1388,1393,1398,1403,1405,1410,1412,1413,1416,1427,1431,1437,1440,1442,1443,1451,1455,1463,1464,1466,1471,1472,1489,1498,1503,1508,1509,1516,1517,1521,1524,1526,1530,1531,1535,1536,1544,1545,1546,1551,1552,1557,1560,1564,1568,1570,1574,1575,1579,1580 ./Pods/libwebp/src/mux/animi.h:13,16,18,22,38,40,42 ./Pods/libwebp/src/mux/muxedit.c:14,18,21,27,28,36,37,38,43,44,45,55,56,61,62,63,66,75,76,84,93,95,102,106,109,112,119,123,124,146,148,151,152,163,164,166,167,173,174,177,185,187,191,194,195,211,212,227,231,232,237,242,243,247,248,252,256,259,263,264,269,272,274,278,279,286,287,288,293,294,306,313,314,318,321,325,326,332,336,337,341,346,347,353,357,360,364,368,372,373,376,380,381,385,386,389,398,403,404,413,417,422,423,430,434,449,452,459,461,462,476,482,483,488,492,495,498,503,504,507,508,511,514,517,518,522,525,526,530,531,537,538,542,544,545,550,569,570,577,579,580,587,589,590,596,598,599,605,608,611,614,615,621,627,630,641,648,649,653,655,656 ./Pods/libwebp/src/mux/muxi.h:13,16,22,26,29,33,44,59,68,73,89,93,95,101,103,106,109,112,115,118,121,125,129,138,141,144,147,152,153,158,159,162,165,168,171,174,178,182,186,194,195,196,199,202,206,209,212,215,218,221,224,227,229,231,233 ./Pods/libwebp/src/utils/bit_writer_utils.c:14,18,22,25,34,44,48,53,54,65,68,72,77,78,79,82,94,107,115,122,124,125,133,139,141,142,148,149,150,157,158,159,161,172,173,179,180,189,190,195,196,197,200,204,216,226,229,235,236,240,241,253,254,259,260,261,269,270,275,276,286,287,292,293,311,322,323,328,331,332,333,341,343,345,346 ./Pods/libwebp/src/utils/endian_inl_utils.h:11,14,18,21,29,41,51,52,74,75,91,92 ./Pods/libwebp/src/utils/thread_utils.c:13,18,20,22,26,37,42,46,48,50,52,58,60,63,65,69,74,96,97,102,103,113,114,118,119,123,124,128,129,141,142,156,159,160,173,176,177,195,196,201,203,212,218,226,228,229,237,243,254,255,257,258,260,262,266,267,274,275,286,289,293,305,311,314,315,319,320,321,328,329,340,346,347,349,353,360,363,364,367,368 ./Pods/libwebp/src/utils/utils.h:14,17,21,24,27,31,34,44,55,58,61,64,71,74,75,78,82,83,86,87,90,91,97,98,103,104,108,109,116,121,126,137,139,140,143,146,148,153,158,161,171,173,175,177 ./Pods/libwebp/src/utils/bit_reader_utils.h:14,17,23,28,44,48,60,74,79,85,87,90,103,110,114,117,121,128,131,134,137,139,148,152,156,162,166,167,173,174,181,182,188,189,191,193 ./Pods/libwebp/src/utils/bit_reader_inl_utils.h:15,18,22,24,29,33,36,46,49,52,55,103,104,105,115,116,126,127,131,135,136,137,143,144,155,156,157,166,167,179,184,188,189,190,192,194 ./Pods/libwebp/src/utils/rescaler_utils.c:13,19,21,39,45,64,69,73,75,76,82,85,90,95,99,100,104,105,106,109,113,114,123,129,130,135,137,138,144,146,147 ./Pods/libwebp/src/utils/quant_levels_utils.h:13,16,18,20,24,31,33,35 ./Pods/libwebp/src/utils/quant_levels_dec_utils.h:13,16,18,22,30,32,34 ./Pods/libwebp/src/utils/huffman_utils.c:13,20,24,30,33,34,38,39,40,47,49,50,61,62,74,76,77,91,97,102,104,105,109,110,116,118,119,128,129,130,131,139,141,142,143,160,168,169,170,179,191,196,197,198,202,203,204,206,207,233,235 ./Pods/libwebp/src/utils/color_cache_utils.h:14,17,19,22,26,33,35,39,40,45,46,51,52,57,58,62,63,69,70,72,76,79,82,84,86,88 ./Pods/libwebp/src/utils/filters_utils.h:13,16,19,23,27,29,31 ./Pods/libwebp/src/utils/huffman_encode_utils.c:13,20,23,27,28,38,42,43,46,59,60,64,67,68,69,71,85,89,94,95,107,108,114,115,116,117,118,119,132,133,134,143,144,145,173,177,178,179,182,183,185,206,207,208,211,221,227,228,232,236,237,241,242,243,249,250,253,254,255,256,257,260,270,278,290,291,293,294,304,321,322,324,325,345,348,351,352,354,360,368,371,372,380,387,390,395,396,400,401,402,405,417 ./Pods/libwebp/src/utils/random_utils.h:13,16,19,23,26,32,35,53,54,57,58,60,62 ./Pods/libwebp/src/utils/rescaler_utils.h:13,16,20,22,27,48,56,64,69,74,77,82,87,88,93,94,96,98,100 ./Pods/libwebp/src/utils/quant_levels_utils.c:14,16,18,20,23,26,37,40,41,44,45,48,49,50,58,59,60,62,66,67,73,79,86,90,92,93,100,101,102,103,109,110,115,116,118,128,132,133,137,139,140 ./Pods/libwebp/src/utils/quant_levels_dec_utils.c:16,18,20,22,24,28,30,40,44,51,54,56,63,68,71,73,77,79,89,96,105,106,107,116,121,125,130,131,132,152,153,155,156,159,179,181,182,195,197,208,209,211,212,213,214,219,225,228,235,238,247,250,254,256,257,260,261,265,268,272,285,286,287,289,291 ./Pods/libwebp/src/utils/bit_reader_utils.c:13,17,20,23,32,33,45,46,52,53,54,66,86,99,100,101,104,109,111,112,117,118,121,123,129,139,147,152,155,158,162,163,173,174,178,179,187,190,191,192,203,206,207,220,221,222,225,227,231,238,243,264,267,268,276,283,287,294,295,297 ./Pods/libwebp/src/utils/thread_utils.h:13,16,20,22,26,33,37,47,72,80,83,85,87,89 ./Pods/libwebp/src/utils/utils.c:13,21,43,48,51,53,55,60,67,73,75,88,89,90,94,98,99,102,106,107,113,115,116,136,137,138,147,148,157,158,159,160,166,176,184,185,187,189,190,199,200,209,210,215,217,218,220,223,224,227,228,230,239,240,241,248,249,251,254,267,273,283,291,292,293,295,296,303,304,305,307,308,311,313,334 ./Pods/libwebp/src/utils/bit_writer_utils.h:13,16,18,22,25,37,45,50,54,59,60,64,68,69,72,88,95,102,105,106,121,124,127,139,142,145,146,147,149,151,153 ./Pods/libwebp/src/utils/huffman_utils.h:13,16,20,24,27,30,31,37,45,48,69,72,75,85,87,89 ./Pods/libwebp/src/utils/huffman_encode_utils.h:13,16,18,22,28,35,43,48,55,57,59 ./Pods/libwebp/src/utils/color_cache_utils.c:13,19,22,33,34,39,40,41,49 ./Pods/libwebp/src/utils/filters_utils.c:13,17,20,23,27,28,34,51,52,53,62,63,67,68,70,71,72,75 ./Pods/libwebp/src/utils/random_utils.c:13,16,18,32,40,41,43 ./Pods/libwebp/src/webp/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./Pods/libwebp/src/webp/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./Pods/libwebp/src/webp/types.h:13,16,18,38,48,51,55,60,63,65,67 ./Pods/libwebp/src/webp/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./Pods/libwebp/src/webp/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./Pods/libwebp/src/webp/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./Pods/libwebp/src/webp/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./Pods/libwebp/src/enc/iterator_enc.c:13,15,17,21,31,32,33,41,42,43,55,56,64,65,68,69,72,73,87,88,97,99,100,104,106,114,117,121,122,123,129,130,142,146,148,159,163,164,173,174,175,178,185,186,187,201,204,207,208,213,214,215,216,219,230,233,238,252,265,266,281,283,284,286,289,299,303,308,312,313,314,324,326,327,330,337,339,340,348,350,351,354,355,358,359,362,363,393,402,406,409,413,416,421,425,426,428,429,435,439,443,447,448,453,454,457,458 ./Pods/libwebp/src/enc/backward_references_enc.h:12,15,20,24,27,30,37,44,52,53,62,63,70,71,74,75,78,79,82,83,88,89,92,93,98,99,103,104,107,110,120,133,141,145,146,150,151,158,159,162,165,168,178,184,193,199,207,208,211,217,229,231,233 ./Pods/libwebp/src/enc/cost_enc.c:13,15,18,41,50,53,55,56,59,62,64,77,80,81,86,87,88,90,91,94,202,205,213,214,217,224,230,231,237,239,244,253,254,256,257,263,265,274,275,276,278,279,280,283,286,296,303,319,323,324,325,332,333,336,337,340,341 ./Pods/libwebp/src/enc/alpha_enc.c:13,16,23,46,48,56,63,67,84,95,97,98,100,107,122,128,135,136,148,152,153,154,159,160,164,168,171,175,176,178,184,190,191,194,196,197,200,220,225,227,228,232,233,245,249,261,262,263,268,280,288,290,291,299,305,313,316,317,320,321,325,326,330,331,334,342,343,353,355,356,359,360,363,377,381,386,387,399,400,401,409,414,415,417,418,424,425,427,428,437,443 ./Pods/libwebp/src/enc/histogram_enc.h:13,16,18,22,26,29,49,57,66,69,74,78,81,84,88,91,96,102,106,107,116,119,123,125,127 ./Pods/libwebp/src/enc/picture_psnr_enc.c:13,15,17,20,24,28,34,36,57,58,60,61,63,65,75,77,78,80,93,94,98,103,106,107,111,112,114,115,118,121,125,126,130,131,144,145,160,161,164,167,171,172,178,189,190,197,211,214,215,219,224,225,227,245,246,256,257 ./Pods/libwebp/src/enc/token_enc.c:18,22,26,28,32,42,44,52,53,61,63,64,65,71,75,77,83,84,86,89,98,101,102,110,111,112,124,125,134,142,149,178,182,183,186,190,191,193,194,196,199,216,217,220,223,224,242,243,245,247,248,250,252,256,259,260,262 ./Pods/libwebp/src/enc/vp8i_enc.h:13,16,24,28,31,36,41,48,77,82,106,111,118,119,122,125,128,136,138,146,159,168,171,180,188,202,206,208,223,250,253,257,260,266,296,300,307,310,312,323,327,329,334,338,341,343,346,350,354,356,360,363,368,370,376,387,395,404,415,418,429,437,443,458,464,469,476,482,487,491,493,496,501,507,511,513,515,517 ./Pods/libwebp/src/enc/tree_enc.c:13,15,18,53,86,119,152,153,155,164,165,269,278,283,284,285,286,287,288,290,291,297,298,299,304,305,306,307,311,312,322,325,337,340,341,344,345,348,382,415,448,481,482,484,495,496,497,498,499,502,503,504 ./Pods/libwebp/src/enc/filter_enc.c:13,17,58,63,64,67,69,76,79,80,83,84,89,93,96,106,107,108,111,115,121,122,129,130,132,133,135,139,147,148,150,154,155,162,167,169,177,180,185,188,192,193,208,209,211,213,226,229,230,232,233,234 ./Pods/libwebp/src/enc/picture_csp_enc.c:13,17,24,27,30,38,40,43,52,56,57,59,60,72,74,75,78,80,89,93,102,105,107,108,109,112,113,122,123,129,130,132,137,138,140,143,147,148,152,153,157,158,161,164,170,174,176,184,202,204,212,216,220,221,222,226,227,241,242,244,248,251,252,254,256,259,260,263,264,266,270,271,278,279,288,289,290,308,309,310,315,316,317,319,323,324,326,329,330,344,349,350,351,366,369,376,382,383,384,388,389,393,394,398,399,419,423,432,436,438,439,442,444,457,473,480,483,485,491,499,502,514,515,521,529,534,535,539,543,548,553,555,558,568,570,573,579,582,585,587,727,731,733,735,737,752,753,764,765,766,786,791,803,808,809,810,821,826,827,828,839,840,841,856,859,864,865,868,874,875,880,884,895,902,905,907,920,927,933,939,945,952,960,963,966,975,980,981,983,985,986,991,994,1008,1012,1013,1014,1018,1019,1022,1023,1026,1030,1031,1034,1039,1042,1045,1049,1051,1060,1075,1079,1088,1089,1090,1091,1093,1094,1097,1108,1113,1115,1118,1129,1145,1146,1156,1157,1159,1160,1162,1164,1170,1171,1177,1178,1179,1185,1186,1188,1194,1195,1201,1202,1208,1209 ./Pods/libwebp/src/enc/frame_enc.c:13,16,21,24,27,33,42,47,57,58,61,62,73,80,81,84,90,93,98,99,102,104,107,108,122,124,125,131,132,136,137,141,142,170,171,172,173,174,177,178,181,186,187,192,193,194,198,202,207,208,215,227,228,229,232,239,240,248,255,262,290,294,295,297,301,302,304,305,314,316,326,327,334,335,337,347,348,349,356,357,365,367,376,377,384,385,386,396,397,398,399,401,402,405,407,413,424,425,433,434,435,445,446,447,450,451,453,456,458,465,466,468,475,476,486,487,492,498,499,511,514,515,521,522,528,530,534,542,543,544,545,548,550,553,554,559,563,566,569,570,579,588,595,598,607,609,610,624,627,634,635,636,652,655,660,661,666,669,670,674,676,686,690,692,693,701,702,703,711,712,713,719,721,722,725,732,733,734,739,741,748,756,763,765,766,769,771,773,785,789,791,797,810,819,825,833,837,848,849,860,862,865,868,869,873,876,879,880,882,886,887,889 ./Pods/libwebp/src/enc/syntax_enc.c:13,15,20,23,27,28,32,33,36,47,49,50,57,61,64,65,72,74,75,81,83,88,89,93,94,98,100,101,111,113,114,119,122,123,141,144,146,147,153,157,162,163,168,169,173,177,180,184,185,201,204,205,210,211,212,213,214,215,232,233,234,235,245,246,256,260,262,263,265,270,274,277,289,291,297,305,307,308,314,315,316,326,330,337,340,346,351,355,356,358,365,366,375,376,380,381,385,386,388 ./Pods/libwebp/src/enc/cost_enc.h:13,16,20,24,32,38,41,43,51,56,57,61,62,69,70,75,77,79,81 ./Pods/libwebp/src/enc/predictor_enc.c:16,20,22,26,29,32,42,44,45,54,56,57,63,64,67,78,82,89,90,91,94,101,102,110,111,118,119,130,142,144,145,146,166,175,177,178,179,182,183,198,202,208,219,226,228,253,264,287,289,290,291,292,344,357,375,377,383,384,390,397,398,399,403,404,405,407,408,430,438,454,455,466,467,468,469,470,488,498,499,500,501,505,506,509,514,515,521,522,529,530,538,539,546,549,553,556,559,561,562,587,588,589,591,592,599,602,606,609,612,615,618,621,623,624,658,662,663,667,668,671,674,694,701,702,714,715,716,738,748,759,765,768,769,770,771,772 ./Pods/libwebp/src/enc/config_enc.c:13,17,19,23,28,30,58,92,94,95,125,127,129,130,132,134,143,150,151 ./Pods/libwebp/src/enc/backward_references_enc.c:12,15,23,25,27,30,34,36,47,56,58,59,71,73,74,77,83,89,94,95,103,104,105,112,113,123,125,126,132,133,144,148,155,156,165,167,168,171,180,182,183,187,190,191,193,196,204,205,210,211,219,220,223,224,240,244,245,249,270,279,286,294,295,298,300,318,329,331,338,342,344,348,350,358,359,375,383,387,388,389,391,392,404,407,409,410,418,421,442,443,448,449,452,453,465,469,498,499,502,511,512,514,515,520,521,542,553,554,555,558,569,570,575,583,587,588,589,590,597,606,607,608,635,650,651,652,653,654,666,667,670,673,674,676,685,687,688,689,706,708,713,714,723,724,753,754,769,771,774,776,777,783,784,790,792,793,802,813,821,822,824,827,828,836,839,840,856,859,882,884,888,892,893,894,905,906,908,921,922,923,925,930,931,944,945 ./Pods/libwebp/src/enc/picture_tools_enc.c:13,15,18,21,30,31,33,35,36,42,43,44,50,51,52,66,67,70,78,81,82,84,85,91,103,107,108,109,123,134,140,141,145,150,156,160,161,162,163,164,167,175,180,181,183,184,185,188,193,196,197,222,223,236,241,245,249,267,268,269,271,272,273,274,277 ./Pods/libwebp/src/enc/webp_enc.c:13,18,23,25,29,31,34,35,39,45,46,53,54,63,66,68,69,94,107,111,113,121,122,123,124,143,174,205,221,230,235,244,247,250,252,253,260,262,263,265,269,270,280,282,293,294,299,300,304,305,312,313,322,323,325,327,331,335,338,341,344,345,347,350,356,365,368,369,370,371,374,375,380,387,389,394,400,401,404,405,407,408,410 ./Pods/libwebp/src/enc/vp8l_enc.c:14,17,28,31,33,39,40,43,44,60,61,66,67,82,83,86,87,88,106,109,112,114,116,117,120,131,136,138,139,149,166,171,172,180,181,186,187,196,203,217,234,238,239,242,243,258,261,279,296,301,302,308,324,325,326,327,332,333,334,343,346,347,354,355,363,365,380,384,389,403,411,412,417,418,426,428,430,431,442,444,446,447,460,472,473,474,476,482,493,494,495,496,501,511,519,521,522,537,538,542,543,544,553,554,558,559,560,580,581,582,583,597,600,606,607,609,610,613,628,631,632,646,647,649,650,651,662,668,669,670,683,686,689,690,691,698,699,709,710,734,741,749,753,760,765,767,769,770,793,794,800,807,812,814,817,823,824,827,833,834,835,840,841,847,848,852,859,860,891,895,896,903,915,925,929,936,937,944,956,960,964,971,972,974,986,992,993,995,1003,1004,1005,1007,1015,1016,1021,1026,1027,1039,1048,1049,1051,1060,1064,1065,1068,1074,1075,1087,1101,1102,1110,1122,1123,1125,1136,1138,1139,1145,1149,1150,1155,1156,1166,1169,1173,1174,1180,1181,1184,1187,1188,1190,1195,1196,1232,1236,1242,1246,1247,1253,1257,1258,1266,1267,1271,1272,1274,1287,1288,1289,1290,1292,1303,1304,1308,1309,1312,1317,1318,1323,1324,1333,1334,1335,1354,1367,1369,1378,1393,1394,1396,1397,1410,1411,1414,1419,1432,1439,1440,1443,1449,1450,1464,1469,1470,1473,1480,1484,1486,1488,1489,1497,1498,1499,1502,1515,1547,1552,1553,1565,1570,1582,1586,1590,1601,1602,1609,1610,1613,1616,1617,1622,1623,1628,1629,1630,1632,1641,1662,1664,1667,1669,1675,1676,1695,1703,1704,1712,1714,1718,1720,1722,1743,1750,1758,1764,1765,1766,1772,1778,1783,1795,1801,1803,1808,1809,1810,1816,1817,1820,1830,1832,1837,1838,1848,1849,1854,1864,1865,1870,1871,1877,1878,1880,1884,1886,1890,1892,1898,1900,1905,1906,1913,1915,1916 ./Pods/libwebp/src/enc/histogram_enc.c:15,17,23,25,33,41,42,48,49,60,61,67,68,71,72,75,76,83,84,85,91,94,95,108,109,110,121,122,136,137,138,144,145,152,161,163,164,171,180,181,182,193,194,195,196,198,222,224,225,226,229,235,241,250,253,254,255,259,260,261,265,267,268,275,276,294,295,307,310,312,313,341,350,351,352,354,355,356,368,369,372,387,398,399,400,405,410,415,422,424,425,433,434,448,453,454,456,457,469,470,472,485,493,494,503,504,528,529,530,538,539,540,552,554,555,574,576,577,578,593,610,611,612,613,624,629,630,638,639,640,659,664,665,705,706,707,708,714,715,716,717,724,725,728,736,742,751,752,758,759,769,770,783,784,785,796,797,807,815,820,822,825,828,830,831,833,844,854,855,862,863,864,870,873,883,884,885,890,891,892,894,898,899,906,925,929,930,938,940,954,965,973,974,976,1004,1013,1019,1026,1027,1030,1032,1035,1040,1041,1044,1065,1072,1073,1075,1080,1081,1082,1086,1092,1093,1094,1102,1104,1105,1125,1129,1130,1131,1146,1148,1149,1157,1158,1159,1166,1168,1169,1193,1200,1203,1209,1218,1219,1230,1235,1236,1237,1238,1242,1244,1249 ./Pods/libwebp/src/enc/analysis_enc.c:13,17,21,23,27,35,55,56,58,59,64,65,67,68,71,74,75,82,87,88,96,97,98,102,107,111,112,122,123,127,128,133,136,137,138,141,156,159,166,171,172,180,187,192,193,206,207,210,211,218,219,223,224,226,227,232,239,245,250,259,260,263,264,274,278,284,286,287,296,303,307,316,317,322,327,329,330,337,349,354,355,358,359,365,369,380,381,383,389,393,394,401,402,412,417,425,426,435,450,452,453,459,460,477,478,515,523,529,532,534,535 ./Pods/libwebp/src/enc/vp8li_enc.h:13,16,25,31,35,38,45,49,57,59,64,72,78,81,87,93,100,103,108,111,113,115,117 ./Pods/libwebp/src/enc/quant_enc.c:13,17,21,26,30,33,40,42,44,46,48,50,53,70,72,85,89,91,104,109,111,117,119,120,121,123,125,128,129,133,152,171,190,194,204,207,220,226,232,234,236,237,239,252,255,258,262,271,281,284,286,287,288,291,295,309,314,315,317,322,336,337,355,356,360,361,381,382,387,389,390,398,399,400,401,419,420,423,427,428,443,449,451,453,455,456,459,463,468,473,474,479,480,483,484,487,495,502,507,510,514,525,534,535,543,544,552,553,556,563,569,578,581,582,586,587,604,605,609,618,619,623,627,633,634,635,650,651,655,656,666,672,673,674,682,683,695,696,702,714,715,716,717,718,724,725,726,734,742,744,745,746,748,753,765,768,771,784,785,794,795,796,801,802,804,805,816,825,828,829,832,839,851,854,855,886,887,888,899,900,901,906,908,918,921,923,935,936,937,941,942,943,946,948,949,953,963,964,969,970,975,976,979,980,992,997,1000,1014,1015,1016,1022,1023,1026,1029,1035,1036,1037,1039,1048,1049,1059,1062,1063,1077,1083,1087,1094,1101,1102,1106,1110,1117,1118,1123,1127,1131,1135,1142,1143,1145,1156,1161,1164,1172,1173,1181,1183,1184,1189,1192,1193,1194,1197,1202,1216,1217,1220,1221,1230,1240,1250,1251,1255,1256,1262,1263,1266,1267,1279,1288,1289,1301,1303,1304,1312,1313,1326,1327,1329,1331,1334,1335,1338,1343,1345,1350,1356,1361,1368,1372 ./Pods/libwebp/src/enc/near_lossless_enc.c:16,19,23,25,28,37,38,46,47,57,58,60,61,71,72,84,97,98,99,100,106,107,108,109,124,132,135,136,141,144,146,150 ./Pods/libwebp/src/enc/picture_enc.c:13,16,20,24,32,33,37,42,44,45,47,52,53,59,60,64,65,69,71,74,77,82,87,88,100,102,105,108,109,116,118,123,128,129,135,139,144,148,151,152,157,159,164,165,167,168,174,175,176,179,184,185,192,202,205,210,214,216,217,224,225,226,229,231,239,241,245,246,254,261,264,265,270,271,278,280,285,286,293,295 ./Pods/libwebp/src/enc/backward_references_cost_enc.c:16,18,24,26,31,39,49,50,57,58,59,60,67,75,76,89,93,94,100,101,105,106,112,113,119,120,136,140,141,142,145,148,172,179,201,206,207,212,213,219,220,221,228,230,231,232,235,238,244,248,249,255,263,272,273,274,285,286,288,290,303,305,306,307,312,315,317,318,325,329,330,331,339,340,349,350,352,353,358,365,368,369,377,384,387,389,390,391,399,403,407,408,413,415,416,424,430,443,444,445,451,453,454,470,478,482,483,485,486,496,500,503,518,519,535,555,556,557,560,561,562,585,587,592,593,596,597,600,601,608,613,618,638,639,659,660,664,668,669,670,671,675,676,684,685,700,703,704,715,719,720,731,732,745,748,749,754,755,773,775,779,785,790 ./Pods/libwebp/src/enc/picture_rescale_enc.c:13,15,17,20,24,26,34,35,37,44,45,46,57,58,62,65,76,81,83,84,89,91,92,97,100,103,115,119,121,122,125,129,132,137,147,152,158,162,163,166,182,183,184,189,190,195,196,197,202,209,210,215,221,227,228,235,249,261,266,267,269,274,275,279,280,291,292,301,302,308 ./Pods/libwebp/src/demux/demux.c:12,16,20,25,29,37,42,55,60,75,81,87,92,99,101,104,105,108,112,116,117,122,123,127,128,132,133,136,137,140,141,144,145,151,152,158,159,165,166,172,173,176,181,182,188,193,194,206,207,217,219,228,232,244,263,270,278,279,284,286,288,289,300,303,304,318,331,332,342,343,344,347,348,357,362,363,366,370,376,377,381,386,387,390,391,398,402,405,416,417,425,431,432,433,436,437,443,450,453,457,463,467,470,481,483,488,492,496,500,510,511,515,516,517,518,523,525,527,528,532,534,543,550,553,556,558,559,562,566,569,572,573,581,584,589,591,592,596,598,603,607,612,614,620,621,626,631,634,635,640,641,643,644,646,647,650,660,661,671,672,673,689,694,695,696,704,706,709,720,721,725,727,728,731,735,745,746,748,752,754,755,760,765,770,772,773,775,778,786,788,789,792,797,799,800,810,819,821,823,824,834,849,850,857,860,862,863,866,870,871,875,876,881,882,885,886,889,897,899,900,910,912,913,918,923,932,934,935,940,944,945,951,953,954,960,962,963,966,967 ./Pods/libwebp/src/demux/anim_decode.c:12,16,19,23,25,31,47,51,52,58,61,62,68,73,83,84,93,94,98,103,105,108,114,122,125,129,130,135,136,141,142,151,152,162,163,164,173,174,191,192,193,194,205,206,210,220,228,233,234,235,245,246,247,248,255,256,261,262,272,273,274,275,290,296,297,301,302,306,307,308,317,320,324,328,330,337,342,343,344,346,356,359,360,361,376,393,398,399,400,401,402,413,415,420,424,425,429,430,438,439,440,444,445,453,454 ./Pods/libwebp/src/dec/io_dec.c:13,21,24,38,42,44,45,56,57,60,76,85,97,113,114,116,117,119,121,127,128,129,145,149,151,152,157,170,174,175,177,178,200,201,203,204,228,231,236,237,239,240,243,253,255,256,269,274,275,287,293,295,296,312,316,318,322,324,330,341,348,350,351,354,374,376,377,398,400,402,403,415,423,427,429,430,445,456,459,462,464,465,477,478,480,481,494,500,503,507,510,516,528,539,541,543,544,546,549,555,562,565,571,585,592,595,604,605,606,607,609,610,612,619,622,626,629,630,632,637,638,641,647,648 ./Pods/libwebp/src/dec/frame_dec.c:13,17,20,27,34,35,37,38,41,42,57,58,59,67,68,69,70,80,84,88,89,99,100,104,110,114,115,116,122,127,128,132,138,139,142,148,155,156,157,158,166,167,173,174,176,184,188,189,190,191,192,195,202,213,218,221,224,227,236,240,244,248,249,250,251,259,260,261,264,277,280,288,289,298,301,302,309,311,312,313,314,315,318,321,327,343,345,349,350,357,358,359,360,367,369,370,384,385,386,387,398,400,419,422,423,426,427,430,431,444,445,448,451,459,460,470,471,478,483,484,491,492,493,495,496,498,500,530,535,540,541,542,544,545,548,555,556,560,561,571,586,592,595,596,599,600,605,606,609,611,612,636,639,648,656,658,659,665,674,675,678,681,707,716,719,720,724,727,730,740,741,746,751,753,756,766,768,773,777,780,782,783,793,794,801,802 ./Pods/libwebp/src/dec/tree_dec.c:13,16,25,39,42,77,110,143,176,177,179,283,287,288,294,304,306,330,348,352,353,358,359,364,366,367,370,404,437,470,503,504,506,508,513,526,527,528,531,532,536,537 ./Pods/libwebp/src/dec/vp8i_dec.h:13,16,24,28,31,36,63,66,69,76,85,94,97,101,109,119,122,129,134,139,143,163,173,178,181,186,189,195,203,206,210,215,219,222,227,231,233,237,243,247,251,255,266,269,273,279,282,307,312,314,316,318 ./Pods/libwebp/src/dec/vp8_dec.h:13,16,18,22,40,46,53,61,63,70,76,80,85,89,95,99,103,109,112,121,124,127,133,134,138,142,145,148,152,155,158,161,170,173,180,182,184 ./Pods/libwebp/src/dec/alpha_dec.c:13,22,25,30,31,38,39,40,43,56,58,64,67,68,79,80,87,94,101,102,104,105,127,134,135,141,142,143,146,148,149,159,163,164,172,173,176,182,184,187,188,197,203,204,205,209,221,222,223,224,225,228,232 ./Pods/libwebp/src/dec/common_dec.h:13,16,29,35,41,53 ./Pods/libwebp/src/dec/buffer_dec.c:13,15,19,22,28,34,35,40,73,82,84,86,91,94,95,104,107,116,117,119,124,126,140,148,149,151,152,156,173,174,176,177,184,194,197,198,206,212,213,216,220,224,226,227,230,234,238,239,244,246,247,248,256,257,258,259,267,268,269,270,275,280,299,300,302,303,310,311 ./Pods/libwebp/src/dec/quant_dec.c:13,15,18,19,39,58,61,75,78,85,92,93,94,98,105,108,110,111,112,113,115 ./Pods/libwebp/src/dec/vp8li_dec.h:14,17,23,27,33,42,47,56,62,64,68,73,81,83,88,92,95,97,99,104,111,114,117,121,125,128,130,132,134 ./Pods/libwebp/src/dec/idec_dec.c:13,17,22,27,30,45,52,60,64,71,77,80,87,90,93,94,102,109,110,111,119,128,133,134,135,139,152,153,154,158,159,160,161,179,180,195,196,201,204,205,214,216,219,222,223,230,231,237,238,239,245,248,249,254,259,265,267,268,271,277,278,284,285,287,292,295,296,305,306,314,323,324,331,340,343,345,346,352,356,359,360,363,368,369,382,388,394,397,398,404,408,409,416,418,419,425,430,434,435,439,440,447,449,450,455,459,467,469,480,485,486,489,494,495,497,501,502,507,510,511,516,518,519,527,532,533,538,540,546,547,550,551,556,559,562,566,567,571,577,578,581,584,589,591,594,597,599,600,603,609,610,613,615,619,626,630,632,634,635,638,641,642,650,655,656,657,663,667,669,670,678,682,683,687,688,691,696,704,705,714,715,723,735,737,738,741,757,758,766,767,769,774,777,779,780,786,790,794,798,800,801,807,811,815,819,821,822,824,828,831,834,836,837,850,852,853,860,861,866,868,869,878,879,889,891,892,900,901,906,908 ./Pods/libwebp/src/dec/webp_dec.c:13,15,21,46,60,70,73,76,81,82,84,85,102,104,107,108,115,116,120,126,127,135,137,138,160,165,169,172,175,176,180,184,188,189,197,198,201,202,206,207,211,212,213,236,239,240,246,249,259,260,262,263,265,293,296,299,303,308,310,312,318,324,328,334,335,336,340,341,349,350,351,357,360,361,364,365,370,375,380,384,385,390,391,397,405,411,412,413,429,430,432,433,436,440,441,442,445,452,459,460,466,471,474,489,490,491,497,507,508,509,511,512,520,521,523,524,535,546,548,549,553,554,558,559,563,564,568,569,573,574,598,600,601,603,609,614,618,621,625,628,631,632,636,637,641,642,646,647,651,652,656,657,664,672,674,675,679,680,685,687,693,694,697,701,704,705,708,711,712,714,715,718,723,726,731,732,738,741,743,744,749,752,753,758,760,761,776,780,781,783,784,787,793,804,807,808,815,823,826,827,830,835,841,843,844 ./Pods/libwebp/src/dec/vp8l_dec.c:14,16,26,28,33,48,54,58,63,79,103,108,110,115,116,126,127,140,145,146,147,149,155,159,160,165,166,176,177,178,194,197,198,216,217,218,225,226,244,245,246,247,257,262,263,269,272,273,297,298,299,301,305,306,315,317,328,337,338,341,344,345,350,354,356,357,374,384,392,393,407,416,419,420,421,423,429,432,433,434,440,444,445,455,459,460,474,478,481,490,491,493,494,505,506,510,511,513,519,527,529,530,533,552,555,561,565,567,570,572,585,587,588,610,612,613,615,627,629,630,633,637,640,642,648,657,658,659,671,673,674,690,692,693,702,704,705,708,720,725,727,729,734,735,737,742,743,750,751,754,756,765,771,775,776,777,783,814,816,817,818,822,823,836,838,839,851,853,854,855,878,880,881,884,892,893,903,907,912,913,914,951,954,961,962,963,973,977,980,981,982,993,1000,1001,1002,1004,1022,1028,1041,1042,1056,1064,1065,1068,1072,1074,1077,1086,1088,1089,1096,1097,1098,1106,1107,1108,1131,1137,1143,1148,1156,1169,1179,1180,1184,1185,1186,1195,1201,1210,1211,1212,1220,1221,1227,1232,1233,1234,1242,1249,1251,1255,1256,1259,1263,1264,1282,1285,1288,1290,1291,1299,1303,1305,1312,1334,1340,1341,1343,1344,1347,1351,1352,1355,1362,1363,1366,1372,1374,1376,1377,1382,1387,1390,1393,1395,1396,1401,1402,1403,1409,1412,1413,1425,1430,1431,1432,1440,1441,1442,1449,1450,1458,1461,1463,1467,1468,1469,1476,1477,1478,1483,1496,1499,1501,1502,1514,1521,1524,1525,1533,1535,1536,1538,1544,1563,1566,1567,1572,1574,1576,1583,1586,1589,1590,1603,1604,1606,1610,1614,1615,1620,1623,1624,1626,1633,1634,1636,1639,1644,1645,1652,1656,1659,1664,1665,1669,1672,1676,1681,1686,1690,1691,1693,1700,1705,1706,1710,1718,1719,1720,1722,1723,1728,1729,1732,1737,1738 ./Pods/libwebp/src/dec/alphai_dec.h:13,16,19,23,25,41,44,47,49,51,53 ./Pods/libwebp/src/dec/vp8_dec.c:13,15,22,24,27,28,31,36,38,41,45,46,50,53,55,56,65,67,68,72,73,78,79,84,85,86,94,96,97,99,103,104,109,118,121,122,125,128,131,134,135,138,141,142,144,145,146,149,157,158,173,177,178,184,185,188,190,191,210,216,226,230,231,245,246,250,251,252,253,256,257,266,269,274,280,281,283,293,297,300,301,308,312,319,322,337,340,343,344,350,351,356,360,364,369,373,374,377,382,383,385,387,391,392,395,405,414,422,431,433,434,436,437,446,450,451,460,462,463,465,466,476,480,481,490,492,493,495,496,503,504,505,506,511,512,527,540,546,547,560,564,567,581,584,589,592,595,600,602,603,606,612,619,623,624,629,630,632,633,640,641,650,655,656,658,662,663,666,667,669,670,676,680,681,685,686,688,694,697,700,701,705,706,709,710,714,722,723 ./Pods/libwebp/src/dec/webpi_dec.h:13,16,20,23,26,33,38,41,44,49,52,55,68,76,79,83,88,92,105,108,113,116,121,126,128,130,132 ./Pods/libwebp/src/dsp/upsampling.c:13,16,18,21,23,26,33,36,93,94,120,127,129,132,134,136,160,161,165,167,175,176,179,187,188,206,213,215,217,221,234,239,244,249,251,252,253,256,262,278,284,289,294,299,301,302,307,309,323,325,326 ./Pods/libwebp/src/dsp/lossless_sse2.c:13,15,17,23,26,39,40,58,59,75,79,81,82,91,92,103,104,111,112,117,118,129,130,140,141,145,149,153,158,163,167,171,175,179,180,182,192,195,197,198,219,222,223,224,240,241,249,255,272,278,287,294,313,316,317,320,333,341,351,362,370,373,374,377,386,392,417,420,421,424,428,431,442,446,447,448,451,479,483,484,485,488,493,518,522,523,524,546,550,551,552,582,586,587,588,623,627,628,629,656,660,661,662,665,667,678,693,696,702,703,705,707 ./Pods/libwebp/src/dsp/lossless.h:14,17,20,23,27,30,40,44,56,58,66,75,79,88,91,98,103,113,116,119,130,136,148,151,154,160,164,169,177,179,187,193,196,205,208,213,219,222,224,226,228 ./Pods/libwebp/src/dsp/lossless_enc_mips_dsp_r2.c:14,16,18,20,74,75,79,80,147,160,161,162,172,173,213,216,217,218,219,226,227,258,261,262,263,264,267,269,275,276,278,280 ./Pods/libwebp/src/dsp/enc_msa.c:13,15,17,21,24,33,43,51,70,71,77,78,79,93,132,133,143,169,170,182,201,202,208,209,217,218,220,221,224,233,247,248,249,251,252,255,257,261,273,274,285,286,294,295,314,315,334,335,355,356,376,377,391,392,412,413,428,429,433,445,446,448,453,461,462,463,476,480,481,482,508,511,518,519,520,521,546,549,550,557,558,560,571,576,584,585,586,602,606,607,608,635,638,645,646,647,648,669,671,672,688,689,692,703,714,720,740,741,747,759,760,767,779,780,787,798,799,802,813,854,855,862,863,866,868,873,877,881,886,890,891,893,895 ./Pods/libwebp/src/dsp/msa_macro.h:13,16,19,23,47,51,55,59,63,67,71,81,82,84,93,94,96,109,128,141,160,178,187,194,212,226,233,240,248,261,276,283,290,302,309,316,330,337,344,356,382,402,408,418,422,432,437,446,460,476,492,508,524,535,540,545,557,562,573,580,594,596,611,613,629,631,645,651,667,680,690,704,721,738,754,770,786,804,822,838,855,872,883,898,907,922,930,947,957,966,983,993,1010,1027,1044,1058,1065,1079,1092,1100,1118,1125,1138,1150,1162,1173,1179,1190,1196,1204,1217,1228,1234,1247,1263,1275,1297,1327,1344,1366,1377,1391 ./Pods/libwebp/src/dsp/neon.h:11,14,16,18,25,30,36,43,50,53,59,68,69,80,81,82,100 ./Pods/libwebp/src/dsp/filters_mips_dsp_r2.c:14,16,18,23,26,35,103,107,108,167,180,183,194,207,216,217,220,222,228,229,232,242,255,267,268,271,273,278,279,282,295,296,312,323,332,333,336,338,343,344,346,351,352,359,360,361,374,375,376,377,382,385,387,392,396,397,399,401 ./Pods/libwebp/src/dsp/rescaler.c:13,15,18,21,25,28,55,56,58,59,60,82,83,88,90,92,93,94,97,113,123,124,125,126,143,149,150,151,152,156,159,166,167,168,183,184,188,189,190,192,195,198,204,211,214,219,224,229,234,236,237,242,244,250 ./Pods/libwebp/src/dsp/dec_mips_dsp_r2.c:14,16,18,20,23,25,28,43,48,49,58,78,84,85,89,113,146,151,152,157,158,159,166,296,297,306,425,426,431,432,436,437,443,444,449,450,458,459,460,467,468,469,474,475,480,481,483,486,543,544,555,605,606,612,613,614,620,621,622,628,657,658,679,680,723,724,730,773,774,777,813,814,836,837,867,868,872,896,897,928,938,942,943,947,952,955,957,962,975,981,986,988,989,991,993 ./Pods/libwebp/src/dsp/rescaler_neon.c:13,15,17,22,26,31,36,47,61,62,86,91,106,113,114,115,116,147,153,164,169,170,171,172,178,180,182,186,187,189,191 ./Pods/libwebp/src/dsp/cost_sse2.c:13,15,18,22,24,43,44,57,60,61,62,75,78,81,88,90,100,101,103,104,107,109,113,114,116,118 ./Pods/libwebp/src/dsp/upsampling_sse41.c:13,15,17,22,24,26,41,51,61,69,73,76,83,86,90,91,96,97,107,108,117,128,167,168,172,180,182,185,187,189,195,196,198,200,203,217,218,223,229,230,232,234,236 ./Pods/libwebp/src/dsp/enc_sse41.c:13,15,19,22,25,35,37,39,54,55,59,60,62,63,69,77,79,92,106,107,110,124,127,128,130,134,144,150,155,163,167,169,170,175,176,184,185,187,188,192,199,207,215,219,226,227,229,254,258,262,263,267,271,274,281,295,296,299,300,302,306,307,311,312,320,321,324,333,334,336,338 ./Pods/libwebp/src/dsp/lossless_enc_sse41.c:13,15,20,23,26,37,41,42,43,46,83,84,85,91,92,93,94,101,121,122,123,129,130,131,132,135,137,142,143,145,147 ./Pods/libwebp/src/dsp/upsampling_neon.c:14,16,18,24,26,29,44,47,52,59,64,65,74,75,78,81,83,89,95,101,107,113,119,126,134,164,174,175,182,183,190,191,206,209,214,227,238,243,244,255,258,260,262,277,278,280,282 ./Pods/libwebp/src/dsp/filters_sse2.c:13,15,17,22,25,34,49,51,52,67,69,70,73,84,92,93,102,103,104,107,117,126,127,134,135,136,139,143,144,164,168,169,170,180,188,189,197,198,199,201,203,208,209,213,214,218,219,222,241,243,244,262,264,265,266,295,298,302,303,304,305,313,314,315,318,320,325,329,330,332,334 ./Pods/libwebp/src/dsp/lossless_mips_dsp_r2.c:14,16,18,21,87,88,91,93,117,118,147,148,171,172,180,181,184,185,189,190,193,194,197,198,201,202,206,207,211,212,216,217,221,222,226,227,231,232,290,291,358,361,362,413,414,463,464,537,538,615,616,661,662,665,667,671,681,684,690,691,693,695 ./Pods/libwebp/src/dsp/enc_mips_dsp_r2.c:14,16,18,22,25,38,49,68,74,111,143,153,169,170,173,178,202,235,240,241,247,248,249,254,315,316,325,326,328,329,332,340,368,378,379,382,384,396,397,400,402,418,443,452,473,474,477,482,487,542,544,545,550,587,589,590,610,611,665,666,696,697,732,733,781,782,831,832,878,879,927,928,975,976,1011,1012,1015,1031,1032,1035,1042,1043,1057,1058,1061,1063,1075,1081,1110,1111,1132,1133,1150,1151,1165,1166,1169,1171,1178,1182,1274,1282,1290,1300,1312,1314,1315,1322,1323,1325,1344,1362,1366,1381,1382,1385,1454,1464,1466,1477,1479,1480,1482,1485,1487,1492,1495,1499,1506,1509,1511,1512,1514,1516 ./Pods/libwebp/src/dsp/cpu.c:13,15,20,24,28,38,50,57,65,76,90,92,96,98,114,115,117,118,123,136,137,141,144,148,150,151,154,160,161,166,167,169,178,180,188,198,199,200,203,207,216,217,218 ./Pods/libwebp/src/dsp/yuv_neon.c:13,15,17,20,22,24,47,48,55,58,59,60,67,70,71,72,79,84,85,86,88,97,109,116,126,131,132,133,144,155,156,157,160,161,162,163,165,167,174,175,177,181,182,190,202,209,211,212,223,227,228,229,260,269,270,272,274,276,281,282,284,287 ./Pods/libwebp/src/dsp/alpha_processing.c:13,16,21,22,24,28,33,34,36,38,82,127,130,131,133,136,137,139,155,156,157,158,159,171,172,173,174,175,179,183,186,193,194,195,204,205,206,209,211,222,237,238,240,241,245,247,249,252,253,256,257,260,261,277,279,280,282,290,291,298,304,307,308,310,311,319,322,323,324,330,336,339,341,342,346,348,350,354,355,360,361,364,367,368,375,376,378,385,386,387,400,403,406,411,416,428,431,440,442,447,449,450,455,457,472 ./Pods/libwebp/src/dsp/yuv.h:32,34,37,40,43,47,51,55,58,61,62,65,66,69,70,73,74,77,78,84,85,91,92,107,108,123,124,127,132,133,138,139,144,145,148,150,166,168,171,173,179,181,184,189,190,194,195,199,200,204,205,207,209 ./Pods/libwebp/src/dsp/quant.h:9,12,14,17,21,23,28,29,34,39,42,45,47,49,50,52,54,63,65,67,68,71,79,81,83,84 ./Pods/libwebp/src/dsp/cost_neon.c:11,13,15,18,21,31,43,47,49,50,63,66,67,68,78,81,84,91,93,103,104,106,107,110,112,116,117,119,121 ./Pods/libwebp/src/dsp/enc_mips32.c:15,17,19,23,26,54,114,123,130,135,146,147,153,154,155,158,190,196,204,222,234,238,240,241,248,249,251,290,364,369,386,393,395,396,399,407,408,410,411,449,481,491,502,513,514,517,519,537,543,547,550,567,576,577,581,584,593,602,603,607,610,615,624,625,629,632,634,643,644,647,649,652,654,658,661,664,671,672,674,676 ./Pods/libwebp/src/dsp/filters_neon.c:13,15,17,20,23,32,36,40,45,55,57,58,62,63,66,77,85,86,95,96,97,102,103,106,116,125,126,133,134,135,140,141,144,148,149,162,165,166,167,178,186,187,195,196,197,202,203,205,208,230,232,233,246,248,249,250,257,266,288,291,292,293,295,303,304,305,307,310,312,319,323,324,326,328 ./Pods/libwebp/src/dsp/upsampling_sse2.c:13,15,17,22,24,39,49,59,67,71,74,81,84,88,89,94,95,105,106,115,126,165,166,170,178,186,189,191,193,208,209,211,213,216,230,231,242,257,258,260,262,264 ./Pods/libwebp/src/dsp/yuv_sse2.c:13,15,17,21,24,44,46,50,56,61,66,67,72,73,80,81,91,92,102,103,118,119,140,141,162,163,184,191,192,201,202,203,212,213,214,223,224,225,234,235,236,244,245,246,251,256,264,267,268,273,278,286,289,290,293,306,313,314,315,328,335,336,337,350,357,358,359,367,372,380,383,387,394,395,396,404,409,417,420,424,431,432,433,436,438,445,446,449,454,465,466,479,485,486,502,503,521,530,536,537,548,557,558,561,568,570,574,580,586,589,590,593,594,595,602,604,608,614,620,623,624,627,628,629,639,644,645,646,656,657,670,676,684,687,690,691,692,713,714,730,733,734,735,737,739,743,746,748,749,751,755,756,766,779,787,789,790,801,805,806,807,841,853,854,855,857,859,861,866,867,869,873 ./Pods/libwebp/src/dsp/filters_msa.c:13,15,17,19,21,37,49,52,53,54,55,58,65,68,76,92,93,94,97,124,128,129,130,131,139,154,155,156,159,167,174,182,183,184,186,189,191,196,197,199,201 ./Pods/libwebp/src/dsp/mips_macro.h:11,14,18,21,30,38,47,74,81,90,115,134,151,187,193,199 ./Pods/libwebp/src/dsp/rescaler_msa.c:13,15,17,19,22,26,46,59,77,86,101,116,123,133,165,170,171,172,173,184,199,237,244,245,246,247,261,262,263,273,290,341,347,348,349,350,357,368,403,408,409,410,411,425,426,428,431,433,437,438,440,442 ./Pods/libwebp/src/dsp/lossless_neon.c:13,15,17,19,22,25,40,42,43,52,54,55,64,66,67,69,71,73,82,84,85,91,109,111,112,118,136,138,139,141,144,153,158,159,175,176,181,182,189,190,193,196,199,202,203,205,215,217,218,238,240,241,256,264,273,286,288,290,297,310,312,313,326,328,330,345,351,360,375,377,379,391,408,410,412,424,444,446,448,465,478,480,482,491,494,501,507,512,516,521,523,536,539,540,543,596,599,600,602,605,607,613,628,632,635,636,638,640 ./Pods/libwebp/src/dsp/lossless_enc_msa.c:13,15,17,20,36,50,61,69,77,92,93,94,95,96,104,113,122,130,131,132,133,136,138,142,143,145,147 ./Pods/libwebp/src/dsp/filters.c:13,18,21,30,39,40,41,44,56,65,66,76,77,78,81,93,105,106,114,115,117,120,124,125,138,147,148,159,164,165,167,169,171,177,178,182,183,187,189,191,199,200,201,210,211,213,226,227,228,229,232,235,240,248,255,260,265,270,272,273,278,280,287 ./Pods/libwebp/src/dsp/alpha_processing_mips_dsp_r2.c:14,16,18,24,30,49,50,63,66,67,78,80,81,123,124,125,126,127,168,170,208,209,212,214,222,223,225,227 ./Pods/libwebp/src/dsp/rescaler_mips_dsp_r2.c:13,15,17,20,24,27,108,114,156,161,162,163,165,216,221,285,292,293,294,295,299,302,304,308,309,311,313 ./Pods/libwebp/src/dsp/ssim_sse2.c:13,15,17,20,22,24,40,41,44,69,74,75,79,81,83,85,92,93,99,100,102,124,146,147,149,151,159,160,162,164 ./Pods/libwebp/src/dsp/rescaler_mips32.c:13,15,17,20,23,35,43,81,82,83,95,103,143,144,145,148,209,210,211,222,275,276,278,281,283,289,290,292,294 ./Pods/libwebp/src/dsp/dec_sse41.c:13,15,17,21,30,31,32,35,37,40,41,43,45 ./Pods/libwebp/src/dsp/yuv_sse41.c:13,15,17,21,24,44,46,50,56,61,66,67,72,73,80,81,91,92,102,103,124,131,132,137,142,150,153,154,159,164,172,175,176,179,187,192,200,203,207,214,215,216,224,229,237,240,244,251,252,253,256,258,262,263,266,271,279,286,298,300,308,310,318,320,328,329,330,332,348,349,367,376,382,383,394,403,404,407,414,416,420,426,432,435,436,439,440,441,448,450,454,460,466,469,470,473,474,475,485,490,491,492,502,503,516,522,530,533,536,537,538,569,570,586,589,590,591,593,595,599,602,604,605,607,609,612 ./Pods/libwebp/src/dsp/rescaler_sse2.c:13,15,18,22,25,29,37,38,44,45,53,58,59,76,77,104,106,107,108,110,111,123,127,130,142,143,162,163,165,166,169,191,192,193,226,227,235,244,249,260,274,275,282,283,284,285,304,320,321,327,338,343,344,345,346,350,352,354,360,361,363,365 ./Pods/libwebp/src/dsp/lossless_enc.c:15,17,26,158,225,292,328,352,353,354,373,377,378,379,382,399,400,403,404,411,412,416,418,427,428,429,431,432,437,446,447,448,452,455,456,463,466,471,472,474,476,477,486,489,494,495,497,499,500,502,511,512,513,516,517,520,521,537,538,539,546,547,557,558,566,568,569,570,580,582,583,584,586,590,593,595,596,609,612,615,616,617,619,625,626,634,636,637,639,644,645,649,650,664,674,680,689,697,698,701,704,707,708,711,712,716,717,721,725,726,729,730,742,743,746,747,756,757,765,770,771,773,781,782,785,789,793,797,801,805,809,814,819,823,827,831,835,836,838,844,845,851,852,865,867,869,871,874,877,881,884,887,890,893,900,903,906,909,912,915,919,922,925,928,945,962,971,973,978,983,988,990,991,996,998,1046,1047 ./Pods/libwebp/src/dsp/yuv_mips_dsp_r2.c:14,16,18,20,23,37,60,70,106,107,112,117,120,122,128,129,131,133 ./Pods/libwebp/src/dsp/alpha_processing_neon.c:13,15,17,19,21,24,41,54,60,61,72,73,75,76,80,82,100,105,108,113,114,127,131,132,133,150,154,157,162,163,171,173,174,176,178,185,186,188,190 ./Pods/libwebp/src/dsp/dec.c:13,15,19,21,24,25,28,31,39,42,59,80,81,82,94,98,103,104,106,110,111,119,120,121,123,129,130,132,135,149,161,162,164,166,169,171,182,184,185,189,192,197,198,199,205,206,207,212,213,214,220,222,223,229,231,232,238,240,241,244,246,248,251,254,267,268,270,281,282,290,291,309,310,327,329,343,350,351,365,372,373,387,388,398,403,410,411,415,417,420,426,427,428,434,435,436,442,443,444,450,452,453,459,461,462,468,470,471,474,476,478,481,491,492,504,505,521,522,526,528,533,535,546,548,551,559,560,561,562,569,570,571,572,578,579,580,586,587,589,592,605,606,608,609,610,622,623,625,626,628,634,635,639,640,648,649,651,659,660,662,669,671,677,679,685,687,693,695,697,707,710,711,712,714,720,733,736,743,746,755,767,773,781,787,796,805,807,816,818,823,828,833,835,836,841,843,887 ./Pods/libwebp/src/dsp/lossless.c:15,17,25,28,31,32,35,36,40,41,45,49,50,53,54,66,67,70,71,80,81,89,94,95,97,105,106,109,114,118,122,126,130,134,138,142,147,152,156,160,164,168,169,175,183,184,197,199,211,212,213,220,234,240,241,242,243,244,257,258,259,263,264,270,271,288,289,290,304,315,321,324,325,326,368,369,374,376,394,414,416,417,418,421,428,429,438,439,440,450,451,452,467,468,469,484,485,486,495,496,497,506,509,510,511,554,555,556,558,562,566,568,574,577,582,601,607,610,612,617,620,623,629,634,639,641,642,647,649,659,661 ./Pods/libwebp/src/dsp/ssim.c:13,16,18,20,23,29,51,53,54,57,58,61,62,88,89,91,92,107,108,110,111,113,115,125,127,129,131,139,141,147,151,156,158,159 ./Pods/libwebp/src/dsp/upsampling_msa.c:13,16,18,21,23,29,36,44,51,62,71,84,94,105,114,134,154,173,187,200,208,215,220,230,242,245,246,255,256,265,266,285,286,304,305,309,311,315,316,320,321,334,347,348,349,361,374,375,377,390,403,404,405,418,431,432,433,447,460,461,462,477,496,497,498,513,532,533,535,565,582,647,648,658,661,663,665,680,681,683,685 ./Pods/libwebp/src/dsp/lossless_enc_sse2.c:13,15,22,25,28,39,43,44,45,48,51,73,77,78,79,117,118,119,125,126,127,128,135,157,158,159,165,166,167,170,172,198,201,202,203,225,228,229,231,234,241,251,261,265,271,273,276,284,289,290,291,295,299,302,305,307,311,326,327,333,348,349,350,351,354,356,357,381,383,396,398,413,415,425,427,428,431,432,433,436,445,446,456,459,461,462,476,477,483,498,501,502,503,520,521,527,544,547,548,549,562,563,575,582,583,586,587,588,612,615,616,617,642,645,646,647,650,652,663,680,681,683,685 ./Pods/libwebp/src/dsp/yuv.c:13,15,18,21,39,48,50,63,65,66,67,70,72,77,90,96,101,106,111,113,114,115,118,125,126,127,150,151,165,166,167,168,170,175,176,177,182,183,184,192,193,194,196,201,202,212,214,215,222,223,224,233,234,236,238,240,245,249,256,262,266,269,271,277,283,288,290,291,297,299,308 ./Pods/libwebp/src/dsp/enc_neon.c:13,15,17,19,22,25,29,32,38,42,43,52,58,59,66,72,73,77,83,84,85,94,95,120,121,129,130,132,137,141,147,152,157,160,163,168,177,180,182,187,192,195,200,209,214,216,222,225,229,232,235,240,245,246,248,254,255,256,265,266,268,270,289,290,294,295,299,309,310,327,328,350,351,352,354,365,373,380,386,390,394,397,400,403,410,415,420,425,430,437,439,445,448,451,453,456,459,467,477,478,480,485,508,509,522,523,541,546,547,549,555,580,581,600,601,612,617,618,629,630,646,653,654,657,668,683,684,694,699,700,702,710,711,713,714,716,726,741,742,743,745,746,748,763,764,770,771,777,779,780,786,788,789,799,801,802,815,816,818,821,829,847,848,855,896,897,904,905,907,910,912,916,918,922,927,932,933,935,937 ./Pods/libwebp/src/dsp/dec_sse2.c:14,16,18,24,29,32,53,58,80,81,82,84,101,107,110,111,113,132,142,146,147,149,165,194,195,196,197,240,243,246,251,260,261,265,266,270,271,281,284,287,288,302,303,312,317,318,333,334,346,350,353,354,357,367,369,375,376,389,392,395,403,411,416,421,422,432,435,439,440,444,445,446,449,452,455,458,461,464,467,471,472,473,485,490,495,500,501,516,524,525,536,537,538,545,546,547,556,562,568,574,580,584,588,589,592,599,601,605,606,609,611,615,616,622,623,624,630,631,632,635,641,647,653,654,660,666,667,672,673,686,687,694,698,702,705,713,714,719,723,726,729,732,733,739,741,746,750,755,761,765,766,767,772,774,778,780,784,787,789,793,794,795,801,805,809,812,820,821,826,831,834,837,840,841,846,850,853,857,860,866,867,874,879,882,886,887,890,893,901,915,916,917,932,933,953,957,958,978,982,983,1005,1006,1009,1012,1025,1034,1046,1047,1048,1049,1053,1059,1060,1061,1068,1069,1070,1076,1077,1078,1089,1090,1093,1094,1095,1101,1103,1104,1113,1114,1117,1118,1121,1127,1128,1129,1136,1137,1138,1147,1148,1151,1152,1153,1160,1161,1167,1169,1170,1173,1174,1177,1179,1185,1194,1199,1206,1214,1221,1222,1224,1226 ./Pods/libwebp/src/dsp/dsp.h:13,16,20,22,26,28,31,40,49,53,56,61,66,74,78,86,92,97,108,112,114,118,124,130,139,142,161,167,175,186,195,200,207,223,226,232,235,255,263,268,279,282,287,289,304,307,310,315,320,325,328,331,338,343,349,355,359,365,368,371,381,388,396,403,414,420,429,432,435,437,445,447,450,452,462,465,470,475,477,485,488,496,500,504,510,519,522,525,527,533,536,543,551,557,560,563,568,572,578,584,591,595,598,601,605,609,614,619,626,630,635,638,641,651,658,665,670,673,675,677 ./Pods/libwebp/src/dsp/enc_sse2.c:13,15,20,24,27,50,56,78,79,80,82,99,105,108,109,111,130,140,144,145,147,163,192,193,194,195,202,209,224,240,241,253,259,276,288,293,294,312,320,326,331,334,337,338,342,366,378,382,386,387,402,403,412,413,421,427,430,431,432,436,447,449,451,468,469,473,474,476,477,480,487,488,489,495,496,497,503,508,509,510,516,517,518,524,525,526,534,537,538,539,546,547,548,555,556,557,565,568,569,570,583,595,596,597,598,606,616,617,618,619,627,628,635,636,640,641,644,645,653,658,659,660,668,669,674,675,679,680,683,684,692,697,698,699,702,706,714,729,730,731,743,744,750,751,767,768,789,793,794,815,819,820,836,837,851,852,862,867,874,875,886,887,888,892,895,909,910,913,929,930,933,940,941,944,960,961,967,979,982,983,986,987,990,991,994,1016,1019,1021,1024,1051,1055,1056,1058,1086,1087,1093,1102,1104,1113,1127,1128,1131,1145,1148,1149,1151,1155,1165,1171,1172,1181,1182,1190,1194,1196,1197,1202,1203,1211,1212,1214,1215,1219,1228,1236,1240,1246,1253,1254,1256,1281,1285,1289,1290,1296,1300,1303,1309,1320,1321,1326,1327,1330,1331,1335,1336,1340,1341,1349,1350,1353,1355,1375,1376,1378,1380 ./Pods/libwebp/src/dsp/lossless_enc_neon.c:13,15,17,19,22,25,32,38,43,47,52,54,67,70,71,74,123,126,127,129,132,134,138,139,141,143 ./Pods/libwebp/src/dsp/lossless_common.h:15,18,20,22,26,29,33,34,37,38,41,42,45,46,49,54,55,65,66,69,81,84,87,91,92,95,105,106,115,116,122,134,135,136,147,148,149,156,157,166,167,170,173,185,186,198,199,201,203 ./Pods/libwebp/src/dsp/cost_mips32.c:11,13,15,17,36,39,40,83,85,94,95,97,98,104,138,139,142,144,148,149,151,153 ./Pods/libwebp/src/dsp/alpha_processing_sse41.c:13,15,17,19,21,31,64,69,72,77,78,81,83,86,87,89,91 ./Pods/libwebp/src/dsp/dec_neon.c:14,16,18,21,24,26,44,45,59,60,62,67,94,107,108,110,112,120,121,131,132,140,141,157,158,160,163,218,220,222,233,234,244,245,257,258,271,273,278,279,285,286,296,297,307,308,310,316,342,344,374,375,377,381,382,391,397,398,404,410,411,415,421,422,423,426,438,439,443,444,448,449,458,459,465,466,468,481,482,484,498,499,511,512,516,519,521,522,526,529,531,532,534,545,555,558,562,566,575,582,588,593,603,607,612,614,616,623,624,630,636,638,640,644,649,650,653,655,661,662,663,669,670,671,674,684,685,707,708,710,728,729,742,744,749,750,752,759,760,761,763,792,799,800,816,818,822,823,825,832,833,834,836,841,851,852,853,858,868,869,870,881,891,892,893,894,905,913,914,915,917,923,933,934,941,948,949,950,956,964,965,966,973,980,981,983,986,996,1002,1005,1015,1016,1041,1042,1049,1050,1052,1061,1068,1074,1080,1088,1093,1099,1109,1112,1114,1120,1126,1130,1136,1146,1151,1153,1159,1162,1166,1169,1172,1177,1182,1183,1185,1190,1191,1192,1196,1197,1199,1206,1209,1210,1226,1227,1228,1235,1240,1246,1251,1252,1253,1255,1257,1276,1278,1281,1299,1300,1301,1333,1335,1336,1337,1339,1353,1354,1355,1383,1384,1402,1403,1406,1412,1413,1414,1421,1422,1423,1428,1441,1442,1459,1460,1470,1471,1472,1477,1478,1479,1480,1485,1487,1490,1496,1497,1498,1505,1506,1507,1512,1520,1521,1542,1543,1544,1554,1555,1556,1561,1562,1563,1564,1569,1601,1602,1603,1606,1608,1614,1631,1637,1645,1653,1654,1656,1658 ./Pods/libwebp/src/dsp/cost.c:11,14,17,46,49,310,313,318,321,332,335,341,343,352,353,355,356,366,367,369,370,373,376,381,385,391,396,401,406,408,409,410 ./Pods/libwebp/src/dsp/dec_mips32.c:14,16,18,20,23,27,28,37,38,50,51,67,68,72,73,77,78,86,90,91,102,103,105,106,107,118,119,121,122,123,128,129,133,134,140,141,146,147,152,153,158,159,167,168,169,176,177,178,181,188,189,190,191,198,199,200,201,207,208,209,215,216,217,224,538,549,550,555,556,557,560,562,565,567,576,581,582,584,586 ./Pods/libwebp/src/dsp/cost_mips_dsp_r2.c:11,13,15,17,36,39,40,78,80,89,90,92,93,96,98,101,102,104,106 ./Pods/libwebp/src/dsp/alpha_processing_sse2.c:13,15,18,20,32,37,61,66,69,73,74,94,98,99,100,111,116,132,137,140,144,145,148,151,176,189,193,194,205,206,208,209,212,215,224,227,228,252,263,266,267,270,293,294,297,298,316,317,320,321,324,326,334,337,338,340,342 ./Pods/libwebp/src/dsp/dec_clip_tables.c:13,15,20,22,68,241,263,330,332,338,342,344,349,356,359,362,365,367,369 ./Pods/libwebp/src/dsp/lossless_msa.c:13,15,17,20,23,32,43,53,62,71,80,97,111,119,128,137,149,150,151,152,163,169,186,196,197,198,199,210,216,233,243,244,245,246,255,265,275,285,286,287,288,300,309,318,333,334,335,336,337,340,342,347,350,351,353,355 ./Pods/libwebp/src/dsp/enc.c:13,16,19,22,23,27,29,33,40,44,55,56,59,60,70,72,78,79,81,83,86,88,92,98,100,101,102,103,106,108,111,115,132,133,146,147,148,154,155,156,173,183,184,186,191,192,207,221,222,224,227,230,235,236,237,245,246,247,254,257,258,259,271,273,276,286,287,288,289,301,309,311,312,315,331,332,335,342,343,346,350,361,362,363,374,375,381,382,400,401,418,419,433,440,441,455,462,463,477,478,488,493,500,501,509,511,512,513,517,531,532,535,545,548,550,551,554,557,560,563,565,573,574,577,578,579,585,604,615,620,622,623,629,630,638,639,641,643,647,651,674,675,677,678,686,688,691,698,699,700,703,704,707,708,711,734,741,745,759,764,773,782,784,789,794,799,801,802,807,809,830 ./Pods/libwebp/src/dsp/common_sse2.h:13,16,20,22,24,27,50,52,54,57,65,66,101,102,105,127,151,155,156,157,159,186,187,189,191,193 ./Pods/libwebp/src/dsp/lossless_enc_mips32.c:14,18,20,25,33,46,53,59,60,61,69,80,85,88,92,93,94,111,132,134,135,158,185,187,188,215,224,233,234,235,239,242,243,250,253,258,259,261,263,264,273,276,281,282,284,286,287,294,325,332,337,342,346,357,358,368,369,376,379,381,391,392,394,396 ./Pods/libwebp/src/dsp/common_sse41.h:13,16,20,23,34,44,46,54,55,57,67,68,70,78,79,81,94,95,96,98,124,125,127,129,131 ./Pods/libwebp/src/dsp/yuv_mips32.c:14,16,18,20,23,78,79,84,86,89,91,97,98,100,102 ./Pods/libwebp/src/dsp/upsampling_mips_dsp_r2.c:14,16,18,21,48,56,63,67,77,78,83,93,94,96,99,109,119,128,129,132,134,141,144,201,202,213,216,219,221,236,237,239,242,248,249,259,261,264,266,281,282,284,286,288 ./Pods/libwebp/src/dsp/dec_msa.c:13,14,16,18,20,23,29,39,42,49,68,69,74,75,76,85,117,118,123,124,139,154,155,158,162,163,167,168,177,189,195,216,226,258,266,292,299,310,315,328,331,339,348,357,358,370,417,418,427,433,434,440,441,452,470,471,477,478,491,523,524,536,559,560,570,590,591,601,623,624,628,633,634,641,660,661,666,667,672,673,677,679,687,688,699,705,706,713,722,723,730,750,751,758,774,775,777,784,787,792,793,800,817,818,819,824,825,835,836,837,842,845,849,850,856,861,862,867,868,870,875,885,888,893,894,902,915,916,917,922,923,937,938,939,950,951,957,960,964,965,969,970,973,975,981,994,1014,1015,1017,1019 ./Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/UIImage+WebP.m:8,11,13,17,19,20 ./Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/SDImageWebPCoder.h:8,14,19,21 ./Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/UIImage+WebP.h:8,14,17,21,26 ./Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/SDImageWebPCoder.m:8,10,24,26,33,49,53,54,55,57,58,62,66,68,80,82,85,105,106,111,115,119,123,124,125,133,134,138,139,142,143,147,148,156,157,167,168,169,178,179,184,185,193,199,214,215,224,225,228,234,235,242,246,247,249,254,258,260,261,274,275,285,291,295,297,298,302,312,314,322,331,334,335,336,339,349,350,364,375,377,380,381,386,387,395,402,403,410,411,421,422,424,425,431,438,443,446,447,448,453,454,460,462,466,469,471,474,475,485,486,488,489,494,495,498,499,507,513,514,518,519,530,532,534,535,542,544,545,550,553,565,573,574,575,576,577,581,582,584,585,589,590,594,595,597,601,610,614,616,626,641,642,643,651,652,658,661,662,664,665,670,671,676,679,680,699,704,708,709,719,732,737,738,746,752,753,760,761,766,767,774,780,781,792,798,803,804,814,815,816,820,827,829,831,832,835,836,841,850,855,862,863,872,878,885,887,888,892,897,898,909,916,920,921,927,938,942,952,953,958,961,963,965,966,969,970,973,974,977,978,982,985,987,988,993,999,1002,1003,1011,1014,1025,1027,1033,1036,1045,1046,1054,1056,1059,1060,1064,1068,1075,1080,1081,1090,1096,1098,1103,1104,1106,1113,1120,1123,1124 ./Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Module/SDWebImageWebPCoder.h:8,10,13 ./Pods/Expecta/Expecta/EXPMatcher.h:8,10,12,14,19 ./Pods/Expecta/Expecta/NSValue+Expecta.m:4,6,8,10,13,14,19,20 ./Pods/Expecta/Expecta/EXPFloatTuple.m:2,7,9,15,17,18,22,23,30,32,34,35,37,42,44,45,51,53,54 ./Pods/Expecta/Expecta/ExpectaSupport.m:9,11,14,16,93,96,99,100,103,104,109,117,118,119,130,131,132,138,144,151,157,159,160,163,164,167,168,171,172,175,176 ./Pods/Expecta/Expecta/EXPDefines.h:8,11,16 ./Pods/Expecta/Expecta/EXPDoubleTuple.m:2,7,9,15,17,18,22,23,30,32,34,35,41,43,44 ./Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h:8,12,18,19,24 ./Pods/Expecta/Expecta/EXPExpect.m:8,13,22,31,42,44,45,47,51,52,55,56,58,61,62,66,67,70,71,75,76,79,80,82,88,90,91,93,97,99,100,102,105,106,126,130,133,135,138,142,146,147,150,151,153,154,156,157,159,161,164,166,167,169,175,178,179,180,182,187,189,193,195,196,198,200,201,203,205,206,208,210,211,213,215,219,220 ./Pods/Expecta/Expecta/Expecta.h:2,5,8,12 ./Pods/Expecta/Expecta/ExpectaObject.h:2,9,11,12,14,17 ./Pods/Expecta/Expecta/EXPUnsupportedObject.h:2,5,6,8,10 ./Pods/Expecta/Expecta/EXPFloatTuple.h:2,6,7,10,12 ./Pods/Expecta/Expecta/NSValue+Expecta.h:2,4,6 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m:3,10,14,26,28,36,38,46,48 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m:4,7,12,16,21,26,28 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m:3,8,11,15,19 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m:2,6,10,14,20,26,28 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m:2,4,6,8,10,14,15,19,20,22,23,25,31,35,45,46,52,57,61,64,68,74,78,84,85,87 ./Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m:2,5,6,9 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m:4,8,12,16,20,24,28,32 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h:2,5 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m:3,11,12,15,19,23 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h:2,9 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h:2,5 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m:2,7,11,15,17 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m:3,6,15,18,26,34 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m:2,6,10,14,20,26,28 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m:2,10,14,21,27,28,31,33,40,45,48,50 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h:2,4 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m:3,13,17,18,19,22,26,31,33,37 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m:3,11,14,17,18,21,25,29 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m:3,8,11,15,19 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m:2,6,10,19,20,21,22,25,31,37 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h:2,5 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h:2,5 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m:3,11,12,15,19,23 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m:3,8,11,15,19 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m:2,6,10,16,18,22,25,30,35,37 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h:2,5 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m:3,8,11,15,19 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m:3,7,10,15,18,23,30,37 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m:3,6,14,17,23,29 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m:2,10,14,21,27,28,31,33,40,45,48 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h:2,5 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h:2,5 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m:3,11,12,15,19,23 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h:2 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m:2,6,16,18,22,25,30,32,36,37,38,41,44,46,48,51,54,56,58,61 ./Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m:3,7,11,16,19,25,31 ./Pods/Expecta/Expecta/NSObject+Expecta.h:2,4,9 ./Pods/Expecta/Expecta/ExpectaSupport.h:3,7,10,13,18,22,27,31,36,51,52,62,71,73 ./Pods/Expecta/Expecta/EXPUnsupportedObject.m:2,7,9,14,16,17,21,22 ./Pods/Expecta/Expecta/ExpectaObject.m:2,4,6,9,10,13,14 ./Pods/Expecta/Expecta/EXPDoubleTuple.h:2,6,7,10,12 ./Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m:8,10,12,14,19,21,22,27,29,32,34,35,37,40,42,43,45,48,50,51,53,56,58,59 ./Pods/Expecta/Expecta/EXPExpect.h:4,13,14,23,30,33,36,38,42 ./SDWebImageMapKit/MapKit/MKAnnotationView+WebCache.m:8,10,12,14,17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,46,60,65,67,68,70 ./SDWebImageMapKit/MapKit/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./Examples/SDWebImage Demo/AppDelegate.h:8,10,12,14,16 ./Examples/SDWebImage Demo/DetailViewController.m:8,11,13,15,17,19,23,29,30,38,39,42,43 ./Examples/SDWebImage Demo/MasterViewController.h:8,10,12 ./Examples/SDWebImage Demo/main.m:8,10,12,14,17,18 ./Examples/SDWebImage Demo/AppDelegate.m:8,11,14,16,19,21,28,35,39,40,43,49,50,52,55,56,58,61,62,64,66,67,69,71,72,74,76,77 ./Examples/SDWebImage Demo/MasterViewController.m:8,12,14,17,19,21,28,31,33,34,36,38,40,42,44,53,60,78,82,83,85,86,89,90,92,95,96,99,103,104,110,111,126,127,130,131,138,139 ./Examples/SDWebImage Demo/DetailViewController.h:8,10,12,14 ./Examples/SDWebImage OSX Demo/AppDelegate.h:8,10,12,13,15 ./Examples/SDWebImage OSX Demo/ViewController.m:8,11,13,19,21,23,26,30,34,42,45,55,60,61,69,70,77,78,79,82,84,85 ./Examples/SDWebImage OSX Demo/main.m:8,10,13 ./Examples/SDWebImage OSX Demo/AppDelegate.m:8,10,13,15,17,19,28,32,33,34,37,38 ./Examples/SDWebImage OSX Demo/ViewController.h:8,10,12,13,15 ./Examples/SDWebImage TV Demo/AppDelegate.h:8,10,12,14,15,17 ./Examples/SDWebImage TV Demo/ViewController.m:8,11,13,18,20,21,23,27,32,33,37,38 ./Examples/SDWebImage TV Demo/main.m:8,11,15,16 ./Examples/SDWebImage TV Demo/AppDelegate.m:8,10,13,15,17,19,20,29,33,34,36,37,41,42,46,47,50,51,54,55,58,59 ./Examples/SDWebImage TV Demo/ViewController.h:8,10,12,14 ./Examples/SDWebImage Watch Demo Extension/ExtensionDelegate.m:8,10,13,15,24,28,29,30,33,34,38,39 ./Examples/SDWebImage Watch Demo Extension/NotificationController.m:8,10,11,13,15,16,18,24,25,27,28,32,33,37,38,40,41,42 ./Examples/SDWebImage Watch Demo Extension/InterfaceController.m:8,11,13,18,20,21,23,26,28,29,33,35,39,46,54,62,63,67,68,72,73,75,76,77 ./Examples/SDWebImage Watch Demo Extension/ExtensionDelegate.h:8,10,12 ./Examples/SDWebImage Watch Demo Extension/NotificationController.h:8,11,13 ./Examples/SDWebImage Watch Demo Extension/InterfaceController.h:8,11,13 ./Package.swift:3,5 ./SDWebImage/Core/UIImage+ExtendedCacheData.h:9,12,14,23 ./SDWebImage/Core/SDImageHEICCoder.m:8,11,17,19,29,31,32,40,41,43,54,55,56,59,60,71,72,73,75,78,79,82,83,86,87,90,91,94,95,98,99,102,103 ./SDWebImage/Core/SDAnimatedImageRep.h:8,10,12,20,22 ./SDWebImage/Core/NSImage+Compatibility.m:8,10,12,14,16,21,22,28,30,31,46,47,48,50,51,62,65,73,75,76,84,87,95,97,98,103,106,114,116,117,119 ./SDWebImage/Core/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./SDWebImage/Core/SDAnimatedImageView+WebCache.m:8,10,12,15,17,20,21,24,25,28,29,32,33,36,37,40,41,44,45,48,49,62,73,75,76,78 ./SDWebImage/Core/SDImageIOCoder.h:8,11,14,18,27,29 ./SDWebImage/Core/SDImageCoder.m:8,10,15,22 ./SDWebImage/Core/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./SDWebImage/Core/SDImageGraphics.h:8,11,18 ./SDWebImage/Core/SDWebImageOperation.m:8,10,13 ./SDWebImage/Core/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./SDWebImage/Core/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./SDWebImage/Core/SDWebImageDownloaderDecryptor.m:8,10,12,14,16,18,23,25,26,30,31,35,37,38,40,42,53,54 ./SDWebImage/Core/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./SDWebImage/Core/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./SDWebImage/Core/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./SDWebImage/Core/SDWebImageManager.m:8,16,19,21,26,28,30,37,39,41,44,45,49,51,52,55,56,60,62,63,71,72,77,81,83,84,93,95,96,100,101,109,110,112,113,117,118,124,129,130,144,146,147,154,155,158,159,161,162,165,166,174,179,180,184,185,188,194,195,201,202,206,209,212,214,215,221,222,229,230,234,238,239,244,245,247,261,262,267,268,285,286,293,294,295,309,310,315,316,326,327,331,341,342,346,347,350,356,357,358,375,376,393,396,397,412,417,423,426,427,430,439,440,441,456,461,470,472,477,490,497,501,502,503,518,524,526,543,549,550,554,555,556,558,562,566,567,580,587,588,593,594,595,596,602,603,615,617,618,628,635,636,638,639,643,648,653,658,659,663,665,666,670,674,675,677,678,680,681,683,688,693,697,699,700,701 ./SDWebImage/Core/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./SDWebImage/Core/SDImageIOAnimatedCoder.m:8,16,21,23,26,28,31,43,44,46,50,54,55,57,61,62,63,64,66,71,72,77,78,83,84,89,90,95,96,101,102,107,108,110,122,124,125,137,139,140,149,150,152,153,163,166,174,175,176,181,184,185,188,189,199,200,206,207,213,227,232,244,247,251,254,265,266,267,276,277,281,282,286,291,292,301,302,307,308,319,321,325,328,334,339,340,342,345,346,348,351,354,356,357,359,362,363,373,383,389,394,396,397,401,404,407,410,423,424,425,428,429,432,439,443,444,445,447,448,452,453,457,462,463,466,467,471,478,484,489,498,509,511,517,521,523,536,543,544,549,550,552,554,555,560,566,571,576,586,592,599,601,602,606,610,616,617,621,623,624,627,628,631,632,635,636,640,642,643,647,656,660,661,663 ./SDWebImage/Core/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./SDWebImage/Core/UIImageView+HighlightedWebCache.m:8,10,12,16,18,20,23,24,27,28,31,32,35,36,39,40,43,44,56,65,70,72,73,75 ./SDWebImage/Core/SDImageFrame.h:8,11,17,26,29,35 ./SDWebImage/Core/SDImageGIFCoder.h:8,11,19,21 ./SDWebImage/Core/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./SDWebImage/Core/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./SDWebImage/Core/SDAnimatedImage.m:8,20,25,30,32,33,35,40,42,45,53,54,59,62,66,68,73,76,81,85,89,93,94,96,97,100,101,104,105,108,109,113,114,117,118,121,122,126,134,137,138,139,142,144,145,149,153,163,167,169,170,175,183,186,187,188,192,196,197,198,207,215,216,217,220,223,224,226,227,234,235,236,239,240,242,245,246,249,250,253,254,258,262,264,265,269,273,275,276,278,280,285,286,290,295,299,300,302,304,307,308,311,312,315,316,319,320,323,324,327,328,330,332,335,336,339,340,344,346,347,354,355,356,359,360,363,364,369,374,382,386,387 ./SDWebImage/Core/SDAnimatedImageView.m:8,10,12,18,21,27,28,36,38,43,45,48,53,58,62,64,65,68,72,74,76,78,82,84,85,87,91,93,94,96,108,109,112,114,117,118,121,128,129,140,146,147,151,152,156,157,160,163,166,184,186,189,192,194,195,196,198,200,203,204,206,209,211,212,216,217,219,222,223,226,227,229,232,233,235,238,240,241,243,246,248,249,252,258,264,266,267,273,279,281,282,288,294,296,297,299,301,303,304,307,309,315,318,319,320,322,327,334,335,336,338,344,347,354,355,356,359,364,365,367,370,375,376,377,379,384,385,387,389,391,395,396,397,398,401,404,411,412,413,414,418,425,426,429,434,448,449,450,451,452,455,460,461,463,464,465,468,470,479,480,481,482,491,493,494,500,506,508,513,514,516,518 ./SDWebImage/Core/UIImage+ForceDecode.m:8,12,14,18,19,22,23,27,29,30,33,34,38,40,41 ./SDWebImage/Core/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./SDWebImage/Core/SDImageAWebPCoder.m:8,11,17,19,29,31,32,40,41,43,51,52,53,56,57,65,66,67,69,72,73,76,77,80,81,84,85,88,89,92,93,96,97 ./SDWebImage/Core/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./SDWebImage/Core/SDAnimatedImagePlayer.m:8,14,17,18,31,33,35,43,52,54,55,59,60,62,67,68,79,80,83,84,90,92,93,97,99,100,104,106,107,113,115,116,120,124,127,128,130,131,135,137,138,140,144,159,160,161,162,171,172,177,178,185,188,189,195,196,200,201,204,205,209,214,215,222,223,229,230,236,237,240,243,251,258,262,264,268,271,274,275,276,286,287,297,298,304,310,311,312,313,317,318,327,336,338,344,347,348,349,353,354,355,359,360,361,366,375,376,381,382,384,385,389,390 ./SDWebImage/Core/UIImage+Transform.m:8,18,38,44,45,50,55,56,58,59,65,77,93,94,110,111,124,125,138,139,152,153,158,162,163,165,166,173,179,181,183,185,196,199,200,201,211,212,219,231,233,237,238,242,250,251,258,267,272,273,284,288,291,292,298,311,318,320,335,339,340,344,353,357,365,367,376,380,384,385,387,392,393,410,412,416,419,430,431,438,443,446,447,454,455,461,466,467,472,478,485,486,493,498,501,502,509,510,516,521,522,526,533,534,538,549,553,556,558,559,561,566,570,571,587,589,591,600,601,604,614,620,625,626,629,657,659,660,666,674,676,677,687,689,691,696,699,706,708,710 ./SDWebImage/Core/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./SDWebImage/Core/SDWebImageDownloader.m:8,14,19,21,23,31,35,37,39,45,48,50,52,57,62,66,73,74,75,83,84,87,88,94,117,118,120,128,137,139,140,144,147,148,152,157,158,159,163,167,168,172,177,178,182,183,189,190,201,203,204,216,218,224,240,248,249,250,252,257,259,260,267,268,277,284,285,292,293,302,305,312,315,322,325,326,328,335,337,343,344,345,348,349,354,355,362,363,364,366,367,370,371,373,376,377,380,381,384,385,388,389,391,396,399,400,401,403,412,416,417,418,420,421,423,428,436,437,438,439,441,446,447,448,453,461,462,463,464,466,468,473,474,475,477,485,486,487,488,490,498,499,500,501,503,508,509,510,512,514,518,519,526,528,529,534,535,536,543,544,545,546,547,552,556,557,558,560,562,566,569,570,573,587,593,594,596,597,615,617,618 ./SDWebImage/Core/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./SDWebImage/Core/SDImageLoader.m:8,17,19,23,31,42,45,46,54,61,62,72,77,78,79,80,83,92,93,96,97,98,100,101,106,114,125,128,129,137,152,153,154,156,160,161,174,175,176,177,180,189,192,195,196,198,199 ./SDWebImage/Core/SDWebImageCacheSerializer.m:8,10,12,14,16,18,23,25,26,30,31,35,37,38 ./SDWebImage/Core/SDWebImageIndicator.m:8,10,12,16,26,28,30,36,38,40,45,47,48,55,58,66,68,76,77,85,86,88,90,105,106,119,120,133,134,145,146,154,160,161,169,175,177,179,181,183,189,191,193,198,200,201,206,208,216,218,228,234,235,243,249,250,257,262,264,266,268,272,273,279,281,283 ./SDWebImage/Core/SDGraphicsImageRenderer.m:8,11,17,22,30,34,35,42,46,47,54,58,59,66,70,71,85,86,89,93,94,110,111,114,118,120,141,143,145,146,160,175,177,179,181,185,186,188,196,198,201,202,213,215,217,218,226,235,240,242,243 ./SDWebImage/Core/UIImage+GIF.m:9,12,14,18,20,21 ./SDWebImage/Core/SDImageCodersManager.m:8,15,17,19,21,23,25,26,34,35,41,43,44,46,51,52,54,59,61,62,64,68,72,73,77,81,82,89,90,92,93,99,100,102,103,107,114,115,116,118,119,123,128,129,131,132 ./SDWebImage/Core/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./SDWebImage/Core/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./SDWebImage/Core/UIImage+MultiFormat.m:8,11,13,16,17,20,21,25,28,29,32,33,36,37,40,41,45,46 ./SDWebImage/Core/SDMemoryCache.m:8,13,15,17,24,26,34,35,41,43,44,50,52,53,58,61,65,71,72,78,79,85,91,92,93,98,109,111,112,114,115,120,126,127,128,133,138,140,142,149,152,153,154 ./SDWebImage/Core/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./SDWebImage/Core/SDWebImageCompat.m:8,10,14 ./SDWebImage/Core/SDImageAPNGCoder.m:8,15,23,25,33,34,36,39,40,43,44,47,48,51,52,55,56,59,60,63,64 ./SDWebImage/Core/SDWebImageDownloaderResponseModifier.m:8,9,11,13,15,17,19,24,26,27,31,32,36,38,39,41,43,46,47,50,51,54,55,62,67,71,72 ./SDWebImage/Core/SDWebImageError.m:9,11 ./SDWebImage/Core/SDWebImagePrefetcher.m:8,13,21,23,27,28,35,37,39,43,45,47,55,56,59,60,69,71,72,75,76,79,80,84,85,92,94,108,110,111,120,125,128,133,134,137,143,144,156,157,158,159,166,167,168,172,181,184,186,187,191,200,203,205,206,213,214,216,217,223,224,226,227,233,234,236,237,241,244,245,246,250,253,254,255,260,262,263,265,267,273,275,276,284,285,288,295,296,299,303,304 ./SDWebImage/Core/SDImageCoderHelper.m:8,19,22,23,26,41,43,45,50,51,53,58,71,74,76,78,80,88,89,97,98,104,107,114,116,117,121,122,125,131,132,136,137,145,153,159,161,163,169,172,176,178,187,188,190,192,193,199,209,215,216,220,226,227,230,231,235,249,254,256,257,267,268,275,277,278,282,288,289,308,316,319,324,325,327,328,332,333,337,347,348,352,353,356,357,362,366,371,383,390,401,404,406,441,456,459,460,461,466,475,479,480,481,484,485,489,491,492,524,526,527,558,560,562,568,572,576,580,581,583,584,587,595,599,607,608,610,611,617,624,630,639,640,647,658,659,661,662,670,672,673,677,681,683,685 ./SDWebImage/Core/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./SDWebImage/Core/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./SDWebImage/Core/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./SDWebImage/Core/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./SDWebImage/Core/NSButton+WebCache.m:8,10,12,17,19,21,23,26,27,30,31,34,35,38,39,42,43,46,47,50,51,54,55,72,74,75,77,80,81,84,85,88,89,92,93,96,97,100,101,104,105,108,109,117,123,133,138,140,141,143,146,147,150,151,153,156,157,160,161,164,165,168,169,171 ./SDWebImage/Core/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./SDWebImage/Core/SDImageIOCoder.m:8,15,18,27,28,33,37,38,40,43,44,45,53,54,58,59,63,68,69,78,79,84,85,89,90,95,96,99,100,102,105,106,115,125,131,136,138,139,143,145,148,151,163,169,170,171,172,175,182,187,188,189,191,192,196,197,201,206,207,214,215,216,219,225,226,238,243,252,263,265,271,275,277,280,285,286,288,290,291 ./SDWebImage/Core/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./SDWebImage/Core/SDDiskCache.m:8,13,15,17,20,22,24,28,29,36,38,39,45,46,47,52,57,58,60,61,68,69,75,76,78,79,85,86,91,93,98,99,100,103,106,108,110,111,116,123,124,125,130,131,138,139,142,160,161,163,169,173,182,186,187,193,194,199,200,203,204,211,217,224,227,228,229,230,231,232,236,237,245,247,248,254,255,257,261,262,269,274,280,285,294,297,298,299,301,303,310,318,323,325 ./SDWebImage/Core/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./SDWebImage/Core/SDAnimatedImageRep.m:8,10,12,18,21,22,27,28,29,34,35,45,50,54,82,83,85,86,95,100,115,118,121,122,124,126 ./SDWebImage/Core/SDImageHEICCoder.h:8,11,22,24 ./SDWebImage/Core/UIImage+ExtendedCacheData.m:9,12,14,17,18,21,22 ./SDWebImage/Core/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./SDWebImage/Core/SDWebImageDownloaderConfig.m:8,10,12,14,21,22,29,31,32,44,46,47,48 ./SDWebImage/Core/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./SDWebImage/Core/SDImageCache.m:8,17,19,21,28,30,31,33,35,43,44,48,50,51,54,55,58,59,62,63,67,68,74,77,80,82,86,91,93,96,99,106,118,119,121,122,125,126,128,132,134,135,139,140,153,154,155,157,162,163,169,170,177,178,188,190,195,196,204,218,219,220,222,234,243,244,247,248,249,250,251,256,261,262,263,264,268,271,272,277,278,282,283,288,289,291,292,294,302,304,305,309,310,315,317,318,323,324,326,327,335,337,338,342,347,349,350,353,354,357,358,365,366,368,369,372,373,379,380,384,385,389,390,394,395,401,402,403,405,406,410,411,414,415,431,440,441,443,444,448,449,450,453,454,457,458,461,462,467,469,474,476,477,482,483,494,501,502,503,504,509,511,512,524,526,527,540,541,542,550,551,552,554,560,561,563,564,566,569,570,573,574,578,579,582,583,587,592,596,597,598,602,603,605,606,610,614,615,620,621,623,624,626,629,630,638,640,641,649,651,652,654,658,660,662,667,671,679,685,687,689,696,697,704,705,714,716,717,726,728,729,731,733,735,738,739,750,752,753,758,762,766,770,775,776,778,779,780,785,789,793,797,802,803,805,806,807,813,814,820,821,827,829,836,838,842,844,849,851,852,853,859,860,866,867,871,876,881,882,884,885,886,888 ./SDWebImage/Core/SDImageGIFCoder.m:8,15,17,25,26,28,31,32,35,36,39,40,43,44,47,48,51,52,55,56 ./SDWebImage/Core/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./SDWebImage/Core/SDImageFrame.m:8,10,12,15,17,19,24,26,27 ./SDWebImage/Core/SDWebImageDownloaderOperation.m:8,14,21,24,26,28,30,33,43,46,52,54,56,61,63,65,68,71,72,75,76,97,99,100,108,110,111,116,120,121,124,131,132,140,145,147,149,150,159,160,170,176,186,187,193,198,201,202,203,206,207,218,222,230,231,232,236,237,238,242,249,257,258,260,261,266,267,272,276,277,284,286,287,288,293,294,299,300,303,304,306,312,320,321,322,327,334,340,341,345,349,354,357,358,359,363,365,371,373,374,384,386,392,400,402,404,405,406,409,410,411,416,418,422,425,426,427,429,433,441,443,444,450,460,481,484,488,491,492,493,494,496,499,506,514,517,518,519,522,523,524,527,528,537,539,540,543,544,547,548,557,559,560 ./SDWebImage/Core/SDImageIOAnimatedCoder.h:8,12,19,58 ./SDWebImage/Core/SDImageLoadersManager.m:8,12,14,16,18,20,22,23,31,32,39,41,42,48,49,55,57,58,60,64,68,69,73,77,78,80,86,87,89,90,94,99,100,102,103,109,110,112,113 ./SDWebImage/Core/SDImageCachesManager.m:8,13,15,17,19,21,23,24,32,33,45,47,48,54,55,61,63,64,66,70,74,75,79,83,84,86,89,90,94,101,106,111,118,125,130,131,132,136,144,149,154,160,164,168,169,170,174,182,187,192,198,202,206,207,208,212,220,225,230,236,242,246,247,248,257,262,267,273,277,281,282,283,285,294,298,305,307,313,314,316,317,318,327,331,338,339,341,342,343,352,356,363,364,366,367,368,377,381,388,390,396,397,399,400,401,410,414,421,422,424,425,426,428,438,440,447,451,458,460,464,465,473,475,482,483,491,493,500,501,511,513,520,524,531,533,537,538,546,548,555,556 ./SDWebImage/Core/SDWebImageTransition.m:8,10,12,16,28,29,30,68,69,71,73,78,80,81,83,85,88,89,98,99,102,103,112,113,116,117,126,127,130,131,140,141,144,145,154,155,158,159,168,169,172,173,183,184,186 ./SDWebImage/Core/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./SDWebImage/Core/SDImageTransformer.m:8,14,17,21,35,38,39,40,44,45,47,50,52,54,59,61,62,66,72,74,75,79,83,85,86,88,90,95,97,99,106,108,109,112,113,117,119,120,122,124,127,129,131,136,138,139,143,144,148,150,151,153,155,157,159,161,165,167,168,172,173,177,179,180,182,184,187,189,191,196,198,199,202,203,207,209,210,212,214,217,219,221,226,228,229,232,233,237,239,240,242,244,246,248,250,252,256,258,259,262,263,267,269,270,272,274,276,278,280,282,286,288,289,292,293,297,299,300,302,305,307,309,311,315,317,318,321,322,326,328,329 ./SDWebImage/Core/NSData+ImageContentType.m:9,17,19,21,25,26,46,47,49,59,63,64,66,73,74,75,80,81,82,84,85,120,122,123,127,149,151,152 ./SDWebImage/Core/UIImageView+WebCache.m:8,13,15,18,19,22,23,26,27,30,31,34,35,38,39,42,43,46,47,63,65,66 ./SDWebImage/Core/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./SDWebImage/Core/SDWebImageOperation.h:8,10,13,15,17,20 ./SDWebImage/Core/SDImageGraphics.m:8,12,15,20,24,32,34,36,38,45,46,53,54,62,69,70,77,78,87,91,96,100,105 ./SDWebImage/Core/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./SDWebImage/Core/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./SDWebImage/Core/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./SDWebImage/Core/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./SDWebImage/Core/SDImageCacheDefine.m:8,15,28,31,32,40,47,48,58,63,64,65,66,69,78,81,82,83,85 ./SDWebImage/Core/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./SDWebImage/Core/UIImage+MemoryCacheCost.m:8,12,17,27,28,30,38,40,41,44,45 ./SDWebImage/Core/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./SDWebImage/Core/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./SDWebImage/Core/SDImageCacheConfig.m:8,12,15,17,24,25,39,41,42,59,61,62 ./SDWebImage/Core/SDWebImageCacheKeyFilter.m:8,10,12,14,16,18,23,25,26,30,31,35,37,38 ./SDWebImage/Core/SDImageAWebPCoder.h:8,11,20,22 ./SDWebImage/Core/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./SDWebImage/Core/SDWebImageDefine.m:8,13,15,18,19,24,33,44,51,52,53,54,55,57,58,62,65,66,70,73,76,83,87,88,98,104,113,115,117,118,120 ./SDWebImage/Core/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./SDWebImage/Core/SDWebImageOptionsProcessor.m:8,10,12,15,17,19,25,27,28,30,32,34,36,38,43,45,46,50,51,55,57,58 ./SDWebImage/Core/UIView+WebCacheOperation.m:8,11,13,17,19,25,29,30,31,38,39,41,42,50,51,52,53,54,60,63,67,70,71,72,73,74,80,81,82,83 ./SDWebImage/Core/UIView+WebCache.m:8,15,17,19,22,23,26,27,30,31,34,35,41,43,44,47,48,61,69,73,78,79,86,87,101,102,107,113,118,122,132,133,138,140,148,151,153,160,161,172,173,193,197,198,201,221,223,224,225,229,230,241,243,244,256,263,271,273,279,283,288,291,294,298,301,308,313,318,326,331,335,338,342,345,352,353,354,356,365,366,368,372,373,376,377,381,382,387,389,394,403,404,409,413,414,419,423,424,426 ./SDWebImage/Core/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./SDWebImage/Core/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./SDWebImage/Core/SDImageAPNGCoder.h:8,11,16,18 ./SDWebImage/Core/SDWebImageError.h:9,11,13,16 ./SDWebImage/Core/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./SDWebImage/Core/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./SDWebImage/Core/UIImage+Metadata.m:8,13,15,17,23,25,26,30,31,34,35,44,49,50,56,57,59,61,63,71,74,76,77,84,87,88,89,97,101,103,104,110,113,116,118,119,121,128,133,135,136,139,140,143,144,148,149 ./SDWebImage/Core/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./SDWebImage/Core/UIButton+WebCache.m:8,10,12,17,19,21,24,25,28,29,32,33,36,37,39,41,44,47,48,50,51,54,55,58,59,62,63,66,67,70,71,74,75,78,79,82,83,86,87,99,100,106,116,121,123,124,126,129,132,133,135,136,139,140,143,144,147,148,151,152,155,156,159,160,163,164,167,168,171,172,184,185,191,201,206,208,209,211,214,215,218,219,221,227,228,230,231,233 ./SDWebImage/Core/SDWebImageDownloaderRequestModifier.m:8,10,12,14,16,18,23,25,26,30,31,35,37,38,40,42,45,46,49,50,53,54,66,69,70 ./SDWebImage/Core/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./SDWebImage/Core/UIImage+GIF.h:9,11,16,20,25 ./SDWebImage/Private/SDDeviceHelper.h:8,11,14,17 ./SDWebImage/Private/SDWeakProxy.h:8,11,14,16,19 ./SDWebImage/Private/SDWebImageTransitionInternal.h:8,10,12,14,18 ./SDWebImage/Private/UIColor+SDHexString.m:8,10,12,20,24,29,31,36,38,40,41 ./SDWebImage/Private/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./SDWebImage/Private/SDImageCachesManagerOperation.m:8,11,13,15,16,21,26,28,29,34,35,41,42,47,48,52,53,58,59,64,65,70,71,76,77,82,83 ./SDWebImage/Private/SDFileAttributeHelper.h:7,9,12,18 ./SDWebImage/Private/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./SDWebImage/Private/SDImageAssetManager.m:8,11,29,32,33,36,37,45,46,63,65,66,71,72,77,78,85,88,93,95,98,107,108,109,110,117,118,119,126,132,133,134,137,139,140,148,149,156,157 ./SDWebImage/Private/SDAsyncBlockOperation.h:8,10,13,16,20 ./SDWebImage/Private/SDDisplayLink.h:8,11,15,20,22,25,28 ./SDWebImage/Private/SDAssociatedObject.h:8,10 ./SDWebImage/Private/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./SDWebImage/Private/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./SDWebImage/Private/SDDeviceHelper.m:8,11,13,16,17,24,30,31 ./SDWebImage/Private/SDWeakProxy.m:8,10,12,16,17,20,21,24,25,29,30,33,34,37,38,41,42,45,46,49,50,53,54,57,58,61,62,65,66,69,70,73,74,77,78 ./SDWebImage/Private/SDInternalMacros.m:8,10,13 ./SDWebImage/Private/SDFileAttributeHelper.m:7,10,12,15,25,29,33,40,41,44,54,58,62,68,69,82,85,86,91,92,106,109,110,122,125,126 ./SDWebImage/Private/SDImageCachesManagerOperation.h:8,11,14,16,20 ./SDWebImage/Private/NSBezierPath+SDRoundedCorners.m:8,10,12,14,17,19,24,29,36,38,39,41 ./SDWebImage/Private/UIColor+SDHexString.h:8,10,12,17 ./SDWebImage/Private/SDDisplayLink.m:8,16,20,22,24,37,39,41,47,55,56,72,74,75,79,80,88,99,103,105,106,115,116,120,135,138,139,143,158,161,162,175,177,178,187,188,196,205,206,208,215,221 ./SDWebImage/Private/SDImageAssetManager.h:8,11,15,17,22 ./SDWebImage/Private/SDAsyncBlockOperation.m:8,10,12,16,18,20,23,28,30,31,35,36,42,43,46,52,53,54,55,62,63,64,65,66,72,73,74,75,80,81,86,87,90,91 ./SDWebImage/Private/SDAssociatedObject.m:8,14,18,27 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-appletvsimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-appletvsimulator/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-watchsimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-maccatalyst/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-maccatalyst/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-iphonesimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-iphonesimulator/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImageMapKit.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImageMapKit.framework/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImageMapKit.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImageMapKit.framework/Versions/A/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImageMapKit.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImageMapKit.framework/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImageMapKit.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImageMapKit.framework/Versions/A/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/libwebp-tvOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/Pods-SDWebImage TV Demo.build/DerivedSources/Pods_SDWebImage_TV_Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/libwebp-watchOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/SDWebImageWebPCoder-watchOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/SDWebImage-Core.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/Pods-SDWebImage Watch Demo Extension.build/DerivedSources/Pods_SDWebImage_Watch_Demo_Extension_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/Pods-SDWebImage iOS Demo.build/DerivedSources/Pods_SDWebImage_iOS_Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/libwebp-iOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/SDWebImageWebPCoder-iOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Pods-SDWebImage iOS Demo.build/DerivedSources/Pods_SDWebImage_iOS_Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/libwebp-iOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SDWebImageWebPCoder-iOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/SDWebImageWebPCoder-macOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/KVOController-macOS.build/DerivedSources/KVOController_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/libwebp-macOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/Expecta-macOS.build/DerivedSources/Expecta_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/SDWebImage-Core-MapKit-macOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/Pods-SDWebImage OSX Demo.build/DerivedSources/Pods_SDWebImage_OSX_Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/Pods-Tests Mac.build/DerivedSources/Pods_Tests_Mac_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Tests.build/Debug/Tests Mac.build/DerivedSources/Tests Mac_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-appletvsimulator/SDWebImage TV Demo.build/DerivedSources/SDWebImage TV Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-watchsimulator/SDWebImage Watch Demo Extension.build/DerivedSources/SDWebImage Watch Demo Extension_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-maccatalyst/SDWebImage iOS Demo.build/DerivedSources/SDWebImage iOS Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-iphonesimulator/SDWebImage iOS Demo.build/DerivedSources/SDWebImage iOS Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug/SDWebImage OSX Demo.build/DerivedSources/SDWebImage OSX Demo_vers.c:3 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImage-Core-MapKit-tvOS-umbrella.h:12,73,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/libwebp-tvOS-umbrella.h:12,20,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Pods_SDWebImage_TV_Demo.framework/Headers/Pods-SDWebImage TV Demo-umbrella.h:12,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/Pods_SDWebImage_Watch_Demo_Extension.framework/Headers/Pods-SDWebImage Watch Demo Extension-umbrella.h:12,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImage-Core-umbrella.h:12,72,75 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/libwebp-watchOS-umbrella.h:12,20,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/libwebp-iOS-umbrella.h:12,20,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/Pods_SDWebImage_iOS_Demo.framework/Versions/A/Headers/Pods-SDWebImage iOS Demo-umbrella.h:12,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/libwebp-iOS-umbrella.h:12,20,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Pods_SDWebImage_iOS_Demo.framework/Headers/Pods-SDWebImage iOS Demo-umbrella.h:12,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Pods_SDWebImage_OSX_Demo.framework/Versions/A/Headers/Pods-SDWebImage OSX Demo-umbrella.h:12,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/KVOController-macOS/KVOController.framework/Versions/A/Headers/KVOController-macOS-umbrella.h:12,16,19 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/KVOController-macOS/KVOController.framework/Versions/A/Headers/KVOController.h:4,9 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/KVOController-macOS/KVOController.framework/Versions/A/Headers/FBKVOController.h:4,9,11,15,17,19,21,27,31,33,39,41,46,54,60,64,71,80,88,91,95,98,102,106,111,121,131,141,142,152,162,172,176,184,191,197,199 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/KVOController-macOS/KVOController.framework/Versions/A/Headers/NSObject+FBKVOController.h:4,9,11,13,15,18,23,30,39,41 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Pods_Tests_Mac.framework/Versions/A/Headers/Pods-Tests Mac-umbrella.h:12,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/libwebp-macOS-umbrella.h:12,20,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/Expecta-macOS-umbrella.h:12,52,55 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+contain.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatcher.h:8,10,12,14,19 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beGreaterThan.h:2,5 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+haveCountOf.h:2,9 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beGreaterThanOrEqualTo.h:2,5 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beTruthy.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPDefines.h:8,11,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+match.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+respondTo.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPBlockDefinedMatcher.h:8,12,18,19,24 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beSupersetOf.h:2,4 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beFalsy.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/Expecta.h:2,5,8,12 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/ExpectaObject.h:2,9,11,12,14,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+endWith.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPUnsupportedObject.h:2,5,6,8,10 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+raise.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatcherHelpers.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+postNotification.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beKindOf.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beLessThanOrEqualTo.h:2,5 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beSubclassOf.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beCloseTo.h:2,5 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beIdenticalTo.h:2,5 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPFloatTuple.h:2,6,7,10,12 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/NSValue+Expecta.h:2,4,6 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+conformTo.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beInstanceOf.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beginWith.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+raiseWithReason.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beNil.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/NSObject+Expecta.h:2,4,9 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/ExpectaSupport.h:3,7,10,13,18,22,27,31,36,51,52,62,71,73 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beInTheRangeOf.h:2,5 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+beLessThan.h:2,5 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPMatchers+equal.h:2 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPDoubleTuple.h:2,6,7,10,12 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Expecta-macOS/Expecta.framework/Versions/A/Headers/EXPExpect.h:4,13,14,23,30,33,36,38,42 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImage-Core-MapKit-macOS-umbrella.h:12,73,76 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/macOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Expecta-iOS.build/DerivedSources/Expecta_vers.c:3 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Pods-Tests iOS.build/DerivedSources/Pods_Tests_iOS_vers.c:3 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/KVOController-iOS.build/DerivedSources/KVOController_vers.c:3 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Tests.build/Debug-iphonesimulator/Tests iOS.build/DerivedSources/Tests iOS_vers.c:3 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+contain.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatcher.h:8,10,12,14,19 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beGreaterThan.h:2,5 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+haveCountOf.h:2,9 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beGreaterThanOrEqualTo.h:2,5 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beTruthy.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPDefines.h:8,11,16 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+match.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+respondTo.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPBlockDefinedMatcher.h:8,12,18,19,24 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beSupersetOf.h:2,4 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beFalsy.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/Expecta.h:2,5,8,12 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/ExpectaObject.h:2,9,11,12,14,17 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+endWith.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPUnsupportedObject.h:2,5,6,8,10 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+raise.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatcherHelpers.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+postNotification.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beKindOf.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beLessThanOrEqualTo.h:2,5 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beSubclassOf.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beCloseTo.h:2,5 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beIdenticalTo.h:2,5 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPFloatTuple.h:2,6,7,10,12 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/NSValue+Expecta.h:2,4,6 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+conformTo.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beInstanceOf.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beginWith.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+raiseWithReason.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beNil.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/NSObject+Expecta.h:2,4,9 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/ExpectaSupport.h:3,7,10,13,18,22,27,31,36,51,52,62,71,73 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/Expecta-iOS-umbrella.h:12,52,55 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beInTheRangeOf.h:2,5 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+beLessThan.h:2,5 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPMatchers+equal.h:2 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPDoubleTuple.h:2,6,7,10,12 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Expecta-iOS/Expecta.framework/Headers/EXPExpect.h:4,13,14,23,30,33,36,38,42 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/KVOController-iOS/KVOController.framework/Headers/KVOController-iOS-umbrella.h:12,16,19 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/KVOController-iOS/KVOController.framework/Headers/KVOController.h:4,9 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/KVOController-iOS/KVOController.framework/Headers/FBKVOController.h:4,9,11,15,17,19,21,27,31,33,39,41,46,54,60,64,71,80,88,91,95,98,102,106,111,121,131,141,142,152,162,172,176,184,191,197,199 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/KVOController-iOS/KVOController.framework/Headers/NSObject+FBKVOController.h:4,9,11,13,15,18,23,30,39,41 ./DerivedData/iOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Pods_Tests_iOS.framework/Headers/Pods-Tests iOS-umbrella.h:12,13,16 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-appletvsimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-appletvsimulator/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-watchsimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-maccatalyst/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-maccatalyst/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-iphonesimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-iphonesimulator/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImageMapKit.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImageMapKit.framework/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImageMapKit.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImageMapKit.framework/Versions/A/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImageMapKit.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImageMapKit.framework/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImageMapKit.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImageMapKit.framework/Versions/A/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/libwebp-tvOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/Pods-SDWebImage TV Demo.build/DerivedSources/Pods_SDWebImage_TV_Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/libwebp-watchOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/SDWebImageWebPCoder-watchOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/SDWebImage-Core.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/Pods-SDWebImage Watch Demo Extension.build/DerivedSources/Pods_SDWebImage_Watch_Demo_Extension_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/Pods-SDWebImage iOS Demo.build/DerivedSources/Pods_SDWebImage_iOS_Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/libwebp-iOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/SDWebImageWebPCoder-iOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Pods-SDWebImage iOS Demo.build/DerivedSources/Pods_SDWebImage_iOS_Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/libwebp-iOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SDWebImageWebPCoder-iOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/SDWebImageWebPCoder-macOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/libwebp-macOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/SDWebImage-Core-MapKit-macOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/Pods-SDWebImage OSX Demo.build/DerivedSources/Pods_SDWebImage_OSX_Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-appletvsimulator/SDWebImage TV Demo.build/DerivedSources/SDWebImage TV Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-watchsimulator/SDWebImage Watch Demo Extension.build/DerivedSources/SDWebImage Watch Demo Extension_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-maccatalyst/SDWebImage iOS Demo.build/DerivedSources/SDWebImage iOS Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-iphonesimulator/SDWebImage iOS Demo.build/DerivedSources/SDWebImage iOS Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug/SDWebImage OSX Demo.build/DerivedSources/SDWebImage OSX Demo_vers.c:3 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImage-Core-MapKit-tvOS-umbrella.h:12,73,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/libwebp-tvOS-umbrella.h:12,20,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Pods_SDWebImage_TV_Demo.framework/Headers/Pods-SDWebImage TV Demo-umbrella.h:12,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/Pods_SDWebImage_Watch_Demo_Extension.framework/Headers/Pods-SDWebImage Watch Demo Extension-umbrella.h:12,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImage-Core-umbrella.h:12,72,75 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/libwebp-watchOS-umbrella.h:12,20,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/libwebp-iOS-umbrella.h:12,20,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/Pods_SDWebImage_iOS_Demo.framework/Versions/A/Headers/Pods-SDWebImage iOS Demo-umbrella.h:12,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/libwebp-iOS-umbrella.h:12,20,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Pods_SDWebImage_iOS_Demo.framework/Headers/Pods-SDWebImage iOS Demo-umbrella.h:12,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Pods_SDWebImage_OSX_Demo.framework/Versions/A/Headers/Pods-SDWebImage OSX Demo-umbrella.h:12,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/libwebp-macOS-umbrella.h:12,20,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImage-Core-MapKit-macOS-umbrella.h:12,73,76 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/common/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-appletvsimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-appletvsimulator/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-watchsimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-maccatalyst/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-maccatalyst/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-iphonesimulator/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug-iphonesimulator/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug/SDWebImage.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Intermediates.noindex/SDWebImage.build/Debug/SDWebImageMapKit.build/DerivedSources/SDWebImageMapKit_vers.c:3 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImageMapKit.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImageMapKit.framework/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-appletvsimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-watchsimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImageMapKit.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImageMapKit.framework/Versions/A/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-maccatalyst/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImageMapKit.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImageMapKit.framework/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug-iphonesimulator/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImageMapKit.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImageMapKit.framework/Versions/A/Headers/SDWebImageMapKit.h:9,11,14,17,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-bqzcciaiqbpbsfebacvzkwahycdz/Build/Products/Debug/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/Expecta-tvOS.build/DerivedSources/Expecta_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/libwebp-tvOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/Pods-Tests TV.build/DerivedSources/Pods_Tests_TV_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/KVOController-tvOS.build/DerivedSources/KVOController_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-appletvsimulator/Pods-SDWebImage TV Demo.build/DerivedSources/Pods_SDWebImage_TV_Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/libwebp-watchOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/SDWebImageWebPCoder-watchOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/SDWebImage-Core.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-watchsimulator/Pods-SDWebImage Watch Demo Extension.build/DerivedSources/Pods_SDWebImage_Watch_Demo_Extension_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/Pods-SDWebImage iOS Demo.build/DerivedSources/Pods_SDWebImage_iOS_Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/libwebp-iOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-maccatalyst/SDWebImageWebPCoder-iOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Pods-SDWebImage iOS Demo.build/DerivedSources/Pods_SDWebImage_iOS_Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/libwebp-iOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SDWebImageWebPCoder-iOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/SDWebImageWebPCoder-macOS.build/DerivedSources/SDWebImageWebPCoder_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/libwebp-macOS.build/DerivedSources/libwebp_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/SDWebImage-Core-MapKit-macOS.build/DerivedSources/SDWebImage_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/Pods.build/Debug/Pods-SDWebImage OSX Demo.build/DerivedSources/Pods_SDWebImage_OSX_Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Tests.build/Debug-appletvsimulator/Tests TV.build/DerivedSources/Tests TV_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-appletvsimulator/SDWebImage TV Demo.build/DerivedSources/SDWebImage TV Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-watchsimulator/SDWebImage Watch Demo Extension.build/DerivedSources/SDWebImage Watch Demo Extension_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-maccatalyst/SDWebImage iOS Demo.build/DerivedSources/SDWebImage iOS Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug-iphonesimulator/SDWebImage iOS Demo.build/DerivedSources/SDWebImage iOS Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Intermediates.noindex/SDWebImage Demo.build/Debug/SDWebImage OSX Demo.build/DerivedSources/SDWebImage OSX Demo_vers.c:3 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/KVOController-tvOS/KVOController.framework/Headers/KVOController.h:4,9 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/KVOController-tvOS/KVOController.framework/Headers/FBKVOController.h:4,9,11,15,17,19,21,27,31,33,39,41,46,54,60,64,71,80,88,91,95,98,102,106,111,121,131,141,142,152,162,172,176,184,191,197,199 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/KVOController-tvOS/KVOController.framework/Headers/KVOController-tvOS-umbrella.h:12,16,19 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/KVOController-tvOS/KVOController.framework/Headers/NSObject+FBKVOController.h:4,9,11,13,15,18,23,30,39,41 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImage-Core-MapKit-tvOS-umbrella.h:12,73,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImage-Core-MapKit-tvOS/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/libwebp-tvOS-umbrella.h:12,20,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/libwebp-tvOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Pods_SDWebImage_TV_Demo.framework/Headers/Pods-SDWebImage TV Demo-umbrella.h:12,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/SDWebImageWebPCoder-tvOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+contain.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatcher.h:8,10,12,14,19 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/Expecta-tvOS-umbrella.h:12,52,55 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beGreaterThan.h:2,5 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+haveCountOf.h:2,9 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beGreaterThanOrEqualTo.h:2,5 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beTruthy.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPDefines.h:8,11,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+match.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+respondTo.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPBlockDefinedMatcher.h:8,12,18,19,24 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beSupersetOf.h:2,4 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beFalsy.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/Expecta.h:2,5,8,12 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/ExpectaObject.h:2,9,11,12,14,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+endWith.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPUnsupportedObject.h:2,5,6,8,10 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+raise.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatcherHelpers.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+postNotification.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beKindOf.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beLessThanOrEqualTo.h:2,5 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beSubclassOf.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beCloseTo.h:2,5 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beIdenticalTo.h:2,5 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPFloatTuple.h:2,6,7,10,12 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/NSValue+Expecta.h:2,4,6 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+conformTo.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beInstanceOf.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beginWith.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+raiseWithReason.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beNil.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/NSObject+Expecta.h:2,4,9 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/ExpectaSupport.h:3,7,10,13,18,22,27,31,36,51,52,62,71,73 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beInTheRangeOf.h:2,5 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+beLessThan.h:2,5 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPMatchers+equal.h:2 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPDoubleTuple.h:2,6,7,10,12 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Expecta-tvOS/Expecta.framework/Headers/EXPExpect.h:4,13,14,23,30,33,36,38,42 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-appletvsimulator/Pods_Tests_TV.framework/Headers/Pods-Tests TV-umbrella.h:12,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/Pods_SDWebImage_Watch_Demo_Extension.framework/Headers/Pods-SDWebImage Watch Demo Extension-umbrella.h:12,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDWebImage-Core-umbrella.h:12,72,75 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImage-Core/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/libwebp-watchOS/libwebp.framework/Headers/libwebp-watchOS-umbrella.h:12,20,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-watchsimulator/SDWebImageWebPCoder-watchOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/libwebp-iOS-umbrella.h:12,20,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/libwebp-iOS/libwebp.framework/Versions/A/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/Pods_SDWebImage_iOS_Demo.framework/Versions/A/Headers/Pods-SDWebImage iOS Demo-umbrella.h:12,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-maccatalyst/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Versions/A/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/libwebp-iOS-umbrella.h:12,20,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/libwebp-iOS/libwebp.framework/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/Pods_SDWebImage_iOS_Demo.framework/Headers/Pods-SDWebImage iOS Demo-umbrella.h:12,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImage-Core-MapKit-iOS-umbrella.h:12,73,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImage-Core-MapKit-iOS/SDWebImage.framework/Headers/UIImage+GIF.h:9,11,16,20,25 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug-iphonesimulator/SDWebImageWebPCoder-iOS/SDWebImageWebPCoder.framework/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/Pods_SDWebImage_OSX_Demo.framework/Versions/A/Headers/Pods-SDWebImage OSX Demo-umbrella.h:12,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDImageWebPCoder.h:8,14,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/SDWebImageWebPCoder.h:8,10,13 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImageWebPCoder-macOS/SDWebImageWebPCoder.framework/Versions/A/Headers/UIImage+WebP.h:8,14,17,21,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/format_constants.h:13,16,19,25,34,39,42,47,50,61,67,76,82,86 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/libwebp-macOS-umbrella.h:12,20,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/mux.h:14,17,19,23,25,49,62,71,81,96,98,102,105,108,115,116,121,124,127,139,140,143,148,166,181,194,197,205,212,227,246,264,276,279,289,301,312,315,333,348,364,375,393,410,416,418,422,440,443,447,455,456,460,473,474,496,508,518,523,525,527,529 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/types.h:13,16,18,38,48,51,55,60,63,65,67 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/demux.h:12,17,22,32,33,47,50,53,57,59,69,71,75,78,86,90,96,97,109,110,113,116,129,139,142,156,160,169,175,181,184,191,195,208,214,219,240,242,247,249,258,262,271,272,276,291,292,302,311,326,334,342,353,358,360,362 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/mux_types.h:13,16,19,23,30,38,41,48,55,63,68,69,70,77,78,79,90,92,93,95,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/encode.h:13,16,18,22,24,35,39,42,61,81,84,93,103,105,124,140,147,150,153,164,167,175,176,185,186,194,198,202,205,215,218,229,232,238,247,250,259,264,273,289,292,302,311,316,322,332,337,340,343,346,348,352,359,362,369,370,373,379,386,392,406,416,427,442,446,453,468,476,485,492,501,509,514,519,524,527,539,541,543,545 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/libwebp-macOS/libwebp.framework/Versions/A/Headers/decode.h:13,16,18,22,24,36,40,53,61,65,69,74,78,79,93,111,120,133,136,148,163,168,169,174,175,178,179,182,188,198,212,217,220,225,226,230,233,244,270,284,298,315,322,326,332,340,351,359,367,368,377,386,389,394,399,402,404,410,418,421,425,442,443,458,461,468,471,477,478,492,498,500,502 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDeviceHelper.h:8,11,14,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWeakProxy.h:8,11,14,16,19 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDWebImageTransitionInternal.h:8,10,12,14,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/NSBezierPath+SDRoundedCorners.h:8,10,12,14,16,21,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDFileAttributeHelper.h:7,9,12,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDInternalMacros.h:8,11,15,19,23,27,31,35,41,50,53,56,62,68,70,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAsyncBlockOperation.h:8,10,13,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDDisplayLink.h:8,11,15,20,22,25,28 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDAssociatedObject.h:8,10 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDmetamacros.h:8,11,12,19,25,31,39,48,55,66,73,83,93,102,105,110,117,124,131,140,149,156,159,162,170,177,186,192,202,206,229,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,530,552,573,577,599,620,643,666 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageIOAnimatedCoderInternal.h:8,11,19,21,27 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageCachesManagerOperation.h:8,11,14,16,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/UIColor+SDHexString.h:8,10,12,17 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/PrivateHeaders/SDImageAssetManager.h:8,11,15,17,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+ExtendedCacheData.h:9,12,14,23 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageRep.h:8,10,12,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDDiskCache.h:8,10,16,21,25,29,33,38,42,47,51,56,60,65,68,71,76,80,84,90,95,98,103,107,111,115,119,121,130,132,139,144 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageIOCoder.h:8,11,14,18,27,29 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSButton+WebCache.h:8,10,12,14,19,21,26,35,47,60,75,90,107,126,148,172,174,179,188,200,213,228,243,260,279,301,325,327,332,337,339 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageGraphics.h:8,11,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImageView+WebCache.h:8,11,16,18,20,22,24,26,29,30,35,38,39,42,47,56,68,81,96,111,128,147,169,193 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSData+ImageContentType.h:9,12,28,33,42,51,60 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageTransformer.h:8,11,14,20,30,34,38,42,46,49,55,57,59,65,70,73,75,79,84,91,98,105,110,113,115,120,125,130,133,135,140,145,148,150,155,160,165,168,170,175,180,186,189,191,193,198,203,206,208,210,215,220,223,225,231,236,239 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCachesManager.h:8,11,19,24,29,31,37,43,49,55,61,66,69,73,76,80 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageTransition.h:8,10,13,19,24,35,39,47,76,78,85,100,104,108,112,116,120,124,128,130 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageLoadersManager.h:8,10,15,20,25,28,32,35,39 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderOperation.h:8,12,23,28,31,33,36,42,44,45,50,55,60,65,71,78,87,92,97,112,129,143,152 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageFrame.h:8,11,17,26,29,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageGIFCoder.h:8,11,19,21 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCache.h:8,16,57,63,65,71,78,86,91,98,100,105,114,122,132,144,146,149,154,156,167,181,199,208,217,218,220,229,236,238,246,255,265,276,288,301,309,317,327,335,345,347,355,364,367,371,374,378,380,385,391,397,399,404,409,414,416,421 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderConfig.h:8,11,18,24,30,36,42,48,57,64,73,79,85,91,97 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheConfig.h:8,11,31,37,43,49,56,63,69,75,81,89,95,102,108,114,122,129,136 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheKeyFilter.h:8,11,13,19,21,23,28,31 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+MemoryCacheCost.h:8,10,15,19,26 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCacheDefine.h:8,13,37,44,48,56,63,68,79,83,96,99,111,114,122,125,133,136,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIButton+WebCache.h:8,10,12,14,19,21,26,33,44,58,73,90,107,126,147,171,197,199,204,211,222,236,251,268,285,304,324,347,372,374,379,384,386 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderRequestModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+Metadata.h:8,11,16,28,36,44,51,56 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImage.h:9,11,14,17,19,74,85 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOptionsProcessor.h:8,12,14,16,21,26,31,34,40,42,49,52,61,63,68,71 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCache.h:8,14,19,21,26,33,41,50,82,87,89,91,97,99,106,108 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIView+WebCacheOperation.h:8,11,17,25,33,40,47 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDefine.h:8,10,15,17,22,27,32,38,42,48,50,58,64,70,80,86,92,98,104,110,116,123,133,138,144,151,156,161,167,173,178,184,191,199,206,207,209,214,220,226,232,239,244,249,255,262,268,275,282,289,295,300,305,310,315 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/MKAnnotationView+WebCache.h:8,10,12,14,19,28,40,50,54,65,70,85,102,121,143,167,169 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCoder.h:8,12,16,24,30,37,46,47,59,65,74,81,89,97,105,110,115,119,126,128,135,140,144,153,155,163,167,172,176,181,184,189,193,198,200,206,211,215,219,225,232,240,245,247,253,259,265 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView+WebCache.h:8,10,12,14,19,28,40,53,68,83,100,119,141,165,167 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/NSImage+Compatibility.h:8,10,12,17,30,32,37,44,47,54,58,64,66 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageHEICCoder.h:8,11,22,24 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImageView.h:8,10,12,14,22,69,76,83,90,98 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImage.h:8,11,12,17,22,29,33,39,45,49,54,59,65,67,72,88,93,99,102,107,113 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImageView+HighlightedWebCache.h:8,10,12,14,19,28,39,52,67,84,104,126,128 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageIOAnimatedCoder.h:8,12,19,58 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageManager.h:8,17,19,21,26,31,36,41,43,44,46,51,53,63,73,75,85,93,95,99,104,109,114,121,136,150,156,161,167,171,176,182,187,193,199,204,210,240,258,263,269,274,280,286 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderDecryptor.h:8,11,13,19,25,27,32,36,40,42,45,48 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageOperation.h:8,10,13,15,17,20 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDGraphicsImageRenderer.h:8,10,19,27,30,34,38,44,47,50,52,55,60,66,72 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImage-Core-MapKit-macOS-umbrella.h:12,73,76 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageIndicator.h:8,10,12,18,22,26,31,36,40,44,46,48,55,61,63,68,83,85,87,94,100,102,107,112,114 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCacheSerializer.h:8,11,13,19,25,27,32,35 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageLoader.h:8,12,15,17,24,26,30,38,42,52,54,62,66,71,74,88,89,93,100 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloader.h:8,18,25,30,36,43,49,55,61,66,73,79,84,89,97,102,105,110,115,120,125,130,135,137,138,143,149,157,165,174,180,185,190,195,199,204,212,219,241,268,290,295,303,305,306,313 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+Transform.h:8,10,16,28,34,36,40,46,49,54,57,74,77,84,87,93,95,98,103,108,113,118,123,125,128,130,134,138,145 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDAnimatedImagePlayer.h:8,12,15,18,21,24,28,31,39,45,49,55,61,64,67,70,73,76,79,85,89 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageAWebPCoder.h:8,11,20,22 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+ForceDecode.h:8,10,15,20,23,28,31,36,39,45 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCoderHelper.h:8,12,17,22,27,32,37,43,47,50,55,60,65,69,75,79,85,92,96,102,108,112,117,120,126 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImagePrefetcher.h:8,11,13,18,23,28,30,35,37,47,55,57,60,65,71,76,81,86,93,98,103,108,118,136,141,142 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageDownloaderResponseModifier.h:8,11,13,19,24,26,31,35,39,41,46,51,56,61,68 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageAPNGCoder.h:8,11,16,18 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageError.h:9,11,13,16 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDWebImageCompat.h:9,11,15,23,31,37,43,49,50,79,83,87,94 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDMemoryCache.h:8,10,16,18,21,26,29,34,37,44,48,56,59,63,68,70,75,77 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+MultiFormat.h:8,11,19,24,27,33,36,43,47,52,55,60,63,69,72,79 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/SDImageCodersManager.h:8,11,17,24,33,38,43,46,50,53,57 ./DerivedData/tvOS/SDWebImage-fivkfvflmkbkrwdfwtlkzehzwlxm/Build/Products/Debug/SDWebImage-Core-MapKit-macOS/SDWebImage.framework/Versions/A/Headers/UIImage+GIF.h:9,11,16,20,25 <<<<<< EOF