diff --git a/.swift-version b/.swift-version index 5186d07..bf77d54 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.0 +4.2 diff --git a/BMPlayer.podspec b/BMPlayer.podspec index 19d5741..267414d 100644 --- a/BMPlayer.podspec +++ b/BMPlayer.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "BMPlayer" -s.version = "1.0.1" +s.version = "1.3.0" s.summary = "Video Player Using Swift, based on AVPlayer" s.description = <<-DESC @@ -14,9 +14,9 @@ s.author = { "Eliyar Eziz" => "eliyar917@gmail.com" } s.source = { :git => "https://github.com/BrikerMan/BMPlayer.git", :tag => s.version.to_s } s.social_media_url = 'http://weibo.com/536445669' -s.ios.deployment_target = '8.0' -s.platform = :ios, '8.0' -s.pod_target_xcconfig = { 'SWIFT_VERSION' => '4.0' } +s.ios.deployment_target = '10.0' +s.platform = :ios, '10.0' +s.pod_target_xcconfig = { 'SWIFT_VERSION' => '5.0' } s.default_subspec = 'Full' s.subspec 'Core' do |core| @@ -30,8 +30,8 @@ s.subspec 'Full' do |full| full.frameworks = 'UIKit', 'AVFoundation' full.dependency 'BMPlayer/Core' - full.dependency 'SnapKit', '~> 4.0.0' - full.dependency 'NVActivityIndicatorView', '~> 4.0.0' + full.dependency 'SnapKit', '~> 5.0.0' + full.dependency 'NVActivityIndicatorView', '~> 4.7.0' end s.subspec 'CacheSupport' do |cache| @@ -40,8 +40,8 @@ s.subspec 'CacheSupport' do |cache| cache.frameworks = 'UIKit', 'AVFoundation' cache.dependency 'BMPlayer/Core' - cache.dependency 'SnapKit', '~> 4.0.0' - cache.dependency 'NVActivityIndicatorView', '~> 4.0.0' + cache.dependency 'SnapKit', '~> 5.0.0' + cache.dependency 'NVActivityIndicatorView', '~> 4.7.0' cache.dependency 'VIMediaCache' end diff --git a/BMPlayer.xcodeproj/project.pbxproj b/BMPlayer.xcodeproj/project.pbxproj index cf36970..a48d6d5 100644 --- a/BMPlayer.xcodeproj/project.pbxproj +++ b/BMPlayer.xcodeproj/project.pbxproj @@ -136,7 +136,7 @@ 6A302EDF1DF199F700AD54B6 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0910; + LastUpgradeCheck = 1000; ORGANIZATIONNAME = BrikerMan; TargetAttributes = { 6A302EE71DF199F700AD54B6 = { @@ -207,6 +207,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -214,6 +215,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -267,6 +269,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -274,6 +277,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -327,7 +331,7 @@ PRODUCT_BUNDLE_IDENTIFIER = con.eliyar.BMPlayer; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -351,7 +355,7 @@ PRODUCT_BUNDLE_IDENTIFIER = con.eliyar.BMPlayer; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; }; name = Release; }; diff --git a/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer.xcscheme b/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer.xcscheme index 00ff555..a40f167 100644 --- a/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer.xcscheme +++ b/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Cartfile.resolved b/Cartfile.resolved index 21373a7..aaa4db3 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,2 +1,2 @@ github "SnapKit/SnapKit" "4.0.0" -github "ninjaprox/NVActivityIndicatorView" "4.0.0" +github "ninjaprox/NVActivityIndicatorView" "4.3.0" diff --git a/Example/BMPlayer.xcodeproj/project.pbxproj b/Example/BMPlayer.xcodeproj/project.pbxproj index ad609f3..9365a70 100644 --- a/Example/BMPlayer.xcodeproj/project.pbxproj +++ b/Example/BMPlayer.xcodeproj/project.pbxproj @@ -176,7 +176,6 @@ 607FACCD1AFB9204008FA782 /* Frameworks */, 607FACCE1AFB9204008FA782 /* Resources */, 3BB9401A3DB2F8DBDB154AB7 /* [CP] Embed Pods Frameworks */, - EA515DEE609F8224A2CFA28C /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -211,19 +210,17 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = CocoaPods; TargetAttributes = { 607FACCF1AFB9204008FA782 = { CreatedOnToolsVersion = 6.3.1; - DevelopmentTeam = SMPQ9YA3H4; LastSwiftMigration = 0800; ProvisioningStyle = Automatic; }; 6AAA77071CE18427009745BA = { CreatedOnToolsVersion = 7.3.1; - DevelopmentTeam = SMPQ9YA3H4; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; }; }; }; @@ -232,6 +229,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -275,10 +273,9 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh", "${BUILT_PRODUCTS_DIR}/BMPlayer/BMPlayer.framework", "${BUILT_PRODUCTS_DIR}/NVActivityIndicatorView/NVActivityIndicatorView.framework", - "${PODS_ROOT}/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework", "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework", "${BUILT_PRODUCTS_DIR}/SwipeBack/SwipeBack.framework", "${BUILT_PRODUCTS_DIR}/VIMediaCache/VIMediaCache.framework", @@ -287,14 +284,13 @@ outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BMPlayer.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NVActivityIndicatorView.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RevealServer.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwipeBack.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/VIMediaCache.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 953FA8CDEC2E175E8540A86C /* [CP] Check Pods Manifest.lock */ = { @@ -315,21 +311,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - EA515DEE609F8224A2CFA28C /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -381,6 +362,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -389,12 +371,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -422,11 +406,12 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -434,6 +419,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -442,12 +428,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -468,10 +456,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.2; VALIDATE_PRODUCT = YES; }; name = Release; @@ -484,15 +473,15 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = SMPQ9YA3H4; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = BMPlayer/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.demo.BMPlayer; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -504,15 +493,15 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - DEVELOPMENT_TEAM = SMPQ9YA3H4; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = BMPlayer/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MODULE_NAME = ExampleApp; PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.demo.BMPlayer; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -521,14 +510,13 @@ buildSettings = { CLANG_ANALYZER_NONNULL = YES; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = SMPQ9YA3H4; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = BMPlayer_Tests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.eliyar.BMPlayer-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -536,14 +524,13 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; - DEVELOPMENT_TEAM = SMPQ9YA3H4; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = BMPlayer_Tests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.eliyar.BMPlayer-Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Example/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer-Example.xcscheme b/Example/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer-Example.xcscheme index 86243bd..d6b0586 100644 --- a/Example/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer-Example.xcscheme +++ b/Example/BMPlayer.xcodeproj/xcshareddata/xcschemes/BMPlayer-Example.xcscheme @@ -1,6 +1,6 @@ @@ -60,7 +59,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Example/BMPlayer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/BMPlayer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/BMPlayer.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/BMPlayer/AppDelegate.swift b/Example/BMPlayer/AppDelegate.swift index f3f3c33..db54389 100644 --- a/Example/BMPlayer/AppDelegate.swift +++ b/Example/BMPlayer/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } diff --git a/Example/BMPlayer/BMCustomPlayer.swift b/Example/BMPlayer/BMCustomPlayer.swift index f258976..09b430d 100644 --- a/Example/BMPlayer/BMCustomPlayer.swift +++ b/Example/BMPlayer/BMCustomPlayer.swift @@ -10,7 +10,7 @@ import UIKit import BMPlayer class BMCustomPlayer: BMPlayer { - class override func storyBoardCustomControl() -> BMPlayerControlView? { + override func storyBoardCustomControl() -> BMPlayerControlView? { return BMPlayerCustomControlView() } } diff --git a/Example/BMPlayer/BMPlayerCustomControlView.swift b/Example/BMPlayer/BMPlayerCustomControlView.swift index 20954de..3ea432e 100644 --- a/Example/BMPlayer/BMPlayerCustomControlView.swift +++ b/Example/BMPlayer/BMPlayerCustomControlView.swift @@ -37,8 +37,8 @@ class BMPlayerCustomControlView: BMPlayerControlView { playbackRateButton.titleLabel?.font = UIFont.systemFont(ofSize: 12) playbackRateButton.isHidden = true playbackRateButton.snp.makeConstraints { - $0.right.equalTo(chooseDefitionView.snp.left).offset(-5) - $0.centerY.equalTo(chooseDefitionView) + $0.right.equalTo(chooseDefinitionView.snp.left).offset(-5) + $0.centerY.equalTo(chooseDefinitionView) } topMaskView.addSubview(rotateButton) @@ -52,7 +52,7 @@ class BMPlayerCustomControlView: BMPlayerControlView { rotateButton.isHidden = true rotateButton.snp.makeConstraints { $0.right.equalTo(playbackRateButton.snp.left).offset(-5) - $0.centerY.equalTo(chooseDefitionView) + $0.centerY.equalTo(chooseDefinitionView) } } diff --git a/Example/BMPlayer/BMPlayerCustomControlView2.swift b/Example/BMPlayer/BMPlayerCustomControlView2.swift index c8d97ee..c71ccb3 100644 --- a/Example/BMPlayer/BMPlayerCustomControlView2.swift +++ b/Example/BMPlayer/BMPlayerCustomControlView2.swift @@ -20,7 +20,7 @@ class BMPlayerCustomControlView2: BMPlayerControlView { override func customizeUIComponents() { // just make the view hidden topMaskView.isHidden = true - chooseDefitionView.isHidden = true + chooseDefinitionView.isHidden = true // or remove from superview playButton.removeFromSuperview() @@ -57,7 +57,7 @@ class BMPlayerCustomControlView2: BMPlayerControlView { override func updateUI(_ isForFullScreen: Bool) { topMaskView.isHidden = true - chooseDefitionView.isHidden = true + chooseDefinitionView.isHidden = true } override func playTimeDidChange(currentTime: TimeInterval, totalTime: TimeInterval) { diff --git a/Example/BMPlayer/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/BMPlayer/Images.xcassets/AppIcon.appiconset/Contents.json index b8236c6..19882d5 100644 --- a/Example/BMPlayer/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/BMPlayer/Images.xcassets/AppIcon.appiconset/Contents.json @@ -39,6 +39,11 @@ "idiom" : "iphone", "size" : "60x60", "scale" : "3x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/Example/BMPlayer/VideoPlayViewController.swift b/Example/BMPlayer/VideoPlayViewController.swift index e32be31..f2a7875 100644 --- a/Example/BMPlayer/VideoPlayViewController.swift +++ b/Example/BMPlayer/VideoPlayViewController.swift @@ -37,12 +37,12 @@ class VideoPlayViewController: UIViewController { NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterBackground), - name: NSNotification.Name.UIApplicationDidEnterBackground, + name: UIApplication.didEnterBackgroundNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(applicationWillEnterForeground), - name: NSNotification.Name.UIApplicationWillEnterForeground, + name: UIApplication.willEnterForegroundNotification, object: nil) } diff --git a/Example/BMPlayer/ViewController.swift b/Example/BMPlayer/ViewController.swift index d813e65..d039333 100644 --- a/Example/BMPlayer/ViewController.swift +++ b/Example/BMPlayer/ViewController.swift @@ -58,7 +58,7 @@ extension ViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) cell.textLabel?.text = cells[(indexPath as NSIndexPath).section][(indexPath as NSIndexPath).row] - cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator + cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator return cell } } diff --git a/Example/Podfile b/Example/Podfile index 01d8b41..ea8dadb 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -3,7 +3,15 @@ use_frameworks! target 'BMPlayer_Example' do pod 'BMPlayer/CacheSupport', :path => '../' - - pod 'Reveal-SDK', :configurations => ['Debug'] + +# pod 'Reveal-SDK', :configurations => ['Debug'] pod 'SwipeBack' ## 全能滑动手势返回,建议集成 end + +post_install do |installer| + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings['SWIFT_VERSION'] = '5.0' + end + end +end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 35e0bcf..b822ffd 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,35 +1,39 @@ PODS: - - BMPlayer/CacheSupport (1.0.0): + - BMPlayer/CacheSupport (1.3.0): - BMPlayer/Core - - NVActivityIndicatorView (~> 4.0.0) - - SnapKit (~> 4.0.0) + - NVActivityIndicatorView (~> 4.7.0) + - SnapKit (~> 5.0.0) - VIMediaCache - - BMPlayer/Core (1.0.0) - - NVActivityIndicatorView (4.0.0): - - NVActivityIndicatorView/Presenter (= 4.0.0) - - NVActivityIndicatorView/Presenter (4.0.0) - - Reveal-SDK (11) - - SnapKit (4.0.0) + - BMPlayer/Core (1.3.0) + - NVActivityIndicatorView (4.7.0): + - NVActivityIndicatorView/Presenter (= 4.7.0) + - NVActivityIndicatorView/Presenter (4.7.0) + - SnapKit (5.0.0) - SwipeBack (1.1.1) - - VIMediaCache (0.3) + - VIMediaCache (0.4) DEPENDENCIES: - BMPlayer/CacheSupport (from `../`) - - Reveal-SDK - SwipeBack +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - NVActivityIndicatorView + - SnapKit + - SwipeBack + - VIMediaCache + EXTERNAL SOURCES: BMPlayer: - :path: ../ + :path: "../" SPEC CHECKSUMS: - BMPlayer: d49b916bc794706e65adde2dcf9e5280a9e30991 - NVActivityIndicatorView: 54c9b93b6f25a4f467512680c0c90c09a1095cf2 - Reveal-SDK: 7fa13d04bb55db61ff2342a990cf731d5159361d - SnapKit: a42d492c16e80209130a3379f73596c3454b7694 + BMPlayer: 92a1c2a721694ba6ab107661e7aff670909671c6 + NVActivityIndicatorView: b19ddab2576f805cbe0fb2306cba3476e09a1dea + SnapKit: fd22d10eb9aff484d79a8724eab922c1ddf89bcf SwipeBack: d6759601b40da1f4161033feb30ab475d7d04322 - VIMediaCache: 02c03af2adf2526eddc8ee3b06e41f26e9546f38 + VIMediaCache: aa650f82cb114c68a343beb4e67416cf5eb2f3a2 -PODFILE CHECKSUM: de0a8818c1b74390b7c88fac79721798a8f20b23 +PODFILE CHECKSUM: 8d8c62882064f74fa5f1c85343d9ba80417cc081 -COCOAPODS: 1.3.1 +COCOAPODS: 1.6.1 diff --git a/Example/Pods/Local Podspecs/BMPlayer.podspec.json b/Example/Pods/Local Podspecs/BMPlayer.podspec.json index 0fd66bf..a0955b9 100644 --- a/Example/Pods/Local Podspecs/BMPlayer.podspec.json +++ b/Example/Pods/Local Podspecs/BMPlayer.podspec.json @@ -1,6 +1,6 @@ { "name": "BMPlayer", - "version": "1.0.0", + "version": "1.3.0", "summary": "Video Player Using Swift, based on AVPlayer", "description": "Video Player Using Swift, based on AVPlayer, support for the horizontal screen, vertical screen, the upper and lower slide to adjust the volume, the screen brightness, or so slide to adjust the playback progress.", "homepage": "https://github.com/BrikerMan/BMPlayer", @@ -10,14 +10,14 @@ }, "source": { "git": "https://github.com/BrikerMan/BMPlayer.git", - "tag": "1.0.0" + "tag": "1.3.0" }, "social_media_url": "http://weibo.com/536445669", "platforms": { - "ios": "8.0" + "ios": "10.0" }, "pod_target_xcconfig": { - "SWIFT_VERSION": "4.0" + "SWIFT_VERSION": "5.0" }, "default_subspecs": "Full", "subspecs": [ @@ -45,10 +45,10 @@ ], "SnapKit": [ - "~> 4.0.0" + "~> 5.0.0" ], "NVActivityIndicatorView": [ - "~> 4.0.0" + "~> 4.7.0" ] } }, @@ -68,10 +68,10 @@ ], "SnapKit": [ - "~> 4.0.0" + "~> 5.0.0" ], "NVActivityIndicatorView": [ - "~> 4.0.0" + "~> 4.7.0" ], "VIMediaCache": [ diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 35e0bcf..b822ffd 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,35 +1,39 @@ PODS: - - BMPlayer/CacheSupport (1.0.0): + - BMPlayer/CacheSupport (1.3.0): - BMPlayer/Core - - NVActivityIndicatorView (~> 4.0.0) - - SnapKit (~> 4.0.0) + - NVActivityIndicatorView (~> 4.7.0) + - SnapKit (~> 5.0.0) - VIMediaCache - - BMPlayer/Core (1.0.0) - - NVActivityIndicatorView (4.0.0): - - NVActivityIndicatorView/Presenter (= 4.0.0) - - NVActivityIndicatorView/Presenter (4.0.0) - - Reveal-SDK (11) - - SnapKit (4.0.0) + - BMPlayer/Core (1.3.0) + - NVActivityIndicatorView (4.7.0): + - NVActivityIndicatorView/Presenter (= 4.7.0) + - NVActivityIndicatorView/Presenter (4.7.0) + - SnapKit (5.0.0) - SwipeBack (1.1.1) - - VIMediaCache (0.3) + - VIMediaCache (0.4) DEPENDENCIES: - BMPlayer/CacheSupport (from `../`) - - Reveal-SDK - SwipeBack +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - NVActivityIndicatorView + - SnapKit + - SwipeBack + - VIMediaCache + EXTERNAL SOURCES: BMPlayer: - :path: ../ + :path: "../" SPEC CHECKSUMS: - BMPlayer: d49b916bc794706e65adde2dcf9e5280a9e30991 - NVActivityIndicatorView: 54c9b93b6f25a4f467512680c0c90c09a1095cf2 - Reveal-SDK: 7fa13d04bb55db61ff2342a990cf731d5159361d - SnapKit: a42d492c16e80209130a3379f73596c3454b7694 + BMPlayer: 92a1c2a721694ba6ab107661e7aff670909671c6 + NVActivityIndicatorView: b19ddab2576f805cbe0fb2306cba3476e09a1dea + SnapKit: fd22d10eb9aff484d79a8724eab922c1ddf89bcf SwipeBack: d6759601b40da1f4161033feb30ab475d7d04322 - VIMediaCache: 02c03af2adf2526eddc8ee3b06e41f26e9546f38 + VIMediaCache: aa650f82cb114c68a343beb4e67416cf5eb2f3a2 -PODFILE CHECKSUM: de0a8818c1b74390b7c88fac79721798a8f20b23 +PODFILE CHECKSUM: 8d8c62882064f74fa5f1c85343d9ba80417cc081 -COCOAPODS: 1.3.1 +COCOAPODS: 1.6.1 diff --git a/Example/Pods/NVActivityIndicatorView/README.md b/Example/Pods/NVActivityIndicatorView/README.md index 0247efd..cc2d510 100644 --- a/Example/Pods/NVActivityIndicatorView/README.md +++ b/Example/Pods/NVActivityIndicatorView/README.md @@ -4,6 +4,7 @@ NVActivityIndicatorView [![Build Status](https://travis-ci.org/ninjaprox/NVActivityIndicatorView.svg?branch=master)](https://travis-ci.org/ninjaprox/NVActivityIndicatorView) [![Cocoapods Compatible](https://img.shields.io/cocoapods/v/NVActivityIndicatorView.svg)](https://img.shields.io/cocoapods/v/NVActivityIndicatorView.svg) [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) ## Introduction `NVActivityIndicatorView` is a collection of awesome loading animations. @@ -28,13 +29,13 @@ For first-hand experience, just open the project and run it. |17. ballPulseSync | 18. ballBeat | 19. lineScalePulseOut | 20. lineScalePulseOutRapid| |21. ballScaleRipple | 22. ballScaleRippleMultiple | 23. ballSpinFadeLoader | 24. lineSpinFadeLoader| |25. triangleSkewSpin | 26. pacman | 27. ballGridBeat | 28. semiCircleSpin| -|29. ballRotateChase | 30. orbit | 31. audioEqualizer| +|29. ballRotateChase | 30. orbit | 31. audioEqualizer | 32. circleStrokeSpin| ## Installation ### Cocoapods -Install Cocoapods if need be. +Install [Cocoapods](https://cocoapods.org/#install) if need be. ```bash $ gem install cocoapods @@ -48,14 +49,25 @@ use_frameworks! pod 'NVActivityIndicatorView' ``` +If you're using `NVActivityIndicatorView` in an app extension, use `NVActivityIndicatorView/AppExtension` instead. + +```ruby +use_frameworks! + +pod 'NVActivityIndicatorView/AppExtension' +``` + Then, run the following command. ```bash $ pod install ``` + +_**Note:** Please refer to the migration note for version [`3.7.0`](#version-370) below._ + ### Carthage -Install Carthage if need be. +Install [Carthage](https://github.com/Carthage/Carthage#installing-carthage) if need be. ```bash $ brew update @@ -68,7 +80,7 @@ Add `NVActivityIndicatorView` in your `Cartfile`. github "ninjaprox/NVActivityIndicatorView" ``` -Run `carthage` to build the framework and drag the built `NVActivityIndicatorView.framework` into your Xcode project. +Run `carthage` to build the framework and drag the built `NVActivityIndicatorView.framework` in the folder appropriateto the platform, e.g. iOS, tvOS, into your Xcode project. _**Note:** You might encounter compile issue, if so please use `carthage` branch instead. Check issue [#101](https://github.com/ninjaprox/NVActivityIndicatorView/issues/101) for more information._ @@ -82,6 +94,10 @@ _**Note:** If you encounter issues while uploading the app to iTunes Connect, re ## Migration +### Version 4.4.0 + +This version requires Xcode 10.1 and Swift 4.2. + ### Version 4.0.0 This version requires Xcode 9.0 and Swift 4. @@ -90,30 +106,10 @@ This version requires Xcode 9.0 and Swift 4. This version splits `NVActivityIndicatorView` pod to 2 subpods `NVActivityIndicatorView/Presenter` and `NVActivityIndicatorView/AppExtension`. There is no need to change `pod NVActivityIndicatorView` to `pod NVActivityIndicatorView/Presenter` since it will be installed by default if you use the main pod name. -However, if you want to use `NVActivityIndicatorView` in app extension, use `pod NVActivityIndicatorView/AppExtension` instead. +However, if you want to use `NVActivityIndicatorView` in an app extension, use `pod NVActivityIndicatorView/AppExtension` instead. _**Note:** Related issue [#119](https://github.com/ninjaprox/NVActivityIndicatorView/issues/119)._ -### Version 3.6.0 - -This version requires Xcode 8.3 and Swift 3.1. - -### Version 3.0 - -This version requires Xcode 8.0 and Swift 3. - -- `NVActivityIndicatorView.startAnimation()` and `NVActivityIndicatorView.stopAnimation()` are deleted. Use `NVActivityIndicatorView.startAnimating()` and `NVActivityIndicatorView.stopAnimating()` instead. -- `UIViewController.startActivityAnimating()` and `UIViewController.stopActivityAnimating()` are deleted. Use `UIViewController.startAnimating()` and `UIViewController.stopAnimating()` instead. - -### Version 2.0 - -This version continues to spport Xcode 7.0 and Swift 2.2 and earlier. -For Swift 2.3 support, use `swift2.3` branch instead. - -```ruby -pod 'NVActivityIndicatorView', :git => 'https://github.com/ninjaprox/NVActivityIndicatorView.git', :branch => 'swift2.3' -``` - ## Usage Firstly, import `NVActivityIndicatorView`. @@ -124,7 +120,7 @@ import NVActivityIndicatorView ### Initialization -Then, there are two ways you can create NVActivityIndicatorView: +Then, there are two ways you can create `NVActivityIndicatorView`: - By storyboard, changing class of any `UIView` to `NVActivityIndicatorView`. @@ -136,8 +132,6 @@ _**Note:** Set Module to `NVActivityIndicatorView`._ NVActivityIndicatorView(frame: frame, type: type, color: color, padding: padding) ``` -_**Note:** Check [DEFAULTS](#defaults) for default values._ - ### Control Start animating. @@ -155,7 +149,7 @@ activityIndicatorView.stopAnimating() Determine if it is animating. ```swift -animating = activityIndicatorView.animating +animating = activityIndicatorView.isAnimating ``` ### Change properties @@ -164,7 +158,7 @@ In storyboard, you can change all properties in Attributes inspector tab of Util _**Note:** Use one of values (case-insensitive) in [Animation types](#animation-types) for `Type Name`._ -All properties are public so you can change them all after initiating. +All properties are public so you can change them after initializing. _**Note:** All changes must be made before calling `startAnimating()`._ @@ -188,6 +182,12 @@ Stop animating. stopAnimating() ``` +Check if it is animating. + +```swift +animating = isAnimating +``` + Or you can use `NVActivityIndicatorPresenter` to display UI blocker anywhere. Start animating. @@ -198,7 +198,7 @@ let activityData = ActivityData() NVActivityIndicatorPresenter.sharedInstance.startAnimating(activityData) ``` -_**Note:** Check [documentation](http://cocoadocs.org/docsets/NVActivityIndicatorView) for detail of `ActivityData`._ +_**Note:** Check [documentation](https://nvactivityindicatorview.vinhis.me) for detail of `ActivityData`._ Stop animating. @@ -212,73 +212,22 @@ Change message. NVActivityIndicatorPresenter.sharedInstance.setMessage("Done") ``` -### DEFAULTS - -There are global defaults for all `NVActivityIndicatorView` instances. - -- Default animation type. +Check if it is animating. ```swift -NVActivityIndicatorView.DEFAULT_TYPE = .ballSpinFadeLoader +animating = NVActivityIndicatorPresenter.sharedInstance.isAnimating ``` -- Default color of activity indicator view. - -```swift -NVActivityIndicatorView.DEFAULT_COLOR = UIColor.white -``` +#### Fade in/out animation -- Default color of the text below the activity indicator view when using an `NVActivityIndicatorPresenter`. The presentor will use the activity indicator `color` for the text if it is set but a `textColor` is not. `DEFAULT_TEXT_COLOR` is only used when neither are set. +You have control over showing and hiding UI blocker animation. ```swift -NVActivityIndicatorView.DEFAULT_TEXT_COLOR = UIColor.white +startAnimating(fadeInAnimation: fadeInAnimation) +stopAnimating(fadeOutAnimation) ``` -- Default padding of activity indicator view. - -```swift -NVActivityIndicatorView.DEFAULT_PADDING = CGFloat(0) -``` - -- Default size of activity indicator view used in UI blocker. - -```swift -NVActivityIndicatorView.DEFAULT_BLOCKER_SIZE = CGSizeMake(60, 60) -``` - -- Default background color of UI blocker. - -```swift -NVActivityIndicatorView.DEFAULT_BLOCKER_BACKGROUND_COLOR = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5) -``` - -- Default display time threshold. - -> Default time that has to be elapsed (between calls of `startAnimating()` and `stopAnimating()`) in order to actually display UI blocker. It should be set thinking about what the minimum duration of an activity is to be worth showing it to the user. If the activity ends before this time threshold, then it will not be displayed at all. - -```swift -NVActivityIndicatorView.DEFAULT_BLOCKER_DISPLAY_TIME_THRESHOLD = 0 // in milliseconds -``` - -- Default minimum display time. - -> Default minimum display time of UI blocker. Its main purpose is to avoid flashes showing and hiding it so fast. For instance, setting it to 200ms will force UI blocker to be shown for at least this time (regardless of calling `stopAnimating()` ealier). - -```swift -NVActivityIndicatorView.DEFAULT_BLOCKER_MINIMUM_DISPLAY_TIME = 0 // in milliseconds -``` - -- Default message displayed in UI blocker. - -```swift -NVActivityIndicatorView.DEFAULT_BLOCKER_MESSAGE: String? = nil -``` - -- Default font of message displayed in UI blocker. - -```swift -NVActivityIndicatorView.DEFAULT_BLOCKER_MESSAGE_FONT = UIFont.boldSystemFont(ofSize: 20) -``` +Check `DEFAULT_FADE_IN_ANIMATION` and `DEFAULT_FADE_OUT_ANIMATION` for examples of how to implement animation. ## Acknowledgment diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift index 595ada3..05622bb 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift @@ -56,7 +56,11 @@ class NVActivityIndicatorAnimationBallBeat: NVActivityIndicatorAnimationDelegate let animation = CAAnimationGroup() animation.animations = [scaleAnimation, opacityAnimation] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .linear) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif animation.duration = duration animation.repeatCount = HUGE animation.isRemovedOnCompletion = false diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift index f6b9979..94652bd 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift @@ -48,7 +48,11 @@ class NVActivityIndicatorAnimationBallClipRotate: NVActivityIndicatorAnimationDe let animation = CAAnimationGroup() animation.animations = [scaleAnimation, rotateAnimation] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .linear) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif animation.duration = duration animation.repeatCount = HUGE animation.isRemovedOnCompletion = false diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift index 592691b..6dc6aa0 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift @@ -33,7 +33,11 @@ class NVActivityIndicatorAnimationBallClipRotateMultiple: NVActivityIndicatorAni let bigCircleSize: CGFloat = size.width let smallCircleSize: CGFloat = size.width / 2 let longDuration: CFTimeInterval = 1 + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + #endif circleOf(shape: .ringTwoHalfHorizontal, duration: longDuration, @@ -81,6 +85,7 @@ class NVActivityIndicatorAnimationBallClipRotateMultiple: NVActivityIndicatorAni return animation } + // swiftlint:disable:next function_parameter_count func circleOf(shape: NVActivityIndicatorShape, duration: CFTimeInterval, timingFunction: CAMediaTimingFunction, layer: CALayer, size: CGFloat, color: UIColor, reverse: Bool) { let circle = shape.layerWith(size: CGSize(width: size, height: size), color: color) let frame = CGRect(x: (layer.bounds.size.width - size) / 2, diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift diff --git a/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallDoubleBounce.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallDoubleBounce.swift new file mode 100644 index 0000000..02454bb --- /dev/null +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallDoubleBounce.swift @@ -0,0 +1,65 @@ +// +// NVActivityIndicatorAnimationBallsBounce.swift +// NVActivityIndicatorView +// +// The MIT License (MIT) + +// Copyright (c) 2016 Vinh Nguyen + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +import UIKit + +class NVActivityIndicatorAnimationBallDoubleBounce: NVActivityIndicatorAnimationDelegate { + + func setUpAnimation(in layer: CALayer, size: CGSize, color: UIColor) { + for index in (0...1) { + bouncingBall(in: layer, size: size, color: color, startingAt: CACurrentMediaTime() + Double(index)) + } + } + + fileprivate func bouncingBall(in layer: CALayer, size: CGSize, color: UIColor, startingAt: CFTimeInterval) { + // Scale animation + let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") + scaleAnimation.duration = 2 + scaleAnimation.keyTimes = [0, 0.5, 1] + scaleAnimation.values = [-1, 0, -1] + + #if swift(>=4.2) + scaleAnimation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + #else + scaleAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + #endif + scaleAnimation.repeatCount = HUGE + scaleAnimation.isRemovedOnCompletion = false + + let circle = NVActivityIndicatorShape.circle.layerWith(size: size, color: color) + let frame = CGRect(x: (layer.bounds.size.width - size.width) / 2, + y: (layer.bounds.size.height - size.height) / 2, + width: size.width, + height: size.height) + + scaleAnimation.beginTime = startingAt + circle.frame = frame + circle.opacity = 0.6 + circle.add(scaleAnimation, forKey: "animation") + layer.addSublayer(circle) + } +} diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift index 66ece23..80886c2 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift @@ -37,7 +37,11 @@ class NVActivityIndicatorAnimationBallGridBeat: NVActivityIndicatorAnimationDele let durations = [0.96, 0.93, 1.19, 1.13, 1.34, 0.94, 1.2, 0.82, 1.19] let beginTime = CACurrentMediaTime() let beginTimes = [0.36, 0.4, 0.68, 0.41, 0.71, -0.15, -0.12, 0.01, 0.32] + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .default) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionDefault) + #endif // Animation let animation = CAKeyframeAnimation(keyPath: "opacity") diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift index 67e99a3..48a278d 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift @@ -37,7 +37,11 @@ class NVActivityIndicatorAnimationBallGridPulse: NVActivityIndicatorAnimationDel let durations: [CFTimeInterval] = [0.72, 1.02, 1.28, 1.42, 1.45, 1.18, 0.87, 1.45, 1.06] let beginTime = CACurrentMediaTime() let beginTimes: [CFTimeInterval] = [ -0.06, 0.25, -0.17, 0.48, 0.31, 0.03, 0.46, 0.78, 0.45] + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .default) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionDefault) + #endif // Scale animation let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift index b2b49a4..b28a1db 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift @@ -38,7 +38,11 @@ class NVActivityIndicatorAnimationBallPulseSync: NVActivityIndicatorAnimationDel let duration: CFTimeInterval = 0.6 let beginTime = CACurrentMediaTime() let beginTimes: [CFTimeInterval] = [0.07, 0.14, 0.21] + #if swift(>=4.2) + let timingFunciton = CAMediaTimingFunction(name: .easeInEaseOut) + #else let timingFunciton = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + #endif // Animation let animation = CAKeyframeAnimation(keyPath: "transform.translation.y") diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift index 5c78617..e6b1d65 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift @@ -50,7 +50,11 @@ class NVActivityIndicatorAnimationBallScale: NVActivityIndicatorAnimationDelegat let animation = CAAnimationGroup() animation.animations = [scaleAnimation, opacityAnimation] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + #endif animation.duration = duration animation.repeatCount = HUGE animation.isRemovedOnCompletion = false diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift index 5ad1a8b..96ba34f 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift @@ -52,7 +52,11 @@ class NVActivityIndicatorAnimationBallScaleMultiple: NVActivityIndicatorAnimatio let animation = CAAnimationGroup() animation.animations = [scaleAnimation, opacityAnimation] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .linear) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif animation.duration = duration animation.repeatCount = HUGE animation.isRemovedOnCompletion = false diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift index c368d44..45f1a3c 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift @@ -56,7 +56,11 @@ class NVActivityIndicatorAnimationBallSpinFadeLoader: NVActivityIndicatorAnimati let animation = CAAnimationGroup() animation.animations = [scaleAnimation, opacityAnimaton] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .linear) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif animation.duration = duration animation.repeatCount = HUGE animation.isRemovedOnCompletion = false diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift similarity index 93% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift index f9ee7f4..4ea3d43 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift @@ -36,7 +36,11 @@ class NVActivityIndicatorAnimationBallTrianglePath: NVActivityIndicatorAnimation let x = (layer.bounds.size.width - size.width) / 2 let y = (layer.bounds.size.height - size.height) / 2 let duration: CFTimeInterval = 2 + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + #endif // Animation let animation = CAKeyframeAnimation(keyPath: "transform") @@ -76,7 +80,11 @@ class NVActivityIndicatorAnimationBallTrianglePath: NVActivityIndicatorAnimation let values = NSMutableArray(capacity: 5) for rawValue in rawValues { + #if swift(>=4.2) + let point = NSCoder.cgPoint(for: translateString(rawValue, deltaX: deltaX, deltaY: deltaY)) + #else let point = CGPointFromString(translateString(rawValue, deltaX: deltaX, deltaY: deltaY)) + #endif values.add(NSValue(caTransform3D: CATransform3DMakeTranslation(point.x, point.y, 0))) } @@ -87,7 +95,7 @@ class NVActivityIndicatorAnimationBallTrianglePath: NVActivityIndicatorAnimation let valueMutableString = NSMutableString(string: valueString) let fullDeltaX = 2 * deltaX let fullDeltaY = 2 * deltaY - var range = NSMakeRange(0, valueMutableString.length) + var range = NSRange(location: 0, length: valueMutableString.length) valueMutableString.replaceOccurrences(of: "hx", with: "\(deltaX)", options: NSString.CompareOptions.caseInsensitive, range: range) range.length = valueMutableString.length diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift index ae3560a..4d58b8a 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift @@ -41,13 +41,17 @@ class NVActivityIndicatorAnimationBallZigZag: NVActivityIndicatorAnimationDelega let animation = CAKeyframeAnimation(keyPath: "transform") animation.keyTimes = [0, 0.33, 0.66, 1] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .linear) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif animation.values = [ NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(-deltaX, -deltaY, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(deltaX, -deltaY, 0)), - NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), + NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)) ] animation.duration = duration animation.repeatCount = HUGE @@ -61,7 +65,7 @@ class NVActivityIndicatorAnimationBallZigZag: NVActivityIndicatorAnimationDelega NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(deltaX, deltaY, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(-deltaX, deltaY, 0)), - NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), + NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)) ] // Draw circle 2 diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift index 6dc4f50..39d5446 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift @@ -40,13 +40,17 @@ class NVActivityIndicatorAnimationBallZigZagDeflect: NVActivityIndicatorAnimatio let animation = CAKeyframeAnimation(keyPath: "transform") animation.keyTimes = [0, 0.33, 0.66, 1] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .linear) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif animation.values = [ NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(-deltaX, -deltaY, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(deltaX, -deltaY, 0)), - NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), + NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)) ] animation.duration = duration animation.repeatCount = HUGE @@ -61,7 +65,7 @@ class NVActivityIndicatorAnimationBallZigZagDeflect: NVActivityIndicatorAnimatio NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(deltaX, deltaY, 0)), NSValue(caTransform3D: CATransform3DMakeTranslation(-deltaX, deltaY, 0)), - NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)), + NSValue(caTransform3D: CATransform3DMakeTranslation(0, 0, 0)) ] // Draw circle 2 diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift diff --git a/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCircleStrokeSpin.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCircleStrokeSpin.swift new file mode 100644 index 0000000..f50765b --- /dev/null +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCircleStrokeSpin.swift @@ -0,0 +1,81 @@ +// +// NVActivityIndicatorAnimationCircleStrokeSpin.swift +// NVActivityIndicatorView +// +// The MIT License (MIT) + +// Copyright (c) 2016 Vinh Nguyen + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// + +import UIKit + +class NVActivityIndicatorAnimationCircleStrokeSpin: NVActivityIndicatorAnimationDelegate { + + func setUpAnimation(in layer: CALayer, size: CGSize, color: UIColor) { + let beginTime: Double = 0.5 + let strokeStartDuration: Double = 1.2 + let strokeEndDuration: Double = 0.7 + + let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation") + rotationAnimation.byValue = Float.pi * 2 + #if swift(>=4.2) + rotationAnimation.timingFunction = CAMediaTimingFunction(name: .linear) + #else + rotationAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif + + let strokeEndAnimation = CABasicAnimation(keyPath: "strokeEnd") + strokeEndAnimation.duration = strokeEndDuration + strokeEndAnimation.timingFunction = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 0.2, 1.0) + strokeEndAnimation.fromValue = 0 + strokeEndAnimation.toValue = 1 + + let strokeStartAnimation = CABasicAnimation(keyPath: "strokeStart") + strokeStartAnimation.duration = strokeStartDuration + strokeStartAnimation.timingFunction = CAMediaTimingFunction(controlPoints: 0.4, 0.0, 0.2, 1.0) + strokeStartAnimation.fromValue = 0 + strokeStartAnimation.toValue = 1 + strokeStartAnimation.beginTime = beginTime + + let groupAnimation = CAAnimationGroup() + groupAnimation.animations = [rotationAnimation, strokeEndAnimation, strokeStartAnimation] + groupAnimation.duration = strokeStartDuration + beginTime + groupAnimation.repeatCount = .infinity + groupAnimation.isRemovedOnCompletion = false + #if swift(>=4.2) + groupAnimation.fillMode = .forwards + #else + groupAnimation.fillMode = kCAFillModeForwards + #endif + + let circle = NVActivityIndicatorShape.stroke.layerWith(size: size, color: color) + let frame = CGRect( + x: (layer.bounds.width - size.width) / 2, + y: (layer.bounds.height - size.height) / 2, + width: size.width, + height: size.height + ) + + circle.frame = frame + circle.add(groupAnimation, forKey: "animation") + layer.addSublayer(circle) + } +} diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift index 2ab8e18..91f6025 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift @@ -38,7 +38,11 @@ class NVActivityIndicatorAnimationCubeTransition: NVActivityIndicatorAnimationDe let duration: CFTimeInterval = 1.6 let beginTime = CACurrentMediaTime() let beginTimes: [CFTimeInterval] = [0, -0.8] + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + #endif // Scale animation let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") @@ -58,7 +62,7 @@ class NVActivityIndicatorAnimationCubeTransition: NVActivityIndicatorAnimationDe NSValue(cgSize: CGSize(width: deltaX, height: 0)), NSValue(cgSize: CGSize(width: deltaX, height: deltaY)), NSValue(cgSize: CGSize(width: 0, height: deltaY)), - NSValue(cgSize: CGSize(width: 0, height: 0)), + NSValue(cgSize: CGSize(width: 0, height: 0)) ] translateAnimation.duration = duration diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift index fc1834f..aed28f0 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift @@ -36,7 +36,11 @@ class NVActivityIndicatorAnimationLineScaleParty: NVActivityIndicatorAnimationDe let durations: [CFTimeInterval] = [1.26, 0.43, 1.01, 0.73] let beginTime = CACurrentMediaTime() let beginTimes: [CFTimeInterval] = [0.77, 0.29, 0.28, 0.74] + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .default) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionDefault) + #endif // Animation let animation = CAKeyframeAnimation(keyPath: "transform.scale") diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift index 23db058..2564afa 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift @@ -37,7 +37,11 @@ class NVActivityIndicatorAnimationLineSpinFadeLoader: NVActivityIndicatorAnimati let duration: CFTimeInterval = 1.2 let beginTime = CACurrentMediaTime() let beginTimes: [CFTimeInterval] = [0.12, 0.24, 0.36, 0.48, 0.6, 0.72, 0.84, 0.96] + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) + #endif // Animation let animation = CAKeyframeAnimation(keyPath: "opacity") diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift similarity index 91% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift index 524bafe..fdee63b 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift @@ -50,7 +50,11 @@ class NVActivityIndicatorAnimationOrbit: NVActivityIndicatorAnimationDelegate { let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") scaleAnimation.keyTimes = [0, 0.45, 0.45, 1] + #if swift(>=4.2) + scaleAnimation.timingFunction = CAMediaTimingFunction(name: .linear) + #else scaleAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif scaleAnimation.values = [0, 0, 1.3, 2] scaleAnimation.duration = duration @@ -59,7 +63,11 @@ class NVActivityIndicatorAnimationOrbit: NVActivityIndicatorAnimationDelegate { let timingFunction = CAMediaTimingFunction(controlPoints: 0.19, 1, 0.22, 1) opacityAnimation.keyTimes = [0, 0.45, 1] + #if swift(>=4.2) + scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: .linear), timingFunction] + #else scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear), timingFunction] + #endif opacityAnimation.values = [0.8, 0.8, 0] opacityAnimation.duration = duration @@ -88,7 +96,11 @@ class NVActivityIndicatorAnimationOrbit: NVActivityIndicatorAnimationDelegate { let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") scaleAnimation.keyTimes = [0, 0.55, 0.55, 1] + #if swift(>=4.2) + scaleAnimation.timingFunction = CAMediaTimingFunction(name: .linear) + #else scaleAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif scaleAnimation.values = [0, 0, 1.3, 2.1] scaleAnimation.duration = duration @@ -97,7 +109,11 @@ class NVActivityIndicatorAnimationOrbit: NVActivityIndicatorAnimationDelegate { let timingFunction = CAMediaTimingFunction(controlPoints: 0.19, 1, 0.22, 1) opacityAnimation.keyTimes = [0, 0.55, 0.65, 1] + #if swift(>=4.2) + scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: .linear), timingFunction] + #else scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear), timingFunction] + #endif opacityAnimation.values = [0.7, 0.7, 0, 0] opacityAnimation.duration = duration @@ -124,7 +140,11 @@ class NVActivityIndicatorAnimationOrbit: NVActivityIndicatorAnimationDelegate { func coreInLayer(_ layer: CALayer, size _: CGSize, color: UIColor) { let inTimingFunction = CAMediaTimingFunction(controlPoints: 0.7, 0, 1, 0.5) let outTimingFunction = CAMediaTimingFunction(controlPoints: 0, 0.7, 0.5, 1) + #if swift(>=4.2) + let standByTimingFunction = CAMediaTimingFunction(name: .linear) + #else let standByTimingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif // Scale animation let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale") diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift similarity index 95% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift index f1d7c9a..1b22dfe 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift @@ -37,7 +37,11 @@ class NVActivityIndicatorAnimationPacman: NVActivityIndicatorAnimationDelegate { func pacmanInLayer(_ layer: CALayer, size: CGSize, color: UIColor) { let pacmanSize = 2 * size.width / 3 let pacmanDuration: CFTimeInterval = 0.5 + #if swift(>=4.2) + let timingFunction = CAMediaTimingFunction(name: .default) + #else let timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionDefault) + #endif // Stroke start animation let strokeStartAnimation = CAKeyframeAnimation(keyPath: "strokeStart") @@ -99,7 +103,11 @@ class NVActivityIndicatorAnimationPacman: NVActivityIndicatorAnimationDelegate { let animation = CAAnimationGroup() animation.animations = [translateAnimation, opacityAnimation] + #if swift(>=4.2) + animation.timingFunction = CAMediaTimingFunction(name: .linear) + #else animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear) + #endif animation.duration = circleDuration animation.repeatCount = HUGE animation.isRemovedOnCompletion = false diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift similarity index 100% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift similarity index 98% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift index 40f4422..049aa0a 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift @@ -43,7 +43,7 @@ class NVActivityIndicatorAnimationSquareSpin: NVActivityIndicatorAnimationDelega NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: CGFloat(Double.pi)), createRotateYTransform(angle: 0))), NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: CGFloat(Double.pi)), createRotateYTransform(angle: CGFloat(Double.pi)))), NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: 0), createRotateYTransform(angle: CGFloat(Double.pi)))), - NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: 0), createRotateYTransform(angle: 0))), + NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: 0), createRotateYTransform(angle: 0))) ] animation.duration = duration animation.repeatCount = HUGE diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift similarity index 98% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift index 4c81873..9f5f29d 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift @@ -45,7 +45,7 @@ class NVActivityIndicatorAnimationTriangleSkewSpin: NVActivityIndicatorAnimation NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: CGFloat(Double.pi)), createRotateYTransform(angle: 0))), NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: CGFloat(Double.pi)), createRotateYTransform(angle: CGFloat(Double.pi)))), NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: 0), createRotateYTransform(angle: CGFloat(Double.pi)))), - NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: 0), createRotateYTransform(angle: 0))), + NSValue(caTransform3D: CATransform3DConcat(createRotateXTransform(angle: 0), createRotateYTransform(angle: 0))) ] animation.duration = duration animation.repeatCount = HUGE diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift similarity index 96% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift index 159b838..33ef1e5 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift @@ -27,6 +27,7 @@ import UIKit +// swiftlint:disable:next class_delegate_protocol protocol NVActivityIndicatorAnimationDelegate { func setUpAnimation(in layer: CALayer, size: CGSize, color: UIColor) } diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorShape.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorShape.swift similarity index 93% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorShape.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorShape.swift index 767609d..efc83fa 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorShape.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorShape.swift @@ -38,7 +38,9 @@ enum NVActivityIndicatorShape { case triangle case line case pacman + case stroke + // swiftlint:disable:next cyclomatic_complexity function_body_length func layerWith(size: CGSize, color: UIColor) -> CALayer { let layer: CAShapeLayer = CAShapeLayer() var path: UIBezierPath = UIBezierPath() @@ -141,6 +143,15 @@ enum NVActivityIndicatorShape { layer.fillColor = nil layer.strokeColor = color.cgColor layer.lineWidth = size.width / 2 + case .stroke: + path.addArc(withCenter: CGPoint(x: size.width / 2, y: size.height / 2), + radius: size.width / 2, + startAngle: -(.pi / 2), + endAngle: .pi + .pi / 2, + clockwise: true) + layer.fillColor = nil + layer.strokeColor = color.cgColor + layer.lineWidth = 2 } layer.backgroundColor = nil diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorView.swift similarity index 82% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorView.swift index b7ee20a..229374d 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/NVActivityIndicatorView.swift @@ -49,6 +49,7 @@ import UIKit - BallScaleMultiple: BallScaleMultiple animation. - BallPulseSync: BallPulseSync animation. - BallBeat: BallBeat animation. + - BallDoubleBounce: BallDoubleBounce animation. - LineScalePulseOut: LineScalePulseOut animation. - LineScalePulseOutRapid: LineScalePulseOutRapid animation. - BallScaleRipple: BallScaleRipple animation. @@ -62,8 +63,9 @@ import UIKit - BallRotateChase: BallRotateChase animation. - Orbit: Orbit animation. - AudioEqualizer: AudioEqualizer animation. + - CircleStrokeSpin: CircleStrokeSpin animation. */ -public enum NVActivityIndicatorType: Int { +public enum NVActivityIndicatorType: CaseIterable { /** Blank. @@ -178,6 +180,12 @@ public enum NVActivityIndicatorType: Int { - returns: Instance of NVActivityIndicatorAnimationBallBeat. */ case ballBeat + /** + BallDoubleBounce. + + - returns: Instance of NVActivityIndicatorAnimationBallDoubleBounce. + */ + case ballDoubleBounce /** LineScalePulseOut. @@ -256,9 +264,14 @@ public enum NVActivityIndicatorType: Int { - returns: Instance of NVActivityIndicatorAnimationAudioEqualizer. */ case audioEqualizer + /** + Stroke. + + - returns: Instance of NVActivityIndicatorAnimationCircleStrokeSpin. + */ + case circleStrokeSpin - static let allTypes = (blank.rawValue ... audioEqualizer.rawValue).map { NVActivityIndicatorType(rawValue: $0)! } - + // swiftlint:disable:next cyclomatic_complexity function_body_length func animation() -> NVActivityIndicatorAnimationDelegate { switch self { case .blank: @@ -299,6 +312,8 @@ public enum NVActivityIndicatorType: Int { return NVActivityIndicatorAnimationBallPulseSync() case .ballBeat: return NVActivityIndicatorAnimationBallBeat() + case .ballDoubleBounce: + return NVActivityIndicatorAnimationBallDoubleBounce() case .lineScalePulseOut: return NVActivityIndicatorAnimationLineScalePulseOut() case .lineScalePulseOutRapid: @@ -325,12 +340,24 @@ public enum NVActivityIndicatorType: Int { return NVActivityIndicatorAnimationOrbit() case .audioEqualizer: return NVActivityIndicatorAnimationAudioEqualizer() + case .circleStrokeSpin: + return NVActivityIndicatorAnimationCircleStrokeSpin() } } } +/// Function that performs fade in/out animation. +public typealias FadeInAnimation = (UIView) -> Void + +/// Function that performs fade out animation. +/// +/// - Note: Must call the second parameter on the animation completion. +public typealias FadeOutAnimation = (UIView, @escaping () -> Void) -> Void + +// swiftlint:disable file_length /// Activity indicator view with nice animations public final class NVActivityIndicatorView: UIView { + // swiftlint:disable identifier_name /// Default type. Default value is .BallSpinFadeLoader. public static var DEFAULT_TYPE: NVActivityIndicatorType = .ballSpinFadeLoader @@ -347,20 +374,51 @@ public final class NVActivityIndicatorView: UIView { public static var DEFAULT_BLOCKER_SIZE = CGSize(width: 60, height: 60) /// Default display time threshold to actually display UI blocker. Default value is 0 ms. + /// + /// - note: + /// Default time that has to be elapsed (between calls of `startAnimating()` and `stopAnimating()`) in order to actually display UI blocker. It should be set thinking about what the minimum duration of an activity is to be worth showing it to the user. If the activity ends before this time threshold, then it will not be displayed at all. public static var DEFAULT_BLOCKER_DISPLAY_TIME_THRESHOLD = 0 /// Default minimum display time of UI blocker. Default value is 0 ms. + /// + /// - note: + /// Default minimum display time of UI blocker. Its main purpose is to avoid flashes showing and hiding it so fast. For instance, setting it to 200ms will force UI blocker to be shown for at least this time (regardless of calling `stopAnimating()` ealier). public static var DEFAULT_BLOCKER_MINIMUM_DISPLAY_TIME = 0 /// Default message displayed in UI blocker. Default value is nil. public static var DEFAULT_BLOCKER_MESSAGE: String? + /// Default message spacing to activity indicator view in UI blocker. Default value is 8. + public static var DEFAULT_BLOCKER_MESSAGE_SPACING = CGFloat(8.0) + /// Default font of message displayed in UI blocker. Default value is bold system font, size 20. public static var DEFAULT_BLOCKER_MESSAGE_FONT = UIFont.boldSystemFont(ofSize: 20) /// Default background color of UI blocker. Default value is UIColor(red: 0, green: 0, blue: 0, alpha: 0.5) public static var DEFAULT_BLOCKER_BACKGROUND_COLOR = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5) + /// Default fade in animation. + public static var DEFAULT_FADE_IN_ANIMATION: FadeInAnimation = { view in + view.alpha = 0 + UIView.animate(withDuration: 0.25) { + view.alpha = 1 + } + } + + /// Default fade out animation. + public static var DEFAULT_FADE_OUT_ANIMATION: FadeOutAnimation = { (view, complete) in + UIView.animate(withDuration: 0.25, + animations: { + view.alpha = 0 + }, + completion: { completed in + if completed { + complete() + } + }) + } + // swiftlint:enable identifier_name + /// Animation type. public var type: NVActivityIndicatorType = NVActivityIndicatorView.DEFAULT_TYPE @@ -381,7 +439,7 @@ public final class NVActivityIndicatorView: UIView { @IBInspectable public var padding: CGFloat = NVActivityIndicatorView.DEFAULT_PADDING /// Current status of animation, read-only. - @available(*, deprecated: 3.1) + @available(*, deprecated) public var animating: Bool { return isAnimating } /// Current status of animation, read-only. @@ -435,10 +493,22 @@ public final class NVActivityIndicatorView: UIView { return CGSize(width: bounds.width, height: bounds.height) } + public override var bounds: CGRect { + didSet { + // setup the animation again for the new bounds + if oldValue != bounds && isAnimating { + setUpAnimation() + } + } + } + /** Start animating. */ public final func startAnimating() { + guard !isAnimating else { + return + } isHidden = false isAnimating = true layer.speed = 1 @@ -449,6 +519,9 @@ public final class NVActivityIndicatorView: UIView { Stop animating. */ public final func stopAnimating() { + guard isAnimating else { + return + } isHidden = true isAnimating = false layer.sublayers?.removeAll() @@ -456,8 +529,9 @@ public final class NVActivityIndicatorView: UIView { // MARK: Internal + // swiftlint:disable:next identifier_name func _setTypeName(_ typeName: String) { - for item in NVActivityIndicatorType.allTypes { + for item in NVActivityIndicatorType.allCases { if String(describing: item).caseInsensitiveCompare(typeName) == ComparisonResult.orderedSame { type = item break @@ -473,7 +547,11 @@ public final class NVActivityIndicatorView: UIView { private final func setUpAnimation() { let animation: NVActivityIndicatorAnimationDelegate = type.animation() - var animationRect = UIEdgeInsetsInsetRect(frame, UIEdgeInsetsMake(padding, padding, padding, padding)) + #if swift(>=4.2) + var animationRect = frame.inset(by: UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding)) + #else + var animationRect = UIEdgeInsetsInsetRect(frame, UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding)) + #endif let minEdge = min(animationRect.width, animationRect.height) layer.sublayers = nil diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift similarity index 60% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift index fcff99d..0220d09 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift @@ -38,6 +38,9 @@ public final class ActivityData { /// Font of message displayed under activity indicator view. let messageFont: UIFont + /// Message spacing to activity indicator view. + let messageSpacing: CGFloat + /// Animation type. let type: NVActivityIndicatorType @@ -67,6 +70,7 @@ public final class ActivityData { - parameter size: size of activity indicator view. - parameter message: message displayed under activity indicator view. - parameter messageFont: font of message displayed under activity indicator view. + - parameter messageSpacing: message spacing to activity indicator view. - parameter type: animation type. - parameter color: color of activity indicator view. - parameter padding: padding of activity indicator view. @@ -79,6 +83,7 @@ public final class ActivityData { public init(size: CGSize? = nil, message: String? = nil, messageFont: UIFont? = nil, + messageSpacing: CGFloat? = nil, type: NVActivityIndicatorType? = nil, color: UIColor? = nil, padding: CGFloat? = nil, @@ -89,6 +94,7 @@ public final class ActivityData { self.size = size ?? NVActivityIndicatorView.DEFAULT_BLOCKER_SIZE self.message = message ?? NVActivityIndicatorView.DEFAULT_BLOCKER_MESSAGE self.messageFont = messageFont ?? NVActivityIndicatorView.DEFAULT_BLOCKER_MESSAGE_FONT + self.messageSpacing = messageSpacing ?? NVActivityIndicatorView.DEFAULT_BLOCKER_MESSAGE_SPACING self.type = type ?? NVActivityIndicatorView.DEFAULT_TYPE self.color = color ?? NVActivityIndicatorView.DEFAULT_COLOR self.padding = padding ?? NVActivityIndicatorView.DEFAULT_PADDING @@ -99,13 +105,99 @@ public final class ActivityData { } } +private protocol NVActivityIndicatorPresenterState { + func startAnimating(presenter: NVActivityIndicatorPresenter, _ fadeInAnimation: FadeInAnimation?) + func stopAnimating(presenter: NVActivityIndicatorPresenter, _ fadeOutAnimation: FadeOutAnimation?) +} + +private struct NVActivityIndicatorPresenterStateWaitingToStart: NVActivityIndicatorPresenterState { + func startAnimating(presenter: NVActivityIndicatorPresenter, _ fadeInAnimation: FadeInAnimation?) { + guard let activityData = presenter.data else { return } + + presenter.show(with: activityData, fadeInAnimation) + presenter.state = .animating + presenter.waitingToStartGroup.leave() + } + + func stopAnimating(presenter: NVActivityIndicatorPresenter, _ fadeOutAnimation: FadeOutAnimation?) { + presenter.state = .stopped + presenter.waitingToStartGroup.leave() + } +} + +private struct NVActivityIndicatorPresenterStateAnimating: NVActivityIndicatorPresenterState { + func startAnimating(presenter: NVActivityIndicatorPresenter, _ fadeInAnimation: FadeInAnimation?) { + // Do nothing + } + + func stopAnimating(presenter: NVActivityIndicatorPresenter, _ fadeOutAnimation: FadeOutAnimation?) { + guard let activityData = presenter.data else { return } + + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(activityData.minimumDisplayTime)) { + guard presenter.state == .waitingToStop else { return } + + presenter.stopAnimating(fadeOutAnimation) + } + presenter.state = .waitingToStop + } +} + +private struct NVActivityIndicatorPresenterStateWaitingToStop: NVActivityIndicatorPresenterState { + func startAnimating(presenter: NVActivityIndicatorPresenter, _ fadeInAnimation: FadeInAnimation?) { + presenter.stopAnimating(nil) + + guard let activityData = presenter.data else { return } + presenter.startAnimating(activityData, fadeInAnimation) + } + + func stopAnimating(presenter: NVActivityIndicatorPresenter, _ fadeOutAnimation: FadeOutAnimation?) { + presenter.hide(fadeOutAnimation) + presenter.state = .stopped + } +} + +private struct NVActivityIndicatorPresenterStateStopped: NVActivityIndicatorPresenterState { + func startAnimating(presenter: NVActivityIndicatorPresenter, _ fadeInAnimation: FadeInAnimation?) { + guard let activityData = presenter.data else { return } + + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(activityData.displayTimeThreshold)) { + guard presenter.state == .waitingToStart else { return } + + presenter.startAnimating(activityData, fadeInAnimation) + } + presenter.state = .waitingToStart + presenter.waitingToStartGroup.enter() + } + + func stopAnimating(presenter: NVActivityIndicatorPresenter, _ fadeOutAnimation: FadeOutAnimation?) { + // Do nothing + } +} + /// Presenter that displays NVActivityIndicatorView as UI blocker. public final class NVActivityIndicatorPresenter { - private enum State { - case waitingToShow - case showed - case waitingToHide - case hidden + fileprivate enum State: NVActivityIndicatorPresenterState { + case waitingToStart + case animating + case waitingToStop + case stopped + + var performer: NVActivityIndicatorPresenterState { + switch self { + case .waitingToStart: return NVActivityIndicatorPresenterStateWaitingToStart() + case .animating: return NVActivityIndicatorPresenterStateAnimating() + case .waitingToStop: return NVActivityIndicatorPresenterStateWaitingToStop() + case .stopped: return NVActivityIndicatorPresenterStateStopped() + } + } + + func startAnimating(presenter: NVActivityIndicatorPresenter, _ fadeInAnimation: FadeInAnimation?) { + performer.startAnimating(presenter: presenter, fadeInAnimation) + } + + func stopAnimating(presenter: NVActivityIndicatorPresenter, _ fadeOutAnimation: FadeOutAnimation?) { + performer.stopAnimating(presenter: presenter, fadeOutAnimation) + } } private let restorationIdentifier = "NVActivityIndicatorViewContainer" @@ -119,12 +211,18 @@ public final class NVActivityIndicatorPresenter { return label }() - private var state: State = .hidden - private let startAnimatingGroup = DispatchGroup() + fileprivate var state: State = .stopped + fileprivate var data: ActivityData? // Shared activity data across states + + /// The group to synchronize the message so that the one set by `setMessage` is always displayed after the initial message passed to `startAnimating(_:)`. + fileprivate let waitingToStartGroup = DispatchGroup() /// Shared instance of `NVActivityIndicatorPresenter`. public static let sharedInstance = NVActivityIndicatorPresenter() + /// Current status of animation, read-only. + public var isAnimating: Bool { return state == .animating || state == .waitingToStop } + private init() {} // MARK: - Public interface @@ -133,54 +231,40 @@ public final class NVActivityIndicatorPresenter { Display UI blocker. - parameter data: Information package used to display UI blocker. + - parameter fadeInAnimation: Fade in animation. */ - public final func startAnimating(_ data: ActivityData) { - guard state == .hidden else { return } - - state = .waitingToShow - startAnimatingGroup.enter() - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(data.displayTimeThreshold)) { - guard self.state == .waitingToShow else { - self.startAnimatingGroup.leave() - - return - } - - self.show(with: data) - self.startAnimatingGroup.leave() - } + public final func startAnimating(_ data: ActivityData, _ fadeInAnimation: FadeInAnimation? = nil) { + self.data = data + state.startAnimating(presenter: self, fadeInAnimation) } /** Remove UI blocker. + + - parameter fadeOutAnimation: Fade out animation. */ - public final func stopAnimating() { - _hide() + public final func stopAnimating(_ fadeOutAnimation: FadeOutAnimation? = nil) { + state.stopAnimating(presenter: self, fadeOutAnimation) } /// Set message displayed under activity indicator view. /// /// - Parameter message: message displayed under activity indicator view. public final func setMessage(_ message: String?) { - guard state == .showed else { - startAnimatingGroup.notify(queue: DispatchQueue.main) { - self.messageLabel.text = message - } - - return + waitingToStartGroup.notify(queue: DispatchQueue.main) { + self.messageLabel.text = message } - - messageLabel.text = message } // MARK: - Helpers - private func show(with activityData: ActivityData) { + fileprivate func show(with activityData: ActivityData, _ fadeInAnimation: FadeInAnimation?) { let containerView = UIView(frame: UIScreen.main.bounds) containerView.backgroundColor = activityData.backgroundColor containerView.restorationIdentifier = restorationIdentifier containerView.translatesAutoresizingMaskIntoConstraints = false + fadeInAnimation?(containerView) let activityIndicatorView = NVActivityIndicatorView( frame: CGRect(x: 0, y: 0, width: activityData.size.width, height: activityData.size.height), @@ -198,7 +282,7 @@ public final class NVActivityIndicatorPresenter { let yConstraint = NSLayoutConstraint(item: containerView, attribute: .centerY, relatedBy: .equal, toItem: activityIndicatorView, attribute: .centerY, multiplier: 1, constant: 0) containerView.addConstraints([xConstraint, yConstraint]) - }()) + }()) messageLabel.font = activityData.messageFont messageLabel.textColor = activityData.textColor @@ -211,17 +295,16 @@ public final class NVActivityIndicatorPresenter { let trailingConstraint = NSLayoutConstraint(item: containerView, attribute: .trailing, relatedBy: .equal, toItem: messageLabel, attribute: .trailing, multiplier: 1, constant: 8) containerView.addConstraints([leadingConstraint, trailingConstraint]) - }()) + }()) ({ - let spacingConstraint = NSLayoutConstraint(item: messageLabel, attribute: .top, relatedBy: .equal, toItem: activityIndicatorView, attribute: .bottom, multiplier: 1, constant: 8) + let spacingConstraint = NSLayoutConstraint(item: messageLabel, attribute: .top, relatedBy: .equal, toItem: activityIndicatorView, attribute: .bottom, multiplier: 1, constant: activityData.messageSpacing) containerView.addConstraint(spacingConstraint) - }()) + }()) guard let keyWindow = UIApplication.shared.keyWindow else { return } keyWindow.addSubview(containerView) - state = .showed // Add constraints for `containerView`. ({ @@ -231,28 +314,21 @@ public final class NVActivityIndicatorPresenter { let bottomConstraint = NSLayoutConstraint(item: keyWindow, attribute: .bottom, relatedBy: .equal, toItem: containerView, attribute: .bottom, multiplier: 1, constant: 0) keyWindow.addConstraints([leadingConstraint, trailingConstraint, topConstraint, bottomConstraint]) - }()) - - DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(activityData.minimumDisplayTime)) { - self._hide() - } - } - - private func _hide() { - if state == .waitingToHide { - hide() - } else if state != .hidden { - state = .waitingToHide - } + }()) } - private func hide() { - guard let keyWindow = UIApplication.shared.keyWindow else { return } - - for item in keyWindow.subviews - where item.restorationIdentifier == restorationIdentifier { - item.removeFromSuperview() + fileprivate func hide(_ fadeOutAnimation: FadeOutAnimation?) { + for window in UIApplication.shared.windows { + for item in window.subviews + where item.restorationIdentifier == restorationIdentifier { + if let fadeOutAnimation = fadeOutAnimation { + fadeOutAnimation(item) { + item.removeFromSuperview() + } + } else { + item.removeFromSuperview() + } + } } - state = .hidden } } diff --git a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift similarity index 85% rename from Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift rename to Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift index 7f94f5e..d133cbf 100644 --- a/Example/Pods/NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift +++ b/Example/Pods/NVActivityIndicatorView/Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift @@ -36,6 +36,9 @@ public protocol NVActivityIndicatorViewable {} public extension NVActivityIndicatorViewable where Self: UIViewController { + /// Current status of animation, read-only. + var isAnimating: Bool { return NVActivityIndicatorPresenter.sharedInstance.isAnimating } + /** Display UI blocker. @@ -49,8 +52,9 @@ public extension NVActivityIndicatorViewable where Self: UIViewController { - parameter padding: padding of activity indicator view. - parameter displayTimeThreshold: display time threshold to actually display UI blocker. - parameter minimumDisplayTime: minimum display time of UI blocker. + - parameter fadeInAnimation: fade in animation. */ - public func startAnimating( + func startAnimating( _ size: CGSize? = nil, message: String? = nil, messageFont: UIFont? = nil, @@ -60,7 +64,8 @@ public extension NVActivityIndicatorViewable where Self: UIViewController { displayTimeThreshold: Int? = nil, minimumDisplayTime: Int? = nil, backgroundColor: UIColor? = nil, - textColor: UIColor? = nil) { + textColor: UIColor? = nil, + fadeInAnimation: FadeInAnimation? = NVActivityIndicatorView.DEFAULT_FADE_IN_ANIMATION) { let activityData = ActivityData(size: size, message: message, messageFont: messageFont, @@ -72,13 +77,15 @@ public extension NVActivityIndicatorViewable where Self: UIViewController { backgroundColor: backgroundColor, textColor: textColor) - NVActivityIndicatorPresenter.sharedInstance.startAnimating(activityData) + NVActivityIndicatorPresenter.sharedInstance.startAnimating(activityData, fadeInAnimation) } /** Remove UI blocker. + + - parameter fadeOutAnimation: fade out animation. */ - public func stopAnimating() { - NVActivityIndicatorPresenter.sharedInstance.stopAnimating() + func stopAnimating(_ fadeOutAnimation: FadeOutAnimation? = NVActivityIndicatorView.DEFAULT_FADE_OUT_ANIMATION) { + NVActivityIndicatorPresenter.sharedInstance.stopAnimating(fadeOutAnimation) } } diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 1076b8b..999856f 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,1731 +7,1778 @@ objects = { /* Begin PBXBuildFile section */ - 01CB48E71ED74F24770641340D34CC1C /* NVActivityIndicatorAnimationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D98435F2C66F04F47A91D6C2030D4A6 /* NVActivityIndicatorAnimationDelegate.swift */; }; - 01D10B95A2DFBE5A8727193E5FA042C9 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = A74F72C0DBAD4D9D171D9457CD4B7BE9 /* ConstraintDSL.swift */; }; - 029635A1190F83BDDFD7F7EE662F53F5 /* Pods-BMPlayer_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 251CCB4F4FD00AE4B09A6F555974F932 /* Pods-BMPlayer_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0423447C94FE4D158E27AED649EE0454 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */; }; - 06577C7CADE8F81DE14911449FE0F7BD /* Pods-BMPlayer_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C3BB95690BF8716F63DBD50C7CE3F016 /* Pods-BMPlayer_Example-dummy.m */; }; - 0A569DA15729E8E25940532138D7459A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6D1AF67D85A1E20E198467FC7C55A21 /* UIKit.framework */; }; - 0BA215040F1D813F6A77EE37AC04C128 /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E044FBC2CCDCECBF80B9848AF0B474 /* ConstraintConfig.swift */; }; - 2081E8AF46D943AED33A2E8ABCF6A302 /* VIResourceLoadingRequestWorker.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F279E4F7759EF4BD8311487D38A4445 /* VIResourceLoadingRequestWorker.m */; }; - 2101608CCF55D7437687357D16E451E2 /* VIMediaDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9814E36EDBB18F161B7662E67B9D25B8 /* VIMediaDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2263682D4B5716FC939812051241ECB2 /* UINavigationController+SwipeBack.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A2609898478DE0AAB3638FFF4E9DF71 /* UINavigationController+SwipeBack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 264ABBD005970D8F87F3FF150AA2103D /* VIMediaCacheWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 792C23DD55939E35B980E41BE55E4D02 /* VIMediaCacheWorker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 266C596A96F0444D03F23DB13754D55C /* VICacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8261357D757C528C5000FCCB79FA23 /* VICacheConfiguration.m */; }; - 26FC7E9F58AE0778E0E416808393A6C2 /* NVActivityIndicatorAnimationOrbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839A8538297B12C326161BDA92216260 /* NVActivityIndicatorAnimationOrbit.swift */; }; - 287D7A0D873EAEE01BAA916A89B494CA /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2525FE3CCE4586806B20086FA68A4069 /* LayoutConstraintItem.swift */; }; - 299903651AF85081F5EFE6C8FB83FF3F /* VIMediaCacheWorker.m in Sources */ = {isa = PBXBuildFile; fileRef = A81D263B83FDFF4ACEED3E211D0AFDBF /* VIMediaCacheWorker.m */; }; - 2A28C40F77140DB2278FAE2D06251287 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAD6835BD2DA10E66744A8BBEB9F6E26 /* ConstraintViewDSL.swift */; }; - 2AA7C0BCF2E9E20EE271716E2E0086F9 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE3179FDB16A901B0C447029D44AEDCA /* ConstraintMaker.swift */; }; - 2F63CB507BD434A700CD9F03F77D4393 /* VIMediaCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 03363B6FDCFD4214868A5D1FC4A390CA /* VIMediaCache-dummy.m */; }; - 30597FB337B5B2E1B281691F2BDE54F0 /* VICacheManager.m in Sources */ = {isa = PBXBuildFile; fileRef = ED24264F3820DE09A88EBCDFDC0952AB /* VICacheManager.m */; }; - 337A6A45F2890C1A22AB1D8BE6BD2553 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF086FDFA19687C1579675CEE800FB55 /* Debugging.swift */; }; - 33D287518BE7E9F89A2D2ECC10B89482 /* BMPlayerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3A4C011ED1C1716B8B28111FECCD94B /* BMPlayerManager.swift */; }; - 34CA67E4CCD02308E2F93A74FF531693 /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECDB4C2E193F0A6AA6E8F578A40DCA82 /* ConstraintLayoutGuide+Extensions.swift */; }; - 361C2308D20DC6EF2A71B80E6928473D /* NVActivityIndicatorAnimationBallZigZag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BE3CC03E06322FE6049EB34EE71932A /* NVActivityIndicatorAnimationBallZigZag.swift */; }; - 3644E12E79B9E8D66795DF49E823A467 /* NVActivityIndicatorAnimationBallScaleMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8380C88449A237CC8EEA36E050A626AC /* NVActivityIndicatorAnimationBallScaleMultiple.swift */; }; - 37932E28F19C837BE9D22BEFA8F4CFF3 /* NVActivityIndicatorAnimationLineScaleParty.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FDCD24F966CA27B88B3D540F7B9BD2 /* NVActivityIndicatorAnimationLineScaleParty.swift */; }; - 37A8AEC50ECF6D993FCA067C2890ADC1 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60B77C02FB54ADF80CEC565DF8AFDE50 /* ConstraintLayoutGuide.swift */; }; - 386905922B26F925041BC27161E66FF9 /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A991D35920AF57C04B0F12D84948BEE1 /* UILayoutSupport+Extensions.swift */; }; - 3E0D0361BFED0ABFA639CD7CB8774CFA /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A334F065F85F02D957A4951FC10D565D /* ConstraintView.swift */; }; - 4224AEC7386E50F8193D5AE0F590C1AE /* NVActivityIndicatorView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DA3B09055A2D76E25C66FC6D39281D6 /* NVActivityIndicatorView.framework */; }; - 4878097D3E02DDABE1999261B2355886 /* NVActivityIndicatorView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B39076E7A24F0F601B676057D846F60 /* NVActivityIndicatorView-dummy.m */; }; - 4DA2829CA234AF362AFC3F5E5FCEEB9F /* BMPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00917C862C83EB0303B89AE0B01B9D00 /* BMPlayer.swift */; }; - 4DDD3F13C5DAD1AB828A9A5D0B38B7FB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6D1AF67D85A1E20E198467FC7C55A21 /* UIKit.framework */; }; - 50EC6F112000371503A9F7258C43935E /* NVActivityIndicatorAnimationBallGridBeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5A794B4D047ACAF4F5DC0B7900B8952 /* NVActivityIndicatorAnimationBallGridBeat.swift */; }; - 54CD689B62294284CA27A81F149D65DB /* Pod_Asset_BMPlayer.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1531C93A1C3CA82590B7C869D5B6D17A /* Pod_Asset_BMPlayer.xcassets */; }; - 552B4C244BD9839C638D7F2FD1C23C03 /* NVActivityIndicatorAnimationBallTrianglePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 490A4D797EA7ABF5BB304C099F36E825 /* NVActivityIndicatorAnimationBallTrianglePath.swift */; }; - 58305A890D1C84F762F59B41AECCE55E /* NVActivityIndicatorAnimationBallZigZagDeflect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AA294A109A17405195DBBFAEEE0FDE1 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */; }; - 5B59A3F988340B63FBDEC32D71C88CC2 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = E634B8A69E0AC85B4311EA934DF1F4DF /* ConstraintLayoutSupportDSL.swift */; }; - 6130628394117CE0C412A27FE9050AE6 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C17B637E28276C0B6996C4550E72F10 /* LayoutConstraint.swift */; }; - 665418EFDF65434307F8D33FE14E0F68 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 354F56186734BDE81A77D8D99CAAD50B /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */; }; - 676F32837D5C251340097EB8794A74DE /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7E2C2B01F7B0D58B334D9F38DC1DAA6 /* MobileCoreServices.framework */; }; - 67EC8C20167A34D70D70B13A2BCD24C2 /* VIResourceLoadingRequestWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F941A3EA5EB370F0DA3994DB2DD95C1 /* VIResourceLoadingRequestWorker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68532AC28C2DC6E57BB449B89E174523 /* UIViewController+SwipeBack.h in Headers */ = {isa = PBXBuildFile; fileRef = C7A82E0496E2EE693E516121F300799F /* UIViewController+SwipeBack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69B8C6200166CA91F0414F0FDC5D4DBD /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE88695587AB3EE6498F19A4733951C9 /* ConstraintMakerRelatable.swift */; }; - 6D50540E0354FF8829751CF917750962 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE4A9788BFEBF3A5FE65B46F74C0EE1D /* AVFoundation.framework */; }; - 70E9E152B922D213CD84672A26722DEC /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FF1E0C2A14AF22F3F1D394FBFAD7C1F /* ConstraintLayoutGuideDSL.swift */; }; - 719B697BFC59B60EE57AEB0867145FD6 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5348FF656605F7D02FEE6EF7F10EE063 /* ConstraintInsetTarget.swift */; }; - 74D96079C3EE1084C2766B74DA1BFDC5 /* NVActivityIndicatorPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FBBB448715BD56EFDF11B9D69975CCD /* NVActivityIndicatorPresenter.swift */; }; - 773B90E05C94F6AB3426D58CC9F81B4B /* VIResourceLoaderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B94168A33685AB955A387301B4F9665 /* VIResourceLoaderManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7892870A25274AB747F1DDED3EC63064 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9496677AC3F73BFE080120C84BE27A3 /* ConstraintConstantTarget.swift */; }; - 78D0B62D6B14A4D467007A1D8D1D1B26 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EEBF8FCB2DE378E199D5140762FFA96 /* Constraint.swift */; }; - 7B6C1E5DD0ED7DBCA38D177DD4C4FE6C /* NVActivityIndicatorShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AAAF129A23A53BEBD9AB70A0CECD2D2 /* NVActivityIndicatorShape.swift */; }; - 7FE094635A83EF286C82572F605C43E2 /* VIContentInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = BE07CF94DCDB4C250F2225383C44E6DC /* VIContentInfo.m */; }; - 831D1AD098302F90E137EC01F2629801 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5479400E529A9B3357A11A08C2684954 /* ConstraintRelation.swift */; }; - 8422928B984595E017375BBDC6EA8157 /* BMTimeSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE1A4D9269F6AB8630ACC8D26241F433 /* BMTimeSlider.swift */; }; - 85B3290028B6C554D6CD540149D821B2 /* VIMediaCache-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8639375AEFFE223C10590FD171222DFB /* VIMediaCache-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 86B7A9566C11893527BE8149461AE757 /* NVActivityIndicatorAnimationBallRotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D4B696348AC5FE5EE5D36F7FE5DF584 /* NVActivityIndicatorAnimationBallRotate.swift */; }; - 8723C3F66EDEF07021C509111ED7F0E4 /* NVActivityIndicatorViewable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB696EAA4F192F17506935BC732E094 /* NVActivityIndicatorViewable.swift */; }; - 877B11A66B2C7AC867F86D5507B777EF /* NVActivityIndicatorAnimationBlank.swift in Sources */ = {isa = PBXBuildFile; fileRef = E03D3AD7002EEEEEB475128C1D241989 /* NVActivityIndicatorAnimationBlank.swift */; }; - 8BB73B1C8EAD7D7185EAC3730C61E644 /* NVActivityIndicatorAnimationLineScale.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5E062D352AAE623C860AAB977B7CE67 /* NVActivityIndicatorAnimationLineScale.swift */; }; - 8C8C708118BB1FE9182CD8375A8EAA6B /* NVActivityIndicatorAnimationBallGridPulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3463ABD75DFB4EB77B5CFC76FE4BB0A5 /* NVActivityIndicatorAnimationBallGridPulse.swift */; }; - 91C917245BE34395D3C764FF0EE8B536 /* VIResourceLoaderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 16BA8E22F2B1F14E3A1062448E1E012E /* VIResourceLoaderManager.m */; }; - 926AD4C41418BC64A6DA9656566CD810 /* VICacheAction.m in Sources */ = {isa = PBXBuildFile; fileRef = D721316E4B940299BE3FB5A7D9550782 /* VICacheAction.m */; }; - 9781943CF8B2A0F9EB6C9DBE4F4F9F1A /* BMSubtitles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CB25A1F22A1604A652B0CFF0ADC23A2 /* BMSubtitles.swift */; }; - 982564C97B20591C02288674DACF03BB /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA00FFD91D2E1FA2687211444F482463 /* ConstraintOffsetTarget.swift */; }; - 99EFF13C25C90127E3538272E25F8FBE /* NVActivityIndicatorAnimationBallScaleRipple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BEE8FFCEDD6FFBE723B7114C545ACB0 /* NVActivityIndicatorAnimationBallScaleRipple.swift */; }; - 9BCFF198FC6EA0D095360B65AA55AAC7 /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDED71A8A650FD70D9FAED6662A9496B /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */; }; - 9D14BF68EB97F7A237DEF2EE507BFDD6 /* BMPlayerProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ABE124846BC6E4E7A44B06720B5C2D7 /* BMPlayerProtocols.swift */; }; - 9D1B74126D50DAD493580AAF9EA68B86 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6D1AF67D85A1E20E198467FC7C55A21 /* UIKit.framework */; }; - 9F708DC9AFCD1345B1938E05DEBC93B1 /* VICacheConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A47D73A9D1764CDD33E01834F2F98AA /* VICacheConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9FDDB45BF86083121EC213BC98A1DE1D /* BMPlayer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C639BA1463EA4CEAD9B26CF5F0CE17 /* BMPlayer-dummy.m */; }; - A047138006F8C73AFA1A9ADA64AEE009 /* VIResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E3515A8131FACC29277590BF63274F1 /* VIResourceLoader.m */; }; - A08BBE5115B20142478841210767B6B7 /* NVActivityIndicatorAnimationAudioEqualizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0F0290416431E257159FC6324F5F652 /* NVActivityIndicatorAnimationAudioEqualizer.swift */; }; - A1A611BC817A59BCB1FC0DB3D820EAD6 /* NVActivityIndicatorAnimationSquareSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621DB56D01D5F869D9FDED4F164509FA /* NVActivityIndicatorAnimationSquareSpin.swift */; }; - A24C45B9CEE4DCC70A4DFB6E96B23C1B /* VIMediaDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 99232A303A892CB10EC6725CF42751B3 /* VIMediaDownloader.m */; }; - A2E3366549982702E13A29A9F7E96922 /* NVActivityIndicatorAnimationBallPulseSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2E1A08FC62C8590B67EDE1515ADF23 /* NVActivityIndicatorAnimationBallPulseSync.swift */; }; - A33C99B7DC4FC0772E42D05241EB156A /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17716048F8A280FEFE9A6726964138E9 /* ConstraintRelatableTarget.swift */; }; - A434C51D9C63EEAB2359C0000FAD8A82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */; }; - A46D979A098426DB7DA15FA75FC09411 /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5468A7D9F3284296DBAD27E68DD66F3D /* ConstraintMakerExtendable.swift */; }; - A5EB540A43DC85EC816206EA945FC49E /* VIMediaCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F6D49A2486A061622928187EAAFA1DFC /* VIMediaCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6688AEA2238B36A18C3D77D58D42471 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B1F00AE16DC2FA64CA820DBD69C373D /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */; }; - A676507887AD28FDEF63CE1FD19F418B /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3757618671F86505B542E0502E7BE51B /* ConstraintPriority.swift */; }; - A7D2F6898BF456F91505C3412595B87A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */; }; - A882B2540BD6360C183A5E2BD61122A3 /* VIContentInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BB0757DEA0533DEB857742EDFB97653F /* VIContentInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AA4752D4BF3E0A6D1D55F567F7D8CE6F /* NVActivityIndicatorAnimationCubeTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF99A1E66B9482B394C5ED43D423EF01 /* NVActivityIndicatorAnimationCubeTransition.swift */; }; - AA7B8E3FD2CCFA3293F838E0569C2CE1 /* BMPlayerLayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0E7EF30F7C081D6BEA92EE25B22F97 /* BMPlayerLayerView.swift */; }; - ABFE19BA9A4613BAE6A9504D5243B37E /* NVActivityIndicatorView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F4DBF84185372812E50AE92227DECC0 /* NVActivityIndicatorView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AD2DF95705E1ECBFE8F733F28D4E0990 /* UINavigationController+SwipeBack.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FA147579C65E983F954394B3C423C54 /* UINavigationController+SwipeBack.m */; }; - AD759B5AD56B39D32D7CA6ED05543B04 /* SnapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7891AC4BB5C13114E3A7A7ACAFEF1758 /* SnapKit.framework */; }; - B09C312B3531B798145728F60115634D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61B1FEB80828FED50E854081D8F4A42E /* QuartzCore.framework */; }; - B1D6B30D5378B2E688AC6C1EC3B7FCB6 /* BMPlayerClearityChooseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = A03E374B876D9B66267F3B11496D3C11 /* BMPlayerClearityChooseButton.swift */; }; - B23907CEA00CB3DC83A8E115E367472A /* SwipeBack-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BC94DE4D75331867248F3A1644CE2E6D /* SwipeBack-dummy.m */; }; - B5C9F66466797BF7DB8CFD365638731E /* NVActivityIndicatorAnimationBallBeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 279741231DFC3507029926EBB4FC768F /* NVActivityIndicatorAnimationBallBeat.swift */; }; - B6335209AACF595C8B6635D6F6D9F89B /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE98FDC76BCC3E5DF48BEF26DA5091BA /* ConstraintMultiplierTarget.swift */; }; - B77BFC6BFB516F5B027CE94A4732FE66 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD0470176AFD5F3E5F83C42996C06EF4 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */; }; - B7A8224628218427328790DBC29DE077 /* BMPlayerControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0682BEECE81E3882AF3CB2BCBBC29F80 /* BMPlayerControlView.swift */; }; - B8A72C88C34251F61B5F1623D27B1B34 /* VICacheManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 31D87377FED2D4FA4CEF3062419F7CC9 /* VICacheManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C088F067302A8584118DA9D592C05C00 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */; }; - C0D653919525DD5D59C0C48DDE8FB1ED /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4B164343B02C71CF35EE2B60BFDEC0D /* ConstraintLayoutSupport.swift */; }; - C0F37E57498DEF6C8172ADC55995B223 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85B2F615A1B80F15269489BCF2D14C93 /* ConstraintDescription.swift */; }; - C1B2D414818401B1BCC5FB873E3D110F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */; }; - C30664959A85237158B067C1BD731D9B /* NVActivityIndicatorAnimationBallRotateChase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59205784769C71E2194CFAFBEB3CEB9 /* NVActivityIndicatorAnimationBallRotateChase.swift */; }; - C3A4CB618030899D3F4BF8FAF69CA695 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD9E13562E901D4E95765928890633B5 /* ConstraintAttributes.swift */; }; - C4D741B500E05B4139D99991C8E85F8E /* SwipeBack-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F1A34774A688579092F0D7B8AEE82A91 /* SwipeBack-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C740F55ACB1C7FE13E452726124B0A34 /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B7E5479D63DE345BC94F4D072FF477E /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */; }; - CE4BA37B3F3AF8371E55B93D6929C237 /* SwipeBack.h in Headers */ = {isa = PBXBuildFile; fileRef = 66486740FD27E84BA5119DED0CC82D42 /* SwipeBack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF675FAD4FFE743931A7A7FBE901CA70 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89CECDE07849EFAEAD6E47D7490E8C84 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */; }; - D05B6131A06E7444327E8F4AAC0A77FB /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1590982EA8B02AA9BE70BF800E6E7FCA /* ConstraintMakerPriortizable.swift */; }; - D0841CB931F543F021F9C7CFDF901C8A /* NVActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DE2183B8FAD9A8F79C858C4F7650F7D /* NVActivityIndicatorView.swift */; }; - D0847AF61C98220D0B8C3D65644E4010 /* BMPlayer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AF471120563A0ACF018D7919BAEB115 /* BMPlayer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0C845695654B7B98FA1A60121A77C22 /* NVActivityIndicatorAnimationLineScalePulseOut.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58D96292B36BFFE28B302F523D3ED989 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */; }; - D0FB3B6E45843DEF4B8411CCFF7B21EF /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB8AEAFF9B1DBF071B3A33E183CC542 /* SnapKit-dummy.m */; }; - D1D0C48CDD06BA38C802D8E0EBB2EB0D /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0824361B921ECEBF8C54167DEDC61660 /* ConstraintMakerFinalizable.swift */; }; - D30BB4C945574BBE2FD79C93E636E169 /* VICacheSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E89454A6EC7455C3F3FDA611995D761 /* VICacheSessionManager.m */; }; - D3E3D64434C16BA16A9FBFFBF9201154 /* UIViewController+SwipeBack.m in Sources */ = {isa = PBXBuildFile; fileRef = 6819B15C7C06D53348CFAC48DB4A423E /* UIViewController+SwipeBack.m */; }; - D4BF3504A7F93F30C7F25C142B3129DC /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE4A9788BFEBF3A5FE65B46F74C0EE1D /* AVFoundation.framework */; }; - D4E3B6EB7035C7462AB9ED11D074F9C1 /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E39FF7A1F798CA3FBC26671B53CCFCBA /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D56CF121F86CADD32FF3597D8ED26B0E /* BMPlayerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5EE462D662E061A760601C5542C0880 /* BMPlayerItem.swift */; }; - D643350C3225B759F81AB37B6E5BF564 /* NVActivityIndicatorAnimationBallClipRotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 156413FE94D4E9DC3833C852017288CE /* NVActivityIndicatorAnimationBallClipRotate.swift */; }; - D8860833CA304DDCC1ABA94962FAFB69 /* VICacheAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 48FA3A274519194A1A57F64C33240D67 /* VICacheAction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9AE2CEF680A2F48B266D297AFDA7384 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F5706AC9A5065EDC65F0528FFEF096 /* ConstraintItem.swift */; }; - DD4A37A391E34C7E56700D238BBD9063 /* VICacheSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 00D1F9DFF39B7F710729F95DC6130A63 /* VICacheSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE25B061C1C588833C57163B79178AA2 /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70FBDFFC78EEE1EEF89D058FCF352BF4 /* ConstraintView+Extensions.swift */; }; - E2655145F8108345EBD50AD2DCCC1161 /* NVActivityIndicatorAnimationBallClipRotatePulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 682513D3D963C5A006B97391A38468FE /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */; }; - E2AC6DAD6D0D9C7CDC55840293F22230 /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40BE8C2CFB852FF6FCFD66FFC059A93 /* Typealiases.swift */; }; - E3A241D6D7BDDB645B1C30B4DDE856E0 /* NVActivityIndicatorAnimationBallPulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978F0A86C2906419C2374A7FBA0E2BF0 /* NVActivityIndicatorAnimationBallPulse.swift */; }; - E817BB83C80A5823ACC9C04999506427 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F752A8FBCEA7D5412B810DABA05B535 /* ConstraintMakerEditable.swift */; }; - EBDD13DAEC5CBD8CC54718837DC84D63 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4FA0939E713E57339C41027799C59A2 /* ConstraintPriorityTarget.swift */; }; - EDC95152A241534DAC8CC8559893892C /* NVActivityIndicatorAnimationBallScale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40CCB975D5E9E8843D31E43CACB199F3 /* NVActivityIndicatorAnimationBallScale.swift */; }; - F09E1BB00E47C38D75710296E5A304B2 /* VIResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = DBCEDE6DB5403BE834A6AD0A4F762061 /* VIResourceLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F0F8D016C2653F7D2705C4968056DFF7 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 338A0BA253CD6528BE77CB282B249524 /* ConstraintInsets.swift */; }; - F391B9213F766036ED5039465CB30920 /* NVActivityIndicatorAnimationSemiCircleSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F4BDE507843F284E73BB3E266FB911B /* NVActivityIndicatorAnimationSemiCircleSpin.swift */; }; - F70106D0590C58879918133CC577E96F /* VIMediaCache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 74CBC89BFB92A2050ED5042D46074328 /* VIMediaCache.framework */; }; - FB413AA85A7068540F1A933B263DA445 /* NVActivityIndicatorAnimationPacman.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EBA14458D77031ED9DD9DF89C2CA708 /* NVActivityIndicatorAnimationPacman.swift */; }; - FBC4392CE5A8044289B90394479C949F /* NVActivityIndicatorAnimationBallPulseRise.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA17429EAF3D35A8FD1045B373FCAA75 /* NVActivityIndicatorAnimationBallPulseRise.swift */; }; - FEBC7C423C2C3A3BE12784EABF8D7900 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */; }; + 0056B9CA777AE1FC2DFA5506266636FC /* NVActivityIndicatorAnimationLineScalePulseOut.swift in Sources */ = {isa = PBXBuildFile; fileRef = A350B1C48856EB3FC25C2B351FD720E0 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */; }; + 01F0F61F59C8E4452414DFE91E85B2A6 /* NVActivityIndicatorView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCE81AAEB32C737A32005CA1A92C8900 /* NVActivityIndicatorView.framework */; }; + 0520088EEBC879DF2BFC73B355BA5077 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2B2B6CBE9FB26A4B9F365C7A2D12C65 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */; }; + 0866938993D415520CE7323C0F619E04 /* VIMediaDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A322503D4B7E4E0E8F413350764E3A /* VIMediaDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0E1E1C2B809B261A18752549902DFD2C /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A664CD38334F0D76977E91B06A50C9 /* ConstraintAttributes.swift */; }; + 0F26D8E83246110CE189C5EA0BD0A5AE /* VIMediaDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = A38E23348B3378426FC55E048075060B /* VIMediaDownloader.m */; }; + 0F4A1B105D10783C251C822B238AC883 /* NVActivityIndicatorViewable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4AC2471B685B7BE9B0A015BEDB2C93E /* NVActivityIndicatorViewable.swift */; }; + 1712CB83C6C25555D1CF4CF74558290B /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AFEF3DFBA16427A66B66BA1E800D454 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */; }; + 17FB1B5FC88C3371AF69A26995FE957B /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = A92D3FC01E73FCE9C33F242DA2448641 /* ConstraintLayoutSupport.swift */; }; + 1AAB04526E75E8E597D62B874A4D5615 /* NVActivityIndicatorAnimationCircleStrokeSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0537C981E34A504CC878C007A90DE7E0 /* NVActivityIndicatorAnimationCircleStrokeSpin.swift */; }; + 1AF4DF65956031001155DD64AC637D09 /* NVActivityIndicatorAnimationBallPulseRise.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5C27C31BE75D2AEECF127FDA8DA9C4 /* NVActivityIndicatorAnimationBallPulseRise.swift */; }; + 1F5A5729D0BBEA15E23D7A98BC0E418A /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93FC611372EA5DE85A6B5AE34BE91CE9 /* Debugging.swift */; }; + 2357C558AEBF4FE9C79D96BB2B5932B9 /* NVActivityIndicatorShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A13796FD6983F1D3BA8B559AEA3D5E /* NVActivityIndicatorShape.swift */; }; + 23D8650508A2B414622C0AE7298E48E6 /* Pods-BMPlayer_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9108DFB03070C1A4E72C6C819DAAE3 /* Pods-BMPlayer_Example-dummy.m */; }; + 24012AAD176F436ECAAF4207F2B9159C /* NVActivityIndicatorAnimationBallRotateChase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25FD3AB25B903D4F41E0B2536C5AFC9A /* NVActivityIndicatorAnimationBallRotateChase.swift */; }; + 271A589202B67D566317D156E1412250 /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A5607DC0072766E36BA665FD82C4DB /* ConstraintMakerFinalizable.swift */; }; + 276BD3C1BFB96E7248CBCA867B5566FD /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = C64375EE840AFEE62FEB4553C37ED956 /* LayoutConstraint.swift */; }; + 284E00DC266AFC339C599A52C3CEBFC3 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C7852E8AF9AB25541D6CB95F45AA891 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */; }; + 2B2B4EA63BCFC8DD6C527D26D482FF7D /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8912211311C93727AFD704440A084AE /* ConstraintConfig.swift */; }; + 2FF89C560D38917631AE2B0D8000480D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */; }; + 300A47EDB18769662C07B4CA9B75955E /* NVActivityIndicatorView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 053275E7BFDA11F5AB0B61D3BDC66C5C /* NVActivityIndicatorView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3095ECCD2E085B13090E3C50A83EC613 /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76085BA3DF517CF97C9BB8F5B34C249A /* ConstraintLayoutGuide+Extensions.swift */; }; + 31AC10D0967F074B7526563D9F812532 /* VIMediaCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ADF2EDB4082C6C8D6373F4923AC3849 /* VIMediaCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3806962FF5D1F6B11D8CAF4BE6DFFDEF /* VICacheSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FE7B63EDBEF087FDC979EE0BE2118AAB /* VICacheSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 39335737AB561D9355E006BD6D017055 /* VIMediaCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 33754FE4C3006472479AAAAF9A7C53A1 /* VIMediaCache-dummy.m */; }; + 3B782007A6CA142404E6D8D24D521B34 /* NVActivityIndicatorAnimationBallClipRotatePulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3861C0847F3A0072807B7394C2A1D6E6 /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */; }; + 3C6568C6D8BC95D292FDFE389FD025C5 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE9B94E65BD0BC58B1DC625941D7FDEE /* AVFoundation.framework */; }; + 4102B647E8E855EB075E3BFC3CDDDC8E /* BMTimeSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC56C510F0CB6C19E144E75B57A57AA5 /* BMTimeSlider.swift */; }; + 411593C744C3BC97E858257E2143731D /* NVActivityIndicatorAnimationBallClipRotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472679BDD51C9FB40F254EC32B79A1F0 /* NVActivityIndicatorAnimationBallClipRotate.swift */; }; + 4274267C084358BDB0CC84EBEE533DDB /* NVActivityIndicatorView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD1B7E233A2D75D506FAD1B7D8D85DC /* NVActivityIndicatorView-dummy.m */; }; + 43F1DAC3F025C8F93FAE48723C0141CB /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDC9E88315AB5A4BEF5ABA7F90CF9FD8 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */; }; + 47FFBC956105B7F12C187BF946AFD64A /* VIResourceLoaderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 22EFD954F6E0AFA7FF2591FD5F35707D /* VIResourceLoaderManager.m */; }; + 498E614E8ACBA6DA052464F65A15693F /* VIResourceLoadingRequestWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A65F1770B45AC7F30AE23D56144A88A /* VIResourceLoadingRequestWorker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A41ADCB5552A39DBCEAD5C9192B3BE7 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA763988CD986BEA58FD2F4171485A3C /* ConstraintRelation.swift */; }; + 4ACC4EA543C820B746DC66835B89962B /* NVActivityIndicatorAnimationBallRotate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C44C626D28997D620A348BFD8BD1F5D9 /* NVActivityIndicatorAnimationBallRotate.swift */; }; + 4CF94A8D6F8A1B9918F857A57EC0C5E9 /* NVActivityIndicatorAnimationBallScale.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9DCC5AB5810D62A3E0FC6DD2EEF202F /* NVActivityIndicatorAnimationBallScale.swift */; }; + 4D7C5F4E522B93612068A1FA37BC3591 /* Pod_Asset_BMPlayer.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C996B9658C9C78AFFBCE2BACAB767AB9 /* Pod_Asset_BMPlayer.xcassets */; }; + 4F9CF5043F823F93C9819A7CDB1568E8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */; }; + 4FF36FDA6199AB65BC4B5B8E10C5A871 /* UINavigationController+SwipeBack.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7F3C600D0A0486A1CC66194B0A53FC /* UINavigationController+SwipeBack.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 512AF46CC2E410FCEFABEDA53D428039 /* NVActivityIndicatorAnimationBlank.swift in Sources */ = {isa = PBXBuildFile; fileRef = A12ADE07CACD36402198AECE3E4329B7 /* NVActivityIndicatorAnimationBlank.swift */; }; + 51E4AFED6AC0668AFEDC7C6A7208A4A9 /* NVActivityIndicatorAnimationBallPulseSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30BEF65274DCF8C3B4639A15971833AD /* NVActivityIndicatorAnimationBallPulseSync.swift */; }; + 521DFB8B79D26057EB7374FED372FD19 /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80A4A2DADB70F33844AFCD5FE3A5B44C /* ConstraintMakerEditable.swift */; }; + 537B76681916451654B34257AAC8C828 /* VIMediaCacheWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9214A0F1EEC5D9D77120DF4820BDB897 /* VIMediaCacheWorker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55075427AEAFABA78FEB0405D2514994 /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C0A1219A121B71C97688B9B778A07F72 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B3B9DA8C5D12C5D6A434D7435BA2CC5 /* BMPlayerControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2028B204C544D392F65F4F1911731EBC /* BMPlayerControlView.swift */; }; + 5CA6DAF27B7FE98D8139F2B5D0A01B8A /* BMPlayer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B9C5413769109E0F79C0FB7895E3BE0B /* BMPlayer-dummy.m */; }; + 63633A282D11E4C3E14557F57D6CB8A7 /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5404C2D8C50D96A0B902D4A860C99216 /* Typealiases.swift */; }; + 65F092493FFEF9C0FD117056A450EDAF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B6C4F7F5B6AE911BAE7A0ADB28990F8 /* UIKit.framework */; }; + 6810E1C8D02EF5DB98C05F4A57F2A9E3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E0EB62F3553EE593D78BAA7CF48C959 /* QuartzCore.framework */; }; + 6A3A745761F40226D74145F70A655C24 /* UIViewController+SwipeBack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8444D04BB50EDE93DCDFD0C7B45EAAC6 /* UIViewController+SwipeBack.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B1CEE035848C45314A572DAEFDD8FA3 /* VIContentInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 51D5361FA35535339E246ACEA5E6CC82 /* VIContentInfo.m */; }; + 6BBD7CE7E9E7E59C3B1C6E95F3EC8834 /* VICacheManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 300E1D8DB4399E8E31925935979DE626 /* VICacheManager.m */; }; + 6DCF5E295612DCEDEDF48E7D25376F19 /* VICacheAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F4A0F0619C6AC134FDBAD087F5AB2C /* VICacheAction.m */; }; + 6E04651AE905869039601DE9F220C58C /* BMPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FBCD5D28BFADFA9556BDCDF11CF20B5 /* BMPlayer.swift */; }; + 6F64005C7D01D535EF89375BC769C054 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */; }; + 70D742EB92FA49027BE11C173DE3EEF8 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DCBBC668CC82E69CC421706CAB4B0C4 /* ConstraintLayoutSupportDSL.swift */; }; + 734939C285EC437EB55ADDD794BC5285 /* VIResourceLoaderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CCEA90491F565AE29A40FCDA4B58D38C /* VIResourceLoaderManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7468ED6B2E13D201865668F91AB8690E /* NVActivityIndicatorAnimationBallZigZag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DE9A36360DC1BC451170AC3341B6099 /* NVActivityIndicatorAnimationBallZigZag.swift */; }; + 7757FCD6A64E645BE5745255F7B48A12 /* NVActivityIndicatorAnimationBallScaleRipple.swift in Sources */ = {isa = PBXBuildFile; fileRef = D55360A0C80433F5F05556E7269F203D /* NVActivityIndicatorAnimationBallScaleRipple.swift */; }; + 7C70D9696EB7364B8DE8867DCBF1F3A1 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857E4121CFA4251B8B37446C1489F1D1 /* ConstraintDSL.swift */; }; + 7CA4A342DBACFB15D330B35388DFB6C7 /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A96D7405ED254E9619FBA6B669D9E9F /* ConstraintRelatableTarget.swift */; }; + 7E24CB5537F7415B662DB27A28B01AFB /* NVActivityIndicatorAnimationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C460184507599A8F5702EDA7E17E9262 /* NVActivityIndicatorAnimationDelegate.swift */; }; + 7E7848A7CB6B34D9402803CE96902694 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */; }; + 7E99FE7355EDE0B52D74D2F4A16FFB05 /* NVActivityIndicatorAnimationBallGridPulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22275F7A284509B4CEC1E470E171D77D /* NVActivityIndicatorAnimationBallGridPulse.swift */; }; + 7F460F4AC1F7D3DA9852D69847504887 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */; }; + 813658CE26B74F4BCBD980838E5B6BCE /* BMPlayer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 10463BD2F2FFFC2A603595FA0D5819FE /* BMPlayer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81BD047CA16B8A3E8891FF229DE75211 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FA563839DBEB512B73927561176D9B6 /* ConstraintMultiplierTarget.swift */; }; + 8201498F66FF1D7FCFDF9C7ABFD3B5F6 /* BMPlayerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78FC34689EB39CE39B854DE002B616DD /* BMPlayerManager.swift */; }; + 82B0C4D5ACAAFF9CFCB2189483544BB2 /* VIMediaCacheWorker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3968B8F36B4CF9711CBD68214ED242EE /* VIMediaCacheWorker.m */; }; + 85F54642FE751FF658F4CE14C5903F26 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A08F260D71F82D5E40FF8C6C8349E340 /* ConstraintConstantTarget.swift */; }; + 86AAAC1072D255858A381C1233BDBDD1 /* NVActivityIndicatorAnimationBallBeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 855307702403068F1EF43C73376E8F9C /* NVActivityIndicatorAnimationBallBeat.swift */; }; + 892E86C258E8842B9BCAF39DBE2780DC /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE01FAEDA56776BC9A8E83FDF7FF240F /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */; }; + 8981517E70994716501CE00C80E7B219 /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D04CD880B213A915A2B8937944A84C1 /* UILayoutSupport+Extensions.swift */; }; + 8C436C17C0E4A7DE07A9A12D2AF86D18 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B6C4F7F5B6AE911BAE7A0ADB28990F8 /* UIKit.framework */; }; + 8E7288A9463A84A7B8846534301E0113 /* SwipeBack-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E4BD7CD3A0E1E5836DD6131F0FDAE62 /* SwipeBack-dummy.m */; }; + 8EDFF25A1951F6A0C28928B627F9CC44 /* NVActivityIndicatorAnimationSemiCircleSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 426D4F25D857DD8BF021BD5EF2036A09 /* NVActivityIndicatorAnimationSemiCircleSpin.swift */; }; + 8EE03C341565FA02E525D8B6006B405C /* NVActivityIndicatorAnimationAudioEqualizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E05ADCA1D6163D2FB111744816BB3408 /* NVActivityIndicatorAnimationAudioEqualizer.swift */; }; + 8F7119F672B8113694445CBD428C5FA9 /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E47B6679787B1A85AC1360072D66D898 /* ConstraintMaker.swift */; }; + 90FCDF0BADDBE70F59D0DCCDA4BCC211 /* NVActivityIndicatorPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E891B6DE536D20CEC811CF5B610C6E4 /* NVActivityIndicatorPresenter.swift */; }; + 90FD36B52CCDBD241EFA5A4936471AF6 /* VICacheSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A9F537089B08DAA09CFB4713D42E5EC /* VICacheSessionManager.m */; }; + 9120BE92AB410C12E924574D7D1F48B6 /* NVActivityIndicatorAnimationPacman.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6651B9EA2DF9480D5F7B07BD73D30EC5 /* NVActivityIndicatorAnimationPacman.swift */; }; + 9127CB211601BA8A0D27D5F18CE30B7D /* SnapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EF2B2880C30A1FFB20DDC7EA50061B2 /* SnapKit.framework */; }; + 92053AC79C04AE21F083D05839F47032 /* NSString+VIMD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 81ABD0968CE59709F2363F4EC4EE8CE8 /* NSString+VIMD5.m */; }; + 92B9AC133423BCE34F06103646FB33DC /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C4EB5AE2E70CA790FAA570B78DD6C64 /* MobileCoreServices.framework */; }; + 938187382ADEA7AB60B956E3EBCC431B /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3681724252F19C5983669A8C262E53CE /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */; }; + 952AD825FA6B11F75EFD1EABF299D210 /* VICacheConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 66B37886CE2BC08390CE62075CF2D163 /* VICacheConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 954471C7EC47E20FCA21D6E64832AE89 /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7349835EACAD31984EBAA7429D2F9829 /* ConstraintView.swift */; }; + 95F153787B50432A241F6B0942C294F5 /* NVActivityIndicatorAnimationBallGridBeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6891B0C442E88DAACFDAE23DF4EE8F97 /* NVActivityIndicatorAnimationBallGridBeat.swift */; }; + 96DEDC224B0EB8E0913F37FFCDE078CB /* VICacheAction.h in Headers */ = {isa = PBXBuildFile; fileRef = A5F81EC96A6F107553A0017CC5F94FDB /* VICacheAction.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B287F9E159B79FD5E04F78EF65C6FED /* NVActivityIndicatorAnimationSquareSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D515BA1CB6D887F29196B6F0717BF8A5 /* NVActivityIndicatorAnimationSquareSpin.swift */; }; + 9BF333E7C849F95C0A7AE796AC8CA49D /* BMPlayerClearityChooseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8BA80919EB3FC4B3F144AA5CA9E6680 /* BMPlayerClearityChooseButton.swift */; }; + A4540009AF2588A53C552D0561DEEAAD /* NVActivityIndicatorAnimationBallDoubleBounce.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5E53F6F4F70C5C377DFEFB39CBA548B /* NVActivityIndicatorAnimationBallDoubleBounce.swift */; }; + A7EBEAA70B2F1D1F7500FE4DA9E54BAD /* VIResourceLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A99AFC135245F3A7FB97601EBD36B6 /* VIResourceLoader.m */; }; + A876C9F893C8CB524F5E59F24EAEEFB7 /* VICacheConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 23607DE187E9FA1EA99B0485BFDB884D /* VICacheConfiguration.m */; }; + A8CCD80F462ABE26C68C4F057D292303 /* Pods-BMPlayer_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ABBA39641A81922B05B93D32B611910 /* Pods-BMPlayer_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9DCD4A8C842DF6D3D0D9A667BEAF23B /* VIMediaCache.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64F058973DD5DA40C4CF133D3CA0494C /* VIMediaCache.framework */; }; + A9E98F5D5FD33D1B050DCA6F2C123C51 /* SwipeBack.h in Headers */ = {isa = PBXBuildFile; fileRef = 710C7FC7F3A0ABD079FEAF2B76241FD5 /* SwipeBack.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC5CFCD905CCEE95E529BDE6A5F9CF9B /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73136544D94B72171A7FCB845D76EFF6 /* ConstraintView+Extensions.swift */; }; + AED1C67B76232919163683A434D98744 /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582142D464D7D24896CB7BCD9C1CD1CC /* ConstraintLayoutGuide.swift */; }; + B06827C77055AAAE537D8141DDF9E107 /* VIResourceLoadingRequestWorker.m in Sources */ = {isa = PBXBuildFile; fileRef = DA94AC28B62A12CE3E2511897B4A18F2 /* VIResourceLoadingRequestWorker.m */; }; + B163ECB5C91D2C6BBFDB0DE71DB2189E /* BMPlayerLayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCC7B692356A0DCBB2FFEDB1D929EED5 /* BMPlayerLayerView.swift */; }; + B1A59D1473C2A7D3F61D060CEB6CFCE8 /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FA0E4B725619E14DBA09BEC3C9E08 /* ConstraintInsets.swift */; }; + B7170B2544ACEA6B5B44555F15512FA4 /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663D99AB0F74664B33232581DE38395E /* Constraint.swift */; }; + B8A257334A26D83BE8AEAA4A1F0AF852 /* NVActivityIndicatorAnimationLineScaleParty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 925E9179A58817D14424E79FA2CB84CE /* NVActivityIndicatorAnimationLineScaleParty.swift */; }; + B8CF46ABBFEEF990B3D66F04BA247BE5 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97687BCC2D3C6DCE9AA4A5A7118F51E /* ConstraintPriorityTarget.swift */; }; + BA9F85ED84602FF7C9FC27CBC5D2CAE2 /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FEB3C8AE17A7F36DBA4D0197C0FBF1 /* ConstraintLayoutGuideDSL.swift */; }; + BD0B0777A784977E5BB97F225077D8DA /* UIViewController+SwipeBack.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FD3AEF5EC39C28E401032CB6959EE0A /* UIViewController+SwipeBack.m */; }; + C43058B0EB07835312ECF1B934B3C805 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E5A8B7B1AD7E3BEF5C450E56F10A15 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */; }; + C5F300D8C011D063B161F83A397E8C5D /* VICacheManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D116AA805F1414347EE70753B1ED9E1 /* VICacheManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C66910424FF918D7CE495F46B8D9AFBC /* BMSubtitles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A65B65C06CFEB0FF0704CEFE57D8359 /* BMSubtitles.swift */; }; + CA6CC7DBB0BE43FC07DC4AB8B6813206 /* VIContentInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 74F318164E0795EC442D35E96715D16B /* VIContentInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE446A7ECACEAD9B2122B2565F7D5CFA /* NVActivityIndicatorAnimationBallPulse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E0D6BAE787AC9BF4C01C09AE69A10D4 /* NVActivityIndicatorAnimationBallPulse.swift */; }; + CF507B7F2C3B3311E0E6BA66714811B1 /* UINavigationController+SwipeBack.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A54CB5232972E192B77C1783A20F10A /* UINavigationController+SwipeBack.m */; }; + D08060F016B54E8F27BDF8DBB49A6171 /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90B3ECEBC185A228E887760BF11C7317 /* ConstraintItem.swift */; }; + D6D25A006669BFBDB9B1065196C19E98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */; }; + D9ADD2588FF9E7BD877FE41E76B5E5CC /* NVActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 716CF58537E3DA30A43EC29CD18A175F /* NVActivityIndicatorView.swift */; }; + DC00736992DD9CF8014E86B8FE3D03C7 /* VIMediaCache-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B9EED1408A38E0F9EF02408ADAB6BCA /* VIMediaCache-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DCD0133109300F1318C0A81DDFFC02C9 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F92676015BBB098D8A7DD49B4BA7318B /* SnapKit-dummy.m */; }; + DCF9FC727CB487F413ED0A0309575501 /* NVActivityIndicatorAnimationBallScaleMultiple.swift in Sources */ = {isa = PBXBuildFile; fileRef = B934EC95570CCA1E3E28EFBDFE2C0F22 /* NVActivityIndicatorAnimationBallScaleMultiple.swift */; }; + DE210375D2E0AC06D2D3DE5B356A4F5A /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 677FA5139762F6C165BEA829313D8BFA /* ConstraintPriority.swift */; }; + E3E796D190BA099EDEDAB1BC8F32A461 /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECC186E6708A5B59C45A1A95A3F26897 /* ConstraintDescription.swift */; }; + E507CA9DD17B428382D7DBAB670074EF /* VIResourceLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C44091AD3DF511B3E73A718435F6A3 /* VIResourceLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E6D89925C9B5F3CA7BD87E5AF384F221 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE9B94E65BD0BC58B1DC625941D7FDEE /* AVFoundation.framework */; }; + E734BDC7D68029363D4C6FA8D63736EA /* NVActivityIndicatorAnimationOrbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E9328B63B76DDEB2460B2810F1A15BC /* NVActivityIndicatorAnimationOrbit.swift */; }; + E81245F79648A09BF637A2E5FDCEE7E0 /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6C83B0AD87C139198109A3034A52AFD /* ConstraintMakerPriortizable.swift */; }; + E82D632C86D427CC451620C3B1D5C6C8 /* BMPlayerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D508EE28D1033D8C48ADFD0FC92434EB /* BMPlayerItem.swift */; }; + EC2AC6ED7500CF63037D6873D4251340 /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 722A42849DDEBE0758F72C4CD0A43A24 /* ConstraintMakerExtendable.swift */; }; + ED87149FD9583840C142D905EA1046A5 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C841E4D99819814282E407AE0F30788B /* ConstraintOffsetTarget.swift */; }; + F4923C5EA219B11DE9EF2B9DE7ED83ED /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B6C4F7F5B6AE911BAE7A0ADB28990F8 /* UIKit.framework */; }; + F544B29EDD373477A09576E99255868A /* SwipeBack-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 774618023EC28C4417AAF3CC382DD27E /* SwipeBack-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F5EA6C413C6183A0D7BD4B11A2EA45F3 /* NVActivityIndicatorAnimationCubeTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA0260CA2833CC591EAA20B2D37D9A85 /* NVActivityIndicatorAnimationCubeTransition.swift */; }; + F6BEBC661850C2CD4ED41DCC9844D19C /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = A13C714CB68331E08420F1292E895A13 /* ConstraintInsetTarget.swift */; }; + F738C239CE57387BB377469401484845 /* BMPlayerProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = D429EF6281A42A1EF02EA40AC9CFD674 /* BMPlayerProtocols.swift */; }; + F9A808ED9392747AB918ECA640473CC3 /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28F501A9B74545CC3AEDBFE1E1BAE46B /* ConstraintMakerRelatable.swift */; }; + FB72255ED93BF026E10A0FBA17FA3976 /* NSString+VIMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = E0F0A1F959274B705564737A4213FF15 /* NSString+VIMD5.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FBE22092E43024E7DB41295413161568 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 873D445E10991CEB7FCF52D71A68F225 /* ConstraintViewDSL.swift */; }; + FE18DA4556EE645A8A79D20BF87995A3 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27FF725436BD5CC4BB133EAA2AB30B80 /* LayoutConstraintItem.swift */; }; + FE933F091E23D127C757D141094E8074 /* NVActivityIndicatorAnimationLineScale.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E232C777FEFFDA8F837585A87AB7AD /* NVActivityIndicatorAnimationLineScale.swift */; }; + FFE8F6B1AACDA242E316246BCD3FC8F7 /* NVActivityIndicatorAnimationBallTrianglePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = E35E5E3748DE7C4ACF96A555CEEF2137 /* NVActivityIndicatorAnimationBallTrianglePath.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 14237F20F67E82F2D497DDFFD860F03E /* PBXContainerItemProxy */ = { + 003859FE20DD9E1F75D91AB89DF0AF47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 01E0B22901F48810951AFA5A86042B7C; + remoteGlobalIDString = 986FBF0AB911C15EB1F530A32265F54A; remoteInfo = SnapKit; }; - 276C2D00646A244CD2283DC07B8BB903 /* PBXContainerItemProxy */ = { + 462192235892F9EC0EA72F45C7EEE903 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 66559FEFF490CB9EA8821AD17410F3C1; - remoteInfo = NVActivityIndicatorView; + remoteGlobalIDString = 49E29C98D0563C16CDB92CC967A97F6B; + remoteInfo = VIMediaCache; }; - 57D7115C2CFF274C9B47C088D790121F /* PBXContainerItemProxy */ = { + 4E0FE10BB7392D37E160AEA46490C931 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 01E0B22901F48810951AFA5A86042B7C; - remoteInfo = SnapKit; + remoteGlobalIDString = 49E29C98D0563C16CDB92CC967A97F6B; + remoteInfo = VIMediaCache; }; - 5A4D87243A02863C31C1E1C52CBB0476 /* PBXContainerItemProxy */ = { + 5EBB12AB65E31CB81B5DD8ECEE73F1DD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 66559FEFF490CB9EA8821AD17410F3C1; - remoteInfo = NVActivityIndicatorView; + remoteGlobalIDString = 065412BCD5789F6A405B54C30876E162; + remoteInfo = BMPlayer; }; - C13DB64B74926C5B5B2A773BCCBD2428 /* PBXContainerItemProxy */ = { + 71C5DA89FD0817568DBCE7C1D6093672 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B832171AE7EC7FBC9C0C3FF64AE093E3; - remoteInfo = VIMediaCache; + remoteGlobalIDString = BC5EF793EA5C7D1505DC7F5BC256AAF5; + remoteInfo = NVActivityIndicatorView; }; - C8F1686BFD9E94CC3B15880BA0CDFE73 /* PBXContainerItemProxy */ = { + 827B885FD10686267937A71325F41598 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B832171AE7EC7FBC9C0C3FF64AE093E3; - remoteInfo = VIMediaCache; + remoteGlobalIDString = 986FBF0AB911C15EB1F530A32265F54A; + remoteInfo = SnapKit; }; - D5D774CA0185C903BDD2329EB7D4EEBF /* PBXContainerItemProxy */ = { + BE2AAE49D599848077BDA5CE0B145992 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4DD598B978CE30E690FE0910C3081161; + remoteGlobalIDString = D1D7552068628A3E9E763F5C23995239; remoteInfo = SwipeBack; }; - E84E90DB3B362820BE793A59EC1C7DF8 /* PBXContainerItemProxy */ = { + DAC4968B10322B411AD5A20D516328C7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A2C02D92EC93ABE2038496CC45D71509; - remoteInfo = BMPlayer; + remoteGlobalIDString = BC5EF793EA5C7D1505DC7F5BC256AAF5; + remoteInfo = NVActivityIndicatorView; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00917C862C83EB0303B89AE0B01B9D00 /* BMPlayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayer.swift; path = Source/BMPlayer.swift; sourceTree = ""; }; - 00D1F9DFF39B7F710729F95DC6130A63 /* VICacheSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheSessionManager.h; path = VIMediaCache/Cache/VICacheSessionManager.h; sourceTree = ""; }; - 03363B6FDCFD4214868A5D1FC4A390CA /* VIMediaCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "VIMediaCache-dummy.m"; sourceTree = ""; }; - 0682BEECE81E3882AF3CB2BCBBC29F80 /* BMPlayerControlView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerControlView.swift; path = Source/BMPlayerControlView.swift; sourceTree = ""; }; - 07E58095A8196AAC6782B7848A5C78A4 /* VIMediaCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = VIMediaCache.modulemap; sourceTree = ""; }; - 0824361B921ECEBF8C54167DEDC61660 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = ""; }; - 08620D5D03A8F110592B3633EAA7EF9E /* VIMediaCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = VIMediaCache.xcconfig; sourceTree = ""; }; - 0B1F00AE16DC2FA64CA820DBD69C373D /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScalePulseOutRapid.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift; sourceTree = ""; }; - 0B3510D7EED62FD9F36F83F4E7A2E88F /* BMPlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BMPlayer.framework; path = BMPlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0B39076E7A24F0F601B676057D846F60 /* NVActivityIndicatorView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NVActivityIndicatorView-dummy.m"; sourceTree = ""; }; - 0BE3CC03E06322FE6049EB34EE71932A /* NVActivityIndicatorAnimationBallZigZag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallZigZag.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift; sourceTree = ""; }; - 0C17B637E28276C0B6996C4550E72F10 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; - 0F279E4F7759EF4BD8311487D38A4445 /* VIResourceLoadingRequestWorker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIResourceLoadingRequestWorker.m; path = VIMediaCache/ResourceLoader/VIResourceLoadingRequestWorker.m; sourceTree = ""; }; - 14A77420D093DD34B75FFCC1FB143B74 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1531C93A1C3CA82590B7C869D5B6D17A /* Pod_Asset_BMPlayer.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Pod_Asset_BMPlayer.xcassets; path = Source/Pod_Asset_BMPlayer.xcassets; sourceTree = ""; }; - 156413FE94D4E9DC3833C852017288CE /* NVActivityIndicatorAnimationBallClipRotate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotate.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift; sourceTree = ""; }; - 1590982EA8B02AA9BE70BF800E6E7FCA /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = ""; }; - 16BA8E22F2B1F14E3A1062448E1E012E /* VIResourceLoaderManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIResourceLoaderManager.m; path = VIMediaCache/ResourceLoader/VIResourceLoaderManager.m; sourceTree = ""; }; - 17716048F8A280FEFE9A6726964138E9 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = ""; }; - 1945D3C85874665943E8193615F97182 /* VIMediaCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = VIMediaCache.framework; path = VIMediaCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1BD40932369F0CE39BC2E0CF0DD98868 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 1CB25A1F22A1604A652B0CFF0ADC23A2 /* BMSubtitles.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMSubtitles.swift; path = Source/BMSubtitles.swift; sourceTree = ""; }; - 1D4B696348AC5FE5EE5D36F7FE5DF584 /* NVActivityIndicatorAnimationBallRotate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallRotate.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift; sourceTree = ""; }; - 1DD68B9A7394F16E1FF6A9DE0356971A /* Pods_BMPlayer_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_BMPlayer_Example.framework; path = "Pods-BMPlayer_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 251CCB4F4FD00AE4B09A6F555974F932 /* Pods-BMPlayer_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-BMPlayer_Example-umbrella.h"; sourceTree = ""; }; - 2525FE3CCE4586806B20086FA68A4069 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = ""; }; - 279741231DFC3507029926EBB4FC768F /* NVActivityIndicatorAnimationBallBeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallBeat.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift; sourceTree = ""; }; - 2913E77B21693C7EB83355FBDBC26330 /* SwipeBack.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SwipeBack.modulemap; sourceTree = ""; }; - 2BEE8FFCEDD6FFBE723B7114C545ACB0 /* NVActivityIndicatorAnimationBallScaleRipple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleRipple.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift; sourceTree = ""; }; - 2F941A3EA5EB370F0DA3994DB2DD95C1 /* VIResourceLoadingRequestWorker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIResourceLoadingRequestWorker.h; path = VIMediaCache/ResourceLoader/VIResourceLoadingRequestWorker.h; sourceTree = ""; }; - 31D87377FED2D4FA4CEF3062419F7CC9 /* VICacheManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheManager.h; path = VIMediaCache/Cache/VICacheManager.h; sourceTree = ""; }; - 329858A4956C565282F3F8918D6027EE /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit.framework; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 338A0BA253CD6528BE77CB282B249524 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = ""; }; - 3463ABD75DFB4EB77B5CFC76FE4BB0A5 /* NVActivityIndicatorAnimationBallGridPulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallGridPulse.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift; sourceTree = ""; }; - 354F56186734BDE81A77D8D99CAAD50B /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallSpinFadeLoader.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift; sourceTree = ""; }; - 3757618671F86505B542E0502E7BE51B /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = ""; }; - 38051AB673249585A49C14D27A470117 /* Pods-BMPlayer_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BMPlayer_Example-frameworks.sh"; sourceTree = ""; }; - 3BEF50C047325FAF1B410630DDED4E82 /* Pods-BMPlayer_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BMPlayer_Example-resources.sh"; sourceTree = ""; }; - 3D98435F2C66F04F47A91D6C2030D4A6 /* NVActivityIndicatorAnimationDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationDelegate.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift; sourceTree = ""; }; - 3E89454A6EC7455C3F3FDA611995D761 /* VICacheSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheSessionManager.m; path = VIMediaCache/Cache/VICacheSessionManager.m; sourceTree = ""; }; - 3EA26763402D3A7C9A96258F97131C5B /* Pods-BMPlayer_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BMPlayer_Example-acknowledgements.plist"; sourceTree = ""; }; - 3FA147579C65E983F954394B3C423C54 /* UINavigationController+SwipeBack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+SwipeBack.m"; path = "SwipeBack/UINavigationController+SwipeBack.m"; sourceTree = ""; }; - 3FB8AEAFF9B1DBF071B3A33E183CC542 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; - 40CCB975D5E9E8843D31E43CACB199F3 /* NVActivityIndicatorAnimationBallScale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScale.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift; sourceTree = ""; }; - 47A0061BAAC43212319CD61E5E5B7F2D /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SnapKit.modulemap; sourceTree = ""; }; - 48FA3A274519194A1A57F64C33240D67 /* VICacheAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheAction.h; path = VIMediaCache/Cache/VICacheAction.h; sourceTree = ""; }; - 490A4D797EA7ABF5BB304C099F36E825 /* NVActivityIndicatorAnimationBallTrianglePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallTrianglePath.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift; sourceTree = ""; }; - 4A519C0B8DD1DD528BFB59F0F496152E /* SwipeBack-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwipeBack-prefix.pch"; sourceTree = ""; }; - 4AA294A109A17405195DBBFAEEE0FDE1 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallZigZagDeflect.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift; sourceTree = ""; }; - 4BB696EAA4F192F17506935BC732E094 /* NVActivityIndicatorViewable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorViewable.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift; sourceTree = ""; }; - 4E27723E7B6EB0291752282156C53E0D /* BMPlayer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = BMPlayer.modulemap; sourceTree = ""; }; - 4FBBB448715BD56EFDF11B9D69975CCD /* NVActivityIndicatorPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorPresenter.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift; sourceTree = ""; }; - 5348FF656605F7D02FEE6EF7F10EE063 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = ""; }; - 538007643A79D730F84E0FB766F13A78 /* VIMediaCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "VIMediaCache-prefix.pch"; sourceTree = ""; }; - 5468A7D9F3284296DBAD27E68DD66F3D /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = ""; }; - 5479400E529A9B3357A11A08C2684954 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; - 54C639BA1463EA4CEAD9B26CF5F0CE17 /* BMPlayer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BMPlayer-dummy.m"; sourceTree = ""; }; - 58D96292B36BFFE28B302F523D3ED989 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScalePulseOut.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift; sourceTree = ""; }; - 5A47D73A9D1764CDD33E01834F2F98AA /* VICacheConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheConfiguration.h; path = VIMediaCache/Cache/VICacheConfiguration.h; sourceTree = ""; }; - 5A7222599CD3305693136DF5B24C3F22 /* BMPlayer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BMPlayer-prefix.pch"; sourceTree = ""; }; - 5ABE124846BC6E4E7A44B06720B5C2D7 /* BMPlayerProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerProtocols.swift; path = Source/BMPlayerProtocols.swift; sourceTree = ""; }; - 5F4DBF84185372812E50AE92227DECC0 /* NVActivityIndicatorView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NVActivityIndicatorView-umbrella.h"; sourceTree = ""; }; - 60B77C02FB54ADF80CEC565DF8AFDE50 /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = ""; }; - 61B1FEB80828FED50E854081D8F4A42E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 621DB56D01D5F869D9FDED4F164509FA /* NVActivityIndicatorAnimationSquareSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationSquareSpin.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift; sourceTree = ""; }; - 650FFFE7F4EA86EC5055B20888D313BC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 654D92521DEE92E381AD5559FAFBD391 /* NVActivityIndicatorView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = NVActivityIndicatorView.modulemap; sourceTree = ""; }; - 66486740FD27E84BA5119DED0CC82D42 /* SwipeBack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwipeBack.h; path = SwipeBack/SwipeBack.h; sourceTree = ""; }; - 6819B15C7C06D53348CFAC48DB4A423E /* UIViewController+SwipeBack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SwipeBack.m"; path = "SwipeBack/UIViewController+SwipeBack.m"; sourceTree = ""; }; - 682513D3D963C5A006B97391A38468FE /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotatePulse.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift; sourceTree = ""; }; - 6A0E7EF30F7C081D6BEA92EE25B22F97 /* BMPlayerLayerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerLayerView.swift; path = Source/BMPlayerLayerView.swift; sourceTree = ""; }; - 6EEBF8FCB2DE378E199D5140762FFA96 /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; - 70FBDFFC78EEE1EEF89D058FCF352BF4 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = ""; }; - 732412A17B81E4D9BB94C2E5759726C5 /* SwipeBack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwipeBack.framework; path = SwipeBack.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 74CBC89BFB92A2050ED5042D46074328 /* VIMediaCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VIMediaCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7891AC4BB5C13114E3A7A7ACAFEF1758 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 792C23DD55939E35B980E41BE55E4D02 /* VIMediaCacheWorker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIMediaCacheWorker.h; path = VIMediaCache/Cache/VIMediaCacheWorker.h; sourceTree = ""; }; - 7AAAF129A23A53BEBD9AB70A0CECD2D2 /* NVActivityIndicatorShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorShape.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorShape.swift; sourceTree = ""; }; - 7DE2183B8FAD9A8F79C858C4F7650F7D /* NVActivityIndicatorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorView.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/NVActivityIndicatorView.swift; sourceTree = ""; }; - 7F4BDE507843F284E73BB3E266FB911B /* NVActivityIndicatorAnimationSemiCircleSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationSemiCircleSpin.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift; sourceTree = ""; }; - 7F752A8FBCEA7D5412B810DABA05B535 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = ""; }; - 7FF1E0C2A14AF22F3F1D394FBFAD7C1F /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; - 8380C88449A237CC8EEA36E050A626AC /* NVActivityIndicatorAnimationBallScaleMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleMultiple.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift; sourceTree = ""; }; - 839A8538297B12C326161BDA92216260 /* NVActivityIndicatorAnimationOrbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationOrbit.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift; sourceTree = ""; }; - 857002F7B986610F3EFCAB4FE2A62D93 /* SwipeBack.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwipeBack.xcconfig; sourceTree = ""; }; - 85B2F615A1B80F15269489BCF2D14C93 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; - 8639375AEFFE223C10590FD171222DFB /* VIMediaCache-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "VIMediaCache-umbrella.h"; sourceTree = ""; }; - 89CECDE07849EFAEAD6E47D7490E8C84 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationTriangleSkewSpin.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift; sourceTree = ""; }; - 8DA3B09055A2D76E25C66FC6D39281D6 /* NVActivityIndicatorView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NVActivityIndicatorView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8EBA14458D77031ED9DD9DF89C2CA708 /* NVActivityIndicatorAnimationPacman.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationPacman.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift; sourceTree = ""; }; - 8EFACF06F3BCEFFB08EC9E99A02B2303 /* BMPlayer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BMPlayer.xcconfig; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 978F0A86C2906419C2374A7FBA0E2BF0 /* NVActivityIndicatorAnimationBallPulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulse.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift; sourceTree = ""; }; - 9814E36EDBB18F161B7662E67B9D25B8 /* VIMediaDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIMediaDownloader.h; path = VIMediaCache/ResourceLoader/VIMediaDownloader.h; sourceTree = ""; }; - 99232A303A892CB10EC6725CF42751B3 /* VIMediaDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIMediaDownloader.m; path = VIMediaCache/ResourceLoader/VIMediaDownloader.m; sourceTree = ""; }; - 9A2609898478DE0AAB3638FFF4E9DF71 /* UINavigationController+SwipeBack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+SwipeBack.h"; path = "SwipeBack/UINavigationController+SwipeBack.h"; sourceTree = ""; }; - 9AF471120563A0ACF018D7919BAEB115 /* BMPlayer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BMPlayer-umbrella.h"; sourceTree = ""; }; - 9B7E5479D63DE345BC94F4D072FF477E /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotateMultiple.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift; sourceTree = ""; }; - 9B8261357D757C528C5000FCCB79FA23 /* VICacheConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheConfiguration.m; path = VIMediaCache/Cache/VICacheConfiguration.m; sourceTree = ""; }; - 9B94168A33685AB955A387301B4F9665 /* VIResourceLoaderManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIResourceLoaderManager.h; path = VIMediaCache/ResourceLoader/VIResourceLoaderManager.h; sourceTree = ""; }; - 9BCA3BCC636A9B5C7DC115987E86EB86 /* Pods-BMPlayer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BMPlayer_Example.debug.xcconfig"; sourceTree = ""; }; - 9E3515A8131FACC29277590BF63274F1 /* VIResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIResourceLoader.m; path = VIMediaCache/ResourceLoader/VIResourceLoader.m; sourceTree = ""; }; - 9FBF5B86D635FC8B5EF855312215101F /* Pods-BMPlayer_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BMPlayer_Example-acknowledgements.markdown"; sourceTree = ""; }; - A03E374B876D9B66267F3B11496D3C11 /* BMPlayerClearityChooseButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerClearityChooseButton.swift; path = Source/BMPlayerClearityChooseButton.swift; sourceTree = ""; }; - A334F065F85F02D957A4951FC10D565D /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = ""; }; - A59205784769C71E2194CFAFBEB3CEB9 /* NVActivityIndicatorAnimationBallRotateChase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallRotateChase.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift; sourceTree = ""; }; - A6DB1EA9F400AE1D400110505C872A62 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A74F72C0DBAD4D9D171D9457CD4B7BE9 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = ""; }; - A7E2C2B01F7B0D58B334D9F38DC1DAA6 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - A81D263B83FDFF4ACEED3E211D0AFDBF /* VIMediaCacheWorker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIMediaCacheWorker.m; path = VIMediaCache/Cache/VIMediaCacheWorker.m; sourceTree = ""; }; - A991D35920AF57C04B0F12D84948BEE1 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; - AD9E13562E901D4E95765928890633B5 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; - AE1A4D9269F6AB8630ACC8D26241F433 /* BMTimeSlider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMTimeSlider.swift; path = Source/BMTimeSlider.swift; sourceTree = ""; }; - AF086FDFA19687C1579675CEE800FB55 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; - B1F5706AC9A5065EDC65F0528FFEF096 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; - B5E87F14F39F49BB897B76181D35BD2F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B5EE462D662E061A760601C5542C0880 /* BMPlayerItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerItem.swift; path = Source/BMPlayerItem.swift; sourceTree = ""; }; - B5FDCD24F966CA27B88B3D540F7B9BD2 /* NVActivityIndicatorAnimationLineScaleParty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScaleParty.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift; sourceTree = ""; }; - BAD6835BD2DA10E66744A8BBEB9F6E26 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = ""; }; - BB0757DEA0533DEB857742EDFB97653F /* VIContentInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIContentInfo.h; path = VIMediaCache/ResourceLoader/VIContentInfo.h; sourceTree = ""; }; - BC94DE4D75331867248F3A1644CE2E6D /* SwipeBack-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwipeBack-dummy.m"; sourceTree = ""; }; - BE07CF94DCDB4C250F2225383C44E6DC /* VIContentInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIContentInfo.m; path = VIMediaCache/ResourceLoader/VIContentInfo.m; sourceTree = ""; }; - C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - C3BB95690BF8716F63DBD50C7CE3F016 /* Pods-BMPlayer_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BMPlayer_Example-dummy.m"; sourceTree = ""; }; - C3E044FBC2CCDCECBF80B9848AF0B474 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = ""; }; - C40BE8C2CFB852FF6FCFD66FFC059A93 /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = ""; }; - C5A794B4D047ACAF4F5DC0B7900B8952 /* NVActivityIndicatorAnimationBallGridBeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallGridBeat.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift; sourceTree = ""; }; - C7A82E0496E2EE693E516121F300799F /* UIViewController+SwipeBack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SwipeBack.h"; path = "SwipeBack/UIViewController+SwipeBack.h"; sourceTree = ""; }; - C83AA1B5F78BA4370E516C1D08E4CF47 /* RevealServer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RevealServer.framework; path = "RevealServer-11/iOS/RevealServer.framework"; sourceTree = ""; }; - CA00FFD91D2E1FA2687211444F482463 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = ""; }; - CD0470176AFD5F3E5F83C42996C06EF4 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineSpinFadeLoader.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift; sourceTree = ""; }; - CD2E1A08FC62C8590B67EDE1515ADF23 /* NVActivityIndicatorAnimationBallPulseSync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulseSync.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift; sourceTree = ""; }; - CE3179FDB16A901B0C447029D44AEDCA /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; - CE88695587AB3EE6498F19A4733951C9 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = ""; }; - D721316E4B940299BE3FB5A7D9550782 /* VICacheAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheAction.m; path = VIMediaCache/Cache/VICacheAction.m; sourceTree = ""; }; - DA17429EAF3D35A8FD1045B373FCAA75 /* NVActivityIndicatorAnimationBallPulseRise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulseRise.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift; sourceTree = ""; }; - DBCEDE6DB5403BE834A6AD0A4F762061 /* VIResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIResourceLoader.h; path = VIMediaCache/ResourceLoader/VIResourceLoader.h; sourceTree = ""; }; - DF19493AC08E63C695DF49775693CEC8 /* NVActivityIndicatorView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NVActivityIndicatorView-prefix.pch"; sourceTree = ""; }; - E03D3AD7002EEEEEB475128C1D241989 /* NVActivityIndicatorAnimationBlank.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBlank.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift; sourceTree = ""; }; - E04AF0F5819D17377992571693C493A3 /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; - E0F0290416431E257159FC6324F5F652 /* NVActivityIndicatorAnimationAudioEqualizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationAudioEqualizer.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift; sourceTree = ""; }; - E39FF7A1F798CA3FBC26671B53CCFCBA /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; - E46F246B4B757A474D4F92637D1CEC11 /* Pods-BMPlayer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BMPlayer_Example.release.xcconfig"; sourceTree = ""; }; - E4B164343B02C71CF35EE2B60BFDEC0D /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = ""; }; - E4FA0939E713E57339C41027799C59A2 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = ""; }; - E5E062D352AAE623C860AAB977B7CE67 /* NVActivityIndicatorAnimationLineScale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScale.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift; sourceTree = ""; }; - E634B8A69E0AC85B4311EA934DF1F4DF /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; - E6D1AF67D85A1E20E198467FC7C55A21 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - E9496677AC3F73BFE080120C84BE27A3 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = ""; }; - ECDB4C2E193F0A6AA6E8F578A40DCA82 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; - ED24264F3820DE09A88EBCDFDC0952AB /* VICacheManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheManager.m; path = VIMediaCache/Cache/VICacheManager.m; sourceTree = ""; }; - EDE1DEAF007E48C73BA470D8AFAE2446 /* Pods-BMPlayer_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-BMPlayer_Example.modulemap"; sourceTree = ""; }; - EF99A1E66B9482B394C5ED43D423EF01 /* NVActivityIndicatorAnimationCubeTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationCubeTransition.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift; sourceTree = ""; }; - F1A34774A688579092F0D7B8AEE82A91 /* SwipeBack-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwipeBack-umbrella.h"; sourceTree = ""; }; - F1FF129E806B9B104E3665DEC1A9F2DE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F3A4C011ED1C1716B8B28111FECCD94B /* BMPlayerManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BMPlayerManager.swift; sourceTree = ""; }; - F53F2F9322CBA6B467D0FD454E915765 /* NVActivityIndicatorView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NVActivityIndicatorView.xcconfig; sourceTree = ""; }; - F6D49A2486A061622928187EAAFA1DFC /* VIMediaCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIMediaCache.h; path = VIMediaCache/VIMediaCache.h; sourceTree = ""; }; - FCB9665A10EEBB40E498FDB05F99D5E4 /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; - FCE1BAEBCEE8C3079032FFF7FF0038A5 /* NVActivityIndicatorView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NVActivityIndicatorView.framework; path = NVActivityIndicatorView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FDED71A8A650FD70D9FAED6662A9496B /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleRippleMultiple.swift; path = NVActivityIndicatorView/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift; sourceTree = ""; }; - FE4A9788BFEBF3A5FE65B46F74C0EE1D /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; - FE98FDC76BCC3E5DF48BEF26DA5091BA /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = ""; }; + 03B433402D4A6AD9CC7A26AEA294E34E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 053275E7BFDA11F5AB0B61D3BDC66C5C /* NVActivityIndicatorView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NVActivityIndicatorView-umbrella.h"; sourceTree = ""; }; + 0537C981E34A504CC878C007A90DE7E0 /* NVActivityIndicatorAnimationCircleStrokeSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationCircleStrokeSpin.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCircleStrokeSpin.swift; sourceTree = ""; }; + 06E5A8B7B1AD7E3BEF5C450E56F10A15 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationTriangleSkewSpin.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationTriangleSkewSpin.swift; sourceTree = ""; }; + 09FEB3C8AE17A7F36DBA4D0197C0FBF1 /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; + 0A65F1770B45AC7F30AE23D56144A88A /* VIResourceLoadingRequestWorker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIResourceLoadingRequestWorker.h; path = VIMediaCache/ResourceLoader/VIResourceLoadingRequestWorker.h; sourceTree = ""; }; + 0ABBA39641A81922B05B93D32B611910 /* Pods-BMPlayer_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-BMPlayer_Example-umbrella.h"; sourceTree = ""; }; + 0DCBBC668CC82E69CC421706CAB4B0C4 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; + 0E0D6BAE787AC9BF4C01C09AE69A10D4 /* NVActivityIndicatorAnimationBallPulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulse.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulse.swift; sourceTree = ""; }; + 10463BD2F2FFFC2A603595FA0D5819FE /* BMPlayer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BMPlayer-umbrella.h"; sourceTree = ""; }; + 18221B8F28C6B2C672BA207AB60BFB1D /* VIMediaCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = VIMediaCache.framework; path = VIMediaCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 190524134DCE2C5F6728BA5EA5D16598 /* SwipeBack-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwipeBack-Info.plist"; sourceTree = ""; }; + 1B6C4F7F5B6AE911BAE7A0ADB28990F8 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 1D04CD880B213A915A2B8937944A84C1 /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; + 1DDDF7D074E1B8BD84870FAD7DC860D7 /* BMPlayer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "BMPlayer-Info.plist"; sourceTree = ""; }; + 2028B204C544D392F65F4F1911731EBC /* BMPlayerControlView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerControlView.swift; path = Source/BMPlayerControlView.swift; sourceTree = ""; }; + 2170BB0FBADDB3F3EB68A9F06B539294 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit.framework; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 221C5430DB73E3866096BF83BCAEAB55 /* NVActivityIndicatorView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NVActivityIndicatorView.xcconfig; sourceTree = ""; }; + 22275F7A284509B4CEC1E470E171D77D /* NVActivityIndicatorAnimationBallGridPulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallGridPulse.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridPulse.swift; sourceTree = ""; }; + 22EA124E697140E939DE041137F467AF /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; + 22EFD954F6E0AFA7FF2591FD5F35707D /* VIResourceLoaderManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIResourceLoaderManager.m; path = VIMediaCache/ResourceLoader/VIResourceLoaderManager.m; sourceTree = ""; }; + 23607DE187E9FA1EA99B0485BFDB884D /* VICacheConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheConfiguration.m; path = VIMediaCache/Cache/VICacheConfiguration.m; sourceTree = ""; }; + 25FD3AB25B903D4F41E0B2536C5AFC9A /* NVActivityIndicatorAnimationBallRotateChase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallRotateChase.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotateChase.swift; sourceTree = ""; }; + 27F4A0F0619C6AC134FDBAD087F5AB2C /* VICacheAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheAction.m; path = VIMediaCache/Cache/VICacheAction.m; sourceTree = ""; }; + 27FF725436BD5CC4BB133EAA2AB30B80 /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = ""; }; + 28F501A9B74545CC3AEDBFE1E1BAE46B /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = ""; }; + 2A96D7405ED254E9619FBA6B669D9E9F /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = ""; }; + 2AFEF3DFBA16427A66B66BA1E800D454 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineSpinFadeLoader.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineSpinFadeLoader.swift; sourceTree = ""; }; + 300E1D8DB4399E8E31925935979DE626 /* VICacheManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheManager.m; path = VIMediaCache/Cache/VICacheManager.m; sourceTree = ""; }; + 30BEF65274DCF8C3B4639A15971833AD /* NVActivityIndicatorAnimationBallPulseSync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulseSync.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseSync.swift; sourceTree = ""; }; + 33754FE4C3006472479AAAAF9A7C53A1 /* VIMediaCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "VIMediaCache-dummy.m"; sourceTree = ""; }; + 3681724252F19C5983669A8C262E53CE /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleRippleMultiple.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRippleMultiple.swift; sourceTree = ""; }; + 3861C0847F3A0072807B7394C2A1D6E6 /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotatePulse.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotatePulse.swift; sourceTree = ""; }; + 3968B8F36B4CF9711CBD68214ED242EE /* VIMediaCacheWorker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIMediaCacheWorker.m; path = VIMediaCache/Cache/VIMediaCacheWorker.m; sourceTree = ""; }; + 3A54CB5232972E192B77C1783A20F10A /* UINavigationController+SwipeBack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+SwipeBack.m"; path = "SwipeBack/UINavigationController+SwipeBack.m"; sourceTree = ""; }; + 3B7F3C600D0A0486A1CC66194B0A53FC /* UINavigationController+SwipeBack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+SwipeBack.h"; path = "SwipeBack/UINavigationController+SwipeBack.h"; sourceTree = ""; }; + 3C7852E8AF9AB25541D6CB95F45AA891 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScalePulseOutRapid.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOutRapid.swift; sourceTree = ""; }; + 3E4BD7CD3A0E1E5836DD6131F0FDAE62 /* SwipeBack-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwipeBack-dummy.m"; sourceTree = ""; }; + 3E9328B63B76DDEB2460B2810F1A15BC /* NVActivityIndicatorAnimationOrbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationOrbit.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationOrbit.swift; sourceTree = ""; }; + 426D4F25D857DD8BF021BD5EF2036A09 /* NVActivityIndicatorAnimationSemiCircleSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationSemiCircleSpin.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSemiCircleSpin.swift; sourceTree = ""; }; + 462E9395C31A4FAC970C71750D198A1E /* Pods-BMPlayer_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BMPlayer_Example-Info.plist"; sourceTree = ""; }; + 472679BDD51C9FB40F254EC32B79A1F0 /* NVActivityIndicatorAnimationBallClipRotate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotate.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotate.swift; sourceTree = ""; }; + 4B307DB1805074F8A87E5DFD221BAB65 /* VIMediaCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "VIMediaCache-prefix.pch"; sourceTree = ""; }; + 51D5361FA35535339E246ACEA5E6CC82 /* VIContentInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIContentInfo.m; path = VIMediaCache/ResourceLoader/VIContentInfo.m; sourceTree = ""; }; + 5404C2D8C50D96A0B902D4A860C99216 /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = ""; }; + 56B24C69AFECD881D7DA199D440553D1 /* Pods-BMPlayer_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-BMPlayer_Example.modulemap"; sourceTree = ""; }; + 582142D464D7D24896CB7BCD9C1CD1CC /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = ""; }; + 5B9EED1408A38E0F9EF02408ADAB6BCA /* VIMediaCache-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "VIMediaCache-umbrella.h"; sourceTree = ""; }; + 5E0EB62F3553EE593D78BAA7CF48C959 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + 5EF2B2880C30A1FFB20DDC7EA50061B2 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5FB3A4B227C9EA6F0CE1834551C9F993 /* BMPlayer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BMPlayer.modulemap; sourceTree = ""; }; + 63E5DFCC48690BED3E141E2FA608E2D8 /* VIMediaCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = VIMediaCache.xcconfig; sourceTree = ""; }; + 64F058973DD5DA40C4CF133D3CA0494C /* VIMediaCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VIMediaCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 663D99AB0F74664B33232581DE38395E /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; + 6651B9EA2DF9480D5F7B07BD73D30EC5 /* NVActivityIndicatorAnimationPacman.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationPacman.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationPacman.swift; sourceTree = ""; }; + 66B37886CE2BC08390CE62075CF2D163 /* VICacheConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheConfiguration.h; path = VIMediaCache/Cache/VICacheConfiguration.h; sourceTree = ""; }; + 675380B35BD0AB8A743F75841896128D /* Pods_BMPlayer_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_BMPlayer_Example.framework; path = "Pods-BMPlayer_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 677FA5139762F6C165BEA829313D8BFA /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = ""; }; + 6891B0C442E88DAACFDAE23DF4EE8F97 /* NVActivityIndicatorAnimationBallGridBeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallGridBeat.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallGridBeat.swift; sourceTree = ""; }; + 6ADF2EDB4082C6C8D6373F4923AC3849 /* VIMediaCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIMediaCache.h; path = VIMediaCache/VIMediaCache.h; sourceTree = ""; }; + 6D761D4D77E40452DD6233CFFF189776 /* Pods-BMPlayer_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BMPlayer_Example-acknowledgements.markdown"; sourceTree = ""; }; + 6DE9A36360DC1BC451170AC3341B6099 /* NVActivityIndicatorAnimationBallZigZag.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallZigZag.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZag.swift; sourceTree = ""; }; + 6FD3AEF5EC39C28E401032CB6959EE0A /* UIViewController+SwipeBack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+SwipeBack.m"; path = "SwipeBack/UIViewController+SwipeBack.m"; sourceTree = ""; }; + 710C7FC7F3A0ABD079FEAF2B76241FD5 /* SwipeBack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwipeBack.h; path = SwipeBack/SwipeBack.h; sourceTree = ""; }; + 716CF58537E3DA30A43EC29CD18A175F /* NVActivityIndicatorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorView.swift; path = Source/NVActivityIndicatorView/NVActivityIndicatorView.swift; sourceTree = ""; }; + 722A42849DDEBE0758F72C4CD0A43A24 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = ""; }; + 73136544D94B72171A7FCB845D76EFF6 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = ""; }; + 7349835EACAD31984EBAA7429D2F9829 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = ""; }; + 74F318164E0795EC442D35E96715D16B /* VIContentInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIContentInfo.h; path = VIMediaCache/ResourceLoader/VIContentInfo.h; sourceTree = ""; }; + 76085BA3DF517CF97C9BB8F5B34C249A /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; + 774618023EC28C4417AAF3CC382DD27E /* SwipeBack-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwipeBack-umbrella.h"; sourceTree = ""; }; + 77A98225C266EE9899D7AE0EBD5592E6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 78D96BFB55B7B1E75E6863A38CB77E07 /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; + 78FC34689EB39CE39B854DE002B616DD /* BMPlayerManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BMPlayerManager.swift; sourceTree = ""; }; + 7A169D1EEFCA558F5B559660E7B7193E /* Pods-BMPlayer_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BMPlayer_Example.debug.xcconfig"; sourceTree = ""; }; + 7A65B65C06CFEB0FF0704CEFE57D8359 /* BMSubtitles.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMSubtitles.swift; path = Source/BMSubtitles.swift; sourceTree = ""; }; + 7D116AA805F1414347EE70753B1ED9E1 /* VICacheManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheManager.h; path = VIMediaCache/Cache/VICacheManager.h; sourceTree = ""; }; + 7E891B6DE536D20CEC811CF5B610C6E4 /* NVActivityIndicatorPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorPresenter.swift; path = Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorPresenter.swift; sourceTree = ""; }; + 7FBCD5D28BFADFA9556BDCDF11CF20B5 /* BMPlayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayer.swift; path = Source/BMPlayer.swift; sourceTree = ""; }; + 80A4A2DADB70F33844AFCD5FE3A5B44C /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = ""; }; + 81ABD0968CE59709F2363F4EC4EE8CE8 /* NSString+VIMD5.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+VIMD5.m"; path = "VIMediaCache/Cache/NSString+VIMD5.m"; sourceTree = ""; }; + 8444D04BB50EDE93DCDFD0C7B45EAAC6 /* UIViewController+SwipeBack.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+SwipeBack.h"; path = "SwipeBack/UIViewController+SwipeBack.h"; sourceTree = ""; }; + 84685D7C88536F9E8B8D0B96CF11106D /* VIMediaCache-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "VIMediaCache-Info.plist"; sourceTree = ""; }; + 855307702403068F1EF43C73376E8F9C /* NVActivityIndicatorAnimationBallBeat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallBeat.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallBeat.swift; sourceTree = ""; }; + 857E4121CFA4251B8B37446C1489F1D1 /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = ""; }; + 873D445E10991CEB7FCF52D71A68F225 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = ""; }; + 87A7EB6398A84C38257BC4A4F479C72A /* SwipeBack.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwipeBack.modulemap; sourceTree = ""; }; + 88978A8D949F9CF7FE78C662D2FBD6F1 /* Pods-BMPlayer_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BMPlayer_Example-acknowledgements.plist"; sourceTree = ""; }; + 8A9F537089B08DAA09CFB4713D42E5EC /* VICacheSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VICacheSessionManager.m; path = VIMediaCache/Cache/VICacheSessionManager.m; sourceTree = ""; }; + 8C4EB5AE2E70CA790FAA570B78DD6C64 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + 90B3ECEBC185A228E887760BF11C7317 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; + 9214A0F1EEC5D9D77120DF4820BDB897 /* VIMediaCacheWorker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIMediaCacheWorker.h; path = VIMediaCache/Cache/VIMediaCacheWorker.h; sourceTree = ""; }; + 925E9179A58817D14424E79FA2CB84CE /* NVActivityIndicatorAnimationLineScaleParty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScaleParty.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScaleParty.swift; sourceTree = ""; }; + 93FC611372EA5DE85A6B5AE34BE91CE9 /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; + 96A5607DC0072766E36BA665FD82C4DB /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = ""; }; + 9AD1B7E233A2D75D506FAD1B7D8D85DC /* NVActivityIndicatorView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NVActivityIndicatorView-dummy.m"; sourceTree = ""; }; + 9B9108DFB03070C1A4E72C6C819DAAE3 /* Pods-BMPlayer_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BMPlayer_Example-dummy.m"; sourceTree = ""; }; + 9BE5DAFB726AA8F89E982FF669FE4874 /* NVActivityIndicatorView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NVActivityIndicatorView-prefix.pch"; sourceTree = ""; }; + 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; }; + 9FA563839DBEB512B73927561176D9B6 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = ""; }; + A08F260D71F82D5E40FF8C6C8349E340 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = ""; }; + A12ADE07CACD36402198AECE3E4329B7 /* NVActivityIndicatorAnimationBlank.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBlank.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBlank.swift; sourceTree = ""; }; + A13C714CB68331E08420F1292E895A13 /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = ""; }; + A350B1C48856EB3FC25C2B351FD720E0 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScalePulseOut.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScalePulseOut.swift; sourceTree = ""; }; + A38E23348B3378426FC55E048075060B /* VIMediaDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIMediaDownloader.m; path = VIMediaCache/ResourceLoader/VIMediaDownloader.m; sourceTree = ""; }; + A5F81EC96A6F107553A0017CC5F94FDB /* VICacheAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheAction.h; path = VIMediaCache/Cache/VICacheAction.h; sourceTree = ""; }; + A73EA61C25E586D23527BD86C2DFC0FD /* NVActivityIndicatorView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NVActivityIndicatorView.modulemap; sourceTree = ""; }; + A7C44091AD3DF511B3E73A718435F6A3 /* VIResourceLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIResourceLoader.h; path = VIMediaCache/ResourceLoader/VIResourceLoader.h; sourceTree = ""; }; + A8A322503D4B7E4E0E8F413350764E3A /* VIMediaDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIMediaDownloader.h; path = VIMediaCache/ResourceLoader/VIMediaDownloader.h; sourceTree = ""; }; + A92D3FC01E73FCE9C33F242DA2448641 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = ""; }; + AC56C510F0CB6C19E144E75B57A57AA5 /* BMTimeSlider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMTimeSlider.swift; path = Source/BMTimeSlider.swift; sourceTree = ""; }; + AE9B94E65BD0BC58B1DC625941D7FDEE /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + B30FD55A57CF77F550A7B001BE50AD1D /* BMPlayer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BMPlayer-prefix.pch"; sourceTree = ""; }; + B31DD37F50C6A2B54F91233281AF0C58 /* SwipeBack-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwipeBack-prefix.pch"; sourceTree = ""; }; + B3A13796FD6983F1D3BA8B559AEA3D5E /* NVActivityIndicatorShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorShape.swift; path = Source/NVActivityIndicatorView/NVActivityIndicatorShape.swift; sourceTree = ""; }; + B6C83B0AD87C139198109A3034A52AFD /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = ""; }; + B934EC95570CCA1E3E28EFBDFE2C0F22 /* NVActivityIndicatorAnimationBallScaleMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleMultiple.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleMultiple.swift; sourceTree = ""; }; + B9C5413769109E0F79C0FB7895E3BE0B /* BMPlayer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BMPlayer-dummy.m"; sourceTree = ""; }; + BA0260CA2833CC591EAA20B2D37D9A85 /* NVActivityIndicatorAnimationCubeTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationCubeTransition.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationCubeTransition.swift; sourceTree = ""; }; + BA763988CD986BEA58FD2F4171485A3C /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; + BCE81AAEB32C737A32005CA1A92C8900 /* NVActivityIndicatorView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NVActivityIndicatorView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BFB66B3B0A7D7A63A077433BD2BA65C9 /* BMPlayer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = BMPlayer.framework; path = BMPlayer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C0A1219A121B71C97688B9B778A07F72 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; + C0E32A850C486E53B354065D8AEA2A9F /* NVActivityIndicatorView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NVActivityIndicatorView-Info.plist"; sourceTree = ""; }; + C33FA0E4B725619E14DBA09BEC3C9E08 /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = ""; }; + C3A664CD38334F0D76977E91B06A50C9 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; + C44C626D28997D620A348BFD8BD1F5D9 /* NVActivityIndicatorAnimationBallRotate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallRotate.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallRotate.swift; sourceTree = ""; }; + C460184507599A8F5702EDA7E17E9262 /* NVActivityIndicatorAnimationDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationDelegate.swift; path = Source/NVActivityIndicatorView/NVActivityIndicatorAnimationDelegate.swift; sourceTree = ""; }; + C4AC2471B685B7BE9B0A015BEDB2C93E /* NVActivityIndicatorViewable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorViewable.swift; path = Source/NVActivityIndicatorView/Presenter/NVActivityIndicatorViewable.swift; sourceTree = ""; }; + C51530141E152C4D4212AFC6510ACDEA /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; + C64375EE840AFEE62FEB4553C37ED956 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; + C841E4D99819814282E407AE0F30788B /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = ""; }; + C996B9658C9C78AFFBCE2BACAB767AB9 /* Pod_Asset_BMPlayer.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Pod_Asset_BMPlayer.xcassets; path = Source/Pod_Asset_BMPlayer.xcassets; sourceTree = ""; }; + CCEA90491F565AE29A40FCDA4B58D38C /* VIResourceLoaderManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VIResourceLoaderManager.h; path = VIMediaCache/ResourceLoader/VIResourceLoaderManager.h; sourceTree = ""; }; + CF7DAB0A6E90A1A207B58A2B0ED0D5DE /* SwipeBack.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwipeBack.xcconfig; sourceTree = ""; }; + D0E232C777FEFFDA8F837585A87AB7AD /* NVActivityIndicatorAnimationLineScale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationLineScale.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationLineScale.swift; sourceTree = ""; }; + D15961DB2AB05EBF4D4FB50C54C62402 /* SwipeBack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwipeBack.framework; path = SwipeBack.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D429EF6281A42A1EF02EA40AC9CFD674 /* BMPlayerProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerProtocols.swift; path = Source/BMPlayerProtocols.swift; sourceTree = ""; }; + D508EE28D1033D8C48ADFD0FC92434EB /* BMPlayerItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerItem.swift; path = Source/BMPlayerItem.swift; sourceTree = ""; }; + D515BA1CB6D887F29196B6F0717BF8A5 /* NVActivityIndicatorAnimationSquareSpin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationSquareSpin.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationSquareSpin.swift; sourceTree = ""; }; + D55360A0C80433F5F05556E7269F203D /* NVActivityIndicatorAnimationBallScaleRipple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScaleRipple.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScaleRipple.swift; sourceTree = ""; }; + D617F8BE4E89D0BBBAE73705BD9F47BF /* Pods-BMPlayer_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BMPlayer_Example.release.xcconfig"; sourceTree = ""; }; + DA94AC28B62A12CE3E2511897B4A18F2 /* VIResourceLoadingRequestWorker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIResourceLoadingRequestWorker.m; path = VIMediaCache/ResourceLoader/VIResourceLoadingRequestWorker.m; sourceTree = ""; }; + DC5C27C31BE75D2AEECF127FDA8DA9C4 /* NVActivityIndicatorAnimationBallPulseRise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallPulseRise.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallPulseRise.swift; sourceTree = ""; }; + DCC7B692356A0DCBB2FFEDB1D929EED5 /* BMPlayerLayerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerLayerView.swift; path = Source/BMPlayerLayerView.swift; sourceTree = ""; }; + DDAE917D44D21DE02F20AB20F79BDAD0 /* Pods-BMPlayer_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BMPlayer_Example-frameworks.sh"; sourceTree = ""; }; + DF43AFDA63CB21262D5B1464AFC4F924 /* VIMediaCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = VIMediaCache.modulemap; sourceTree = ""; }; + E05ADCA1D6163D2FB111744816BB3408 /* NVActivityIndicatorAnimationAudioEqualizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationAudioEqualizer.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationAudioEqualizer.swift; sourceTree = ""; }; + E0F0A1F959274B705564737A4213FF15 /* NSString+VIMD5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+VIMD5.h"; path = "VIMediaCache/Cache/NSString+VIMD5.h"; sourceTree = ""; }; + E146CA3D7176F83E9118FF990A0C4004 /* BMPlayer.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = BMPlayer.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + E35E5E3748DE7C4ACF96A555CEEF2137 /* NVActivityIndicatorAnimationBallTrianglePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallTrianglePath.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallTrianglePath.swift; sourceTree = ""; }; + E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + E47B6679787B1A85AC1360072D66D898 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; + E5BB94C9FCF1878E042576912BA36177 /* BMPlayer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BMPlayer.xcconfig; sourceTree = ""; }; + E5E53F6F4F70C5C377DFEFB39CBA548B /* NVActivityIndicatorAnimationBallDoubleBounce.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallDoubleBounce.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallDoubleBounce.swift; sourceTree = ""; }; + E8912211311C93727AFD704440A084AE /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = ""; }; + E8BA80919EB3FC4B3F144AA5CA9E6680 /* BMPlayerClearityChooseButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BMPlayerClearityChooseButton.swift; path = Source/BMPlayerClearityChooseButton.swift; sourceTree = ""; }; + E97687BCC2D3C6DCE9AA4A5A7118F51E /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = ""; }; + EA36FA10D6ACDB5797F4C964446C82A5 /* NVActivityIndicatorView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NVActivityIndicatorView.framework; path = NVActivityIndicatorView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ECC186E6708A5B59C45A1A95A3F26897 /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; + F2B2B6CBE9FB26A4B9F365C7A2D12C65 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallZigZagDeflect.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallZigZagDeflect.swift; sourceTree = ""; }; + F7A99AFC135245F3A7FB97601EBD36B6 /* VIResourceLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = VIResourceLoader.m; path = VIMediaCache/ResourceLoader/VIResourceLoader.m; sourceTree = ""; }; + F92676015BBB098D8A7DD49B4BA7318B /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; + F999DABEFAA1ECD1686E4E7DABF744A5 /* SnapKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapKit-Info.plist"; sourceTree = ""; }; + F9DCC5AB5810D62A3E0FC6DD2EEF202F /* NVActivityIndicatorAnimationBallScale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallScale.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallScale.swift; sourceTree = ""; }; + FDC9E88315AB5A4BEF5ABA7F90CF9FD8 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallSpinFadeLoader.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallSpinFadeLoader.swift; sourceTree = ""; }; + FE01FAEDA56776BC9A8E83FDF7FF240F /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NVActivityIndicatorAnimationBallClipRotateMultiple.swift; path = Source/NVActivityIndicatorView/Animations/NVActivityIndicatorAnimationBallClipRotateMultiple.swift; sourceTree = ""; }; + FE7B63EDBEF087FDC979EE0BE2118AAB /* VICacheSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = VICacheSessionManager.h; path = VIMediaCache/Cache/VICacheSessionManager.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 4305AC2B940DC88B65545F5ED12A3DAB /* Frameworks */ = { + 06F3D005909CA034C49236B834B6DB6F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A7D2F6898BF456F91505C3412595B87A /* Foundation.framework in Frameworks */, + 3C6568C6D8BC95D292FDFE389FD025C5 /* AVFoundation.framework in Frameworks */, + 7E7848A7CB6B34D9402803CE96902694 /* Foundation.framework in Frameworks */, + 92B9AC133423BCE34F06103646FB33DC /* MobileCoreServices.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - AC4E9457EC1C33A84B032576A1A71011 /* Frameworks */ = { + 1A69FFCA3C3DAE9A1A3B5CE7ADC992CF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C088F067302A8584118DA9D592C05C00 /* Foundation.framework in Frameworks */, - 4DDD3F13C5DAD1AB828A9A5D0B38B7FB /* UIKit.framework in Frameworks */, + E6D89925C9B5F3CA7BD87E5AF384F221 /* AVFoundation.framework in Frameworks */, + D6D25A006669BFBDB9B1065196C19E98 /* Foundation.framework in Frameworks */, + 01F0F61F59C8E4452414DFE91E85B2A6 /* NVActivityIndicatorView.framework in Frameworks */, + 9127CB211601BA8A0D27D5F18CE30B7D /* SnapKit.framework in Frameworks */, + 8C436C17C0E4A7DE07A9A12D2AF86D18 /* UIKit.framework in Frameworks */, + A9DCD4A8C842DF6D3D0D9A667BEAF23B /* VIMediaCache.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B0E0FCEBBB1C3C424A2C6CB9CFEF2F1B /* Frameworks */ = { + 494393C47064398DFCBFC84C80F10289 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0423447C94FE4D158E27AED649EE0454 /* Foundation.framework in Frameworks */, + 7F460F4AC1F7D3DA9852D69847504887 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B7349DBB1D129349B10D01AAB11D541F /* Frameworks */ = { + 73AF7CD3121B468BF9CB6E7A5AE16EB4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D4BF3504A7F93F30C7F25C142B3129DC /* AVFoundation.framework in Frameworks */, - A434C51D9C63EEAB2359C0000FAD8A82 /* Foundation.framework in Frameworks */, - 676F32837D5C251340097EB8794A74DE /* MobileCoreServices.framework in Frameworks */, + 4F9CF5043F823F93C9819A7CDB1568E8 /* Foundation.framework in Frameworks */, + 6810E1C8D02EF5DB98C05F4A57F2A9E3 /* QuartzCore.framework in Frameworks */, + 65F092493FFEF9C0FD117056A450EDAF /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C14670EE4CBF4ED3473DB9DF7FA2C407 /* Frameworks */ = { + 83DF6CA7D279C7894CB925E6C30C244E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6D50540E0354FF8829751CF917750962 /* AVFoundation.framework in Frameworks */, - C1B2D414818401B1BCC5FB873E3D110F /* Foundation.framework in Frameworks */, - 4224AEC7386E50F8193D5AE0F590C1AE /* NVActivityIndicatorView.framework in Frameworks */, - AD759B5AD56B39D32D7CA6ED05543B04 /* SnapKit.framework in Frameworks */, - 0A569DA15729E8E25940532138D7459A /* UIKit.framework in Frameworks */, - F70106D0590C58879918133CC577E96F /* VIMediaCache.framework in Frameworks */, + 2FF89C560D38917631AE2B0D8000480D /* Foundation.framework in Frameworks */, + F4923C5EA219B11DE9EF2B9DE7ED83ED /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D5828E0C15E20F40542D59998880A1ED /* Frameworks */ = { + AB6F789EFC007D5B611C94AC63D749C9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FEBC7C423C2C3A3BE12784EABF8D7900 /* Foundation.framework in Frameworks */, - B09C312B3531B798145728F60115634D /* QuartzCore.framework in Frameworks */, - 9D1B74126D50DAD493580AAF9EA68B86 /* UIKit.framework in Frameworks */, + 6F64005C7D01D535EF89375BC769C054 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1515E82C14A3067E760C806CA993057A /* Support Files */ = { + 038D5BED1E95182F404A2F488B7547EB /* CacheSupport */ = { isa = PBXGroup; children = ( - A6DB1EA9F400AE1D400110505C872A62 /* Info.plist */, - 2913E77B21693C7EB83355FBDBC26330 /* SwipeBack.modulemap */, - 857002F7B986610F3EFCAB4FE2A62D93 /* SwipeBack.xcconfig */, - BC94DE4D75331867248F3A1644CE2E6D /* SwipeBack-dummy.m */, - 4A519C0B8DD1DD528BFB59F0F496152E /* SwipeBack-prefix.pch */, - F1A34774A688579092F0D7B8AEE82A91 /* SwipeBack-umbrella.h */, + 78FC34689EB39CE39B854DE002B616DD /* BMPlayerManager.swift */, ); - name = "Support Files"; - path = "../Target Support Files/SwipeBack"; - sourceTree = ""; - }; - 1DF776F9EF19F3C02AFE8E32B0C89E76 /* Pods-BMPlayer_Example */ = { - isa = PBXGroup; - children = ( - B5E87F14F39F49BB897B76181D35BD2F /* Info.plist */, - EDE1DEAF007E48C73BA470D8AFAE2446 /* Pods-BMPlayer_Example.modulemap */, - 9FBF5B86D635FC8B5EF855312215101F /* Pods-BMPlayer_Example-acknowledgements.markdown */, - 3EA26763402D3A7C9A96258F97131C5B /* Pods-BMPlayer_Example-acknowledgements.plist */, - C3BB95690BF8716F63DBD50C7CE3F016 /* Pods-BMPlayer_Example-dummy.m */, - 38051AB673249585A49C14D27A470117 /* Pods-BMPlayer_Example-frameworks.sh */, - 3BEF50C047325FAF1B410630DDED4E82 /* Pods-BMPlayer_Example-resources.sh */, - 251CCB4F4FD00AE4B09A6F555974F932 /* Pods-BMPlayer_Example-umbrella.h */, - 9BCA3BCC636A9B5C7DC115987E86EB86 /* Pods-BMPlayer_Example.debug.xcconfig */, - E46F246B4B757A474D4F92637D1CEC11 /* Pods-BMPlayer_Example.release.xcconfig */, - ); - name = "Pods-BMPlayer_Example"; - path = "Target Support Files/Pods-BMPlayer_Example"; + name = CacheSupport; + path = Source/CacheSupport; sourceTree = ""; }; - 25BBB4FC0C38F93E76EA2841C9D403CE /* Products */ = { + 12094CC9B568E87A2AE9E6AF4E1378A6 /* SnapKit */ = { isa = PBXGroup; children = ( - 0B3510D7EED62FD9F36F83F4E7A2E88F /* BMPlayer.framework */, - FCE1BAEBCEE8C3079032FFF7FF0038A5 /* NVActivityIndicatorView.framework */, - 1DD68B9A7394F16E1FF6A9DE0356971A /* Pods_BMPlayer_Example.framework */, - 329858A4956C565282F3F8918D6027EE /* SnapKit.framework */, - 732412A17B81E4D9BB94C2E5759726C5 /* SwipeBack.framework */, - 1945D3C85874665943E8193615F97182 /* VIMediaCache.framework */, + 663D99AB0F74664B33232581DE38395E /* Constraint.swift */, + C3A664CD38334F0D76977E91B06A50C9 /* ConstraintAttributes.swift */, + E8912211311C93727AFD704440A084AE /* ConstraintConfig.swift */, + A08F260D71F82D5E40FF8C6C8349E340 /* ConstraintConstantTarget.swift */, + ECC186E6708A5B59C45A1A95A3F26897 /* ConstraintDescription.swift */, + 857E4121CFA4251B8B37446C1489F1D1 /* ConstraintDSL.swift */, + C33FA0E4B725619E14DBA09BEC3C9E08 /* ConstraintInsets.swift */, + A13C714CB68331E08420F1292E895A13 /* ConstraintInsetTarget.swift */, + 90B3ECEBC185A228E887760BF11C7317 /* ConstraintItem.swift */, + 582142D464D7D24896CB7BCD9C1CD1CC /* ConstraintLayoutGuide.swift */, + 76085BA3DF517CF97C9BB8F5B34C249A /* ConstraintLayoutGuide+Extensions.swift */, + 09FEB3C8AE17A7F36DBA4D0197C0FBF1 /* ConstraintLayoutGuideDSL.swift */, + A92D3FC01E73FCE9C33F242DA2448641 /* ConstraintLayoutSupport.swift */, + 0DCBBC668CC82E69CC421706CAB4B0C4 /* ConstraintLayoutSupportDSL.swift */, + E47B6679787B1A85AC1360072D66D898 /* ConstraintMaker.swift */, + 80A4A2DADB70F33844AFCD5FE3A5B44C /* ConstraintMakerEditable.swift */, + 722A42849DDEBE0758F72C4CD0A43A24 /* ConstraintMakerExtendable.swift */, + 96A5607DC0072766E36BA665FD82C4DB /* ConstraintMakerFinalizable.swift */, + B6C83B0AD87C139198109A3034A52AFD /* ConstraintMakerPriortizable.swift */, + 28F501A9B74545CC3AEDBFE1E1BAE46B /* ConstraintMakerRelatable.swift */, + 9FA563839DBEB512B73927561176D9B6 /* ConstraintMultiplierTarget.swift */, + C841E4D99819814282E407AE0F30788B /* ConstraintOffsetTarget.swift */, + 677FA5139762F6C165BEA829313D8BFA /* ConstraintPriority.swift */, + E97687BCC2D3C6DCE9AA4A5A7118F51E /* ConstraintPriorityTarget.swift */, + 2A96D7405ED254E9619FBA6B669D9E9F /* ConstraintRelatableTarget.swift */, + BA763988CD986BEA58FD2F4171485A3C /* ConstraintRelation.swift */, + 7349835EACAD31984EBAA7429D2F9829 /* ConstraintView.swift */, + 73136544D94B72171A7FCB845D76EFF6 /* ConstraintView+Extensions.swift */, + 873D445E10991CEB7FCF52D71A68F225 /* ConstraintViewDSL.swift */, + 93FC611372EA5DE85A6B5AE34BE91CE9 /* Debugging.swift */, + C64375EE840AFEE62FEB4553C37ED956 /* LayoutConstraint.swift */, + 27FF725436BD5CC4BB133EAA2AB30B80 /* LayoutConstraintItem.swift */, + 5404C2D8C50D96A0B902D4A860C99216 /* Typealiases.swift */, + 1D04CD880B213A915A2B8937944A84C1 /* UILayoutSupport+Extensions.swift */, + 140BF82E093935EF3A93BB96192BD391 /* Support Files */, ); - name = Products; + name = SnapKit; + path = SnapKit; sourceTree = ""; }; - 293E537C17781E5BEBE79287213EB652 /* Targets Support Files */ = { + 1279A0AF3A00123FF1D18F62236F4DD3 /* NVActivityIndicatorView */ = { isa = PBXGroup; children = ( - 1DF776F9EF19F3C02AFE8E32B0C89E76 /* Pods-BMPlayer_Example */, + FE865BE4C01AFFCB1F5AFFB2D98A0D45 /* Presenter */, + 2BC6CF0921EDFB5514FCF4B6269DF434 /* Support Files */, ); - name = "Targets Support Files"; + name = NVActivityIndicatorView; + path = NVActivityIndicatorView; sourceTree = ""; }; - 4200CFAA766B59522EA533949E8051EF /* iOS */ = { + 140BF82E093935EF3A93BB96192BD391 /* Support Files */ = { isa = PBXGroup; children = ( - FE4A9788BFEBF3A5FE65B46F74C0EE1D /* AVFoundation.framework */, - C053801EA4B59CCA818E0215A1396949 /* Foundation.framework */, - A7E2C2B01F7B0D58B334D9F38DC1DAA6 /* MobileCoreServices.framework */, - 61B1FEB80828FED50E854081D8F4A42E /* QuartzCore.framework */, - E6D1AF67D85A1E20E198467FC7C55A21 /* UIKit.framework */, + 22EA124E697140E939DE041137F467AF /* SnapKit.modulemap */, + 78D96BFB55B7B1E75E6863A38CB77E07 /* SnapKit.xcconfig */, + F92676015BBB098D8A7DD49B4BA7318B /* SnapKit-dummy.m */, + F999DABEFAA1ECD1686E4E7DABF744A5 /* SnapKit-Info.plist */, + C51530141E152C4D4212AFC6510ACDEA /* SnapKit-prefix.pch */, + C0A1219A121B71C97688B9B778A07F72 /* SnapKit-umbrella.h */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/SnapKit"; sourceTree = ""; }; - 51FB18A2376F2DEC130D06E684C54218 /* Pods */ = { + 2BC6CF0921EDFB5514FCF4B6269DF434 /* Support Files */ = { isa = PBXGroup; children = ( - 81EE67052669EEA8C0105095D716A1F4 /* NVActivityIndicatorView */, - B6C92B12CC0453535E0C14FFB93FB13A /* Reveal-SDK */, - DA5C8A90B59594C6868D1945B1727BF4 /* SnapKit */, - FCE1FC2EAD91226639C4F99EC7304182 /* SwipeBack */, - ECE0FC9B842AE78F9D63C1515FDE147C /* VIMediaCache */, + A73EA61C25E586D23527BD86C2DFC0FD /* NVActivityIndicatorView.modulemap */, + 221C5430DB73E3866096BF83BCAEAB55 /* NVActivityIndicatorView.xcconfig */, + 9AD1B7E233A2D75D506FAD1B7D8D85DC /* NVActivityIndicatorView-dummy.m */, + C0E32A850C486E53B354065D8AEA2A9F /* NVActivityIndicatorView-Info.plist */, + 9BE5DAFB726AA8F89E982FF669FE4874 /* NVActivityIndicatorView-prefix.pch */, + 053275E7BFDA11F5AB0B61D3BDC66C5C /* NVActivityIndicatorView-umbrella.h */, ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/NVActivityIndicatorView"; sourceTree = ""; }; - 730D8F36A2FE2847CB56E9324500BEAD /* Support Files */ = { + 2C690CAB84B5DEDA3EF85FD942AF12BF /* Development Pods */ = { isa = PBXGroup; children = ( - 1BD40932369F0CE39BC2E0CF0DD98868 /* Info.plist */, - 07E58095A8196AAC6782B7848A5C78A4 /* VIMediaCache.modulemap */, - 08620D5D03A8F110592B3633EAA7EF9E /* VIMediaCache.xcconfig */, - 03363B6FDCFD4214868A5D1FC4A390CA /* VIMediaCache-dummy.m */, - 538007643A79D730F84E0FB766F13A78 /* VIMediaCache-prefix.pch */, - 8639375AEFFE223C10590FD171222DFB /* VIMediaCache-umbrella.h */, + 3F426B65C54056B623D9E11C49231429 /* BMPlayer */, ); - name = "Support Files"; - path = "../Target Support Files/VIMediaCache"; + name = "Development Pods"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 35214A08E3EE7D63B20F8B1267BC7150 /* Frameworks */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 8492EBC90BF5EAB108C27FD2CBE068F0 /* Development Pods */, - 8E453980323CDED71AE21A784A597DC7 /* Frameworks */, - 51FB18A2376F2DEC130D06E684C54218 /* Pods */, - 25BBB4FC0C38F93E76EA2841C9D403CE /* Products */, - 293E537C17781E5BEBE79287213EB652 /* Targets Support Files */, + BCE81AAEB32C737A32005CA1A92C8900 /* NVActivityIndicatorView.framework */, + 5EF2B2880C30A1FFB20DDC7EA50061B2 /* SnapKit.framework */, + 64F058973DD5DA40C4CF133D3CA0494C /* VIMediaCache.framework */, + 741D32372BBF8A1EC764834B57C7D1C2 /* iOS */, ); + name = Frameworks; sourceTree = ""; }; - 7F7A0D660976D2927D89FB14524EDB3A /* Frameworks */ = { + 3972152636BE2A3EA9034A017C41A07C /* Resources */ = { isa = PBXGroup; children = ( - C83AA1B5F78BA4370E516C1D08E4CF47 /* RevealServer.framework */, + C996B9658C9C78AFFBCE2BACAB767AB9 /* Pod_Asset_BMPlayer.xcassets */, ); - name = Frameworks; + name = Resources; sourceTree = ""; }; - 81EE67052669EEA8C0105095D716A1F4 /* NVActivityIndicatorView */ = { + 3E3E2091A0F3B7998C23E1A845FCF16A /* Pods-BMPlayer_Example */ = { isa = PBXGroup; children = ( - DD93AAB0AF31424EF14F6B8D4B85E2DD /* Presenter */, - D9CC0FF0ADF1D1161F2F96A7B99D62C5 /* Support Files */, + 56B24C69AFECD881D7DA199D440553D1 /* Pods-BMPlayer_Example.modulemap */, + 6D761D4D77E40452DD6233CFFF189776 /* Pods-BMPlayer_Example-acknowledgements.markdown */, + 88978A8D949F9CF7FE78C662D2FBD6F1 /* Pods-BMPlayer_Example-acknowledgements.plist */, + 9B9108DFB03070C1A4E72C6C819DAAE3 /* Pods-BMPlayer_Example-dummy.m */, + DDAE917D44D21DE02F20AB20F79BDAD0 /* Pods-BMPlayer_Example-frameworks.sh */, + 462E9395C31A4FAC970C71750D198A1E /* Pods-BMPlayer_Example-Info.plist */, + 0ABBA39641A81922B05B93D32B611910 /* Pods-BMPlayer_Example-umbrella.h */, + 7A169D1EEFCA558F5B559660E7B7193E /* Pods-BMPlayer_Example.debug.xcconfig */, + D617F8BE4E89D0BBBAE73705BD9F47BF /* Pods-BMPlayer_Example.release.xcconfig */, ); - name = NVActivityIndicatorView; - path = NVActivityIndicatorView; + name = "Pods-BMPlayer_Example"; + path = "Target Support Files/Pods-BMPlayer_Example"; sourceTree = ""; }; - 8492EBC90BF5EAB108C27FD2CBE068F0 /* Development Pods */ = { + 3F426B65C54056B623D9E11C49231429 /* BMPlayer */ = { isa = PBXGroup; children = ( - CA65C2DAE28701543C656F0D51A6ABCE /* BMPlayer */, + ED3A0D19B07E0EA9BE2032C093F8B8AD /* CacheSupport */, + C2C071DAB82B4B459A6F4D25BDCD785C /* Core */, + E54C1666085FD746D311F6E9B2CBEAFF /* Pod */, + 5B4C50DE35366DA01334D14F881D1DC2 /* Support Files */, ); - name = "Development Pods"; + name = BMPlayer; + path = ../..; sourceTree = ""; }; - 8E453980323CDED71AE21A784A597DC7 /* Frameworks */ = { + 58DF99DCE1E2C9FF862463716DA92355 /* VIMediaCache */ = { isa = PBXGroup; children = ( - 8DA3B09055A2D76E25C66FC6D39281D6 /* NVActivityIndicatorView.framework */, - 7891AC4BB5C13114E3A7A7ACAFEF1758 /* SnapKit.framework */, - 74CBC89BFB92A2050ED5042D46074328 /* VIMediaCache.framework */, - 4200CFAA766B59522EA533949E8051EF /* iOS */, + E0F0A1F959274B705564737A4213FF15 /* NSString+VIMD5.h */, + 81ABD0968CE59709F2363F4EC4EE8CE8 /* NSString+VIMD5.m */, + A5F81EC96A6F107553A0017CC5F94FDB /* VICacheAction.h */, + 27F4A0F0619C6AC134FDBAD087F5AB2C /* VICacheAction.m */, + 66B37886CE2BC08390CE62075CF2D163 /* VICacheConfiguration.h */, + 23607DE187E9FA1EA99B0485BFDB884D /* VICacheConfiguration.m */, + 7D116AA805F1414347EE70753B1ED9E1 /* VICacheManager.h */, + 300E1D8DB4399E8E31925935979DE626 /* VICacheManager.m */, + FE7B63EDBEF087FDC979EE0BE2118AAB /* VICacheSessionManager.h */, + 8A9F537089B08DAA09CFB4713D42E5EC /* VICacheSessionManager.m */, + 74F318164E0795EC442D35E96715D16B /* VIContentInfo.h */, + 51D5361FA35535339E246ACEA5E6CC82 /* VIContentInfo.m */, + 6ADF2EDB4082C6C8D6373F4923AC3849 /* VIMediaCache.h */, + 9214A0F1EEC5D9D77120DF4820BDB897 /* VIMediaCacheWorker.h */, + 3968B8F36B4CF9711CBD68214ED242EE /* VIMediaCacheWorker.m */, + A8A322503D4B7E4E0E8F413350764E3A /* VIMediaDownloader.h */, + A38E23348B3378426FC55E048075060B /* VIMediaDownloader.m */, + A7C44091AD3DF511B3E73A718435F6A3 /* VIResourceLoader.h */, + F7A99AFC135245F3A7FB97601EBD36B6 /* VIResourceLoader.m */, + CCEA90491F565AE29A40FCDA4B58D38C /* VIResourceLoaderManager.h */, + 22EFD954F6E0AFA7FF2591FD5F35707D /* VIResourceLoaderManager.m */, + 0A65F1770B45AC7F30AE23D56144A88A /* VIResourceLoadingRequestWorker.h */, + DA94AC28B62A12CE3E2511897B4A18F2 /* VIResourceLoadingRequestWorker.m */, + C76DE4E4B82BCA87DF25F10F0E0EB49C /* Support Files */, ); - name = Frameworks; + name = VIMediaCache; + path = VIMediaCache; sourceTree = ""; }; - 9D9032709BD0023D81823E3F63984810 /* Support Files */ = { + 5B4C50DE35366DA01334D14F881D1DC2 /* Support Files */ = { isa = PBXGroup; children = ( - 14A77420D093DD34B75FFCC1FB143B74 /* Info.plist */, - 47A0061BAAC43212319CD61E5E5B7F2D /* SnapKit.modulemap */, - E04AF0F5819D17377992571693C493A3 /* SnapKit.xcconfig */, - 3FB8AEAFF9B1DBF071B3A33E183CC542 /* SnapKit-dummy.m */, - FCB9665A10EEBB40E498FDB05F99D5E4 /* SnapKit-prefix.pch */, - E39FF7A1F798CA3FBC26671B53CCFCBA /* SnapKit-umbrella.h */, + 5FB3A4B227C9EA6F0CE1834551C9F993 /* BMPlayer.modulemap */, + E5BB94C9FCF1878E042576912BA36177 /* BMPlayer.xcconfig */, + B9C5413769109E0F79C0FB7895E3BE0B /* BMPlayer-dummy.m */, + 1DDDF7D074E1B8BD84870FAD7DC860D7 /* BMPlayer-Info.plist */, + B30FD55A57CF77F550A7B001BE50AD1D /* BMPlayer-prefix.pch */, + 10463BD2F2FFFC2A603595FA0D5819FE /* BMPlayer-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/SnapKit"; + path = "Example/Pods/Target Support Files/BMPlayer"; sourceTree = ""; }; - B6C92B12CC0453535E0C14FFB93FB13A /* Reveal-SDK */ = { + 741D32372BBF8A1EC764834B57C7D1C2 /* iOS */ = { isa = PBXGroup; children = ( - 7F7A0D660976D2927D89FB14524EDB3A /* Frameworks */, + AE9B94E65BD0BC58B1DC625941D7FDEE /* AVFoundation.framework */, + E42C24C454B2E26607B64438F7448D70 /* Foundation.framework */, + 8C4EB5AE2E70CA790FAA570B78DD6C64 /* MobileCoreServices.framework */, + 5E0EB62F3553EE593D78BAA7CF48C959 /* QuartzCore.framework */, + 1B6C4F7F5B6AE911BAE7A0ADB28990F8 /* UIKit.framework */, ); - name = "Reveal-SDK"; - path = "Reveal-SDK"; + name = iOS; sourceTree = ""; }; - B8A83EB1B98DD9A7DAE2B9F81E9F6FB8 /* CacheSupport */ = { + 82593A06F76EA74DB6F1DC445784A6AA /* Products */ = { isa = PBXGroup; children = ( - F3A4C011ED1C1716B8B28111FECCD94B /* BMPlayerManager.swift */, + BFB66B3B0A7D7A63A077433BD2BA65C9 /* BMPlayer.framework */, + EA36FA10D6ACDB5797F4C964446C82A5 /* NVActivityIndicatorView.framework */, + 675380B35BD0AB8A743F75841896128D /* Pods_BMPlayer_Example.framework */, + 2170BB0FBADDB3F3EB68A9F06B539294 /* SnapKit.framework */, + D15961DB2AB05EBF4D4FB50C54C62402 /* SwipeBack.framework */, + 18221B8F28C6B2C672BA207AB60BFB1D /* VIMediaCache.framework */, ); - name = CacheSupport; - path = Source/CacheSupport; + name = Products; sourceTree = ""; }; - BE9E97DB4915CE318E289764BAEEA3A0 /* Support Files */ = { + A35D11B61A62E62D93BEA2924934F496 /* Pods */ = { isa = PBXGroup; children = ( - 4E27723E7B6EB0291752282156C53E0D /* BMPlayer.modulemap */, - 8EFACF06F3BCEFFB08EC9E99A02B2303 /* BMPlayer.xcconfig */, - 54C639BA1463EA4CEAD9B26CF5F0CE17 /* BMPlayer-dummy.m */, - 5A7222599CD3305693136DF5B24C3F22 /* BMPlayer-prefix.pch */, - 9AF471120563A0ACF018D7919BAEB115 /* BMPlayer-umbrella.h */, - F1FF129E806B9B104E3665DEC1A9F2DE /* Info.plist */, + 1279A0AF3A00123FF1D18F62236F4DD3 /* NVActivityIndicatorView */, + 12094CC9B568E87A2AE9E6AF4E1378A6 /* SnapKit */, + BBC6551B6346D3C0ABE699756F42B1F0 /* SwipeBack */, + 58DF99DCE1E2C9FF862463716DA92355 /* VIMediaCache */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/BMPlayer"; + name = Pods; sourceTree = ""; }; - C6AAAC8EEB59D3AD862473326F054BE8 /* Resources */ = { + BBC6551B6346D3C0ABE699756F42B1F0 /* SwipeBack */ = { isa = PBXGroup; children = ( - 1531C93A1C3CA82590B7C869D5B6D17A /* Pod_Asset_BMPlayer.xcassets */, + 710C7FC7F3A0ABD079FEAF2B76241FD5 /* SwipeBack.h */, + 3B7F3C600D0A0486A1CC66194B0A53FC /* UINavigationController+SwipeBack.h */, + 3A54CB5232972E192B77C1783A20F10A /* UINavigationController+SwipeBack.m */, + 8444D04BB50EDE93DCDFD0C7B45EAAC6 /* UIViewController+SwipeBack.h */, + 6FD3AEF5EC39C28E401032CB6959EE0A /* UIViewController+SwipeBack.m */, + BE441028B9CA38EB4569B068A9D8BA56 /* Support Files */, ); - name = Resources; + name = SwipeBack; + path = SwipeBack; sourceTree = ""; }; - CA65C2DAE28701543C656F0D51A6ABCE /* BMPlayer */ = { + BE441028B9CA38EB4569B068A9D8BA56 /* Support Files */ = { isa = PBXGroup; children = ( - DAC3CFBCCF20AAE55EDFDC300873BFE7 /* CacheSupport */, - F88239F65230879D30957EE86657F3D8 /* Core */, - BE9E97DB4915CE318E289764BAEEA3A0 /* Support Files */, + 87A7EB6398A84C38257BC4A4F479C72A /* SwipeBack.modulemap */, + CF7DAB0A6E90A1A207B58A2B0ED0D5DE /* SwipeBack.xcconfig */, + 3E4BD7CD3A0E1E5836DD6131F0FDAE62 /* SwipeBack-dummy.m */, + 190524134DCE2C5F6728BA5EA5D16598 /* SwipeBack-Info.plist */, + B31DD37F50C6A2B54F91233281AF0C58 /* SwipeBack-prefix.pch */, + 774618023EC28C4417AAF3CC382DD27E /* SwipeBack-umbrella.h */, ); - name = BMPlayer; - path = ../..; + name = "Support Files"; + path = "../Target Support Files/SwipeBack"; sourceTree = ""; }; - D9CC0FF0ADF1D1161F2F96A7B99D62C5 /* Support Files */ = { + C2C071DAB82B4B459A6F4D25BDCD785C /* Core */ = { isa = PBXGroup; children = ( - 650FFFE7F4EA86EC5055B20888D313BC /* Info.plist */, - 654D92521DEE92E381AD5559FAFBD391 /* NVActivityIndicatorView.modulemap */, - F53F2F9322CBA6B467D0FD454E915765 /* NVActivityIndicatorView.xcconfig */, - 0B39076E7A24F0F601B676057D846F60 /* NVActivityIndicatorView-dummy.m */, - DF19493AC08E63C695DF49775693CEC8 /* NVActivityIndicatorView-prefix.pch */, - 5F4DBF84185372812E50AE92227DECC0 /* NVActivityIndicatorView-umbrella.h */, ); - name = "Support Files"; - path = "../Target Support Files/NVActivityIndicatorView"; + name = Core; sourceTree = ""; }; - DA5C8A90B59594C6868D1945B1727BF4 /* SnapKit */ = { + C76DE4E4B82BCA87DF25F10F0E0EB49C /* Support Files */ = { isa = PBXGroup; children = ( - 6EEBF8FCB2DE378E199D5140762FFA96 /* Constraint.swift */, - AD9E13562E901D4E95765928890633B5 /* ConstraintAttributes.swift */, - C3E044FBC2CCDCECBF80B9848AF0B474 /* ConstraintConfig.swift */, - E9496677AC3F73BFE080120C84BE27A3 /* ConstraintConstantTarget.swift */, - 85B2F615A1B80F15269489BCF2D14C93 /* ConstraintDescription.swift */, - A74F72C0DBAD4D9D171D9457CD4B7BE9 /* ConstraintDSL.swift */, - 338A0BA253CD6528BE77CB282B249524 /* ConstraintInsets.swift */, - 5348FF656605F7D02FEE6EF7F10EE063 /* ConstraintInsetTarget.swift */, - B1F5706AC9A5065EDC65F0528FFEF096 /* ConstraintItem.swift */, - 60B77C02FB54ADF80CEC565DF8AFDE50 /* ConstraintLayoutGuide.swift */, - ECDB4C2E193F0A6AA6E8F578A40DCA82 /* ConstraintLayoutGuide+Extensions.swift */, - 7FF1E0C2A14AF22F3F1D394FBFAD7C1F /* ConstraintLayoutGuideDSL.swift */, - E4B164343B02C71CF35EE2B60BFDEC0D /* ConstraintLayoutSupport.swift */, - E634B8A69E0AC85B4311EA934DF1F4DF /* ConstraintLayoutSupportDSL.swift */, - CE3179FDB16A901B0C447029D44AEDCA /* ConstraintMaker.swift */, - 7F752A8FBCEA7D5412B810DABA05B535 /* ConstraintMakerEditable.swift */, - 5468A7D9F3284296DBAD27E68DD66F3D /* ConstraintMakerExtendable.swift */, - 0824361B921ECEBF8C54167DEDC61660 /* ConstraintMakerFinalizable.swift */, - 1590982EA8B02AA9BE70BF800E6E7FCA /* ConstraintMakerPriortizable.swift */, - CE88695587AB3EE6498F19A4733951C9 /* ConstraintMakerRelatable.swift */, - FE98FDC76BCC3E5DF48BEF26DA5091BA /* ConstraintMultiplierTarget.swift */, - CA00FFD91D2E1FA2687211444F482463 /* ConstraintOffsetTarget.swift */, - 3757618671F86505B542E0502E7BE51B /* ConstraintPriority.swift */, - E4FA0939E713E57339C41027799C59A2 /* ConstraintPriorityTarget.swift */, - 17716048F8A280FEFE9A6726964138E9 /* ConstraintRelatableTarget.swift */, - 5479400E529A9B3357A11A08C2684954 /* ConstraintRelation.swift */, - A334F065F85F02D957A4951FC10D565D /* ConstraintView.swift */, - 70FBDFFC78EEE1EEF89D058FCF352BF4 /* ConstraintView+Extensions.swift */, - BAD6835BD2DA10E66744A8BBEB9F6E26 /* ConstraintViewDSL.swift */, - AF086FDFA19687C1579675CEE800FB55 /* Debugging.swift */, - 0C17B637E28276C0B6996C4550E72F10 /* LayoutConstraint.swift */, - 2525FE3CCE4586806B20086FA68A4069 /* LayoutConstraintItem.swift */, - C40BE8C2CFB852FF6FCFD66FFC059A93 /* Typealiases.swift */, - A991D35920AF57C04B0F12D84948BEE1 /* UILayoutSupport+Extensions.swift */, - 9D9032709BD0023D81823E3F63984810 /* Support Files */, + DF43AFDA63CB21262D5B1464AFC4F924 /* VIMediaCache.modulemap */, + 63E5DFCC48690BED3E141E2FA608E2D8 /* VIMediaCache.xcconfig */, + 33754FE4C3006472479AAAAF9A7C53A1 /* VIMediaCache-dummy.m */, + 84685D7C88536F9E8B8D0B96CF11106D /* VIMediaCache-Info.plist */, + 4B307DB1805074F8A87E5DFD221BAB65 /* VIMediaCache-prefix.pch */, + 5B9EED1408A38E0F9EF02408ADAB6BCA /* VIMediaCache-umbrella.h */, ); - name = SnapKit; - path = SnapKit; + name = "Support Files"; + path = "../Target Support Files/VIMediaCache"; sourceTree = ""; }; - DAC3CFBCCF20AAE55EDFDC300873BFE7 /* CacheSupport */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 00917C862C83EB0303B89AE0B01B9D00 /* BMPlayer.swift */, - A03E374B876D9B66267F3B11496D3C11 /* BMPlayerClearityChooseButton.swift */, - 0682BEECE81E3882AF3CB2BCBBC29F80 /* BMPlayerControlView.swift */, - B5EE462D662E061A760601C5542C0880 /* BMPlayerItem.swift */, - 6A0E7EF30F7C081D6BEA92EE25B22F97 /* BMPlayerLayerView.swift */, - 5ABE124846BC6E4E7A44B06720B5C2D7 /* BMPlayerProtocols.swift */, - 1CB25A1F22A1604A652B0CFF0ADC23A2 /* BMSubtitles.swift */, - AE1A4D9269F6AB8630ACC8D26241F433 /* BMTimeSlider.swift */, - B8A83EB1B98DD9A7DAE2B9F81E9F6FB8 /* CacheSupport */, - C6AAAC8EEB59D3AD862473326F054BE8 /* Resources */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 2C690CAB84B5DEDA3EF85FD942AF12BF /* Development Pods */, + 35214A08E3EE7D63B20F8B1267BC7150 /* Frameworks */, + A35D11B61A62E62D93BEA2924934F496 /* Pods */, + 82593A06F76EA74DB6F1DC445784A6AA /* Products */, + F14DBAFA51E86A7C821FFBD8603741C5 /* Targets Support Files */, ); - name = CacheSupport; sourceTree = ""; }; - DD93AAB0AF31424EF14F6B8D4B85E2DD /* Presenter */ = { + E54C1666085FD746D311F6E9B2CBEAFF /* Pod */ = { isa = PBXGroup; children = ( - E0F0290416431E257159FC6324F5F652 /* NVActivityIndicatorAnimationAudioEqualizer.swift */, - 279741231DFC3507029926EBB4FC768F /* NVActivityIndicatorAnimationBallBeat.swift */, - 156413FE94D4E9DC3833C852017288CE /* NVActivityIndicatorAnimationBallClipRotate.swift */, - 9B7E5479D63DE345BC94F4D072FF477E /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */, - 682513D3D963C5A006B97391A38468FE /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */, - C5A794B4D047ACAF4F5DC0B7900B8952 /* NVActivityIndicatorAnimationBallGridBeat.swift */, - 3463ABD75DFB4EB77B5CFC76FE4BB0A5 /* NVActivityIndicatorAnimationBallGridPulse.swift */, - 978F0A86C2906419C2374A7FBA0E2BF0 /* NVActivityIndicatorAnimationBallPulse.swift */, - DA17429EAF3D35A8FD1045B373FCAA75 /* NVActivityIndicatorAnimationBallPulseRise.swift */, - CD2E1A08FC62C8590B67EDE1515ADF23 /* NVActivityIndicatorAnimationBallPulseSync.swift */, - 1D4B696348AC5FE5EE5D36F7FE5DF584 /* NVActivityIndicatorAnimationBallRotate.swift */, - A59205784769C71E2194CFAFBEB3CEB9 /* NVActivityIndicatorAnimationBallRotateChase.swift */, - 40CCB975D5E9E8843D31E43CACB199F3 /* NVActivityIndicatorAnimationBallScale.swift */, - 8380C88449A237CC8EEA36E050A626AC /* NVActivityIndicatorAnimationBallScaleMultiple.swift */, - 2BEE8FFCEDD6FFBE723B7114C545ACB0 /* NVActivityIndicatorAnimationBallScaleRipple.swift */, - FDED71A8A650FD70D9FAED6662A9496B /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */, - 354F56186734BDE81A77D8D99CAAD50B /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */, - 490A4D797EA7ABF5BB304C099F36E825 /* NVActivityIndicatorAnimationBallTrianglePath.swift */, - 0BE3CC03E06322FE6049EB34EE71932A /* NVActivityIndicatorAnimationBallZigZag.swift */, - 4AA294A109A17405195DBBFAEEE0FDE1 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */, - E03D3AD7002EEEEEB475128C1D241989 /* NVActivityIndicatorAnimationBlank.swift */, - EF99A1E66B9482B394C5ED43D423EF01 /* NVActivityIndicatorAnimationCubeTransition.swift */, - 3D98435F2C66F04F47A91D6C2030D4A6 /* NVActivityIndicatorAnimationDelegate.swift */, - E5E062D352AAE623C860AAB977B7CE67 /* NVActivityIndicatorAnimationLineScale.swift */, - B5FDCD24F966CA27B88B3D540F7B9BD2 /* NVActivityIndicatorAnimationLineScaleParty.swift */, - 58D96292B36BFFE28B302F523D3ED989 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */, - 0B1F00AE16DC2FA64CA820DBD69C373D /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */, - CD0470176AFD5F3E5F83C42996C06EF4 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */, - 839A8538297B12C326161BDA92216260 /* NVActivityIndicatorAnimationOrbit.swift */, - 8EBA14458D77031ED9DD9DF89C2CA708 /* NVActivityIndicatorAnimationPacman.swift */, - 7F4BDE507843F284E73BB3E266FB911B /* NVActivityIndicatorAnimationSemiCircleSpin.swift */, - 621DB56D01D5F869D9FDED4F164509FA /* NVActivityIndicatorAnimationSquareSpin.swift */, - 89CECDE07849EFAEAD6E47D7490E8C84 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */, - 4FBBB448715BD56EFDF11B9D69975CCD /* NVActivityIndicatorPresenter.swift */, - 7AAAF129A23A53BEBD9AB70A0CECD2D2 /* NVActivityIndicatorShape.swift */, - 7DE2183B8FAD9A8F79C858C4F7650F7D /* NVActivityIndicatorView.swift */, - 4BB696EAA4F192F17506935BC732E094 /* NVActivityIndicatorViewable.swift */, + E146CA3D7176F83E9118FF990A0C4004 /* BMPlayer.podspec */, + 03B433402D4A6AD9CC7A26AEA294E34E /* LICENSE */, + 77A98225C266EE9899D7AE0EBD5592E6 /* README.md */, ); - name = Presenter; + name = Pod; sourceTree = ""; }; - ECE0FC9B842AE78F9D63C1515FDE147C /* VIMediaCache */ = { + ED3A0D19B07E0EA9BE2032C093F8B8AD /* CacheSupport */ = { isa = PBXGroup; children = ( - 48FA3A274519194A1A57F64C33240D67 /* VICacheAction.h */, - D721316E4B940299BE3FB5A7D9550782 /* VICacheAction.m */, - 5A47D73A9D1764CDD33E01834F2F98AA /* VICacheConfiguration.h */, - 9B8261357D757C528C5000FCCB79FA23 /* VICacheConfiguration.m */, - 31D87377FED2D4FA4CEF3062419F7CC9 /* VICacheManager.h */, - ED24264F3820DE09A88EBCDFDC0952AB /* VICacheManager.m */, - 00D1F9DFF39B7F710729F95DC6130A63 /* VICacheSessionManager.h */, - 3E89454A6EC7455C3F3FDA611995D761 /* VICacheSessionManager.m */, - BB0757DEA0533DEB857742EDFB97653F /* VIContentInfo.h */, - BE07CF94DCDB4C250F2225383C44E6DC /* VIContentInfo.m */, - F6D49A2486A061622928187EAAFA1DFC /* VIMediaCache.h */, - 792C23DD55939E35B980E41BE55E4D02 /* VIMediaCacheWorker.h */, - A81D263B83FDFF4ACEED3E211D0AFDBF /* VIMediaCacheWorker.m */, - 9814E36EDBB18F161B7662E67B9D25B8 /* VIMediaDownloader.h */, - 99232A303A892CB10EC6725CF42751B3 /* VIMediaDownloader.m */, - DBCEDE6DB5403BE834A6AD0A4F762061 /* VIResourceLoader.h */, - 9E3515A8131FACC29277590BF63274F1 /* VIResourceLoader.m */, - 9B94168A33685AB955A387301B4F9665 /* VIResourceLoaderManager.h */, - 16BA8E22F2B1F14E3A1062448E1E012E /* VIResourceLoaderManager.m */, - 2F941A3EA5EB370F0DA3994DB2DD95C1 /* VIResourceLoadingRequestWorker.h */, - 0F279E4F7759EF4BD8311487D38A4445 /* VIResourceLoadingRequestWorker.m */, - 730D8F36A2FE2847CB56E9324500BEAD /* Support Files */, + 7FBCD5D28BFADFA9556BDCDF11CF20B5 /* BMPlayer.swift */, + E8BA80919EB3FC4B3F144AA5CA9E6680 /* BMPlayerClearityChooseButton.swift */, + 2028B204C544D392F65F4F1911731EBC /* BMPlayerControlView.swift */, + D508EE28D1033D8C48ADFD0FC92434EB /* BMPlayerItem.swift */, + DCC7B692356A0DCBB2FFEDB1D929EED5 /* BMPlayerLayerView.swift */, + D429EF6281A42A1EF02EA40AC9CFD674 /* BMPlayerProtocols.swift */, + 7A65B65C06CFEB0FF0704CEFE57D8359 /* BMSubtitles.swift */, + AC56C510F0CB6C19E144E75B57A57AA5 /* BMTimeSlider.swift */, + 038D5BED1E95182F404A2F488B7547EB /* CacheSupport */, + 3972152636BE2A3EA9034A017C41A07C /* Resources */, ); - name = VIMediaCache; - path = VIMediaCache; + name = CacheSupport; sourceTree = ""; }; - F88239F65230879D30957EE86657F3D8 /* Core */ = { + F14DBAFA51E86A7C821FFBD8603741C5 /* Targets Support Files */ = { isa = PBXGroup; children = ( + 3E3E2091A0F3B7998C23E1A845FCF16A /* Pods-BMPlayer_Example */, ); - name = Core; + name = "Targets Support Files"; sourceTree = ""; }; - FCE1FC2EAD91226639C4F99EC7304182 /* SwipeBack */ = { + FE865BE4C01AFFCB1F5AFFB2D98A0D45 /* Presenter */ = { isa = PBXGroup; children = ( - 66486740FD27E84BA5119DED0CC82D42 /* SwipeBack.h */, - 9A2609898478DE0AAB3638FFF4E9DF71 /* UINavigationController+SwipeBack.h */, - 3FA147579C65E983F954394B3C423C54 /* UINavigationController+SwipeBack.m */, - C7A82E0496E2EE693E516121F300799F /* UIViewController+SwipeBack.h */, - 6819B15C7C06D53348CFAC48DB4A423E /* UIViewController+SwipeBack.m */, - 1515E82C14A3067E760C806CA993057A /* Support Files */, + E05ADCA1D6163D2FB111744816BB3408 /* NVActivityIndicatorAnimationAudioEqualizer.swift */, + 855307702403068F1EF43C73376E8F9C /* NVActivityIndicatorAnimationBallBeat.swift */, + 472679BDD51C9FB40F254EC32B79A1F0 /* NVActivityIndicatorAnimationBallClipRotate.swift */, + FE01FAEDA56776BC9A8E83FDF7FF240F /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift */, + 3861C0847F3A0072807B7394C2A1D6E6 /* NVActivityIndicatorAnimationBallClipRotatePulse.swift */, + E5E53F6F4F70C5C377DFEFB39CBA548B /* NVActivityIndicatorAnimationBallDoubleBounce.swift */, + 6891B0C442E88DAACFDAE23DF4EE8F97 /* NVActivityIndicatorAnimationBallGridBeat.swift */, + 22275F7A284509B4CEC1E470E171D77D /* NVActivityIndicatorAnimationBallGridPulse.swift */, + 0E0D6BAE787AC9BF4C01C09AE69A10D4 /* NVActivityIndicatorAnimationBallPulse.swift */, + DC5C27C31BE75D2AEECF127FDA8DA9C4 /* NVActivityIndicatorAnimationBallPulseRise.swift */, + 30BEF65274DCF8C3B4639A15971833AD /* NVActivityIndicatorAnimationBallPulseSync.swift */, + C44C626D28997D620A348BFD8BD1F5D9 /* NVActivityIndicatorAnimationBallRotate.swift */, + 25FD3AB25B903D4F41E0B2536C5AFC9A /* NVActivityIndicatorAnimationBallRotateChase.swift */, + F9DCC5AB5810D62A3E0FC6DD2EEF202F /* NVActivityIndicatorAnimationBallScale.swift */, + B934EC95570CCA1E3E28EFBDFE2C0F22 /* NVActivityIndicatorAnimationBallScaleMultiple.swift */, + D55360A0C80433F5F05556E7269F203D /* NVActivityIndicatorAnimationBallScaleRipple.swift */, + 3681724252F19C5983669A8C262E53CE /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift */, + FDC9E88315AB5A4BEF5ABA7F90CF9FD8 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift */, + E35E5E3748DE7C4ACF96A555CEEF2137 /* NVActivityIndicatorAnimationBallTrianglePath.swift */, + 6DE9A36360DC1BC451170AC3341B6099 /* NVActivityIndicatorAnimationBallZigZag.swift */, + F2B2B6CBE9FB26A4B9F365C7A2D12C65 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift */, + A12ADE07CACD36402198AECE3E4329B7 /* NVActivityIndicatorAnimationBlank.swift */, + 0537C981E34A504CC878C007A90DE7E0 /* NVActivityIndicatorAnimationCircleStrokeSpin.swift */, + BA0260CA2833CC591EAA20B2D37D9A85 /* NVActivityIndicatorAnimationCubeTransition.swift */, + C460184507599A8F5702EDA7E17E9262 /* NVActivityIndicatorAnimationDelegate.swift */, + D0E232C777FEFFDA8F837585A87AB7AD /* NVActivityIndicatorAnimationLineScale.swift */, + 925E9179A58817D14424E79FA2CB84CE /* NVActivityIndicatorAnimationLineScaleParty.swift */, + A350B1C48856EB3FC25C2B351FD720E0 /* NVActivityIndicatorAnimationLineScalePulseOut.swift */, + 3C7852E8AF9AB25541D6CB95F45AA891 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift */, + 2AFEF3DFBA16427A66B66BA1E800D454 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift */, + 3E9328B63B76DDEB2460B2810F1A15BC /* NVActivityIndicatorAnimationOrbit.swift */, + 6651B9EA2DF9480D5F7B07BD73D30EC5 /* NVActivityIndicatorAnimationPacman.swift */, + 426D4F25D857DD8BF021BD5EF2036A09 /* NVActivityIndicatorAnimationSemiCircleSpin.swift */, + D515BA1CB6D887F29196B6F0717BF8A5 /* NVActivityIndicatorAnimationSquareSpin.swift */, + 06E5A8B7B1AD7E3BEF5C450E56F10A15 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift */, + 7E891B6DE536D20CEC811CF5B610C6E4 /* NVActivityIndicatorPresenter.swift */, + B3A13796FD6983F1D3BA8B559AEA3D5E /* NVActivityIndicatorShape.swift */, + 716CF58537E3DA30A43EC29CD18A175F /* NVActivityIndicatorView.swift */, + C4AC2471B685B7BE9B0A015BEDB2C93E /* NVActivityIndicatorViewable.swift */, ); - name = SwipeBack; - path = SwipeBack; + name = Presenter; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 0FEE1C7981C0E263AAF609D23E2AFC3D /* Headers */ = { + 31F71DF264EB409117301935AB115C57 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D8860833CA304DDCC1ABA94962FAFB69 /* VICacheAction.h in Headers */, - 9F708DC9AFCD1345B1938E05DEBC93B1 /* VICacheConfiguration.h in Headers */, - B8A72C88C34251F61B5F1623D27B1B34 /* VICacheManager.h in Headers */, - DD4A37A391E34C7E56700D238BBD9063 /* VICacheSessionManager.h in Headers */, - A882B2540BD6360C183A5E2BD61122A3 /* VIContentInfo.h in Headers */, - 85B3290028B6C554D6CD540149D821B2 /* VIMediaCache-umbrella.h in Headers */, - A5EB540A43DC85EC816206EA945FC49E /* VIMediaCache.h in Headers */, - 264ABBD005970D8F87F3FF150AA2103D /* VIMediaCacheWorker.h in Headers */, - 2101608CCF55D7437687357D16E451E2 /* VIMediaDownloader.h in Headers */, - F09E1BB00E47C38D75710296E5A304B2 /* VIResourceLoader.h in Headers */, - 773B90E05C94F6AB3426D58CC9F81B4B /* VIResourceLoaderManager.h in Headers */, - 67EC8C20167A34D70D70B13A2BCD24C2 /* VIResourceLoadingRequestWorker.h in Headers */, + A8CCD80F462ABE26C68C4F057D292303 /* Pods-BMPlayer_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 157483D0DCDB6A915DAC2570492C104B /* Headers */ = { + 7806AA05874E0C79512751167E3C3CAA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 029635A1190F83BDDFD7F7EE662F53F5 /* Pods-BMPlayer_Example-umbrella.h in Headers */, + 813658CE26B74F4BCBD980838E5B6BCE /* BMPlayer-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 54A07839AE1C230D74D8E637FB90972A /* Headers */ = { + 7F01212452712912236CDAB3E0912DF4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D0847AF61C98220D0B8C3D65644E4010 /* BMPlayer-umbrella.h in Headers */, + FB72255ED93BF026E10A0FBA17FA3976 /* NSString+VIMD5.h in Headers */, + 96DEDC224B0EB8E0913F37FFCDE078CB /* VICacheAction.h in Headers */, + 952AD825FA6B11F75EFD1EABF299D210 /* VICacheConfiguration.h in Headers */, + C5F300D8C011D063B161F83A397E8C5D /* VICacheManager.h in Headers */, + 3806962FF5D1F6B11D8CAF4BE6DFFDEF /* VICacheSessionManager.h in Headers */, + CA6CC7DBB0BE43FC07DC4AB8B6813206 /* VIContentInfo.h in Headers */, + DC00736992DD9CF8014E86B8FE3D03C7 /* VIMediaCache-umbrella.h in Headers */, + 31AC10D0967F074B7526563D9F812532 /* VIMediaCache.h in Headers */, + 537B76681916451654B34257AAC8C828 /* VIMediaCacheWorker.h in Headers */, + 0866938993D415520CE7323C0F619E04 /* VIMediaDownloader.h in Headers */, + E507CA9DD17B428382D7DBAB670074EF /* VIResourceLoader.h in Headers */, + 734939C285EC437EB55ADDD794BC5285 /* VIResourceLoaderManager.h in Headers */, + 498E614E8ACBA6DA052464F65A15693F /* VIResourceLoadingRequestWorker.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 54FA0D52D214E34D47291041470163B9 /* Headers */ = { + A11F7D1533A13FA8857E9859511514D5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C4D741B500E05B4139D99991C8E85F8E /* SwipeBack-umbrella.h in Headers */, - CE4BA37B3F3AF8371E55B93D6929C237 /* SwipeBack.h in Headers */, - 2263682D4B5716FC939812051241ECB2 /* UINavigationController+SwipeBack.h in Headers */, - 68532AC28C2DC6E57BB449B89E174523 /* UIViewController+SwipeBack.h in Headers */, + 300A47EDB18769662C07B4CA9B75955E /* NVActivityIndicatorView-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A795C5FC990D4393A7CE7E698298B363 /* Headers */ = { + AD813F64F822E99EA71F5FAC70A95960 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - ABFE19BA9A4613BAE6A9504D5243B37E /* NVActivityIndicatorView-umbrella.h in Headers */, + F544B29EDD373477A09576E99255868A /* SwipeBack-umbrella.h in Headers */, + A9E98F5D5FD33D1B050DCA6F2C123C51 /* SwipeBack.h in Headers */, + 4FF36FDA6199AB65BC4B5B8E10C5A871 /* UINavigationController+SwipeBack.h in Headers */, + 6A3A745761F40226D74145F70A655C24 /* UIViewController+SwipeBack.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DC6F3FF786320A540036C57B425D165B /* Headers */ = { + CD5F6A63942FD537B7A9EFF6CE3B643A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D4E3B6EB7035C7462AB9ED11D074F9C1 /* SnapKit-umbrella.h in Headers */, + 55075427AEAFABA78FEB0405D2514994 /* SnapKit-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 01E0B22901F48810951AFA5A86042B7C /* SnapKit */ = { + 065412BCD5789F6A405B54C30876E162 /* BMPlayer */ = { isa = PBXNativeTarget; - buildConfigurationList = 9BE98B47220647234E7F830DC49B1433 /* Build configuration list for PBXNativeTarget "SnapKit" */; + buildConfigurationList = EBF0C2914948CE86120A1C460852E009 /* Build configuration list for PBXNativeTarget "BMPlayer" */; buildPhases = ( - 87B50FE3162DF3E885DCC8B88440CA45 /* Sources */, - B0E0FCEBBB1C3C424A2C6CB9CFEF2F1B /* Frameworks */, - DC6F3FF786320A540036C57B425D165B /* Headers */, + 7806AA05874E0C79512751167E3C3CAA /* Headers */, + D124B2395FF5FBF3123086BD4D4099A9 /* Sources */, + 1A69FFCA3C3DAE9A1A3B5CE7ADC992CF /* Frameworks */, + E3B43CB5EEAA97DE303B7C93FD4C8B2C /* Resources */, ); buildRules = ( ); dependencies = ( + 967AECA2906264758C9AD3B707EB30A0 /* PBXTargetDependency */, + 3E214CA2105B9488AC1EAB38D6E330D4 /* PBXTargetDependency */, + 5AAE98FB06B769B9CEC1465D5C9CF375 /* PBXTargetDependency */, ); - name = SnapKit; - productName = SnapKit; - productReference = 329858A4956C565282F3F8918D6027EE /* SnapKit.framework */; + name = BMPlayer; + productName = BMPlayer; + productReference = BFB66B3B0A7D7A63A077433BD2BA65C9 /* BMPlayer.framework */; productType = "com.apple.product-type.framework"; }; - 4DD598B978CE30E690FE0910C3081161 /* SwipeBack */ = { + 49E29C98D0563C16CDB92CC967A97F6B /* VIMediaCache */ = { isa = PBXNativeTarget; - buildConfigurationList = D7C88340194313CD90648B62C1E4CCC3 /* Build configuration list for PBXNativeTarget "SwipeBack" */; + buildConfigurationList = 9901E6E955B82F20DDB9959306CE1A86 /* Build configuration list for PBXNativeTarget "VIMediaCache" */; buildPhases = ( - F4B2EB2E11FD0BDB486690D3A0861E55 /* Sources */, - AC4E9457EC1C33A84B032576A1A71011 /* Frameworks */, - 54FA0D52D214E34D47291041470163B9 /* Headers */, + 7F01212452712912236CDAB3E0912DF4 /* Headers */, + 81694E7AE16E7E086AB0B029152C10DF /* Sources */, + 06F3D005909CA034C49236B834B6DB6F /* Frameworks */, + 9F9FDFAF1A38BA6D4337B83DF6D58A81 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = SwipeBack; - productName = SwipeBack; - productReference = 732412A17B81E4D9BB94C2E5759726C5 /* SwipeBack.framework */; + name = VIMediaCache; + productName = VIMediaCache; + productReference = 18221B8F28C6B2C672BA207AB60BFB1D /* VIMediaCache.framework */; productType = "com.apple.product-type.framework"; }; - 66559FEFF490CB9EA8821AD17410F3C1 /* NVActivityIndicatorView */ = { + 636BD1D75BE3611A8AA284006BF876F2 /* Pods-BMPlayer_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 18410F37AE112B81660407C6AEF68B80 /* Build configuration list for PBXNativeTarget "NVActivityIndicatorView" */; + buildConfigurationList = 4C278B7EABBF266836B9A63BBA3E70C2 /* Build configuration list for PBXNativeTarget "Pods-BMPlayer_Example" */; buildPhases = ( - 407EF9B910A6D12288C23FE84795E88A /* Sources */, - D5828E0C15E20F40542D59998880A1ED /* Frameworks */, - A795C5FC990D4393A7CE7E698298B363 /* Headers */, + 31F71DF264EB409117301935AB115C57 /* Headers */, + 8238114491B260D1CEEF38DADC5EEC40 /* Sources */, + AB6F789EFC007D5B611C94AC63D749C9 /* Frameworks */, + 41368D176B08013C7C183DEFC2BAC292 /* Resources */, ); buildRules = ( ); dependencies = ( + 761848DBE1420AFCADD03AC1EE667C8D /* PBXTargetDependency */, + 2158438D80913446C58549032E9B8E3A /* PBXTargetDependency */, + FC85710F8BCCF744D7C7A1214FF9DF75 /* PBXTargetDependency */, + 0AEF957456D90B5EB0C414B486AC549B /* PBXTargetDependency */, + E6E648297117485C24C3C93ABC65AFDF /* PBXTargetDependency */, ); - name = NVActivityIndicatorView; - productName = NVActivityIndicatorView; - productReference = FCE1BAEBCEE8C3079032FFF7FF0038A5 /* NVActivityIndicatorView.framework */; + name = "Pods-BMPlayer_Example"; + productName = "Pods-BMPlayer_Example"; + productReference = 675380B35BD0AB8A743F75841896128D /* Pods_BMPlayer_Example.framework */; productType = "com.apple.product-type.framework"; }; - A2C02D92EC93ABE2038496CC45D71509 /* BMPlayer */ = { + 986FBF0AB911C15EB1F530A32265F54A /* SnapKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 17D9CEC326A2B6BB4063EF2A7C608D15 /* Build configuration list for PBXNativeTarget "BMPlayer" */; + buildConfigurationList = 0B75D215F6B081C52CFF3F5A0C8B927E /* Build configuration list for PBXNativeTarget "SnapKit" */; buildPhases = ( - BFD029D3842DBD11EBABBEDC96E95D09 /* Sources */, - C14670EE4CBF4ED3473DB9DF7FA2C407 /* Frameworks */, - CADE734DDB79E005B5D76BDE2471BE58 /* Resources */, - 54A07839AE1C230D74D8E637FB90972A /* Headers */, + CD5F6A63942FD537B7A9EFF6CE3B643A /* Headers */, + 5168C374160E82468C6311CF99706304 /* Sources */, + 494393C47064398DFCBFC84C80F10289 /* Frameworks */, + 3F21C055E2E8B032748D666941063812 /* Resources */, ); buildRules = ( ); dependencies = ( - D9DCDB74491D874DE4F873FAB591F2F7 /* PBXTargetDependency */, - 4C71BF571DAAF8AF48EF282E241D4967 /* PBXTargetDependency */, - CC7FDD5CB3DF8B4F306F7803A2314822 /* PBXTargetDependency */, ); - name = BMPlayer; - productName = BMPlayer; - productReference = 0B3510D7EED62FD9F36F83F4E7A2E88F /* BMPlayer.framework */; + name = SnapKit; + productName = SnapKit; + productReference = 2170BB0FBADDB3F3EB68A9F06B539294 /* SnapKit.framework */; productType = "com.apple.product-type.framework"; }; - B832171AE7EC7FBC9C0C3FF64AE093E3 /* VIMediaCache */ = { + BC5EF793EA5C7D1505DC7F5BC256AAF5 /* NVActivityIndicatorView */ = { isa = PBXNativeTarget; - buildConfigurationList = 4B5796F6EE354BDD75045E278810A063 /* Build configuration list for PBXNativeTarget "VIMediaCache" */; + buildConfigurationList = 850CFFCF728B2D1A7BC128409C8B6F81 /* Build configuration list for PBXNativeTarget "NVActivityIndicatorView" */; buildPhases = ( - C5C16711FC43BA87753E3334B70F4420 /* Sources */, - B7349DBB1D129349B10D01AAB11D541F /* Frameworks */, - 0FEE1C7981C0E263AAF609D23E2AFC3D /* Headers */, + A11F7D1533A13FA8857E9859511514D5 /* Headers */, + 778363CB70DA398E6DFE8769ABB10D57 /* Sources */, + 73AF7CD3121B468BF9CB6E7A5AE16EB4 /* Frameworks */, + 69075043418F99F4B0B0F96D3F55F3EE /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = VIMediaCache; - productName = VIMediaCache; - productReference = 1945D3C85874665943E8193615F97182 /* VIMediaCache.framework */; + name = NVActivityIndicatorView; + productName = NVActivityIndicatorView; + productReference = EA36FA10D6ACDB5797F4C964446C82A5 /* NVActivityIndicatorView.framework */; productType = "com.apple.product-type.framework"; }; - BB3CEB88AAA042EAAC98420BE2B66806 /* Pods-BMPlayer_Example */ = { + D1D7552068628A3E9E763F5C23995239 /* SwipeBack */ = { isa = PBXNativeTarget; - buildConfigurationList = CD299B492A55FE90165E73616B751B4B /* Build configuration list for PBXNativeTarget "Pods-BMPlayer_Example" */; + buildConfigurationList = 1E996643EC5AF706CFF04E6447AC1D36 /* Build configuration list for PBXNativeTarget "SwipeBack" */; buildPhases = ( - 49898D1690C72882B0734DC9B3C44D0E /* Sources */, - 4305AC2B940DC88B65545F5ED12A3DAB /* Frameworks */, - 157483D0DCDB6A915DAC2570492C104B /* Headers */, + AD813F64F822E99EA71F5FAC70A95960 /* Headers */, + BD97F093BFCAA82422A2868C4E9943A1 /* Sources */, + 83DF6CA7D279C7894CB925E6C30C244E /* Frameworks */, + A0463534638464D9AAF931ED51133FA8 /* Resources */, ); buildRules = ( ); dependencies = ( - AC5E996EF0BC74B283EE556C312056C3 /* PBXTargetDependency */, - 29FDCCAE256756D4EB44D9A7579A2705 /* PBXTargetDependency */, - 22F08A2DA41470CED8D7B0C8D591AD42 /* PBXTargetDependency */, - D48F9185558CF1AC493169186CFFC1C4 /* PBXTargetDependency */, - 2A7A775D147F8C8E4AB009BB28ABA02A /* PBXTargetDependency */, ); - name = "Pods-BMPlayer_Example"; - productName = "Pods-BMPlayer_Example"; - productReference = 1DD68B9A7394F16E1FF6A9DE0356971A /* Pods_BMPlayer_Example.framework */; + name = SwipeBack; + productName = SwipeBack; + productReference = D15961DB2AB05EBF4D4FB50C54C62402 /* SwipeBack.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 1020; + LastUpgradeCheck = 1020; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 25BBB4FC0C38F93E76EA2841C9D403CE /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 82593A06F76EA74DB6F1DC445784A6AA /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - A2C02D92EC93ABE2038496CC45D71509 /* BMPlayer */, - 66559FEFF490CB9EA8821AD17410F3C1 /* NVActivityIndicatorView */, - BB3CEB88AAA042EAAC98420BE2B66806 /* Pods-BMPlayer_Example */, - 01E0B22901F48810951AFA5A86042B7C /* SnapKit */, - 4DD598B978CE30E690FE0910C3081161 /* SwipeBack */, - B832171AE7EC7FBC9C0C3FF64AE093E3 /* VIMediaCache */, + 065412BCD5789F6A405B54C30876E162 /* BMPlayer */, + BC5EF793EA5C7D1505DC7F5BC256AAF5 /* NVActivityIndicatorView */, + 636BD1D75BE3611A8AA284006BF876F2 /* Pods-BMPlayer_Example */, + 986FBF0AB911C15EB1F530A32265F54A /* SnapKit */, + D1D7552068628A3E9E763F5C23995239 /* SwipeBack */, + 49E29C98D0563C16CDB92CC967A97F6B /* VIMediaCache */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - CADE734DDB79E005B5D76BDE2471BE58 /* Resources */ = { + 3F21C055E2E8B032748D666941063812 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 54CD689B62294284CA27A81F149D65DB /* Pod_Asset_BMPlayer.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 41368D176B08013C7C183DEFC2BAC292 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 69075043418F99F4B0B0F96D3F55F3EE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9F9FDFAF1A38BA6D4337B83DF6D58A81 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A0463534638464D9AAF931ED51133FA8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E3B43CB5EEAA97DE303B7C93FD4C8B2C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D7C5F4E522B93612068A1FA37BC3591 /* Pod_Asset_BMPlayer.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 407EF9B910A6D12288C23FE84795E88A /* Sources */ = { + 5168C374160E82468C6311CF99706304 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A08BBE5115B20142478841210767B6B7 /* NVActivityIndicatorAnimationAudioEqualizer.swift in Sources */, - B5C9F66466797BF7DB8CFD365638731E /* NVActivityIndicatorAnimationBallBeat.swift in Sources */, - D643350C3225B759F81AB37B6E5BF564 /* NVActivityIndicatorAnimationBallClipRotate.swift in Sources */, - C740F55ACB1C7FE13E452726124B0A34 /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift in Sources */, - E2655145F8108345EBD50AD2DCCC1161 /* NVActivityIndicatorAnimationBallClipRotatePulse.swift in Sources */, - 50EC6F112000371503A9F7258C43935E /* NVActivityIndicatorAnimationBallGridBeat.swift in Sources */, - 8C8C708118BB1FE9182CD8375A8EAA6B /* NVActivityIndicatorAnimationBallGridPulse.swift in Sources */, - E3A241D6D7BDDB645B1C30B4DDE856E0 /* NVActivityIndicatorAnimationBallPulse.swift in Sources */, - FBC4392CE5A8044289B90394479C949F /* NVActivityIndicatorAnimationBallPulseRise.swift in Sources */, - A2E3366549982702E13A29A9F7E96922 /* NVActivityIndicatorAnimationBallPulseSync.swift in Sources */, - 86B7A9566C11893527BE8149461AE757 /* NVActivityIndicatorAnimationBallRotate.swift in Sources */, - C30664959A85237158B067C1BD731D9B /* NVActivityIndicatorAnimationBallRotateChase.swift in Sources */, - EDC95152A241534DAC8CC8559893892C /* NVActivityIndicatorAnimationBallScale.swift in Sources */, - 3644E12E79B9E8D66795DF49E823A467 /* NVActivityIndicatorAnimationBallScaleMultiple.swift in Sources */, - 99EFF13C25C90127E3538272E25F8FBE /* NVActivityIndicatorAnimationBallScaleRipple.swift in Sources */, - 9BCFF198FC6EA0D095360B65AA55AAC7 /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift in Sources */, - 665418EFDF65434307F8D33FE14E0F68 /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift in Sources */, - 552B4C244BD9839C638D7F2FD1C23C03 /* NVActivityIndicatorAnimationBallTrianglePath.swift in Sources */, - 361C2308D20DC6EF2A71B80E6928473D /* NVActivityIndicatorAnimationBallZigZag.swift in Sources */, - 58305A890D1C84F762F59B41AECCE55E /* NVActivityIndicatorAnimationBallZigZagDeflect.swift in Sources */, - 877B11A66B2C7AC867F86D5507B777EF /* NVActivityIndicatorAnimationBlank.swift in Sources */, - AA4752D4BF3E0A6D1D55F567F7D8CE6F /* NVActivityIndicatorAnimationCubeTransition.swift in Sources */, - 01CB48E71ED74F24770641340D34CC1C /* NVActivityIndicatorAnimationDelegate.swift in Sources */, - 8BB73B1C8EAD7D7185EAC3730C61E644 /* NVActivityIndicatorAnimationLineScale.swift in Sources */, - 37932E28F19C837BE9D22BEFA8F4CFF3 /* NVActivityIndicatorAnimationLineScaleParty.swift in Sources */, - D0C845695654B7B98FA1A60121A77C22 /* NVActivityIndicatorAnimationLineScalePulseOut.swift in Sources */, - A6688AEA2238B36A18C3D77D58D42471 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift in Sources */, - B77BFC6BFB516F5B027CE94A4732FE66 /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift in Sources */, - 26FC7E9F58AE0778E0E416808393A6C2 /* NVActivityIndicatorAnimationOrbit.swift in Sources */, - FB413AA85A7068540F1A933B263DA445 /* NVActivityIndicatorAnimationPacman.swift in Sources */, - F391B9213F766036ED5039465CB30920 /* NVActivityIndicatorAnimationSemiCircleSpin.swift in Sources */, - A1A611BC817A59BCB1FC0DB3D820EAD6 /* NVActivityIndicatorAnimationSquareSpin.swift in Sources */, - CF675FAD4FFE743931A7A7FBE901CA70 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift in Sources */, - 74D96079C3EE1084C2766B74DA1BFDC5 /* NVActivityIndicatorPresenter.swift in Sources */, - 7B6C1E5DD0ED7DBCA38D177DD4C4FE6C /* NVActivityIndicatorShape.swift in Sources */, - 4878097D3E02DDABE1999261B2355886 /* NVActivityIndicatorView-dummy.m in Sources */, - D0841CB931F543F021F9C7CFDF901C8A /* NVActivityIndicatorView.swift in Sources */, - 8723C3F66EDEF07021C509111ED7F0E4 /* NVActivityIndicatorViewable.swift in Sources */, + B7170B2544ACEA6B5B44555F15512FA4 /* Constraint.swift in Sources */, + 0E1E1C2B809B261A18752549902DFD2C /* ConstraintAttributes.swift in Sources */, + 2B2B4EA63BCFC8DD6C527D26D482FF7D /* ConstraintConfig.swift in Sources */, + 85F54642FE751FF658F4CE14C5903F26 /* ConstraintConstantTarget.swift in Sources */, + E3E796D190BA099EDEDAB1BC8F32A461 /* ConstraintDescription.swift in Sources */, + 7C70D9696EB7364B8DE8867DCBF1F3A1 /* ConstraintDSL.swift in Sources */, + B1A59D1473C2A7D3F61D060CEB6CFCE8 /* ConstraintInsets.swift in Sources */, + F6BEBC661850C2CD4ED41DCC9844D19C /* ConstraintInsetTarget.swift in Sources */, + D08060F016B54E8F27BDF8DBB49A6171 /* ConstraintItem.swift in Sources */, + 3095ECCD2E085B13090E3C50A83EC613 /* ConstraintLayoutGuide+Extensions.swift in Sources */, + AED1C67B76232919163683A434D98744 /* ConstraintLayoutGuide.swift in Sources */, + BA9F85ED84602FF7C9FC27CBC5D2CAE2 /* ConstraintLayoutGuideDSL.swift in Sources */, + 17FB1B5FC88C3371AF69A26995FE957B /* ConstraintLayoutSupport.swift in Sources */, + 70D742EB92FA49027BE11C173DE3EEF8 /* ConstraintLayoutSupportDSL.swift in Sources */, + 8F7119F672B8113694445CBD428C5FA9 /* ConstraintMaker.swift in Sources */, + 521DFB8B79D26057EB7374FED372FD19 /* ConstraintMakerEditable.swift in Sources */, + EC2AC6ED7500CF63037D6873D4251340 /* ConstraintMakerExtendable.swift in Sources */, + 271A589202B67D566317D156E1412250 /* ConstraintMakerFinalizable.swift in Sources */, + E81245F79648A09BF637A2E5FDCEE7E0 /* ConstraintMakerPriortizable.swift in Sources */, + F9A808ED9392747AB918ECA640473CC3 /* ConstraintMakerRelatable.swift in Sources */, + 81BD047CA16B8A3E8891FF229DE75211 /* ConstraintMultiplierTarget.swift in Sources */, + ED87149FD9583840C142D905EA1046A5 /* ConstraintOffsetTarget.swift in Sources */, + DE210375D2E0AC06D2D3DE5B356A4F5A /* ConstraintPriority.swift in Sources */, + B8CF46ABBFEEF990B3D66F04BA247BE5 /* ConstraintPriorityTarget.swift in Sources */, + 7CA4A342DBACFB15D330B35388DFB6C7 /* ConstraintRelatableTarget.swift in Sources */, + 4A41ADCB5552A39DBCEAD5C9192B3BE7 /* ConstraintRelation.swift in Sources */, + AC5CFCD905CCEE95E529BDE6A5F9CF9B /* ConstraintView+Extensions.swift in Sources */, + 954471C7EC47E20FCA21D6E64832AE89 /* ConstraintView.swift in Sources */, + FBE22092E43024E7DB41295413161568 /* ConstraintViewDSL.swift in Sources */, + 1F5A5729D0BBEA15E23D7A98BC0E418A /* Debugging.swift in Sources */, + 276BD3C1BFB96E7248CBCA867B5566FD /* LayoutConstraint.swift in Sources */, + FE18DA4556EE645A8A79D20BF87995A3 /* LayoutConstraintItem.swift in Sources */, + DCD0133109300F1318C0A81DDFFC02C9 /* SnapKit-dummy.m in Sources */, + 63633A282D11E4C3E14557F57D6CB8A7 /* Typealiases.swift in Sources */, + 8981517E70994716501CE00C80E7B219 /* UILayoutSupport+Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 49898D1690C72882B0734DC9B3C44D0E /* Sources */ = { + 778363CB70DA398E6DFE8769ABB10D57 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 06577C7CADE8F81DE14911449FE0F7BD /* Pods-BMPlayer_Example-dummy.m in Sources */, + 8EE03C341565FA02E525D8B6006B405C /* NVActivityIndicatorAnimationAudioEqualizer.swift in Sources */, + 86AAAC1072D255858A381C1233BDBDD1 /* NVActivityIndicatorAnimationBallBeat.swift in Sources */, + 411593C744C3BC97E858257E2143731D /* NVActivityIndicatorAnimationBallClipRotate.swift in Sources */, + 892E86C258E8842B9BCAF39DBE2780DC /* NVActivityIndicatorAnimationBallClipRotateMultiple.swift in Sources */, + 3B782007A6CA142404E6D8D24D521B34 /* NVActivityIndicatorAnimationBallClipRotatePulse.swift in Sources */, + A4540009AF2588A53C552D0561DEEAAD /* NVActivityIndicatorAnimationBallDoubleBounce.swift in Sources */, + 95F153787B50432A241F6B0942C294F5 /* NVActivityIndicatorAnimationBallGridBeat.swift in Sources */, + 7E99FE7355EDE0B52D74D2F4A16FFB05 /* NVActivityIndicatorAnimationBallGridPulse.swift in Sources */, + CE446A7ECACEAD9B2122B2565F7D5CFA /* NVActivityIndicatorAnimationBallPulse.swift in Sources */, + 1AF4DF65956031001155DD64AC637D09 /* NVActivityIndicatorAnimationBallPulseRise.swift in Sources */, + 51E4AFED6AC0668AFEDC7C6A7208A4A9 /* NVActivityIndicatorAnimationBallPulseSync.swift in Sources */, + 4ACC4EA543C820B746DC66835B89962B /* NVActivityIndicatorAnimationBallRotate.swift in Sources */, + 24012AAD176F436ECAAF4207F2B9159C /* NVActivityIndicatorAnimationBallRotateChase.swift in Sources */, + 4CF94A8D6F8A1B9918F857A57EC0C5E9 /* NVActivityIndicatorAnimationBallScale.swift in Sources */, + DCF9FC727CB487F413ED0A0309575501 /* NVActivityIndicatorAnimationBallScaleMultiple.swift in Sources */, + 7757FCD6A64E645BE5745255F7B48A12 /* NVActivityIndicatorAnimationBallScaleRipple.swift in Sources */, + 938187382ADEA7AB60B956E3EBCC431B /* NVActivityIndicatorAnimationBallScaleRippleMultiple.swift in Sources */, + 43F1DAC3F025C8F93FAE48723C0141CB /* NVActivityIndicatorAnimationBallSpinFadeLoader.swift in Sources */, + FFE8F6B1AACDA242E316246BCD3FC8F7 /* NVActivityIndicatorAnimationBallTrianglePath.swift in Sources */, + 7468ED6B2E13D201865668F91AB8690E /* NVActivityIndicatorAnimationBallZigZag.swift in Sources */, + 0520088EEBC879DF2BFC73B355BA5077 /* NVActivityIndicatorAnimationBallZigZagDeflect.swift in Sources */, + 512AF46CC2E410FCEFABEDA53D428039 /* NVActivityIndicatorAnimationBlank.swift in Sources */, + 1AAB04526E75E8E597D62B874A4D5615 /* NVActivityIndicatorAnimationCircleStrokeSpin.swift in Sources */, + F5EA6C413C6183A0D7BD4B11A2EA45F3 /* NVActivityIndicatorAnimationCubeTransition.swift in Sources */, + 7E24CB5537F7415B662DB27A28B01AFB /* NVActivityIndicatorAnimationDelegate.swift in Sources */, + FE933F091E23D127C757D141094E8074 /* NVActivityIndicatorAnimationLineScale.swift in Sources */, + B8A257334A26D83BE8AEAA4A1F0AF852 /* NVActivityIndicatorAnimationLineScaleParty.swift in Sources */, + 0056B9CA777AE1FC2DFA5506266636FC /* NVActivityIndicatorAnimationLineScalePulseOut.swift in Sources */, + 284E00DC266AFC339C599A52C3CEBFC3 /* NVActivityIndicatorAnimationLineScalePulseOutRapid.swift in Sources */, + 1712CB83C6C25555D1CF4CF74558290B /* NVActivityIndicatorAnimationLineSpinFadeLoader.swift in Sources */, + E734BDC7D68029363D4C6FA8D63736EA /* NVActivityIndicatorAnimationOrbit.swift in Sources */, + 9120BE92AB410C12E924574D7D1F48B6 /* NVActivityIndicatorAnimationPacman.swift in Sources */, + 8EDFF25A1951F6A0C28928B627F9CC44 /* NVActivityIndicatorAnimationSemiCircleSpin.swift in Sources */, + 9B287F9E159B79FD5E04F78EF65C6FED /* NVActivityIndicatorAnimationSquareSpin.swift in Sources */, + C43058B0EB07835312ECF1B934B3C805 /* NVActivityIndicatorAnimationTriangleSkewSpin.swift in Sources */, + 90FCDF0BADDBE70F59D0DCCDA4BCC211 /* NVActivityIndicatorPresenter.swift in Sources */, + 2357C558AEBF4FE9C79D96BB2B5932B9 /* NVActivityIndicatorShape.swift in Sources */, + 4274267C084358BDB0CC84EBEE533DDB /* NVActivityIndicatorView-dummy.m in Sources */, + D9ADD2588FF9E7BD877FE41E76B5E5CC /* NVActivityIndicatorView.swift in Sources */, + 0F4A1B105D10783C251C822B238AC883 /* NVActivityIndicatorViewable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 87B50FE3162DF3E885DCC8B88440CA45 /* Sources */ = { + 81694E7AE16E7E086AB0B029152C10DF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 78D0B62D6B14A4D467007A1D8D1D1B26 /* Constraint.swift in Sources */, - C3A4CB618030899D3F4BF8FAF69CA695 /* ConstraintAttributes.swift in Sources */, - 0BA215040F1D813F6A77EE37AC04C128 /* ConstraintConfig.swift in Sources */, - 7892870A25274AB747F1DDED3EC63064 /* ConstraintConstantTarget.swift in Sources */, - C0F37E57498DEF6C8172ADC55995B223 /* ConstraintDescription.swift in Sources */, - 01D10B95A2DFBE5A8727193E5FA042C9 /* ConstraintDSL.swift in Sources */, - F0F8D016C2653F7D2705C4968056DFF7 /* ConstraintInsets.swift in Sources */, - 719B697BFC59B60EE57AEB0867145FD6 /* ConstraintInsetTarget.swift in Sources */, - D9AE2CEF680A2F48B266D297AFDA7384 /* ConstraintItem.swift in Sources */, - 34CA67E4CCD02308E2F93A74FF531693 /* ConstraintLayoutGuide+Extensions.swift in Sources */, - 37A8AEC50ECF6D993FCA067C2890ADC1 /* ConstraintLayoutGuide.swift in Sources */, - 70E9E152B922D213CD84672A26722DEC /* ConstraintLayoutGuideDSL.swift in Sources */, - C0D653919525DD5D59C0C48DDE8FB1ED /* ConstraintLayoutSupport.swift in Sources */, - 5B59A3F988340B63FBDEC32D71C88CC2 /* ConstraintLayoutSupportDSL.swift in Sources */, - 2AA7C0BCF2E9E20EE271716E2E0086F9 /* ConstraintMaker.swift in Sources */, - E817BB83C80A5823ACC9C04999506427 /* ConstraintMakerEditable.swift in Sources */, - A46D979A098426DB7DA15FA75FC09411 /* ConstraintMakerExtendable.swift in Sources */, - D1D0C48CDD06BA38C802D8E0EBB2EB0D /* ConstraintMakerFinalizable.swift in Sources */, - D05B6131A06E7444327E8F4AAC0A77FB /* ConstraintMakerPriortizable.swift in Sources */, - 69B8C6200166CA91F0414F0FDC5D4DBD /* ConstraintMakerRelatable.swift in Sources */, - B6335209AACF595C8B6635D6F6D9F89B /* ConstraintMultiplierTarget.swift in Sources */, - 982564C97B20591C02288674DACF03BB /* ConstraintOffsetTarget.swift in Sources */, - A676507887AD28FDEF63CE1FD19F418B /* ConstraintPriority.swift in Sources */, - EBDD13DAEC5CBD8CC54718837DC84D63 /* ConstraintPriorityTarget.swift in Sources */, - A33C99B7DC4FC0772E42D05241EB156A /* ConstraintRelatableTarget.swift in Sources */, - 831D1AD098302F90E137EC01F2629801 /* ConstraintRelation.swift in Sources */, - DE25B061C1C588833C57163B79178AA2 /* ConstraintView+Extensions.swift in Sources */, - 3E0D0361BFED0ABFA639CD7CB8774CFA /* ConstraintView.swift in Sources */, - 2A28C40F77140DB2278FAE2D06251287 /* ConstraintViewDSL.swift in Sources */, - 337A6A45F2890C1A22AB1D8BE6BD2553 /* Debugging.swift in Sources */, - 6130628394117CE0C412A27FE9050AE6 /* LayoutConstraint.swift in Sources */, - 287D7A0D873EAEE01BAA916A89B494CA /* LayoutConstraintItem.swift in Sources */, - D0FB3B6E45843DEF4B8411CCFF7B21EF /* SnapKit-dummy.m in Sources */, - E2AC6DAD6D0D9C7CDC55840293F22230 /* Typealiases.swift in Sources */, - 386905922B26F925041BC27161E66FF9 /* UILayoutSupport+Extensions.swift in Sources */, + 92053AC79C04AE21F083D05839F47032 /* NSString+VIMD5.m in Sources */, + 6DCF5E295612DCEDEDF48E7D25376F19 /* VICacheAction.m in Sources */, + A876C9F893C8CB524F5E59F24EAEEFB7 /* VICacheConfiguration.m in Sources */, + 6BBD7CE7E9E7E59C3B1C6E95F3EC8834 /* VICacheManager.m in Sources */, + 90FD36B52CCDBD241EFA5A4936471AF6 /* VICacheSessionManager.m in Sources */, + 6B1CEE035848C45314A572DAEFDD8FA3 /* VIContentInfo.m in Sources */, + 39335737AB561D9355E006BD6D017055 /* VIMediaCache-dummy.m in Sources */, + 82B0C4D5ACAAFF9CFCB2189483544BB2 /* VIMediaCacheWorker.m in Sources */, + 0F26D8E83246110CE189C5EA0BD0A5AE /* VIMediaDownloader.m in Sources */, + A7EBEAA70B2F1D1F7500FE4DA9E54BAD /* VIResourceLoader.m in Sources */, + 47FFBC956105B7F12C187BF946AFD64A /* VIResourceLoaderManager.m in Sources */, + B06827C77055AAAE537D8141DDF9E107 /* VIResourceLoadingRequestWorker.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BFD029D3842DBD11EBABBEDC96E95D09 /* Sources */ = { + 8238114491B260D1CEEF38DADC5EEC40 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9FDDB45BF86083121EC213BC98A1DE1D /* BMPlayer-dummy.m in Sources */, - 4DA2829CA234AF362AFC3F5E5FCEEB9F /* BMPlayer.swift in Sources */, - B1D6B30D5378B2E688AC6C1EC3B7FCB6 /* BMPlayerClearityChooseButton.swift in Sources */, - B7A8224628218427328790DBC29DE077 /* BMPlayerControlView.swift in Sources */, - D56CF121F86CADD32FF3597D8ED26B0E /* BMPlayerItem.swift in Sources */, - AA7B8E3FD2CCFA3293F838E0569C2CE1 /* BMPlayerLayerView.swift in Sources */, - 33D287518BE7E9F89A2D2ECC10B89482 /* BMPlayerManager.swift in Sources */, - 9D14BF68EB97F7A237DEF2EE507BFDD6 /* BMPlayerProtocols.swift in Sources */, - 9781943CF8B2A0F9EB6C9DBE4F4F9F1A /* BMSubtitles.swift in Sources */, - 8422928B984595E017375BBDC6EA8157 /* BMTimeSlider.swift in Sources */, + 23D8650508A2B414622C0AE7298E48E6 /* Pods-BMPlayer_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C5C16711FC43BA87753E3334B70F4420 /* Sources */ = { + BD97F093BFCAA82422A2868C4E9943A1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 926AD4C41418BC64A6DA9656566CD810 /* VICacheAction.m in Sources */, - 266C596A96F0444D03F23DB13754D55C /* VICacheConfiguration.m in Sources */, - 30597FB337B5B2E1B281691F2BDE54F0 /* VICacheManager.m in Sources */, - D30BB4C945574BBE2FD79C93E636E169 /* VICacheSessionManager.m in Sources */, - 7FE094635A83EF286C82572F605C43E2 /* VIContentInfo.m in Sources */, - 2F63CB507BD434A700CD9F03F77D4393 /* VIMediaCache-dummy.m in Sources */, - 299903651AF85081F5EFE6C8FB83FF3F /* VIMediaCacheWorker.m in Sources */, - A24C45B9CEE4DCC70A4DFB6E96B23C1B /* VIMediaDownloader.m in Sources */, - A047138006F8C73AFA1A9ADA64AEE009 /* VIResourceLoader.m in Sources */, - 91C917245BE34395D3C764FF0EE8B536 /* VIResourceLoaderManager.m in Sources */, - 2081E8AF46D943AED33A2E8ABCF6A302 /* VIResourceLoadingRequestWorker.m in Sources */, + 8E7288A9463A84A7B8846534301E0113 /* SwipeBack-dummy.m in Sources */, + CF507B7F2C3B3311E0E6BA66714811B1 /* UINavigationController+SwipeBack.m in Sources */, + BD0B0777A784977E5BB97F225077D8DA /* UIViewController+SwipeBack.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4B2EB2E11FD0BDB486690D3A0861E55 /* Sources */ = { + D124B2395FF5FBF3123086BD4D4099A9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B23907CEA00CB3DC83A8E115E367472A /* SwipeBack-dummy.m in Sources */, - AD2DF95705E1ECBFE8F733F28D4E0990 /* UINavigationController+SwipeBack.m in Sources */, - D3E3D64434C16BA16A9FBFFBF9201154 /* UIViewController+SwipeBack.m in Sources */, + 5CA6DAF27B7FE98D8139F2B5D0A01B8A /* BMPlayer-dummy.m in Sources */, + 6E04651AE905869039601DE9F220C58C /* BMPlayer.swift in Sources */, + 9BF333E7C849F95C0A7AE796AC8CA49D /* BMPlayerClearityChooseButton.swift in Sources */, + 5B3B9DA8C5D12C5D6A434D7435BA2CC5 /* BMPlayerControlView.swift in Sources */, + E82D632C86D427CC451620C3B1D5C6C8 /* BMPlayerItem.swift in Sources */, + B163ECB5C91D2C6BBFDB0DE71DB2189E /* BMPlayerLayerView.swift in Sources */, + 8201498F66FF1D7FCFDF9C7ABFD3B5F6 /* BMPlayerManager.swift in Sources */, + F738C239CE57387BB377469401484845 /* BMPlayerProtocols.swift in Sources */, + C66910424FF918D7CE495F46B8D9AFBC /* BMSubtitles.swift in Sources */, + 4102B647E8E855EB075E3BFC3CDDDC8E /* BMTimeSlider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 22F08A2DA41470CED8D7B0C8D591AD42 /* PBXTargetDependency */ = { + 0AEF957456D90B5EB0C414B486AC549B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SnapKit; - target = 01E0B22901F48810951AFA5A86042B7C /* SnapKit */; - targetProxy = 14237F20F67E82F2D497DDFFD860F03E /* PBXContainerItemProxy */; + name = SwipeBack; + target = D1D7552068628A3E9E763F5C23995239 /* SwipeBack */; + targetProxy = BE2AAE49D599848077BDA5CE0B145992 /* PBXContainerItemProxy */; }; - 29FDCCAE256756D4EB44D9A7579A2705 /* PBXTargetDependency */ = { + 2158438D80913446C58549032E9B8E3A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = NVActivityIndicatorView; - target = 66559FEFF490CB9EA8821AD17410F3C1 /* NVActivityIndicatorView */; - targetProxy = 276C2D00646A244CD2283DC07B8BB903 /* PBXContainerItemProxy */; + target = BC5EF793EA5C7D1505DC7F5BC256AAF5 /* NVActivityIndicatorView */; + targetProxy = DAC4968B10322B411AD5A20D516328C7 /* PBXContainerItemProxy */; }; - 2A7A775D147F8C8E4AB009BB28ABA02A /* PBXTargetDependency */ = { + 3E214CA2105B9488AC1EAB38D6E330D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = VIMediaCache; - target = B832171AE7EC7FBC9C0C3FF64AE093E3 /* VIMediaCache */; - targetProxy = C8F1686BFD9E94CC3B15880BA0CDFE73 /* PBXContainerItemProxy */; + name = SnapKit; + target = 986FBF0AB911C15EB1F530A32265F54A /* SnapKit */; + targetProxy = 003859FE20DD9E1F75D91AB89DF0AF47 /* PBXContainerItemProxy */; }; - 4C71BF571DAAF8AF48EF282E241D4967 /* PBXTargetDependency */ = { + 5AAE98FB06B769B9CEC1465D5C9CF375 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SnapKit; - target = 01E0B22901F48810951AFA5A86042B7C /* SnapKit */; - targetProxy = 57D7115C2CFF274C9B47C088D790121F /* PBXContainerItemProxy */; + name = VIMediaCache; + target = 49E29C98D0563C16CDB92CC967A97F6B /* VIMediaCache */; + targetProxy = 4E0FE10BB7392D37E160AEA46490C931 /* PBXContainerItemProxy */; }; - AC5E996EF0BC74B283EE556C312056C3 /* PBXTargetDependency */ = { + 761848DBE1420AFCADD03AC1EE667C8D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BMPlayer; - target = A2C02D92EC93ABE2038496CC45D71509 /* BMPlayer */; - targetProxy = E84E90DB3B362820BE793A59EC1C7DF8 /* PBXContainerItemProxy */; + target = 065412BCD5789F6A405B54C30876E162 /* BMPlayer */; + targetProxy = 5EBB12AB65E31CB81B5DD8ECEE73F1DD /* PBXContainerItemProxy */; }; - CC7FDD5CB3DF8B4F306F7803A2314822 /* PBXTargetDependency */ = { + 967AECA2906264758C9AD3B707EB30A0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = VIMediaCache; - target = B832171AE7EC7FBC9C0C3FF64AE093E3 /* VIMediaCache */; - targetProxy = C13DB64B74926C5B5B2A773BCCBD2428 /* PBXContainerItemProxy */; + name = NVActivityIndicatorView; + target = BC5EF793EA5C7D1505DC7F5BC256AAF5 /* NVActivityIndicatorView */; + targetProxy = 71C5DA89FD0817568DBCE7C1D6093672 /* PBXContainerItemProxy */; }; - D48F9185558CF1AC493169186CFFC1C4 /* PBXTargetDependency */ = { + E6E648297117485C24C3C93ABC65AFDF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SwipeBack; - target = 4DD598B978CE30E690FE0910C3081161 /* SwipeBack */; - targetProxy = D5D774CA0185C903BDD2329EB7D4EEBF /* PBXContainerItemProxy */; + name = VIMediaCache; + target = 49E29C98D0563C16CDB92CC967A97F6B /* VIMediaCache */; + targetProxy = 462192235892F9EC0EA72F45C7EEE903 /* PBXContainerItemProxy */; }; - D9DCDB74491D874DE4F873FAB591F2F7 /* PBXTargetDependency */ = { + FC85710F8BCCF744D7C7A1214FF9DF75 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NVActivityIndicatorView; - target = 66559FEFF490CB9EA8821AD17410F3C1 /* NVActivityIndicatorView */; - targetProxy = 5A4D87243A02863C31C1E1C52CBB0476 /* PBXContainerItemProxy */; + name = SnapKit; + target = 986FBF0AB911C15EB1F530A32265F54A /* SnapKit */; + targetProxy = 827B885FD10686267937A71325F41598 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 123A51DC18176ACCCC90C0C164047506 /* Debug */ = { + 196DFA3E4A09A28224918543529A1885 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F53F2F9322CBA6B467D0FD454E915765 /* NVActivityIndicatorView.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NVActivityIndicatorView/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = NVActivityIndicatorView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 14FD6561B21BC52191897D67B5CC2EC3 /* Debug */ = { + 29DC958BE0D809DAD7A13AE828FCED39 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BCA3BCC636A9B5C7DC115987E86EB86 /* Pods-BMPlayer_Example.debug.xcconfig */; + baseConfigurationReference = D617F8BE4E89D0BBBAE73705BD9F47BF /* Pods-BMPlayer_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-BMPlayer_Example/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_BMPlayer_Example; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 1912C0FF3BA6508691BE003F036F507A /* Release */ = { + 2AB7344DC482409277AFE37060909F2E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F53F2F9322CBA6B467D0FD454E915765 /* NVActivityIndicatorView.xcconfig */; + baseConfigurationReference = 78D96BFB55B7B1E75E6863A38CB77E07 /* SnapKit.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NVActivityIndicatorView/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = NVActivityIndicatorView; + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; + PRODUCT_MODULE_NAME = SnapKit; + PRODUCT_NAME = SnapKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 1C7D17A37D091C98D2F0DD886C3A9320 /* Debug */ = { + 4FBCFF4981937786519BDE767A6B0AFF /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 78D96BFB55B7B1E75E6863A38CB77E07 /* SnapKit.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 34FE9531DA9AF2820790339988D5FF41 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 47377373B8B0BE08361608AA2CA8D142 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 857002F7B986610F3EFCAB4FE2A62D93 /* SwipeBack.xcconfig */; - buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwipeBack/SwipeBack-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwipeBack/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapKit/SnapKit-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwipeBack/SwipeBack.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwipeBack; + MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; + PRODUCT_MODULE_NAME = SnapKit; + PRODUCT_NAME = SnapKit; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 4BA9860AC8D3944EEBAD068034AB7408 /* Release */ = { + 5D4E45F1AA7603D939909DEF5056A293 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E46F246B4B757A474D4F92637D1CEC11 /* Pods-BMPlayer_Example.release.xcconfig */; + baseConfigurationReference = 7A169D1EEFCA558F5B559660E7B7193E /* Pods-BMPlayer_Example.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-BMPlayer_Example/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_BMPlayer_Example; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 4F581DC618EB5BACDDFD1B03CA3D8BA5 /* Debug */ = { + 6C051EBA0B72F422C53E5A01577E432C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08620D5D03A8F110592B3633EAA7EF9E /* VIMediaCache.xcconfig */; + baseConfigurationReference = CF7DAB0A6E90A1A207B58A2B0ED0D5DE /* SwipeBack.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/VIMediaCache/VIMediaCache-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/VIMediaCache/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SwipeBack/SwipeBack-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwipeBack/SwipeBack-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/VIMediaCache/VIMediaCache.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = VIMediaCache; + MODULEMAP_FILE = "Target Support Files/SwipeBack/SwipeBack.modulemap"; + PRODUCT_MODULE_NAME = SwipeBack; + PRODUCT_NAME = SwipeBack; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 73F38279D85974D49CCC25EAD3C285D8 /* Release */ = { + 73FC6BFC4361733BFEF7425B95CF3460 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E04AF0F5819D17377992571693C493A3 /* SnapKit.xcconfig */; + baseConfigurationReference = E5BB94C9FCF1878E042576912BA36177 /* BMPlayer.xcconfig */; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapKit/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/BMPlayer/BMPlayer-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/BMPlayer/BMPlayer-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SnapKit; + MODULEMAP_FILE = "Target Support Files/BMPlayer/BMPlayer.modulemap"; + PRODUCT_MODULE_NAME = BMPlayer; + PRODUCT_NAME = BMPlayer; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 84C76C38E03FE7B9F4FC64D133AE4A79 /* Release */ = { + 8B1ED5E77D9E8EB173724DC758524A17 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 857002F7B986610F3EFCAB4FE2A62D93 /* SwipeBack.xcconfig */; + baseConfigurationReference = 221C5430DB73E3866096BF83BCAEAB55 /* NVActivityIndicatorView.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwipeBack/SwipeBack-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwipeBack/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwipeBack/SwipeBack.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwipeBack; + MODULEMAP_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap"; + PRODUCT_MODULE_NAME = NVActivityIndicatorView; + PRODUCT_NAME = NVActivityIndicatorView; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 8C66126D17B008C353A73F19A0D64542 /* Debug */ = { + A000B467DE14CA69EA7022692CA6B3D5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8EFACF06F3BCEFFB08EC9E99A02B2303 /* BMPlayer.xcconfig */; + baseConfigurationReference = 221C5430DB73E3866096BF83BCAEAB55 /* NVActivityIndicatorView.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/BMPlayer/BMPlayer-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BMPlayer/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BMPlayer/BMPlayer.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = BMPlayer; + MODULEMAP_FILE = "Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.modulemap"; + PRODUCT_MODULE_NAME = NVActivityIndicatorView; + PRODUCT_NAME = NVActivityIndicatorView; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 93A63B97E778808231846780EC6E33CB /* Debug */ = { + A1C3B72ACDA6B8C3E1CF9DB200F42136 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E04AF0F5819D17377992571693C493A3 /* SnapKit.xcconfig */; + baseConfigurationReference = 63E5DFCC48690BED3E141E2FA608E2D8 /* VIMediaCache.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/VIMediaCache/VIMediaCache-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/VIMediaCache/VIMediaCache-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/VIMediaCache/VIMediaCache.modulemap"; + PRODUCT_MODULE_NAME = VIMediaCache; + PRODUCT_NAME = VIMediaCache; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B01D14FDC83DCF9D4BE53066BEA96D05 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapKit/Info.plist"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + B14F2ED81E053908F82AD9B50B21A9F4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E5BB94C9FCF1878E042576912BA36177 /* BMPlayer.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/BMPlayer/BMPlayer-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/BMPlayer/BMPlayer-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SnapKit; + MODULEMAP_FILE = "Target Support Files/BMPlayer/BMPlayer.modulemap"; + PRODUCT_MODULE_NAME = BMPlayer; + PRODUCT_NAME = BMPlayer; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - AD3748558C9E777AB9B970457CC6288F /* Release */ = { + D312B88629F20BE3C5C94E4FAD7F2D92 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08620D5D03A8F110592B3633EAA7EF9E /* VIMediaCache.xcconfig */; + baseConfigurationReference = CF7DAB0A6E90A1A207B58A2B0ED0D5DE /* SwipeBack.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/VIMediaCache/VIMediaCache-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/VIMediaCache/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SwipeBack/SwipeBack-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwipeBack/SwipeBack-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/VIMediaCache/VIMediaCache.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = VIMediaCache; + MODULEMAP_FILE = "Target Support Files/SwipeBack/SwipeBack.modulemap"; + PRODUCT_MODULE_NAME = SwipeBack; + PRODUCT_NAME = SwipeBack; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - FEED8B776B191F1C4A7D7EAF5B751080 /* Release */ = { + DFAA7E9D36DABCB948DB1B0ABE0F2D3E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8EFACF06F3BCEFFB08EC9E99A02B2303 /* BMPlayer.xcconfig */; + baseConfigurationReference = 63E5DFCC48690BED3E141E2FA608E2D8 /* VIMediaCache.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/BMPlayer/BMPlayer-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BMPlayer/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/VIMediaCache/VIMediaCache-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/VIMediaCache/VIMediaCache-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BMPlayer/BMPlayer.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = BMPlayer; + MODULEMAP_FILE = "Target Support Files/VIMediaCache/VIMediaCache.modulemap"; + PRODUCT_MODULE_NAME = VIMediaCache; + PRODUCT_NAME = VIMediaCache; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; @@ -1740,70 +1787,70 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 17D9CEC326A2B6BB4063EF2A7C608D15 /* Build configuration list for PBXNativeTarget "BMPlayer" */ = { + 0B75D215F6B081C52CFF3F5A0C8B927E /* Build configuration list for PBXNativeTarget "SnapKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8C66126D17B008C353A73F19A0D64542 /* Debug */, - FEED8B776B191F1C4A7D7EAF5B751080 /* Release */, + 4FBCFF4981937786519BDE767A6B0AFF /* Debug */, + 2AB7344DC482409277AFE37060909F2E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 18410F37AE112B81660407C6AEF68B80 /* Build configuration list for PBXNativeTarget "NVActivityIndicatorView" */ = { + 1E996643EC5AF706CFF04E6447AC1D36 /* Build configuration list for PBXNativeTarget "SwipeBack" */ = { isa = XCConfigurationList; buildConfigurations = ( - 123A51DC18176ACCCC90C0C164047506 /* Debug */, - 1912C0FF3BA6508691BE003F036F507A /* Release */, + 6C051EBA0B72F422C53E5A01577E432C /* Debug */, + D312B88629F20BE3C5C94E4FAD7F2D92 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1C7D17A37D091C98D2F0DD886C3A9320 /* Debug */, - 34FE9531DA9AF2820790339988D5FF41 /* Release */, + 196DFA3E4A09A28224918543529A1885 /* Debug */, + B01D14FDC83DCF9D4BE53066BEA96D05 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4B5796F6EE354BDD75045E278810A063 /* Build configuration list for PBXNativeTarget "VIMediaCache" */ = { + 4C278B7EABBF266836B9A63BBA3E70C2 /* Build configuration list for PBXNativeTarget "Pods-BMPlayer_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4F581DC618EB5BACDDFD1B03CA3D8BA5 /* Debug */, - AD3748558C9E777AB9B970457CC6288F /* Release */, + 5D4E45F1AA7603D939909DEF5056A293 /* Debug */, + 29DC958BE0D809DAD7A13AE828FCED39 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9BE98B47220647234E7F830DC49B1433 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { + 850CFFCF728B2D1A7BC128409C8B6F81 /* Build configuration list for PBXNativeTarget "NVActivityIndicatorView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 93A63B97E778808231846780EC6E33CB /* Debug */, - 73F38279D85974D49CCC25EAD3C285D8 /* Release */, + A000B467DE14CA69EA7022692CA6B3D5 /* Debug */, + 8B1ED5E77D9E8EB173724DC758524A17 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CD299B492A55FE90165E73616B751B4B /* Build configuration list for PBXNativeTarget "Pods-BMPlayer_Example" */ = { + 9901E6E955B82F20DDB9959306CE1A86 /* Build configuration list for PBXNativeTarget "VIMediaCache" */ = { isa = XCConfigurationList; buildConfigurations = ( - 14FD6561B21BC52191897D67B5CC2EC3 /* Debug */, - 4BA9860AC8D3944EEBAD068034AB7408 /* Release */, + A1C3B72ACDA6B8C3E1CF9DB200F42136 /* Debug */, + DFAA7E9D36DABCB948DB1B0ABE0F2D3E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D7C88340194313CD90648B62C1E4CCC3 /* Build configuration list for PBXNativeTarget "SwipeBack" */ = { + EBF0C2914948CE86120A1C460852E009 /* Build configuration list for PBXNativeTarget "BMPlayer" */ = { isa = XCConfigurationList; buildConfigurations = ( - 47377373B8B0BE08361608AA2CA8D142 /* Debug */, - 84C76C38E03FE7B9F4FC64D133AE4A79 /* Release */, + 73FC6BFC4361733BFEF7425B95CF3460 /* Debug */, + B14F2ED81E053908F82AD9B50B21A9F4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/Pods/Reveal-SDK/RevealServer-11/LICENSE.md b/Example/Pods/Reveal-SDK/RevealServer-11/LICENSE.md deleted file mode 100644 index 859006a..0000000 --- a/Example/Pods/Reveal-SDK/RevealServer-11/LICENSE.md +++ /dev/null @@ -1,157 +0,0 @@ -# REVEAL LICENSE AGREEMENT v2.0 - -## NOTICE TO USER: - -This is a legally enforceable agreement between you (__"you"__ or __"yours"__ and other grammatical equivalents) and Itty Bitty Apps Pty. Ltd. (__"the Company"__), which covers your use of the Reveal software product that accompanies this Agreement and related software components, which may include associated media, printed materials, and "online" or electronic documentation. All such software and materials are referred to herein as the __"Software"__ or __"the Reveal Software"__. If you do not agree to the terms of this License Agreement, then do not install or use the Software. By explicitly accepting this License Agreement, or by installing, copying, downloading, accessing, or otherwise using the Software, you are acknowledging and agreeing to be bound by the following terms: - -## 1. DEFINITIONS - -__(a) "Software"__ shall mean the Reveal software including any Updates thereto, in object and source form, and the media and Documentation provided by the Company to you and for which you are granted a license pursuant to this Agreement. - -__(b) "Documentation"__ shall mean the printed or online written reference material furnished to you in conjunction with the Software, including, without limitation, instructions, guidelines, and end user guides. - -__(c) "Intellectual Property Rights"__ shall mean all intellectual property rights, including, without limitation, patent, copyright, trademark, and trade secret. - -__(d) "Updates"__ shall mean a modification, error correction, bug fix, new release, or other update to or for the Software. - - -## 2. LICENSE GRANT - -The Company may, at its sole discretion, grant you a Trial License, a Personal License, a Commercial Seat License, a Site License or an Enterprise License. - -If you have not purchased or otherwise rightfully obtained a Personal License, a Commercial Seat License, a Site License or an Enterprise License for the Reveal Software, the Trial License Terms (2.1) are applicable to your use of the Reveal Software. The Trial License Terms are also applicable to any usage of the Reveal Software by you that is not covered under any other licenses you may have. - -The Personal License Terms (2.2) apply if you have a Personal License. The Commercial Seat License Terms (2.3) apply if you have a Commercial Seat License. The Site License Terms (2.4) apply if you have a Site License. The Enterprise License Terms (2.5) apply if you have an Enterprise License. - -The General Terms (3) apply in all cases. - -### 2.1 TRIAL LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software for time-limited evaluation purposes, only in accordance with the terms and conditions set forth herein. The Software may be used for a period of 14 calendar days from the time of activation. Upon lapse of such trial period all of or part of the functionality of the Software will be disabled automatically. - -If you wish to use the Software after the trial period, you must purchase a Personal License, a Commercial Seat License, a Site License or an Enterprise License. The Company may extend to you an expiring license key, in which event such a license key will be considered a means to extend the trial period under the Trial License Terms. - - -### 2.2 PERSONAL LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License grants you the right to activate and use the Software on no more than 2 computers primarily used by you. Use of the Software under this license may be for both commercial and non-commercial purposes. Personal licences are not available to companies, commercial institutions, government agencies or business entities. - - -### 2.3 COMMERCIAL SEAT LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. A Commercial Seat License must be purchased for every person employed by you or employed by any fully owned subsidiary of yours wishing to use the Software. - -This license is granted exclusively on a per-employee basis within your organisation and is not transferable to another current employee without written permission. This License grants the right to activate and use the Software on no more than 2 computers used by the employee. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into a Commercial Seat License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -### 2.4 SITE LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. - -Unless otherwise specified, any Site License you acquire from the Company is valid only for use at the business locations listed on your sales invoice. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into a Site License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -### 2.5 ENTERPRISE LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. - -This License allows global use of the Software by all employees or employees of any fully owned subsidiary of the company, commercial institution, government agency or business entity listed in your sales invoice. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into an Enterprise License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -## 3. GENERAL TERMS - -### 3.1 TITLE - -‘REVEAL’™ and ‘ITTY BITTY APPS’™ represent proprietary common law trademarks owned by the Company and must not be used without written permission. - -The Company shall own and retain all right, title and interest in and to all Intellectual Property Rights related to the Software, the Documentation and all improvements to any of them however so created. You do not acquire any other rights, express or implied, in the Software. ALL RIGHTS NOT EXPRESSLY GRANTED HEREUNDER ARE RESERVED TO THE COMPANY. - -### 3.2 ARCHIVAL OR BACKUP COPIES - -You may copy the Software for backup and archival purposes only, provided that the original and each copy is kept in your possession and that your installation and use of the Software does not exceed that allowed in the "License Grant" section above. - -### 3.3 THINGS YOU MUST NOT DO - -The Software and Documentation are protected by Australian and international copyright law. You must treat the Software and Documentation like any other copyrighted material—for example, a book. You may not: - -* copy the Documentation, -* copy the Software except to make archival or backup copies as provided above, -* modify or adapt the Software or merge it into another program, -* reverse engineer, disassemble, decompile or make any attempt to discover the source code of the Software, -* place the Software onto a server so that it is accessible via a public network such as the Internet, or -* sublicense, rent, lease, sublicense or lend any portion of the Software or Documentation. - -### 3.4 LIMITATION OF LICENSE VALIDITY - -Any License to use the Software granted to you under this License Agreement is limited to the release of the Software available at the time of purchase plus all releases of the Software for 12 months from the time of purchase exclusively. The Company reserves the right to change the terms of this agreement in any future major or minor release of the software. - -### 3.5 ONLINE ACTIVATION - -The Software requires activation in order to use it under the terms of this agreement. If you do not activate the Software, all of or part of the functionality of the Software will disable automatically. The Company may at its sole discretion decide to adjust the exact technical conditions under which unactivated copies of the Software cease to work. You need an active, functional internet connection to activate your copy of the Software. Your licensed use of the Software is bound to the computer(s) you used to complete activation. You may need to reactivate your copy of the Software after replacing the logic board or otherwise changing the hardware configuration of your computer. You may need to contact the Company to complete reactivation. - -### 3.6 ADDITIONAL SERVICES - -Fees may apply for additional services and products offered by the company and others, such as services that integrate with the Software or extend the functionality of the Software. - -### 3.7 TECHNICAL AND RELATED INFORMATION - -The Company and its subsidiaries may collect and use technical and related information, such as technical information concerning your computer, system and application software. The Company does not collect (a) any information that identifies your work, (b) any file names or file contents of anything you work on using the Software. The Company and its subsidiaries are free to use the collected information in any form that does not personally identify you. - -### 3.8 PRIVACY - -The Company will not sell or in any way license usage of your personal information to third parties. The Company will make reasonable efforts to keep your personal information secure. - -### 3.9 TRANSFERS - -With prior notice to the Company, you may transfer all your rights to use the Software and Documentation only once and permanently to another person or legal entity provided you transfer this License Agreement, the Software and Documentation, including all copies, updates and prior versions to such person or entity and that you retain no copies, including copies stored on computer. The receiving person or legal entity must satisfy the conditions of the applicable license terms set out in section 2. - -### 3.10 LIMITED WARRANTY - -We warrant that for a period of 14 days after delivery of this copy of the Software to you the Software will perform in substantial accordance with the Documentation. - -To the extent permitted by applicable law, THE FOREGOING LIMITED WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES OR CONDITIONS, EXPRESS OR IMPLIED, AND WE DISCLAIM ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS, INCLUDING ANY IMPLIED WARRANTY OF TITLE, NONINFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, regardless of whether we know or had reason to know of your particular needs. No employee, agent, dealer or distributor of ours is authorized to modify this limited warranty, nor to make any additional warranties. -SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. - -### 3.11 LIMITED REMEDY - -Our entire liability and your exclusive remedy for breach of the foregoing warranty shall be, at our option, to return the price you paid minus fees incurred to transfer those funds to you. - -IN NO EVENT WILL WE BE LIABLE TO YOU FOR ANY DIRECT OR INDIRECT DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING FROM THE USE OR THE INABILITY TO USE THE SOFTWARE (EVEN IF WE OR AN AUTHORIZED DEALER OR DISTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF THESE DAMAGES), OR FOR ANY CLAIM BY ANY OTHER PARTY. -SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. - -### 3.12 TERM AND TERMINATION - -This license agreement takes effect upon your use of the software and remains effective until terminated. You may terminate it at any time by destroying all copies of the Software and Documentation in your possession. It will also automatically terminate if you fail to comply with any term or condition of this license agreement. You hereby agree that on termination of this license to permanently destroy all copies of the Software and Documentation in your possession. - -### 3.13 CONFIDENTIALITY - -The Software contains trade secrets and proprietary know-how that belong to the Company and it is being made available to you in strict confidence. ANY USE OR DISCLOSURE OF THE SOFTWARE, OR OF ITS ALGORITHMS, PROTOCOLS OR INTERFACES, OTHER THAN IN STRICT ACCORDANCE WITH THIS LICENSE AGREEMENT, MAY BE ACTIONABLE AS A VIOLATION OF THE COMPANY'S TRADE SECRET RIGHTS. - -### 3.14 GENERAL PROVISIONS - -__3.14.1__ This written license agreement is the exclusive agreement between you and the Company concerning the Software and Documentation and supersedes any prior purchase order, communication, advertising or representation concerning the Software. - -__3.14.2__ This is the entire agreement between the parties relating to the subject matter hereof and all other terms are rejected. No waiver or modification of this Agreement shall be valid unless in writing signed by each party. The waiver of a breach of any term hereof shall in no way be construed as a waiver of any term or other breach hereof. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law the remaining provisions of this Agreement shall remain in full force and effect. - -__3.14.3__ In the event of litigation between you and the Company concerning the Software or Documentation, the prevailing party in the litigation will be entitled to recover attorney fees and expenses from the other party. - -__3.14.4__ This Agreement, and all disputes arising out of or related thereto, shall be governed by and construed under the laws of the State of Victoria, Australia, without reference to conflict of laws principles. All such disputes shall be subject to the exclusive jurisdiction of the state and federal courts located in Australia, and the parties agree and submit to the personal and exclusive jurisdiction and venue of these courts. - - -## 4. CONTACT INFORMATION - -If you have any questions about this License Agreement, or if you want to contact the Company for any reason, please direct all mail correspondence to: Itty Bitty Apps Pty. Ltd. Level 6, 84 William St, Melbourne, Victoria, Australia, 3000, or electronic correspondence to info@ittybittyapps.com. - -Do you agree to be bound by the terms of this agreement? \ No newline at end of file diff --git a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Headers/RevealServer.h b/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Headers/RevealServer.h deleted file mode 100644 index f6296a2..0000000 --- a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Headers/RevealServer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// RevealServer.h -// RevealServer -// -// Created by Tony Arnold on 25/11/2015. -// Copyright © 2015 Itty Bitty Apps, Pty Ltd. All rights reserved. -// - -#import - -//! Project version number for RevealServer. -FOUNDATION_EXPORT double RevealServerVersionNumber; - -//! Project version string for RevealServer. -FOUNDATION_EXPORT const unsigned char RevealServerVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Info.plist b/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Info.plist deleted file mode 100644 index 0bd3400..0000000 --- a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Info.plist +++ /dev/null @@ -1,52 +0,0 @@ - - - - - BuildMachineOSBuild - 16G29 - CFBundleDevelopmentRegion - en - CFBundleExecutable - RevealServer - CFBundleIdentifier - com.ittybittyapps.RevealServer - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - RevealServer - CFBundlePackageType - FMWK - CFBundleShortVersionString - 11 - CFBundleSignature - ???? - CFBundleSupportedPlatforms - - iPhoneOS - - CFBundleVersion - 9959 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 15A372 - DTPlatformName - iphoneos - DTPlatformVersion - 11.0 - DTSDKBuild - 15A372 - DTSDKName - iphoneos11.0 - DTXcode - 0900 - DTXcodeBuild - 9A235 - MinimumOSVersion - 8.0 - UIDeviceFamily - - 1 - - - diff --git a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Modules/module.modulemap b/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Modules/module.modulemap deleted file mode 100644 index 8b2d46c..0000000 --- a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module RevealServer { - umbrella header "RevealServer.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/RevealServer b/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/RevealServer deleted file mode 100755 index bf986fd..0000000 Binary files a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/RevealServer and /dev/null differ diff --git a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Scripts/copy_and_codesign_revealserver.sh b/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Scripts/copy_and_codesign_revealserver.sh deleted file mode 100755 index 5be5670..0000000 --- a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/Scripts/copy_and_codesign_revealserver.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash -set -o errexit -set -o nounset - -# Ensure that we have a valid OTHER_LDFLAGS environment variable -OTHER_LDFLAGS=${OTHER_LDFLAGS:=""} - -# Ensure that we have a valid REVEAL_SERVER_FILENAME environment variable -REVEAL_SERVER_FILENAME=${REVEAL_SERVER_FILENAME:="RevealServer.framework"} - -# Ensure that we have a valid REVEAL_SERVER_PATH environment variable -REVEAL_SERVER_PATH=${REVEAL_SERVER_PATH:="${SRCROOT}/${REVEAL_SERVER_FILENAME}"} - -# The path to copy the framework to -app_frameworks_dir="${CODESIGNING_FOLDER_PATH}/Frameworks" - -copy_library() { - mkdir -p "$app_frameworks_dir" - cp -vRf "$REVEAL_SERVER_PATH" "${app_frameworks_dir}/" -} - -codesign_library() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" ]; then - codesign -fs "${EXPANDED_CODE_SIGN_IDENTITY}" "${app_frameworks_dir}/${REVEAL_SERVER_FILENAME}" - fi -} - -main() { - if [[ $OTHER_LDFLAGS =~ "RevealServer" ]]; then - if [ -e "$REVEAL_SERVER_PATH" ]; then - copy_library - codesign_library - echo "${REVEAL_SERVER_FILENAME} is included in this build, and has been copied to $CODESIGNING_FOLDER_PATH" - else - echo "${REVEAL_SERVER_FILENAME} is not included in this build, as it could not be found at $REVEAL_SERVER_PATH" - fi - else - echo "${REVEAL_SERVER_FILENAME} is not included in this build because RevealServer was not present in the OTHER_LDFLAGS environment variable." - fi -} - -main diff --git a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/_CodeSignature/CodeResources b/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/_CodeSignature/CodeResources deleted file mode 100644 index 895a7bf..0000000 --- a/Example/Pods/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework/_CodeSignature/CodeResources +++ /dev/null @@ -1,166 +0,0 @@ - - - - - files - - Headers/RevealServer.h - - e2S6Vuf8iJXurblvYWL8e3IMO7E= - - Info.plist - - ZiLGXrsRBUI3wcOs0qWX+KzelCg= - - Modules/module.modulemap - - EuDEeG1dcC1sd+hIW2SkUAImUg8= - - Scripts/copy_and_codesign_revealserver.sh - - yB2zXTggmRD0rra2Hbpxn2zfCRo= - - - files2 - - Headers/RevealServer.h - - hash - - e2S6Vuf8iJXurblvYWL8e3IMO7E= - - hash2 - - i4zuiS2fsgwsoicYEzHuBx32JYfKW38gkopt/7FdINY= - - - Modules/module.modulemap - - hash - - EuDEeG1dcC1sd+hIW2SkUAImUg8= - - hash2 - - tstqiJpIPr4iEd3MDHClLuTB/ciSC/zNlke1AjfSVuU= - - - Scripts/copy_and_codesign_revealserver.sh - - hash - - yB2zXTggmRD0rra2Hbpxn2zfCRo= - - hash2 - - SL0x5cGSOyS1RcojHFEmFX5IDfon/vO37cFsjSIX7LA= - - - - rules - - ^ - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^ - - weight - 20 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/Example/Pods/SnapKit/Source/Constraint.swift b/Example/Pods/SnapKit/Source/Constraint.swift index 2720745..dc2c7c8 100644 --- a/Example/Pods/SnapKit/Source/Constraint.swift +++ b/Example/Pods/SnapKit/Source/Constraint.swift @@ -49,12 +49,23 @@ public final class Constraint { public var layoutConstraints: [LayoutConstraint] public var isActive: Bool { - for layoutConstraint in self.layoutConstraints { - if layoutConstraint.isActive { - return true + set { + if newValue { + activate() + } + else { + deactivate() + } + } + + get { + for layoutConstraint in self.layoutConstraints { + if layoutConstraint.isActive { + return true + } } + return false } - return false } // MARK: Initialization @@ -178,12 +189,12 @@ public final class Constraint { // MARK: Public - @available(*, deprecated:3.0, message:"Use activate().") + @available(*, deprecated, message:"Use activate().") public func install() { self.activate() } - @available(*, deprecated:3.0, message:"Use deactivate().") + @available(*, deprecated, message:"Use deactivate().") public func uninstall() { self.deactivate() } @@ -214,25 +225,31 @@ public final class Constraint { return self } - @available(*, deprecated:3.0, message:"Use update(offset: ConstraintOffsetTarget) instead.") + @discardableResult + public func update(priority: ConstraintPriority) -> Constraint { + self.priority = priority.value + return self + } + + @available(*, deprecated, message:"Use update(offset: ConstraintOffsetTarget) instead.") public func updateOffset(amount: ConstraintOffsetTarget) -> Void { self.update(offset: amount) } - @available(*, deprecated:3.0, message:"Use update(inset: ConstraintInsetTarget) instead.") + @available(*, deprecated, message:"Use update(inset: ConstraintInsetTarget) instead.") public func updateInsets(amount: ConstraintInsetTarget) -> Void { self.update(inset: amount) } - @available(*, deprecated:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") public func updatePriority(amount: ConstraintPriorityTarget) -> Void { self.update(priority: amount) } - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") public func updatePriorityRequired() -> Void {} - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") public func updatePriorityHigh() -> Void { fatalError("Must be implemented by Concrete subclass.") } - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") public func updatePriorityMedium() -> Void { fatalError("Must be implemented by Concrete subclass.") } - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") + @available(*, deprecated, message:"Use update(priority: ConstraintPriorityTarget) instead.") public func updatePriorityLow() -> Void { fatalError("Must be implemented by Concrete subclass.") } // MARK: Internal diff --git a/Example/Pods/SnapKit/Source/ConstraintAttributes.swift b/Example/Pods/SnapKit/Source/ConstraintAttributes.swift index 10bddb1..5e2367e 100644 --- a/Example/Pods/SnapKit/Source/ConstraintAttributes.swift +++ b/Example/Pods/SnapKit/Source/ConstraintAttributes.swift @@ -28,7 +28,9 @@ #endif -internal struct ConstraintAttributes : OptionSet { +internal struct ConstraintAttributes : OptionSet, ExpressibleByIntegerLiteral { + + typealias IntegerLiteralType = UInt internal init(rawValue: UInt) { self.rawValue = rawValue @@ -39,10 +41,13 @@ internal struct ConstraintAttributes : OptionSet { internal init(nilLiteral: ()) { self.rawValue = 0 } + internal init(integerLiteral rawValue: IntegerLiteralType) { + self.init(rawValue: rawValue) + } internal private(set) var rawValue: UInt - internal static var allZeros: ConstraintAttributes { return self.init(0) } - internal static func convertFromNilLiteral() -> ConstraintAttributes { return self.init(0) } + internal static var allZeros: ConstraintAttributes { return 0 } + internal static func convertFromNilLiteral() -> ConstraintAttributes { return 0 } internal var boolValue: Bool { return self.rawValue != 0 } internal func toRaw() -> UInt { return self.rawValue } @@ -51,57 +56,57 @@ internal struct ConstraintAttributes : OptionSet { // normal - internal static var none: ConstraintAttributes { return self.init(0) } - internal static var left: ConstraintAttributes { return self.init(1) } - internal static var top: ConstraintAttributes { return self.init(2) } - internal static var right: ConstraintAttributes { return self.init(4) } - internal static var bottom: ConstraintAttributes { return self.init(8) } - internal static var leading: ConstraintAttributes { return self.init(16) } - internal static var trailing: ConstraintAttributes { return self.init(32) } - internal static var width: ConstraintAttributes { return self.init(64) } - internal static var height: ConstraintAttributes { return self.init(128) } - internal static var centerX: ConstraintAttributes { return self.init(256) } - internal static var centerY: ConstraintAttributes { return self.init(512) } - internal static var lastBaseline: ConstraintAttributes { return self.init(1024) } + internal static var none: ConstraintAttributes { return 0 } + internal static var left: ConstraintAttributes { return 1 } + internal static var top: ConstraintAttributes { return 2 } + internal static var right: ConstraintAttributes { return 4 } + internal static var bottom: ConstraintAttributes { return 8 } + internal static var leading: ConstraintAttributes { return 16 } + internal static var trailing: ConstraintAttributes { return 32 } + internal static var width: ConstraintAttributes { return 64 } + internal static var height: ConstraintAttributes { return 128 } + internal static var centerX: ConstraintAttributes { return 256 } + internal static var centerY: ConstraintAttributes { return 512 } + internal static var lastBaseline: ConstraintAttributes { return 1024 } @available(iOS 8.0, OSX 10.11, *) - internal static var firstBaseline: ConstraintAttributes { return self.init(2048) } + internal static var firstBaseline: ConstraintAttributes { return 2048 } @available(iOS 8.0, *) - internal static var leftMargin: ConstraintAttributes { return self.init(4096) } + internal static var leftMargin: ConstraintAttributes { return 4096 } @available(iOS 8.0, *) - internal static var rightMargin: ConstraintAttributes { return self.init(8192) } + internal static var rightMargin: ConstraintAttributes { return 8192 } @available(iOS 8.0, *) - internal static var topMargin: ConstraintAttributes { return self.init(16384) } + internal static var topMargin: ConstraintAttributes { return 16384 } @available(iOS 8.0, *) - internal static var bottomMargin: ConstraintAttributes { return self.init(32768) } + internal static var bottomMargin: ConstraintAttributes { return 32768 } @available(iOS 8.0, *) - internal static var leadingMargin: ConstraintAttributes { return self.init(65536) } + internal static var leadingMargin: ConstraintAttributes { return 65536 } @available(iOS 8.0, *) - internal static var trailingMargin: ConstraintAttributes { return self.init(131072) } + internal static var trailingMargin: ConstraintAttributes { return 131072 } @available(iOS 8.0, *) - internal static var centerXWithinMargins: ConstraintAttributes { return self.init(262144) } + internal static var centerXWithinMargins: ConstraintAttributes { return 262144 } @available(iOS 8.0, *) - internal static var centerYWithinMargins: ConstraintAttributes { return self.init(524288) } + internal static var centerYWithinMargins: ConstraintAttributes { return 524288 } // aggregates - internal static var edges: ConstraintAttributes { return self.init(15) } - internal static var size: ConstraintAttributes { return self.init(192) } - internal static var center: ConstraintAttributes { return self.init(768) } + internal static var edges: ConstraintAttributes { return 15 } + internal static var size: ConstraintAttributes { return 192 } + internal static var center: ConstraintAttributes { return 768 } @available(iOS 8.0, *) - internal static var margins: ConstraintAttributes { return self.init(61440) } + internal static var margins: ConstraintAttributes { return 61440 } @available(iOS 8.0, *) - internal static var centerWithinMargins: ConstraintAttributes { return self.init(786432) } + internal static var centerWithinMargins: ConstraintAttributes { return 786432 } internal var layoutAttributes:[LayoutAttribute] { var attrs = [LayoutAttribute]() diff --git a/Example/Pods/SnapKit/Source/ConstraintConstantTarget.swift b/Example/Pods/SnapKit/Source/ConstraintConstantTarget.swift index bc6d596..24052ae 100644 --- a/Example/Pods/SnapKit/Source/ConstraintConstantTarget.swift +++ b/Example/Pods/SnapKit/Source/ConstraintConstantTarget.swift @@ -82,7 +82,11 @@ extension ConstraintConstantTarget { return value.y case .width, .height, .notAnAttribute: return 0.0 - } + #if swift(>=5.0) + @unknown default: + return 0.0 + #endif + } #else switch layoutAttribute { case .left, .right, .leading, .trailing, .centerX: @@ -91,53 +95,73 @@ extension ConstraintConstantTarget { return value.y case .width, .height, .notAnAttribute: return 0.0 - } + #if swift(>=5.0) + @unknown default: + return 0.0 + #endif + } #endif } if let value = self as? ConstraintInsets { #if os(iOS) || os(tvOS) switch layoutAttribute { - case .left, .leftMargin, .centerX, .centerXWithinMargins: + case .left, .leftMargin: return value.left - case .top, .topMargin, .centerY, .centerYWithinMargins, .lastBaseline, .firstBaseline: + case .top, .topMargin, .firstBaseline: return value.top case .right, .rightMargin: return -value.right - case .bottom, .bottomMargin: + case .bottom, .bottomMargin, .lastBaseline: return -value.bottom case .leading, .leadingMargin: return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right case .trailing, .trailingMargin: return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left + case .centerX, .centerXWithinMargins: + return (value.left - value.right) / 2 + case .centerY, .centerYWithinMargins: + return (value.top - value.bottom) / 2 case .width: return -(value.left + value.right) case .height: return -(value.top + value.bottom) case .notAnAttribute: return 0.0 - } + #if swift(>=5.0) + @unknown default: + return 0.0 + #endif + } #else switch layoutAttribute { - case .left, .centerX: + case .left: return value.left - case .top, .centerY, .lastBaseline, .firstBaseline: + case .top, .firstBaseline: return value.top case .right: return -value.right - case .bottom: + case .bottom, .lastBaseline: return -value.bottom case .leading: return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right case .trailing: return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left + case .centerX: + return (value.left - value.right) / 2 + case .centerY: + return (value.top - value.bottom) / 2 case .width: return -(value.left + value.right) case .height: return -(value.top + value.bottom) case .notAnAttribute: return 0.0 - } + #if swift(>=5.0) + @unknown default: + return 0.0 + #endif + } #endif } diff --git a/Example/Pods/SnapKit/Source/ConstraintDSL.swift b/Example/Pods/SnapKit/Source/ConstraintDSL.swift index a7e1798..b7aad57 100644 --- a/Example/Pods/SnapKit/Source/ConstraintDSL.swift +++ b/Example/Pods/SnapKit/Source/ConstraintDSL.swift @@ -115,7 +115,7 @@ extension ConstraintAttributesDSL { // MARK: Baselines - @available(*, deprecated:3.0, message:"Use .lastBaseline instead") + @available(*, deprecated, message:"Use .lastBaseline instead") public var baseline: ConstraintItem { return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline) } diff --git a/Example/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift b/Example/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift index c2d9e9d..d429e0c 100644 --- a/Example/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift +++ b/Example/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift @@ -29,7 +29,7 @@ @available(iOS 9.0, OSX 10.11, *) public extension ConstraintLayoutGuide { - public var snp: ConstraintLayoutGuideDSL { + var snp: ConstraintLayoutGuideDSL { return ConstraintLayoutGuideDSL(guide: self) } diff --git a/Example/Pods/SnapKit/Source/ConstraintMaker.swift b/Example/Pods/SnapKit/Source/ConstraintMaker.swift index b20cdb5..ed2879b 100644 --- a/Example/Pods/SnapKit/Source/ConstraintMaker.swift +++ b/Example/Pods/SnapKit/Source/ConstraintMaker.swift @@ -69,7 +69,7 @@ public class ConstraintMaker { return self.makeExtendableWithAttributes(.centerY) } - @available(*, deprecated:3.0, message:"Use lastBaseline instead") + @available(*, deprecated, message:"Use lastBaseline instead") public var baseline: ConstraintMakerExtendable { return self.makeExtendableWithAttributes(.lastBaseline) } @@ -171,15 +171,7 @@ public class ConstraintMaker { } internal static func makeConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { - let maker = ConstraintMaker(item: item) - closure(maker) - var constraints: [Constraint] = [] - for description in maker.descriptions { - guard let constraint = description.constraint else { - continue - } - constraints.append(constraint) - } + let constraints = prepareConstraints(item: item, closure: closure) for constraint in constraints { constraint.activateIfNeeded(updatingExisting: false) } @@ -196,15 +188,7 @@ public class ConstraintMaker { return } - let maker = ConstraintMaker(item: item) - closure(maker) - var constraints: [Constraint] = [] - for description in maker.descriptions { - guard let constraint = description.constraint else { - continue - } - constraints.append(constraint) - } + let constraints = prepareConstraints(item: item, closure: closure) for constraint in constraints { constraint.activateIfNeeded(updatingExisting: true) } diff --git a/Example/Pods/SnapKit/Source/ConstraintMakerExtendable.swift b/Example/Pods/SnapKit/Source/ConstraintMakerExtendable.swift index 6a755b5..243e54e 100644 --- a/Example/Pods/SnapKit/Source/ConstraintMakerExtendable.swift +++ b/Example/Pods/SnapKit/Source/ConstraintMakerExtendable.swift @@ -80,7 +80,7 @@ public class ConstraintMakerExtendable: ConstraintMakerRelatable { return self } - @available(*, deprecated:3.0, message:"Use lastBaseline instead") + @available(*, deprecated, message:"Use lastBaseline instead") public var baseline: ConstraintMakerExtendable { self.description.attributes += .lastBaseline return self diff --git a/Example/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift b/Example/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift index ef79448..e0d452d 100644 --- a/Example/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift +++ b/Example/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift @@ -42,25 +42,25 @@ public class ConstraintMakerPriortizable: ConstraintMakerFinalizable { return self } - @available(*, deprecated:3.0, message:"Use priority(.required) instead.") + @available(*, deprecated, message:"Use priority(.required) instead.") @discardableResult public func priorityRequired() -> ConstraintMakerFinalizable { return self.priority(.required) } - @available(*, deprecated:3.0, message:"Use priority(.high) instead.") + @available(*, deprecated, message:"Use priority(.high) instead.") @discardableResult public func priorityHigh() -> ConstraintMakerFinalizable { return self.priority(.high) } - @available(*, deprecated:3.0, message:"Use priority(.medium) instead.") + @available(*, deprecated, message:"Use priority(.medium) instead.") @discardableResult public func priorityMedium() -> ConstraintMakerFinalizable { return self.priority(.medium) } - @available(*, deprecated:3.0, message:"Use priority(.low) instead.") + @available(*, deprecated, message:"Use priority(.low) instead.") @discardableResult public func priorityLow() -> ConstraintMakerFinalizable { return self.priority(.low) diff --git a/Example/Pods/SnapKit/Source/ConstraintPriorityTarget.swift b/Example/Pods/SnapKit/Source/ConstraintPriorityTarget.swift index eb32f79..064f750 100644 --- a/Example/Pods/SnapKit/Source/ConstraintPriorityTarget.swift +++ b/Example/Pods/SnapKit/Source/ConstraintPriorityTarget.swift @@ -73,3 +73,13 @@ extension CGFloat: ConstraintPriorityTarget { } } + +#if os(iOS) || os(tvOS) +extension UILayoutPriority: ConstraintPriorityTarget { + + public var constraintPriorityTargetValue: Float { + return self.rawValue + } + +} +#endif diff --git a/Example/Pods/SnapKit/Source/ConstraintView+Extensions.swift b/Example/Pods/SnapKit/Source/ConstraintView+Extensions.swift index 77afad9..a4898dc 100644 --- a/Example/Pods/SnapKit/Source/ConstraintView+Extensions.swift +++ b/Example/Pods/SnapKit/Source/ConstraintView+Extensions.swift @@ -30,122 +30,122 @@ public extension ConstraintView { - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_left: ConstraintItem { return self.snp.left } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_left: ConstraintItem { return self.snp.left } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_top: ConstraintItem { return self.snp.top } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_top: ConstraintItem { return self.snp.top } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_right: ConstraintItem { return self.snp.right } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_right: ConstraintItem { return self.snp.right } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_bottom: ConstraintItem { return self.snp.bottom } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_bottom: ConstraintItem { return self.snp.bottom } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_leading: ConstraintItem { return self.snp.leading } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_leading: ConstraintItem { return self.snp.leading } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_trailing: ConstraintItem { return self.snp.trailing } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_trailing: ConstraintItem { return self.snp.trailing } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_width: ConstraintItem { return self.snp.width } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_width: ConstraintItem { return self.snp.width } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_height: ConstraintItem { return self.snp.height } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_height: ConstraintItem { return self.snp.height } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_centerX: ConstraintItem { return self.snp.centerX } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_centerX: ConstraintItem { return self.snp.centerX } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_centerY: ConstraintItem { return self.snp.centerY } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_centerY: ConstraintItem { return self.snp.centerY } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_baseline: ConstraintItem { return self.snp.baseline } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_baseline: ConstraintItem { return self.snp.baseline } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(*, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, OSX 10.11, *) - public var snp_lastBaseline: ConstraintItem { return self.snp.lastBaseline } + var snp_lastBaseline: ConstraintItem { return self.snp.lastBaseline } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, OSX 10.11, *) - public var snp_firstBaseline: ConstraintItem { return self.snp.firstBaseline } + var snp_firstBaseline: ConstraintItem { return self.snp.firstBaseline } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_leftMargin: ConstraintItem { return self.snp.leftMargin } + var snp_leftMargin: ConstraintItem { return self.snp.leftMargin } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_topMargin: ConstraintItem { return self.snp.topMargin } + var snp_topMargin: ConstraintItem { return self.snp.topMargin } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_rightMargin: ConstraintItem { return self.snp.rightMargin } + var snp_rightMargin: ConstraintItem { return self.snp.rightMargin } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_bottomMargin: ConstraintItem { return self.snp.bottomMargin } + var snp_bottomMargin: ConstraintItem { return self.snp.bottomMargin } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_leadingMargin: ConstraintItem { return self.snp.leadingMargin } + var snp_leadingMargin: ConstraintItem { return self.snp.leadingMargin } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_trailingMargin: ConstraintItem { return self.snp.trailingMargin } + var snp_trailingMargin: ConstraintItem { return self.snp.trailingMargin } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_centerXWithinMargins: ConstraintItem { return self.snp.centerXWithinMargins } + var snp_centerXWithinMargins: ConstraintItem { return self.snp.centerXWithinMargins } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_centerYWithinMargins: ConstraintItem { return self.snp.centerYWithinMargins } + var snp_centerYWithinMargins: ConstraintItem { return self.snp.centerYWithinMargins } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_edges: ConstraintItem { return self.snp.edges } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_edges: ConstraintItem { return self.snp.edges } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_size: ConstraintItem { return self.snp.size } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_size: ConstraintItem { return self.snp.size } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_center: ConstraintItem { return self.snp.center } + @available(*, deprecated, message:"Use newer snp.* syntax.") + var snp_center: ConstraintItem { return self.snp.center } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_margins: ConstraintItem { return self.snp.margins } + var snp_margins: ConstraintItem { return self.snp.margins } - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") + @available(iOS, deprecated, message:"Use newer snp.* syntax.") @available(iOS 8.0, *) - public var snp_centerWithinMargins: ConstraintItem { return self.snp.centerWithinMargins } + var snp_centerWithinMargins: ConstraintItem { return self.snp.centerWithinMargins } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { + @available(*, deprecated, message:"Use newer snp.* syntax.") + func snp_prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { return self.snp.prepareConstraints(closure) } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { + @available(*, deprecated, message:"Use newer snp.* syntax.") + func snp_makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { self.snp.makeConstraints(closure) } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { + @available(*, deprecated, message:"Use newer snp.* syntax.") + func snp_remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { self.snp.remakeConstraints(closure) } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { + @available(*, deprecated, message:"Use newer snp.* syntax.") + func snp_updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { self.snp.updateConstraints(closure) } - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_removeConstraints() { + @available(*, deprecated, message:"Use newer snp.* syntax.") + func snp_removeConstraints() { self.snp.removeConstraints() } - public var snp: ConstraintViewDSL { + var snp: ConstraintViewDSL { return ConstraintViewDSL(view: self) } diff --git a/Example/Pods/SnapKit/Source/Debugging.swift b/Example/Pods/SnapKit/Source/Debugging.swift index 55f5b87..a78579a 100644 --- a/Example/Pods/SnapKit/Source/Debugging.swift +++ b/Example/Pods/SnapKit/Source/Debugging.swift @@ -29,7 +29,7 @@ public extension LayoutConstraint { - override public var description: String { + override var description: String { var description = "<" description += descriptionForObject(self) @@ -82,6 +82,9 @@ private func descriptionForRelation(_ relation: LayoutRelation) -> String { case .equal: return "==" case .greaterThanOrEqual: return ">=" case .lessThanOrEqual: return "<=" + #if swift(>=5.0) + @unknown default: return "unknown" + #endif } } @@ -109,7 +112,10 @@ private func descriptionForAttribute(_ attribute: LayoutAttribute) -> String { case .trailingMargin: return "trailingMargin" case .centerXWithinMargins: return "centerXWithinMargins" case .centerYWithinMargins: return "centerYWithinMargins" - } + #if swift(>=5.0) + @unknown default: return "unknown" + #endif + } #else switch attribute { case .notAnAttribute: return "notAnAttribute" @@ -125,7 +131,10 @@ private func descriptionForAttribute(_ attribute: LayoutAttribute) -> String { case .centerY: return "centerY" case .lastBaseline: return "lastBaseline" case .firstBaseline: return "firstBaseline" - } + #if swift(>=5.0) + @unknown default: return "unknown" + #endif + } #endif } diff --git a/Example/Pods/SnapKit/Source/LayoutConstraint.swift b/Example/Pods/SnapKit/Source/LayoutConstraint.swift index 8bb5ed2..91fad77 100644 --- a/Example/Pods/SnapKit/Source/LayoutConstraint.swift +++ b/Example/Pods/SnapKit/Source/LayoutConstraint.swift @@ -44,14 +44,18 @@ public class LayoutConstraint : NSLayoutConstraint { } internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { - guard lhs.firstItem === rhs.firstItem && - lhs.secondItem === rhs.secondItem && - lhs.firstAttribute == rhs.firstAttribute && - lhs.secondAttribute == rhs.secondAttribute && - lhs.relation == rhs.relation && - lhs.priority == rhs.priority && - lhs.multiplier == rhs.multiplier else { - return false + let areLayoutAnchorsEqual: Bool + if #available(iOS 10.0, OSXApplicationExtension 10.12, *) { + areLayoutAnchorsEqual = lhs.firstAnchor === rhs.firstAnchor && + lhs.secondAnchor === rhs.secondAnchor + } else { + areLayoutAnchorsEqual = lhs.firstItem === rhs.firstItem && + lhs.secondItem === rhs.secondItem && + lhs.firstAttribute == rhs.firstAttribute && + lhs.secondAttribute == rhs.secondAttribute } - return true + return areLayoutAnchorsEqual && + lhs.relation == rhs.relation && + lhs.priority == rhs.priority && + lhs.multiplier == rhs.multiplier } diff --git a/Example/Pods/SnapKit/Source/Typealiases.swift b/Example/Pods/SnapKit/Source/Typealiases.swift index 8a44151..ded96cc 100644 --- a/Example/Pods/SnapKit/Source/Typealiases.swift +++ b/Example/Pods/SnapKit/Source/Typealiases.swift @@ -25,8 +25,13 @@ import Foundation #if os(iOS) || os(tvOS) import UIKit +#if swift(>=4.2) + typealias LayoutRelation = NSLayoutConstraint.Relation + typealias LayoutAttribute = NSLayoutConstraint.Attribute +#else typealias LayoutRelation = NSLayoutRelation typealias LayoutAttribute = NSLayoutAttribute +#endif typealias LayoutPriority = UILayoutPriority #else import AppKit diff --git a/Example/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift b/Example/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift index cfbce2e..8e7644c 100644 --- a/Example/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift +++ b/Example/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift @@ -29,7 +29,7 @@ @available(iOS 8.0, *) public extension ConstraintLayoutSupport { - public var snp: ConstraintLayoutSupportDSL { + var snp: ConstraintLayoutSupportDSL { return ConstraintLayoutSupportDSL(support: self) } diff --git a/Example/Pods/Target Support Files/VIMediaCache/Info.plist b/Example/Pods/Target Support Files/BMPlayer/BMPlayer-Info.plist similarity index 96% rename from Example/Pods/Target Support Files/VIMediaCache/Info.plist rename to Example/Pods/Target Support Files/BMPlayer/BMPlayer-Info.plist index f92230d..b6b2813 100644 --- a/Example/Pods/Target Support Files/VIMediaCache/Info.plist +++ b/Example/Pods/Target Support Files/BMPlayer/BMPlayer-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.3.0 + 1.3.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/BMPlayer/BMPlayer.xcconfig b/Example/Pods/Target Support Files/BMPlayer/BMPlayer.xcconfig index 6b879b3..b98f33c 100644 --- a/Example/Pods/Target Support Files/BMPlayer/BMPlayer.xcconfig +++ b/Example/Pods/Target Support Files/BMPlayer/BMPlayer.xcconfig @@ -1,13 +1,12 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/BMPlayer -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/SnapKit" "$PODS_CONFIGURATION_BUILD_DIR/VIMediaCache" +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BMPlayer +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NVActivityIndicatorView" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/VIMediaCache" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Reveal-SDK" -OTHER_LDFLAGS = -framework "AVFoundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES -SWIFT_VERSION = 4.0 +SWIFT_VERSION = 5.0 diff --git a/Example/Pods/Target Support Files/BMPlayer/Info.plist b/Example/Pods/Target Support Files/BMPlayer/Info.plist index 2243fe6..de3510c 100644 --- a/Example/Pods/Target Support Files/BMPlayer/Info.plist +++ b/Example/Pods/Target Support Files/BMPlayer/Info.plist @@ -15,7 +15,11 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.0.0 +<<<<<<< HEAD + 1.0.2 +======= + 1.2.0 +>>>>>>> BrikerMan/master CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/NVActivityIndicatorView/Info.plist b/Example/Pods/Target Support Files/NVActivityIndicatorView/Info.plist index 3424ca6..46374d2 100644 --- a/Example/Pods/Target Support Files/NVActivityIndicatorView/Info.plist +++ b/Example/Pods/Target Support Files/NVActivityIndicatorView/Info.plist @@ -15,7 +15,11 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.0 +<<<<<<< HEAD + 4.4.0 +======= + 4.6.1 +>>>>>>> BrikerMan/master CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-Info.plist b/Example/Pods/Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-Info.plist new file mode 100644 index 0000000..1b87d15 --- /dev/null +++ b/Example/Pods/Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 4.7.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.xcconfig b/Example/Pods/Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.xcconfig index 6aaccd5..56c1c20 100644 --- a/Example/Pods/Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.xcconfig +++ b/Example/Pods/Target Support Files/NVActivityIndicatorView/NVActivityIndicatorView.xcconfig @@ -1,10 +1,9 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NVActivityIndicatorView GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Reveal-SDK" -OTHER_LDFLAGS = -framework "QuartzCore" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_LDFLAGS = $(inherited) -framework "QuartzCore" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/NVActivityIndicatorView PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-Info.plist b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.markdown index 4912988..3da7da5 100644 --- a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.markdown @@ -49,166 +49,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## Reveal-SDK - -# REVEAL LICENSE AGREEMENT v2.0 - -## NOTICE TO USER: - -This is a legally enforceable agreement between you (__"you"__ or __"yours"__ and other grammatical equivalents) and Itty Bitty Apps Pty. Ltd. (__"the Company"__), which covers your use of the Reveal software product that accompanies this Agreement and related software components, which may include associated media, printed materials, and "online" or electronic documentation. All such software and materials are referred to herein as the __"Software"__ or __"the Reveal Software"__. If you do not agree to the terms of this License Agreement, then do not install or use the Software. By explicitly accepting this License Agreement, or by installing, copying, downloading, accessing, or otherwise using the Software, you are acknowledging and agreeing to be bound by the following terms: - -## 1. DEFINITIONS - -__(a) "Software"__ shall mean the Reveal software including any Updates thereto, in object and source form, and the media and Documentation provided by the Company to you and for which you are granted a license pursuant to this Agreement. - -__(b) "Documentation"__ shall mean the printed or online written reference material furnished to you in conjunction with the Software, including, without limitation, instructions, guidelines, and end user guides. - -__(c) "Intellectual Property Rights"__ shall mean all intellectual property rights, including, without limitation, patent, copyright, trademark, and trade secret. - -__(d) "Updates"__ shall mean a modification, error correction, bug fix, new release, or other update to or for the Software. - - -## 2. LICENSE GRANT - -The Company may, at its sole discretion, grant you a Trial License, a Personal License, a Commercial Seat License, a Site License or an Enterprise License. - -If you have not purchased or otherwise rightfully obtained a Personal License, a Commercial Seat License, a Site License or an Enterprise License for the Reveal Software, the Trial License Terms (2.1) are applicable to your use of the Reveal Software. The Trial License Terms are also applicable to any usage of the Reveal Software by you that is not covered under any other licenses you may have. - -The Personal License Terms (2.2) apply if you have a Personal License. The Commercial Seat License Terms (2.3) apply if you have a Commercial Seat License. The Site License Terms (2.4) apply if you have a Site License. The Enterprise License Terms (2.5) apply if you have an Enterprise License. - -The General Terms (3) apply in all cases. - -### 2.1 TRIAL LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software for time-limited evaluation purposes, only in accordance with the terms and conditions set forth herein. The Software may be used for a period of 14 calendar days from the time of activation. Upon lapse of such trial period all of or part of the functionality of the Software will be disabled automatically. - -If you wish to use the Software after the trial period, you must purchase a Personal License, a Commercial Seat License, a Site License or an Enterprise License. The Company may extend to you an expiring license key, in which event such a license key will be considered a means to extend the trial period under the Trial License Terms. - - -### 2.2 PERSONAL LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License grants you the right to activate and use the Software on no more than 2 computers primarily used by you. Use of the Software under this license may be for both commercial and non-commercial purposes. Personal licences are not available to companies, commercial institutions, government agencies or business entities. - - -### 2.3 COMMERCIAL SEAT LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. A Commercial Seat License must be purchased for every person employed by you or employed by any fully owned subsidiary of yours wishing to use the Software. - -This license is granted exclusively on a per-employee basis within your organisation and is not transferable to another current employee without written permission. This License grants the right to activate and use the Software on no more than 2 computers used by the employee. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into a Commercial Seat License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -### 2.4 SITE LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. - -Unless otherwise specified, any Site License you acquire from the Company is valid only for use at the business locations listed on your sales invoice. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into a Site License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -### 2.5 ENTERPRISE LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. - -This License allows global use of the Software by all employees or employees of any fully owned subsidiary of the company, commercial institution, government agency or business entity listed in your sales invoice. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into an Enterprise License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -## 3. GENERAL TERMS - -### 3.1 TITLE - -‘REVEAL’™ and ‘ITTY BITTY APPS’™ represent proprietary common law trademarks owned by the Company and must not be used without written permission. - -The Company shall own and retain all right, title and interest in and to all Intellectual Property Rights related to the Software, the Documentation and all improvements to any of them however so created. You do not acquire any other rights, express or implied, in the Software. ALL RIGHTS NOT EXPRESSLY GRANTED HEREUNDER ARE RESERVED TO THE COMPANY. - -### 3.2 ARCHIVAL OR BACKUP COPIES - -You may copy the Software for backup and archival purposes only, provided that the original and each copy is kept in your possession and that your installation and use of the Software does not exceed that allowed in the "License Grant" section above. - -### 3.3 THINGS YOU MUST NOT DO - -The Software and Documentation are protected by Australian and international copyright law. You must treat the Software and Documentation like any other copyrighted material—for example, a book. You may not: - -* copy the Documentation, -* copy the Software except to make archival or backup copies as provided above, -* modify or adapt the Software or merge it into another program, -* reverse engineer, disassemble, decompile or make any attempt to discover the source code of the Software, -* place the Software onto a server so that it is accessible via a public network such as the Internet, or -* sublicense, rent, lease, sublicense or lend any portion of the Software or Documentation. - -### 3.4 LIMITATION OF LICENSE VALIDITY - -Any License to use the Software granted to you under this License Agreement is limited to the release of the Software available at the time of purchase plus all releases of the Software for 12 months from the time of purchase exclusively. The Company reserves the right to change the terms of this agreement in any future major or minor release of the software. - -### 3.5 ONLINE ACTIVATION - -The Software requires activation in order to use it under the terms of this agreement. If you do not activate the Software, all of or part of the functionality of the Software will disable automatically. The Company may at its sole discretion decide to adjust the exact technical conditions under which unactivated copies of the Software cease to work. You need an active, functional internet connection to activate your copy of the Software. Your licensed use of the Software is bound to the computer(s) you used to complete activation. You may need to reactivate your copy of the Software after replacing the logic board or otherwise changing the hardware configuration of your computer. You may need to contact the Company to complete reactivation. - -### 3.6 ADDITIONAL SERVICES - -Fees may apply for additional services and products offered by the company and others, such as services that integrate with the Software or extend the functionality of the Software. - -### 3.7 TECHNICAL AND RELATED INFORMATION - -The Company and its subsidiaries may collect and use technical and related information, such as technical information concerning your computer, system and application software. The Company does not collect (a) any information that identifies your work, (b) any file names or file contents of anything you work on using the Software. The Company and its subsidiaries are free to use the collected information in any form that does not personally identify you. - -### 3.8 PRIVACY - -The Company will not sell or in any way license usage of your personal information to third parties. The Company will make reasonable efforts to keep your personal information secure. - -### 3.9 TRANSFERS - -With prior notice to the Company, you may transfer all your rights to use the Software and Documentation only once and permanently to another person or legal entity provided you transfer this License Agreement, the Software and Documentation, including all copies, updates and prior versions to such person or entity and that you retain no copies, including copies stored on computer. The receiving person or legal entity must satisfy the conditions of the applicable license terms set out in section 2. - -### 3.10 LIMITED WARRANTY - -We warrant that for a period of 14 days after delivery of this copy of the Software to you the Software will perform in substantial accordance with the Documentation. - -To the extent permitted by applicable law, THE FOREGOING LIMITED WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES OR CONDITIONS, EXPRESS OR IMPLIED, AND WE DISCLAIM ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS, INCLUDING ANY IMPLIED WARRANTY OF TITLE, NONINFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, regardless of whether we know or had reason to know of your particular needs. No employee, agent, dealer or distributor of ours is authorized to modify this limited warranty, nor to make any additional warranties. -SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. - -### 3.11 LIMITED REMEDY - -Our entire liability and your exclusive remedy for breach of the foregoing warranty shall be, at our option, to return the price you paid minus fees incurred to transfer those funds to you. - -IN NO EVENT WILL WE BE LIABLE TO YOU FOR ANY DIRECT OR INDIRECT DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING FROM THE USE OR THE INABILITY TO USE THE SOFTWARE (EVEN IF WE OR AN AUTHORIZED DEALER OR DISTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF THESE DAMAGES), OR FOR ANY CLAIM BY ANY OTHER PARTY. -SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. - -### 3.12 TERM AND TERMINATION - -This license agreement takes effect upon your use of the software and remains effective until terminated. You may terminate it at any time by destroying all copies of the Software and Documentation in your possession. It will also automatically terminate if you fail to comply with any term or condition of this license agreement. You hereby agree that on termination of this license to permanently destroy all copies of the Software and Documentation in your possession. - -### 3.13 CONFIDENTIALITY - -The Software contains trade secrets and proprietary know-how that belong to the Company and it is being made available to you in strict confidence. ANY USE OR DISCLOSURE OF THE SOFTWARE, OR OF ITS ALGORITHMS, PROTOCOLS OR INTERFACES, OTHER THAN IN STRICT ACCORDANCE WITH THIS LICENSE AGREEMENT, MAY BE ACTIONABLE AS A VIOLATION OF THE COMPANY'S TRADE SECRET RIGHTS. - -### 3.14 GENERAL PROVISIONS - -__3.14.1__ This written license agreement is the exclusive agreement between you and the Company concerning the Software and Documentation and supersedes any prior purchase order, communication, advertising or representation concerning the Software. - -__3.14.2__ This is the entire agreement between the parties relating to the subject matter hereof and all other terms are rejected. No waiver or modification of this Agreement shall be valid unless in writing signed by each party. The waiver of a breach of any term hereof shall in no way be construed as a waiver of any term or other breach hereof. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law the remaining provisions of this Agreement shall remain in full force and effect. - -__3.14.3__ In the event of litigation between you and the Company concerning the Software or Documentation, the prevailing party in the litigation will be entitled to recover attorney fees and expenses from the other party. - -__3.14.4__ This Agreement, and all disputes arising out of or related thereto, shall be governed by and construed under the laws of the State of Victoria, Australia, without reference to conflict of laws principles. All such disputes shall be subject to the exclusive jurisdiction of the state and federal courts located in Australia, and the parties agree and submit to the personal and exclusive jurisdiction and venue of these courts. - - -## 4. CONTACT INFORMATION - -If you have any questions about this License Agreement, or if you want to contact the Company for any reason, please direct all mail correspondence to: Itty Bitty Apps Pty. Ltd. Level 6, 84 William St, Melbourne, Victoria, Australia, 3000, or electronic correspondence to info@ittybittyapps.com. - -Do you agree to be bound by the terms of this agreement? - ## SnapKit Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit diff --git a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.plist index 3157888..7466181 100644 --- a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-acknowledgements.plist @@ -72,172 +72,6 @@ SOFTWARE. Type PSGroupSpecifier - - FooterText - # REVEAL LICENSE AGREEMENT v2.0 - -## NOTICE TO USER: - -This is a legally enforceable agreement between you (__"you"__ or __"yours"__ and other grammatical equivalents) and Itty Bitty Apps Pty. Ltd. (__"the Company"__), which covers your use of the Reveal software product that accompanies this Agreement and related software components, which may include associated media, printed materials, and "online" or electronic documentation. All such software and materials are referred to herein as the __"Software"__ or __"the Reveal Software"__. If you do not agree to the terms of this License Agreement, then do not install or use the Software. By explicitly accepting this License Agreement, or by installing, copying, downloading, accessing, or otherwise using the Software, you are acknowledging and agreeing to be bound by the following terms: - -## 1. DEFINITIONS - -__(a) "Software"__ shall mean the Reveal software including any Updates thereto, in object and source form, and the media and Documentation provided by the Company to you and for which you are granted a license pursuant to this Agreement. - -__(b) "Documentation"__ shall mean the printed or online written reference material furnished to you in conjunction with the Software, including, without limitation, instructions, guidelines, and end user guides. - -__(c) "Intellectual Property Rights"__ shall mean all intellectual property rights, including, without limitation, patent, copyright, trademark, and trade secret. - -__(d) "Updates"__ shall mean a modification, error correction, bug fix, new release, or other update to or for the Software. - - -## 2. LICENSE GRANT - -The Company may, at its sole discretion, grant you a Trial License, a Personal License, a Commercial Seat License, a Site License or an Enterprise License. - -If you have not purchased or otherwise rightfully obtained a Personal License, a Commercial Seat License, a Site License or an Enterprise License for the Reveal Software, the Trial License Terms (2.1) are applicable to your use of the Reveal Software. The Trial License Terms are also applicable to any usage of the Reveal Software by you that is not covered under any other licenses you may have. - -The Personal License Terms (2.2) apply if you have a Personal License. The Commercial Seat License Terms (2.3) apply if you have a Commercial Seat License. The Site License Terms (2.4) apply if you have a Site License. The Enterprise License Terms (2.5) apply if you have an Enterprise License. - -The General Terms (3) apply in all cases. - -### 2.1 TRIAL LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software for time-limited evaluation purposes, only in accordance with the terms and conditions set forth herein. The Software may be used for a period of 14 calendar days from the time of activation. Upon lapse of such trial period all of or part of the functionality of the Software will be disabled automatically. - -If you wish to use the Software after the trial period, you must purchase a Personal License, a Commercial Seat License, a Site License or an Enterprise License. The Company may extend to you an expiring license key, in which event such a license key will be considered a means to extend the trial period under the Trial License Terms. - - -### 2.2 PERSONAL LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License grants you the right to activate and use the Software on no more than 2 computers primarily used by you. Use of the Software under this license may be for both commercial and non-commercial purposes. Personal licences are not available to companies, commercial institutions, government agencies or business entities. - - -### 2.3 COMMERCIAL SEAT LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. A Commercial Seat License must be purchased for every person employed by you or employed by any fully owned subsidiary of yours wishing to use the Software. - -This license is granted exclusively on a per-employee basis within your organisation and is not transferable to another current employee without written permission. This License grants the right to activate and use the Software on no more than 2 computers used by the employee. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into a Commercial Seat License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -### 2.4 SITE LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. - -Unless otherwise specified, any Site License you acquire from the Company is valid only for use at the business locations listed on your sales invoice. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into a Site License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -### 2.5 ENTERPRISE LICENSE TERMS - -The Company grants you a non-exclusive license to use the Software, only in accordance with the terms and conditions set forth herein. This License is only available to companies, commercial institutions, government agencies and business entities. - -This License does not allow the Software to be activated and used on computers that are not either a) owned by you, b) owned by any fully owned subsidiary of yours, c) owned by or operated primarily by your employees or employees of any fully owned subsidiary of yours. - -This License allows global use of the Software by all employees or employees of any fully owned subsidiary of the company, commercial institution, government agency or business entity listed in your sales invoice. - -This License does not allow the use of the Software other than for business purposes of your company. If entering into an Enterprise License you personally warrant that you have full legal authority to enter into this agreement on behalf of your employer. - - -## 3. GENERAL TERMS - -### 3.1 TITLE - -‘REVEAL’™ and ‘ITTY BITTY APPS’™ represent proprietary common law trademarks owned by the Company and must not be used without written permission. - -The Company shall own and retain all right, title and interest in and to all Intellectual Property Rights related to the Software, the Documentation and all improvements to any of them however so created. You do not acquire any other rights, express or implied, in the Software. ALL RIGHTS NOT EXPRESSLY GRANTED HEREUNDER ARE RESERVED TO THE COMPANY. - -### 3.2 ARCHIVAL OR BACKUP COPIES - -You may copy the Software for backup and archival purposes only, provided that the original and each copy is kept in your possession and that your installation and use of the Software does not exceed that allowed in the "License Grant" section above. - -### 3.3 THINGS YOU MUST NOT DO - -The Software and Documentation are protected by Australian and international copyright law. You must treat the Software and Documentation like any other copyrighted material—for example, a book. You may not: - -* copy the Documentation, -* copy the Software except to make archival or backup copies as provided above, -* modify or adapt the Software or merge it into another program, -* reverse engineer, disassemble, decompile or make any attempt to discover the source code of the Software, -* place the Software onto a server so that it is accessible via a public network such as the Internet, or -* sublicense, rent, lease, sublicense or lend any portion of the Software or Documentation. - -### 3.4 LIMITATION OF LICENSE VALIDITY - -Any License to use the Software granted to you under this License Agreement is limited to the release of the Software available at the time of purchase plus all releases of the Software for 12 months from the time of purchase exclusively. The Company reserves the right to change the terms of this agreement in any future major or minor release of the software. - -### 3.5 ONLINE ACTIVATION - -The Software requires activation in order to use it under the terms of this agreement. If you do not activate the Software, all of or part of the functionality of the Software will disable automatically. The Company may at its sole discretion decide to adjust the exact technical conditions under which unactivated copies of the Software cease to work. You need an active, functional internet connection to activate your copy of the Software. Your licensed use of the Software is bound to the computer(s) you used to complete activation. You may need to reactivate your copy of the Software after replacing the logic board or otherwise changing the hardware configuration of your computer. You may need to contact the Company to complete reactivation. - -### 3.6 ADDITIONAL SERVICES - -Fees may apply for additional services and products offered by the company and others, such as services that integrate with the Software or extend the functionality of the Software. - -### 3.7 TECHNICAL AND RELATED INFORMATION - -The Company and its subsidiaries may collect and use technical and related information, such as technical information concerning your computer, system and application software. The Company does not collect (a) any information that identifies your work, (b) any file names or file contents of anything you work on using the Software. The Company and its subsidiaries are free to use the collected information in any form that does not personally identify you. - -### 3.8 PRIVACY - -The Company will not sell or in any way license usage of your personal information to third parties. The Company will make reasonable efforts to keep your personal information secure. - -### 3.9 TRANSFERS - -With prior notice to the Company, you may transfer all your rights to use the Software and Documentation only once and permanently to another person or legal entity provided you transfer this License Agreement, the Software and Documentation, including all copies, updates and prior versions to such person or entity and that you retain no copies, including copies stored on computer. The receiving person or legal entity must satisfy the conditions of the applicable license terms set out in section 2. - -### 3.10 LIMITED WARRANTY - -We warrant that for a period of 14 days after delivery of this copy of the Software to you the Software will perform in substantial accordance with the Documentation. - -To the extent permitted by applicable law, THE FOREGOING LIMITED WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES OR CONDITIONS, EXPRESS OR IMPLIED, AND WE DISCLAIM ANY AND ALL IMPLIED WARRANTIES OR CONDITIONS, INCLUDING ANY IMPLIED WARRANTY OF TITLE, NONINFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, regardless of whether we know or had reason to know of your particular needs. No employee, agent, dealer or distributor of ours is authorized to modify this limited warranty, nor to make any additional warranties. -SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. - -### 3.11 LIMITED REMEDY - -Our entire liability and your exclusive remedy for breach of the foregoing warranty shall be, at our option, to return the price you paid minus fees incurred to transfer those funds to you. - -IN NO EVENT WILL WE BE LIABLE TO YOU FOR ANY DIRECT OR INDIRECT DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING FROM THE USE OR THE INABILITY TO USE THE SOFTWARE (EVEN IF WE OR AN AUTHORIZED DEALER OR DISTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF THESE DAMAGES), OR FOR ANY CLAIM BY ANY OTHER PARTY. -SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. - -### 3.12 TERM AND TERMINATION - -This license agreement takes effect upon your use of the software and remains effective until terminated. You may terminate it at any time by destroying all copies of the Software and Documentation in your possession. It will also automatically terminate if you fail to comply with any term or condition of this license agreement. You hereby agree that on termination of this license to permanently destroy all copies of the Software and Documentation in your possession. - -### 3.13 CONFIDENTIALITY - -The Software contains trade secrets and proprietary know-how that belong to the Company and it is being made available to you in strict confidence. ANY USE OR DISCLOSURE OF THE SOFTWARE, OR OF ITS ALGORITHMS, PROTOCOLS OR INTERFACES, OTHER THAN IN STRICT ACCORDANCE WITH THIS LICENSE AGREEMENT, MAY BE ACTIONABLE AS A VIOLATION OF THE COMPANY'S TRADE SECRET RIGHTS. - -### 3.14 GENERAL PROVISIONS - -__3.14.1__ This written license agreement is the exclusive agreement between you and the Company concerning the Software and Documentation and supersedes any prior purchase order, communication, advertising or representation concerning the Software. - -__3.14.2__ This is the entire agreement between the parties relating to the subject matter hereof and all other terms are rejected. No waiver or modification of this Agreement shall be valid unless in writing signed by each party. The waiver of a breach of any term hereof shall in no way be construed as a waiver of any term or other breach hereof. If any provision of this Agreement is held by a court of competent jurisdiction to be contrary to law the remaining provisions of this Agreement shall remain in full force and effect. - -__3.14.3__ In the event of litigation between you and the Company concerning the Software or Documentation, the prevailing party in the litigation will be entitled to recover attorney fees and expenses from the other party. - -__3.14.4__ This Agreement, and all disputes arising out of or related thereto, shall be governed by and construed under the laws of the State of Victoria, Australia, without reference to conflict of laws principles. All such disputes shall be subject to the exclusive jurisdiction of the state and federal courts located in Australia, and the parties agree and submit to the personal and exclusive jurisdiction and venue of these courts. - - -## 4. CONTACT INFORMATION - -If you have any questions about this License Agreement, or if you want to contact the Company for any reason, please direct all mail correspondence to: Itty Bitty Apps Pty. Ltd. Level 6, 84 William St, Melbourne, Victoria, Australia, 3000, or electronic correspondence to info@ittybittyapps.com. - -Do you agree to be bound by the terms of this agreement? - License - Commercial - Title - Reveal-SDK - Type - PSGroupSpecifier - FooterText Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit diff --git a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh index b13caa6..921ce24 100755 --- a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-frameworks.sh @@ -1,15 +1,33 @@ #!/bin/sh set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,8 +41,8 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi # Use filter instead of exclude so missing patterns don't throw errors. @@ -34,8 +52,13 @@ install_framework() local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -49,7 +72,7 @@ install_framework() # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -58,21 +81,40 @@ install_framework() fi } -# Copies the dSYM of a vendored framework +# Copies and strips a vendored dSYM install_dsym() { local source="$1" if [ -r "$source" ]; then - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}" + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi fi } # Signs a framework with the provided identity code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" @@ -85,26 +127,34 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do + for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/BMPlayer/BMPlayer.framework" install_framework "${BUILT_PRODUCTS_DIR}/NVActivityIndicatorView/NVActivityIndicatorView.framework" - install_framework "${PODS_ROOT}/Reveal-SDK/RevealServer-11/iOS/RevealServer.framework" install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" install_framework "${BUILT_PRODUCTS_DIR}/SwipeBack/SwipeBack.framework" install_framework "${BUILT_PRODUCTS_DIR}/VIMediaCache/VIMediaCache.framework" diff --git a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-resources.sh b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-resources.sh index a7df440..345301f 100755 --- a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-resources.sh +++ b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example-resources.sh @@ -1,5 +1,13 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -12,7 +20,7 @@ XCASSET_FILES=() # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") -case "${TARGETED_DEVICE_FAMILY}" in +case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; @@ -92,7 +100,7 @@ if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then fi rm -f "$RESOURCES_TO_COPY" -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) @@ -102,5 +110,9 @@ then fi done <<<"$OTHER_XCASSETS" - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" + fi fi diff --git a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.debug.xcconfig index 5dcb827..71baaf7 100644 --- a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.debug.xcconfig @@ -1,12 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/BMPlayer" "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/SnapKit" "$PODS_CONFIGURATION_BUILD_DIR/SwipeBack" "$PODS_CONFIGURATION_BUILD_DIR/VIMediaCache" "${PODS_ROOT}/Reveal-SDK/RevealServer-11/iOS" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BMPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/NVActivityIndicatorView" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwipeBack" "${PODS_CONFIGURATION_BUILD_DIR}/VIMediaCache" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Reveal-SDK" -LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/BMPlayer/BMPlayer.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SnapKit/SnapKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwipeBack/SwipeBack.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/VIMediaCache/VIMediaCache.framework/Headers" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Reveal-SDK" -OTHER_LDFLAGS = $(inherited) -l"z" -framework "BMPlayer" -framework "CFNetwork" -framework "CoreGraphics" -framework "NVActivityIndicatorView" -framework "QuartzCore" -framework "RevealServer" -framework "SnapKit" -framework "SwipeBack" -framework "VIMediaCache" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BMPlayer/BMPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwipeBack/SwipeBack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/VIMediaCache/VIMediaCache.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "BMPlayer" -framework "Foundation" -framework "MobileCoreServices" -framework "NVActivityIndicatorView" -framework "QuartzCore" -framework "SnapKit" -framework "SwipeBack" -framework "UIKit" -framework "VIMediaCache" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.release.xcconfig index 7588ced..71baaf7 100644 --- a/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-BMPlayer_Example/Pods-BMPlayer_Example.release.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/BMPlayer" "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView" "$PODS_CONFIGURATION_BUILD_DIR/SnapKit" "$PODS_CONFIGURATION_BUILD_DIR/SwipeBack" "$PODS_CONFIGURATION_BUILD_DIR/VIMediaCache" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BMPlayer" "${PODS_CONFIGURATION_BUILD_DIR}/NVActivityIndicatorView" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SwipeBack" "${PODS_CONFIGURATION_BUILD_DIR}/VIMediaCache" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BMPlayer/BMPlayer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwipeBack/SwipeBack.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/VIMediaCache/VIMediaCache.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/BMPlayer/BMPlayer.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/NVActivityIndicatorView/NVActivityIndicatorView.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SnapKit/SnapKit.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/SwipeBack/SwipeBack.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/VIMediaCache/VIMediaCache.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "BMPlayer" -framework "NVActivityIndicatorView" -framework "SnapKit" -framework "SwipeBack" -framework "VIMediaCache" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "BMPlayer" -framework "Foundation" -framework "MobileCoreServices" -framework "NVActivityIndicatorView" -framework "QuartzCore" -framework "SnapKit" -framework "SwipeBack" -framework "UIKit" -framework "VIMediaCache" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Example/Pods/Target Support Files/SnapKit/Info.plist b/Example/Pods/Target Support Files/SnapKit/Info.plist index 3424ca6..6631be7 100644 --- a/Example/Pods/Target Support Files/SnapKit/Info.plist +++ b/Example/Pods/Target Support Files/SnapKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.0 + 4.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/SnapKit/SnapKit-Info.plist b/Example/Pods/Target Support Files/SnapKit/SnapKit-Info.plist new file mode 100644 index 0000000..e2771ff --- /dev/null +++ b/Example/Pods/Target Support Files/SnapKit/SnapKit-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 5.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig b/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig index aa782b5..5ba2657 100644 --- a/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig +++ b/Example/Pods/Target Support Files/SnapKit/SnapKit.xcconfig @@ -1,9 +1,8 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SnapKit +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Reveal-SDK" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/Pods/Target Support Files/SwipeBack/SwipeBack-Info.plist b/Example/Pods/Target Support Files/SwipeBack/SwipeBack-Info.plist new file mode 100644 index 0000000..d60f138 --- /dev/null +++ b/Example/Pods/Target Support Files/SwipeBack/SwipeBack-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.1.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/SwipeBack/SwipeBack.xcconfig b/Example/Pods/Target Support Files/SwipeBack/SwipeBack.xcconfig index fb3c5f5..d8e5081 100644 --- a/Example/Pods/Target Support Files/SwipeBack/SwipeBack.xcconfig +++ b/Example/Pods/Target Support Files/SwipeBack/SwipeBack.xcconfig @@ -1,9 +1,8 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SwipeBack +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwipeBack GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Reveal-SDK" -OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwipeBack PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache-Info.plist b/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache-Info.plist new file mode 100644 index 0000000..53e4061 --- /dev/null +++ b/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.4.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache-umbrella.h b/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache-umbrella.h index 68bb671..fc35758 100644 --- a/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache-umbrella.h +++ b/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache-umbrella.h @@ -11,6 +11,7 @@ #endif #import "VIMediaCache.h" +#import "NSString+VIMD5.h" #import "VICacheAction.h" #import "VICacheConfiguration.h" #import "VICacheManager.h" diff --git a/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache.xcconfig b/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache.xcconfig index 3685746..e14ac4b 100644 --- a/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache.xcconfig +++ b/Example/Pods/Target Support Files/VIMediaCache/VIMediaCache.xcconfig @@ -1,9 +1,8 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/VIMediaCache +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/VIMediaCache GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Reveal-SDK" -OTHER_LDFLAGS = -framework "AVFoundation" -framework "MobileCoreServices" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "MobileCoreServices" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/VIMediaCache PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Example/Pods/VIMediaCache/VIMediaCache/Cache/NSString+VIMD5.h b/Example/Pods/VIMediaCache/VIMediaCache/Cache/NSString+VIMD5.h new file mode 100644 index 0000000..cc76219 --- /dev/null +++ b/Example/Pods/VIMediaCache/VIMediaCache/Cache/NSString+VIMD5.h @@ -0,0 +1,13 @@ +// +// NSString+VIMD5.h +// VIMediaCacheDemo +// +// Created by Vito on 21/11/2017. +// Copyright © 2017 Vito. All rights reserved. +// + +#import + +@interface NSString (VIMD5) +- (NSString *)vi_md5; +@end diff --git a/Example/Pods/VIMediaCache/VIMediaCache/Cache/NSString+VIMD5.m b/Example/Pods/VIMediaCache/VIMediaCache/Cache/NSString+VIMD5.m new file mode 100644 index 0000000..3f17a6d --- /dev/null +++ b/Example/Pods/VIMediaCache/VIMediaCache/Cache/NSString+VIMD5.m @@ -0,0 +1,27 @@ +// +// NSString+VIMD5.m +// VIMediaCacheDemo +// +// Created by Vito on 21/11/2017. +// Copyright © 2017 Vito. All rights reserved. +// + +#import "NSString+VIMD5.h" +#import + +@implementation NSString (VIMD5) + +- (NSString *)vi_md5 { + const char* str = [self UTF8String]; + unsigned char result[CC_MD5_DIGEST_LENGTH]; + CC_MD5(str, (CC_LONG)strlen(str), result); + + NSMutableString *ret = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH*2]; + for(int i = 0; i delegate; @property (nonatomic, strong) VIContentInfo *info; +@property (nonatomic, assign) BOOL saveToCache; - (void)downloadTaskFromOffset:(unsigned long long)fromOffset length:(NSUInteger)length @@ -36,7 +41,6 @@ - (void)downloadFromStartToEnd; - (void)cancel; -- (void)invalidateAndCancel; @end diff --git a/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIMediaDownloader.m b/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIMediaDownloader.m index 5c696c6..2644737 100644 --- a/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIMediaDownloader.m +++ b/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIMediaDownloader.m @@ -19,6 +19,7 @@ @protocol VIURLSessionDelegateObjectDelegate +- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler; - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler; - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data; - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(nullable NSError *)error; @@ -48,6 +49,9 @@ - (instancetype)initWithDelegate:(id)delegat } #pragma mark - NSURLSessionDataDelegate +- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{ + [self.delegate URLSession:session didReceiveChallenge:challenge completionHandler:completionHandler]; +} - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask @@ -103,6 +107,7 @@ @interface VIActionWorker : NSObject @property (nonatomic, strong) NSMutableArray *actions; - (instancetype)initWithActions:(NSArray *)actions url:(NSURL *)url cacheWorker:(VIMediaCacheWorker *)cacheWorker; +@property (nonatomic, assign) BOOL canSaveToCache; @property (nonatomic, weak) id delegate; - (void)start; @@ -136,6 +141,7 @@ - (void)dealloc { - (instancetype)initWithActions:(NSArray *)actions url:(NSURL *)url cacheWorker:(VIMediaCacheWorker *)cacheWorker { self = [super init]; if (self) { + _canSaveToCache = YES; _actions = [actions mutableCopy]; _cacheWorker = cacheWorker; _url = url; @@ -242,6 +248,11 @@ - (void)notifyDownloadFinishedWithError:(NSError *)error { #pragma mark - VIURLSessionDelegateObjectDelegate +- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler { + NSURLCredential *card = [[NSURLCredential alloc] initWithTrust:challenge.protectionSpace.serverTrust]; + completionHandler(NSURLSessionAuthChallengeUseCredential,card); +} + - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response @@ -256,7 +267,9 @@ - (void)URLSession:(NSURLSession *)session if ([self.delegate respondsToSelector:@selector(actionWorker:didReceiveResponse:)]) { [self.delegate actionWorker:self didReceiveResponse:response]; } - [self.cacheWorker startWritting]; + if (self.canSaveToCache) { + [self.cacheWorker startWritting]; + } completionHandler(NSURLSessionResponseAllow); } } @@ -267,16 +280,20 @@ - (void)URLSession:(NSURLSession *)session if (self.isCancelled) { return; } - NSRange range = NSMakeRange(self.startOffset, data.length); - NSError *error; - [self.cacheWorker cacheData:data forRange:range error:&error]; - if (error) { - if ([self.delegate respondsToSelector:@selector(actionWorker:didFinishWithError:)]) { - [self.delegate actionWorker:self didFinishWithError:error]; + + if (self.canSaveToCache) { + NSRange range = NSMakeRange(self.startOffset, data.length); + NSError *error; + [self.cacheWorker cacheData:data forRange:range error:&error]; + if (error) { + if ([self.delegate respondsToSelector:@selector(actionWorker:didFinishWithError:)]) { + [self.delegate actionWorker:self didFinishWithError:error]; + } + return; } - return; + [self.cacheWorker save]; } - [self.cacheWorker save]; + self.startOffset += data.length; if ([self.delegate respondsToSelector:@selector(actionWorker:didReceiveData:isLocal:)]) { [self.delegate actionWorker:self didReceiveData:data isLocal:NO]; @@ -288,8 +305,10 @@ - (void)URLSession:(NSURLSession *)session - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(nullable NSError *)error { - [self.cacheWorker finishWritting]; - [self.cacheWorker save]; + if (self.canSaveToCache) { + [self.cacheWorker finishWritting]; + [self.cacheWorker save]; + } if (error) { if ([self.delegate respondsToSelector:@selector(actionWorker:didFinishWithError:)]) { [self.delegate actionWorker:self didFinishWithError:error]; @@ -354,7 +373,6 @@ - (NSSet *)urls { @interface VIMediaDownloader () @property (nonatomic, strong) NSURL *url; -@property (nonatomic, strong) NSURLSession *session; @property (nonatomic, strong) NSURLSessionDataTask *task; @property (nonatomic, strong) VIMediaCacheWorker *cacheWorker; @@ -370,33 +388,21 @@ - (void)dealloc { [[VIMediaDownloaderStatus shared] removeURL:self.url]; } -- (instancetype)initWithURL:(NSURL *)url { +- (instancetype)initWithURL:(NSURL *)url cacheWorker:(VIMediaCacheWorker *)cacheWorker { self = [super init]; if (self) { + _saveToCache = YES; _url = url; - _cacheWorker = [[VIMediaCacheWorker alloc] initWithURL:url]; + _cacheWorker = cacheWorker; _info = _cacheWorker.cacheConfiguration.contentInfo; + [[VIMediaDownloaderStatus shared] addURL:self.url]; } return self; } -- (NSURLSession *)session { - if (!_session) { - NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; - _session = [NSURLSession sessionWithConfiguration:configuration]; - } - return _session; -} - - (void)downloadTaskFromOffset:(unsigned long long)fromOffset length:(NSUInteger)length toEnd:(BOOL)toEnd { - if ([self isCurrentURLDownloading]) { - [self handleCurrentURLDownloadingError]; - return; - } - [[VIMediaDownloaderStatus shared] addURL:self.url]; - // --- NSRange range = NSMakeRange((NSUInteger)fromOffset, length); @@ -407,55 +413,30 @@ - (void)downloadTaskFromOffset:(unsigned long long)fromOffset NSArray *actions = [self.cacheWorker cachedDataActionsForRange:range]; self.actionWorker = [[VIActionWorker alloc] initWithActions:actions url:self.url cacheWorker:self.cacheWorker]; + self.actionWorker.canSaveToCache = self.saveToCache; self.actionWorker.delegate = self; [self.actionWorker start]; } - (void)downloadFromStartToEnd { - if ([self isCurrentURLDownloading]) { - [self handleCurrentURLDownloadingError]; - return; - } - [[VIMediaDownloaderStatus shared] addURL:self.url]; - // --- self.downloadToEnd = YES; NSRange range = NSMakeRange(0, 2); NSArray *actions = [self.cacheWorker cachedDataActionsForRange:range]; self.actionWorker = [[VIActionWorker alloc] initWithActions:actions url:self.url cacheWorker:self.cacheWorker]; + self.actionWorker.canSaveToCache = self.saveToCache; self.actionWorker.delegate = self; [self.actionWorker start]; } - (void)cancel { - [[VIMediaDownloaderStatus shared] removeURL:self.url]; - [self.actionWorker cancel]; self.actionWorker.delegate = nil; - self.actionWorker = nil; -} - -- (void)invalidateAndCancel { [[VIMediaDownloaderStatus shared] removeURL:self.url]; [self.actionWorker cancel]; - self.actionWorker.delegate = nil; self.actionWorker = nil; } -#pragma mark - Union check - -- (BOOL)isCurrentURLDownloading { - return [[VIMediaDownloaderStatus shared] containsURL:self.url]; -} - -- (void)handleCurrentURLDownloadingError { - if (self.delegate) { - NSString *description = [NSString stringWithFormat:NSLocalizedString(@"URL: `%@` alreay in downloading queue.", nil), self.url]; - NSError *error = [NSError errorWithDomain:@"com.meidadownload" code:1 userInfo:@{NSLocalizedDescriptionKey: description}]; - [self.delegate mediaDownloader:self didFinishedWithError:error]; - } -} - #pragma mark - VIActionWorkerDelegate - (void)actionWorker:(VIActionWorker *)actionWorker didReceiveResponse:(NSURLResponse *)response { diff --git a/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoader.m b/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoader.m index f0b5d12..ea12d7b 100644 --- a/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoader.m +++ b/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoader.m @@ -10,14 +10,16 @@ #import "VIMediaDownloader.h" #import "VIResourceLoadingRequestWorker.h" #import "VIContentInfo.h" +#import "VIMediaCacheWorker.h" NSString * const MCResourceLoaderErrorDomain = @"LSFilePlayerResourceLoaderErrorDomain"; @interface VIResourceLoader () @property (nonatomic, strong, readwrite) NSURL *url; +@property (nonatomic, strong) VIMediaCacheWorker *cacheWorker; @property (nonatomic, strong) VIMediaDownloader *mediaDownloader; -@property (nonatomic, strong) NSMutableDictionary *pendingRequestWorkers; +@property (nonatomic, strong) NSMutableArray *pendingRequestWorkers; @property (nonatomic, getter=isCancelled) BOOL cancelled; @@ -27,15 +29,16 @@ @implementation VIResourceLoader - (void)dealloc { - [_mediaDownloader invalidateAndCancel]; + [_mediaDownloader cancel]; } - (instancetype)initWithURL:(NSURL *)url { self = [super init]; if (self) { _url = url; - _mediaDownloader = [[VIMediaDownloader alloc] initWithURL:url]; - _pendingRequestWorkers = [NSMutableDictionary dictionary]; + _cacheWorker = [[VIMediaCacheWorker alloc] initWithURL:url]; + _mediaDownloader = [[VIMediaDownloader alloc] initWithURL:url cacheWorker:_cacheWorker]; + _pendingRequestWorkers = [NSMutableArray array]; } return self; } @@ -46,25 +49,32 @@ - (instancetype)init { } - (void)addRequest:(AVAssetResourceLoadingRequest *)request { - [self.pendingRequestWorkers enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, VIResourceLoadingRequestWorker * _Nonnull obj, BOOL * _Nonnull stop) { - [obj cancel]; - [obj finish]; - }]; - [self.pendingRequestWorkers removeAllObjects]; - - [self startWorkerWithRequest:request]; + if (self.pendingRequestWorkers.count > 0) { + [self startNoCacheWorkerWithRequest:request]; + } else { + [self startWorkerWithRequest:request]; + } } - (void)removeRequest:(AVAssetResourceLoadingRequest *)request { - NSString *key = [self keyForRequest:request]; - VIResourceLoadingRequestWorker *requestWorker = self.pendingRequestWorkers[key]; - [requestWorker finish]; - - [self.pendingRequestWorkers removeObjectForKey:key]; + __block VIResourceLoadingRequestWorker *requestWorker = nil; + [self.pendingRequestWorkers enumerateObjectsUsingBlock:^(VIResourceLoadingRequestWorker * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.request == request) { + requestWorker = obj; + *stop = YES; + } + }]; + if (requestWorker) { + [requestWorker finish]; + [self.pendingRequestWorkers removeObject:requestWorker]; + } } - (void)cancel { [self.mediaDownloader cancel]; + [self.pendingRequestWorkers removeAllObjects]; + + [[VIMediaDownloaderStatus shared] removeURL:self.url]; } #pragma mark - VIResourceLoadingRequestWorkerDelegate @@ -74,24 +84,34 @@ - (void)resourceLoadingRequestWorker:(VIResourceLoadingRequestWorker *)requestWo if (error && [self.delegate respondsToSelector:@selector(resourceLoader:didFailWithError:)]) { [self.delegate resourceLoader:self didFailWithError:error]; } + if (self.pendingRequestWorkers.count == 0) { + [[VIMediaDownloaderStatus shared] removeURL:self.url]; + } } #pragma mark - Helper -- (void)startWorkerWithRequest:(AVAssetResourceLoadingRequest *)request { - NSString *key = [self keyForRequest:request]; - VIResourceLoadingRequestWorker *requestWorker = [[VIResourceLoadingRequestWorker alloc] initWithMediaDownloader:self.mediaDownloader +- (void)startNoCacheWorkerWithRequest:(AVAssetResourceLoadingRequest *)request { + [[VIMediaDownloaderStatus shared] addURL:self.url]; + VIMediaDownloader *mediaDownloader = [[VIMediaDownloader alloc] initWithURL:self.url cacheWorker:self.cacheWorker]; + VIResourceLoadingRequestWorker *requestWorker = [[VIResourceLoadingRequestWorker alloc] initWithMediaDownloader:mediaDownloader resourceLoadingRequest:request]; + [self.pendingRequestWorkers addObject:requestWorker]; requestWorker.delegate = self; - self.pendingRequestWorkers[key] = requestWorker; [requestWorker startWork]; } -- (NSString *)keyForRequest:(AVAssetResourceLoadingRequest *)request { - return [NSString stringWithFormat:@"%@%@", request.request.URL.absoluteString, request.request.allHTTPHeaderFields[@"Range"]]; +- (void)startWorkerWithRequest:(AVAssetResourceLoadingRequest *)request { + [[VIMediaDownloaderStatus shared] addURL:self.url]; + VIResourceLoadingRequestWorker *requestWorker = [[VIResourceLoadingRequestWorker alloc] initWithMediaDownloader:self.mediaDownloader + resourceLoadingRequest:request]; + [self.pendingRequestWorkers addObject:requestWorker]; + requestWorker.delegate = self; + [requestWorker startWork]; + } -- (NSError *)loaderCancelledError{ +- (NSError *)loaderCancelledError { NSError *error = [[NSError alloc] initWithDomain:MCResourceLoaderErrorDomain code:-3 userInfo:@{NSLocalizedDescriptionKey:@"Resource loader cancelled"}]; diff --git a/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoaderManager.m b/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoaderManager.m index e12f161..a014572 100644 --- a/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoaderManager.m +++ b/Example/Pods/VIMediaCache/VIMediaCache/ResourceLoader/VIResourceLoaderManager.m @@ -9,7 +9,7 @@ #import "VIResourceLoaderManager.h" #import "VIResourceLoader.h" -static NSString *kCacheScheme = @"VIMediaCache"; +static NSString *kCacheScheme = @"__VIMediaCache___:"; @interface VIResourceLoaderManager () @@ -42,18 +42,13 @@ - (void)cancelLoaders { - (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest { NSURL *resourceURL = [loadingRequest.request URL]; - if ([resourceURL.scheme isEqualToString:kCacheScheme]) { + if ([resourceURL.absoluteString hasPrefix:kCacheScheme]) { VIResourceLoader *loader = [self loaderForRequest:loadingRequest]; if (!loader) { - NSURLComponents *components = [NSURLComponents componentsWithString:resourceURL.absoluteString]; - NSURL *originURL; - if ([components respondsToSelector:@selector(queryItems)]) { - NSURLQueryItem *queryItem = [components.queryItems lastObject]; - originURL = [NSURL URLWithString:queryItem.value]; - } else { - NSString *url = [[components.query componentsSeparatedByString:@"="] lastObject]; - originURL = [NSURL URLWithString:url]; - } + NSURL *originURL = nil; + NSString *originStr = [resourceURL absoluteString]; + originStr = [originStr stringByReplacingOccurrencesOfString:kCacheScheme withString:@""]; + originURL = [NSURL URLWithString:originStr]; loader = [[VIResourceLoader alloc] initWithURL:originURL]; loader.delegate = self; NSString *key = [self keyForResourceLoaderWithURL:resourceURL]; @@ -68,7 +63,6 @@ - (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoad - (void)resourceLoader:(AVAssetResourceLoader *)resourceLoader didCancelLoadingRequest:(AVAssetResourceLoadingRequest *)loadingRequest { VIResourceLoader *loader = [self loaderForRequest:loadingRequest]; - [loader cancel]; [loader removeRequest:loadingRequest]; } @@ -84,7 +78,7 @@ - (void)resourceLoader:(VIResourceLoader *)resourceLoader didFailWithError:(NSEr #pragma mark - Helper - (NSString *)keyForResourceLoaderWithURL:(NSURL *)requestURL { - if([requestURL.scheme isEqualToString:kCacheScheme]){ + if([[requestURL absoluteString] hasPrefix:kCacheScheme]){ NSString *s = requestURL.absoluteString; return s; } @@ -105,13 +99,8 @@ + (NSURL *)assetURLWithURL:(NSURL *)url { if (!url) { return nil; } - - NSURLComponents *componnents = [[NSURLComponents alloc] initWithURL:url resolvingAgainstBaseURL:NO]; - componnents.scheme = kCacheScheme; - - NSString *appendStr = componnents.query.length > 0 ? @"&" : @"?"; - NSURL *assetURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@MCurl=%@", componnents.URL.absoluteString, appendStr, url.absoluteString]]; - + + NSURL *assetURL = [NSURL URLWithString:[kCacheScheme stringByAppendingString:[url absoluteString]]]; return assetURL; } diff --git a/README.md b/README.md index abd6d00..d03e79a 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ ## BMPlayer -![Swift 2.2](https://img.shields.io/badge/Swift-2.2-orange.svg?style=flat) -![Swift 3.0](https://img.shields.io/badge/Swift-3.0-brightgreen.svg?style=flat) +![Swift 2.2-5.0](https://img.shields.io/badge/Swift-2.2--5.0-brightgreen.svg?style=flat) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Version](https://img.shields.io/cocoapods/v/BMPlayer.svg?style=flat)](http://cocoapods.org/pods/BMPlayer) [![License](https://img.shields.io/cocoapods/l/BMPlayer.svg?style=flat)](http://cocoapods.org/pods/BMPlayer) [![Platform](https://img.shields.io/cocoapods/p/BMPlayer.svg?style=flat)](http://cocoapods.org/pods/BMPlayer) [![Weibo](https://img.shields.io/badge/%E5%BE%AE%E5%8D%9A-%40%E8%89%BE%E5%8A%9B%E4%BA%9A%E5%B0%94-yellow.svg?style=flat)](http://weibo.com/536445669) +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FBrikerMan%2FBMPlayer.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FBrikerMan%2FBMPlayer?ref=badge_shield) A video player for iOS, based on AVPlayer, support the horizontal, vertical screen. support adjust volume, brightness and seek by slide, support subtitles. @@ -33,27 +33,13 @@ A video player for iOS, based on AVPlayer, support the horizontal, vertical scre ## Installation ### CocoaPods -#### Swift 4 - -``` -use_frameworks! - -pod 'BMPlayer', '~> 1.0.0' -``` - -#### Swift 3 -``` -use_frameworks! - -pod 'BMPlayer', '~> 0.9.1' -``` - -#### Swift 2.2 -``` -use_frameworks! - -pod 'BMPlayer', '~> 0.3.3' -``` +| Swift | podfile | +| --------- | ---------------------------- | +| Swift 5.0 | `pod 'BMPlayer', '~> 1.3.0'` | +| Swift 4.2 | `pod 'BMPlayer', '~> 1.2.0'` | +| Swift 4.0 | `pod 'BMPlayer', '~> 1.0.0'` | +| Swift 3.0 | `pod 'BMPlayer', '~> 0.9.1'` | +| Swift 2.2 | `pod 'BMPlayer', '~> 0.3.3'` | **To test the experimental caching support with [VIMediaCache](https://github.com/vitoziv/VIMediaCache), use** @@ -215,8 +201,12 @@ This project heavily reference the Objective-C version of this project [ZFPlayer - [tooodooo](https://github.com/tooodooo) - [Ben Bahrenburg](https://github.com/benbahrenburg) - [MangoMade](https://github.com/MangoMade) +- [iblacksun](https://github.com/iblacksun) You are welcome to fork and submit pull requests. ## License BMPlayer is available under the MIT license. See the LICENSE file for more info. + + +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FBrikerMan%2FBMPlayer.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FBrikerMan%2FBMPlayer?ref=badge_large) diff --git a/README.zh.md b/README.zh.md index 9a9f244..5779ffb 100644 --- a/README.zh.md +++ b/README.zh.md @@ -21,7 +21,7 @@ - [x] 自定义资源 HTTP Header - [x] 易于定制控制 UI - [x] 展示本地和在在线字幕文件 -- [x] [Swift 3](https://developer.apple.com/swift/) +- [x] [Swift 4](https://developer.apple.com/swift/) ## 要求 - iOS 8 + @@ -31,26 +31,13 @@ ## 安装 ### CocoaPods -#### Swift 4 -``` -use_frameworks! - -pod 'BMPlayer', '~> 1.0.0' -``` - -#### Swift 3 -``` -use_frameworks! - -pod 'BMPlayer', '~> 0.9.1' -``` - -#### Swift 2.2 -``` -use_frameworks! - -pod 'BMPlayer', '~> 0.3.3' -``` +| Swift | podfile | +| --------- | ---------------------------- | +| Swift 5.0 | `pod 'BMPlayer', '~> 1.3.0'` | +| Swift 4.2 | `pod 'BMPlayer', '~> 1.2.0'` | +| Swift 4.0 | `pod 'BMPlayer', '~> 1.0.0'` | +| Swift 3.0 | `pod 'BMPlayer', '~> 0.9.1'` | +| Swift 2.2 | `pod 'BMPlayer', '~> 0.3.3'` | **To test the experimental caching support with [VIMediaCache](https://github.com/vitoziv/VIMediaCache), use** diff --git a/Source/BMPlayer.swift b/Source/BMPlayer.swift index 3497717..9bee263 100644 --- a/Source/BMPlayer.swift +++ b/Source/BMPlayer.swift @@ -12,10 +12,10 @@ import MediaPlayer /// BMPlayerDelegate to obserbe player state public protocol BMPlayerDelegate : class { - func bmPlayer(player: BMPlayer ,playerStateDidChange state: BMPlayerState) - func bmPlayer(player: BMPlayer ,loadedTimeDidChange loadedDuration: TimeInterval, totalDuration: TimeInterval) - func bmPlayer(player: BMPlayer ,playTimeDidChange currentTime : TimeInterval, totalTime: TimeInterval) - func bmPlayer(player: BMPlayer ,playerIsPlaying playing: Bool) + func bmPlayer(player: BMPlayer, playerStateDidChange state: BMPlayerState) + func bmPlayer(player: BMPlayer, loadedTimeDidChange loadedDuration: TimeInterval, totalDuration: TimeInterval) + func bmPlayer(player: BMPlayer, playTimeDidChange currentTime : TimeInterval, totalTime: TimeInterval) + func bmPlayer(player: BMPlayer, playerIsPlaying playing: Bool) func bmPlayer(player: BMPlayer, playerOrientChanged isFullscreen: Bool) } @@ -80,11 +80,12 @@ open class BMPlayer: UIView { /// 滑动方向 fileprivate var panDirection = BMPanDirection.horizontal + /// 音量滑竿 fileprivate var volumeViewSlider: UISlider! - fileprivate let BMPlayerAnimationTimeInterval:Double = 4.0 - fileprivate let BMPlayerControlBarAutoFadeOutTimeInterval:Double = 0.5 + fileprivate let BMPlayerAnimationTimeInterval: Double = 4.0 + fileprivate let BMPlayerControlBarAutoFadeOutTimeInterval: Double = 0.5 /// 用来保存时间状态 fileprivate var sumTime : TimeInterval = 0 @@ -101,7 +102,7 @@ open class BMPlayer: UIView { fileprivate var isMirrored = false fileprivate var isPlayToTheEnd = false //视频画面比例 - fileprivate var aspectRatio:BMPlayerAspectRatio = .default + fileprivate var aspectRatio: BMPlayerAspectRatio = .default //Cache is playing result to improve callback performance fileprivate var isPlayingCache: Bool? = nil @@ -118,7 +119,7 @@ open class BMPlayer: UIView { isURLSet = false self.resource = resource - currentDefinition = definitionIndex + currentDefinition = definitionIndex controlView.prepareUI(for: resource, selectedIndex: definitionIndex) if BMPlayerConf.shouldAutoPlay { @@ -144,14 +145,13 @@ open class BMPlayer: UIView { Play */ open func play() { - if resource == nil { - return - } + guard resource != nil else { return } + if !isURLSet { let asset = resource.definitions[currentDefinition] playerLayer?.playAsset(asset: asset.avURLAsset) controlView.hideCoverImageView() - isURLSet = true + isURLSet = true } panGesture.isEnabled = true @@ -217,7 +217,7 @@ open class BMPlayer: UIView { - return: costom control which you want to use */ - class open func storyBoardCustomControl() -> BMPlayerControlView? { + open func storyBoardCustomControl() -> BMPlayerControlView? { return nil } @@ -233,20 +233,21 @@ open class BMPlayer: UIView { // 判断是垂直移动还是水平移动 switch pan.state { - case UIGestureRecognizerState.began: + case UIGestureRecognizer.State.began: // 使用绝对值来判断移动的方向 - let x = fabs(velocityPoint.x) - let y = fabs(velocityPoint.y) + let x = abs(velocityPoint.x) + let y = abs(velocityPoint.y) if x > y { - self.panDirection = BMPanDirection.horizontal - - // 给sumTime初值 - if let player = playerLayer?.player { - let time = player.currentTime() - self.sumTime = TimeInterval(time.value) / TimeInterval(time.timescale) + if BMPlayerConf.enablePlaytimeGestures { + self.panDirection = BMPanDirection.horizontal + + // 给sumTime初值 + if let player = playerLayer?.player { + let time = player.currentTime() + self.sumTime = TimeInterval(time.value) / TimeInterval(time.timescale) + } } - } else { self.panDirection = BMPanDirection.vertical if locationPoint.x > self.bounds.size.width / 2 { @@ -256,7 +257,7 @@ open class BMPlayer: UIView { } } - case UIGestureRecognizerState.changed: + case UIGestureRecognizer.State.changed: switch self.panDirection { case BMPanDirection.horizontal: self.horizontalMoved(velocityPoint.x) @@ -264,7 +265,7 @@ open class BMPlayer: UIView { self.verticalMoved(velocityPoint.y) } - case UIGestureRecognizerState.ended: + case UIGestureRecognizer.State.ended: // 移动结束也需要判断垂直或者平移 // 比如水平移动结束时,要快进到指定位置,如果这里没有判断,当我们调节音量完之后,会出现屏幕跳动的bug switch (self.panDirection) { @@ -293,23 +294,30 @@ open class BMPlayer: UIView { } fileprivate func verticalMoved(_ value: CGFloat) { - self.isVolume ? (self.volumeViewSlider.value -= Float(value / 10000)) : (UIScreen.main.brightness -= value / 10000) + if BMPlayerConf.enableVolumeGestures && self.isVolume{ + self.volumeViewSlider.value -= Float(value / 10000) + } + else if BMPlayerConf.enableBrightnessGestures && !self.isVolume{ + UIScreen.main.brightness -= value / 10000 + } } fileprivate func horizontalMoved(_ value: CGFloat) { + guard BMPlayerConf.enablePlaytimeGestures else { return } + isSliderSliding = true if let playerItem = playerLayer?.playerItem { // 每次滑动需要叠加时间,通过一定的比例,使滑动一直处于统一水平 self.sumTime = self.sumTime + TimeInterval(value) / 100.0 * (TimeInterval(self.totalDuration)/400) - let totalTime = playerItem.duration + let totalTime = playerItem.duration // 防止出现NAN if totalTime.timescale == 0 { return } - let totalDuration = TimeInterval(totalTime.value) / TimeInterval(totalTime.timescale) - if (self.sumTime >= totalDuration) { self.sumTime = totalDuration} - if (self.sumTime <= 0){ self.sumTime = 0} + let totalDuration = TimeInterval(totalTime.value) / TimeInterval(totalTime.timescale) + if (self.sumTime >= totalDuration) { self.sumTime = totalDuration } + if (self.sumTime <= 0) { self.sumTime = 0 } controlView.showSeekToView(to: sumTime, total: totalDuration, isAdd: value > 0) } @@ -337,16 +345,15 @@ open class BMPlayer: UIView { deinit { playerLayer?.pause() playerLayer?.prepareToDeinit() - NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIApplicationDidChangeStatusBarOrientation, object: nil) + NotificationCenter.default.removeObserver(self, name: UIApplication.didChangeStatusBarOrientationNotification, object: nil) } required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) - // breaks, should fix if want to have something from storyboard - //if let customControlView = classForCoder.storyBoardCustomControl() { - // self.customControlView = customControlView - //} + if let customControlView = storyBoardCustomControl() { + self.customControlView = customControlView + } initUI() initUIData() configureVolume() @@ -378,7 +385,7 @@ open class BMPlayer: UIView { if let customView = customControlView { controlView = customView } else { - controlView = BMPlayerControlView() + controlView = BMPlayerControlView() } addSubview(controlView) @@ -394,7 +401,7 @@ open class BMPlayer: UIView { } fileprivate func initUIData() { - NotificationCenter.default.addObserver(self, selector: #selector(self.onOrientationChanged), name: NSNotification.Name.UIApplicationDidChangeStatusBarOrientation, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(self.onOrientationChanged), name: UIApplication.didChangeStatusBarOrientationNotification, object: nil) } fileprivate func configureVolume() { @@ -427,9 +434,9 @@ extension BMPlayer: BMPlayerLayerViewDelegate { playStateDidChange?(player.isPlaying) } - public func bmPlayer(player: BMPlayerLayerView ,loadedTimeDidChange loadedDuration: TimeInterval , totalDuration: TimeInterval) { + public func bmPlayer(player: BMPlayerLayerView, loadedTimeDidChange loadedDuration: TimeInterval, totalDuration: TimeInterval) { BMPlayerManager.shared.log("loadedTimeDidChange - \(loadedDuration) - \(totalDuration)") - controlView.loadedTimeDidChange(loadedDuration: loadedDuration , totalDuration: totalDuration) + controlView.loadedTimeDidChange(loadedDuration: loadedDuration, totalDuration: totalDuration) delegate?.bmPlayer(player: self, loadedTimeDidChange: loadedDuration, totalDuration: totalDuration) controlView.totalDuration = totalDuration self.totalDuration = totalDuration @@ -440,7 +447,7 @@ extension BMPlayer: BMPlayerLayerViewDelegate { controlView.playerStateDidChange(state: state) switch state { - case BMPlayerState.readyToPlay: + case .readyToPlay: if !isPauseByUser { play() } @@ -455,10 +462,10 @@ extension BMPlayer: BMPlayerLayerViewDelegate { }) } - case BMPlayerState.bufferFinished: + case .bufferFinished: autoPlay() - case BMPlayerState.playedToTheEnd: + case .playedToTheEnd: isPlayToTheEnd = true default: @@ -468,8 +475,6 @@ extension BMPlayer: BMPlayerLayerViewDelegate { delegate?.bmPlayer(player: self, playerStateDidChange: state) } - - public func bmPlayer(player: BMPlayerLayerView, playTimeDidChange currentTime: TimeInterval, totalTime: TimeInterval) { BMPlayerManager.shared.log("playTimeDidChange - \(currentTime) - \(totalTime)") delegate?.bmPlayer(player: self, playTimeDidChange: currentTime, totalTime: totalTime) @@ -486,7 +491,7 @@ extension BMPlayer: BMPlayerLayerViewDelegate { extension BMPlayer: BMPlayerControlViewDelegate { open func controlView(controlView: BMPlayerControlView, - didChooseDefition index: Int) { + didChooseDefinition index: Int) { shouldSeekTo = currentPosition playerLayer?.resetPlayer() currentDefinition = index @@ -494,7 +499,7 @@ extension BMPlayer: BMPlayerControlViewDelegate { } open func controlView(controlView: BMPlayerControlView, - didPressButton button: UIButton) { + didPressButton button: UIButton) { if let action = BMPlayerControlView.ButtonType(rawValue: button.tag) { switch action { case .back: @@ -534,14 +539,14 @@ extension BMPlayer: BMPlayerControlViewDelegate { } open func controlView(controlView: BMPlayerControlView, - slider: UISlider, - onSliderEvent event: UIControlEvents) { + slider: UISlider, + onSliderEvent event: UIControl.Event) { switch event { - case UIControlEvents.touchDown: + case .touchDown: playerLayer?.onTimeSliderBegan() isSliderSliding = true - case UIControlEvents.touchUpInside : + case .touchUpInside : isSliderSliding = false let target = self.totalDuration * Double(slider.value) diff --git a/Source/BMPlayerClearityChooseButton.swift b/Source/BMPlayerClearityChooseButton.swift index 003814e..22c59db 100644 --- a/Source/BMPlayerClearityChooseButton.swift +++ b/Source/BMPlayerClearityChooseButton.swift @@ -23,7 +23,7 @@ class BMPlayerClearityChooseButton: UIButton { self.titleLabel?.font = UIFont.systemFont(ofSize: 12) self.layer.cornerRadius = 2 self.layer.borderWidth = 1 - self.layer.borderColor = UIColor ( red: 1.0, green: 1.0, blue: 1.0, alpha: 0.8 ).cgColor - self.setTitleColor(UIColor ( red: 1.0, green: 1.0, blue: 1.0, alpha: 0.9 ), for: .normal) + self.layer.borderColor = UIColor(white: 1, alpha: 0.8).cgColor + self.setTitleColor(UIColor(white: 1, alpha: 0.9), for: .normal) } } diff --git a/Source/BMPlayerControlView.swift b/Source/BMPlayerControlView.swift index 9a00199..3178ebd 100644 --- a/Source/BMPlayerControlView.swift +++ b/Source/BMPlayerControlView.swift @@ -17,7 +17,7 @@ import NVActivityIndicatorView - parameter controlView: control view - parameter index: index of definition */ - func controlView(controlView: BMPlayerControlView, didChooseDefition index: Int) + func controlView(controlView: BMPlayerControlView, didChooseDefinition index: Int) /** call when control view pressed an button @@ -34,7 +34,7 @@ import NVActivityIndicatorView - parameter slider: progress slider - parameter event: action */ - func controlView(controlView: BMPlayerControlView, slider: UISlider, onSliderEvent event: UIControlEvents) + func controlView(controlView: BMPlayerControlView, slider: UISlider, onSliderEvent event: UIControl.Event) /** call when needs to change playback rate @@ -57,62 +57,65 @@ open class BMPlayerControlView: UIView { open var isFullscreen = false open var isMaskShowing = true - open var totalDuration:TimeInterval = 0 + open var totalDuration: TimeInterval = 0 open var delayItem: DispatchWorkItem? var playerLastState: BMPlayerState = .notSetURL - fileprivate var isSelectecDefitionViewOpened = false + fileprivate var isSelectDefinitionViewOpened = false // MARK: UI Components /// main views which contains the topMaskView and bottom mask view - open var mainMaskView = UIView() - open var topMaskView = UIView() - open var bottomMaskView = UIView() + open var mainMaskView = UIView() + open var topMaskView = UIView() + open var bottomMaskView = UIView() /// Image view to show video cover - open var maskImageView = UIImageView() + open var maskImageView = UIImageView() /// top views - open var backButton = UIButton(type : UIButtonType.custom) - open var titleLabel = UILabel() - open var chooseDefitionView = UIView() + open var topWrapperView = UIView() + open var backButton = UIButton(type : UIButton.ButtonType.custom) + open var titleLabel = UILabel() + open var chooseDefinitionView = UIView() /// bottom view + open var bottomWrapperView = UIView() open var currentTimeLabel = UILabel() open var totalTimeLabel = UILabel() /// Progress slider - open var timeSlider = BMTimeSlider() + open var timeSlider = BMTimeSlider() /// load progress view - open var progressView = UIProgressView() + open var progressView = UIProgressView() /* play button playButton.isSelected = player.isPlaying */ - open var playButton = UIButton(type: UIButtonType.custom) + open var playButton = UIButton(type: UIButton.ButtonType.custom) /* fullScreen button fullScreenButton.isSelected = player.isFullscreen */ - open var fullscreenButton = UIButton(type: UIButtonType.custom) + open var fullscreenButton = UIButton(type: UIButton.ButtonType.custom) open var subtitleLabel = UILabel() open var subtitleBackView = UIView() - open var subtileAttrabute: [NSAttributedStringKey : Any]? + open var subtileAttribute: [NSAttributedString.Key : Any]? /// Activty Indector for loading - open var loadingIndector = NVActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) + open var loadingIndicator = NVActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 30, height: 30)) open var seekToView = UIView() open var seekToViewImage = UIImageView() open var seekToLabel = UILabel() - open var replayButton = UIButton(type: UIButtonType.custom) + open var replayButton = UIButton(type: UIButton.ButtonType.custom) /// Gesture used to show / hide control view open var tapGesture: UITapGestureRecognizer! + open var doubleTapGesture: UITapGestureRecognizer! // MARK: - handle player state change /** @@ -136,7 +139,7 @@ open class BMPlayerControlView: UIView { - parameter loadedDuration: loaded duration - parameter totalDuration: total duration */ - open func loadedTimeDidChange(loadedDuration: TimeInterval , totalDuration: TimeInterval) { + open func loadedTimeDidChange(loadedDuration: TimeInterval, totalDuration: TimeInterval) { progressView.setProgress(Float(loadedDuration)/Float(totalDuration), animated: true) } @@ -170,14 +173,14 @@ open class BMPlayerControlView: UIView { - parameter isAdd: isAdd */ open func showSeekToView(to toSecound: TimeInterval, total totalDuration:TimeInterval, isAdd: Bool) { - seekToView.isHidden = false + seekToView.isHidden = false seekToLabel.text = BMPlayer.formatSecondsToString(toSecound) let rotate = isAdd ? 0 : CGFloat(Double.pi) seekToViewImage.transform = CGAffineTransform(rotationAngle: rotate) - let targetTime = BMPlayer.formatSecondsToString(toSecound) - timeSlider.value = Float(toSecound / totalDuration) + let targetTime = BMPlayer.formatSecondsToString(toSecound) + timeSlider.value = Float(toSecound / totalDuration) currentTimeLabel.text = targetTime } @@ -234,19 +237,18 @@ open class BMPlayerControlView: UIView { UIApplication.shared.setStatusBarHidden(!isShow, with: .fade) UIView.animate(withDuration: 0.3, animations: {[weak self] in - guard let `self` = self else { return } self.topMaskView.alpha = alpha self.bottomMaskView.alpha = alpha - self.mainMaskView.backgroundColor = UIColor ( red: 0.0, green: 0.0, blue: 0.0, alpha: isShow ? 0.4 : 0.0) - + self.mainMaskView.backgroundColor = UIColor(white: 0, alpha: isShow ? 0.4 : 0.0) + if isShow { - if self.isFullscreen { self.chooseDefitionView.alpha = 1.0 } + if self.isFullscreen { self.chooseDefinitionView.alpha = 1.0 } } else { self.replayButton.isHidden = true - self.chooseDefitionView.snp.updateConstraints { (make) in + self.chooseDefinitionView.snp.updateConstraints { (make) in make.height.equalTo(35) } - self.chooseDefitionView.alpha = 0.0 + self.chooseDefinitionView.alpha = 0.0 } self.layoutIfNeeded() }) { [weak self](_) in @@ -264,7 +266,7 @@ open class BMPlayerControlView: UIView { open func updateUI(_ isForFullScreen: Bool) { isFullscreen = isForFullScreen fullscreenButton.isSelected = isForFullScreen - chooseDefitionView.isHidden = !BMPlayerConf.enableChooseDefinition || !isForFullScreen + chooseDefinitionView.isHidden = !BMPlayerConf.enableChooseDefinition || !isForFullScreen if isForFullScreen { if BMPlayerConf.topBarShowInCase.rawValue == 2 { topMaskView.isHidden = true @@ -292,12 +294,12 @@ open class BMPlayerControlView: UIView { } open func showLoader() { - loadingIndector.isHidden = false - loadingIndector.startAnimating() + loadingIndicator.isHidden = false + loadingIndicator.startAnimating() } open func hideLoader() { - loadingIndector.isHidden = true + loadingIndicator.isHidden = true } open func hideSeekToView() { @@ -333,7 +335,7 @@ open class BMPlayerControlView: UIView { guard let resource = resource else { return } - for item in chooseDefitionView.subviews { + for item in chooseDefinitionView.subviews { item.removeFromSuperview() } @@ -348,19 +350,20 @@ open class BMPlayerControlView: UIView { button.tag = i } - button.setTitle("\(resource.definitions[button.tag].definition)", for: UIControlState()) - chooseDefitionView.addSubview(button) - button.addTarget(self, action: #selector(self.onDefinitionSelected(_:)), for: UIControlEvents.touchUpInside) + button.setTitle("\(resource.definitions[button.tag].definition)", for: UIControl.State()) + chooseDefinitionView.addSubview(button) + button.addTarget(self, action: #selector(self.onDefinitionSelected(_:)), for: UIControl.Event.touchUpInside) button.snp.makeConstraints({ [weak self](make) in - guard let `self` = self else { return } - make.top.equalTo(self.chooseDefitionView.snp.top).offset(35 * i) + guard let `self` = self else { return } + make.top.equalTo(chooseDefinitionView.snp.top).offset(35 * i) make.width.equalTo(50) make.height.equalTo(25) - make.centerX.equalTo(self.chooseDefitionView) + make.centerX.equalTo(chooseDefinitionView) }) if resource.definitions.count == 1 { button.isEnabled = false + button.isHidden = true } } } @@ -402,7 +405,16 @@ open class BMPlayerControlView: UIView { controlViewAnimation(isShow: !isMaskShowing) } - + @objc open func onDoubleTapGestureRecognized(_ gesture: UITapGestureRecognizer) { + guard let player = player else { return } + guard playerLastState == .readyToPlay || playerLastState == .buffering || playerLastState == .bufferFinished else { return } + + if player.isPlaying { + player.pause() + } else { + player.play() + } + } // MARK: - handle UI slider actions @objc func progressSliderTouchBegan(_ sender: UISlider) { @@ -428,27 +440,27 @@ open class BMPlayerControlView: UIView { if let group = subtitle.search(for: time) { subtitleBackView.isHidden = false subtitleLabel.attributedText = NSAttributedString(string: group.text, - attributes: subtileAttrabute) + attributes: subtileAttribute) } else { subtitleBackView.isHidden = true } } @objc fileprivate func onDefinitionSelected(_ button:UIButton) { - let height = isSelectecDefitionViewOpened ? 35 : resource!.definitions.count * 40 - chooseDefitionView.snp.updateConstraints { (make) in - make.height.equalTo(height) - } - - UIView.animate(withDuration: 0.3, animations: {[weak self] in - self?.layoutIfNeeded() - }) - isSelectecDefitionViewOpened = !isSelectecDefitionViewOpened - if selectedIndex != button.tag { - selectedIndex = button.tag - delegate?.controlView(controlView: self, didChooseDefition: button.tag) - } - prepareChooseDefinitionView() + let height = isSelectDefinitionViewOpened ? 35 : resource!.definitions.count * 40 + chooseDefinitionView.snp.updateConstraints { (make) in + make.height.equalTo(height) + } + + UIView.animate(withDuration: 0.3, animations: {[weak self] in + self?.layoutIfNeeded() + }) + isSelectDefinitionViewOpened = !isSelectDefinitionViewOpened + if selectedIndex != button.tag { + selectedIndex = button.tag + delegate?.controlView(controlView: self, didChooseDefinition: button.tag) + } + prepareChooseDefinitionView() } @objc fileprivate func onReplyButtonPressed() { @@ -497,12 +509,13 @@ open class BMPlayerControlView: UIView { mainMaskView.addSubview(bottomMaskView) mainMaskView.insertSubview(maskImageView, at: 0) mainMaskView.clipsToBounds = true - mainMaskView.backgroundColor = UIColor ( red: 0.0, green: 0.0, blue: 0.0, alpha: 0.4 ) + mainMaskView.backgroundColor = UIColor(white: 0, alpha: 0.4 ) // Top views - topMaskView.addSubview(backButton) - topMaskView.addSubview(titleLabel) - addSubview(chooseDefitionView) + topMaskView.addSubview(topWrapperView) + topWrapperView.addSubview(backButton) + topWrapperView.addSubview(titleLabel) + topWrapperView.addSubview(chooseDefinitionView) backButton.tag = BMPlayerControlView.ButtonType.back.rawValue backButton.setImage(BMImageResourcePath("Pod_Asset_BMPlayer_back"), for: .normal) @@ -512,15 +525,16 @@ open class BMPlayerControlView: UIView { titleLabel.text = "" titleLabel.font = UIFont.systemFont(ofSize: 16) - chooseDefitionView.clipsToBounds = true + chooseDefinitionView.clipsToBounds = true // Bottom views - bottomMaskView.addSubview(playButton) - bottomMaskView.addSubview(currentTimeLabel) - bottomMaskView.addSubview(totalTimeLabel) - bottomMaskView.addSubview(progressView) - bottomMaskView.addSubview(timeSlider) - bottomMaskView.addSubview(fullscreenButton) + bottomMaskView.addSubview(bottomWrapperView) + bottomWrapperView.addSubview(playButton) + bottomWrapperView.addSubview(currentTimeLabel) + bottomWrapperView.addSubview(totalTimeLabel) + bottomWrapperView.addSubview(progressView) + bottomWrapperView.addSubview(timeSlider) + bottomWrapperView.addSubview(fullscreenButton) playButton.tag = BMPlayerControlView.ButtonType.play.rawValue playButton.setImage(BMImageResourcePath("Pod_Asset_BMPlayer_play"), for: .normal) @@ -547,13 +561,13 @@ open class BMPlayerControlView: UIView { timeSlider.minimumTrackTintColor = BMPlayerConf.tintColor timeSlider.addTarget(self, action: #selector(progressSliderTouchBegan(_:)), - for: UIControlEvents.touchDown) + for: UIControl.Event.touchDown) timeSlider.addTarget(self, action: #selector(progressSliderValueChanged(_:)), - for: UIControlEvents.valueChanged) + for: UIControl.Event.valueChanged) timeSlider.addTarget(self, action: #selector(progressSliderTouchEnded(_:)), - for: [UIControlEvents.touchUpInside,UIControlEvents.touchCancel, UIControlEvents.touchUpOutside]) + for: [UIControl.Event.touchUpInside,UIControl.Event.touchCancel, UIControl.Event.touchUpOutside]) progressView.tintColor = UIColor ( red: 1.0, green: 1.0, blue: 1.0, alpha: 0.6 ) progressView.trackTintColor = UIColor ( red: 1.0, green: 1.0, blue: 1.0, alpha: 0.3 ) @@ -563,10 +577,10 @@ open class BMPlayerControlView: UIView { fullscreenButton.setImage(BMImageResourcePath("Pod_Asset_BMPlayer_portialscreen"), for: .selected) fullscreenButton.addTarget(self, action: #selector(onButtonPressed(_:)), for: .touchUpInside) - mainMaskView.addSubview(loadingIndector) + mainMaskView.addSubview(loadingIndicator) - loadingIndector.type = BMPlayerConf.loaderType - loadingIndector.color = BMPlayerConf.tintColor + loadingIndicator.type = BMPlayerConf.loaderType + loadingIndicator.color = BMPlayerConf.tintColor // View to show when slide to seek addSubview(seekToView) @@ -578,7 +592,7 @@ open class BMPlayerControlView: UIView { seekToView.backgroundColor = UIColor ( red: 0.0, green: 0.0, blue: 0.0, alpha: 0.7 ) seekToView.layer.cornerRadius = 4 seekToView.layer.masksToBounds = true - seekToView.isHidden = true + seekToView.isHidden = true seekToViewImage.image = BMImageResourcePath("Pod_Asset_BMPlayer_seek_to_image") @@ -590,6 +604,14 @@ open class BMPlayerControlView: UIView { tapGesture = UITapGestureRecognizer(target: self, action: #selector(onTapGestureTapped(_:))) addGestureRecognizer(tapGesture) + + if BMPlayerManager.shared.enablePlayControlGestures { + doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(onDoubleTapGestureRecognized(_:))) + doubleTapGesture.numberOfTapsRequired = 2 + addGestureRecognizer(doubleTapGesture) + + tapGesture.require(toFail: doubleTapGesture) + } } func addSnapKitConstraint() { @@ -603,25 +625,44 @@ open class BMPlayerControlView: UIView { guard let `self` = self else { return } make.edges.equalTo(self.mainMaskView) } - - + topMaskView.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.top.left.right.equalTo(self.mainMaskView) - make.height.equalTo(65) + guard let `self` = self else { return } + make.top.left.right.equalTo(self.mainMaskView) + } + + topWrapperView.snp.makeConstraints { [weak self](make) in + guard let `self` = self else { return } + make.height.equalTo(50) + if #available(iOS 11.0, *) { + make.top.left.right.equalTo(self.topMaskView.safeAreaLayoutGuide) + make.bottom.equalToSuperview() + } else { + make.top.equalToSuperview().offset(15) + make.bottom.left.right.equalToSuperview() + } } bottomMaskView.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.bottom.left.right.equalTo(self.mainMaskView) - make.height.equalTo(50) + guard let `self` = self else { return } + make.bottom.left.right.equalTo(self.mainMaskView) + } + + bottomWrapperView.snp.makeConstraints { [weak self](make) in + guard let `self` = self else { return } + make.height.equalTo(50) + if #available(iOS 11.0, *) { + make.bottom.left.right.equalTo(self.bottomMaskView.safeAreaLayoutGuide) + make.top.equalToSuperview() + } else { + make.edges.equalToSuperview() + } } // Top views - backButton.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.width.height.equalTo(50) - make.left.bottom.equalTo(self.topMaskView) + backButton.snp.makeConstraints { (make) in + make.width.height.equalTo(50) + make.left.bottom.equalToSuperview() } titleLabel.snp.makeConstraints { [weak self](make) in @@ -630,20 +671,19 @@ open class BMPlayerControlView: UIView { make.centerY.equalTo(self.backButton) } - chooseDefitionView.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.right.equalTo(self.topMaskView.snp.right).offset(-20) - make.top.equalTo(self.titleLabel.snp.top).offset(-4) - make.width.equalTo(60) - make.height.equalTo(30) + chooseDefinitionView.snp.makeConstraints { [weak self](make) in + guard let `self` = self else { return } + make.right.equalToSuperview().offset(-20) + make.top.equalTo(self.titleLabel.snp.top).offset(-4) + make.width.equalTo(60) + make.height.equalTo(30) } // Bottom views - playButton.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.width.equalTo(50) - make.height.equalTo(50) - make.left.bottom.equalTo(self.bottomMaskView) + playButton.snp.makeConstraints { (make) in + make.width.equalTo(50) + make.height.equalTo(50) + make.left.bottom.equalToSuperview() } currentTimeLabel.snp.makeConstraints { [weak self](make) in @@ -672,21 +712,19 @@ open class BMPlayerControlView: UIView { make.left.equalTo(self.timeSlider.snp.right).offset(5) make.width.equalTo(40) } - + fullscreenButton.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.width.equalTo(50) - make.height.equalTo(50) - make.centerY.equalTo(self.currentTimeLabel) - make.left.equalTo(self.totalTimeLabel.snp.right) - make.right.equalTo(self.bottomMaskView.snp.right) + guard let `self` = self else { return } + make.width.equalTo(50) + make.height.equalTo(50) + make.centerY.equalTo(self.currentTimeLabel) + make.left.equalTo(self.totalTimeLabel.snp.right) + make.right.equalToSuperview() } - - loadingIndector.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.centerX.equalTo(self.mainMaskView.snp.centerX).offset(0) - make.centerY.equalTo(self.mainMaskView.snp.centerY).offset(0) + loadingIndicator.snp.makeConstraints { [weak self](make) in + guard let `self` = self else { return } + make.center.equalTo(self.mainMaskView) } // View to show when slide to seek @@ -711,11 +749,10 @@ open class BMPlayerControlView: UIView { make.centerY.equalTo(self.seekToView.snp.centerY) } - replayButton.snp.makeConstraints { [weak self](make) in - guard let `self` = self else { return } - make.centerX.equalTo(self.mainMaskView.snp.centerX) - make.centerY.equalTo(self.mainMaskView.snp.centerY) - make.width.height.equalTo(50) + replayButton.snp.makeConstraints { (make) in + guard let `self` = self else { return } + make.center.equalTo(self.mainMaskView) + make.width.height.equalTo(50) } subtitleBackView.snp.makeConstraints { [weak self](make) in @@ -736,8 +773,7 @@ open class BMPlayerControlView: UIView { fileprivate func BMImageResourcePath(_ fileName: String) -> UIImage? { let bundle = Bundle(for: BMPlayer.self) - let image = UIImage(named: fileName, in: bundle, compatibleWith: nil) - return image + return UIImage(named: fileName, in: bundle, compatibleWith: nil) } } diff --git a/Source/BMPlayerItem.swift b/Source/BMPlayerItem.swift index 55245dc..359d8a1 100644 --- a/Source/BMPlayerItem.swift +++ b/Source/BMPlayerItem.swift @@ -10,8 +10,8 @@ import Foundation import AVFoundation public class BMPlayerResource { - public let name : String - public let cover : URL? + public let name: String + public let cover: URL? public var subtitle: BMSubtitles? public let definitions: [BMPlayerResourceDefinition] @@ -52,14 +52,14 @@ public class BMPlayerResource { } -public class BMPlayerResourceDefinition { +open class BMPlayerResourceDefinition { public let url: URL public let definition: String /// An instance of NSDictionary that contains keys for specifying options for the initialization of the AVURLAsset. See AVURLAssetPreferPreciseDurationAndTimingKey and AVURLAssetReferenceRestrictionsKey above. public var options: [String : Any]? - var avURLAsset: AVURLAsset { + open var avURLAsset: AVURLAsset { get { return BMPlayerManager.asset(for: self) } diff --git a/Source/BMPlayerLayerView.swift b/Source/BMPlayerLayerView.swift index dcef444..ff9e68c 100644 --- a/Source/BMPlayerLayerView.swift +++ b/Source/BMPlayerLayerView.swift @@ -43,10 +43,10 @@ public enum BMPlayerAspectRatio : Int { } public protocol BMPlayerLayerViewDelegate : class { - func bmPlayer(player: BMPlayerLayerView ,playerStateDidChange state: BMPlayerState) - func bmPlayer(player: BMPlayerLayerView ,loadedTimeDidChange loadedDuration: TimeInterval , totalDuration: TimeInterval) - func bmPlayer(player: BMPlayerLayerView ,playTimeDidChange currentTime : TimeInterval , totalTime: TimeInterval) - func bmPlayer(player: BMPlayerLayerView ,playerIsPlaying playing: Bool) + func bmPlayer(player: BMPlayerLayerView, playerStateDidChange state: BMPlayerState) + func bmPlayer(player: BMPlayerLayerView, loadedTimeDidChange loadedDuration: TimeInterval, totalDuration: TimeInterval) + func bmPlayer(player: BMPlayerLayerView, playTimeDidChange currentTime: TimeInterval, totalTime: TimeInterval) + func bmPlayer(player: BMPlayerLayerView, playerIsPlaying playing: Bool) } open class BMPlayerLayerView: UIView { @@ -87,14 +87,14 @@ open class BMPlayerLayerView: UIView { } } - var aspectRatio:BMPlayerAspectRatio = .default { + var aspectRatio: BMPlayerAspectRatio = .default { didSet { self.setNeedsLayout() } } /// 计时器 - var timer : Timer? + var timer: Timer? fileprivate var urlAsset: AVURLAsset? @@ -120,7 +120,7 @@ open class BMPlayerLayerView: UIView { /// 是否播放本地文件 fileprivate var isLocalVideo = false /// slider上次的值 - fileprivate var sliderLastValue:Float = 0 + fileprivate var sliderLastValue: Float = 0 /// 是否点了重播 fileprivate var repeatToPlay = false /// 播放完了 @@ -152,7 +152,6 @@ open class BMPlayerLayerView: UIView { } } - open func pause() { player?.pause() isPlaying = false @@ -211,7 +210,7 @@ open class BMPlayerLayerView: UIView { } open func onTimeSliderBegan() { - if self.player?.currentItem?.status == AVPlayerItemStatus.readyToPlay { + if self.player?.currentItem?.status == AVPlayerItem.Status.readyToPlay { self.timer?.fireDate = Date.distantFuture } } @@ -221,9 +220,9 @@ open class BMPlayerLayerView: UIView { return } setupTimer() - if self.player?.currentItem?.status == AVPlayerItemStatus.readyToPlay { - let draggedTime = CMTimeMake(Int64(secounds), 1) - self.player!.seek(to: draggedTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero, completionHandler: { (finished) in + if self.player?.currentItem?.status == AVPlayerItem.Status.readyToPlay { + let draggedTime = CMTime(value: Int64(secounds), timescale: 1) + self.player!.seek(to: draggedTime, toleranceBefore: CMTime.zero, toleranceAfter: CMTime.zero, completionHandler: { (finished) in completion?() }) } else { @@ -289,25 +288,25 @@ open class BMPlayerLayerView: UIView { // MARK: - 计时器事件 @objc fileprivate func playerTimerAction() { - if let playerItem = playerItem { - if playerItem.duration.timescale != 0 { - let currentTime = CMTimeGetSeconds(self.player!.currentTime()) - let totalTime = TimeInterval(playerItem.duration.value) / TimeInterval(playerItem.duration.timescale) - delegate?.bmPlayer(player: self, playTimeDidChange: currentTime, totalTime: totalTime) - } - updateStatus(inclodeLoading: true) + guard let playerItem = playerItem else { return } + + if playerItem.duration.timescale != 0 { + let currentTime = CMTimeGetSeconds(self.player!.currentTime()) + let totalTime = TimeInterval(playerItem.duration.value) / TimeInterval(playerItem.duration.timescale) + delegate?.bmPlayer(player: self, playTimeDidChange: currentTime, totalTime: totalTime) } + updateStatus(includeLoading: true) } - fileprivate func updateStatus(inclodeLoading: Bool = false) { + fileprivate func updateStatus(includeLoading: Bool = false) { if let player = player { - if let playerItem = playerItem { - if inclodeLoading { - if playerItem.isPlaybackLikelyToKeepUp || playerItem.isPlaybackBufferFull { - self.state = .bufferFinished - } else { - self.state = .buffering - } + if let playerItem = playerItem, includeLoading { + if playerItem.isPlaybackLikelyToKeepUp || playerItem.isPlaybackBufferFull { + self.state = .bufferFinished + } else if playerItem.status == .failed { + self.state = .error + } else { + self.state = .buffering } } if player.rate == 0.0 { @@ -350,7 +349,9 @@ open class BMPlayerLayerView: UIView { if item == self.playerItem { switch keyPath { case "status": - if player?.status == AVPlayerStatus.readyToPlay { + if item.status == .failed || player?.status == AVPlayer.Status.failed { + self.state = .error + } else if player?.status == AVPlayer.Status.readyToPlay { self.state = .buffering if shouldSeekTo != 0 { print("BMPlayerLayer | Should seek to \(shouldSeekTo)") @@ -363,8 +364,6 @@ open class BMPlayerLayerView: UIView { self.hasReadyToPlay = true self.state = .readyToPlay } - } else if player?.status == AVPlayerStatus.failed { - self.state = .error } case "loadedTimeRanges": @@ -407,6 +406,7 @@ open class BMPlayerLayerView: UIView { fileprivate func availableDuration() -> TimeInterval? { if let loadedTimeRanges = player?.currentItem?.loadedTimeRanges, let first = loadedTimeRanges.first { + let timeRange = first.timeRangeValue let startSeconds = CMTimeGetSeconds(timeRange.start) let durationSecound = CMTimeGetSeconds(timeRange.duration) diff --git a/Source/BMPlayerProtocols.swift b/Source/BMPlayerProtocols.swift index d119449..3a07da6 100644 --- a/Source/BMPlayerProtocols.swift +++ b/Source/BMPlayerProtocols.swift @@ -19,12 +19,12 @@ extension BMPlayerControlView { } extension BMPlayer { - static func formatSecondsToString(_ secounds: TimeInterval) -> String { - if secounds.isNaN { + static func formatSecondsToString(_ seconds: TimeInterval) -> String { + if seconds.isNaN { return "00:00" } - let Min = Int(secounds / 60) - let Sec = Int(secounds.truncatingRemainder(dividingBy: 60)) - return String(format: "%02d:%02d", Min, Sec) + let min = Int(seconds / 60) + let sec = Int(seconds.truncatingRemainder(dividingBy: 60)) + return String(format: "%02d:%02d", min, sec) } } diff --git a/Source/BMSubtitles.swift b/Source/BMSubtitles.swift index d1a7a29..153c079 100644 --- a/Source/BMSubtitles.swift +++ b/Source/BMSubtitles.swift @@ -98,7 +98,6 @@ public class BMSubtitles { var endString: NSString? scanner.scanUpToCharacters(from: .newlines, into: &endString) - var textString: NSString? scanner.scanUpTo("\r\n\r\n", into: &textString) diff --git a/Source/BMTimeSlider.swift b/Source/BMTimeSlider.swift index 88876bf..1920fe9 100644 --- a/Source/BMTimeSlider.swift +++ b/Source/BMTimeSlider.swift @@ -10,9 +10,9 @@ import UIKit public class BMTimeSlider: UISlider { override open func trackRect(forBounds bounds: CGRect) -> CGRect { - let trackHeigt:CGFloat = 2 - let position = CGPoint(x: 0 , y: 14) - let customBounds = CGRect(origin: position, size: CGSize(width: bounds.size.width, height: trackHeigt)) + let trackHeight: CGFloat = 2 + let position = CGPoint(x: 0, y: 14) + let customBounds = CGRect(origin: position, size: CGSize(width: bounds.size.width, height: trackHeight)) super.trackRect(forBounds: customBounds) return customBounds } diff --git a/Source/CacheSupport/BMPlayerManager.swift b/Source/CacheSupport/BMPlayerManager.swift index 2db6d5f..d9a551a 100644 --- a/Source/CacheSupport/BMPlayerManager.swift +++ b/Source/CacheSupport/BMPlayerManager.swift @@ -22,7 +22,7 @@ public enum BMPlayerTopBarShowCase: Int { open class BMPlayerManager { /// 单例 - open static let shared = BMPlayerManager() + public static let shared = BMPlayerManager() /// tint color open var tintColor = UIColor.white @@ -45,6 +45,7 @@ open class BMPlayerManager { open var enableVolumeGestures = true open var enablePlaytimeGestures = true open var enableChooseDefinition = true + open var enablePlayControlGestures = true open var cacheManeger = VIResourceLoaderManager() diff --git a/Source/Default/BMPlayerManager.swift b/Source/Default/BMPlayerManager.swift index 1f80831..38184ca 100644 --- a/Source/Default/BMPlayerManager.swift +++ b/Source/Default/BMPlayerManager.swift @@ -20,13 +20,13 @@ public enum BMPlayerTopBarShowCase: Int { open class BMPlayerManager { /// 单例 - open static let shared = BMPlayerManager() + public static let shared = BMPlayerManager() /// tint color - open var tintColor = UIColor.white + open var tintColor = UIColor.white /// Loader - open var loaderType = NVActivityIndicatorType.ballRotateChase + open var loaderType = NVActivityIndicatorType.ballRotateChase /// should auto play open var shouldAutoPlay = true @@ -36,12 +36,13 @@ open class BMPlayerManager { open var animateDelayTimeInterval = TimeInterval(5) /// should show log - open var allowLog = false + open var allowLog = false /// use gestures to set brightness, volume and play position open var enableBrightnessGestures = true open var enableVolumeGestures = true open var enablePlaytimeGestures = true + open var enablePlayControlGestures = true open var enableChooseDefinition = true