From 26a5f7bd1aedf02ab4e16450644e54f81c823fca Mon Sep 17 00:00:00 2001 From: zjx Date: Mon, 26 May 2025 18:28:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Podfile | 11 +- Podfile.lock | 12 +- Veloria.xcodeproj/project.pbxproj | 116 +++++++++++ Veloria/AppDelegate/AppDelegate+Config.swift | 2 + Veloria/AppDelegate/AppDelegate.swift | 15 ++ .../Base/Controller/VPTabBarController.swift | 38 ++-- .../Base/Controller/VPViewController.swift | 37 ++++ Veloria/Base/Define/VPUserDefaultsKey.swift | 6 + Veloria/Base/Extension/Dictionary+SPAdd.swift | 23 ++ Veloria/Base/Extension/UIColor+VPAdd.swift | 4 + .../Extension/UINavigationBar+VPAdd.swift | 88 ++++++++ .../Base/Extension/UserDefaults+VPAdd.swift | 45 ++++ Veloria/Base/Networking/API/VPHomeAPI.swift | 2 +- Veloria/Base/Networking/API/VPUserAPI.swift | 22 ++ .../Base/VPNetworkReachabilityManager.swift | 60 ++++++ Veloria/Base/Networking/Base/VPURLPath.swift | 22 +- Veloria/Base/View/VPTableView.swift | 8 +- Veloria/Base/View/VPTableViewCell.swift | 5 + Veloria/Base/WebView/VPWebView.swift | 197 ++++++++++++++++++ .../Base/WebView/VPWebViewController.swift | 99 +++++++++ .../Controller/VPHomePageViewController.swift | 21 +- .../Class/Home/Model/VPHomeModuleItem.swift | 15 +- .../Controller/VPAboutUsViewController.swift | 25 +++ .../VPCampaignWebViewController.swift | 83 ++++++++ .../Me/Controller/VPMeViewController.swift | 152 ++++++++++++++ Veloria/Class/Me/Model/VPMeItem.swift | 27 +++ Veloria/Class/Me/View/VPMeCell.swift | 69 ++++++ Veloria/Class/Me/View/VPMeUserInfoCell.swift | 89 ++++++++ .../VPCollectListViewController.swift | 15 +- .../Controller/VPMyListViewController.swift | 9 +- .../VPWatchHistoryViewController.swift | 1 + .../Class/Player/View/VPVideoPlayerCell.swift | 13 +- Veloria/Libs/Empty/UIScrollView+Empty.swift | 20 ++ Veloria/Libs/HUD/VPHUD.swift | 9 +- Veloria/Libs/HUD/VPToast.swift | 2 +- Veloria/Libs/Login/VPLoginManager.swift | 24 ++- Veloria/Libs/User/VPUserInfo.swift | 67 ++++++ .../arrow_left_icon_01.imageset/Contents.json | 3 + .../Contents.json | 22 ++ .../arrow_right_icon_02.imageset/Frame@2x.png | Bin 0 -> 312 bytes .../arrow_right_icon_02.imageset/Frame@3x.png | Bin 0 -> 458 bytes .../Contents.json | 22 ++ .../头像@2x.png | Bin 0 -> 15609 bytes .../头像@3x.png | Bin 0 -> 30204 bytes .../me_item_icon_01.imageset/Contents.json | 22 ++ .../me_item_icon_01.imageset/Frame@2x.png | Bin 0 -> 1228 bytes .../me_item_icon_01.imageset/Frame@3x.png | Bin 0 -> 1754 bytes .../me_item_icon_02.imageset/Contents.json | 22 ++ .../me_item_icon_02.imageset/Frame@2x.png | Bin 0 -> 943 bytes .../me_item_icon_02.imageset/Frame@3x.png | Bin 0 -> 1363 bytes .../me_item_icon_03.imageset/Contents.json | 22 ++ .../me_item_icon_03.imageset/Frame@2x.png | Bin 0 -> 1220 bytes .../me_item_icon_03.imageset/Frame@3x.png | Bin 0 -> 1814 bytes .../me_item_icon_04.imageset/Contents.json | 22 ++ .../me_item_icon_04.imageset/Frame@2x.png | Bin 0 -> 1276 bytes .../me_item_icon_04.imageset/Frame@3x.png | Bin 0 -> 1851 bytes .../empty_image_01.imageset/Contents.json | 22 ++ .../缺省页-内容为空-切图图层@2x.png | Bin 0 -> 41960 bytes .../缺省页-内容为空-切图图层@3x.png | Bin 0 -> 75386 bytes Veloria/Source/Veloria-Bridging-Header.h | 1 + Veloria/Source/en.lproj/Localizable.strings | 10 + 61 files changed, 1561 insertions(+), 60 deletions(-) create mode 100644 Veloria/Base/Extension/Dictionary+SPAdd.swift create mode 100644 Veloria/Base/Extension/UINavigationBar+VPAdd.swift create mode 100644 Veloria/Base/Extension/UserDefaults+VPAdd.swift create mode 100644 Veloria/Base/Networking/API/VPUserAPI.swift create mode 100644 Veloria/Base/Networking/Base/VPNetworkReachabilityManager.swift create mode 100644 Veloria/Base/WebView/VPWebView.swift create mode 100644 Veloria/Base/WebView/VPWebViewController.swift create mode 100644 Veloria/Class/Me/Controller/VPAboutUsViewController.swift create mode 100644 Veloria/Class/Me/Controller/VPCampaignWebViewController.swift create mode 100644 Veloria/Class/Me/Controller/VPMeViewController.swift create mode 100644 Veloria/Class/Me/Model/VPMeItem.swift create mode 100644 Veloria/Class/Me/View/VPMeCell.swift create mode 100644 Veloria/Class/Me/View/VPMeUserInfoCell.swift create mode 100644 Veloria/Libs/Empty/UIScrollView+Empty.swift create mode 100644 Veloria/Libs/User/VPUserInfo.swift create mode 100644 Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Contents.json create mode 100644 Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Frame@2x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Frame@3x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/Contents.json create mode 100644 Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/头像@2x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/头像@3x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_01.imageset/Contents.json create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_01.imageset/Frame@2x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_01.imageset/Frame@3x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_02.imageset/Contents.json create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_02.imageset/Frame@2x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_02.imageset/Frame@3x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_03.imageset/Contents.json create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_03.imageset/Frame@2x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_03.imageset/Frame@3x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Contents.json create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Frame@2x.png create mode 100644 Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Frame@3x.png create mode 100644 Veloria/Source/Assets.xcassets/image/empty_image_01.imageset/Contents.json create mode 100644 Veloria/Source/Assets.xcassets/image/empty_image_01.imageset/缺省页-内容为空-切图图层@2x.png create mode 100644 Veloria/Source/Assets.xcassets/image/empty_image_01.imageset/缺省页-内容为空-切图图层@3x.png diff --git a/Podfile b/Podfile index ac19a15..4c5ab96 100644 --- a/Podfile +++ b/Podfile @@ -16,17 +16,20 @@ target 'Veloria' do use_frameworks! + pod 'SVProgressHUD' #HUD pod 'Moya' #网络框架 - pod 'SnapKit' #布局 pod 'SmartCodable' #数据解析 pod 'YYKit' #工具类 pod 'MJRefresh' #刷新控件 + pod 'SnapKit' #布局 pod 'Toast' #吐司提示 - pod 'ZFPlayer/AVPlayer' #播放器 pod 'KTVHTTPCache' #视频缓存 - pod 'HWPanModal' #底部弹出控制器 pod 'Kingfisher' #图片加载 + pod 'HWPanModal' #底部弹出控制器 pod "ESTabBarController-swift" pod 'WMZPageController' #分页控制器 - + pod 'ZFPlayer/AVPlayer' #播放器 + pod 'EmptyDataSet-Swift' #空数据页面 + + end diff --git a/Podfile.lock b/Podfile.lock index 38ae34b..a37042e 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,6 +1,7 @@ PODS: - Alamofire (5.10.2) - CocoaAsyncSocket (7.6.5) + - EmptyDataSet-Swift (5.0.0) - ESTabBarController-swift (2.8.0) - HWPanModal (0.9.9) - Kingfisher (8.3.2) @@ -15,6 +16,9 @@ PODS: - SmartCodable/Core (= 5.0.9) - SmartCodable/Core (5.0.9) - SnapKit (5.7.1) + - SVProgressHUD (2.3.1): + - SVProgressHUD/Core (= 2.3.1) + - SVProgressHUD/Core (2.3.1) - Toast (4.1.1) - WMZPageController (1.5.5) - YYKit (1.0.9): @@ -25,6 +29,7 @@ PODS: - ZFPlayer/Core (4.1.4) DEPENDENCIES: + - EmptyDataSet-Swift - ESTabBarController-swift - HWPanModal - Kingfisher @@ -33,6 +38,7 @@ DEPENDENCIES: - Moya - SmartCodable - SnapKit + - SVProgressHUD - Toast - WMZPageController - YYKit @@ -42,6 +48,7 @@ SPEC REPOS: trunk: - Alamofire - CocoaAsyncSocket + - EmptyDataSet-Swift - ESTabBarController-swift - HWPanModal - Kingfisher @@ -50,6 +57,7 @@ SPEC REPOS: - Moya - SmartCodable - SnapKit + - SVProgressHUD - Toast - WMZPageController - YYKit @@ -58,6 +66,7 @@ SPEC REPOS: SPEC CHECKSUMS: Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + EmptyDataSet-Swift: eb382c0c87a2d9c678077385a595cec52da38171 ESTabBarController-swift: 05593a6ad64700b03c0eb60ff625916370aa4136 HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 Kingfisher: 0621d0ac0c78fecb19f6dc5303bde2b52abaf2f5 @@ -66,11 +75,12 @@ SPEC CHECKSUMS: Moya: 138f0573e53411fb3dc17016add0b748dfbd78ee SmartCodable: 68b3598438181a938eed8ee5623e58ef3e3ea443 SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a + SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22 Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e WMZPageController: 87dd82d1e3528cd362de19b9a74fd6890d6e1906 YYKit: 7cda43304a8dc3696c449041e2cb3107b4e236e7 ZFPlayer: 5cf39e8d9f0c2394a014b0db4767b5b5a6bffe13 -PODFILE CHECKSUM: e5cac55fd92698becba7d142dc17ec724cd6313f +PODFILE CHECKSUM: 5a8b71939b2bf65623c166084b1e01d877b2979d COCOAPODS: 1.16.2 diff --git a/Veloria.xcodeproj/project.pbxproj b/Veloria.xcodeproj/project.pbxproj index e05b1da..8a35188 100644 --- a/Veloria.xcodeproj/project.pbxproj +++ b/Veloria.xcodeproj/project.pbxproj @@ -119,6 +119,21 @@ BF0FA7A12DE1AA5100C9E5F2 /* VPTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7A02DE1AA5100C9E5F2 /* VPTableView.swift */; }; BF0FA7A32DE1AB1800C9E5F2 /* VPWatchHistoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7A22DE1AB1800C9E5F2 /* VPWatchHistoryCell.swift */; }; BF0FA7A52DE4384100C9E5F2 /* AttributedString+VPAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7A42DE4384100C9E5F2 /* AttributedString+VPAdd.swift */; }; + BF0FA7AF2DE443E000C9E5F2 /* VPMeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7AE2DE443E000C9E5F2 /* VPMeViewController.swift */; }; + BF0FA7B12DE447EB00C9E5F2 /* VPMeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7B02DE447EB00C9E5F2 /* VPMeItem.swift */; }; + BF0FA7B32DE447FE00C9E5F2 /* VPMeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7B22DE447FE00C9E5F2 /* VPMeCell.swift */; }; + BF0FA7B62DE44E8000C9E5F2 /* VPWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7B52DE44E8000C9E5F2 /* VPWebView.swift */; }; + BF0FA7B82DE44FCC00C9E5F2 /* VPWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7B72DE44FCC00C9E5F2 /* VPWebViewController.swift */; }; + BF0FA7BA2DE451B900C9E5F2 /* UINavigationBar+VPAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7B92DE451B000C9E5F2 /* UINavigationBar+VPAdd.swift */; }; + BF0FA7BC2DE4563300C9E5F2 /* VPMeUserInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7BB2DE4563300C9E5F2 /* VPMeUserInfoCell.swift */; }; + BF0FA7BE2DE4592A00C9E5F2 /* UserDefaults+VPAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7BD2DE4591B00C9E5F2 /* UserDefaults+VPAdd.swift */; }; + BF0FA7C12DE45D5D00C9E5F2 /* VPUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7C02DE45D5D00C9E5F2 /* VPUserInfo.swift */; }; + BF0FA7C32DE45DE300C9E5F2 /* VPUserAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0FA7C22DE45DE300C9E5F2 /* VPUserAPI.swift */; }; + BF5E75AF2DE4632200DE9DFE /* VPAboutUsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E75AE2DE4632200DE9DFE /* VPAboutUsViewController.swift */; }; + BF5E75B12DE4656600DE9DFE /* VPCampaignWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E75B02DE4656600DE9DFE /* VPCampaignWebViewController.swift */; }; + BF5E75B32DE465EC00DE9DFE /* Dictionary+SPAdd.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E75B22DE465EA00DE9DFE /* Dictionary+SPAdd.swift */; }; + BF5E75B62DE46DB600DE9DFE /* UIScrollView+Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E75B52DE46DB600DE9DFE /* UIScrollView+Empty.swift */; }; + BF5E75B82DE46F7100DE9DFE /* VPNetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E75B72DE46F7100DE9DFE /* VPNetworkReachabilityManager.swift */; }; F939C04AD4003BA127F15C28 /* Pods_Veloria.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F57E87E765BF8D72A43DCA /* Pods_Veloria.framework */; }; /* End PBXBuildFile section */ @@ -244,6 +259,21 @@ BF0FA7A02DE1AA5100C9E5F2 /* VPTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPTableView.swift; sourceTree = ""; }; BF0FA7A22DE1AB1800C9E5F2 /* VPWatchHistoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPWatchHistoryCell.swift; sourceTree = ""; }; BF0FA7A42DE4384100C9E5F2 /* AttributedString+VPAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttributedString+VPAdd.swift"; sourceTree = ""; }; + BF0FA7AE2DE443E000C9E5F2 /* VPMeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPMeViewController.swift; sourceTree = ""; }; + BF0FA7B02DE447EB00C9E5F2 /* VPMeItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPMeItem.swift; sourceTree = ""; }; + BF0FA7B22DE447FE00C9E5F2 /* VPMeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPMeCell.swift; sourceTree = ""; }; + BF0FA7B52DE44E8000C9E5F2 /* VPWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPWebView.swift; sourceTree = ""; }; + BF0FA7B72DE44FCC00C9E5F2 /* VPWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPWebViewController.swift; sourceTree = ""; }; + BF0FA7B92DE451B000C9E5F2 /* UINavigationBar+VPAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationBar+VPAdd.swift"; sourceTree = ""; }; + BF0FA7BB2DE4563300C9E5F2 /* VPMeUserInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPMeUserInfoCell.swift; sourceTree = ""; }; + BF0FA7BD2DE4591B00C9E5F2 /* UserDefaults+VPAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+VPAdd.swift"; sourceTree = ""; }; + BF0FA7C02DE45D5D00C9E5F2 /* VPUserInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPUserInfo.swift; sourceTree = ""; }; + BF0FA7C22DE45DE300C9E5F2 /* VPUserAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPUserAPI.swift; sourceTree = ""; }; + BF5E75AE2DE4632200DE9DFE /* VPAboutUsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPAboutUsViewController.swift; sourceTree = ""; }; + BF5E75B02DE4656600DE9DFE /* VPCampaignWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPCampaignWebViewController.swift; sourceTree = ""; }; + BF5E75B22DE465EA00DE9DFE /* Dictionary+SPAdd.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Dictionary+SPAdd.swift"; sourceTree = ""; }; + BF5E75B52DE46DB600DE9DFE /* UIScrollView+Empty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIScrollView+Empty.swift"; sourceTree = ""; }; + BF5E75B72DE46F7100DE9DFE /* VPNetworkReachabilityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPNetworkReachabilityManager.swift; sourceTree = ""; }; E0BDA3570E00C90877E45AA0 /* Pods-VideoPlayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoPlayer.debug.xcconfig"; path = "Target Support Files/Pods-VideoPlayer/Pods-VideoPlayer.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -316,6 +346,8 @@ 1B056E352DDAC1DE007EE38D /* Libs */ = { isa = PBXGroup; children = ( + BF5E75B42DE46D9500DE9DFE /* Empty */, + BF0FA7BF2DE45D4500C9E5F2 /* User */, BF0FA7432DDF025A00C9E5F2 /* Player */, BF0FA6F22DDC603200C9E5F2 /* HUD */, BF0FA6D82DDC5C8200C9E5F2 /* Login */, @@ -328,6 +360,7 @@ 1B056E362DDAC1E8007EE38D /* Class */ = { isa = PBXGroup; children = ( + BF0FA7A62DE4437F00C9E5F2 /* Me */, BF0FA7952DE1948A00C9E5F2 /* MyList */, 1B056E522DDACBF4007EE38D /* Home */, BF0FA7422DDF024400C9E5F2 /* Explore */, @@ -344,6 +377,7 @@ 1B056E3A2DDAC21E007EE38D /* Model */, 1B056E422DDAC32C007EE38D /* Extension */, 1B056E3C2DDAC23D007EE38D /* Define */, + BF0FA7B42DE44E5100C9E5F2 /* WebView */, 1B056E3B2DDAC22D007EE38D /* Networking */, ); path = Base; @@ -410,6 +444,7 @@ BF0FA6D42DDC5B5D00C9E5F2 /* VPApi.swift */, BF0FA6D62DDC5BE100C9E5F2 /* VPURLPath.swift */, BF0FA6F02DDC600200C9E5F2 /* VPNetwork.swift */, + BF5E75B72DE46F7100DE9DFE /* VPNetworkReachabilityManager.swift */, ); path = Base; sourceTree = ""; @@ -417,6 +452,9 @@ 1B056E422DDAC32C007EE38D /* Extension */ = { isa = PBXGroup; children = ( + BF5E75B22DE465EA00DE9DFE /* Dictionary+SPAdd.swift */, + BF0FA7BD2DE4591B00C9E5F2 /* UserDefaults+VPAdd.swift */, + BF0FA7B92DE451B000C9E5F2 /* UINavigationBar+VPAdd.swift */, 1B056E432DDAC355007EE38D /* UIDevice+VPAdd.swift */, 1B056E452DDAC370007EE38D /* UIScreen+VPAdd.swift */, 1B056E5A2DDACD80007EE38D /* UIColor+VPAdd.swift */, @@ -547,6 +585,7 @@ children = ( BF0FA6F82DDC64E700C9E5F2 /* VPHomeAPI.swift */, BF0FA73C2DDED2D000C9E5F2 /* VPVideoAPI.swift */, + BF0FA7C22DE45DE300C9E5F2 /* VPUserAPI.swift */, ); path = API; sourceTree = ""; @@ -755,6 +794,68 @@ path = View; sourceTree = ""; }; + BF0FA7A62DE4437F00C9E5F2 /* Me */ = { + isa = PBXGroup; + children = ( + BF0FA7A72DE4438600C9E5F2 /* Controller */, + BF0FA7AC2DE443AE00C9E5F2 /* View */, + BF0FA7AD2DE443B700C9E5F2 /* Model */, + ); + path = Me; + sourceTree = ""; + }; + BF0FA7A72DE4438600C9E5F2 /* Controller */ = { + isa = PBXGroup; + children = ( + BF0FA7AE2DE443E000C9E5F2 /* VPMeViewController.swift */, + BF5E75AE2DE4632200DE9DFE /* VPAboutUsViewController.swift */, + BF5E75B02DE4656600DE9DFE /* VPCampaignWebViewController.swift */, + ); + path = Controller; + sourceTree = ""; + }; + BF0FA7AC2DE443AE00C9E5F2 /* View */ = { + isa = PBXGroup; + children = ( + BF0FA7B22DE447FE00C9E5F2 /* VPMeCell.swift */, + BF0FA7BB2DE4563300C9E5F2 /* VPMeUserInfoCell.swift */, + ); + path = View; + sourceTree = ""; + }; + BF0FA7AD2DE443B700C9E5F2 /* Model */ = { + isa = PBXGroup; + children = ( + BF0FA7B02DE447EB00C9E5F2 /* VPMeItem.swift */, + ); + path = Model; + sourceTree = ""; + }; + BF0FA7B42DE44E5100C9E5F2 /* WebView */ = { + isa = PBXGroup; + children = ( + BF0FA7B52DE44E8000C9E5F2 /* VPWebView.swift */, + BF0FA7B72DE44FCC00C9E5F2 /* VPWebViewController.swift */, + ); + path = WebView; + sourceTree = ""; + }; + BF0FA7BF2DE45D4500C9E5F2 /* User */ = { + isa = PBXGroup; + children = ( + BF0FA7C02DE45D5D00C9E5F2 /* VPUserInfo.swift */, + ); + path = User; + sourceTree = ""; + }; + BF5E75B42DE46D9500DE9DFE /* Empty */ = { + isa = PBXGroup; + children = ( + BF5E75B52DE46DB600DE9DFE /* UIScrollView+Empty.swift */, + ); + path = Empty; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -877,13 +978,18 @@ 1B056E742DDB2DD7007EE38D /* UIView+VPAdd.swift in Sources */, BF0FA6F12DDC600200C9E5F2 /* VPNetwork.swift in Sources */, BF0FA7502DDF0A9900C9E5F2 /* VPVideoPlayerCell.swift in Sources */, + BF5E75B62DE46DB600DE9DFE /* UIScrollView+Empty.swift in Sources */, 1B056E572DDACC6B007EE38D /* VPHomePageViewController.swift in Sources */, + BF0FA7BC2DE4563300C9E5F2 /* VPMeUserInfoCell.swift in Sources */, + BF0FA7B82DE44FCC00C9E5F2 /* VPWebViewController.swift in Sources */, BF0FA72A2DDC922F00C9E5F2 /* VPHomeRecommandCell.swift in Sources */, BF0FA7322DDEBD6400C9E5F2 /* AppDelegate+Config.swift in Sources */, + BF0FA7B32DE447FE00C9E5F2 /* VPMeCell.swift in Sources */, BF0FA6DF2DDC5E4D00C9E5F2 /* String+VPAdd.swift in Sources */, BF0FA7002DDC665300C9E5F2 /* VPShortModel.swift in Sources */, 1B056E7B2DDB37BA007EE38D /* VPGradientView.swift in Sources */, BF0FA7262DDC8F7600C9E5F2 /* VPCollectionView.swift in Sources */, + BF0FA7C32DE45DE300C9E5F2 /* VPUserAPI.swift in Sources */, BF0FA78B2DE164C100C9E5F2 /* VPSearchResultCell.swift in Sources */, BF0FA71D2DDC807200C9E5F2 /* UIImageView+VPAdd.swift in Sources */, BF0FA6DC2DDC5CD700C9E5F2 /* VPTokenModel.swift in Sources */, @@ -916,12 +1022,15 @@ BF0FA7522DDF134700C9E5F2 /* VPVideoPlayerControlView.swift in Sources */, BF0FA7852DE1561D00C9E5F2 /* VPSearchRecommendedCell.swift in Sources */, BF0FA7832DE1533E00C9E5F2 /* VPGradientLabel.swift in Sources */, + BF0FA7B12DE447EB00C9E5F2 /* VPMeItem.swift in Sources */, 1B056E2C2DDAC0FD007EE38D /* SceneDelegate.swift in Sources */, BF0FA75D2DDF208400C9E5F2 /* VPExplorePlayerControlView.swift in Sources */, 1B056E462DDAC370007EE38D /* UIScreen+VPAdd.swift in Sources */, BF0FA7692DE0502900C9E5F2 /* VPEpisodeCell.swift in Sources */, BF0FA73D2DDED2D000C9E5F2 /* VPVideoAPI.swift in Sources */, BF0FA6EE2DDC5F8700C9E5F2 /* JXUUID.m in Sources */, + BF5E75B12DE4656600DE9DFE /* VPCampaignWebViewController.swift in Sources */, + BF0FA7BA2DE451B900C9E5F2 /* UINavigationBar+VPAdd.swift in Sources */, BF0FA77D2DE078D400C9E5F2 /* VPSearchRecommendedView.swift in Sources */, BF0FA7812DE150F700C9E5F2 /* VPSearchRecommendedContentView.swift in Sources */, BF0FA7872DE1601200C9E5F2 /* VPTextField.swift in Sources */, @@ -933,6 +1042,7 @@ BF0FA6DA2DDC5CB600C9E5F2 /* VPLoginManager.swift in Sources */, BF0FA74A2DDF04E200C9E5F2 /* VPPlayerProtocol.swift in Sources */, BF0FA72C2DDD7B7300C9E5F2 /* VPHomeRankingContentCell.swift in Sources */, + BF0FA7AF2DE443E000C9E5F2 /* VPMeViewController.swift in Sources */, BF0FA7942DE16E9300C9E5F2 /* JXTagView.swift in Sources */, BF0FA7A52DE4384100C9E5F2 /* AttributedString+VPAdd.swift in Sources */, BF0FA7652DE00A0E00C9E5F2 /* VPDetailPlayerControlView.swift in Sources */, @@ -951,11 +1061,13 @@ BF0FA79D2DE198C600C9E5F2 /* VPWatchHistoryViewController.swift in Sources */, 1B056E6A2DDAD0BF007EE38D /* VPLocalizedManager.swift in Sources */, BF0FA7242DDC888F00C9E5F2 /* VPHomeRecommandContentCell.swift in Sources */, + BF5E75AF2DE4632200DE9DFE /* VPAboutUsViewController.swift in Sources */, BF0FA78F2DE16B2A00C9E5F2 /* VPUserDefaultsKey.swift in Sources */, BF0FA7192DDC7F4900C9E5F2 /* VPHomeBannerCell.swift in Sources */, BF0FA7712DE062EB00C9E5F2 /* VPVideoRateModel.swift in Sources */, BF0FA7022DDC667C00C9E5F2 /* VPVideoInfoModel.swift in Sources */, BF0FA77B2DE0788A00C9E5F2 /* UIStackView+VPAdd.swift in Sources */, + BF0FA7BE2DE4592A00C9E5F2 /* UserDefaults+VPAdd.swift in Sources */, BF0FA76F2DE062A700C9E5F2 /* VPRateSelectedView.swift in Sources */, BF0FA7772DE0735800C9E5F2 /* VPSearchInputView.swift in Sources */, BF0FA7892DE161F200C9E5F2 /* VPSearchResultView.swift in Sources */, @@ -969,13 +1081,17 @@ BF0FA73F2DDEF26E00C9E5F2 /* VPHomeSearchButton.swift in Sources */, 1B056E512DDACBE5007EE38D /* VPViewController.swift in Sources */, BF0FA7122DDC6D2C00C9E5F2 /* VPHomeModuleItem.swift in Sources */, + BF5E75B32DE465EC00DE9DFE /* Dictionary+SPAdd.swift in Sources */, BF0FA7162DDC78FF00C9E5F2 /* ZKCycleScrollViewFlowLayout.swift in Sources */, BF0FA7172DDC78FF00C9E5F2 /* ZKCycleScrollView.swift in Sources */, BF0FA7612DDFFE7100C9E5F2 /* VPVideoDetailModel.swift in Sources */, + BF5E75B82DE46F7100DE9DFE /* VPNetworkReachabilityManager.swift in Sources */, BF0FA6D52DDC5B5D00C9E5F2 /* VPApi.swift in Sources */, + BF0FA7C12DE45D5D00C9E5F2 /* VPUserInfo.swift in Sources */, BF0FA6FC2DDC657500C9E5F2 /* VPHomeDataModel.swift in Sources */, BF0FA7392DDECF8900C9E5F2 /* VPHomeListViewController.swift in Sources */, BF0FA6F62DDC616300C9E5F2 /* VPToast.swift in Sources */, + BF0FA7B62DE44E8000C9E5F2 /* VPWebView.swift in Sources */, 1B056E492DDAC3DF007EE38D /* VPAppTool.swift in Sources */, BF0FA74E2DDF067E00C9E5F2 /* VPVideoPlayViewModel.swift in Sources */, BF0FA75B2DDF206000C9E5F2 /* VPExplorePlayerCell.swift in Sources */, diff --git a/Veloria/AppDelegate/AppDelegate+Config.swift b/Veloria/AppDelegate/AppDelegate+Config.swift index 38bc9e2..2481478 100644 --- a/Veloria/AppDelegate/AppDelegate+Config.swift +++ b/Veloria/AppDelegate/AppDelegate+Config.swift @@ -12,6 +12,8 @@ extension AppDelegate { func appConfig() { UIButton.vp_bt_Awake() UIView.vp_Awake() + + VPToast.config() } } diff --git a/Veloria/AppDelegate/AppDelegate.swift b/Veloria/AppDelegate/AppDelegate.swift index 045c7af..6aef8d6 100644 --- a/Veloria/AppDelegate/AppDelegate.swift +++ b/Veloria/AppDelegate/AppDelegate.swift @@ -15,6 +15,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { appConfig() + ///开启网络监控 + VPNetworkReachabilityManager.manager.startMonitoring() + NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: VPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil) + + VPLoginManager.manager.updateUserInfo(completer: nil) return true } @@ -36,3 +41,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } +extension AppDelegate { + + @objc private func reachabilityDidChangeNotification() { + if VPNetworkReachabilityManager.manager.isReachable == true { + VPLoginManager.manager.updateUserInfo(completer: nil) + } + } + +} + diff --git a/Veloria/Base/Controller/VPTabBarController.swift b/Veloria/Base/Controller/VPTabBarController.swift index 82c56fd..8dce1ae 100644 --- a/Veloria/Base/Controller/VPTabBarController.swift +++ b/Veloria/Base/Controller/VPTabBarController.swift @@ -6,7 +6,6 @@ // import UIKit -import ESTabBarController_swift class VPTabBarController: UITabBarController { @@ -53,7 +52,6 @@ class VPTabBarController: UITabBarController { view.backgroundColor = .color000000() -// ESTabBarController vp_setup() self.tabBar.isTranslucent = true @@ -89,7 +87,7 @@ extension VPTabBarController { let nav1 = createNavigationController(viewController: VPHomePageViewController(), title: "Home".localized, image: UIImage(named: "tabbar_icon_01"), selectedImage: UIImage(named: "tabbar_icon_01_selected")) let nav2 = createNavigationController(viewController: VPExploreViewController(), title: "Explore".localized, image: UIImage(named: "tabbar_icon_02"), selectedImage: UIImage(named: "tabbar_icon_02_selected")) let nav3 = createNavigationController(viewController: VPMyListViewController(), title: "My List".localized, image: UIImage(named: "tabbar_icon_03"), selectedImage: UIImage(named: "tabbar_icon_03_selected")) - let nav4 = createNavigationController(viewController: VPHomePageViewController(), title: "Home".localized, image: UIImage(named: "tabbar_icon_04"), selectedImage: UIImage(named: "tabbar_icon_04_selected")) + let nav4 = createNavigationController(viewController: VPMeViewController(), title: "Me".localized, image: UIImage(named: "tabbar_icon_04"), selectedImage: UIImage(named: "tabbar_icon_04_selected")) viewControllers = [nav1, nav2, nav3, nav4] @@ -97,13 +95,6 @@ extension VPTabBarController { private func createNavigationController(viewController: UIViewController, title: String?, image: UIImage?, selectedImage: UIImage?) -> UINavigationController { -// let tabBarContentView = VPTabBarItemContentView() -// let tabBarItem = ESTabBarItem(tabBarContentView, title: title, image: image, selectedImage: selectedImage) -// -// tabBarItem.contentView?.renderingMode = .alwaysOriginal -// tabBarItem.contentView?.textColor = .colorFFFFFF() -// tabBarItem.contentView?.highlightTextColor = .colorFFFFFF() -// tabBarItem.contentView?.titleLabel.font = .fontRegular(ofSize: 13) let tabBarItem = VPTabBarItem() tabBarItem.title = title @@ -111,7 +102,6 @@ extension VPTabBarController { tabBarItem.selectedImage = selectedImage let nav = VPNavigationController(rootViewController: viewController) -// nav.tabBarItem.title = title nav.tabBarItem = tabBarItem return nav } @@ -124,11 +114,6 @@ extension VPTabBarController { guard let idx = tabBar.items?.firstIndex(of: item) else { return; } -// if idx == tabBar.items!.count - 1, ESTabBarController.isShowingMore(self) { -// ignoreNextSelection = true -// selectedViewController = moreNavigationController -// return; -// } if let vc = viewControllers?[idx] { ignoreNextSelection = true selectedIndex = idx @@ -149,3 +134,24 @@ extension VPTabBarController { } } + + +extension VPTabBarController { + func openHistoryPage() { + + var index: Int? + var viewController: VPMyListViewController? + self.viewControllers?.enumerated().forEach({ + guard let nav = $1 as? UINavigationController else { return } + if let vc = nav.viewControllers.first as? VPMyListViewController { + index = $0 + viewController = vc + } + + }) + if let index = index { + self.selectedIndex = index + viewController?.showHistoryPage() + } + } +} diff --git a/Veloria/Base/Controller/VPViewController.swift b/Veloria/Base/Controller/VPViewController.swift index 842f2df..288f1d5 100644 --- a/Veloria/Base/Controller/VPViewController.swift +++ b/Veloria/Base/Controller/VPViewController.swift @@ -92,3 +92,40 @@ extension VPViewController { } } } + +extension UIViewController { + ///设置导航默认样式 + func setNavigationNormalStyle(backgroundColor: UIColor = .clear, + isTranslucent: Bool = true, + prefersLargeTitles: Bool = false) + { + self.setNavigationBackgroundColor(color: backgroundColor, isTranslucent: isTranslucent) + self.setNavigationTitleStyle() + self.navigationController?.navigationBar.prefersLargeTitles = prefersLargeTitles + } + + ///设置导航背景色 + func setNavigationBackgroundColor(color: UIColor?, isTranslucent: Bool = false) { + guard let nav = navigationController else { return } + if nav.visibleViewController == self { + nav.navigationBar.vp_setBackgroundColor(backgroundColor: color) + nav.navigationBar.vp_setTranslucent(isTranslucent: isTranslucent) + } + } + + ///设置标题样式 + func setNavigationTitleStyle(color: UIColor? = nil, font: UIFont? = nil) { + guard let nav = navigationController else { return } + if nav.visibleViewController == self { + //标题样式 + var titleTextAttributes = UINavigationBar.vp_normalTitleTextAttributes + if let color = color { + titleTextAttributes[NSAttributedString.Key.foregroundColor] = color + } + if let font = font { + titleTextAttributes[NSAttributedString.Key.font] = font + } + nav.navigationBar.vp_setTitleTextAttributes(titleTextAttributes: titleTextAttributes) + } + } +} diff --git a/Veloria/Base/Define/VPUserDefaultsKey.swift b/Veloria/Base/Define/VPUserDefaultsKey.swift index d700329..bbfb6b8 100644 --- a/Veloria/Base/Define/VPUserDefaultsKey.swift +++ b/Veloria/Base/Define/VPUserDefaultsKey.swift @@ -9,3 +9,9 @@ import UIKit ///搜索记录 let kVPSearchHistoryDefaultsKey = "kVPSearchHistoryDefaultsKey" + +///登录token +let kVPLoginTokenDefaultsKey = "kVPLoginTokenDefaultsKey" + +///用户信息 +let kVPLoginUserInfoDefaultsKey = "kSPLoginUserInfoDefaultsKey" diff --git a/Veloria/Base/Extension/Dictionary+SPAdd.swift b/Veloria/Base/Extension/Dictionary+SPAdd.swift new file mode 100644 index 0000000..7e644c5 --- /dev/null +++ b/Veloria/Base/Extension/Dictionary+SPAdd.swift @@ -0,0 +1,23 @@ +// +// Dictionary+SPAdd.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +extension Dictionary { + + func toJsonString() -> String? { + do { + let data = try JSONSerialization.data(withJSONObject: self) + let jsonStr = String(data: data, encoding: .utf8) + return jsonStr + } catch { + + } + return nil + } + +} diff --git a/Veloria/Base/Extension/UIColor+VPAdd.swift b/Veloria/Base/Extension/UIColor+VPAdd.swift index 7b42232..eea58c0 100644 --- a/Veloria/Base/Extension/UIColor+VPAdd.swift +++ b/Veloria/Base/Extension/UIColor+VPAdd.swift @@ -97,4 +97,8 @@ extension UIColor { static func colorD87675(alpha: CGFloat = 1) -> UIColor { return UIColor(rgb: 0xD87675, alpha: alpha) } + + static func colorB5B5B5(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xB5B5B5, alpha: alpha) + } } diff --git a/Veloria/Base/Extension/UINavigationBar+VPAdd.swift b/Veloria/Base/Extension/UINavigationBar+VPAdd.swift new file mode 100644 index 0000000..09d47f3 --- /dev/null +++ b/Veloria/Base/Extension/UINavigationBar+VPAdd.swift @@ -0,0 +1,88 @@ +// +// UINavigationBar+VPAdd.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +extension UINavigationBar { + + static let vp_normalTitleFont = UIFont.fontBold(ofSize: 16) + static var vp_normalTitleColor: UIColor { + get { + return .colorFFFFFF() + } + } + + /** + 默认标题样式 + */ + static var vp_normalTitleTextAttributes: [NSAttributedString.Key : Any] { + get { + return [ + NSAttributedString.Key.font : vp_normalTitleFont, + NSAttributedString.Key.foregroundColor : vp_normalTitleColor + ] + } + } + + /** + 默认背景色 + */ + static var vp_normalBackgroundColor: UIColor { + get { + return .black + } + } + + @available(iOS 13.0, *) + static let navBarAppearance: UINavigationBarAppearance = { + let navBarAppearance = UINavigationBarAppearance() + navBarAppearance.configureWithOpaqueBackground() + // 背景色 + navBarAppearance.backgroundColor = vp_normalBackgroundColor + // 去掉半透明效果 + navBarAppearance.backgroundEffect = nil + // 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线) + navBarAppearance.shadowColor = UIColor.clear + // 字体颜色 + navBarAppearance.titleTextAttributes = vp_normalTitleTextAttributes + + return navBarAppearance + }() + + + func vp_setTranslucent(isTranslucent: Bool) { + self.isTranslucent = isTranslucent + } + + func vp_setBackgroundColor(backgroundColor: UIColor?) { + if #available(iOS 15.0, *) { + UINavigationBar.navBarAppearance.backgroundColor = backgroundColor + self.standardAppearance = UINavigationBar.navBarAppearance + self.scrollEdgeAppearance = UINavigationBar.navBarAppearance + } + + if let backgroundColor = backgroundColor { + self.setBackgroundImage(UIImage(color: backgroundColor), for: .default) + } else { + self.setBackgroundImage(UIImage(), for: .default) + } + } + + func vp_setTitleTextAttributes(titleTextAttributes: [NSAttributedString.Key : Any]?) { + + if #available(iOS 15.0, *) { + if let titleTextAttributes = titleTextAttributes { + UINavigationBar.navBarAppearance.titleTextAttributes = titleTextAttributes + } + self.scrollEdgeAppearance = UINavigationBar.navBarAppearance + self.standardAppearance = UINavigationBar.navBarAppearance + } else { + + self.titleTextAttributes = titleTextAttributes + } + } +} diff --git a/Veloria/Base/Extension/UserDefaults+VPAdd.swift b/Veloria/Base/Extension/UserDefaults+VPAdd.swift new file mode 100644 index 0000000..8184157 --- /dev/null +++ b/Veloria/Base/Extension/UserDefaults+VPAdd.swift @@ -0,0 +1,45 @@ +// +// UserDefaults+VPAdd.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import Foundation + + +extension UserDefaults { + + static func vp_setObject(_ obj: NSSecureCoding?, forKey key: String) { + let defaults = UserDefaults.standard + + guard let obj = obj else { + defaults.removeObject(forKey: key) + return + } + + do { + let data = try NSKeyedArchiver.archivedData(withRootObject: obj, requiringSecureCoding: true) + defaults.set(data, forKey: key) + } catch { + print("Error archiving object: \(error)") + } + } + + static func vp_object(forKey key: String, as type: T.Type) -> T? { + let defaults = UserDefaults.standard + + guard let data = defaults.data(forKey: key) else { + return nil + } + + do { + let object = try NSKeyedUnarchiver.unarchivedObject(ofClass: type, from: data) + return object + } catch { + print("Error unarchiving object: \(error)") + return nil + } + } + +} diff --git a/Veloria/Base/Networking/API/VPHomeAPI.swift b/Veloria/Base/Networking/API/VPHomeAPI.swift index a5cc769..c86ef59 100644 --- a/Veloria/Base/Networking/API/VPHomeAPI.swift +++ b/Veloria/Base/Networking/API/VPHomeAPI.swift @@ -13,7 +13,7 @@ class VPHomeAPI: NSObject { static func requestHomeData(completer: ((_ list: [VPHomeModuleItem]?) -> Void)?) { var param = VPNetworkParameters(path: "/home/all-modules") param.method = .get - + param.isToast = true VPNetwork.request(parameters: param) { (response: VPNetworkResponse>) in completer?(response.data?.list) diff --git a/Veloria/Base/Networking/API/VPUserAPI.swift b/Veloria/Base/Networking/API/VPUserAPI.swift new file mode 100644 index 0000000..a740cd4 --- /dev/null +++ b/Veloria/Base/Networking/API/VPUserAPI.swift @@ -0,0 +1,22 @@ +// +// VPUserAPI.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +class VPUserAPI: NSObject { + + ///获取用户信息 + static func requestUserInfo(completer: ((_ userInfo: VPUserInfo?) -> Void)?) { + + var param = VPNetworkParameters(path: "/customer/info") + param.method = .get + + VPNetwork.request(parameters: param) { (response: VPNetworkResponse) in + completer?(response.data) + } + } +} diff --git a/Veloria/Base/Networking/Base/VPNetworkReachabilityManager.swift b/Veloria/Base/Networking/Base/VPNetworkReachabilityManager.swift new file mode 100644 index 0000000..9045755 --- /dev/null +++ b/Veloria/Base/Networking/Base/VPNetworkReachabilityManager.swift @@ -0,0 +1,60 @@ +// +// VPNetworkReachabilityManager.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit +import Network + +class VPNetworkReachabilityManager { + + static let manager = VPNetworkReachabilityManager() + + ///是否有网 + var isReachable: Bool? + + + private let monitor = NWPathMonitor() + private let queue = DispatchQueue(label: "NetworkMonitorQueue") + + func startMonitoring() { + + monitor.pathUpdateHandler = { [weak self] path in + guard let self = self else { return } + if path.status == .satisfied { + if self.isReachable == false { + self.isReachable = true + DispatchQueue.main.async { + NotificationCenter.default.post(name: VPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil) + } + } else { + self.isReachable = true + } + + } else { + if self.isReachable == true { + self.isReachable = false + DispatchQueue.main.async { + NotificationCenter.default.post(name: VPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil) + } + } else { + self.isReachable = false + } + } + } + + monitor.start(queue: queue) + } + + func stopMonitoring() { + monitor.cancel() + } + +} + +extension VPNetworkReachabilityManager { + ///网络发生变化 + @objc static let reachabilityDidChangeNotification = NSNotification.Name(rawValue: "VPNetworkReachabilityManager.reachabilityDidChangeNotification") +} diff --git a/Veloria/Base/Networking/Base/VPURLPath.swift b/Veloria/Base/Networking/Base/VPURLPath.swift index b3dc47f..1dc617d 100644 --- a/Veloria/Base/Networking/Base/VPURLPath.swift +++ b/Veloria/Base/Networking/Base/VPURLPath.swift @@ -22,25 +22,25 @@ let VPCampaignWebURL = "https://campaign.moviatv.com" #endif ///用户协议 -let VPUserAgreementWebUrl = VPWebBaseURL + "/user_policy" +let kVPUserAgreementWebUrl = VPWebBaseURL + "/user_policy" ///隐私协议 -let VPPrivacyPolicyWebUrl = VPWebBaseURL + "/private" +let kVPPrivacyPolicyWebUrl = VPWebBaseURL + "/private" ///儿童个人信息保护规则 -let VPInformationProtectionWebUrl = VPWebBaseURL + "/information_protection" +let kVPInformationProtectionWebUrl = VPWebBaseURL + "/information_protection" ///第三方共享清单 -let VPInformationSharingWebUrl = VPWebBaseURL + "/information_sharing" +let kVPInformationSharingWebUrl = VPWebBaseURL + "/information_sharing" ///收集个人信息明示清单 -let VPPersoInforDisclosureWebUrl = VPWebBaseURL + "/persoInfor_disclosure" +let kVPPersoInforDisclosureWebUrl = VPWebBaseURL + "/persoInfor_disclosure" ///全国青少年互联网文明公约 -let VPCivizatioConventionWebUrl = VPWebBaseURL + "/civizatio_convention" +let kVPCivizatioConventionWebUrl = VPWebBaseURL + "/civizatio_convention" ///会员服务协议 -let VPMemberShipAgreement = VPWebBaseURL + "/member_ship_agreement" +let kVPMemberShipAgreement = VPWebBaseURL + "/member_ship_agreement" ///反馈首页 -let VPFeedBackHomeWebUrl = VPCampaignWebURL + "/pages/leave/index" +let kVPFeedBackHomeWebUrl = VPCampaignWebURL + "/pages/leave/index" ///反馈列表 -let VPFeedBackListWebUrl = VPCampaignWebURL + "/pages/leave/list" +let kVPFeedBackListWebUrl = VPCampaignWebURL + "/pages/leave/list" ///反馈详情 -let VPFeedBackDetailWebUrl = VPCampaignWebURL + "/pages/leave/detail" +let kVPFeedBackDetailWebUrl = VPCampaignWebURL + "/pages/leave/detail" ///活动页面 -let VPRewardsWebUrl = VPCampaignWebURL +let kVPRewardsWebUrl = VPCampaignWebURL diff --git a/Veloria/Base/View/VPTableView.swift b/Veloria/Base/View/VPTableView.swift index 33641df..d2549a8 100644 --- a/Veloria/Base/View/VPTableView.swift +++ b/Veloria/Base/View/VPTableView.swift @@ -39,11 +39,9 @@ class VPTableView: UITableView { } get { var margins = super.layoutMargins - if #available(iOS 13.0, *) { - if self.style == .insetGrouped { - margins.left = self.safeAreaInsets.left + insetGroupedMargins - margins.right = self.safeAreaInsets.right + insetGroupedMargins - } + if self.style == .insetGrouped { + margins.left = self.safeAreaInsets.left + insetGroupedMargins + margins.right = self.safeAreaInsets.right + insetGroupedMargins } return margins } diff --git a/Veloria/Base/View/VPTableViewCell.swift b/Veloria/Base/View/VPTableViewCell.swift index 66aea11..da19e57 100644 --- a/Veloria/Base/View/VPTableViewCell.swift +++ b/Veloria/Base/View/VPTableViewCell.swift @@ -9,6 +9,11 @@ import UIKit class VPTableViewCell: UITableViewCell { + private(set) lazy var indicatorImageView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "arrow_right_icon_02")) + return imageView + }() + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) diff --git a/Veloria/Base/WebView/VPWebView.swift b/Veloria/Base/WebView/VPWebView.swift new file mode 100644 index 0000000..601f225 --- /dev/null +++ b/Veloria/Base/WebView/VPWebView.swift @@ -0,0 +1,197 @@ +// +// VPWebView.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit +@preconcurrency import WebKit + +//MARK:-------------- VPWebViewDelegate -------------- +@objc protocol VPWebViewDelegate: NSObjectProtocol { + + @objc optional func webView(_ webView: VPWebView, shouldStartLoadWith navigationAction: WKNavigationAction) -> Bool + + @objc optional func webViewDidStartLoad(_ webView: VPWebView) + + @objc optional func webViewDidFinishLoad(_ webView: VPWebView) + + @objc optional func webView(_ webView: VPWebView, didFailLoadWithError error: Error) + + ///进度 + @objc optional func webView(webView: VPWebView, didChangeProgress progress: CGFloat) + ///标题 + @objc optional func webView(webView: VPWebView, didChangeTitle title: String) + + ///web交互用 + @objc optional func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) + +} + +class VPWebView: WKWebView { + + weak var delegate: VPWebViewDelegate? + +// private(set) var scriptMessageHandlerArray: [SPWebViewMessageName] = [ +// WebMessageAPP, +// WebMessageOpenFeedbackList, +// WebMessageOpenFeedbackDetail, +// WebMessageOpenPhotoPicker, +// ] + + + deinit { + + self.removeObserver(self, forKeyPath: "estimatedProgress") + self.removeObserver(self, forKeyPath: "title") + + } + + override init(frame: CGRect, configuration: WKWebViewConfiguration) { + super.init(frame: frame, configuration: configuration) +// addScriptMessageHandler() + _setupInit() + } + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + private func _setupInit() { + + self.isOpaque = false + self.uiDelegate = self + self.navigationDelegate = self + self.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil) + self.addObserver(self, forKeyPath: "title", options: .new, context: nil) + + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if object as? VPWebView == self { + if keyPath == "estimatedProgress", let progress = change?[NSKeyValueChangeKey.newKey] as? CGFloat { + self.delegate?.webView?(webView: self, didChangeProgress: progress) + } else if keyPath == "title", let title = change?[NSKeyValueChangeKey.newKey] as? String { + self.delegate?.webView?(webView: self, didChangeTitle: title) + } + } + } + + func load(urlStr: String) { + guard let url = URL(string: urlStr) else { return } + var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 30) + self.load(request) + } + +// func removeScriptMessageHandler() { +// self.scriptMessageHandlerArray.forEach{ +// configuration.userContentController.removeScriptMessageHandler(forName: $0) +// } +// } +// func addScriptMessageHandler() { +// self.scriptMessageHandlerArray.forEach{ +// configuration.userContentController.add(YYWeakProxy(target: self) as! WKScriptMessageHandler, name: $0) +// } +// } + + +} + +//MARK:-------------- WKUIDelegate -------------- +extension VPWebView: WKUIDelegate { + + func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) { + let alertController = UIAlertController(title: "提示", message: message, preferredStyle: .alert) + alertController.addAction(UIAlertAction(title: "确认", style: .default, handler: { (action) in + completionHandler() + })) + self.viewController?.present(alertController, animated: true, completion: nil) + } + + func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) { + let alertController = UIAlertController(title: "提示", message: message, preferredStyle: .alert) + alertController.addAction(UIAlertAction(title: "取消", style: .cancel, handler: { (action) in + completionHandler(false) + })) + alertController.addAction(UIAlertAction(title: "确认", style: .default, handler: { (action) in + completionHandler(true) + })) + self.viewController?.present(alertController, animated: true, completion: nil) + } + + func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (String?) -> Void) { + let alertController = UIAlertController(title: prompt, message: "", preferredStyle: .alert) + alertController.addTextField { (textField) in + textField.text = defaultText + } + alertController.addAction(UIAlertAction(title: "完成", style: .default, handler: { (action) in + completionHandler(alertController.textFields?.first?.text) + })) + self.viewController?.present(alertController, animated: true, completion: nil) + } +} + +//MARK:-------------- WKNavigationDelegate -------------- +extension VPWebView: WKNavigationDelegate { + + func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { + + decisionHandler(.allow); + } + + func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { + vpLog(message: navigationAction.request.url) + + if let url = navigationAction.request.url, + url.scheme != "http", + url.scheme != "https" + { + UIApplication.shared.open(url) + decisionHandler(.cancel) + return + } + + //防止抓包 +// if JXRequestHttpProxy.isIntercept() { +// decisionHandler(.cancel) +// return +// } + + + if let result = self.delegate?.webView?(self, shouldStartLoadWith: navigationAction) { + if result { + decisionHandler(.allow) + } else { + decisionHandler(.cancel) + } + } else { + decisionHandler(.allow) + } + } + + func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { + self.delegate?.webViewDidStartLoad?(self) + } + + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { + self.delegate?.webViewDidFinishLoad?(self) + } + + func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { + self.delegate?.webView?(self, didFailLoadWithError: error) + } + + func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { + self.delegate?.webView?(self, didFailLoadWithError: error) + } + + +} + +//MARK:-------------- WKScriptMessageHandler -------------- +extension VPWebView: WKScriptMessageHandler { + + func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { + self.delegate?.userContentController?(userContentController, didReceive: message) + } + +} diff --git a/Veloria/Base/WebView/VPWebViewController.swift b/Veloria/Base/WebView/VPWebViewController.swift new file mode 100644 index 0000000..c2d375d --- /dev/null +++ b/Veloria/Base/WebView/VPWebViewController.swift @@ -0,0 +1,99 @@ +// +// VPWebViewController.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit +import WebKit + +class VPWebViewController: VPViewController { + + var urlStr: String? + + ///自动设置标题 + var autoTitle = true + + private(set) lazy var webView: VPWebView = { + let controller = WKUserContentController() + + let config = WKWebViewConfiguration() + config.userContentController = controller + config.preferences.javaScriptEnabled = true + /** 默认是不能通过JS自动打开窗口的,必须通过用户交互才能打开 */ + config.preferences.javaScriptCanOpenWindowsAutomatically = true + let webView = VPWebView(frame: self.view.bounds, configuration: config) + webView.delegate = self + return webView + }() + + override func viewDidLoad() { + super.viewDidLoad() + + + _setupUI() + + if let url = urlStr { + self.load(urlString: url) + } + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + self.setNavigationNormalStyle() + } + + func load(urlString: String) { + let str: String = urlString + + guard let url = URL(string: str) else { return } + let request = URLRequest(url: url, timeoutInterval: 30) + + self.webView.load(request) + } + + func reload() { + self.webView.reload() + } + +} + +extension VPWebViewController { + + private func _setupUI() { + self.view.addSubview(webView) + + self.webView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(0) + make.right.equalToSuperview().offset(0) + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + make.bottom.equalToSuperview().offset(0) + } + } + +} + +//MARK: -------------- VPWebViewDelegate -------------- +extension VPWebViewController: VPWebViewDelegate { + + func webView(webView: VPWebView, didChangeTitle title: String) { + if autoTitle { + self.title = title + } + } + + func webView(_ webView: VPWebView, didFailLoadWithError error: any Error) { + vpLog(message: error) + } + + func webViewDidFinishLoad(_ webView: VPWebView) { + vpLog(message: "网页加载完成") + + } + + func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { +// _webViewUserContentController(didReceive: message) + } +} diff --git a/Veloria/Class/Home/Controller/VPHomePageViewController.swift b/Veloria/Class/Home/Controller/VPHomePageViewController.swift index 4718eff..71c2193 100644 --- a/Veloria/Class/Home/Controller/VPHomePageViewController.swift +++ b/Veloria/Class/Home/Controller/VPHomePageViewController.swift @@ -118,17 +118,19 @@ class VPHomePageViewController: VPViewController { private lazy var historyButton: UIButton = { let button = UIButton(type: .custom) button.setImage(UIImage(named: "history_icon_01"), for: .normal) + button.addTarget(self, action: #selector(handleHistoryButton), for: .touchUpInside) return button }() override func viewDidLoad() { super.viewDidLoad() + NotificationCenter.default.addObserver(self, selector: #selector(reachabilityDidChangeNotification), name: VPNetworkReachabilityManager.reachabilityDidChangeNotification, object: nil) requestHomeData() - setupPageView() vp_setupUI() + } override func viewWillAppear(_ animated: Bool) { @@ -172,6 +174,21 @@ class VPHomePageViewController: VPViewController { self.navigationController?.pushViewController(vc, animated: true) } + @objc private func handleHistoryButton() { + (VPAppTool.rootViewController as? VPTabBarController)?.openHistoryPage() + } + +} + +extension VPHomePageViewController { + @objc private func reachabilityDidChangeNotification() { + if VPNetworkReachabilityManager.manager.isReachable == true { + if self.viewModel.oldModuleList == nil { + requestHomeData() + } + } + + } } extension VPHomePageViewController { @@ -199,8 +216,6 @@ extension VPHomePageViewController { make.width.height.equalTo(40) make.centerY.equalTo(searchButton) } - - } } diff --git a/Veloria/Class/Home/Model/VPHomeModuleItem.swift b/Veloria/Class/Home/Model/VPHomeModuleItem.swift index 06f2f71..8c571a9 100644 --- a/Veloria/Class/Home/Model/VPHomeModuleItem.swift +++ b/Veloria/Class/Home/Model/VPHomeModuleItem.swift @@ -35,8 +35,19 @@ class VPHomeModuleItem: VPModel, SmartCodable { self.list = [VPShortModel].deserialize(from: data) } } else if let data = data as? [String : Any] { - title = data["title"] as? String - list = [VPShortModel].deserialize(from: data["list"] as? [[String : Any]]) + var dataList: [[String : Any]]? + if let list = data["list"] as? [[String : Any]] { + self.title = data["title"] as? String + dataList = list + + } else if let list = data["shortPlayList"] as? [[String : Any]] { + dataList = list + } + + if let dataList = dataList { + self.list = [VPShortModel].deserialize(from: dataList) + } + } } diff --git a/Veloria/Class/Me/Controller/VPAboutUsViewController.swift b/Veloria/Class/Me/Controller/VPAboutUsViewController.swift new file mode 100644 index 0000000..039e520 --- /dev/null +++ b/Veloria/Class/Me/Controller/VPAboutUsViewController.swift @@ -0,0 +1,25 @@ +// +// VPAboutUsViewController.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +class VPAboutUsViewController: VPViewController { + + override func viewDidLoad() { + super.viewDidLoad() + self.title = "About Us".localized + + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + setNavigationNormalStyle() + } + + +} diff --git a/Veloria/Class/Me/Controller/VPCampaignWebViewController.swift b/Veloria/Class/Me/Controller/VPCampaignWebViewController.swift new file mode 100644 index 0000000..e89f07d --- /dev/null +++ b/Veloria/Class/Me/Controller/VPCampaignWebViewController.swift @@ -0,0 +1,83 @@ +// +// VPCampaignWebViewController.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +class VPCampaignWebViewController: VPWebViewController { + + var id: String? + + ///重试次数 + private var receiveDataCount = 0 + + override func viewDidLoad() { + super.viewDidLoad() + autoTitle = false + if urlStr == kVPFeedBackListWebUrl { + self.title = "Feedback History".localized + } else if urlStr == kVPFeedBackHomeWebUrl { + self.title = "Feedback".localized + } else if urlStr == kVPFeedBackDetailWebUrl { + self.title = "Feedback Details".localized + } else if urlStr == kVPRewardsWebUrl { + self.title = "Rewards".localized + } + + self.webView.scrollView.vp_addRefreshHeader { [weak self] in + self?.handleHeaderRefresh(nil) + } + + } + + override func handleHeaderRefresh(_ completer: (() -> Void)?) { + self.reload() + self.webView.scrollView.vp_endHeaderRefreshing() + } + + + override func webViewDidFinishLoad(_ webView: VPWebView) { + super.webViewDidFinishLoad(webView) + receiveDataCount = 0 + receiveDataFromNative() + } + +} + +extension VPCampaignWebViewController { + ///设置登录信息 + func receiveDataFromNative() { + receiveDataCount += 1 + if receiveDataCount > 10 { return } + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in + guard let self = self else { return } + var dic = [ + "token" : VPLoginManager.manager.token?.token ?? "", + "time_zone" : String.timeZone(), + "lang" : VPLocalizedManager.shared.currentLocalizedKey, + "type" : "ios", + "theme" : "theme_1", + ] + if let id = id { + dic["id"] = id + } + + + if let json = dic.toJsonString() { + let js = "receiveDataFromNative(\(json))" + self.webView.evaluateJavaScript(js) { [weak self] _, error in + guard let self = self else { return } + if error != nil { + self.receiveDataFromNative() + } + } + } + } + + } + +} diff --git a/Veloria/Class/Me/Controller/VPMeViewController.swift b/Veloria/Class/Me/Controller/VPMeViewController.swift new file mode 100644 index 0000000..2fc66d2 --- /dev/null +++ b/Veloria/Class/Me/Controller/VPMeViewController.swift @@ -0,0 +1,152 @@ +// +// VPMeViewController.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +class VPMeViewController: VPViewController { + + private lazy var dataArr: [[VPMeItem]] = { + let arr = [ + [ + VPMeItem(cellKey: .userInfo), + ], + [ + VPMeItem(icon: UIImage(named: "me_item_icon_01"), title: "Privacy Policy".localized, type: .privacyPolicy, cellKey: .normal), + VPMeItem(icon: UIImage(named: "me_item_icon_02"), title: "User Agreement".localized, type: .userAgreement, cellKey: .normal), +// VPMeItem(icon: UIImage(named: "me_item_icon_04"), title: "Help Center".localized, type: .feedback, cellKey: .normal), + VPMeItem(icon: UIImage(named: "me_item_icon_03"), title: "About Us".localized, type: .aboutUs, cellKey: .normal), + ] + ] + return arr + }() + + + + private lazy var tableView: VPTableView = { + let tableView = VPTableView(frame: .zero, style: .insetGrouped) + tableView.delegate = self + tableView.dataSource = self + tableView.separatorStyle = .none + tableView.vp_addRefreshHeader { [weak self] in + self?.handleHeaderRefresh(nil) + } + tableView.register(VPMeCell.self, forCellReuseIdentifier: VPMeItem.CellKey.normal.rawValue) + tableView.register(VPMeUserInfoCell.self, forCellReuseIdentifier: VPMeItem.CellKey.userInfo.rawValue) + return tableView + }() + + override func viewDidLoad() { + super.viewDidLoad() + + vp_setupUI() + + requestUserInfo() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: true) + + } + + override func viewDidAppear(_ animated: Bool) { + if hasViewDidAppear { + requestUserInfo() + } + super.viewDidAppear(animated) + } + + override func handleHeaderRefresh(_ completer: (() -> Void)?) { + self.requestUserInfo() + } + +} + +extension VPMeViewController { + + private func vp_setupUI() { + view.addSubview(tableView) + + tableView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(UIScreen.statusBarHeight) + } + } + +} + +//MARK: -------------- UITableViewDelegate UITableViewDataSource -------------- +extension VPMeViewController: UITableViewDelegate, UITableViewDataSource { + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let item = self.dataArr[indexPath.section][indexPath.row] + let cell = tableView.dequeueReusableCell(withIdentifier: item.cellKey?.rawValue ?? VPMeItem.CellKey.normal.rawValue, for: indexPath) + if let cell = cell as? VPMeCell { + cell.item = item + } else if let cell = cell as? VPMeUserInfoCell { + cell.userInfo = VPLoginManager.manager.userInfo + } + + return cell + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return self.dataArr[section].count + } + + func numberOfSections(in tableView: UITableView) -> Int { + return self.dataArr.count + } + + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + if section == 0 { + return 0.1 + } else { + return 14 + } + } + + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { + return 0.1 + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let item = dataArr[indexPath.section][indexPath.row] + + switch item.type { + case .privacyPolicy: + let vc = VPWebViewController() + vc.urlStr = kVPPrivacyPolicyWebUrl + self.navigationController?.pushViewController(vc, animated: true) + + case .userAgreement: + let vc = VPWebViewController() + vc.urlStr = kVPUserAgreementWebUrl + self.navigationController?.pushViewController(vc, animated: true) + + case .aboutUs: + let vc = VPAboutUsViewController() + self.navigationController?.pushViewController(vc, animated: true) + + default: + break + } + + } + +} + +extension VPMeViewController { + + + ///获取用户信息 + private func requestUserInfo() { + VPLoginManager.manager.updateUserInfo { [weak self] in + self?.tableView.reloadData() + } + } +} diff --git a/Veloria/Class/Me/Model/VPMeItem.swift b/Veloria/Class/Me/Model/VPMeItem.swift new file mode 100644 index 0000000..40a5f6b --- /dev/null +++ b/Veloria/Class/Me/Model/VPMeItem.swift @@ -0,0 +1,27 @@ +// +// VPMeItem.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +struct VPMeItem { + enum ItemType { + case privacyPolicy + case userAgreement + case aboutUs + case feedback + } + + enum CellKey: String { + case normal + case userInfo + } + + var icon: UIImage? + var title: String? + var type: ItemType? + var cellKey: CellKey? +} diff --git a/Veloria/Class/Me/View/VPMeCell.swift b/Veloria/Class/Me/View/VPMeCell.swift new file mode 100644 index 0000000..2b75b52 --- /dev/null +++ b/Veloria/Class/Me/View/VPMeCell.swift @@ -0,0 +1,69 @@ +// +// VPMeCell.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +class VPMeCell: VPTableViewCell { + + var item: VPMeItem? { + didSet { + titleLabel.text = item?.title + iconImageView.image = item?.icon + } + } + + private lazy var iconImageView: UIImageView = { + let imageView = UIImageView() + return imageView + }() + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 14) + label.textColor = .colorFFFFFF() + return label + }() + + + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + contentView.backgroundColor = .colorFFFFFF(alpha: 0.1) + vp_setupUI() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +extension VPMeCell { + + private func vp_setupUI() { + contentView.addSubview(iconImageView) + contentView.addSubview(titleLabel) + contentView.addSubview(indicatorImageView) + + iconImageView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().offset(10) + make.width.height.equalTo(20) + make.top.equalToSuperview().offset(18) + } + + titleLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().offset(39) + } + + indicatorImageView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.right.equalToSuperview().offset(-10) + } + } + +} diff --git a/Veloria/Class/Me/View/VPMeUserInfoCell.swift b/Veloria/Class/Me/View/VPMeUserInfoCell.swift new file mode 100644 index 0000000..409a73a --- /dev/null +++ b/Veloria/Class/Me/View/VPMeUserInfoCell.swift @@ -0,0 +1,89 @@ +// +// VPMeUserInfoCell.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit + +class VPMeUserInfoCell: VPTableViewCell { + + + var userInfo: VPUserInfo? { + didSet { + avatarImageView.vp_setImage(url: userInfo?.avator, placeholder: UIImage(named: "avatar_placeholder_icon_01")) + + if let name = userInfo?.family_name, name.count > 0 { + nicknameLabel.text = name + } else { + nicknameLabel.text = "Visitor".localized + } + + idLabel.text = "ID \(userInfo?.customer_id ?? "")" + } + } + + private lazy var avatarImageView: VPImageView = { + let imageView = VPImageView() + imageView.layer.cornerRadius = 22 + imageView.layer.masksToBounds = true + imageView.layer.borderWidth = 1 + imageView.layer.borderColor = UIColor.colorFFFFFF().cgColor + return imageView + }() + + private lazy var nicknameLabel: UILabel = { + let label = UILabel() + label.font = .fontBold(ofSize: 16) + label.textColor = .colorFFFFFF() + return label + }() + + private lazy var idLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 12) + label.textColor = .colorB5B5B5() + return label + }() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + bc_setupUI() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension VPMeUserInfoCell { + + private func bc_setupUI() { + contentView.addSubview(avatarImageView) + contentView.addSubview(nicknameLabel) + contentView.addSubview(idLabel) + + avatarImageView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.bottom.equalToSuperview() + make.width.height.equalTo(44) + make.top.equalToSuperview().offset(36) + } + + nicknameLabel.snp.makeConstraints { make in + make.top.equalTo(avatarImageView).offset(3) + make.left.equalTo(avatarImageView.snp.right).offset(10) + make.right.lessThanOrEqualToSuperview().offset(-170) + } + + idLabel.snp.makeConstraints { make in + make.left.equalTo(nicknameLabel) + make.bottom.equalTo(avatarImageView).offset(-3) + } + + } + +} diff --git a/Veloria/Class/MyList/Controller/VPCollectListViewController.swift b/Veloria/Class/MyList/Controller/VPCollectListViewController.swift index d93e8db..e6b21fa 100644 --- a/Veloria/Class/MyList/Controller/VPCollectListViewController.swift +++ b/Veloria/Class/MyList/Controller/VPCollectListViewController.swift @@ -14,14 +14,18 @@ class VPCollectListViewController: VPViewController { didSet { allSelectedButton.isHidden = editState == .normal if editState == .normal { - collectionView.snp.updateConstraints { make in - make.top.equalToSuperview().offset(0) + if collectionView.superview != nil { + collectionView.snp.updateConstraints { make in + make.top.equalToSuperview().offset(0) + } } isAllSelected = false allSelectedButton.isSelected = false } else { - collectionView.snp.updateConstraints { make in - make.top.equalToSuperview().offset(30) + if collectionView.superview != nil { + collectionView.snp.updateConstraints { make in + make.top.equalToSuperview().offset(30) + } } } @@ -101,6 +105,7 @@ class VPCollectListViewController: VPViewController { collectionView.delegate = self collectionView.dataSource = self collectionView.contentInset = .init(top: 5, left: 0, bottom: 0, right: 0) + collectionView.vp_addNormalEmpty() collectionView.vp_addRefreshHeader(insetTop: collectionView.top) { [weak self] in self?.handleHeaderRefresh(nil) } @@ -146,7 +151,7 @@ class VPCollectListViewController: VPViewController { if count > 0 { requestCancelCollect() } else { - VPToast.show(text: "kToastText1") + VPToast.show(text: "kToastText1".localized) } } } diff --git a/Veloria/Class/MyList/Controller/VPMyListViewController.swift b/Veloria/Class/MyList/Controller/VPMyListViewController.swift index bbebbf4..777f3da 100644 --- a/Veloria/Class/MyList/Controller/VPMyListViewController.swift +++ b/Veloria/Class/MyList/Controller/VPMyListViewController.swift @@ -76,7 +76,7 @@ class VPMyListViewController: VPViewController { return param }() - private lazy var pageView: WMZPageView = { + private(set) lazy var pageView: WMZPageView = { let y = UIScreen.statusBarHeight + 10 let height = UIScreen.height - y - UIScreen.customTabBarHeight @@ -120,6 +120,7 @@ class VPMyListViewController: VPViewController { super.viewDidLoad() vp_setupUI() +// pageView.selectMenu(with: 1) } override func viewWillAppear(_ animated: Bool) { @@ -131,6 +132,12 @@ class VPMyListViewController: VPViewController { super.viewDidDisappear(animated) self.editState = .normal } + + func showHistoryPage() { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [weak self] in + self?.pageView.selectMenu(with: 1) + } + } } diff --git a/Veloria/Class/MyList/Controller/VPWatchHistoryViewController.swift b/Veloria/Class/MyList/Controller/VPWatchHistoryViewController.swift index f720fe2..5688b37 100644 --- a/Veloria/Class/MyList/Controller/VPWatchHistoryViewController.swift +++ b/Veloria/Class/MyList/Controller/VPWatchHistoryViewController.swift @@ -20,6 +20,7 @@ class VPWatchHistoryViewController: VPViewController { tableView.dataSource = self tableView.separatorStyle = .none tableView.rowHeight = 118 + tableView.vp_addNormalEmpty() tableView.vp_addRefreshHeader { [weak self] in self?.handleHeaderRefresh(nil) } diff --git a/Veloria/Class/Player/View/VPVideoPlayerCell.swift b/Veloria/Class/Player/View/VPVideoPlayerCell.swift index 74ceefc..0b5916c 100644 --- a/Veloria/Class/Player/View/VPVideoPlayerCell.swift +++ b/Veloria/Class/Player/View/VPVideoPlayerCell.swift @@ -194,9 +194,7 @@ extension VPVideoPlayerCell: VPPlayerDelegate { } func vp_player(_ player: VPPlayer, playStateDidChanged state: VPPlayer.PlayState) { - if state == .playing { - self.coverImageView.isHidden = true - } + updateCoverShowState() } func vp_player(_ player: VPPlayer, loadStateDidChange state: VPPlayer.LoadState) { @@ -205,10 +203,19 @@ extension VPVideoPlayerCell: VPPlayerDelegate { } else { self.controlView.isLoading = false } + updateCoverShowState() } func vp_playerReadyToPlay(_ player: VPPlayer) { self.seekToTime(toTime: (videoInfo?.play_seconds ?? 0) / 1000) } + private func updateCoverShowState() { + let loadState = self.player.loadState + let playState = self.player.playState + if isCurrent && (loadState == .playable || loadState == .playthroughOK) && (playState == .playing) { + self.coverImageView.isHidden = true + } + } + } diff --git a/Veloria/Libs/Empty/UIScrollView+Empty.swift b/Veloria/Libs/Empty/UIScrollView+Empty.swift new file mode 100644 index 0000000..dcfd3c7 --- /dev/null +++ b/Veloria/Libs/Empty/UIScrollView+Empty.swift @@ -0,0 +1,20 @@ +// +// UIScrollView+Empty.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit +import EmptyDataSet_Swift + +extension UIScrollView { + func vp_addNormalEmpty(image: UIImage? = UIImage(named: "empty_image_01"), title: String? = nil, titleColor: UIColor? = nil) { + + self.emptyDataSetView { view in + view.image(image) + .isScrollAllowed(true) + .verticalOffset(-100) + } + } +} diff --git a/Veloria/Libs/HUD/VPHUD.swift b/Veloria/Libs/HUD/VPHUD.swift index d4b7967..fc3ffa6 100644 --- a/Veloria/Libs/HUD/VPHUD.swift +++ b/Veloria/Libs/HUD/VPHUD.swift @@ -8,16 +8,13 @@ import UIKit class VPHUD: NSObject { - static func config() { -// SVProgressHUD.setDefaultMaskType(.clear) - } static func show() { -// SVProgressHUD.setDefaultMaskType(.clear) -// SVProgressHUD.show() + SVProgressHUD.setDefaultMaskType(.clear) + SVProgressHUD.show() } static func dismiss() { -// SVProgressHUD.dismiss() + SVProgressHUD.dismiss() } } diff --git a/Veloria/Libs/HUD/VPToast.swift b/Veloria/Libs/HUD/VPToast.swift index 9bda3ed..c460f02 100644 --- a/Veloria/Libs/HUD/VPToast.swift +++ b/Veloria/Libs/HUD/VPToast.swift @@ -17,6 +17,6 @@ class VPToast: NSObject { static func show(text: String?) { guard let text = text else { return } -// SPAPPTool.getKeyWindow()?.makeToast(text) + VPAppTool.keyWindow?.makeToast(text) } } diff --git a/Veloria/Libs/Login/VPLoginManager.swift b/Veloria/Libs/Login/VPLoginManager.swift index 5e0b8c6..674f7ee 100644 --- a/Veloria/Libs/Login/VPLoginManager.swift +++ b/Veloria/Libs/Login/VPLoginManager.swift @@ -13,13 +13,35 @@ class VPLoginManager: NSObject { static let manager = VPLoginManager() private(set) var token: VPTokenModel? + private(set) var userInfo: VPUserInfo? ///是否正在刷新token private(set) var isRefreshingToken = false + override init() { + super.init() + token = UserDefaults.vp_object(forKey: kVPLoginTokenDefaultsKey, as: VPTokenModel.self) + userInfo = UserDefaults.vp_object(forKey: kVPLoginUserInfoDefaultsKey, as: VPUserInfo.self) + } + func setLoginToken(token: VPTokenModel?) { self.token = token -// UserDefaults.jx_setObject(token, forKey: kSPLoginTokenDefaultsKey) + UserDefaults.vp_setObject(token, forKey: kVPLoginTokenDefaultsKey) + } + + + ///更新用户信息 + func updateUserInfo(completer: (() -> Void)?) { + + VPUserAPI.requestUserInfo { [weak self] userInfo in + guard let self = self else { return } + if let userInfo = userInfo { + self.userInfo = userInfo + UserDefaults.vp_setObject(userInfo, forKey: kVPLoginUserInfoDefaultsKey) + } + completer?() + } + } } diff --git a/Veloria/Libs/User/VPUserInfo.swift b/Veloria/Libs/User/VPUserInfo.swift new file mode 100644 index 0000000..3063299 --- /dev/null +++ b/Veloria/Libs/User/VPUserInfo.swift @@ -0,0 +1,67 @@ +// +// VPUserInfo.swift +// Veloria +// +// Created by 湖南秦九 on 2025/5/26. +// + +import UIKit +import SmartCodable + +class VPUserInfo: VPModel, SmartCodable, NSSecureCoding { + + var id: String? + var customer_id: String? + var is_guide_vip: String? + ///是否为游客登录 + var is_tourist: Bool? + var family_name: String? + var giving_name: String? + var vip_end_time: TimeInterval? + var third_access_id: String? + var is_vip: Bool? + var coin_left_total: Int? + var send_coin_left_total: Int? + var vip_type: String? + var email: String? + var third_access_platform: String? + var ip_address: String? + var country_code: String? + var user_level: String? + var avator: String? + var sign_in_status: String? + var registered_days: String? + var ln: String? + var country: String? + + + required init() { } + + static var supportsSecureCoding: Bool { + get { + return true + } + } + + + func encode(with coder: NSCoder) { +// coder.encode(id, forKey: "id") +// coder.encode(phone, forKey: "phone") +// coder.encode(userToken, forKey: "userToken") +// coder.encode(ipAddress, forKey: "ipAddress") +// coder.encode(audioNum, forKey: "audioNum") +// coder.encode(audioSeconds, forKey: "audioSeconds") + } + + required init?(coder: NSCoder) { + super.init() + +// id = coder.decodeObject(of: NSString.self, forKey: "id") as? String +// phone = coder.decodeObject(of: NSString.self, forKey: "phone") as? String +// userToken = coder.decodeObject(of: NSString.self, forKey: "userToken") as? String +// ipAddress = coder.decodeObject(of: NSString.self, forKey: "ipAddress") as? String +// audioNum = coder.decodeObject(of: NSNumber.self, forKey: "audioNum")?.intValue +// audioSeconds = coder.decodeObject(of: NSNumber.self, forKey: "audioSeconds")?.intValue + } + +} diff --git a/Veloria/Source/Assets.xcassets/icon/arrow_left_icon_01.imageset/Contents.json b/Veloria/Source/Assets.xcassets/icon/arrow_left_icon_01.imageset/Contents.json index cf16d81..0389380 100644 --- a/Veloria/Source/Assets.xcassets/icon/arrow_left_icon_01.imageset/Contents.json +++ b/Veloria/Source/Assets.xcassets/icon/arrow_left_icon_01.imageset/Contents.json @@ -18,5 +18,8 @@ "info" : { "author" : "xcode", "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" } } diff --git a/Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Contents.json b/Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Contents.json new file mode 100644 index 0000000..5c4d3b1 --- /dev/null +++ b/Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Frame@2x.png b/Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Frame@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..51a75e5012026990dc70ce1e00436e12420f931c GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZL!3HFE2J#pJDb50q$YKTtF;x&|^bAt@02E{_ z4sv&5Sa(k5C6L3C?&#~tz_78O`%fY(kbl>t#nD;}KVC~Gcj z&btu$h9!34>>W<#E6Vp-F)VClnH*|e#j2k_RvBE>d#=vkvNSbuMMdRi2OksZ zBTnXx5--v=i0LwAUq~`&n)jzHYWCz?KQ6Xp&8v4lBVl|Xu2A&ek}3C}KAh9PAzbR( zhQ~=OwcG4H?|I+f`hLnKL9I!(ml6^p3q$#wI<&W>JY(Pgn|pI=!rQ4pk1=?<`njxg HN@xNAxA}b( literal 0 HcmV?d00001 diff --git a/Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Frame@3x.png b/Veloria/Source/Assets.xcassets/icon/arrow_right_icon_02.imageset/Frame@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c36518f5f64512557bf546692e82a0af6d3bd4db GIT binary patch literal 458 zcmV;*0X6=KP)0F4@dGR%0p1yb5paWU(2mei+7UWIyMb;{Hz@Cr&;op{-MU}MRfhheC% zpYv9&cscM7*pYD}Xp$s9ylSpr^TLXt_=|a5?r8(8cxOWMSUvE=^5)A7$Lt~~^2RQP zB2VlpDDuLth9VEF3KUsm)u6}{s|rO{Sam3}z?wjjHdb^BmBf(d!Rhv!gqcCn18m*4 zZB2qqp>w-=S(Pc2$7wZ>(;Fyn(XXN?jwHx(XS$2b^Zbp3Ssk8Kk;vkJuZ~38r%)3l z(!3}!Ln5uqJX0jnxNtT{qP0^I7bIFUxpPCJrPF0sBoafnK%yl#$$rThiKI8lD%t>v zq&LZqyt-VOdm+)1Fh($07*qoM6N<$g5E;G AcmMzZ literal 0 HcmV?d00001 diff --git a/Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/Contents.json b/Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/Contents.json new file mode 100644 index 0000000..a74d531 --- /dev/null +++ b/Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "头像@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "头像@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/头像@2x.png b/Veloria/Source/Assets.xcassets/icon/avatar_placeholder_icon_01.imageset/头像@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..979d53c1de0cc64e056a92d94e43ddc0082a70a7 GIT binary patch literal 15609 zcmV+)Qo#JdZD6lBVw3wF~Rlt-~)L`Ypco*$-gm^fH9Pv5DWw$j6gO zT(-Cp@B7dy!~?^4 z=(n%pf{RvR=IjQ!>}omKr&hjxlY)K_?{Rz21bjNd_V)JTx#yq7A0PW8#zuqCbPdsH z90!`(aQ-<{P7tuVMkyL*R4W9Q9%ta{{Z_av*|q*^m`&;(-b@a z(^)kg-HZF~{|z>8-$?DVf)7OD@(cdYa}Z|L=OGm6fZJn7 zDymVSDY*-*nhVKv61s(d*=1;Y*n>Q8F3(B8VznThruJ$Mo)-mZN-Xl9 z(~CWaW9aT4rv2!`_Py=MFYukx&kd6VeUe5CiuvZd=?vdB0kd;r4({aPkJ0(;+_x5M zUw?)UD}nCLQP}Jjq%2nGXoajFsVcx)&dOk&@m06LqGp?`1;1zCQi)l9Icd+NICt@`g0RXjC?2c%Yk6QD z!AKar1EZ*|&ZjaS7cjpiYS2+skcC7f$!H>gR6I?ykfxK9^C)2cU(8FIb~&vlFf^Qi zFS`&w`Qc+oMESit&PhS-w%B;s4fCW1$TUd2{~NDuM&rSwSbhB}T)2Em4Ge9b2Sb|! zcn9qr3D`6VPw6*8iRumn$qIRxmoyL zr=T<|#YnRe7!AQ~D?}oOjDj7%56>&FtVe#nABBYlglk#wW#z!(upyR=A|4C#91Et- zoCd2+!_A-kF4k_@k0O5whQ`K}sS!b1t!nD<)dnjE+ropVvoCh^_H^TCKl(YEj~&Bx zAO0XbUXLh@AdZXQiOG1|0_Kh9o5HObjCA3*`~Cwvo^FS4c{}=YQYh3Gqq%($;n5^= za^pxRsd)|yY$*zswpLA7nhVXMsR!@nbapUcKrnX7y&};lu6_Sis9&@SP5WL%Yil&3vBvVOa5czjn9D~_pX6NLhqO2C(S~mj0QD~eJDgFmu+ra?E zL0g=X`^t^kr;M?JCbnHypA8NS;&Y$*JidPCzhUm&IW_!Zmnr18%y+!yNN%!lH+Maa zKOFfEvWf|pVpbx9Q8@F+Cm7r#bhNcl58%96T$`~bYv&JbO z2TF_TF+AFhQAUQ@HV<4b7oDjc37Uko=4NQ^;-I>q$CD>YKr?NV^1^A=flqw;pK#5! zSIehji{G-4-;xGT7Vh&czr-8yKf+nyq!!Yixiz?v2m9hNoEut-T^n1FjHVEehv~S| zaL~!<6pT_47^Xo22IXp~fw4%G+Iph#wL3Uyi3INc;cLkE7gN;}h;cU9ZEjwB3a` zZkjL6u-m`9@0SP$L%8W9H;OY~`&KpCa<(T}D&PaoJott}uD zv8V~)v^j{4$I;n+1YSBh;VZfa2M{B=uyTmgw7G5uGg;nj_*_1skTeo0oz7Lv2qClX zgx~FhUyC6++RNK=PruP$nWsyC;u$n$_TjzXW7n5 zgUt(y=GLrT_X>XSvwPUF95kjQ3hYCV&~ZemrExKk*qc0x$aoZX3O2?lDori4S!g49 zJB?FMqmxOq<1T7fBAMX#X*gX@6+mQKf!~8IZ?s~6a|m^%9;N$E1}0$&x36a}@;$lg zdeK+_x!HMel40xY=|=@ohLa(5|HvR>iMSd-xoS!cr23Q2PK>V$xwbUM#s-kI=fFdD zPWc20hWNEO&S;7dk9|w=3jg(AKOt&y;mWHn&j@+J*+96nH4!T86)xeP@Bakxh^FkP z{71sTh@vdiEH$kZO+(=l3R#IDd=3Q0qDmNI)hzM=0+o1(SC7V%3e$QhY^%5&{yfDa z$!k3L+c-@AttiAu|Usm$NFt--#(w zO*7H2t{YLJ5;Q|~7w?xGC+%4UJ3mY5DRW3PrPGx(Q)`}u;*A{&vw#e(7SUw zXZf;_>&sRhw$qc#VWSYNJjAop`_V}aV`hCRA2=b%2}On3c;dyKB!B4nEg~etJPh<4 zK{l_IN{Q8^wvn_r6!^BOwB42XXGpFhH2|DarDg(;giZQ5TDZVg{rJy7SmgmTjw=%&h(P4RqDcbg1?NWCxg?FC5h9yTgbz?!UWPH6lWAp6-0}Gj!Q=BX z8Vlgl|Mn!Ric0yQY1rK^bagZl9}H3RJt{aE8xLcMgPxb0#{eXkwm!<>fhLF8cyw%( zTyYGwWt9|+5iMF}-lx+OF^r1mM7z~YwQ5r}t^m>Ooyz}N2l za^}yA-z;&Ft|RO@yib z%I^N=kw;)BNViz6N)2(c=@V%ph-S7#YLoT7|SUW!UksI*y#~;It^UsA-;)Ri6)Xbbm zE~A`-a|rH&0<8YTr|{y-FYwC*9b?4g9}EG@J9SVw6oDt+gfr30!5kTC;|#H@0K|$@ zr?^!&K7aIq-=V#=T|TOT$-|trfKAhIr@a5-7rvlO*J%{ha2Rj#P?~REOtd>3j?$Bl za}YQv?0G)zdP!+1?JA=*ISO z53qgvHay8`f8N~1u!;?*0!7Is5BD7Yo&-OzJzeoTM(U zzh*VAy?8lp{PbG~T@FhTRt-T4N~7FGodDC5npcP+U}oLVp4B$Tb(_7Bk8$ zMG23BtX#bO!rIIQPJwMF^wiYeTjc$N4?cJrEwPyP$8yr4o#wq}{yt-~3@j><+sezY zz>%X(=;~vto(~-e1kusigNv{H0I_dCnU3*LjFH%gBFUpP4|C?uW**-QEk6&$W@LeU zr*Ic(GbM%bVO;yskKy`{eG;?h%wXIT$3+*MhyMP731|0aLUzzJq~ZzVuT+eE4kFG- zHO0O&y-kN0rT>U47%G_gg=b%)FA2-(E6jZ4L^~O#sS$Yb#TVI`K?+0+eM&he*lGjC=_aJhIJG!~lYG>Ye$;698Y&AJ9OS}Jsxm;NFgiX8CwYRN;4m{7 zLHKPhIvJfp4`OOf4RkVRFFyJx?&bpnucM}2*p}uY^ z7GAUz@O3?fGdE2IKQ?j`F=A<}sTj)IYni9Z;1J^(L%|@{uic0% z-+!5WAf*B8P7$z~`jIbj|NZx?z#xNlVWwD)W5eTGFrlTAPFI2ztZRHP_V)Pojn^ny zuuHGFf{@RpI1CJJ0_GGkJiH3g&>)_E@+s1raoEUV2&#}EK!ATyK|XXkmrJj{nlu74 zBt0ES#bPSto_JWI5}_uSU4A*N4iDZ~^DKrsIvI!*Agi{XnEP_9d*wA0au%G~5=#&z zP*O-D_Ji14OQk0Qk4&=Zm~$zGi7;a1{Y7(U=glg3PJ`322@(bZr4ohwU}CZ z{C&m*WIh8@rXVd7x6hC#MpsfQfvLh&;b4C(Gz)F}b`YyZFn7^>LaLa8WD^L73gOAkMQ3X>k`_14zw!#$1#XRw z(lPepbD#JK9)JALOgj~-DDw2prmiO$k~p>4!vRZA`qq51462^^ysfnjjfWcPUm7xH zVLz15C)?ng<$r6|yr6PjcDoUI84;MKw9<&gOmw6=VT3|yVa(FHDa^Df*pxXCP`^=- zhkUHmmZcMmmF+l$y}8nz_Ka|+0qlDZMi(K(I|bYfR$03W^e zCVc5%J_{|6M3DWssS+%kWKhwbbl{6$`xkuUuK$az+qNPp3J{5-u&NaQ^|ddckG5Ee zM}_P9DbeTzeVQ`L0Zwh&DYjg4d~a;nn)&mZ%p3J<(>$z@_oBgK8g%{akIbYof{Dq0 zrzc)j{!KHq!ftn=r>6(a+g?ETh)ZR4C8yNYMJE&qkmI!)^MRMKS%n=-VfW!f$f=%( zT#p5XMP5|ZlrkfcKyO#K%222#v}o;g?B4ncdYg~(w^1~9447t>wzqExi{?*fxT~YL zzaL%QeTdSm43CbR{W~r|t3@1g$n-svMa$dp_vw>-r35BVKKZB2pDRq6P7Kcq`QL6j zhxY=SNyiQQEq2_F4X?j|Q1c-gfINiBq&3W(37MLm9c^%1Wl-!!7MQ9Z7rvMSw0GYj zK3N#^mtBSh4K>Kl^HZ>r*$@u;L@mqp+OT+GJ;qxO;Oc8usnAyEbu_mJJ9ix;nI6T1 zOlq!PwE~Yl`~y64-?tDL51P(6rTm3ty(QGsPqNl=6BExQGnthLVB7W` zSTH>s`8Bobye`J}UXNRqMu~|M(tCioH_PY2fkOunIIdLJtL%>5#5zq(hUoq|(}{=beYoW|Pz*M66t}5H*#> zWbwwyk62CKnDnZY7fStG+W1T^k~A%{mPvi_*&QS(25IN*G^e|F?ZJ%M)8&-qJRZyl zSaNM>Y;07THd$C10cP6i*t6r97bm=C-V324zDTNgUU~8XgeinzFp5QU<}kI-z`}V1 zc~fW7c@4ouPQpoYNK*2{LxalpOW-lgyjX8@C#IK`0G%XRa`F+(vXT4`!|G)&Fw3J- z?>Zq}KDmv5y7m9UI@*s!dk0WaK|VtqVi2>Z)l=RS6weu@CR@mbgpM|2=l=beUOP=8 z2P3_eMvU)+q(wn~LUGFChuAk!Uzt_PbyFT=BOw*?OL*OQs3{|s6-t9M73M)=xoz9F zO=x3ANJiC6`UGK5rYke=6%DEDr)YQPeeb|9zIf}0;Pz)D)?+2V;6`9*6v^=c92=;j zfKv!l!`(y*PrcGG5a3)cV3-ABX%|sm})Oj5bl^~wdRhA?b zi=bzu7cQGoXRMoivPlDFG*0Ci#m~6NTT9`J1RWlar$%IJ%V_U0e!&k-2d7WKFY)+7 zH%@Nyolue)oSPA5M#ypqQzqAv^Tf7gQ^SThjW`Fo5QUUh_ne&KiSl7nlKL;CbBnM)3@Ti9k~7&Q3JC~du8J?DYRKwWNH;{68S~pWsoH1t*xaUGiE6>v0_5NZEbBNEZizk(AC8Z&D4a#vltND z5W4Zufj~f|)U75*oH?Y4K%Hcvg#Q(7l;^fH`@8P|DMs2smz(MM0XkDxA$*Z`cuFqk zZ&C=*YzWEjvO86-Plx4%LEYcnj2V|)0`y9zM28Biv>xmRKKam;tQEMw=yRw{B|lv0k=*FxJCqABkwZ7g<#&3IiSfEiPD50 zkmx8F99LnhJiIuhWHM?7A}QLgAZf@UK8nS&Iz0}*=P*1dx1 z=-c!gELyOLwroIUgfkPcx2p@Ip|HZGHfqn$9(f4Yf8x_d|I!9JNyJmwyJsizb8?w^ zPGj24*>v(z19pjk=$2B$jL4=pVEvz-!asiHJD5GaPBCHCm01(BMA==+&);(BRISYe~(EK;7f~}#B^g$BdQqC;SfM`}1 zW-zbT-qwgX2cVmzdTB+OB7eSo$2V}%r7M|H_F&!1FX8UHzJ*(FxEjCy(~C&A9Hho- zN^8ztyaWTsT9I2_0X-TqtfQGIwS@-s4`t)JT3XQE)}eB0*?teE z&63{34n=y0LlR0o?x2U%|Y2=P*@11E0D5^XOy*X7QKej@v#43!z&^n-9#8tRhgo{&@7e-F(>)k za5TsP6g*D$jAp_vwtdo|nAL;IY^WK=bA{%VnKm>ybb}(|n|%iVK!4M_EBJ4mUR;%R_q`jbZk}h4|>FK84`$ zD4u@eG4dC!sIIG1&RL?z@o)-RE+CV#t7jP>kq-S~Ey~WNcJ4 zm?kFfJT52Q#8M-NcH^b>8*$hDKSwPePJ*K|k^kaNL%~sUDC79>&9~ylf4B()8}?&l z<0jb8osT1)w95J>2BN5beIvYOM;=y0ukGlFPijNjY zT}1UlAlfB!$x)zN~jZ)_%K?N{H&>9k$Eo@PLY6J#O3 z>Fngpv5evOzr6tSm(r>5e0AQWBD)E=V3B&U_7==MZz&%A@%M17=@^A)JIO3q8E=mg z+h*gL=bpzaYc}A~PyQc7UU?N`gkCEzz6^sjFZIJwTy^dBSpHATF#jK}!Jirm(8o?j z9)1>oxZ`eY>+eRM=Ej~a8}UERt+;IFWytnelyJp{3XrjqO^e536P>i2GSr6mudk`3 z*7#6DLcV@VJt}KT;H)S_+D}J0n#Ain4x-_L@g*E$=xnzc{HQc>1`*n?-#_&BgZR@zPpsok`XmWpZ&@!@wK=)#V}o$yr8AUU)Gjr0>kG-;PydZ~f0a4Hv^B%-OV zsYhW+v7v-&0IVu+7)(c06{dwW?!XXXW$z$<@uO+D_m>yJ9wmYrj2O!kPUE@cQ==lq zoGyZe)9uZ;?D`w=(bZR>vAx|0CU}8Xdj5NU{%hJhJ3W6E3eKO8l?%^P6z8hJpC3Uf3bCMWHiGdJ zDW4liJ;2g4Z?PzOi#-ds0ppwGR z&dNsGEQm6I?D6X=+fErc9WJAGO@RbsJx79MkHhB0{{4MeFbmkY;Zj`u{%WMUhlKu6 zyampX>zgFtNfuW|qq7zN_U~WEtm^JFlNca>uc9Bgr2~a${uGJXKB@yl}!2X!0hucMBT#qD6A|e z;c`%M0yAgK!rZy@akRM+9y&I0m?~qeovLfX$4RAq$c#KC99EIH_zb-Wjm;hS)jiX3 z|HCWkB#Bb^{NlmV784v#&U;uVRt&eER=`56jPXV(@|!=u=i3zU2qV2APO&RhM8C%(>cSGdNP2Dwd4(NY*P(=I?a^t)2--pzK_>=6w8h0s(cfcXpwWsnq0Bw4uj4S9 zP(0fwyF5^TtFY~vSF!!+mz4*0J2V_R(#WW87<12^i=Oe6!mOF5hhs=?A?rtNO;Q7k zIi=4#Pcp`R7$diAXUIBt?gGr7J%>SvVPZx{0w}L6Q$k3YNLDvOIQ4xrLQLG<&1>{B z`W!Zvo27NdV;pNu;GEeGY25#-+-gXD zlD#9-)zj07SZ@ciip%gHU;QGE@S$^Z3)RI&h%JlRfp8*3awHeK4j&{7<;VB>Ho{+A zf+sdSh^qMwc=TJ}hwb-k@VSCTxM$O!@bTftvFuZ~qi>)GAs_jKXbuWqJ&3H$yJ6>S z=p7hW>8JjIZsZqMKv0oY=u07tL_E|m{E<*_%>h{dv>n>^X7#z7BvmZ~kBW*a_;YfP zGkHAv`ub?gophXr!`6&?OJix5S)6!~*^()AlDoHVRVBBeFa{A?rF$RvzZ9YyWvBKu`@GEs<3SOT)diS#aNvi-K~w##(Zcz+KTI{W?*M; z3(96T;Nsj`qzbL@a%SB>_jWAZT#CLoTCsZBCD;`l!6I@6Eqiw1Fp*4IaRpq=(+!h$ zY&&`Yz8qu9Sq}7KaO)9l3$$Z5Ipxr{qp)-ak=k?^=}nDDk424CPKFJXh>=<4T5~T6 zi&WSv(GuH|UzSp-cKVpvGiNFL`~1_dAiw~lw%UX5-?bR8zOoAc`qlaH6}V77H5(;` zZkigKtSeJ~@&v1^8IUfM0@(9+$_xbG)F!i)t= z@Tt#z7L}!CBvq!MrNEE%Z|s4^Wx@3fYrprKyRfru3qI(*5PQ4E5LsfOgIR!1{=T%J z0NODJl7x1bmQP2_UyjPY0s?RiwfQA*F_qqOxCx(Jc@Z}5ZdQ|R_m*|2DDg8=;=pzH zpz-zRP`0`bWtGfC#6xKBNg#gzgIHiAg{d=Jv5R@QTgbL~-O8Rz{acv4NOpGagd92; z-HivwP(`7O2G%iplXkeN6+LaQVe@OZV&=jcRl3C#40M59*0iw{Or=1Lh3wiyvd7HN ziM*T^a`OqMpIl(tP+F@<)mSm($f&hJpa|?p$78VZNJm3(FoXN+|GW#A5K}(=%FCEt zUyXY5sxww!qJ%*thVS3@J^cA+zrZRN1y*uB)^2zi7hka&frI;TFnf?3uM^AWormYv zJ&nuGKOdoegNP9~SCED8!8E zGgXigATKR5q_=55+Kz0;ec!nbW%;>CMMhM(oQ{ysuo=aLnr@V0r!BflAsHsuu)7LG zP;=w-Ir|O=F=cL9W;}OmW=3N~fxk{OVVC8{ku951Q&yl#_|s(f;UN)CJ9pEy*Pwji z3S4yIGG$6~*`Zi0j*|LX1Yh3@*Or4gMpRK=P(&0_jco@GB4SP9vFvvAw>09ZOYfpb zK7{JLTx|C`RVk9^a63kFT`0cp8k!$3Hf`LDtFF8RJ;$2K%niaH8AJVil752$<(wu+ zDMeGK(cjmO;BQ+|S5l7T&C6gb^79&-P{aGnilH4lw!@e0A>lL!9!7RehYujwy%(KZ z*CUb~!0ZKlPMaUY0}ixx2AIN%W5uO;n6a3=4D)od!YQ2rk(z#DDqm#mv?DSSL3>9O zon1p%e(lexq#pS;*CrJxY6lRDrG|!&E;X#O0~(#nh?IYpma1eSc|fE)TkxYhzmAOq zNi1Em7|*@Dp0^^pxNs@DM?=`s+m4$T%|k_sNPtPo?FWxy`Hb_hdgnbv7BQ5%YLFto zJEMLY8fkC4=M-br>g#dsXRpJ(-}pToLqU4{QPfSJisrU%IFl59U=a0-q@r?E<;3)~ zfjKqBiqYPMBPc3lq&TAm(W*K)ix_e<*XE+*E2}71_*No3i4yynwmQ7_Ve}u|g)s_t z*0Ms(J%170`7|knnUS#M+H#;pQ+VMivTTWQ%sP*$t=>_!TFN5)vMdFbl^qtSRFM?t zMEWC0=r;6p45Ol~J|kS&lqsOF*`0UZS<9F6!Kg(Ys`6VSH0xnpUjj{$>J+lW2X9d! z`kId*l3Rtv3#Q>%`w+VOy6L3qP%w2WzW0m!u*6@CY3D3PZEgXc+VBDndd8_ac7)wY z6cx>rG8o*~zXQGHY1DKV;DdC4`cZ13-^)QcNG_rnHhOnYauf~3wHk$}BCCl6tXU%` zktZFFeD5u0J}lRZ;-XTONr}e7*!}WzOz#&W#@}t;_y%5k;PY^%2B8%uaKoqPpmIh9 zQbRF>21#pihq$+{#H2yxDoC}CVw6($BqEDa1t2<;+j z5C;Y#3}oz>xpXBZUoT>P;hW$5=2K=iTE7KSKrGtZ-=;9Jt|f4U4A`{k(}?`z#@aR~ zEq7KCX{0oM_PeK{ zC8RGkloosFjH2`_^eqe|L^z_EIXyhc?OUFOGmA-421V733WXPz-Kiu| zk&GnZ(6Z1;`&w8rh)UXQDWrz(P^QPrJkcMXXu*`Sd@NX&Mb0>;a&mUJ9X^j0eqRo( zoRLHas<*QXd9=d_g^UZ) z;iS@GI16j>g^&L|LRvPOw{JsDc?E*==He&6ei*mh_+ebP@)A7p{41E2vZJE99=9%7 zfuW;^@q_jEVP@I6@RMM-ScBBw6t?W#!r1;QU@W4t2Nr)3O0%5E%A-aElWGeB<=k`w zP6kQbH16Jlg%@0erd?ael5N5;)BkQaZRtomAJ#&qYq?B3nv4oOzu`qr=|+6uiV8YS ztE!)fCVDuI1tiCbU;?zU;c+SdftLjS@EC1B2Qgx<6fLP>GQdv@?5C=Vx=I!$qSocA z{>$%F2c2~p;jTMfb>%}!zy$ah=~g6$mo#8Bo;DUt>xSEwN*6GqO7%3Oth5+S9iynC zQz|aXBZn}CoH-vY2YU+vDs3JJ@kcU=xX-DIX?#gmXm<)}gea9Y} zjDF0&;#?_)I5Aw3dWCpct!s`1V)*eR-^KY0F2cgu7olt#0|(Bsf}wt1k4hm+>Wa(p z-1_yHGPM9X{-mlF(j|=`ss6OF$4@Is^T>#?ib{=wbZ} zUL*W8!L=?$Ahc`wqzU7V2hrPGfvhQBcxkU^&YcSziRYS5keJBJS716N&xKRog)EN5~w77C*KP!pzPm1Cr?pQwZ8f%f}&GiXK;u#I;4&rd#p z*$wqLZ{el1k-ao84YtI~s??PscVWZdPbli-MTsXD zzdoq`?=LaPA1M;ybPA7+D&uc4lQ$~!kkXB+LeiMCi9J(^h^b^2jKzY?uesF98ykCT zqqe)4@GL8?#Ddx9p@&)5yeI`v!ekD4jH9F%4;?(fq~QquaBLT{3Qat2s;?SShD&Kq zVVf@xufF&M;^7utzWgSH$zzB;m%})ASv?^*Nk2Y7np@OTt^j*MU( zZS`|6ccUk=a6&;(-rMJNYn5dLR%rRu#xYfUGG0}ntJ|q zpN=tvld}X-0{%lsHz6-qw)&zM93O()Wm8r71`DV$7V@gWKDKiwQkFp;In0u~DKMH3 z*%Lzg$Ma<`x8Y$gb9mHH3e)9su#XmG5#ps}T?Qjhaj;$85%lzh5e(4}5yr_Lnl_R; z@dyWoiDEwquSF|voGd%Mseol6oq}vu+X|G_!p79PkR@tfDAb~#^xQNZc8lU{CzoVQ zoih#3ulWV8y_h6D&4f6v4nnC;0`lB~Qsgj|9vm4%l&^lyf{K+F;_*K|gY)O-8W8A& z8e_h9dvSEnP6{E;9Gs0&WDUdQ5K@{0uG*;_ka5X(sUXQuhxzy`kI{sY*Ct1>V|N@5 znvZd{a)J0YnIOw%#q=2^*tTsyb`t}0(os__%(sOwG)nC5(itw39!NQ0cZo{5)UGHA z4q_sdQmLdEeZ&8#wYY9<1TaCrAlwM2I4iQg$~9E*%%d@PJ{qLD~qm{Z(?@)9csdvvu? zhubOZq0^)*Ehyj&61(blX470dl>_V<7Cza7Vt)$Jq$+b)LYLKvLZErvg)|jHpVA)F z6y-7nRyS`s&ZNC(6tIj0g>*09-r=m70gaU2aos#Mxu-tS(#Lg9Dr*SmrqIjR@ffA1 zxjT9=jrjDX*LI@bo}~or;1u^!c1Zywl<5Kz+IG&G7(?YqglQQPJcEG|I==xzxDfg~ z4`9yBO1!#ZH=3JwBSKDC(}k~1(xH0QW=WoG@(2{BOD|OQ3=zown3^iO7B?bW7sROT zIgI!uJ3KlzjIn^K=VG6-Y0hYSiF~rM-D*jg)5F7I)JTh+P9-#jI^;R)mVazQxY`-^ zReQ7jB4ioT&6>kiQ#A7&s@eD%PmGd@8Y46+niMq?Zwkj-+(M~ z3SK&7vF8Hs#YskaPd%-v>d{0r6Yv=2yy9>x=Uf7(R}uNG6z-j8lFbD>A zX8?Ui6zQYj&}1cM$AiHbr)KDc-#cXQ1tuGd$qUCqV{kF-Wil26;~~7T`7v}1?d8C< zB01j64ikmgvf-8Jhz?3PZZ924+LBF;AAA ztiaTanrOp78uf8mMYSlKvoiCj7voLZo9=jGI=nCP?LD!q3TVtMJ1mwHbKZnV`@4I| zsm?t4*NR$YSx2T`;YzDVEA}VZ#!d zY(-!^fE4k`k^?D&)ns`KXF|$mY}2TU{0!TNl+}2(@N?1Hx+T|T9`cN);j9E~3i*c= z@-+JKH-jqN1zT*M5Qv8>$d5pGqnt zvv-a@F<3?hW^xIwaUCB~g0ZKAv1rgJkVz`EkWT5wRx!G<`H_5|l>b7hN!K`O&@E;u zmO586LuX7>(`O1EPflnmo{6(#_QfC1n1*$4W*Rchg0pMa@@VxiC7z@vPux}YB#i;) z(Hdpr4zp{zsuj>tR#L)HHAG^?i5hy`k+=<^SV9#vD~FLvD~**Svo<7cz87uFIF6Fy?5JENg5A#8N6CJT+stc`h13J5&LE2IIJ_Vdqv-x(K zu~PWVbYNv;bXKD&- zE7M{Wov7$Dtr_J}B6vzaDI=g8Tthr=&O%zEq5`6q8JD80;X=S*%C6Pk!dACuEnsOT zS78WQ1YB9Ci1?-vMpr>8wNIXMdGX?2hDoDL`&iWmp?{qw%dir0qv$_r?&Bt~D=me5 z4%t}Wm;)-T3rksU;fVR#F>jqK#p$Kc7@0r>{^HJ|BY#Ml97;Q6#Bx(WnJQr3v`+7?2Pm5E-Jg z-HEviL)g3Dtp+C&wV}8$f;gElW~6A7lW;KM8W^@KtnFeV)8maXD2gGw{4!+Ke-&<@ zs)tjvReJ~j(%0J-uptCZ!o*s>z1L4dXW4>zDi}EaF9~E;pD`ZEsXmR3K68^PoSmIO zwl|Hyh=zhfhOSlv{QKNVatKoUU_)6&6xmrZjEy*yeI;j)NDG;~A@_$@}BYjLPbTK$wwwsJvs>@CTD3P+G!pd>PYZ#vh89>=q>(ef|*dQhQhbsU34V-D1{Q z+yQePw6v1qDhya8QTUew1Y-@dh9if)n1AlLTAkT=*iZXu*x&ws*?^RhVuhFw8y%j7 zD1o+`nU4CYqZk-;qou`3Q<74gL~AEGWKR;|kVS2t;V-X&y=o;2iYDq9T6z4V_8$BL zfA1FZKW#HhvL*x_85=~;p>-JRYbL`s@+Q9%v|u5Z9729k6mP68P<-x;*&%dssz;;7 zCQY&@yUi*nL+ZzM)J+Scv(t&eVJAG!)I^1;6eS5wS~~3l6^*&P6ZOJk0>sw-@ZB&6 zr)%%2fHUo6K}#F!Z^l6L4vhD=oFZ(Aq#7E?!cqGU9(FPSFrZjjWdu!)q#a%93ARBq zp_`>P5#)66|GSHReeNnZUYpCdv~CZdQ1M^w#4GJfL5o+hgWr!QB%cOIYi zlbdL#U|9J#Js*6pwe@uEZzAB6o4KLpd>A`5)tK+!PHTlB(AUh@-G2+APHz7XhnrrI TX|JVMnov9i4U*1g9EaQ(>9;Qy=<&RA~&V?2LTL@mvrUb(}_CgEE9{ew9f6xM93BWBpE`t_?7kluZYZD>a%;RVB zlLFF-KhX9EClC~ZP0#`$g0TA8&d=x4NGB(eNyT91r!d?%fUfOF5%l|Ttoo^*4D?m*GGrpT&+JJdGwt1-jG2@VLD2xm`$6 zAfmxA%$y02VPGsZgEfAJAum#~Xa}b}L#Gxa{aAf~ZT)L_PBO`+-6bf@+i-(f};qo}J{TEN8 zY_Nc`a0q!L&t7nF&^f5i3|wXbhH3D-9ZC=~`5Zr7fXm@Tz!O66|aB z-@o_)_<|Jx|28q2MYOW%Y>#vgwAR>+-_z#8?_sk9;S-oc8%)M0@#xk^asMxVffL7$ zV{mi~k$?v)KJq%aeNLp)a|?t>et`q)_4^U23ZUz72Tr9D7|kV7pg@2E;O5^Q)D9w4 zg}i~RQ9v9yWcgW_=|r8&jh3=78eBef8%~_+8o;TO-B^51l?IIy9ray&e?3-MGMB0f%siJYhqijAYd!)a&}LsR0U zNrA&5_6Wy#{@$Sizat43G00>lhokL1SiG8MBk#m`B8`(hc_cH3aCG-!3WE=;*RR2) zn>M0t`O?xG*(3*_SDy8*-zUNNy%2~q2|_#`$F}X;@$;Ym6uWlqg4^vuUa4@7k<)=} zE(fREjo8o-y8A}4eyvNHhPmvZVf{auNTRyF3ZcpnoGEGyjVEgYM0~`9^1T4 z9o5y9xaBoB;Svf*No(bCH=ke3;;p|A7~^*;5EfYcJhUn;wiH$QgAe=&cYpI|7@r!W zhcE>Xg~1e+&e>WpOr_QhHT;0vL-G+un@b$0Uji3DBUfg=RV2HQW!Tz`hT4QwLchr7o0%6UHJ249^KDOhR zcyjwA_|32OA(3_=n@)3JraM;z!sJXAfl$K1K?(Z&=p7kDS_FdX-^|bbolX%GIp66+ zLqh|)lRb#|s|8%Z$!oft)G!o=g5XSQ0|#+}Y2=jm;^2D@VvU@$0KXBySa%j4UkLrZ zL&&5P=fW=39ifw0J=yD`f=^!B&oS6jXZhdYb@ zfkBLqWZ{dt)gXvxpiR7<_cB)vc`g5OfIZX@W1|@);u(1SoYnc$CBhyfDi=68@DcJ4 zkq7}|Rfqy$s(}{)kP|5$*7-8m<$VvoO2mn#gD$4m=fY%a08_mV^bL+8Mc4LdS1;m; zDb!Z+GZZcZE}TU!&L$YG&}QU~{Q2gWTU)%W0x_3Xh$murdtdo|jWwyetA?VFdw=?=F4+ z(VY+AiLH;IXP^_=Yysg&1l_}<)DV*hlOz%}F9=UK0oAvbCm?+*TEI&?FLvKafryb= z92lLz%H{KbgsBF2t|1U~ks%vdRUQPgGH4#_9%&lH-Q<8e99o=2K=PP*9r^BLAw%jy zgeFhzsUTL2q{U+K% zVl#KW9D%i$Tp%nH@f(yx7DrQk_}PgsW5-XPK^Ymtaw70TDu=q-atsbmsu?RdAV=G7 za2A{VrQoFM&g?;D&k*U0D8BRkhj?iZ0{$|L#HO^{ z%5z=BI8K*SnLVOX-Y0)|YF5)hA(ofQ7@AsWM6dkpNB80Jt=sXTkG~gH>=&!aM7o82 zdHG9iLS9mVu-wU?pu|M{?D6knSMYAcVmSnZO{n)bA{V6nH)A;2Ie?z7ab+$X9E1Yh zLN&vr53NBqDI{VtWKeUtoC214{&V?!7#khprO5g+U{2*R^$8EUb=IiZ8 zXyx%6_UW5nN~ZHA69@}0e8K)bnI*&6_d{%bVh4ILfw~PDjQdhZkH)beu#_Bw6Pfpj_J=$J0$r<1oBx*30K&u_W2jV@Sm(aQI*^%7SHz z5*G^GbjY2GNi&odGi)K$JgNG>2un@?QNel|b&f+DCUIrNyzuiAlLo%@FJD1-PYe9@_adV5?KZ)B|c5N@K`BHK?Yx%UWwVF)|usXPeV-<7^L3 zrm@nPLg$`Gu=ij;p4f2=L!(LFgP~1Tff^wvgXmTSm0%h1PE3+eS+b!iy0{)s04=qP zFg7-XSS~j02{}wfg=--qJ1UyOa9EJou*{ymLoGDc9UB&{rXE?FmV1BlbL`l*1OM-z z{!T?-t#+q8`%57dFS|huA630<{;Zk&Mt3tefgptMw{H_2- zPQ)=X98&=#x7*7ZGOkp%2!MluBtiDNM>q$yGGnJ)N;((goXJ{f! z6=4@LjsX7llixu{PY$(ZWz3F@jAsMICYG~5^i$_z_HyIr>04z$>-%H3dX?T06z4A z591#``wysniG|`tjdso!hNB}parZMHf-6dLiL*XOzCRV4q!?xq>RF8LjzPE^^Qb)4 zgzkfr=O(S?!sovE2u8+zs41`H`vptrOhr|T7vZ2F;@BJ8P~+AePhjZL#daP0OHr?|B{%RkKBiAJezGc3s| zsP_Xj8}EDnyRl*8hSE>GsOIBE6NuTu@YKjJ@sp0vA)QRaA0ffyl!tN`?Wn<7A8ucW zVGN>-VdO_Y-LI%;e=w*bnptXT;Ur9?PrFsI*=d480cFx;AWU|8fHd@7Z@&>W3|=Ku z>C+xm=AJjinV!nxU%&nc28Ii$tE$vM&~_0y9&TRWpiqp)hLB8-a@MDiF;Wx`MnEMX z<|fb-nmgy=08?o5DbD^J$_PwDbeA2xZ;6gNa#~pP6rc<_l_`Ec=kUT8sbu_w_mhKl zS97%z!)NFKi(%^fd-n(4jjOJ?vh?H^O(p>=Q-4jec_+BpM1XOxgasdNfHZ&2A^ZDglsjWQaBG5h-!Wu2$j zk;!D0=W*IS@}HX~NTQ?v^`plyIOIkh16))9$U3y`mLE@+v?t$WIA~XOqZ`rvSRB z9)DB?>x6AJ48!t_^z$0V%rKpBF{Xu&zVKO%)k}opMKd42wLr`khP|VY;D1hi3RSiB zoQ|AroM~>_>b%m#IYlBBEO)(1~Cs3M$BhevY(g4~Os%dil9 ziEtSDcN5dIyP$p4IquXzS(z92{rVZ~IuJvBT^(7-j0UQvW&tFcDmbC9=LB(0nr^Y= zGB`1nP0%dFRI-e?yaqKumN(|gYDUxN3!pL>p_`f4fK*Z3(}F8ZhUFirXEN;mwScrkeV0QBF8=9@pZlWfmaDFQafRZy5(wUag8g2FD z6edaRxX1ydGE-U%90l#CJElDgX)4-jMK-0!<$V`5fY@$xwif2!Lm>vhy2tU*mJUQJ zh#AC^3-~PP90_rIlgSCfy_|_%Zy3q2jL44poPl_*Gz>srV?WRIVU9GRFHF>Y9>2{ zzO;B@xrPWpA)VJsmVa`3gjgbJRkXd(xf2`}Ki_}wH%E}jdr{+Khl>}&fe~_AT-_;p z3H^f|jGR)N695(pS>C&$sO&J!f!7-%m^INy{=q{*stJ*QaJ$HOdQpfu_}pol3{SCt z9HyShc0@zFmHMXS5yY$n=ozIlIVEs`XcYp)Bhq0?DEL55hki~mg=w0bG&Ph->>`*a zC!m?{eg2>S6|Jo;SiEGB{ncOK*lc;BjOGgxh!Q$lF_8WJ{rJQu?ovS`!3UCPA|#Eb zVseV6Rm6+((Zz*y=ukAz@Via*GoR0>#3XUiGJ+Kg4)r-x*>#NxoQldbEzCe*NxYB| zw$d^sZh8fNs&8Q{To= z529cN8K@tW8If<6>r66UlFOt~&1(oAk%7un(4&DMHAPi`iJVNn1G?63xKRek=w=)tBDq<#AaOmKY4Yo{ky2HgTO90DoDqxl)y&Mh^!ISnD zT3aQ-2^GLuJeA4d-iMxn#}|c90@#)>>!JH9sZawn6Mmtpodl1RRv)l$Mb1 zPf^f(jDh&Q{0`1eQ`k&X^9nxl4FyYBZCo>FaLs-O>pA2zPB)(;GtQviDb52;wkh*S ziOA+nr4i&}(yfLwuZ7BC#dX9*A05SK?)(f*Uef*=8JoND0^0Ky2n$5M$^QKt-}(k7 zQb`0D7>a~Lw2gj*IH2KBn07ma0NqHxKfr1T%ZTGHUeRTIGJ;2`c|Z^tl>13IS|fa+fxV8 z-J4dgHQ(S;nN{)yLn9q@GwDqb9~4YjVQcGIZ9prwU$BO{Hy?$sUes6N-l8JMQj8xBX&i;%w+410#@`)F!v#EH&R=;<3)gH=~khM}t7KcppwZi^ar+ zE8+CIFhQ?lJQh>IjrAbz@p3W| zXi_7YcATT+vvW219tod6aR0-&?iE+tZ+~7gyr0ivq31H9E{- zkvjGum#&SNwx33kx1XIbV$YhYZW;AvnA*0&#QUKbF=KQa#GIkeAi#&U;pJx z=seklRmph8(V_XHI%z_oI zq+%W!8B<~JbK92UoE1w@$uM+zMU=vo#y#Kt5o0C^Y*@P-YgV=4;IR%ozH=8NtrMuP zsZ;Tef|bl;SOQ_rk>go><`UQ`XPbo#k_6v%4T}{{ur-0HoztRllwMCwCzm;ze9`|0(OG3AEDd6{$NF6f^Oq&;Bd!`s`gQq|dh6ijLli=g^)LhL~+C?z!h4 z3=9luJ8VqbG09?*V>%LP&S^)d1!u;0sNcne$f5EEly@;LY$i}NGZF$%T{(hmD zr<8K7Dhs15T8@G7G=_$z&`>uIIz7&zO%1Oz#UNB-Y>+D2VY#R-6>1;sAHeHgeG|TP z_t&uO%1fv#_*cG%-d_Ifr%=SPZtWU^)-3iNH~mUghqpf`}sk)4c0RRq)a7M#>7Q=Hw& zsWFDj4He3k5cSFKK3sPBrTFW={UA}@D2b-HGKG4EOBdA%NC3U%jjzMDC!fOh zC!PT9g96nCc@(p!9qX>U9B5}<4tdR zBbu9PFcBZuX4L|Na~%$Ks1L)AV5oO#D#+s^K>>Aoyy`k47!J3gTy)dL_sDEY=D9Go z;=0Rg3A(vBN#yA78N{!D`Rmf|dsZ!RR)MgzL#w_ZU!ZJWD;N*A7}PnMsT17_@hJrWzy9xEMV9#GEr0QLolH|!MYBbmGQl`UZ5?jC z?M4jqyUb_lCmR=;R+mcusx*F@Kq0%b$r#cSa_8GqWJzOF1j=!`yraV;1AB35=oGq! zd(cf{u#14Wo8DhnAK#+~)zROLfBot=I0+K=*R=}3Jlp-8^=?bu%rAZEU-82q{s6zr zCIT@*_ioj>t8x7;H!1Q9^d1~8AL29{DZc*he}4zPCp)pcZ53P+H<7#rAxJrMhKGic ziuEDj_b7L6jDmIUd28^+FMST6ra;bianGjt48^xN>Z>rx&;Qli-%IwhfKPtnW2kFe z29VyCY1TK;gSWiporJ4Sg>9aD)7lJb(XkUT2KjOzJ1X=z<16{B$sn?LN)&d(N4A#) zpGSuROy!~$tbnO_O*!S7zxMTigg<%H8|*I-I(z<^Xl>^iZ%bx!SPAs>j|`A6s6t!YVjMkw6fOqOJT8sU1=|VxJTcr)+pHC{ zxNqYV#n;t&-LwRGZ{tfaL+w2h!%fQ zo21+e6@Jxq*DzF^A$CYBKgOq}BDjM7*JwTDC2yvmAop06kXYe~Rl zJV~!(29|i&8J}y;o0)|j9(dqEi)uCIyo6z`GcXi4;Ix=V`*0S|nf{w|#^=s_OgHf) zmM&e2n(8{nA4V`nur)B)PoJMQmK;PbCEe$u*(gwptl}&RVwkg4GO;AM6-x{kHHL)Z zv*{_+)z_k`p;0qkkqG02QGHPGU_6`cr&xu<`doSf9-6O4;*hFHNJT;kW^lo}^H5P4 zQNnDz0Q{}64~5>$if5D}E0R@Vc?S!vc<{joi^$$6I>DtZn^XO6FMpd}u2u}o%u>a+E9NNvT{DxIk&F*Q5%1fY`7flnc;5*r3 zq;vXI9S>4bBGYDcXG)+eBa$gKeYflDvk}*D5GhT=8T9B?5rNRD$Zg8F#$lkBI%!YUUWu z0RJ9GVQLt8R~6Dc=hX2NIN47wp^&l|O$U-RF%hAAWJ#b!5vHg$s!3citcsz-`;=B+ zIDbA8=@hzpPAM9^rm<1Yem(0-x{9VK#SR{!rYeh;AxMh&(7{70N$53U^eS=>ahwsN8(IhC4sMNZ@k*3v=uKg zdllGR8lq@le({T6puN3)IybO5P}6yf_R{;aQPlQl3{~K(pug7Cf>R`uEJ2d%*_5~b zKB8%t(C8Gf%zOh~>k zw|i)w-9M7*Ia`18IIg>)7!4J|adYW8a|y&I`-Nx+L8kWXEp4_?*bivW?&*kSsW8}D zqoC5mB(hklg6+Yd86}0vA2b!v&M8-{U|6>+qwESG)xQUZFN#3(s}MW#Q#dEPNfIqZ zfA4X|8ulR=ic;04;B`=72+pzvhfXpPl8W~#9*T5_S{19@)~8gX|!0 zMJsZQ8{`t58~_g-{&IExK>rBsIs;qP~5Ql}^b@sOM=%hdy8NqH6J9`ct zV_16%zq;>xxc=Jf@!B`MiRYxCGg5F`bNJk7KYR>_I(v~dyqI9H?A#^uvFf~4aMV_y zFg&W*MG1~w^NK6*$}NxKp>0p2wV~E}=4X=%TM%`BVo~g9hB1A!c?_?3dKXNIsJWh)YJmf)E1c{N_Hr>&Rf<3UxtCC&aDX6krZ;P%tKYr z$(?tjK<|U6LGhGkNp1pPILHE?>g%KWPoQ^T6!Xu$5QmTKMdzVC`1h}U5qoy-p$8F$ z3`1@%U7XD$P}_|1MN9F(FTRa$e&Y+cfBR1S=-yvo|MsUSF!IGt6?PX8{GoUL1y(F* z#suRerP#`jVxFzZy-OmEPU3N#Ss2XI!Q^S@@Ywd~6QysxvGkYO0#OWNX;yN!S7AP{ zLj%IXtoJZ0npvtzW_^z_oo+8VjFR9gt>EyWz2g|3{?&JJtfLQyx^g(W^9d`n+lj$} zafT%rlgP&vX_GH{K3bE>%$3ZpuE9R!h!xgfc|B?>tFZO{AL9ILZ^E_LTul%gle&b| zl)XB6wsh8sdGq*Cx2O$2`PLV))3BqT~{XwxbrR+!pq@%$!U zH$}R9LZ|YvYx?;8rv`^GIhjx?dUG|selyh`IRPH$$hRn;LD)x`@4d4`EsBLs;Ef zhyLzfx(^Xdj2y$FCKr}oe4Rr7;w6j-pWxBeX_e_RrgJAmz$Rj{%G}Fq^pNI0hPBnz zaC)P7)t|i&5B}Sy>8&(l!GdMP9}~Jl&1oI%P+3h*-qWh}8_`(bj*<55YPDK(Q?ud; zg!ho-7WqCQs^ak+`uaxESXYIQedzt@I(`_(`@3-Mrc2;#Zp7O2+VGb5e2N+*O*&dA zW-ScGR&c5Hur?GcZ6fnoLsRlj)0oq2C{0D|lA`$%f^OH&z2sZw+kY;48>J?rC?$_S zz700>cy=annw>n;-=<%e{>^v}*L0|KdX=Nd^K*RQFb8z~>QzV)Z6Dz5-gj_2gIHm- zoxh$Y!cZJpDmjVKehP%wJDr7OxwrD`D7gcv2qS}(NW}5X!DA$@(m46}uhCrBiYwpz zKD_?*?}nekC@a;YWt{ztO%zvQYtcfEv$;GP!J2FCK+xwzU0ns*He97j8Kh$4Dlny{ zbylV?ah5wLOHK4z71GU1NLVeU0FCtz1MS_YXllZu)_E#OXOE}N-uKu&_ zA^Rtqw&r0} zRZ%-ct|L9$&Lggt4B7}?ycgj&BzaaA*GLsy8DBTAz4w{@cw^3qMRYea$B$q`Lj%8q z7$G$Pcf^mXvKl?8PH`i1YH6Xuv?c)~-P_d*+Awz6>nUgh*tqs$3?JA_A&M{r9*|}3 zjJRghlSV^6R8^L%^gV;7ZQ^Jrv1S(Ga8BWg)ZheJ&tY;c-eT9-$@(hI)IotF#Fc7S z4p?OiO8VNRs^&RV-zdQ_%%Wx!T01p0g%s&}iEa1^z7HSlP*k=>QniW<$Z9X!WE6#A z_wL=rOy^Q&vNVDA+1l*$XA6nL;h4c_mcDPFFUcWqNYN_9 zPqh=%MCt5A$({;#l2bt^SyLP!`E|~cg?MQ5qnH>SMa_bF7)r%(;P63Qe*Ww5;5WXH zofM{(i@_>ks|G)J#DT*w4VsQE{LY}gs!Hi`%_lLE6qR- zBSB2#R!au+IN8yKWh>h3VcW#x9#_dPsy+Sm(~8Bj2Xi*jR9taAD}i>dCHnUJwx>`^ zK&fJ3`MHaF*z~nrAvO`i8(wt{oY64)4jn{Ybq%VU8aPms$Z`-;MD3Fq4@T1Ekl_-k zPbadfc$na`IN7=JcuaMYEDTb*Nwl`9Yf$?9KJ~uBA2QZ%cA~5@^lu z5nQ$O8fvUjTtFtXXa6z$IIg-#?t_nt!i>Q`8nW{V;0V7#Zht_-rmtm#h>AgMdB;t}lr+!+) zTIeJ3o17G9^TJDT$Xo1 zL8SX?6s&n#oDbGus71`At;kwB@_r3GWiqLycoYVe$KX^PinETM(cu#$!G=&1t-#4W z`|$Pe{RrRw;eGIjL#V5&R(&8j9P$iaUOVWgkY;s%n|aA9_h3pE7z=qP1r01LCjF+C zI6BpeqY{C)CV&WqlvpHSEek{}unioVnU&qD1j34LD*i!2qy;`mAmFnWxfT>nIz8B? z$qn1WU{lm`r~(`g4PYhlB|(+%@mN|zhL0>uSGTN*$kK*t zTiSkLCqo$lc3KF5t}TeRtbngTq$oZf>bNscx=N97H?xZi|M8D!P|^%fRp; z<}F%C`y}VeRtKhX@np@VO4DZ`ORZWa^GS+RfknBlDsCpi;Ndsr^mSz$1&1tTW}HL& zB@~9r3Zy8cZ+-t==pri$$6?&`XK%&Cl!>~=2E{$3bEe7`SMeMEE(?!*oXygQD&S}6 z;%gGc&69pDlKYZYm($d?O6^n5jZ+n6k*Yd6xcGNigS#nv~)NwV;=?d~$MfMo`Sg3#COr?9a%1@_h=O)5RMc z9ab}2rlgzhQ-5JpRLE9Ng+gq{0j!ERXM)_k~xN}KaCpf${BxY*93#0R;;)raH~~Q!kq}DkOe+6<7+B-Unc(Y zogc;hk3Ee=^BdJtJGaxyu{7-vcWFQCScTKzq*67mQmWEUMr{^DZz4@xA$7D=LAHGH zv!b~@9!-}QlRlvD$>|iYt)NODsTz1C6EcxVmJXxR5UtY!G4P!EhS_cUW7@QcU_~Mk zB@~iZsPg_SqQ$TRG_n)k*!Z9lytbvwar+zJgv5ysEXw(D(drA(+uex)s^0bQc?V37 z1d6ChIO}~J2q_z!mFs3J&=g*b8WKqH#5kVXy&uCQpWIaCfv_mQ0{Z*<6~Xn2*Ss1l zR-H@mR-?8ucyjv_*!;kKcwoy@`0xk+2A})JH{l?YXG(b=D+{GS;ahdydYJJ9x(*(} z6&GJhch^dQ0gAxRcKIC15#@q9$bM!C+}`z$_v79zPhx)a0`<%Vb2gIES1IKe^-6bB znT`oz7Nu09JV`;D6^X5Q4EKygF3rJN!9#1&uk|6x(^XaTLZRSko78o6cAX{=Ehq}a zAbz_x9iXy9;eG-m*$qd^2&OY>RVhXm*Nl!$puWByx4i1LxM0)exa8uCWb(uJtL>N? z?4=OJ(LjX1jC#;fStb5;x9bNiGE^%&(?v8bV_;Tc!LJ>S0<_x=3m_@_^P zl#FE`L*`k`U%U*T`|?+@a@EX5(64>n8_?79VSMWwU&E(9{dcG=FT+Pa_azv8r?gNA z9uSR5p_Y0$^-C5g+@V9_c6`IoRJGiIxSL|ft18jm-i{A_>YuRr$)^;Z?I>2mw-L-V zXJDHO`;SFTCV3i}6q4jC!hS|xa}EVmCASiW*Ag0=nJ?ieOV;}tq8&22)PYCLTgga? z7$!L}N?LRVh7b*bxdiwHHVqtessKjFO}{*rA-0GkNb=^bZ+J8AcPbksv2h+g^6^jNRkz=P zzj)J|;rihF@WD@g3I@FoGnGDEjGVOH3NI*pQ4)lb>vGVf_(`5n_Q|b}p=Wp! z-9uy4M)PK1Fjy&WN#YgZP^52sQc%V3w>zz5(DY|g6wVMi5xIGXRNu)>!ORk?S^J16 z-qO-&vzxFJvH;mFc>vIO&1vXGhVr@L;TcMx)ln)CJp%&@$k?l-f7>RP5Fno9%sF}L zB&tXYzx%Gg!}sog2!Hd=zg8XCA5UYFnqiF5%s5qjWrW@VZ~DBIt1yHU+iXeEr+f;hiqKE zcZyhM%VUqzON-!^n{TFz7osK{r?$&b0OG_xNz(1(RMQ=(sH(#H%P+x-bI(;(_)m46 zM4I&SG=|f2QxbhsR0vb_o}`M7)8W&_*Hn>rwA7BKkFftiaXQ{ zsXV5p4D_5DEB(YwFXQ|L3*n>Q-gEpYx%a3_9#y;GJzqhvdOS|oNfxfu)mGy@AO0{l zU40{C(}U=GVh_d^HLEQRc0Tq5ZoU3mQmT5zlE?36lre_I^-VZ>sslOB@FeYJfY&>; z{~%U!CdHR6QJ^Zyhm4-+#K9jwghxlWsGHpm=Vn+XWsI2R%3#LF_{=cMME`XA-WFsU7!CaY`WrF3Tl)*Lylnj zB!2dzAK;#^{=4e0YGRyH7FPsT$`<-n$wj>uRFz+lXn(<4SZU6FHYoaDTzOsh(~0(u zQ)7PYH$K3r5jYUxo6zC``I{1*xD#J&U<5lyBgQP&4n{KzC6Dxq)MIS5P!wi#Ql3RE1 zfv$VqZTQA#K8X;Kv+SHJ2>mP~P&_m`&XdpR#8ubbjQ^rL_r}-Xj!L5Pr?>3DszeTr zMBm2<8eehVg*f@+pJVxg<+$(uAL6Nlhq2+xjo3xIDkX&_lDWU97r6`8;6e(6Simr` zhiq9O<%YvyAI@L52?zEa#jn#lP}^LCGFOQ9aypKhNf+3$VR%CUjL{s~VdBy|FKrHE zIvb#dF_W8bdo5bdS%(1vxIR+SoA(~0mfC~-)QAcvFJFER)~-F5UdTea#0=BZEP!zc zXG6JG>&M4_O2n+%}e1cUpNeaaaSHHpp2Pj0~gVVy+Hv0#i`@m~=5?$YN`|I(Ek9`Cp zyZ8R^M>w?gadZ=(T(n>@8Wt{KTt2Dx%v@dDfFaX`szW=Koio}aT1-hy(fozQJ-|E4o;@%rIa<|pC9;dbYGCgxn=9IaoI)$?nFoe zHfG)eqIvke4n?<1pXc&Y#?f!Ny)(x{!uu1G1@v@xJSG7Q|Xaw)#@$xpzbzb`=-V@^$>9T=fWyU6I>c-!mo zv5$TTor5Fz%v;}w;U7PO^HT;EjwPrC4nd~yxeMDcFg}7XJ2`f6AFjISI(G7Myy4C} zaB8R*SHJDgaAIB%LsX&Z?>&G82S>2)pT3MEKY0Lq$yg?-QXQEb?%n)zJk!MRbVDN+ z2j(N<)BAMUcV+){5d1lQiz?2&G+iC-op1%c7?6C)*p$K#dAid^!$LS379;HmW7m^= zvE_+a_lf?{&IRV4Y0Gz&)6I~k?5N1U!mxHvru}zp~@a93}NWX zzQRhX0wdNbhE=hqr<=65BZ<%d{dxG*KVFW2my^7I#9Gy5B`D1)lxGkK^#|d@*%1pj ztiwNk^!=C|AEpYaIP)&Cz%m;bnjc-M^F^9kY@}J`%CA)mAfQ=a^)-PB_JaQB_ zu33w}y67rQ5;uIkdnfkO{kz{ww{BAd!c#%g)+-(8@>8(5q@fgmy&i(97X6^w%#VSXEKc+G27?&mKa`6U@l1Feja zEMLA{3j?$pekQ-(lnizrEejTrv8_>?*qW-GkwrdAF;`w^f@a;M$tpN3@5iCFLNadR z)X5=SeyIoF`Su1}cl#ok;|$)7r;6KB&FrB$#vNyAYH(I^DN+L^0 z6$vd5k-undU4%P7`Dw)`O!E8c7PVsK>Xmr)4L2!C&vB4%y!t$S^rxRgI>pCUeJttvy!k~W-t<~X)JyaSK! z+K=u;2Fur9jEgs2i<-K6JoVIeJo)4fT(V&!Dl5xT+t{cBc&bAUi-$UcK*-9qtOOVR zYN>xNUn1c$?h*ngIGCbPNUaDb^cv3s$E3SAMh!5CPv5y5pZ(&Mbn%@^E0|fss$x_8 zma{&u2t;S`H36Ko-<4u41W?aANLUeSWQsszkl1?&#g@t_2hd)L))lCFW zDd)hk4}SL8k5#JNO-o+|kApOA zcoG#1$QXRj!&t!DbJkD=%I-7G}c#`07AnQWq!j-u6x>w>dvaBBBl_0!3Hq!^Rt?B8PNR zk;4>%jIj%X>r{&F)MOR*d3(s4H;Z#8-aQfT^5(DG-&9M_0?l_Kf zmoCH3&VzjZJjxrI5g|8!@6%hcE9^njO;@9PtONT`bmQs^FUA!uuc8pTQ7J_>a#VHn zCcNTnlSmol@5fUEI67b{!NQ~bkhv*42L4KlJ0GlWZDaVw7XOknrU z-IVWMjE|jOK&3G2r?j@VHXJ7QkvdkFaG*CZmT~??8_}|80c~{`9^bYV&ph)C>gpSC z@ui!nDHp0vKXU8{g*>D;vA1^dP#meP{$T*Kv&`go(#w;Hlp?VtC{?7ft^Z}%hyGxg zTBICZ-Ejt|`tYd_FTub3+oh;zcB3#jssdrum67B#)t0;g#R<8*@UmD(6kv5K~;)o5GZjFaq$oSEUQF%S}m23D&hQVue}z>jvd3!ojY;hz%$tQ%x)Y$bU-DoE^AwX zOD?&Lg0P^NHzI9>_uJB154|UVs~9^tW8>#~$=ygY&gkHfqLhUwv&TS^U!-!r1jllD zKSS~{tUf1;AAJ8J-2RsJy!jO3eKDl7UV3q+ijHa@)zS|RTOej>3TJugU8p46PS_#v zxsVsb!?GcoBz0DK-B_@0HU9ebug2ef{Xfyd;FQ#PTE6TYBxSz}H{BhEelz=ypq2wu zUFk>vgb)Ao-EZUeSKdZIxdXc&{yE*a#n^D^Re0!EKZ7G$Kv`XgL`xcRDx&Rlb8m>O zz<->26nmn3&=jqqu(abu$i#ujIHK$f0lPIs%6~1X9}i8=B;Br27k2&PHyGtW#Yp{L z{1<3k8KmPp*&+pBOxS)>XDD>E{04TLdE2<$hcywSiw zKNgadJ8|NO+Ga|;qk^HM$398wC9OU%kVAb-9v^%Ee7yROW)+;;^UzNAy@&Tn&V{5? zfTWXK5SkVADmGhF6lQapGf$Z){x(}f$hlJZDn5bXK?##m>ITQ~nm62m%Ql>c{@#9- z(BcgQb!475KOy8yi~|=a!}i@f;gz)#RC7OPm^q!!V#kSN_?MpFVEv`nV(0EH=$&jw z!=fe}K5-Dg_~)--Wk(F&$M)jZ+Ld^?=Met#iLc|oJ%_R4jyq88FUNR-?h~ zlz{T^5W-LG#`;hdS|_s@Bs(Zfa~U;Ne?syxrcfnW(`hSZkAfk)`blMd9qf`tH)Kq9 z&S$ep(1zoR zIJeH1DDdIKhp>n|jl6UG&|$qZkV7Zp%f08*9-4@8EL`NqyWiG~4Hrc4%u@sC?#iO9 zI*R&+Fv+G$)HX#K=5{L@z?`*8S!u!9n8MXidP-44=vL$zOccYOlD(5k!$s6D;oZDJ z#Ll?-N8j-_ymtS)=n@WMcwiU}HDwIIn5v4qNdl;Wr?0yFQW7C4T`x$-w!_!nmZV3DpB({Km<+%BosyT)qN* zgSX&I-@FUi4i0>14BnWDS1nsddpnA~-6wG+h4fd)52Grv8Uqs(=-}(dc`c-mLuvzf zg990-8z#JkxXKyQzAp0o*&}^$9O!{ZTqM%aDuG}y3A2;Ivbu6Thoo@2bcf$#C9fKD zdJ6(V^t#Gtuf^7&9k0){P;6W@|vJ}xM`!JazMxse``WVd1s)(py zvc;>)aL$TK-0+HpsIT&>?HZcs(i)QeMD1#3^Dr|BOCMR<3UjpL&>A}C>zh#!?c_{> zP`k&-o#tVcxL2WF*=n&ts-p1bWKBe2cnCEMm*B(i_%rbWR;HP`Oj;q=>;3S#KsJjM<{sK}J<5j+;Qt2sNvuRd*g5{VSI%i!ir%B?!EkDYQxqq-SOy$rwhtb`>Lvn61v~8GC6f2 z0y%GNVw8cU0KDw)k&z*+Sg{PjU{G-thYlUZ_Q!WJrj#b_?#C@Rw$Zz5!K&4Kwpucm zqKl`}D)O37j;X84E<1MBT+u=W$Jt%Wf^uMJDnqiBR81-Out)BCdM^b#fx^zXF}01A z!d*VeTadSNvhNe6l7Q~2n_h|6Gxq;=+};y%V0pkK!9Y{w&JFRhXO_$2n#L_Uvp&CKw_vn#B6m>oC6iF{H+ZIp7s= zr5TYMH4shpBRY~o%OwP`2lwDl+b+kx;Q@9?f>BR$@)RhzWz#no_8&cg*T4EE42;GR zo0!6qjNr(Dod`0*=k#c-B$>@!PwvODryoVQtsK4ub(qgSmwHagi8S_+GYS0Q zFjfT{-PgUgEdVw4*UTQ$wh|C>py6MOThK zbv8+S!${d=3LkynyYbNG+wnK=eGl%r`)*W}c{CTn&#c+78ZI7b-e^E=Xa>Bg;TE-D z_E&!TPgu~G!h0{gMkTBMc;_RC_4T4`{zB9;R?$hoy;f2OF#2ryJ((?WfvlHK0kL4?VO9y)TE^4pCiP4nPuX`mfm zq=H9Ve*GYlgFRS(+j)$!EE1oN(x7uL;guBlH0|^rJpS+@Y>X_0Q&y9cvM#g_AlFg@ z*Xoe=94)r+;Rha2+AtESP-*h^_Rc4}x@ZQDBf{X^vK32-Ln1T!H$`wt1!fjZ(9P#=aaP^`ny8F7Y zsBIly89xtu+MmIu<;ze;fv5@uFfi7Q$t5Ag2f9hWj-#H8;iHH4V`=kxb$iF?nvF3g zQrX;!f-GJoXzdsrMDz8RtGOdvCJZpB*3eRqOE0|$-3Ruo8V!=@`~7c!6U%EOxaQS2 z$_f@$4@xJPXw^%2tXRR-7pz4GG0@XLK8AJGi(q(MaB!9uCZ|+(v%}EqA`b39sCM(Y z;^HgR=VbyNKYj#5eFFreZmeIwj)D?pJW1!5LeQl5WoCbrDVZ8I6>w9EJz}^&SL{cVmEpb4W3tUMyOFA=)4O zA+|pFV^l>d85|qJcPIBExV#dXCkE*jPQptvsDbg36j8a0lx)Msi?DU{6fPkUlj^bi zjvNG*Hqmu!CYH@%cyt8i6=k?+)iON#)IKysf^g97`RRARg=^O_Vo6YDj*RJ`Pmv^= z?rNzEkspjTr<7O;k*q|h61ROC!8u-dAdzQND&v8V|tSrr6ufNEJDf%QZpPLBUqKPoDPf*xv+5h zVkeb8u%!cbeTZ3vjeM!(`;8L(h$&IFN*0vJeo)G7<4tg|-uu=!qHi*d^&2iB?>~j@ zq;VhL_9#}bU8U0H1H8sWK8s(UJc?GnZeFnj9TNhIJh<1?lGCA-dVoQHHgM`0|Wp=}{ntUVXs`;WUZ(svja-gpOA^D|jK zv8gh?<7jBCN1T8*K|jB_?R;#0H1UMO#N))zLCsYx~c_F zpXf(oB#z*!Rv5LFN*IKj=wOKZs%x%RG=75LExb%?OHw7|7D(ciRn(Gb8pED#o8e4! zP<8fWw5OkwtAK^8gJ?Ua0?~30rV?ahNiG#8@~CSTmeq-=i41=D-$!uKW%Fo)o8d@} zD{oMi5DHM$8FvPXDgCCks?1)8pu)Xk0^JyDk8z^pm4|h3*8nbk+IL_tez4`&c+E98;quA={&Vjk&iYZL zjRcz4UxWdA4Xt_l+vODmd=lV}gU1BR&`%kE=3% zwTw)5_6!i)gwWG-5{-1TS{5%uVbofGVWODKs<{CxexTe3%Y4XwnK=g<*UrO<9b;H^ z(Moz5(?~2B(1EBZg)kh6V0PR6)HWR5{$rFo*k5@MPEHJk?-RvAs0ey-pq)h1!ey8s;FLttR4U8x@D|iC zd>jpU(O6NAOnEuJ{@?fDT*HeH&++g(nwG7gwr|Fst&d{c_%WUnK*3F0?c#Sh$-8-p zwoi7$O^@gP_9OUS_Gzp;|6)v$M>2LF!PV7ma1F(9-~=@g18XC6Ymd`LUwk34$*#Sq zDT`og_!O4UZ-z^@Su_iCa0zzimuXKnK4MlSk~sLi;mR_c%nrjx;g@~Eg(4TmQiR|) z5B?HkLj;>NtKvcm`zh66e*WFBVRZiwu(UORBtdH~n7|b`G+@o9g*=ZSHJ;N|>Bxs< z;#tJ{Cot4Gh@n&C80kqMHj#kEv?qp@PKU$5S-1|%1 za^2M=uqtp#+hQ2+e;+>h(U0LRqeEC&+knKOg9;nuSIkE?7{TE!Kg7baI(iT-*mHC* zHofX5L^oZHd%pi=3^lniFT4`Z&@5fPdLb^jj=*q|LQLRWOFZ$|Bb$+=S`0J(a+IO! zN>aK}3T}ck$V*@+_pCR1on1Ssgpf1zF2atK;3-{;L4f@H+A4G$+J!2DN4ubhtRy>^ z9bVzhVerUK?AVjR$=+^^473yboIq1;1-9=RBA||A)7A6UzTQdB@&adnGT|hdl_aT` zS22$uX>t0+#K#G(pbX8E2@P*fNhm+7mMY3Bu5?;k3W+vP@>;U^$VC(A=I3RLN13$Q zocx}~*l3d2A%{gvt1*93C0v2|rP^V${i0MLel{%-5lbMHeV`PRc_XiXiYA~S3s|5t zq!pqicc3!+0+q@pNafbapWlyv{@V{@#rf;8;i8Li?y9Ba8j|?xe|#H%`X{f&LITT+ zmoG--i=V^S|Lv<-lJTIDOsB7+5$9ii2{s0aG3G7DH~;frP)1@a%BbkBJrChe82>0c ze;Im@9%clTol3P|*V?E8JEq~L0Ol|1b&QrF6%F{$mi(9Ru7&(?f=k5u5VB}BgvV1m4rT3`h-F&W~b~FwIWDoN^ zM#kc5x#4&$kN6k`fL+{voWZ*BDU}c-Sk6!GNG*gT(c~pY6Cr~?M}p9;OopE{wwH9f zgf9Zr9s&n5hxE1? z^(#1HTC>o0Uvt|HYDM+7$F|Va`e-XR;-*(#jrw`@`1{ZOGwvY1xcb8NSk>HszkJ7g zuw^@$P72aus`Vsq{7C;OE?u)hkxc*e)qjAu(t|^%_F;E>C;U{cImSy0G`-O>0?jz5 z2_IgTs%<-b7|rxVE?z|&&xu{2%D&`+jo5l*7e-wZXj^~2N`2EC$zsl25#{C+3>u8z zn4AbwJj4j1r9s`3sT`NdDLmQmg#d-kHA!rJ2(f+&eV*oEf#mGJwU)HViU zI>ps=l3vc{)S5cfhRZp_>#>XRo0{q|v^G|;fBl*Ql2o~@F1Xe}in^@AjROyzWX#B+ zHhyVtu0*0DsUouCy5?042}A9B9<2eN>l4Dtja#q2 zo;UV1%E%0EqkXMku!u%U4~NWfwG|5GCH40VcV8R$w)3o^O81l z1fwe6Ysk_!;+0U=scb7$5pj*qEi&(Pp&SWwJosC2FW3V>erNFnL<^k zOahuJ96m5a0>-o={L@XPiqqbjg``r)p}K0UUD615*?g>96T~UfwtWoZ4AI`cVC$FO2aE44;u8YTeKTSnWD zLiO8!ssqOl?!}s=RH-yqhn{*I&m4XXb=4tGtTb(Y8j)Z*D#?`g#|^Y_0yNe)FrMI` zXXipq>wF9j^x(%2d>4t_7;auSU+);4bLoXaQpAMg)zuT@e4C<+?n4(NvR?8dV{zdr zhLom|tf-3eAdYrS5UdAO(o2#6S5|RF$kdjXQwV}i#qtWqvr63Ql1JGZh^L>~N=s;uNx))E-kVT>F>dSD!vtY4%wvU+Yooh0tIJ^m2-d;73pPc z3X*Lc85}`qaf?-eOD>^zbWvX@Q9h|^5+8xPx(?0tA?)3^3&E;d#A&}UZ@FjzZrr|Rm`8zni`BD6A-~p^&d;zLF z4ak!69cCo5zPS-2WD8|qsyqWw>}|D)e8=tscxK;TY`k%$N-iP8HT|qJ6r4o{r{nBg zcAhVYB&qECw*H*1<1iXME3u%pjr8*xWld!wNCdQ+fi<;cJ)Tk%&q4R|_~B#Nd-xC< zs3AoLlLXzS)9NR?kO%(>9vI?hQ&a3`YKm;!D+@T41$IlmDQErgs4N{ORnA~mO!f;| z7DY`J-B*u8^|xeC$rHusrSuI=Vv3X1-DPb(!5b2EA-S9(uT-&>f@3~X0>o-P;s}LsenZ%$Sv$U$F85oia;#Gh{cL=hb2SNEgw! zxKwTuL=}quUU|;BSTuhModk+|I!~bea2Fcu<{^V>G8_4cc-#}Ia1GY(&8h@3GCm$3$1mnczfIH z@cn0gflKK}SKn|R9(d?pG*S~SYGF_)9Kkr5(4$9>VHIceBxiXpnud>H%_O^7>SY!K zhgNV%@(-L@Vv_O(Jh9~w;uDfsi&o*13$MpMVv06m1I4*0me^F~LuGPg5^*)#rKRbC zC6WwpGcG}dgGvI;%#PK9ZfgdW-B%}fA1-MP3SsG0fwf#x;x>e@4RyTMimwo6XBBJRbKB}Q&rc1rAyDj+LarSq>Fig zD*3|bIapZNgb3NsX8ueO=ye=Bj{Q$Oj;ph*}S8OE`rhm;0h+O`bwd|IWg$x0~)>ENwoHXj`CMSn0$foMFV zxiIZevQWPyZw5NLvFDj5=t0oQa<^d7c^fcz{IJS?b}18KmOQf)dCpeZ%uN9cPJn%f zccUsAQOsiVJjPro+<7-ux667a*!h?8X}{XeD_@w@RrgBv_m&zFF@n@W&aHMNmcn9z zkYAYrvot}@E=pOj-k0YW4B{4(=0cR9X#Bnpg_TYGIXHFn1U4}2UDecr8lwMg z-N#T_Po^*!R*5q+p3j{5Q+CIh8k@l5PyPnW7B-@t5!dzWHz=;vKIaC33r*Z_{UU5I&Dp@y6P(7I>RXxI>;dmB; zu_sAcZ@A`4-^=}CUMTNU)0qCNEx{VRlNOR6z@<$>PH zNLPhtbks_`DR!(wIC?h*dr`=H;rir+OD!67rD{4+0LU~gqrn8IAlxN7l(W}_;#=jw&tV z4>q8I+yW*?RH1Q)T@SgmiTSLoBJk`{+F|>y9d!9Pvl9~#k2lHzRJAI_);nxb&@;wQ zEq3_O2q9J#d|siGO*P96!?c2K1uDzDTF!4*CszsO%~hp$f7cm0Gh00wEd zC6t|(+Lj!Uu0uzWi1=_$>jLz;a~zObMCh8z)>-GC--f42WF0(y63e||&iX7CE?P$I zkUY~9>K~k0lAF*wa1<+-)RPG6M^pWJ3WrD4q!d9YlX8gJ?DR+F)+yk@5HUi30m;4r zhTFR^uQr775tF9Pi|R@*LqHimvrA=YnbtBs7mq21y2r;zV$~CL=7%`@9V){*67}jG z|2X(%0S}o>C#QAte*s{49Uhg0`T&*bp-$I13iQ8sFnBhgylq?Q~= ziR13UA*@_r6z@An+`$Oxl&NZ8OD${BI_GY<9xcl*Eq&}WYKLbP2n$Py z>Ck(5HZB4BkMaiT1y~vT)4gj>`{N};Ze{bSD)X{96(|v!62KwVQ}&-4!bt|G#Hkyj zx*ZxDMoN%+WfTqT*P>~#2{i;-W#I~(8t70<_vlP1t0e;Go64YO*%E9!uovgm*Qo_K z)4N6hvo)Ejr$BQwJVa6}>?64|ipq)>)V4H3>f+@Io@=Ousus*gVRQm%hL>~sNwS7X z6>1)1c)jyf4|bo}#cQQh{6Z#7vNwwdIiOw%{BaVP6dt!Tr?aB-qImqMSyN6gVvM%l zKwuv6QP4zxPXZ^7jVfR+d6?yu0e-H40E3BAfmYnpG(DcFl;#@RJGzjRZ5XKKBnIMf z_$ky*6#|b?!&PyTU3kswN+0>G+TmFR!fJOyr`MG!Iy+LM>6IC3z$igmGdo=mzAn8h zzV*xzL2(&eZ9@ZMS8Tws{YO=`cGDNYC{^#ei#MT?W}<&Qjm-Yz2-nOb`x=6O*rEJ& zyAG&$ZBeS(k%1Vh>Vqh+t5I1HIBFUp|-A0 z3D^XqwL70Vs&XN_hmNb%J_#7n<7b#Xt}4TlQdG3{yebFHTcyHRKCfm9rNWDNNzUR5 z;({t{KFIGYt02`(J1|TNTQq{tCvIULO?6RSp_ZSIF+3nO!=*&>Fik@$8{;4c$V>Ru zj>f_VMd-Ep{Q(5XRfI{A`_&S|yslHu{;q1fm@a>%-P@gb7VYqy1j5S7mJ8|7c%+&{ z9^>no7-k!XIX`dxR7^(EwJH%B!&F-UNPfkV1q;+6ZFqbfg~LbDNIM;4U~Q0gUh)yV zQm~6NzmhEKsLbfa5#_!Ku9da1QzN}tQsz@MvQWX2O9=v|bTjpslSwPk-p^H&LGL4%n3ALqB5;p3D=AU;wA<3* zIa8;+$+kvnt0R&zeyQ$G$~qzrj9-IS0&`?01{vImppU{dGB!rR8bOTjr5IC?eLrPq znbENUwJUGfYhskMeKl!x!Ml<~V;07U4QPmnKM3nM+0(j|4>3(v@ou`lgwVojCPLTN zQVK{wqu>iE45~I*F?IDCkp!ns$dNoxNyP2$8^&>(8wve*<+-U5%c%j%qnzo~bY(OV zQExzbRjGVZRYlB6HGEU5*r$~DqKPhB;PRH6uQz{Le&wH+cCv)Hzkuh^o=@SW_wd*) zFG36=Rg%`lS<2%~H&c~2lwD~?W3e-yCB@GrV%tF5uj?@8Np+X$9cv_5!;TJxLxj>k z+DvwgFNFSqc69x!9fjDa3K&hrhmh^<#;HOYBcpvn9g(wesx1T@PR?>_iZIn`)w}@z z=23!J7?6|)mvRfG#6d_FE(`CkC?T2%6~{5Gl7%j1B2D5H9>sjXKvGzRGg5cX^^+~k z4(WXwrWqT|6cU}EnCA3NOxiBs=~zRyDj1;qR##i2w+G;CR_+?_FiOB!&5(2KAU>Poih^AP1Vhd~6Vo+!VViN0aWRIt>ZOi-u~SE)>p)Y>oqL8UYHGOBGGeC$j4M zva~f)XR@NQoF>Dow$TzELKf(Vmnk@5Dwk9SK;n*RiLd0W-F00~m8B(~PCjj_+ML2@ z3I^~6A|%*|E8HPs3UZQ?!Q>7o5tO)s?6aXYeL~IbJfo~)7A3hs)V)KB$J>D09(YX0 zj&!#g#l9@A(vnmM*>>Ta8K&Z{=VB^~QcJ2KG zWEN}n@3VYUnS)YiB3I~Bwoqv5Y-WmpsEi$z!@=DLv6C#~=- z;u+H!)iye(*KIn~mPZbqqnHzbN2D)clCKj|fwrLcw-7Q%vXTxT?V$kV$*@n7(~zBa zQ>vtOB;u#{5>z%@wn+5B-Uq?t;QQ3xRbIDK)6E=64>gUK-hq@05GGOfrO0P>>14I{ zctJRmw9b1JJ!oBP8jxpoqKm^-?3Wz$=B)OZ%L|niS0u45fskM;al_Ip|E#p<#Z=sh z=h0qBt-d!yn~pLEL0F<@2|^<$aHeW|>Sj4JkB`O>tjySNp4Nn;kPz?~;~sU?2IAMY zAA1IeANekZI`(5h(7+`ZQ+qfY)xa8s=`0|%Q;+=S)C*?yz8#twblSAB%xXy{GV*GG zbRBfP)ssXVMfEOZ{6S`aPKEh(c_fFmWwV2-TV5+FS#}r7=hcz7V@k4iN=gtX^Wv~t ze2tE6D&Q;;KdL*YwbC+gb%a!sll!pQP}x(fU;(e9tYBuhsqlA66v|c_E$7`(YAQPM zJWPe%p0_|)+=K|lPvrM-bq$%bepE?aQ%O;?V;jY0s)Z*hDPx{a&V0Y*an*iXE+2aO zhm}Bxi8=n{4{+uD2$rvHK`JNqwJ=>fwOArY?*pcw)%5?0t+Y17^fa@!9}=X%>jb14 zjBSU-^r(xw)obNxn1;1eW*T$!NXZS^MLM(q+Ag=|XzZkY{kv1;RuY63bc{s90lSW* zc~)pvs)+3{e)GyJQQ0^nHST$t3cEdf(XqL1$S@@Eb(j5n)zVcc1S_rKwWE6WQBdeB zUT~v#Sc6Ji3}!!b^SpUV&C3jt^z;j}=w9t92Bp^Zx%uK}?eCqt$@_VnHVJ0DrT|C?+f*C)DgMMQ@iNh50+LLZBIAmS zbDz&x@bvnn8!>O?X}IAYynyzC1VY`2woTtEUZ|EVW@W=1-@pf*n81)QYomiI|FIM# z*_|z}Wm!~K7cpofyT~}{bIW=NIn#W0_x8nUdaEL>DV}@5_h)y%Z4FXT#XM9#tjZ6v zb{Lv5fu2t@lvbF(=El-DfBJlJLuq@#0%0{-{x`iYw040`-`8F_ltm&In2Jy0s)`6sc61V`63EFOn5M3O@NzZN*5CN;zSFKum7{=79|X$; z3ppMc9$Cp=HqGb$O@`%yTN5N$UdQ;&Yf8`PgvNNk<$b@vW@X&m3cKittO}pMlDMC#CwNL5vQ_rk_w{nQ^fr&3on2~2JL9*$!4u(+i7OBQFhH0BFHT0xWMm1N4(HxTJEOy8f5jJr6W|; zAK7fR)FhFw$jB}?1yon12&Qw|lcFY(i2IVoNmSEamrT8i@;tm{jQ3plwwFX0q`heK zZ%(0TX`{PPj~yNTB!q~hgJEP9iB0KMNv81v75KBz&pC%O2B8{kCvJ4ev4An*}v45~% ztreZCiR&l4y-PS`vXBGA6Dlv@C6NZq&f2gtH;SO`^e@flXTE1|bQ_IQmDgm@(wb3> zsA(-xP+Lj5^QfswbAWSbtYJhm>!z^l{m4Zan&&5!K=ci`5s$kFyq(I!ak+D7n8(je zx-dTB#kot=fRPlF|{Y>+#jA!n6F^0 zKcV=3YZ1_kW;1LqLjyjWxKg3&yrEUPloKx9Y(!>#UKR}%imZ?bgRJSP;mlTb8b~lS zEl69o-_i~lC#q_sI4NToJ}JkXN8cc+ZN^KoS=skHf!eAp_Uxl4HsvIc_VBuHwfegv zlBHJ3Fen(p;`Oh_yyY`;B0KRC2!phj1hQE-D!Zl@7lPchrVS5%;E$6a zf$F*p7A{Uv2y)1zB$h#ISee66zl#HIqGeGE-QBY388l_h?-1<}2xKrgNV7mKF)*Tu zVbiLB-B`o;$*>RQm3(e@K~=Hy@gAzGRBkpkNiCvFKZwS~Gt%cbOW(c}!XWJ>!|>w% z@DP{uF8jTC@UBX8qOk&3JZT>ur@-2`m2>KpF4CopyD4A4wro_s%q1U#1ugb@H3LHQB^esshcY4^9K$F;dNyhau+P& zMj5q&FOXuGzJSQQ%MfY%5FDP0(#Mb_m*3j8JX?FoojQv(ld!pZh)BSPWs8<513V?^ zMa5eGH#}O^n+}&+b1C~yx?J8lKUY>!jTmDj8ic-Z9U)oBK35(U zRK@+>vLMz_;c92zt)iNd5Q(#KF9joy#>N7};eN#-ND|VLWkQnC;~DhA&jFttbE#!@ zk%}~yEspW>g#fPE9%>ch7v^d&8|@i`$V}Jt3{A=gj3!er zcmp-N6$;vw6>Q)p(96;cH8dp&vd)|i;^B3zk5MJR`kqaospoH8w<3C2e~NW`Rg zD}^TEp-p$Hw6@Mp5@)1d*R7o(K+WOs37;yyE;=`vG!Pr`VT5L>il$(4(y90qaW$nJ zP(xz|DY{S|N?q+ax1)9A+Yqf?PtNl)hVObS6TU*T4oYWqkfZoLI zx6u(&nqN@DL5A&iZ=VR%i{(ws;Z;K@^x;%+iJE1BJHBqpJVA}{g4B(;cv zjLN}ktWOhWdg<8IiXv!qRQ@5eyLZjALDeBMGKQNnCS);w~?*QU_2 zYziIwgXroAz{>&45f`jnJ%yn`C;A8gy}knM8kWLM$VzRyLV?7Ynn)#ARtvY_K`+gM za1=ff2GjmNUBN(Q4mxzIU!=YjP0O!Dv}VCvx40QPp=C3E58CgIK-i6f@h0e{gR5u% zEu9#{SoZ<+AK9i}KYP=02A?laEs#T1bq@Xg)C4C&Dz1>Dw^2>tSl5`s{ykxuD6^Ow zs=`ky_1;mumUsx>P+qa8vAAf1f-2)PS4KmS;pvLT~RgJrn5l z_Xpr}=jRw&y(fj*oyO3`=9Fo0n3!Hms9UspJ|fftlEoA(Z#dH}ZN~4RAlU8qRv_#~ z!DxlX7?)uVb0RI5O<{7N9TOA~5tLE^5t>@;yZHGjx`Qf{+F`4BLur9R!J&$ws@e>5 z-Gdc?SLVRb*$KjAiWZ2}%vYvBjx%TiX?B^Wdw$m#;n~{ny+D*U3WsP5Ib>}}+1bt& z!AK{@kr?kqVzf`K^GJ{PDdDj*zIFX}-31N{E6i@*U>Tg`sRLyV3_JVbuc$|mA$@PC z;%ovSO@v@GG~K)ze<1A-N+3#GiEx}zbDXK!_+u^{B7^MoXv%oja=7Qx?8fp?7MDzv{iPd{ zWf_wh0SA+ap(Sdl@kbx{i;B=ET2wUlDaH7gt@sOKO??M)n_DQQ&-Y4<`uXd=+;{K& z-gD3WaSp)a1fw-*L1E%R1}MlsbdxPCG3BPDE-+{lpJSiZJ_9!gZ}A<6y1D8<8(KU= zCpeISWPyxkF*A3;9OG9d1-S_?B(O{0&D5f(a18oxz{&12zB7Cu=j?Q~*sL5U40Q+~ zfk_3TmGt@)_O&-&%}r-hjLB(9Oj>$!STXGf96s!l%}CYim^tJAarN{;pX;LFINZ%O zY_-&>G&6a@$N502Kom9ir9?AYiOo!7=O^jLSqTNbB~DXe-iZHL zw%df_&wtGuxZBBtOcW7VxVpeX#36YF?=$M@s!hxD-&+PUQN#!Ji_^y);A*wX01BXp z!0Xor$1UaUTSEdUfFc5GtD4q%ge$>s*U3KUIOJRn3ZRI<*5mcoB`@dXk?-|CY+ARW zYK;{XK(TW$5EmD`4H93}3ZM{AZW6hK2%I%5Q6OdAyxA~S%%j4Cr)H=_UezH2_cZMb zR%R?&I3K2ngy*#jNtxU05a_xPfz$5Y1_6&(_RwQrfHh3rXqf*kK`Ttfo18hv6 z{5S@AO{3VT8q$GN#rkSH#E5_X_|HN|bx}9OVCgh}EHKe z9m6)(Se;SDtx<@>@RAmnpZ#?iJP2b&Mjc#FByLPn0L5V>335QkrI#C>`kPPINDko9 zZS1zAL2;KZdb|cPI{`|7g6Ph1<{xJlt&O(*XE`O`(UZhL{Xr%fk#NhiS#o_lpwh4#%8Hd zX!%c-mWC~sn)dw;FI|TTDA}7qD!5E&k%`i2#A=usi`kM!L)Pmn%p{dYz%mNMoeMIN ql|-jOEBXC?2Ft3Mlc#nc8SVpR)ghr(ExrE$0000 literal 0 HcmV?d00001 diff --git a/Veloria/Source/Assets.xcassets/icon/me_item_icon_01.imageset/Frame@3x.png b/Veloria/Source/Assets.xcassets/icon/me_item_icon_01.imageset/Frame@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..bea1ab8025e588ea58947162dec3df6fb74688b7 GIT binary patch literal 1754 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 Ef;;hS#Q*>R literal 0 HcmV?d00001 diff --git a/Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Contents.json b/Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Contents.json new file mode 100644 index 0000000..5c4d3b1 --- /dev/null +++ b/Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Frame@2x.png b/Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Frame@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b6f37548a0b26aae16c503c5cb37d46f9176dba GIT binary patch literal 1276 zcmVmd>0#{d1!B{ZCxP0v6=KFLv&!dvDuD@zu32 zaZuYIIewN(&XI6OSwQ7zX|5MV7kF(ZWg429(M$4NF5pSJ-Nb;V{zqtIP4#N?d-;lGib@on_78&BeRjJeT%^s(~FIRx)j+zy$z06g1NX2Mmtc^V(=L1gQtwwF1Z?5?G?W+Ln zKyPsjBX$Br54t_gsMjI+qB#*h!GW-bMHafVu$7AqpL+sGFxGo^9)?Rs?j_8*zD6WV z0c7*HVvEb)ecF{zf^x~p10f$-Y|uM1GLX$$^s({h-0-2}Y~Xw%pE4{O`g>(hz6|be z_xs>Y+;7+gKx3DL9D8@cwG?6xy*qBSsjjia&_3us+Dw)Th_`I8Gj|HKGdThb*|Bm5 zE+-`*c10x{=jp#7N3!iuFd~2V^?`;HXWC?90VNTPZ%6;u z8mB3|lj=0t?5N$20|L2Q=<`c$`H}<)MD8|F_(77b%ZNFzabU0`Q!W1moC}nzZ}xub mj9*tt^y;``HRc||Zu}3*R(Ks;6uiv<0000R1>6 literal 0 HcmV?d00001 diff --git a/Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Frame@3x.png b/Veloria/Source/Assets.xcassets/icon/me_item_icon_04.imageset/Frame@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b6f944ee6ca42a93f1adc1bc98155beac40aac7d GIT binary patch literal 1851 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 literal 0 HcmV?d00001 diff --git a/Veloria/Source/Assets.xcassets/image/empty_image_01.imageset/缺省页-内容为空-切图图层@3x.png b/Veloria/Source/Assets.xcassets/image/empty_image_01.imageset/缺省页-内容为空-切图图层@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f11751d183254dbc85c702c59d8945cc9ee8ce21 GIT binary patch literal 75386 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%0Dmw1N-RovXd%x~KdTQywj{D@Wl( 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 #import #import +#import diff --git a/Veloria/Source/en.lproj/Localizable.strings b/Veloria/Source/en.lproj/Localizable.strings index b77a96a..8957777 100644 --- a/Veloria/Source/en.lproj/Localizable.strings +++ b/Veloria/Source/en.lproj/Localizable.strings @@ -7,6 +7,7 @@ */ "Home" = "Home"; +"Me" = "Me"; "All" = "All"; "Drama Champions" = "Drama Champions"; "Explore" = "Explore"; @@ -20,6 +21,15 @@ "My List" = "My List"; "History" = "History"; "Select All" = "Select All"; +"Privacy Policy" = "Privacy Policy"; +"User Agreement" = "User Agreement"; +"About Us" = "About Us"; +"Visitor" = "Visitor"; +"Help Center" = "Help Center"; +"Feedback History" = "Feedback History"; +"Feedback" = "Feedback"; +"Feedback Details" = "Feedback Details"; +"Rewards" = "Rewards"; "kHomeTitleText" = "10,000+ addictive shorts await!";