wenweiwei 3 年之前
父节点
当前提交
8104672dd9

+ 2 - 0
BFCommonKit.podspec

@@ -41,6 +41,8 @@ TODO: Add long description of the pod here.
     bb.frameworks = 'UIKit', 'WebKit'
     bb.dependency 'Alamofire','4.9.1'
     bb.dependency 'SnapKit','5.0.1'
+    bb.dependency 'RealmSwift','10.7.6'
+    bb.dependency 'FDFullscreenPopGesture','1.1'
     bb.dependency 'BFCommonKit/BFUtility'
     bb.dependency 'BFCommonKit/BFConfig'
     bb.dependency 'BFCommonKit/BFCategorys'

+ 2 - 1
BFCommonKit/Classes/BFBase/Controller/PQBaseViewController.swift

@@ -9,6 +9,7 @@
 // import MediaPlayer
 import Alamofire
 import UIKit
+import FDFullscreenPopGesture
 open class PQBaseViewController: UIViewController, UIGestureRecognizerDelegate {
     // 侧滑拦截返回
     public var popGestureHandle: (() -> Void)?
@@ -60,7 +61,7 @@ open class PQBaseViewController: UIViewController, UIGestureRecognizerDelegate {
         UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
         automaticallyAdjustsScrollViewInsets = false
         navigationController?.interactivePopGestureRecognizer?.delegate = self
-//        fd_prefersNavigationBarHidden = true
+        fd_prefersNavigationBarHidden = true
     }
 
     public func hiddenNavigation() {

+ 101 - 13
BFCommonKit/Classes/BFBase/Controller/PQBaseWebViewController.swift

@@ -11,14 +11,24 @@ import UIKit
 import WebKit
 
 open class PQBaseWebViewController: PQBaseViewController {
-   public var emptyData: PQEmptyModel? = {
+    public var emptyData: PQEmptyModel? = {
         let emptyData = PQEmptyModel()
         emptyData.title = "网页加载失败,请重试~"
         emptyData.emptyImage = "pic_network"
         return emptyData
     }()
 
-    lazy public var webView: WKWebView = {
+    public lazy var emptyRemindView: PQEmptyRemindView = {
+        let emptyRemindView = PQEmptyRemindView(frame: CGRect(x: 0, y: cDevice_iPhoneNavBarAndStatusBarHei, width: cScreenWidth, height: cScreenHeigth - cDevice_iPhoneNavBarAndStatusBarHei))
+        emptyRemindView.isHidden = true
+        emptyRemindView.fullRefreshBloc = { [weak self] _, _ in
+            self?.refreshClick()
+        }
+        emptyRemindView.emptyData = emptyData
+        return emptyRemindView
+    }()
+
+    public lazy var webView: WKWebView = {
         let config: WKWebViewConfiguration = WKWebViewConfiguration()
         config.allowsInlineMediaPlayback = true
         let webView: WKWebView = WKWebView(frame: CGRect(x: 0, y: cDevice_iPhoneNavBarAndStatusBarHei, width: cScreenWidth, height: cScreenHeigth - cDevice_iPhoneNavBarAndStatusBarHei), configuration: config)
@@ -32,7 +42,7 @@ open class PQBaseWebViewController: PQBaseViewController {
         return webView
     }()
 
-    lazy public var progresslayer: CALayer = {
+    public lazy var progresslayer: CALayer = {
         let progresslayer = CALayer()
         progresslayer.frame = CGRect(x: 0, y: cDevice_iPhoneNavBarAndStatusBarHei, width: cScreenWidth * 0.1, height: 2)
         progresslayer.backgroundColor = UIColor.hexColor(hexadecimal: "#FF9500").cgColor
@@ -51,15 +61,54 @@ open class PQBaseWebViewController: PQBaseViewController {
         }
     }
 
+    @objc public var request: URLRequest? {
+        didSet {
+            if request != nil, request?.url != nil {
+                webView.load(request!)
+                // 添加属性监听
+                webView.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil)
+                isAddObserve = true
+                view.layer.addSublayer(progresslayer)
+            }
+        }
+    }
+
+    public var deleteBtn: UIButton = {
+        let deleteBtn = UIButton(type: .custom)
+        deleteBtn.frame = CGRect(x: 0, y: cDevice_iPhoneStatusBarHei, width: cDefaultMargin * 4, height: cDefaultMargin * 4)
+        deleteBtn.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: -5, right: 0)
+        deleteBtn.tintColor = UIColor.black
+        deleteBtn.setImage(UIImage(named: "upload_delete")?.withRenderingMode(.alwaysTemplate), for: .normal)
+        deleteBtn.addTarget(self, action: #selector(clickHandle), for: .touchUpInside)
+        deleteBtn.isHidden = true
+        return deleteBtn
+    }()
+
     @objc public var baseTitle: String?
+    public var isShowDelete: Bool = false {
+        didSet {
+            deleteBtn.isHidden = !isShowDelete
+        }
+    }
+
     public var evaluateJavaScript: String? // 交互
-    var isAddObserve: Bool = false
+    public var isAddObserve: Bool = false
+
     override open func viewDidLoad() {
         super.viewDidLoad()
         // Do any additional setup after loading the view.
         view.addSubview(webView)
+        view.addSubview(emptyRemindView)
         leftButton(image: "icon_blanc_back")
+        backButton?.tintColor = UIColor.black
+        backButton?.setImage(UIImage(named: "icon_blanc_back")?.withRenderingMode(.alwaysTemplate), for: .normal)
         navHeadImageView?.backgroundColor = UIColor.white
+        navHeadImageView?.addSubview(deleteBtn)
+        deleteBtn.frame.origin.x = (backButton?.frame.maxX ?? 0)
+        // 拦截侧滑返回
+//        disablePopGesture().popGestureHandle = { [weak self] in
+//            self?.back()
+//        }
     }
 
     override public func viewWillAppear(_ animated: Bool) {
@@ -76,6 +125,10 @@ open class PQBaseWebViewController: PQBaseViewController {
         }
     }
 
+    override open func backBtnClick() {
+        back()
+    }
+
     deinit {
         if isAddObserve {
             webView.removeObserver(self, forKeyPath: "estimatedProgress")
@@ -84,13 +137,23 @@ open class PQBaseWebViewController: PQBaseViewController {
 }
 
 extension PQBaseWebViewController: WKNavigationDelegate {
-   public func refreshClick() {
+    public func refreshClick() {
         if baseUrl != nil, baseUrl?.count ?? 0 > 0 {
             webView.load(URLRequest(url: NSURL(string: baseUrl ?? "")! as URL, cachePolicy: .useProtocolCachePolicy))
+        } else if request != nil, request?.url != nil {
+            webView.load(request!)
+        }
+    }
+
+    @objc public func clickHandle() {
+        if navigationController != nil {
+            navigationController?.popViewController(animated: true)
+        } else {
+            dismiss(animated: true, completion: nil)
         }
     }
 
-    @objc public func back() {
+    @objc open func back() {
         if webView.canGoBack {
             webView.goBack()
         } else if navigationController != nil {
@@ -130,19 +193,30 @@ extension PQBaseWebViewController: WKNavigationDelegate {
             webView.evaluateJavaScript(evaluateJavaScript!) { _, _ in
             }
         }
+        if !emptyRemindView.isHidden {
+            emptyRemindView.isHidden = true
+        }
     }
 
     public func webView(_ webView: WKWebView, didFail _: WKNavigation!, withError error: Error) {
-        BFLog(message: error)
+        BFLog(message: "webView回调-didFailProvisionalNavigation -error:\(error)")
         if baseTitle == nil || baseTitle?.count ?? 0 <= 0 {
             webView.evaluateJavaScript("document.title") { [weak self] (any, _) -> Void in
                 self?.setTitle(title: any as? String)
                 self?.baseTitle = any as? String
             }
         }
+        if emptyRemindView.isHidden {
+            emptyRemindView.isHidden = false
+        }
     }
 
-    public func webView(_: WKWebView, didFailProvisionalNavigation _: WKNavigation!, withError _: Error) {}
+    public func webView(_: WKWebView, didFailProvisionalNavigation _: WKNavigation!, withError error: Error) {
+        BFLog(message: "webView回调-didFailProvisionalNavigation -error:\(error)")
+//        if emptyRemindView.isHidden {
+//            emptyRemindView.isHidden = false
+//        }
+    }
 
     public func webView(_: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
         BFLog(message: "navigationResponse:\(String(describing: navigationResponse))")
@@ -161,18 +235,32 @@ extension PQBaseWebViewController: WKNavigationDelegate {
         BFLog(message: "\(String(describing: navigation))")
     }
 
-//    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
-//        let url : String = navigationAction.request.url?.absoluteString ?? "";
-//        if(url.count == 0 || url == "about:blank"){
+    public func webView(_: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
+        let urlString: String = navigationAction.request.url?.absoluteString ?? ""
+        let url: URL? = URL(string: urlString)
+//        if urlString.count == 0 || urlString == "about:blank" {
 //            decisionHandler(.cancel)
 //            return
 //        }
+        if urlString.hasPrefix("weixin://"), url != nil {
+            let canOpenUrl = UIApplication.shared.canOpenURL(url!)
+            if canOpenUrl {
+                UIApplication.shared.open(url!, options: [:], completionHandler: nil)
+                decisionHandler(.allow)
+            } else {
+                decisionHandler(.cancel)
+            }
+        } else {
+            decisionHandler(.allow)
+        }
+
 //        let vc = PQBaseWebViewController.init()
 //        vc.baseUrl = url
 //        navigationController?.pushViewController(vc, animated: true)
-//        BFLog(message: "decidePolicyFor \(String(describing: navigationAction))")
+//        PQLog(message: "decidePolicyFor \(String(describing: navigationAction))")
 //        decisionHandler(.allow)
-//    }
+    }
+
     override public var preferredStatusBarStyle: UIStatusBarStyle {
         if #available(iOS 13.0, *) {
             return .darkContent

+ 9 - 2
BFCommonKit/Classes/BFBase/Model/PQBaseModel.swift

@@ -7,8 +7,9 @@
 //
 
 import UIKit
+import RealmSwift
 
-open class PQBaseModel: NSObject {
+open class PQBaseModel: Object {
     @objc dynamic public var uniqueId: String? // 唯一ID
     @objc dynamic public var videoId: Int = 0 // 视频ID
     @objc dynamic public var eventId: String? // 事件ID
@@ -26,12 +27,18 @@ open class PQBaseModel: NSObject {
     @objc dynamic public var date: Int = 0 // 当前时间戳  CGFloat(Date.init().timeIntervalSince1970) * 1000
     @objc dynamic public var itemWidth: Float = 0 // cell宽
     @objc dynamic public var primaryKeys: String? // 区分存储唯一值
+    override class public func primaryKey() -> String? {
+        return "uniqueId"
+    }
 
     public override required  init() {
         super.init()
         uniqueId = getUniqueId(desc: "uniqueId")
     }
 
+    override class open func ignoredProperties() -> [String] {
+        return ["attributedTitle"]
+    }
 
     @objc func toString() -> String {
         var json: [String: Any] = [
@@ -109,7 +116,7 @@ open class PQBaseModel: NSObject {
 /// 当前应用本地存储的model
 public  class PQLocalStoreModel: PQBaseModel {
     @objc dynamic public var currentDate: String?
-    @objc required init() {
+    @objc required public init() {
         super.init()
         currentDate = systemCurrentDate()
     }

+ 1 - 1
BFCommonKit/Classes/BFBase/View/PQLoadingHUB.swift

@@ -24,7 +24,7 @@ public class PQLoadingHUBView: UIView {
         super.init(frame: frame)
         addSubview(loadingImage)
         isUserInteractionEnabled = false
-        let data = try? Data(contentsOf: URL(fileURLWithPath: Bundle().BF_mainbundle().path(forResource: "stuckPoint_music_loading", ofType: ".gif")!))
+        let data = try? Data(contentsOf: URL(fileURLWithPath: Bundle.current(moduleName: "BFCommonKit")?.path(forResource: "stuckPoint_music_loading", ofType: ".gif") ?? ""))
         if data != nil {
             PQPHAssetVideoParaseUtil.parasGIFImage(data: data!, isRenderingColor: UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)) { [weak self] _, images, duration in
                 self?.gifImages = images

+ 1 - 0
BFCommonKit/Classes/BFBase/View/PQRemindView.swift

@@ -258,6 +258,7 @@ open class PQEmptyRemindView: UIView {
         super.init(frame: frame)
         addSubview(imageView)
 //        addSubview(shimmeringView)
+        addSubview(remindLab)
         addSubview(remindSubLab)
         addSubview(refreshBtn)
         let ges = UITapGestureRecognizer(target: self, action: #selector(fullRefresh))

+ 0 - 36
BFCommonKit/Classes/BFCategorys/BFUIView+Ext.swift

@@ -294,42 +294,6 @@ public extension UITabBar {
             }
         }
     }
-
-    /// 展示创作视频引导
-    /// - Parameter index: <#index description#>
-    /// - Returns: <#description#>
-//    func showVideoMakeRemindView() {
-//        let isOldUploadClick: String? = getUserDefaults(key: cIsUploadClick) as? String
-//        let isUploadClick: String? = getUserDefaultsForJson(key: cIsUploadClick) as? String
-//        let isVerticalSlip: String? = getUserDefaults(key: cIsVerticalSlip) as? String
-//        if isOldUploadClick == nil && isVerticalSlip != nil && isVerticalSlip == "1", isUploadClick == nil || isUploadClick?.count ?? 0 <= 0 || isUploadClick != "2" {
-//            let width: CGFloat = 275 // 275
-//            let height: CGFloat = 107 // 107
-//            let videoMakeRemindBtn = UIButton(frame: CGRect(x: 0, y: -height + 5, width: width, height: height))
-//            videoMakeRemindBtn.tag = cVideoMakeRemindTag
-//            videoMakeRemindBtn.setBackgroundImage(UIImage(named: "videomk_guide"), for: .normal)
-//            addSubview(videoMakeRemindBtn)
-//            videoMakeRemindBtn.center.x = center.x
-//            videoMakeRemindBtn.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
-//            videoMakeRemindBtn.addScaleBasicAnimation()
-//            if isUploadClick == "1" {
-//                saveUserDefaultsToJson(key: cIsUploadClick, value: "2")
-//            } else {
-//                saveUserDefaultsToJson(key: cIsUploadClick, value: "1")
-//            }
-//            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) { [weak self] in
-//                self?.removeVideoMakeRemindView()
-//            }
-//        }
-//    }
-
-    @objc func dismiss() {}
-
-    /// 移除创作视频引导
-    /// - Returns: <#description#>
-//    func removeVideoMakeRemindView() {
-//        viewWithTag(cVideoMakeRemindTag)?.removeFromSuperview()
-//    }
 }
 
 // MARK: - UILabel的分类扩展

+ 33 - 0
BFCommonKit/Classes/BFCategorys/UserDefaults+Ext.swift

@@ -0,0 +1,33 @@
+//
+//  UserDefaults+Ext.swift
+//  PQSpeed
+//
+//  Created by SanW on 2021/6/1.
+//  Copyright © 2021 BytesFlow. All rights reserved.
+//
+
+import Foundation
+
+extension UserDefaults {
+    func save<T: Encodable>(customObject object: T, inKey key: String) {
+        let encoder = JSONEncoder()
+        if let encoded = try? encoder.encode(object) {
+            set(encoded, forKey: key)
+        }
+    }
+
+    func retrieve<T: Decodable>(object type: T.Type, fromKey key: String) -> T? {
+        if let data = self.data(forKey: key) {
+            let decoder = JSONDecoder()
+            if let object = try? decoder.decode(type, from: data) {
+                return object
+            } else {
+                print("Couldnt decode object")
+                return nil
+            }
+        } else {
+            print("Couldnt find key")
+            return nil
+        }
+    }
+}

+ 3 - 0
BFCommonKit/Classes/BFEnums/Enums.swift

@@ -279,6 +279,9 @@ public  enum  businessType: String {
     case bt_videoRealPlay = "videoRealPlay" // 视频播放到20s或播放到总时长30%,哪个先到为准
     case bt_videoPlaySuccess = "videoPlaySuccess" // 视频缓冲完成开始播放
     case bt_videoPlayEnd = "videoPlayEnd" // 视频播放到总时长100%
+    case bt_videoPlayCancel = "videoPlayCancel" // 视频播放取消
+    case bt_videoPlayDecoder = "videoPlayDecoder" // 视频解码器启动
+    case bt_videoPlayDecoderError = "videoPlayDecoderError" // 视频解码失败
     case bt_videoFavorite = "videoFavorite" // 视频喜欢的上报
     case bt_videoEnterUser = "videoEnterUserHomepage" // 在视频页点击 Up 主头像进入个人主页
     case bt_videoSwipeRight = "videoSwipeRight" // 右滑查看视频的相关推荐

+ 22 - 0
BFCommonKit/Classes/BFUtility/PQCommonMethodUtil.swift

@@ -792,3 +792,25 @@ public func zipImage(image: UIImage?, size: Int) -> Data? {
     }
     return data
 }
+
+/// 获取开屏广告图
+/// - Returns: <#description#>
+public func getLaunchImage() -> UIImage {
+    var lauchImg: UIImage!
+    var viewOrientation: String!
+    let viewSize = UIScreen.main.bounds.size
+    let orientation = UIApplication.shared.statusBarOrientation
+    if orientation == .landscapeLeft || orientation == .landscapeRight {
+        viewOrientation = "Landscape"
+    } else {
+        viewOrientation = "Portrait"
+    }
+    let imgsInfoArray = Bundle.main.infoDictionary!["UILaunchImages"]
+    for dict: [String: String] in imgsInfoArray as! Array {
+        let imageSize = NSCoder.cgSize(for: dict["UILaunchImageSize"]!)
+        if __CGSizeEqualToSize(imageSize, viewSize), viewOrientation == dict["UILaunchImageOrientation"]! as String {
+            lauchImg = UIImage(named: dict["UILaunchImageName"]!)
+        }
+    }
+    return lauchImg
+}

+ 1 - 1
BFCommonKit/Classes/BFUtility/SWNetRequest.swift

@@ -19,7 +19,7 @@ public struct PQError: Error {
     public var msg: String? // 提示信息
     public var code: Int // 错误吗
 
-    init(msg: String?, code: Int = 0) {
+    public init(msg: String?, code: Int = 0) {
         self.msg = msg
         self.code = code
     }

+ 134 - 138
Example/Pods/Pods.xcodeproj/project.pbxproj

@@ -74,6 +74,7 @@
 		2CDD2B19FE78A369B202BB30D82D3096 /* common_sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = 3331042805ED80788113B15E704EAD85 /* common_sse2.h */; settings = {ATTRIBUTES = (Project, ); }; };
 		2CE6AA6523EF589568E325F896898C14 /* webp_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = F04D9AE27BC4F5198EEA961F4C6F87F1 /* webp_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; };
 		2CFD11B0A1CE01EBC107D2F32CE700A6 /* vp8_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 551C0D4E19C982393A18932D4CC0059E /* vp8_dec.h */; settings = {ATTRIBUTES = (Project, ); }; };
+		2D16DA4926930ADC00BE4A62 /* UserDefaults+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D16DA4826930ADC00BE4A62 /* UserDefaults+Ext.swift */; };
 		2DF395AF708FB1DE0BAC368578660F80 /* lossless.c in Sources */ = {isa = PBXBuildFile; fileRef = B90E23FDC83F41C079C08610913F29FA /* lossless.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; };
 		2E84AD24F0FB9F75CEEFC03150B6E9BB /* vp8_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7B27A62466E098FA5DDB9ABA9BB1F3B9 /* vp8_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; };
 		2EC69A69CF94132796D0CD3432EF18C7 /* icon_detail_back@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A8B9E0398686D5ECED626F38D2E14AB7 /* icon_detail_back@3x.png */; };
@@ -510,11 +511,11 @@
 
 /* Begin PBXFileReference section */
 		00D4A96530EB7462B76A9FC34421F3AB /* PQBaseViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQBaseViewController.swift; sourceTree = "<group>"; };
-		015AE488498B66C289F780368AA4A5EC /* lossless_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_msa.c; path = src/dsp/lossless_msa.c; sourceTree = "<group>"; };
+		015AE488498B66C289F780368AA4A5EC /* lossless_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_msa.c; path = src/dsp/lossless_msa.c; sourceTree = "<group>"; };
 		02BEC546BF44DBB65639322B0E8747AF /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = "<group>"; };
 		03B20BE7FFC31D17EC8BF148DF87B7E4 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = "<group>"; };
 		04DC641FC17D1BF075AC986316471B36 /* types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = types.h; path = src/webp/types.h; sourceTree = "<group>"; };
-		04E582908CD7C9F3C0A1E125F58CA43B /* rescaler.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler.c; path = src/dsp/rescaler.c; sourceTree = "<group>"; };
+		04E582908CD7C9F3C0A1E125F58CA43B /* rescaler.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = rescaler.c; path = src/dsp/rescaler.c; sourceTree = "<group>"; };
 		0662BF6A305112F06BE99CEDE3E26751 /* RedirectHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RedirectHandler.swift; path = Sources/Networking/RedirectHandler.swift; sourceTree = "<group>"; };
 		069096ED3783E0E69C53C0264B43C093 /* alphai_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = alphai_dec.h; path = src/dec/alphai_dec.h; sourceTree = "<group>"; };
 		078074E54CF2817B30147A8239E0D7D5 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = "<group>"; };
@@ -529,17 +530,17 @@
 		1238DBC39599BA6A3673271BD3A6CDA8 /* String+MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+MD5.swift"; path = "Sources/Utility/String+MD5.swift"; sourceTree = "<group>"; };
 		124B414598526CAF570DF9F7E8EBC698 /* BFColor+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BFColor+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/BFColor+Ext.swift"; sourceTree = "<group>"; };
 		125E8F85151D68919B9C17F952D2FABA /* Pods-BFCommonKit_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BFCommonKit_Example-acknowledgements.markdown"; sourceTree = "<group>"; };
-		12D0160CEBCEDB191D9B03274472EA92 /* yuv_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_mips_dsp_r2.c; path = src/dsp/yuv_mips_dsp_r2.c; sourceTree = "<group>"; };
-		12DC1799D4335387C8A98CB0A7723F23 /* iterator_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = iterator_enc.c; path = src/enc/iterator_enc.c; sourceTree = "<group>"; };
+		12D0160CEBCEDB191D9B03274472EA92 /* yuv_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = yuv_mips_dsp_r2.c; path = src/dsp/yuv_mips_dsp_r2.c; sourceTree = "<group>"; };
+		12DC1799D4335387C8A98CB0A7723F23 /* iterator_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = iterator_enc.c; path = src/enc/iterator_enc.c; sourceTree = "<group>"; };
 		1329481FF2C598C5B7112286EC012769 /* KingfisherWebP-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KingfisherWebP-prefix.pch"; sourceTree = "<group>"; };
 		18F5B47C9ABF730E06F7BD99233703D5 /* ConstraintDirectionalInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsetTarget.swift; path = Source/ConstraintDirectionalInsetTarget.swift; sourceTree = "<group>"; };
-		1A76CA25262523DEC047933069318BBB /* lossless_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_sse2.c; path = src/dsp/lossless_sse2.c; sourceTree = "<group>"; };
-		1ADB1057EF9EBF9A7F313FD6A78BBB97 /* rescaler_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_mips_dsp_r2.c; path = src/dsp/rescaler_mips_dsp_r2.c; sourceTree = "<group>"; };
-		1B20049DD912716327C20EB86FE827EE /* yuv_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_neon.c; path = src/dsp/yuv_neon.c; sourceTree = "<group>"; };
+		1A76CA25262523DEC047933069318BBB /* lossless_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_sse2.c; path = src/dsp/lossless_sse2.c; sourceTree = "<group>"; };
+		1ADB1057EF9EBF9A7F313FD6A78BBB97 /* rescaler_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = rescaler_mips_dsp_r2.c; path = src/dsp/rescaler_mips_dsp_r2.c; sourceTree = "<group>"; };
+		1B20049DD912716327C20EB86FE827EE /* yuv_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = yuv_neon.c; path = src/dsp/yuv_neon.c; sourceTree = "<group>"; };
 		1B95CA1355189327F9624DE4DD9FD4BD /* lossless.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lossless.h; path = src/dsp/lossless.h; sourceTree = "<group>"; };
 		1BE11C33A061478437EF8BD9CFAED460 /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = "<group>"; };
 		1BFB4497909B4D8C7437CB0118D866F8 /* ConstraintDirectionalInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDirectionalInsets.swift; path = Source/ConstraintDirectionalInsets.swift; sourceTree = "<group>"; };
-		1C1F88200BDB8B2E570CACCAC4525709 /* ssim_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = ssim_sse2.c; path = src/dsp/ssim_sse2.c; sourceTree = "<group>"; };
+		1C1F88200BDB8B2E570CACCAC4525709 /* ssim_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = ssim_sse2.c; path = src/dsp/ssim_sse2.c; sourceTree = "<group>"; };
 		1C85C4396F541A03870D539A8A53357D /* NXDeviceManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NXDeviceManager.swift; path = BFCommonKit/Classes/BFDebug/NXDeviceManager.swift; sourceTree = "<group>"; };
 		1D12E6F8B6EAFB53859252A260BE7812 /* ImageCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCache.swift; path = Sources/Cache/ImageCache.swift; sourceTree = "<group>"; };
 		1D2D70E9A66EE49BC92D3BCDF61E3363 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -550,79 +551,80 @@
 		1F88F90659E7628F40D3A2944B3C4D41 /* SnapKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.debug.xcconfig; sourceTree = "<group>"; };
 		2017B018DB65FDC6A11A530D6A50FA00 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/AdSupport.framework; sourceTree = DEVELOPER_DIR; };
 		2020DA434ACE85625B626FB827BD3E3A /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = "<group>"; };
-		205D09068FB887431E4C2408E8EE74E9 /* huffman_encode_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = huffman_encode_utils.c; path = src/utils/huffman_encode_utils.c; sourceTree = "<group>"; };
-		2094BB367B5F85B87FB05E017F3E211C /* enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_mips_dsp_r2.c; path = src/dsp/enc_mips_dsp_r2.c; sourceTree = "<group>"; };
+		205D09068FB887431E4C2408E8EE74E9 /* huffman_encode_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = huffman_encode_utils.c; path = src/utils/huffman_encode_utils.c; sourceTree = "<group>"; };
+		2094BB367B5F85B87FB05E017F3E211C /* enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = enc_mips_dsp_r2.c; path = src/dsp/enc_mips_dsp_r2.c; sourceTree = "<group>"; };
 		20B095EFD633B07E9CBB2B1DE193DFA4 /* NXFundation+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NXFundation+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/NXFundation+Ext.swift"; sourceTree = "<group>"; };
 		20FE22E3810A05E100BE4D768B8C954B /* vp8i_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8i_enc.h; path = src/enc/vp8i_enc.h; sourceTree = "<group>"; };
 		21AF50CEB4A491624A648375442B4EA9 /* ImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProvider.swift; path = Sources/General/ImageSource/ImageDataProvider.swift; sourceTree = "<group>"; };
 		22E186486C24A324268A510B54A2D605 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = "<group>"; };
-		22FE5B9A30D579898C35AC6181C3F562 /* lossless_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_mips_dsp_r2.c; path = src/dsp/lossless_mips_dsp_r2.c; sourceTree = "<group>"; };
-		2498B71E6EA021642BE94BC3D830E0B1 /* upsampling_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_sse2.c; path = src/dsp/upsampling_sse2.c; sourceTree = "<group>"; };
-		24D10ABAAA3689836F3A7F80A093C76B /* yuv_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_sse2.c; path = src/dsp/yuv_sse2.c; sourceTree = "<group>"; };
+		22FE5B9A30D579898C35AC6181C3F562 /* lossless_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_mips_dsp_r2.c; path = src/dsp/lossless_mips_dsp_r2.c; sourceTree = "<group>"; };
+		2498B71E6EA021642BE94BC3D830E0B1 /* upsampling_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = upsampling_sse2.c; path = src/dsp/upsampling_sse2.c; sourceTree = "<group>"; };
+		24D10ABAAA3689836F3A7F80A093C76B /* yuv_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = yuv_sse2.c; path = src/dsp/yuv_sse2.c; sourceTree = "<group>"; };
 		258A5878B732C6244E9BB4D9DD7A3A6C /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = "<group>"; };
 		25950310A7322370CAF786BAF1D68DCB /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/Cache/FormatIndicatedCacheSerializer.swift; sourceTree = "<group>"; };
 		2660A84417EC514E507A5D5192AD1D1D /* BFCommonKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BFCommonKit-dummy.m"; sourceTree = "<group>"; };
-		268F39A8FA81B18C53379202AA851693 /* dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec.c; path = src/dsp/dec.c; sourceTree = "<group>"; };
+		268F39A8FA81B18C53379202AA851693 /* dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec.c; path = src/dsp/dec.c; sourceTree = "<group>"; };
 		279183A7659B486D72E82F3C2E170A39 /* CGImage+WebP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CGImage+WebP.m"; path = "Sources/CGImage+WebP.m"; sourceTree = "<group>"; };
 		28BE9AFA7617C0B3EF39BED7E71D5967 /* bit_reader_inl_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_reader_inl_utils.h; path = src/utils/bit_reader_inl_utils.h; sourceTree = "<group>"; };
 		2993B822005B8E586EDCEDDE90F8385C /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/MessageUI.framework; sourceTree = DEVELOPER_DIR; };
 		2A9C38D1465D7E17ACD24C603671255F /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = "<group>"; };
 		2AB833BB09CFC4F279C37331713D2FF3 /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = "<group>"; };
-		2B0A60A76F857EAA73EFCE07F4712917 /* alpha_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_enc.c; path = src/enc/alpha_enc.c; sourceTree = "<group>"; };
+		2B0A60A76F857EAA73EFCE07F4712917 /* alpha_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = alpha_enc.c; path = src/enc/alpha_enc.c; sourceTree = "<group>"; };
 		2B55BF580D262CB776C369205D26F9FC /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = "<group>"; };
 		2B60F4810EB7B3A571CB0128FB4CD543 /* BFUIView+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BFUIView+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/BFUIView+Ext.swift"; sourceTree = "<group>"; };
 		2B773AF2F65C22AC2E82DB4EEB447357 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = "<group>"; };
-		2CA76360CBFA75A3D6E1EC362773AFD2 /* dec_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_msa.c; path = src/dsp/dec_msa.c; sourceTree = "<group>"; };
-		2CFB4D05A462B9C1235E0D5009E6D51D /* backward_references_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = backward_references_enc.c; path = src/enc/backward_references_enc.c; sourceTree = "<group>"; };
+		2CA76360CBFA75A3D6E1EC362773AFD2 /* dec_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec_msa.c; path = src/dsp/dec_msa.c; sourceTree = "<group>"; };
+		2CFB4D05A462B9C1235E0D5009E6D51D /* backward_references_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = backward_references_enc.c; path = src/enc/backward_references_enc.c; sourceTree = "<group>"; };
+		2D16DA4826930ADC00BE4A62 /* UserDefaults+Ext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UserDefaults+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/UserDefaults+Ext.swift"; sourceTree = "<group>"; };
 		2D18A588917DE4A3824CA3ABEF05DDFA /* mux_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mux_types.h; path = src/webp/mux_types.h; sourceTree = "<group>"; };
-		2F43195FF594854D310708DB431FF28E /* yuv.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv.c; path = src/dsp/yuv.c; sourceTree = "<group>"; };
-		2FC7D0890A2DCAA85AFA92E9014FBB85 /* KingfisherWebP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = KingfisherWebP.framework; path = KingfisherWebP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		3010DCD35C6C0C563D606649B298D238 /* histogram_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = histogram_enc.c; path = src/enc/histogram_enc.c; sourceTree = "<group>"; };
+		2F43195FF594854D310708DB431FF28E /* yuv.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = yuv.c; path = src/dsp/yuv.c; sourceTree = "<group>"; };
+		2FC7D0890A2DCAA85AFA92E9014FBB85 /* KingfisherWebP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KingfisherWebP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		3010DCD35C6C0C563D606649B298D238 /* histogram_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = histogram_enc.c; path = src/enc/histogram_enc.c; sourceTree = "<group>"; };
 		303401770B82C8030DDCF8611643FE77 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = "<group>"; };
 		31CEBB5EA2863C79530D956AA74B5D98 /* ImageProgressive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProgressive.swift; path = Sources/Image/ImageProgressive.swift; sourceTree = "<group>"; };
 		31E2020CDC9CC21519CA16BA35925E00 /* format_constants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = format_constants.h; path = src/webp/format_constants.h; sourceTree = "<group>"; };
 		323A0D98B0A9C5D6F889808BBE072C50 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = "<group>"; };
-		326B8C8E4BD90E80523DEFBDE064F376 /* near_lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = near_lossless_enc.c; path = src/enc/near_lossless_enc.c; sourceTree = "<group>"; };
+		326B8C8E4BD90E80523DEFBDE064F376 /* near_lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = near_lossless_enc.c; path = src/enc/near_lossless_enc.c; sourceTree = "<group>"; };
 		3331042805ED80788113B15E704EAD85 /* common_sse2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_sse2.h; path = src/dsp/common_sse2.h; sourceTree = "<group>"; };
 		3344E74C9C0297339A3B2868F3620F36 /* WebPSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPSerializer.swift; path = Sources/WebPSerializer.swift; sourceTree = "<group>"; };
-		33739A281CF33C0BF0E93857A6367E97 /* BFCommonKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BFCommonKit.framework; path = BFCommonKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		3391C44F276D5FE10D9082980E384B80 /* yuv_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_mips32.c; path = src/dsp/yuv_mips32.c; sourceTree = "<group>"; };
+		33739A281CF33C0BF0E93857A6367E97 /* BFCommonKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BFCommonKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		3391C44F276D5FE10D9082980E384B80 /* yuv_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = yuv_mips32.c; path = src/dsp/yuv_mips32.c; sourceTree = "<group>"; };
 		33F3B0609C0909EF019AE055B4EA38BA /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = "<group>"; };
 		342A4063C2139DE12ADE3D496F15E134 /* libwebp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = libwebp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		353DAAE8898B95953F8FDDDE0C28B74D /* libwebp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libwebp-umbrella.h"; sourceTree = "<group>"; };
 		3740AF3191B645B52DAEE1FD7CC9A6E1 /* BFString+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BFString+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/BFString+Ext.swift"; sourceTree = "<group>"; };
-		3772517AA6CE576D78D5D944FA85004B /* filters.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters.c; path = src/dsp/filters.c; sourceTree = "<group>"; };
+		3772517AA6CE576D78D5D944FA85004B /* filters.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = filters.c; path = src/dsp/filters.c; sourceTree = "<group>"; };
 		3B625EF67580109F595C84980D08F111 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = "<group>"; };
 		3C102BA833BED66F65CA136115F710F6 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = "<group>"; };
 		3C9FF4905F83593CEECB410B24C0A6A9 /* TVMonogramView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TVMonogramView+Kingfisher.swift"; path = "Sources/Extensions/TVMonogramView+Kingfisher.swift"; sourceTree = "<group>"; };
 		3E1A0C4574AC314BFC2405D273ADE21C /* DiskStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DiskStorage.swift; path = Sources/Cache/DiskStorage.swift; sourceTree = "<group>"; };
-		3E268EEC93D79D355B063F9029580098 /* enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc.c; path = src/dsp/enc.c; sourceTree = "<group>"; };
+		3E268EEC93D79D355B063F9029580098 /* enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = enc.c; path = src/dsp/enc.c; sourceTree = "<group>"; };
 		3E56CCF2004C6CFA88B6C8507E987FD2 /* Pods-BFCommonKit_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BFCommonKit_Tests-acknowledgements.plist"; sourceTree = "<group>"; };
 		3EA70397C5FF51F22AB69D6A842B66AD /* rescaler_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = rescaler_utils.h; path = src/utils/rescaler_utils.h; sourceTree = "<group>"; };
 		3EE8CA3DD695CE4534EE17CC1B6A3A94 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = "<group>"; };
 		3F1AC82D650500699C8AFD055107CDBF /* libwebp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = libwebp.modulemap; sourceTree = "<group>"; };
 		401D8DC4F40746DDA0B62562E7A6DC5D /* Toast-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Toast-Swift-dummy.m"; sourceTree = "<group>"; };
 		4062E9BE26C3CFD48C4D08E0F2D2D9BB /* KF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KF.swift; path = Sources/General/KF.swift; sourceTree = "<group>"; };
-		407C7D89452C0C24F097A5C49AC67F4C /* vp8l_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8l_enc.c; path = src/enc/vp8l_enc.c; sourceTree = "<group>"; };
-		41504B441364E427AAE57588040355C1 /* BFCommonKit.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = BFCommonKit.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+		407C7D89452C0C24F097A5C49AC67F4C /* vp8l_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = vp8l_enc.c; path = src/enc/vp8l_enc.c; sourceTree = "<group>"; };
+		41504B441364E427AAE57588040355C1 /* BFCommonKit.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = BFCommonKit.podspec; sourceTree = "<group>"; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
 		41D998CCCE9577D38DE5B7A8246F3350 /* PQBFConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PQBFConfig.swift; path = BFCommonKit/Classes/BFConfig/PQBFConfig.swift; sourceTree = "<group>"; };
 		41E83C4E1EFD063C10240D498E683B48 /* icon_detail_back@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "icon_detail_back@2x.png"; path = "BFCommonKit/Assets/Resources/icon_detail_back@2x.png"; sourceTree = "<group>"; };
 		41FD740E5D9C4699F0F91E9C2300B8A8 /* ExtensionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExtensionHelpers.swift; path = Sources/Utility/ExtensionHelpers.swift; sourceTree = "<group>"; };
-		422F459B6CA0F28CFAF664AC2D73CE95 /* lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc.c; path = src/dsp/lossless_enc.c; sourceTree = "<group>"; };
-		4389294CF47B624A8C0E3E6DF7C33138 /* muxread.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxread.c; path = src/mux/muxread.c; sourceTree = "<group>"; };
+		422F459B6CA0F28CFAF664AC2D73CE95 /* lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_enc.c; path = src/dsp/lossless_enc.c; sourceTree = "<group>"; };
+		4389294CF47B624A8C0E3E6DF7C33138 /* muxread.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = muxread.c; path = src/mux/muxread.c; sourceTree = "<group>"; };
 		440AC2ED417CF7B3E8282FA665A1948F /* huffman_encode_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = huffman_encode_utils.h; path = src/utils/huffman_encode_utils.h; sourceTree = "<group>"; };
-		447E5B294F1C036002B529298094904E /* dec_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_neon.c; path = src/dsp/dec_neon.c; sourceTree = "<group>"; };
+		447E5B294F1C036002B529298094904E /* dec_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec_neon.c; path = src/dsp/dec_neon.c; sourceTree = "<group>"; };
 		45BBB8E8568FE9EEE1F61A57E46B8859 /* ImageDrawing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDrawing.swift; path = Sources/Image/ImageDrawing.swift; sourceTree = "<group>"; };
 		45F765571573AEAE9823D3241441A39F /* encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = encode.h; path = src/webp/encode.h; sourceTree = "<group>"; };
-		464F7818E3408B0ED45920E1F592D4A7 /* filters_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_sse2.c; path = src/dsp/filters_sse2.c; sourceTree = "<group>"; };
+		464F7818E3408B0ED45920E1F592D4A7 /* filters_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = filters_sse2.c; path = src/dsp/filters_sse2.c; sourceTree = "<group>"; };
 		466D1EEB4D9C9A2015CE924DCF6B4D0F /* Pods-BFCommonKit_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BFCommonKit_Tests-Info.plist"; sourceTree = "<group>"; };
 		473B8BF9A0C0C4FECAE8497519355E92 /* Pods-BFCommonKit_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BFCommonKit_Example.release.xcconfig"; sourceTree = "<group>"; };
-		47623244DA17140D3CE7FE588E9F6EB9 /* dec_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_mips_dsp_r2.c; path = src/dsp/dec_mips_dsp_r2.c; sourceTree = "<group>"; };
+		47623244DA17140D3CE7FE588E9F6EB9 /* dec_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec_mips_dsp_r2.c; path = src/dsp/dec_mips_dsp_r2.c; sourceTree = "<group>"; };
 		4891FA0B7BCF429D6736A0291FCDC082 /* libwebp-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "libwebp-Info.plist"; sourceTree = "<group>"; };
 		48BDDF018A12C4B35EF4CA6870FF6462 /* vp8li_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8li_enc.h; path = src/enc/vp8li_enc.h; sourceTree = "<group>"; };
 		49B20F9BA8BC1417102E8655892AB515 /* PQBaseModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQBaseModel.swift; sourceTree = "<group>"; };
 		4A2B3C03A449F73A7B1F3E0E52576C01 /* histogram_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = histogram_enc.h; path = src/enc/histogram_enc.h; sourceTree = "<group>"; };
-		4A92EDE24C5C992B7B0A815607E4539A /* random_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = random_utils.c; path = src/utils/random_utils.c; sourceTree = "<group>"; };
+		4A92EDE24C5C992B7B0A815607E4539A /* random_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = random_utils.c; path = src/utils/random_utils.c; sourceTree = "<group>"; };
 		4ACE38BFAB168DE31D5C910DE01176F9 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = "<group>"; };
 		4BB34E0C7A9EB76C5CD6A33108F7D35A /* Resource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resource.swift; path = Sources/General/ImageSource/Resource.swift; sourceTree = "<group>"; };
 		4D6A07A73C64460B2970E6BF755B6233 /* Toast-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Toast-Swift.modulemap"; sourceTree = "<group>"; };
@@ -631,44 +633,44 @@
 		51A7D633132D82AF4EED96EA9471BF67 /* RetryStrategy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RetryStrategy.swift; path = Sources/Networking/RetryStrategy.swift; sourceTree = "<group>"; };
 		523AF881CF87A00A786BEBF50439B1C1 /* KingfisherWebP-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "KingfisherWebP-Info.plist"; sourceTree = "<group>"; };
 		52768FDFE19C089F63CB5F2A7CCAD4FA /* Pods-BFCommonKit_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-BFCommonKit_Example-umbrella.h"; sourceTree = "<group>"; };
-		52982810B900FC455107BD1B42A2511E /* anim_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; name = anim_decode.c; path = src/demux/anim_decode.c; sourceTree = "<group>"; };
+		52982810B900FC455107BD1B42A2511E /* anim_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = anim_decode.c; path = src/demux/anim_decode.c; sourceTree = "<group>"; };
 		52F9965FBE046803AFE2DAD9365EE0B9 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = "<group>"; };
 		53683D88CE558F9D7279EF9E22D8E356 /* GraphicsContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphicsContext.swift; path = Sources/Image/GraphicsContext.swift; sourceTree = "<group>"; };
 		54367C8C6FF8E8C45A8E6C698136F1B8 /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/General/KingfisherManager.swift; sourceTree = "<group>"; };
 		5468399DC42DF34F4DF6D390BFB153C9 /* vp8i_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8i_dec.h; path = src/dec/vp8i_dec.h; sourceTree = "<group>"; };
-		551988343FFDA134019D7E3C9AA262F3 /* alpha_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_dec.c; path = src/dec/alpha_dec.c; sourceTree = "<group>"; };
+		551988343FFDA134019D7E3C9AA262F3 /* alpha_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = alpha_dec.c; path = src/dec/alpha_dec.c; sourceTree = "<group>"; };
 		551C0D4E19C982393A18932D4CC0059E /* vp8_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8_dec.h; path = src/dec/vp8_dec.h; sourceTree = "<group>"; };
 		5576A1721C7F37D9CEA210A941EF2355 /* GIFAnimatedImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GIFAnimatedImage.swift; path = Sources/Image/GIFAnimatedImage.swift; sourceTree = "<group>"; };
 		55DF832DBA39E3B7C574734A23248BE9 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = "<group>"; };
 		56D010C29A0304EECB49F7A6DB364E76 /* KeychainAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KeychainAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		574D669CB8EC31EC271462F164F9B182 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = "<group>"; };
-		59DC309F3E1B26A458375D9C4DA7325C /* token_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = token_enc.c; path = src/enc/token_enc.c; sourceTree = "<group>"; };
+		59DC309F3E1B26A458375D9C4DA7325C /* token_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = token_enc.c; path = src/enc/token_enc.c; sourceTree = "<group>"; };
 		5A0F0C2A23D39A65A69AF72F49CA0DD5 /* bit_reader_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_reader_utils.h; path = src/utils/bit_reader_utils.h; sourceTree = "<group>"; };
 		5BE888DCFEC0145D2EAADA29C42B1E3F /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = "<group>"; };
 		5C1EF41F6E6EE5081C31DF058A71F65E /* color_cache_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = color_cache_utils.h; path = src/utils/color_cache_utils.h; sourceTree = "<group>"; };
 		5C2B5A185E68D6952807CBDA9B742950 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = "<group>"; };
 		5C810E48C5E0734345170976B456B156 /* KeychainAccess-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "KeychainAccess-Info.plist"; sourceTree = "<group>"; };
-		5D4FA261186B745476376A08400B095C /* lossless_enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_mips32.c; path = src/dsp/lossless_enc_mips32.c; sourceTree = "<group>"; };
-		5D797E9A5C5782CE845840781FA1CC81 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		5D83335A9122F722F77A29E38DD5F0DF /* predictor_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = predictor_enc.c; path = src/enc/predictor_enc.c; sourceTree = "<group>"; };
-		5E412EFF6D83E191E8E40A699D2195E4 /* upsampling_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_mips_dsp_r2.c; path = src/dsp/upsampling_mips_dsp_r2.c; sourceTree = "<group>"; };
-		5E4674603A5D5B9215FFA0F8E69F8B71 /* libwebp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = libwebp.framework; path = libwebp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		604DDF8751856644E9BD87BEA0984EDD /* picture_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_enc.c; path = src/enc/picture_enc.c; sourceTree = "<group>"; };
+		5D4FA261186B745476376A08400B095C /* lossless_enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_enc_mips32.c; path = src/dsp/lossless_enc_mips32.c; sourceTree = "<group>"; };
+		5D797E9A5C5782CE845840781FA1CC81 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		5D83335A9122F722F77A29E38DD5F0DF /* predictor_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = predictor_enc.c; path = src/enc/predictor_enc.c; sourceTree = "<group>"; };
+		5E412EFF6D83E191E8E40A699D2195E4 /* upsampling_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = upsampling_mips_dsp_r2.c; path = src/dsp/upsampling_mips_dsp_r2.c; sourceTree = "<group>"; };
+		5E4674603A5D5B9215FFA0F8E69F8B71 /* libwebp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = libwebp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		604DDF8751856644E9BD87BEA0984EDD /* picture_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = picture_enc.c; path = src/enc/picture_enc.c; sourceTree = "<group>"; };
 		60FF66DFCD9D0394951BB18748A2F336 /* BFInt+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BFInt+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/BFInt+Ext.swift"; sourceTree = "<group>"; };
 		61C7B175B4BF2C8E1A3FDCBACB841301 /* UIButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Kingfisher.swift"; path = "Sources/Extensions/UIButton+Kingfisher.swift"; sourceTree = "<group>"; };
 		61E901A18549B9C30C62DC845600FA72 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		63475A3EA1B75447790376C9ABE01493 /* dec_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_sse2.c; path = src/dsp/dec_sse2.c; sourceTree = "<group>"; };
+		63475A3EA1B75447790376C9ABE01493 /* dec_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec_sse2.c; path = src/dsp/dec_sse2.c; sourceTree = "<group>"; };
 		63E694461AB10A6B17AFAA779F00F3F1 /* common_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_dec.h; path = src/dec/common_dec.h; sourceTree = "<group>"; };
 		641ECD2AADF18916B0AEB106C31B4CA6 /* UIControl+NXCategory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIControl+NXCategory.h"; path = "BFCommonKit/Classes/BFCategorys/UIControl+NXCategory.h"; sourceTree = "<group>"; };
 		64ED23D0602F56529E3DEC1CBA49A991 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = "<group>"; };
 		6524B54B42B00A2C445B051958D2DB35 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = "<group>"; };
-		6570071792108EE1817B531B3FF34EC1 /* rescaler_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_mips32.c; path = src/dsp/rescaler_mips32.c; sourceTree = "<group>"; };
+		6570071792108EE1817B531B3FF34EC1 /* rescaler_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = rescaler_mips32.c; path = src/dsp/rescaler_mips32.c; sourceTree = "<group>"; };
 		65DD8CD7576F9ED0F2B0F49187978CEE /* Pods-BFCommonKit_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-BFCommonKit_Example.modulemap"; sourceTree = "<group>"; };
 		664C9CCA7DF0875BAC81781A6C37F8E5 /* NXLoggerManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NXLoggerManager.swift; path = BFCommonKit/Classes/BFDebug/NXLoggerManager.swift; sourceTree = "<group>"; };
 		669DD68CB0A1621DDBFD6632D0A8535D /* KingfisherWebP-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KingfisherWebP-umbrella.h"; sourceTree = "<group>"; };
-		66F238EB2183AF8969CC25C4C1C53BEF /* cost_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_sse2.c; path = src/dsp/cost_sse2.c; sourceTree = "<group>"; };
+		66F238EB2183AF8969CC25C4C1C53BEF /* cost_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = cost_sse2.c; path = src/dsp/cost_sse2.c; sourceTree = "<group>"; };
 		69194E9900FB52B65B12B8FF5FC849E9 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = "<group>"; };
-		6A1528F5640B106B5226E9BE18B0A5D4 /* filters_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_utils.c; path = src/utils/filters_utils.c; sourceTree = "<group>"; };
+		6A1528F5640B106B5226E9BE18B0A5D4 /* filters_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = filters_utils.c; path = src/utils/filters_utils.c; sourceTree = "<group>"; };
 		6A45E962F72AB47E41F844C574DF90DA /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = "<group>"; };
 		6A7401772BF394086ED00C41D8226E56 /* NXUI+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NXUI+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/NXUI+Ext.swift"; sourceTree = "<group>"; };
 		6B505D0F0B1B1F1C113DD86731C85F9B /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = "<group>"; };
@@ -677,42 +679,42 @@
 		6EDD4000E3E6B86C537C5A940FA70107 /* KingfisherError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherError.swift; path = Sources/General/KingfisherError.swift; sourceTree = "<group>"; };
 		6FB41D6C6D5469B1D72B6C2C2FD5E6E5 /* PQRemindView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQRemindView.swift; sourceTree = "<group>"; };
 		6FEFDEE05104DA1841C2948C72BBFDB1 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Image/Filter.swift; sourceTree = "<group>"; };
-		6FF69C8D4A502946395F4D7788648142 /* alpha_processing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing.c; path = src/dsp/alpha_processing.c; sourceTree = "<group>"; };
+		6FF69C8D4A502946395F4D7788648142 /* alpha_processing.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = alpha_processing.c; path = src/dsp/alpha_processing.c; sourceTree = "<group>"; };
 		7002F32A9EDB07B9C16828173AEE9406 /* KeychainAccess-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "KeychainAccess-dummy.m"; sourceTree = "<group>"; };
 		700A7AB202065DBB9A55E859CD822D54 /* animi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = animi.h; path = src/mux/animi.h; sourceTree = "<group>"; };
-		706D464D81B27290EB45A91E649D87B2 /* cpu.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cpu.c; path = src/dsp/cpu.c; sourceTree = "<group>"; };
+		706D464D81B27290EB45A91E649D87B2 /* cpu.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = cpu.c; path = src/dsp/cpu.c; sourceTree = "<group>"; };
 		7143A7F0387CEC76B82ECD8A662E4F55 /* PQNavigatinController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQNavigatinController.swift; sourceTree = "<group>"; };
 		716991E5B0A9E1F5B6F9895E0B2E7C02 /* NXLogger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NXLogger.swift; path = BFCommonKit/Classes/BFDebug/NXLogger.swift; sourceTree = "<group>"; };
 		71DA2416604A781ADF8C84247CE0D533 /* Pods-BFCommonKit_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BFCommonKit_Example.debug.xcconfig"; sourceTree = "<group>"; };
-		71F0E21A8AA4C5D893B077CCFC2F89FC /* syntax_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = syntax_enc.c; path = src/enc/syntax_enc.c; sourceTree = "<group>"; };
+		71F0E21A8AA4C5D893B077CCFC2F89FC /* syntax_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = syntax_enc.c; path = src/enc/syntax_enc.c; sourceTree = "<group>"; };
 		72E37BF6495B796963604408FA9D4678 /* cost_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cost_enc.h; path = src/enc/cost_enc.h; sourceTree = "<group>"; };
-		73A641D23242D4EDE98CE06EB032CA8A /* webp_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = webp_dec.c; path = src/dec/webp_dec.c; sourceTree = "<group>"; };
-		73CFDE26D2DD071AC19230C348B0E102 /* rescaler_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_neon.c; path = src/dsp/rescaler_neon.c; sourceTree = "<group>"; };
+		73A641D23242D4EDE98CE06EB032CA8A /* webp_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = webp_dec.c; path = src/dec/webp_dec.c; sourceTree = "<group>"; };
+		73CFDE26D2DD071AC19230C348B0E102 /* rescaler_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = rescaler_neon.c; path = src/dsp/rescaler_neon.c; sourceTree = "<group>"; };
 		73F754361BA50EA8FC3C88EE95BA1739 /* KingfisherWebP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KingfisherWebP.h; path = Sources/KingfisherWebP.h; sourceTree = "<group>"; };
 		7432BBD084F127751DDF6359E248542C /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; };
-		74547C3FED94EE017B1EE03DA84FE359 /* frame_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = frame_enc.c; path = src/enc/frame_enc.c; sourceTree = "<group>"; };
-		74986037A1831456F0A48D11E594506F /* tree_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = tree_enc.c; path = src/enc/tree_enc.c; sourceTree = "<group>"; };
+		74547C3FED94EE017B1EE03DA84FE359 /* frame_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = frame_enc.c; path = src/enc/frame_enc.c; sourceTree = "<group>"; };
+		74986037A1831456F0A48D11E594506F /* tree_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = tree_enc.c; path = src/enc/tree_enc.c; sourceTree = "<group>"; };
 		74C5AE18F901C69BA7323F4A62CCCFA0 /* NXAudioRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NXAudioRecorder.swift; path = BFCommonKit/Classes/BFUtility/NXAudioRecorder.swift; sourceTree = "<group>"; };
-		759DEEBDE802B86E5BF4DDB8F64ECF62 /* yuv_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_sse41.c; path = src/dsp/yuv_sse41.c; sourceTree = "<group>"; };
-		76665FA0BCCE29A022D6C59A5E60A527 /* dec_clip_tables.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_clip_tables.c; path = src/dsp/dec_clip_tables.c; sourceTree = "<group>"; };
+		759DEEBDE802B86E5BF4DDB8F64ECF62 /* yuv_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = yuv_sse41.c; path = src/dsp/yuv_sse41.c; sourceTree = "<group>"; };
+		76665FA0BCCE29A022D6C59A5E60A527 /* dec_clip_tables.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec_clip_tables.c; path = src/dsp/dec_clip_tables.c; sourceTree = "<group>"; };
 		767C2774A8A78EC494172D282ABD2455 /* PQHeartAnimation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQHeartAnimation.swift; sourceTree = "<group>"; };
-		7766555452912C99FF892D9F040ABA82 /* upsampling_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_neon.c; path = src/dsp/upsampling_neon.c; sourceTree = "<group>"; };
-		77AC8809D2CAC171BE3FF3706D29AB73 /* lossless_enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_msa.c; path = src/dsp/lossless_enc_msa.c; sourceTree = "<group>"; };
+		7766555452912C99FF892D9F040ABA82 /* upsampling_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = upsampling_neon.c; path = src/dsp/upsampling_neon.c; sourceTree = "<group>"; };
+		77AC8809D2CAC171BE3FF3706D29AB73 /* lossless_enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_enc_msa.c; path = src/dsp/lossless_enc_msa.c; sourceTree = "<group>"; };
 		79D75CFA6D11D5909B1F339C90F8F063 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; };
 		79EE1E383773F5B54F1D42AE61ADBF55 /* CallbackQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CallbackQueue.swift; path = Sources/Utility/CallbackQueue.swift; sourceTree = "<group>"; };
 		7A03B2E91124137E1443B368939010ED /* Runtime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Runtime.swift; path = Sources/Utility/Runtime.swift; sourceTree = "<group>"; };
 		7A713B5AF43EADB5332E2749F626CFB6 /* CGImage+WebP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CGImage+WebP.h"; path = "Sources/CGImage+WebP.h"; sourceTree = "<group>"; };
-		7AF53F158111CC2E936F713952AEA1D5 /* color_cache_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = color_cache_utils.c; path = src/utils/color_cache_utils.c; sourceTree = "<group>"; };
-		7B27A62466E098FA5DDB9ABA9BB1F3B9 /* vp8_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8_dec.c; path = src/dec/vp8_dec.c; sourceTree = "<group>"; };
+		7AF53F158111CC2E936F713952AEA1D5 /* color_cache_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = color_cache_utils.c; path = src/utils/color_cache_utils.c; sourceTree = "<group>"; };
+		7B27A62466E098FA5DDB9ABA9BB1F3B9 /* vp8_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = vp8_dec.c; path = src/dec/vp8_dec.c; sourceTree = "<group>"; };
 		7B7173AB2B91F5345C502F03E33BD03E /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = "<group>"; };
 		7D90431355BBFA74BF02FB3545D31C2C /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = "<group>"; };
-		7E05DD45BC03CAF9B2FE82D14C7346C9 /* tree_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = tree_dec.c; path = src/dec/tree_dec.c; sourceTree = "<group>"; };
-		7E16C888B04D05FC387D85E7B9949848 /* picture_psnr_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_psnr_enc.c; path = src/enc/picture_psnr_enc.c; sourceTree = "<group>"; };
+		7E05DD45BC03CAF9B2FE82D14C7346C9 /* tree_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = tree_dec.c; path = src/dec/tree_dec.c; sourceTree = "<group>"; };
+		7E16C888B04D05FC387D85E7B9949848 /* picture_psnr_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = picture_psnr_enc.c; path = src/enc/picture_psnr_enc.c; sourceTree = "<group>"; };
 		7EA8AF65A1E1A7075DE29843E5F37D6B /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = "<group>"; };
 		7F54125B4C33A8C6E4579E5E9895AB49 /* WKInterfaceImage+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "WKInterfaceImage+Kingfisher.swift"; path = "Sources/Extensions/WKInterfaceImage+Kingfisher.swift"; sourceTree = "<group>"; };
 		800199F48536B632606212213C070F30 /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Kingfisher.modulemap; sourceTree = "<group>"; };
 		805861C4C1D0C722DF24B8FB17C41C58 /* Alamofire.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.release.xcconfig; sourceTree = "<group>"; };
-		80C38BD4354A86C927D0C350C1901365 /* cost_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_mips32.c; path = src/dsp/cost_mips32.c; sourceTree = "<group>"; };
+		80C38BD4354A86C927D0C350C1901365 /* cost_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = cost_mips32.c; path = src/dsp/cost_mips32.c; sourceTree = "<group>"; };
 		83B03BEBC73D16088FDC07949D2B0CC0 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = "<group>"; };
 		83F7E182F95143EA053B7CF1521CF69D /* SizeExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SizeExtensions.swift; path = Sources/Utility/SizeExtensions.swift; sourceTree = "<group>"; };
 		8490FD19795AF4AAF21720757C59B550 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = "<group>"; };
@@ -721,8 +723,8 @@
 		874C1686E23B2BA7E9BEC18B1BE762E9 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Utility/Box.swift; sourceTree = "<group>"; };
 		87D12F5EB5729495BD262E1DA9A5EF11 /* PQLoadingHUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQLoadingHUB.swift; sourceTree = "<group>"; };
 		87EC7A862F5E8ECB57CBB882FB15DA11 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
-		8860609A26676DE3F00F8D6C0102E00C /* picture_tools_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_tools_enc.c; path = src/enc/picture_tools_enc.c; sourceTree = "<group>"; };
-		887716EA2491D881F905B1C72CDF193A /* cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_enc.c; path = src/enc/cost_enc.c; sourceTree = "<group>"; };
+		8860609A26676DE3F00F8D6C0102E00C /* picture_tools_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = picture_tools_enc.c; path = src/enc/picture_tools_enc.c; sourceTree = "<group>"; };
+		887716EA2491D881F905B1C72CDF193A /* cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = cost_enc.c; path = src/enc/cost_enc.c; sourceTree = "<group>"; };
 		89DB98D231E8A154C420112247FBD123 /* Pods-BFCommonKit_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BFCommonKit_Example-dummy.m"; sourceTree = "<group>"; };
 		8A11D0493CE096216CECC56EF4EB385C /* SessionDataTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDataTask.swift; path = Sources/Networking/SessionDataTask.swift; sourceTree = "<group>"; };
 		8A172B95CFBF8BD7719302AA6249117D /* KingfisherWebP.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = KingfisherWebP.release.xcconfig; sourceTree = "<group>"; };
@@ -731,36 +733,36 @@
 		8C1350C2FB158635359394DCD8AC1091 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = "<group>"; };
 		8C6A38C42D16D12FFF79E4C6C38F5793 /* common_sse41.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_sse41.h; path = src/dsp/common_sse41.h; sourceTree = "<group>"; };
 		8CD31506B110AAF843727F45D15BD3EC /* demux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = demux.h; path = src/webp/demux.h; sourceTree = "<group>"; };
-		8CD72B85A6C994E005D057E2D943A545 /* alpha_processing_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_mips_dsp_r2.c; path = src/dsp/alpha_processing_mips_dsp_r2.c; sourceTree = "<group>"; };
+		8CD72B85A6C994E005D057E2D943A545 /* alpha_processing_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = alpha_processing_mips_dsp_r2.c; path = src/dsp/alpha_processing_mips_dsp_r2.c; sourceTree = "<group>"; };
 		8D6FA6EB265C550113EA5976C95F6159 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = "<group>"; };
 		8DDDD54B1AE55FC89B890C44326C35F2 /* PQTabBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQTabBar.swift; sourceTree = "<group>"; };
 		8EF51F566F08B2CCF82A309D394C3539 /* libwebp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "libwebp-dummy.m"; sourceTree = "<group>"; };
 		8F93D1EE8E93C058737C563A9878BBAE /* Pods-BFCommonKit_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BFCommonKit_Example-Info.plist"; sourceTree = "<group>"; };
-		8FFE020492C4964C65109C8C702CE8C7 /* analysis_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = analysis_enc.c; path = src/enc/analysis_enc.c; sourceTree = "<group>"; };
+		8FFE020492C4964C65109C8C702CE8C7 /* analysis_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = analysis_enc.c; path = src/enc/analysis_enc.c; sourceTree = "<group>"; };
 		905E699E2D62BFADDF8230CFEC244FA8 /* BFBundle+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BFBundle+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/BFBundle+Ext.swift"; sourceTree = "<group>"; };
 		908EDA69F386F1CFC6BB7B642C14072E /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = "<group>"; };
 		90F146E9B6C5CF755078BA5A7A277769 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = "<group>"; };
-		9117DB6BF65D910D0F60933E1E0A93E0 /* lossless_enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_neon.c; path = src/dsp/lossless_enc_neon.c; sourceTree = "<group>"; };
+		9117DB6BF65D910D0F60933E1E0A93E0 /* lossless_enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_enc_neon.c; path = src/dsp/lossless_enc_neon.c; sourceTree = "<group>"; };
 		911903FC0C0C2C2534D4311B72500168 /* PQBridgeObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PQBridgeObject.h; path = BFCommonKit/Classes/BFUtility/PQBridgeObject.h; sourceTree = "<group>"; };
 		923F4BAF56229A4306D6A4C8B73F7D25 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = "<group>"; };
 		932448CFC886F59DC9561AADC73CE79F /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = "<group>"; };
-		93948DE08D68F1381C904EA76642F923 /* rescaler_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_sse2.c; path = src/dsp/rescaler_sse2.c; sourceTree = "<group>"; };
+		93948DE08D68F1381C904EA76642F923 /* rescaler_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = rescaler_sse2.c; path = src/dsp/rescaler_sse2.c; sourceTree = "<group>"; };
 		95A60AFE5772ADCBF850D112370E0E51 /* decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = decode.h; path = src/webp/decode.h; sourceTree = "<group>"; };
 		95B92B82C8ACF6B340BAC5640BAA4CBD /* Alamofire.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.debug.xcconfig; sourceTree = "<group>"; };
 		96295635A141042FEE3AB9A0BF4CF472 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; };
 		96AB292FEC8913B98548CD72BF082736 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
 		971E4E40C61C4DB4D55F5B23888BC84F /* libwebp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libwebp.release.xcconfig; sourceTree = "<group>"; };
 		973518D6514FFA52EAD3F10B6B871D6F /* huffman_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = huffman_utils.h; path = src/utils/huffman_utils.h; sourceTree = "<group>"; };
-		979486118B3E90C08386079D57962701 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit.framework; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		979486118B3E90C08386079D57962701 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		9837D6E717BB7B76732BDC6FE3D338B8 /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = src/utils/utils.h; sourceTree = "<group>"; };
 		9BB66D76087123E8A9F0288A05BA74DA /* WebPProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPProcessor.swift; path = Sources/WebPProcessor.swift; sourceTree = "<group>"; };
 		9C9011D2EADF096B1BF041352F013D9D /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Photos.framework; sourceTree = DEVELOPER_DIR; };
 		9CAD6B76851F1BE43292476B15D241B3 /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/Networking/ImagePrefetcher.swift; sourceTree = "<group>"; };
 		9CBB1C94C690F0ADAEA7A7829B3BD8C2 /* NXLoggerVC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NXLoggerVC.swift; path = BFCommonKit/Classes/BFDebug/NXLoggerVC.swift; sourceTree = "<group>"; };
 		9D0FC67329F7F9A9ABD09A3C93702316 /* AVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/AVKit.framework; sourceTree = DEVELOPER_DIR; };
-		9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
-		9DB8852AF6392A279C7BDD74B24CE69D /* alpha_processing_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_sse2.c; path = src/dsp/alpha_processing_sse2.c; sourceTree = "<group>"; };
-		9E35FBDE3FF5AA375B7042186973E73F /* bit_writer_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = bit_writer_utils.c; path = src/utils/bit_writer_utils.c; sourceTree = "<group>"; };
+		9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
+		9DB8852AF6392A279C7BDD74B24CE69D /* alpha_processing_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = alpha_processing_sse2.c; path = src/dsp/alpha_processing_sse2.c; sourceTree = "<group>"; };
+		9E35FBDE3FF5AA375B7042186973E73F /* bit_writer_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = bit_writer_utils.c; path = src/utils/bit_writer_utils.c; sourceTree = "<group>"; };
 		9E3B3ED6C397BDA524C12CB3C5FBDC02 /* msa_macro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = msa_macro.h; path = src/dsp/msa_macro.h; sourceTree = "<group>"; };
 		9E95D9BFCA3ED6D8DC2E01D37C211E1F /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Toast/Toast.swift; sourceTree = "<group>"; };
 		9F1B4F388128EB89A49EA0FB8933288C /* MemoryStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MemoryStorage.swift; path = Sources/Cache/MemoryStorage.swift; sourceTree = "<group>"; };
@@ -769,18 +771,18 @@
 		A10D688629A6DE39709D1B203D171AF7 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = "<group>"; };
 		A137459BD399CF1ABDF1E30B521BA571 /* neon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = neon.h; path = src/dsp/neon.h; sourceTree = "<group>"; };
 		A16583AD154AE5D7B2A123138D0C4B99 /* Kingfisher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.release.xcconfig; sourceTree = "<group>"; };
-		A19EC4EAFD05273CFB2ACBA0483DB8F8 /* ssim.c */ = {isa = PBXFileReference; includeInIndex = 1; name = ssim.c; path = src/dsp/ssim.c; sourceTree = "<group>"; };
+		A19EC4EAFD05273CFB2ACBA0483DB8F8 /* ssim.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = ssim.c; path = src/dsp/ssim.c; sourceTree = "<group>"; };
 		A38C43F77211E9A41AA14C28372D03F1 /* thread_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = thread_utils.h; path = src/utils/thread_utils.h; sourceTree = "<group>"; };
 		A3B43E5F2D372B45BA2380846E6B8658 /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/Cache/CacheSerializer.swift; sourceTree = "<group>"; };
 		A4FE7435C7DFA168C5EB8624D2698342 /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/Networking/ImageDownloader.swift; sourceTree = "<group>"; };
-		A5E28055295B58FFC8EF2FE698445FDE /* rescaler_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_utils.c; path = src/utils/rescaler_utils.c; sourceTree = "<group>"; };
+		A5E28055295B58FFC8EF2FE698445FDE /* rescaler_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = rescaler_utils.c; path = src/utils/rescaler_utils.c; sourceTree = "<group>"; };
 		A6567D79251FA12F99AEEE935F238255 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = "<group>"; };
-		A682C9BDBC5536722176945EC79378C7 /* upsampling_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_sse41.c; path = src/dsp/upsampling_sse41.c; sourceTree = "<group>"; };
+		A682C9BDBC5536722176945EC79378C7 /* upsampling_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = upsampling_sse41.c; path = src/dsp/upsampling_sse41.c; sourceTree = "<group>"; };
 		A6C9ADF5DDB195364E4BAABD1F9C9BE4 /* BFCommonKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BFCommonKit-prefix.pch"; sourceTree = "<group>"; };
 		A7E3F383AF5EFE1414D1C70B48F41641 /* libwebp-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libwebp-prefix.pch"; sourceTree = "<group>"; };
 		A89CDAB5DFB0B8C5D1A6450BF564958E /* BFCommonKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BFCommonKit.release.xcconfig; sourceTree = "<group>"; };
 		A8B9E0398686D5ECED626F38D2E14AB7 /* icon_detail_back@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "icon_detail_back@3x.png"; path = "BFCommonKit/Assets/Resources/icon_detail_back@3x.png"; sourceTree = "<group>"; };
-		A9D1C703D2B1D565257E9D183DD618A8 /* anim_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; name = anim_encode.c; path = src/mux/anim_encode.c; sourceTree = "<group>"; };
+		A9D1C703D2B1D565257E9D183DD618A8 /* anim_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = anim_encode.c; path = src/mux/anim_encode.c; sourceTree = "<group>"; };
 		A9D55C7062663AE8FC58C3065CABD0A2 /* BFCommonKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BFCommonKit.debug.xcconfig; sourceTree = "<group>"; };
 		A9E0C6B21E4FE0E770BD098737B1F4A0 /* Toast-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.debug.xcconfig"; sourceTree = "<group>"; };
 		AA0CED072AE44C7703B3AFD745B6FF7E /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/Extensions/ImageView+Kingfisher.swift"; sourceTree = "<group>"; };
@@ -788,7 +790,7 @@
 		AAA71CCC592E72C6367FA950117DD202 /* PQCommonMethodUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PQCommonMethodUtil.swift; path = BFCommonKit/Classes/BFUtility/PQCommonMethodUtil.swift; sourceTree = "<group>"; };
 		AB0F70ECDC0B6DA41056F86D4F3E3A92 /* KeychainAccess.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = KeychainAccess.debug.xcconfig; sourceTree = "<group>"; };
 		AD105209A26035444B013C35E1E1A758 /* libwebp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libwebp.debug.xcconfig; sourceTree = "<group>"; };
-		AD9B8E4B7F866ADAAAB28734F458D5E0 /* vp8l_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8l_dec.c; path = src/dec/vp8l_dec.c; sourceTree = "<group>"; };
+		AD9B8E4B7F866ADAAAB28734F458D5E0 /* vp8l_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = vp8l_dec.c; path = src/dec/vp8l_dec.c; sourceTree = "<group>"; };
 		ADB3D8EC2813A31362182B1A3D36E214 /* Kingfisher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.debug.xcconfig; sourceTree = "<group>"; };
 		AE9225A53F417C0BEB6CEDB105B8042D /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = "<group>"; };
 		AF60EEAC121090B9A2331C9DD25A01BA /* Pods-BFCommonKit_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BFCommonKit_Tests-dummy.m"; sourceTree = "<group>"; };
@@ -799,32 +801,32 @@
 		B0C7A32071FA960F5A8DDB68BD529962 /* ResourceBundle-BFCommonKit_Resources-BFCommonKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-BFCommonKit_Resources-BFCommonKit-Info.plist"; sourceTree = "<group>"; };
 		B1716F9F35E0E418D103BE2E3DC01CAB /* Toast-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-umbrella.h"; sourceTree = "<group>"; };
 		B29853E7399975E3B95F4942009EA680 /* Toast-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-prefix.pch"; sourceTree = "<group>"; };
-		B2FBACC517AD4DF9B29C7A9FFA0C69E3 /* enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_neon.c; path = src/dsp/enc_neon.c; sourceTree = "<group>"; };
-		B62AC83CD497220D3F978ECB630B8EBC /* thread_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = thread_utils.c; path = src/utils/thread_utils.c; sourceTree = "<group>"; };
-		B7AA6304D478AD322052331AC01053FB /* rescaler_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_msa.c; path = src/dsp/rescaler_msa.c; sourceTree = "<group>"; };
+		B2FBACC517AD4DF9B29C7A9FFA0C69E3 /* enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = enc_neon.c; path = src/dsp/enc_neon.c; sourceTree = "<group>"; };
+		B62AC83CD497220D3F978ECB630B8EBC /* thread_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = thread_utils.c; path = src/utils/thread_utils.c; sourceTree = "<group>"; };
+		B7AA6304D478AD322052331AC01053FB /* rescaler_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = rescaler_msa.c; path = src/dsp/rescaler_msa.c; sourceTree = "<group>"; };
 		B7B34C951D35523BB29D52FF2807C1CB /* Pods-BFCommonKit_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-BFCommonKit_Tests-umbrella.h"; sourceTree = "<group>"; };
 		B7F9A6C0354D63C63A49ACCC3A951AEB /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Image/Placeholder.swift; sourceTree = "<group>"; };
 		B819B0FCA6FE18409369E24A8DD5522E /* Image+WebP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Image+WebP.swift"; path = "Sources/Image+WebP.swift"; sourceTree = "<group>"; };
 		B8AF72516324356817A06E5110128E5D /* KeychainAccess-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KeychainAccess-umbrella.h"; sourceTree = "<group>"; };
-		B90E23FDC83F41C079C08610913F29FA /* lossless.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless.c; path = src/dsp/lossless.c; sourceTree = "<group>"; };
-		B95649F9A496334E3320E31BDA31A6F7 /* alpha_processing_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_sse41.c; path = src/dsp/alpha_processing_sse41.c; sourceTree = "<group>"; };
-		B963E623F99A49D611D01714DB18C0D7 /* filter_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filter_enc.c; path = src/enc/filter_enc.c; sourceTree = "<group>"; };
+		B90E23FDC83F41C079C08610913F29FA /* lossless.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless.c; path = src/dsp/lossless.c; sourceTree = "<group>"; };
+		B95649F9A496334E3320E31BDA31A6F7 /* alpha_processing_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = alpha_processing_sse41.c; path = src/dsp/alpha_processing_sse41.c; sourceTree = "<group>"; };
+		B963E623F99A49D611D01714DB18C0D7 /* filter_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = filter_enc.c; path = src/enc/filter_enc.c; sourceTree = "<group>"; };
 		B97AD7AF037CB154C9301D4DF17644BF /* PQGIFImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQGIFImageView.swift; sourceTree = "<group>"; };
-		BA4B29136303323CA7C7F07D24C72955 /* upsampling_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_msa.c; path = src/dsp/upsampling_msa.c; sourceTree = "<group>"; };
+		BA4B29136303323CA7C7F07D24C72955 /* upsampling_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = upsampling_msa.c; path = src/dsp/upsampling_msa.c; sourceTree = "<group>"; };
 		BA816A688EBE06275384A0DA05FFE603 /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = "<group>"; };
 		BB54A41F7ADCAB5F6CE8EF6B3320429A /* Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Kingfisher.swift; path = Sources/General/Kingfisher.swift; sourceTree = "<group>"; };
-		BB9E910154FC7E94023AC4C119960C71 /* filters_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_neon.c; path = src/dsp/filters_neon.c; sourceTree = "<group>"; };
+		BB9E910154FC7E94023AC4C119960C71 /* filters_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = filters_neon.c; path = src/dsp/filters_neon.c; sourceTree = "<group>"; };
 		BC417E962B8122213171CFB604297938 /* AVAssetImageDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AVAssetImageDataProvider.swift; path = Sources/General/ImageSource/AVAssetImageDataProvider.swift; sourceTree = "<group>"; };
-		BCDF35029968ACEB34EC67391CBFABE2 /* demux.c */ = {isa = PBXFileReference; includeInIndex = 1; name = demux.c; path = src/demux/demux.c; sourceTree = "<group>"; };
+		BCDF35029968ACEB34EC67391CBFABE2 /* demux.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = demux.c; path = src/demux/demux.c; sourceTree = "<group>"; };
 		BE3F01D6C0A4E4FA8733BF0C99B959F5 /* ImageDataProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDataProcessor.swift; path = Sources/Networking/ImageDataProcessor.swift; sourceTree = "<group>"; };
 		BEE4A3ACB6998470E67B5013AFC9C3DD /* PQVideoSnapshotUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PQVideoSnapshotUtil.swift; path = BFCommonKit/Classes/BFUtility/PQVideoSnapshotUtil.swift; sourceTree = "<group>"; };
 		BFDAF1D975E34CAF3ACA149958518D38 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = "<group>"; };
 		BFFF71FD231C95E5FEB3A6BBE7DD4C0C /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = "<group>"; };
 		C13241AB43111265A46BC577630C95F3 /* PQConstant.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PQConstant.swift; path = BFCommonKit/Classes/BFUtility/PQConstant.swift; sourceTree = "<group>"; };
-		C2152D24F718007F852440996ED5C822 /* huffman_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = huffman_utils.c; path = src/utils/huffman_utils.c; sourceTree = "<group>"; };
+		C2152D24F718007F852440996ED5C822 /* huffman_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = huffman_utils.c; path = src/utils/huffman_utils.c; sourceTree = "<group>"; };
 		C33546168D7BF8B579D33A4B02A45A9E /* BFCommonKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "BFCommonKit-Info.plist"; sourceTree = "<group>"; };
 		C3E1BE743406E158B82AB179919DD70E /* PQFollowButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQFollowButton.swift; sourceTree = "<group>"; };
-		C3F44C782D64D7EB20B61CE3844EBFAD /* Kingfisher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Kingfisher.framework; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		C3F44C782D64D7EB20B61CE3844EBFAD /* Kingfisher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		C41FF2D25FA4C741175891B639AD43EC /* Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Toast-Swift-Info.plist"; sourceTree = "<group>"; };
 		C482E906A43F38D842BA41EB2E81600F /* muxi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = muxi.h; path = src/mux/muxi.h; sourceTree = "<group>"; };
 		C49FA912FF8A277187BB5E87EBA0794C /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = "<group>"; };
@@ -834,20 +836,20 @@
 		C7EB19604357B81A35FC3C906FB2E1C2 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = "<group>"; };
 		C8217E0A09CCE03C4AEA78BED6B8E74C /* KFOptionsSetter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFOptionsSetter.swift; path = Sources/General/KFOptionsSetter.swift; sourceTree = "<group>"; };
 		C8B8E8B9AE7C9DEB273DB2EF0C460F0C /* dsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dsp.h; path = src/dsp/dsp.h; sourceTree = "<group>"; };
-		C8CBD389008F531A6CB30D1318551869 /* muxinternal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxinternal.c; path = src/mux/muxinternal.c; sourceTree = "<group>"; };
+		C8CBD389008F531A6CB30D1318551869 /* muxinternal.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = muxinternal.c; path = src/mux/muxinternal.c; sourceTree = "<group>"; };
 		C9E8B03D982C40781F63386EDE7CB8A6 /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/Views/AnimatedImageView.swift; sourceTree = "<group>"; };
 		CA15BCD370B938E8B51869B723E2A236 /* KingfisherWebP.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = KingfisherWebP.debug.xcconfig; sourceTree = "<group>"; };
-		CA833533D8AF8D3019E59F42B4F9ABE9 /* Pods_BFCommonKit_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_BFCommonKit_Tests.framework; path = "Pods-BFCommonKit_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
-		CAC86ADAC443BFA0FCC35EE5A96C5314 /* dec_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_mips32.c; path = src/dsp/dec_mips32.c; sourceTree = "<group>"; };
+		CA833533D8AF8D3019E59F42B4F9ABE9 /* Pods_BFCommonKit_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_BFCommonKit_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		CAC86ADAC443BFA0FCC35EE5A96C5314 /* dec_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec_mips32.c; path = src/dsp/dec_mips32.c; sourceTree = "<group>"; };
 		CB04E9A67CC149E1A8601653B2AF2E46 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = "<group>"; };
-		CBD74D90E6CD6D990EF7F4303606BD31 /* upsampling.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling.c; path = src/dsp/upsampling.c; sourceTree = "<group>"; };
-		CBEA9F23DFB6FFBC40A74C82E75AADC9 /* buffer_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = buffer_dec.c; path = src/dec/buffer_dec.c; sourceTree = "<group>"; };
+		CBD74D90E6CD6D990EF7F4303606BD31 /* upsampling.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = upsampling.c; path = src/dsp/upsampling.c; sourceTree = "<group>"; };
+		CBEA9F23DFB6FFBC40A74C82E75AADC9 /* buffer_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = buffer_dec.c; path = src/dec/buffer_dec.c; sourceTree = "<group>"; };
 		CC3F473CB87441669CAC1855A4E0078B /* Source.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Source.swift; path = Sources/General/ImageSource/Source.swift; sourceTree = "<group>"; };
-		CC8EDCECAD338BF36C0AAC43D37E0130 /* quant_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_dec.c; path = src/dec/quant_dec.c; sourceTree = "<group>"; };
-		CCB77F5E24D307ED806957F29DE086E6 /* BFCommonKit_Resources.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = BFCommonKit_Resources.bundle; path = "BFCommonKit-BFCommonKit_Resources.bundle"; sourceTree = BUILT_PRODUCTS_DIR; };
-		CD23564D74C175DC12080C829EC5AA7E /* quant_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_enc.c; path = src/enc/quant_enc.c; sourceTree = "<group>"; };
-		CED58C4136359C149F43D5514D11A79D /* picture_rescale_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_rescale_enc.c; path = src/enc/picture_rescale_enc.c; sourceTree = "<group>"; };
-		CEFC0CC55AC344A9D970EEC3CD0818B8 /* filters_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_msa.c; path = src/dsp/filters_msa.c; sourceTree = "<group>"; };
+		CC8EDCECAD338BF36C0AAC43D37E0130 /* quant_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = quant_dec.c; path = src/dec/quant_dec.c; sourceTree = "<group>"; };
+		CCB77F5E24D307ED806957F29DE086E6 /* BFCommonKit_Resources.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BFCommonKit_Resources.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
+		CD23564D74C175DC12080C829EC5AA7E /* quant_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = quant_enc.c; path = src/enc/quant_enc.c; sourceTree = "<group>"; };
+		CED58C4136359C149F43D5514D11A79D /* picture_rescale_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = picture_rescale_enc.c; path = src/enc/picture_rescale_enc.c; sourceTree = "<group>"; };
+		CEFC0CC55AC344A9D970EEC3CD0818B8 /* filters_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = filters_msa.c; path = src/dsp/filters_msa.c; sourceTree = "<group>"; };
 		CF776987710038E312CEBE898EC3F4C3 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = "<group>"; };
 		CFB25466547676FD2CC7F6BFE9CC8E38 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = "<group>"; };
 		D0A047C297BE6E56E0DFC64BA0774F64 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = "<group>"; };
@@ -855,83 +857,83 @@
 		D1834F6A7416092A8C56E47B56E39EC4 /* ImageBinder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageBinder.swift; path = Sources/SwiftUI/ImageBinder.swift; sourceTree = "<group>"; };
 		D190F989C8EE803C0786A7A70822FA24 /* BFUIImage+Ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BFUIImage+Ext.swift"; path = "BFCommonKit/Classes/BFCategorys/BFUIImage+Ext.swift"; sourceTree = "<group>"; };
 		D1A284359D8D6252013030CA7AA32D5A /* KeychainAccess-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KeychainAccess-prefix.pch"; sourceTree = "<group>"; };
-		D207500A6F0B973942BE203036A054BA /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = "<group>"; };
+		D207500A6F0B973942BE203036A054BA /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
 		D25A9235F3C5252FD2CE4606FFED690B /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = "<group>"; };
 		D25D6AD87DBFCACD9AA256889E383492 /* Pods-BFCommonKit_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BFCommonKit_Tests.debug.xcconfig"; sourceTree = "<group>"; };
 		D285911D89092337C300107FA2C82CD7 /* Kingfisher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		D2C0C2F0747C40CF1FFE52C1912E2644 /* enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_mips32.c; path = src/dsp/enc_mips32.c; sourceTree = "<group>"; };
+		D2C0C2F0747C40CF1FFE52C1912E2644 /* enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = enc_mips32.c; path = src/dsp/enc_mips32.c; sourceTree = "<group>"; };
 		D2DF5E8C3D9BCDDED01372457238003E /* AuthenticationChallengeResponsable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationChallengeResponsable.swift; path = Sources/Networking/AuthenticationChallengeResponsable.swift; sourceTree = "<group>"; };
-		D30FD9343880B3C66B0F6F31E8024E6D /* picture_csp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_csp_enc.c; path = src/enc/picture_csp_enc.c; sourceTree = "<group>"; };
+		D30FD9343880B3C66B0F6F31E8024E6D /* picture_csp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = picture_csp_enc.c; path = src/enc/picture_csp_enc.c; sourceTree = "<group>"; };
 		D31F8C62040D6760353D9721C70FED6B /* placehold_image@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "placehold_image@3x.png"; path = "BFCommonKit/Assets/Resources/placehold_image@3x.png"; sourceTree = "<group>"; };
 		D322441F09F756ABDA251DDD1477ECFE /* NSTextAttachment+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSTextAttachment+Kingfisher.swift"; path = "Sources/Extensions/NSTextAttachment+Kingfisher.swift"; sourceTree = "<group>"; };
 		D46069D6F0B80C98511CF167AB30E24E /* Enums.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Enums.swift; path = BFCommonKit/Classes/BFEnums/Enums.swift; sourceTree = "<group>"; };
 		D4DE093B7395E190A7B944FB1388C22E /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/Image/ImageProcessor.swift; sourceTree = "<group>"; };
 		D59B2E205B06FC0E2685EFF735EA0826 /* BFUIButton+ext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "BFUIButton+ext.swift"; path = "BFCommonKit/Classes/BFCategorys/BFUIButton+ext.swift"; sourceTree = "<group>"; };
-		D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast_Swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Toast_Swift.framework; path = "Toast-Swift.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
+		D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast_Swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Toast_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		D62FB512164DD568D4628C72C3F713D5 /* RequestModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RequestModifier.swift; path = Sources/Networking/RequestModifier.swift; sourceTree = "<group>"; };
-		D757C782E04830E07755F3A47CBC0750 /* backward_references_cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = backward_references_cost_enc.c; path = src/enc/backward_references_cost_enc.c; sourceTree = "<group>"; };
-		D75CA436EEDB3F1E493E838FE6F08877 /* frame_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = frame_dec.c; path = src/dec/frame_dec.c; sourceTree = "<group>"; };
-		D7CA128601480FEBF82CC8A69BA21614 /* alpha_processing_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_neon.c; path = src/dsp/alpha_processing_neon.c; sourceTree = "<group>"; };
+		D757C782E04830E07755F3A47CBC0750 /* backward_references_cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = backward_references_cost_enc.c; path = src/enc/backward_references_cost_enc.c; sourceTree = "<group>"; };
+		D75CA436EEDB3F1E493E838FE6F08877 /* frame_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = frame_dec.c; path = src/dec/frame_dec.c; sourceTree = "<group>"; };
+		D7CA128601480FEBF82CC8A69BA21614 /* alpha_processing_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = alpha_processing_neon.c; path = src/dsp/alpha_processing_neon.c; sourceTree = "<group>"; };
 		D8575A49C79D9A1B3E50B91101DDD662 /* BFCommonKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BFCommonKit.modulemap; sourceTree = "<group>"; };
 		D8C6DD684385CE1FA241B48F62D017E6 /* KFImageOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImageOptions.swift; path = Sources/SwiftUI/KFImageOptions.swift; sourceTree = "<group>"; };
-		D9088C0E2EBEAD24C1F41BC8749733EE /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = "<group>"; };
-		D952749C90873AADAD4CCB322DDA0952 /* muxedit.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxedit.c; path = src/mux/muxedit.c; sourceTree = "<group>"; };
-		DA564F1AA7803CAC1C7B2801F3358F27 /* lossless_enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_sse41.c; path = src/dsp/lossless_enc_sse41.c; sourceTree = "<group>"; };
-		DADC2F2432C7A4B21B4A8A426D2FB232 /* idec_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = idec_dec.c; path = src/dec/idec_dec.c; sourceTree = "<group>"; };
+		D9088C0E2EBEAD24C1F41BC8749733EE /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
+		D952749C90873AADAD4CCB322DDA0952 /* muxedit.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = muxedit.c; path = src/mux/muxedit.c; sourceTree = "<group>"; };
+		DA564F1AA7803CAC1C7B2801F3358F27 /* lossless_enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_enc_sse41.c; path = src/dsp/lossless_enc_sse41.c; sourceTree = "<group>"; };
+		DADC2F2432C7A4B21B4A8A426D2FB232 /* idec_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = idec_dec.c; path = src/dec/idec_dec.c; sourceTree = "<group>"; };
 		DB53477E46A16D0E6AEBF93426D1B985 /* KeychainAccess.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = KeychainAccess.release.xcconfig; sourceTree = "<group>"; };
 		DCA1A6A777946E116D2C131E6EC1784D /* SnapKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.release.xcconfig; sourceTree = "<group>"; };
-		DEA66EB808318499D9715C030E4B3B3E /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = utils.c; path = src/utils/utils.c; sourceTree = "<group>"; };
+		DEA66EB808318499D9715C030E4B3B3E /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = utils.c; path = src/utils/utils.c; sourceTree = "<group>"; };
 		DEBB108637F34783E7A911C6B06052A2 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = "<group>"; };
-		DF29761AE48E1FBD03E60BBCBE8EB3C8 /* config_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = config_enc.c; path = src/enc/config_enc.c; sourceTree = "<group>"; };
+		DF29761AE48E1FBD03E60BBCBE8EB3C8 /* config_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = config_enc.c; path = src/enc/config_enc.c; sourceTree = "<group>"; };
 		DF829A3FA5BA5026716378D34CD4B1A0 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = "<group>"; };
 		DFFC39395F91200BF4618372B0211700 /* PQBaseWebViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQBaseWebViewController.swift; sourceTree = "<group>"; };
 		E0BAE05B8E99C303CE11C1F3B881E2DA /* KFImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KFImage.swift; path = Sources/SwiftUI/KFImage.swift; sourceTree = "<group>"; };
-		E1658DF5E379FEBD0B8E5F9F8FCEE34C /* quant_levels_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_levels_utils.c; path = src/utils/quant_levels_utils.c; sourceTree = "<group>"; };
+		E1658DF5E379FEBD0B8E5F9F8FCEE34C /* quant_levels_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = quant_levels_utils.c; path = src/utils/quant_levels_utils.c; sourceTree = "<group>"; };
 		E174D33A25308BDAE5A76B790B1423A6 /* PQLZStringUtil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PQLZStringUtil.swift; path = BFCommonKit/Classes/BFUtility/PQLZStringUtil.swift; sourceTree = "<group>"; };
 		E1A101C23BE0F067465ABE4C8DDE568A /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/WebKit.framework; sourceTree = DEVELOPER_DIR; };
 		E1EAB7AE26B1B1BC49D276095AD501DD /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = "<group>"; };
 		E2357FD8A46D89D04298C6F5C404B985 /* PQBridgeObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PQBridgeObject.m; path = BFCommonKit/Classes/BFUtility/PQBridgeObject.m; sourceTree = "<group>"; };
-		E25307E3E2151CC068BF58485981A266 /* io_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = io_dec.c; path = src/dec/io_dec.c; sourceTree = "<group>"; };
-		E4701D55AF18EE7EE6132BE8288CCDA0 /* enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_sse41.c; path = src/dsp/enc_sse41.c; sourceTree = "<group>"; };
+		E25307E3E2151CC068BF58485981A266 /* io_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = io_dec.c; path = src/dec/io_dec.c; sourceTree = "<group>"; };
+		E4701D55AF18EE7EE6132BE8288CCDA0 /* enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = enc_sse41.c; path = src/dsp/enc_sse41.c; sourceTree = "<group>"; };
 		E518177F2F0540CCA4DC9735013D7107 /* UIControl+NXCategory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIControl+NXCategory.m"; path = "BFCommonKit/Classes/BFCategorys/UIControl+NXCategory.m"; sourceTree = "<group>"; };
-		E76F4DBA772A471483889ED07BF9CD15 /* dec_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_sse41.c; path = src/dsp/dec_sse41.c; sourceTree = "<group>"; };
-		E802779BC7F78E47A634259175CE8E15 /* lossless_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_neon.c; path = src/dsp/lossless_neon.c; sourceTree = "<group>"; };
+		E76F4DBA772A471483889ED07BF9CD15 /* dec_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = dec_sse41.c; path = src/dsp/dec_sse41.c; sourceTree = "<group>"; };
+		E802779BC7F78E47A634259175CE8E15 /* lossless_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_neon.c; path = src/dsp/lossless_neon.c; sourceTree = "<group>"; };
 		E87968CED6DB3446427C08F62306AC1C /* PQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PQTextView.swift; sourceTree = "<group>"; };
-		E8B4D31C906C32AB62FF2671200C8875 /* lossless_enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_mips_dsp_r2.c; path = src/dsp/lossless_enc_mips_dsp_r2.c; sourceTree = "<group>"; };
-		E8EE7F078656FABB8F6821D10FF994BB /* KeychainAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = KeychainAccess.framework; path = KeychainAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		E8B4D31C906C32AB62FF2671200C8875 /* lossless_enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_enc_mips_dsp_r2.c; path = src/dsp/lossless_enc_mips_dsp_r2.c; sourceTree = "<group>"; };
+		E8EE7F078656FABB8F6821D10FF994BB /* KeychainAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KeychainAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		E9942FEC97B902D3FDE7D386366C9F7F /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = "<group>"; };
 		EB6466962AB66699F96062E8AB335FDA /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = "<group>"; };
-		EBB0CE3642A6C3A62FFB74188C52A7C5 /* cost.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost.c; path = src/dsp/cost.c; sourceTree = "<group>"; };
+		EBB0CE3642A6C3A62FFB74188C52A7C5 /* cost.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = cost.c; path = src/dsp/cost.c; sourceTree = "<group>"; };
 		EC9E737E85BE045F522D1C6A695635EA /* random_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = random_utils.h; path = src/utils/random_utils.h; sourceTree = "<group>"; };
 		ED3844400E5BF512FB5133B2BECBDF2B /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Sources/Utility/Result.swift; sourceTree = "<group>"; };
-		ED7CF72BB9D1ADCDED88BF3E1EA56388 /* cost_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_neon.c; path = src/dsp/cost_neon.c; sourceTree = "<group>"; };
-		EE9E4736BA05A861929E7C8C1BD2083F /* bit_reader_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = bit_reader_utils.c; path = src/utils/bit_reader_utils.c; sourceTree = "<group>"; };
+		ED7CF72BB9D1ADCDED88BF3E1EA56388 /* cost_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = cost_neon.c; path = src/dsp/cost_neon.c; sourceTree = "<group>"; };
+		EE9E4736BA05A861929E7C8C1BD2083F /* bit_reader_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = bit_reader_utils.c; path = src/utils/bit_reader_utils.c; sourceTree = "<group>"; };
 		EEDE2B1208FEDEF1E183EC9DA88F084F /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Sources/Networking/SessionDelegate.swift; sourceTree = "<group>"; };
-		EF04CA88C51A2637E8889B21F54D6B10 /* lossless_enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_sse2.c; path = src/dsp/lossless_enc_sse2.c; sourceTree = "<group>"; };
+		EF04CA88C51A2637E8889B21F54D6B10 /* lossless_enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = lossless_enc_sse2.c; path = src/dsp/lossless_enc_sse2.c; sourceTree = "<group>"; };
 		EF9DCAC3FE2BBEEE00CCE2F43DBBFF73 /* SWNetRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SWNetRequest.swift; path = BFCommonKit/Classes/BFUtility/SWNetRequest.swift; sourceTree = "<group>"; };
 		EFF9D38D66A62B1A193950731E71B8BE /* PQWeakTimer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PQWeakTimer.swift; path = BFCommonKit/Classes/BFUtility/PQWeakTimer.swift; sourceTree = "<group>"; };
-		F0395D227768D8E057DB7E846F3D002A /* enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_sse2.c; path = src/dsp/enc_sse2.c; sourceTree = "<group>"; };
-		F04D9AE27BC4F5198EEA961F4C6F87F1 /* webp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = webp_enc.c; path = src/enc/webp_enc.c; sourceTree = "<group>"; };
+		F0395D227768D8E057DB7E846F3D002A /* enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = enc_sse2.c; path = src/dsp/enc_sse2.c; sourceTree = "<group>"; };
+		F04D9AE27BC4F5198EEA961F4C6F87F1 /* webp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = webp_enc.c; path = src/enc/webp_enc.c; sourceTree = "<group>"; };
 		F078D22F91873A813FAFACE27AA5C4B8 /* mux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mux.h; path = src/webp/mux.h; sourceTree = "<group>"; };
-		F122D578E37DBF19F7876B525333A5B9 /* quant_levels_dec_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_levels_dec_utils.c; path = src/utils/quant_levels_dec_utils.c; sourceTree = "<group>"; };
+		F122D578E37DBF19F7876B525333A5B9 /* quant_levels_dec_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = quant_levels_dec_utils.c; path = src/utils/quant_levels_dec_utils.c; sourceTree = "<group>"; };
 		F182A2445B0A1B66BA1A613E4C422865 /* vp8li_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8li_dec.h; path = src/dec/vp8li_dec.h; sourceTree = "<group>"; };
 		F185CEA9D10588F0064B7E835F683A7F /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = "<group>"; };
 		F28AE01683550C63A3B9C8221F077881 /* backward_references_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = backward_references_enc.h; path = src/enc/backward_references_enc.h; sourceTree = "<group>"; };
 		F3717055653D3FDE638479059FBA383B /* Pods-BFCommonKit_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BFCommonKit_Example-acknowledgements.plist"; sourceTree = "<group>"; };
 		F3DD79936BCDC9A67DB422A27BDF9C59 /* lossless_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lossless_common.h; path = src/dsp/lossless_common.h; sourceTree = "<group>"; };
-		F49E5C0C5368F341F76BE44E1AAD88E6 /* filters_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_mips_dsp_r2.c; path = src/dsp/filters_mips_dsp_r2.c; sourceTree = "<group>"; };
-		F5611EDEA6D0375B2B9A44DCC04A79EA /* cost_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_mips_dsp_r2.c; path = src/dsp/cost_mips_dsp_r2.c; sourceTree = "<group>"; };
+		F49E5C0C5368F341F76BE44E1AAD88E6 /* filters_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = filters_mips_dsp_r2.c; path = src/dsp/filters_mips_dsp_r2.c; sourceTree = "<group>"; };
+		F5611EDEA6D0375B2B9A44DCC04A79EA /* cost_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = cost_mips_dsp_r2.c; path = src/dsp/cost_mips_dsp_r2.c; sourceTree = "<group>"; };
 		F5DB1F6A3014AC72E1247806BFE0E1C8 /* Pods-BFCommonKit_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BFCommonKit_Tests-acknowledgements.markdown"; sourceTree = "<group>"; };
 		F5F2B0F4CEC780AFDAADCAEA7CB9DDA0 /* PQCreateEmptyWAV.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PQCreateEmptyWAV.swift; path = BFCommonKit/Classes/BFUtility/PQCreateEmptyWAV.swift; sourceTree = "<group>"; };
 		F6E9C7E0C8476D636610E7D5B0DF612A /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/Image/ImageTransition.swift; sourceTree = "<group>"; };
 		F7A48E47AE30340868E205CC01308227 /* webpi_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = webpi_dec.h; path = src/dec/webpi_dec.h; sourceTree = "<group>"; };
 		F8DBA4F15DA70448AC84FE3AB24B8996 /* ImageModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageModifier.swift; path = Sources/Networking/ImageModifier.swift; sourceTree = "<group>"; };
 		F95447B398D96B9ED0C59515A9A28F5D /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Views/Indicator.swift; sourceTree = "<group>"; };
-		FA04FD815E1912F167CBDD3007B2A248 /* Pods_BFCommonKit_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_BFCommonKit_Example.framework; path = "Pods-BFCommonKit_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
+		FA04FD815E1912F167CBDD3007B2A248 /* Pods_BFCommonKit_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_BFCommonKit_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		FA3D2974FBC09BBF9FCA74A9377576A9 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = "<group>"; };
 		FA9079D86B78AFE2731248A6EBFF8FE3 /* quant.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = quant.h; path = src/dsp/quant.h; sourceTree = "<group>"; };
 		FB4FA2517EF50BF3031E8344A016B129 /* Toast-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.release.xcconfig"; sourceTree = "<group>"; };
-		FC3F555D8E769E8C93DE3C49331D44D1 /* enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_msa.c; path = src/dsp/enc_msa.c; sourceTree = "<group>"; };
+		FC3F555D8E769E8C93DE3C49331D44D1 /* enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = enc_msa.c; path = src/dsp/enc_msa.c; sourceTree = "<group>"; };
 		FC623758B70F0956C2254E48A8526214 /* NSButton+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSButton+Kingfisher.swift"; path = "Sources/Extensions/NSButton+Kingfisher.swift"; sourceTree = "<group>"; };
 		FC7CB1B5918440042AA021DA3BF9947C /* NXFileManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NXFileManager.swift; path = BFCommonKit/Classes/BFDebug/NXFileManager.swift; sourceTree = "<group>"; };
 		FDA06917E70008C9267EB2F232EA837B /* ImageFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageFormat.swift; path = Sources/Image/ImageFormat.swift; sourceTree = "<group>"; };
@@ -1251,7 +1253,6 @@
 				7F1B3D41D48B0612C9746E1C4CB4A985 /* Support Files */,
 				05A1F545AE4C4DCB07473C6B897C16DA /* webp */,
 			);
-			name = libwebp;
 			path = libwebp;
 			sourceTree = "<group>";
 		};
@@ -1355,6 +1356,7 @@
 		3A492427AFD193C3E06B12BB19F13ABB /* BFCategorys */ = {
 			isa = PBXGroup;
 			children = (
+				2D16DA4826930ADC00BE4A62 /* UserDefaults+Ext.swift */,
 				905E699E2D62BFADDF8230CFEC244FA8 /* BFBundle+Ext.swift */,
 				124B414598526CAF570DF9F7E8EBC698 /* BFColor+Ext.swift */,
 				60FF66DFCD9D0394951BB18748A2F336 /* BFInt+Ext.swift */,
@@ -1436,7 +1438,6 @@
 				3344E74C9C0297339A3B2868F3620F36 /* WebPSerializer.swift */,
 				28EE0D0032EF52D96CEF15AD1218DF42 /* Support Files */,
 			);
-			name = KingfisherWebP;
 			path = KingfisherWebP;
 			sourceTree = "<group>";
 		};
@@ -1488,7 +1489,6 @@
 				C7A86DFBBB6E5F5A1DB2A93679C52CAB /* Keychain.swift */,
 				FB23EFDCA7EB2E73846D68ED6C84EF70 /* Support Files */,
 			);
-			name = KeychainAccess;
 			path = KeychainAccess;
 			sourceTree = "<group>";
 		};
@@ -1583,7 +1583,6 @@
 				DF829A3FA5BA5026716378D34CD4B1A0 /* UILayoutSupport+Extensions.swift */,
 				24E265517E4805EF48E3B972EA2AC134 /* Support Files */,
 			);
-			name = SnapKit;
 			path = SnapKit;
 			sourceTree = "<group>";
 		};
@@ -1624,7 +1623,6 @@
 				55DF832DBA39E3B7C574734A23248BE9 /* Validation.swift */,
 				D6C43B2719FC179BFCBCE5828721653C /* Support Files */,
 			);
-			name = Alamofire;
 			path = Alamofire;
 			sourceTree = "<group>";
 		};
@@ -1721,7 +1719,6 @@
 				7F54125B4C33A8C6E4579E5E9895AB49 /* WKInterfaceImage+Kingfisher.swift */,
 				E737533A857F4B789A6BFA8AD1E2964F /* Support Files */,
 			);
-			name = Kingfisher;
 			path = Kingfisher;
 			sourceTree = "<group>";
 		};
@@ -1746,7 +1743,6 @@
 				9E95D9BFCA3ED6D8DC2E01D37C211E1F /* Toast.swift */,
 				5034DC6DB7F9BBAE3230E36B0C7D099D /* Support Files */,
 			);
-			name = "Toast-Swift";
 			path = "Toast-Swift";
 			sourceTree = "<group>";
 		};
@@ -2367,6 +2363,7 @@
 				EB4E658C8BBC81825E4A71322E12B8B6 /* PQFollowButton.swift in Sources */,
 				B3469003DC245678981443D0290CB83B /* PQGIFImageView.swift in Sources */,
 				5E20A50C8380DDCF19C9E654641C6746 /* PQHeartAnimation.swift in Sources */,
+				2D16DA4926930ADC00BE4A62 /* UserDefaults+Ext.swift in Sources */,
 				096E55C773432570B97DD7A51BD52B87 /* PQLoadingHUB.swift in Sources */,
 				851E406A310EC81C91627ABD9AB36EFE /* PQLZStringUtil.swift in Sources */,
 				320D2D04B28F45A5EC85377564AD0426 /* PQNavigatinController.swift in Sources */,
@@ -3204,8 +3201,7 @@
 				MTL_FAST_MATH = YES;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				STRIP_INSTALLED_PRODUCT = NO;
-				SWIFT_COMPILATION_MODE = wholemodule;
-				SWIFT_OPTIMIZATION_LEVEL = "-O";
+				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
 				SWIFT_VERSION = 5.0;
 				SYMROOT = "${SRCROOT}/../build";
 			};