From 44420e6cab7ad8a6e41e2a5b884dd33cba17e2cc Mon Sep 17 00:00:00 2001 From: linshujie Date: Thu, 10 Sep 2026 18:10:24 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=9A=E5=91=98=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20-=20bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QuickLocation.xcodeproj/project.pbxproj | 14 +- .../vip_required.imageset/Contents.json | 22 ++ .../vip_required.imageset/vip_required@2x.png | Bin 0 -> 17329 bytes .../vip_required.imageset/vip_required@3x.png | Bin 0 -> 32094 bytes .../MemberVipRequired/Contents.json | 9 + .../app_usage.imageset/Contents.json | 22 ++ .../app_usage.imageset/app_usage@2x.png | Bin 0 -> 31928 bytes .../app_usage.imageset/app_usage@3x.png | Bin 0 -> 59730 bytes .../phone_report.imageset/Contents.json | 22 ++ .../phone_report.imageset/phone_report@2x.png | Bin 0 -> 25203 bytes .../phone_report.imageset/phone_report@3x.png | Bin 0 -> 47296 bytes .../today_track.imageset/Contents.json | 22 ++ .../today_track.imageset/today_track@2x.png | Bin 0 -> 20894 bytes .../today_track.imageset/today_track@3x.png | Bin 0 -> 38162 bytes .../Assets.xcassets/VipFeature/Contents.json | 9 + .../VipFeature/crown.imageset/Contents.json | 22 ++ .../VipFeature/crown.imageset/crown@2x.png | Bin 0 -> 681 bytes .../VipFeature/crown.imageset/crown@3x.png | Bin 0 -> 1215 bytes .../limited_offer.imageset/Contents.json | 22 ++ .../limited_offer@2x.png | Bin 0 -> 1647 bytes .../limited_offer@3x.png | Bin 0 -> 2915 bytes .../media_locked_bg.imageset/Contents.json | 22 ++ .../media_locked_bg@2x.png | Bin 0 -> 1254 bytes .../media_locked_bg@3x.png | Bin 0 -> 2278 bytes .../narrow_button_bg.imageset/Contents.json | 22 ++ .../narrow_button_bg@2x.png | Bin 0 -> 1124 bytes .../narrow_button_bg@3x.png | Bin 0 -> 2032 bytes .../realtime_location.imageset/Contents.json | 22 ++ .../realtime_location@2x.png | Bin 0 -> 16153 bytes .../realtime_location@3x.png | Bin 0 -> 30078 bytes .../wide_button_bg.imageset/Contents.json | 22 ++ .../wide_button_bg@2x.png | Bin 0 -> 2617 bytes .../wide_button_bg@3x.png | Bin 0 -> 7540 bytes .../Manager/Account/AppContextManager.swift | 3 + QuickLocation/Manager/App/ApiManager.swift | 15 +- QuickLocation/Model/GroupModel.swift | 54 ++++ .../Section/AppRestrict/AppRestrictVC.swift | 4 +- .../Section/Explore/FeatureIntroVC.swift | 3 +- .../CreateGroup/CreateGroupViewModel.swift | 4 +- .../Section/Group/GroupChat/GroupChatVC.swift | 148 +++++----- .../Group/GroupChat/GroupChatView.swift | 30 ++ .../Group/GroupChat/GroupChatViewModel.swift | 89 +++--- .../Section/Group/GroupIMService.swift | 262 +++++++++++++++--- .../GroupMemberList/GroupMemberListVC.swift | 2 +- .../GroupMemberList/GroupMemberListView.swift | 2 +- .../Group/GroupSetting/GroupSettingVC.swift | 2 +- .../Section/Group/GroupViewController.swift | 23 +- .../Mailbox/MailboxDetailViewController.swift | 2 +- .../Group/Mailbox/MailboxViewController.swift | 13 +- .../Group/MemberInfo/MemberInfoVC.swift | 12 +- .../Group/RemoveMember/RemoveMemberVC.swift | 2 +- .../Home/Bubble/CreateBubbleSetupView.swift | 21 ++ .../Section/Home/Bubble/CreateBubbleVC.swift | 26 +- .../Home/Bubble/CreateBubbleView.swift | 4 + .../Section/Home/GroupMemberView.swift | 1 + .../Section/Home/GroupMemberView2.swift | 186 +++++++++++-- .../Section/Home/HomeViewController.swift | 37 ++- .../Section/Home/HomeViewModel.swift | 7 + .../Section/Home/LockedAppPopView.swift | 2 +- .../Section/Home/MemberAppUsageView.swift | 23 +- .../Section/Home/MemberPhoneReportView.swift | 22 +- .../Home/SOS/SOSListViewController.swift | 2 +- .../Section/Home/SOS/SOSViewController.swift | 2 +- .../SearchLocationResultVC.swift | 10 +- .../SearchLocationResultView.swift | 68 ++++- .../TodayTrackDetail/TodayTrackDetailVC.swift | 37 ++- .../TodayTrackDetailView.swift | 22 ++ .../TodayTrackDetailViewModel.swift | 18 +- .../Section/LockDistract/LockDistractVC.swift | 61 +++- .../LockDistract/LockDistractView.swift | 31 ++- QuickLocation/Section/Login/LoginView.swift | 14 +- .../Section/Login/LoginViewController.swift | 4 +- .../Section/Login/OneTapLoginView.swift | 12 +- .../Section/Mine/Account/AccountVC.swift | 6 +- .../Section/Mine/Feedback/FeedbackVC.swift | 2 +- .../Section/Mine/MineViewController.swift | 2 +- .../Mine/MoodStatus/MoodStatusVC.swift | 2 +- .../Mine/MyProfile/AvatarIconListVC.swift | 2 +- .../PrivacySettingsViewController.swift | 6 +- .../PigeonMessage/PigeonMessageVC.swift | 51 +++- .../PigeonMessage/PigeonMessageView.swift | 21 ++ .../CreateSchedule/CreateScheduleVC.swift | 2 +- .../Web/Controller/WebViewController.swift | 2 +- QuickLocation/Service/GroupService.swift | 2 +- QuickLocation/UIKit/Alert/DLToast.swift | 41 +++ 85 files changed, 1376 insertions(+), 295 deletions(-) create mode 100644 QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/vip_required@2x.png create mode 100644 QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/vip_required@3x.png create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/Contents.json create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/app_usage@2x.png create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/app_usage@3x.png create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/phone_report@2x.png create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/phone_report@3x.png create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/today_track.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/today_track.imageset/today_track@2x.png create mode 100644 QuickLocation/Assets.xcassets/MemberVipRequired/today_track.imageset/today_track@3x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/Contents.json create mode 100644 QuickLocation/Assets.xcassets/VipFeature/crown.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/VipFeature/crown.imageset/crown@2x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/crown.imageset/crown@3x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/limited_offer@2x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/limited_offer@3x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/media_locked_bg.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/VipFeature/media_locked_bg.imageset/media_locked_bg@2x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/media_locked_bg.imageset/media_locked_bg@3x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/narrow_button_bg@2x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/narrow_button_bg@3x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/realtime_location.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/VipFeature/realtime_location.imageset/realtime_location@2x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/realtime_location.imageset/realtime_location@3x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/wide_button_bg.imageset/Contents.json create mode 100644 QuickLocation/Assets.xcassets/VipFeature/wide_button_bg.imageset/wide_button_bg@2x.png create mode 100644 QuickLocation/Assets.xcassets/VipFeature/wide_button_bg.imageset/wide_button_bg@3x.png diff --git a/QuickLocation.xcodeproj/project.pbxproj b/QuickLocation.xcodeproj/project.pbxproj index 3b1f0ae4..7de71c27 100644 --- a/QuickLocation.xcodeproj/project.pbxproj +++ b/QuickLocation.xcodeproj/project.pbxproj @@ -255,7 +255,6 @@ 30D74BF42FEB6F5B0050EB2C /* LocationPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74BF12FEB6F5B0050EB2C /* LocationPickerView.swift */; }; 30D74D1F2FEBB09B0050EB2C /* CreateScheduleVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D74D1E2FEBB09B0050EB2C /* CreateScheduleVM.swift */; }; 30D87CDB2FDFA9EE00E958FD /* MQTTService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D87CDA2FDFA9EE00E958FD /* MQTTService.swift */; }; - 55C1A0113034101000786011 /* PhoneStatusCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C1A0103034101000786010 /* PhoneStatusCollector.swift */; }; 30D87CDD2FDFF07500E958FD /* InteractionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D87CDC2FDFF07500E958FD /* InteractionView.swift */; }; 30D87CDF2FDFF1A100E958FD /* QuickMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D87CDE2FDFF1A100E958FD /* QuickMessageView.swift */; }; 30D87D042FE1336300E958FD /* NavigationVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D87D012FE1336300E958FD /* NavigationVC.swift */; }; @@ -315,7 +314,6 @@ 55B217B13022F0A000784711 /* GroupItineraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217B03022F0A000784710 /* GroupItineraryView.swift */; }; 55B217C13022F0A000784721 /* MinePhotoWallView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217C03022F0A000784720 /* MinePhotoWallView.swift */; }; 55B217C33022F0A000784723 /* MemberPhoneReportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217C23022F0A000784722 /* MemberPhoneReportView.swift */; }; - 55C1A0213034102000786021 /* PrivilegeDeniedOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C1A0203034102000786020 /* PrivilegeDeniedOverlay.swift */; }; 55B217C53022F0A000784725 /* MemberAppUsageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217C43022F0A000784724 /* MemberAppUsageView.swift */; }; 55B217D13022F0A000784727 /* UnlockCountManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217D03022F0A000784726 /* UnlockCountManager.swift */; }; 55B217D23023010000784731 /* TodayTrackDetailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B217D13023010000784730 /* TodayTrackDetailVC.swift */; }; @@ -379,6 +377,8 @@ 55B261010000000100786601 /* PrivacySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B261000000000100786600 /* PrivacySettingsViewController.swift */; }; 55BF752D2FFE53F70055DA57 /* LocationPermissionPopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BF752C2FFE53F70055DA57 /* LocationPermissionPopView.swift */; }; 55BF75352FFF91690055DA57 /* InteractionEmojiCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BF75342FFF91690055DA57 /* InteractionEmojiCell.swift */; }; + 55C1A0113034101000786011 /* PhoneStatusCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C1A0103034101000786010 /* PhoneStatusCollector.swift */; }; + 55C1A0213034102000786021 /* PrivilegeDeniedOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C1A0203034102000786020 /* PrivilegeDeniedOverlay.swift */; }; 55C219C13024C00100784731 /* SearchLocationHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */; }; 55C4C0242FDB91C8009215C2 /* CheckPermissionGuideVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C4C0232FDB91C8009215C2 /* CheckPermissionGuideVC.swift */; }; 60BEE25E61F3DE24976A7A47 /* ManagedSettingsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FE44DF1C46BDA7B98BC7859 /* ManagedSettingsUI.framework */; }; @@ -706,7 +706,6 @@ 30D74BF12FEB6F5B0050EB2C /* LocationPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationPickerView.swift; sourceTree = ""; }; 30D74D1E2FEBB09B0050EB2C /* CreateScheduleVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateScheduleVM.swift; sourceTree = ""; }; 30D87CDA2FDFA9EE00E958FD /* MQTTService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MQTTService.swift; sourceTree = ""; }; - 55C1A0103034101000786010 /* PhoneStatusCollector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneStatusCollector.swift; sourceTree = ""; }; 30D87CDC2FDFF07500E958FD /* InteractionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InteractionView.swift; sourceTree = ""; }; 30D87CDE2FDFF1A100E958FD /* QuickMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickMessageView.swift; sourceTree = ""; }; 30D87D012FE1336300E958FD /* NavigationVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationVC.swift; sourceTree = ""; }; @@ -770,7 +769,6 @@ 55B217B03022F0A000784710 /* GroupItineraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupItineraryView.swift; sourceTree = ""; }; 55B217C03022F0A000784720 /* MinePhotoWallView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinePhotoWallView.swift; sourceTree = ""; }; 55B217C23022F0A000784722 /* MemberPhoneReportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberPhoneReportView.swift; sourceTree = ""; }; - 55C1A0203034102000786020 /* PrivilegeDeniedOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivilegeDeniedOverlay.swift; sourceTree = ""; }; 55B217C43022F0A000784724 /* MemberAppUsageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberAppUsageView.swift; sourceTree = ""; }; 55B217D03022F0A000784726 /* UnlockCountManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnlockCountManager.swift; sourceTree = ""; }; 55B217D13023010000784730 /* TodayTrackDetailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayTrackDetailVC.swift; sourceTree = ""; }; @@ -834,6 +832,8 @@ 55B261000000000100786600 /* PrivacySettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacySettingsViewController.swift; sourceTree = ""; }; 55BF752C2FFE53F70055DA57 /* LocationPermissionPopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationPermissionPopView.swift; sourceTree = ""; }; 55BF75342FFF91690055DA57 /* InteractionEmojiCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InteractionEmojiCell.swift; sourceTree = ""; }; + 55C1A0103034101000786010 /* PhoneStatusCollector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneStatusCollector.swift; sourceTree = ""; }; + 55C1A0203034102000786020 /* PrivilegeDeniedOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivilegeDeniedOverlay.swift; sourceTree = ""; }; 55C219C13024C00100784730 /* SearchLocationHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchLocationHeaderView.swift; sourceTree = ""; }; 55C4C0232FDB91C8009215C2 /* CheckPermissionGuideVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckPermissionGuideVC.swift; sourceTree = ""; }; 5E5F5DC8694A001BF0C47147 /* PairGuideStepsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PairGuideStepsView.swift; path = AppRestrict/PairGuideStepsView.swift; sourceTree = ""; }; @@ -2937,7 +2937,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = LRDLWZ2Y83; ENABLE_USER_SCRIPT_SANDBOXING = "$(inherited)"; @@ -2992,7 +2992,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = LRDLWZ2Y83; ENABLE_USER_SCRIPT_SANDBOXING = "$(inherited)"; @@ -3225,7 +3225,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = LRDLWZ2Y83; ENABLE_USER_SCRIPT_SANDBOXING = "$(inherited)"; diff --git a/QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/Contents.json b/QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/Contents.json new file mode 100644 index 00000000..1c3875c5 --- /dev/null +++ b/QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vip_required@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip_required@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/vip_required@2x.png b/QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/vip_required@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bddcc0e3e6aef784c7e98040c64c6feb5d01d5d5 GIT binary patch literal 17329 zcmYIubyOSO^LNowXiKpMEiDu&7Nkhg;uI-`0--<>9Ev=+1*b?MxLa|z;6)OwxNCzH zC%8j!`SJbdeecN|8SW$)t56fmNDI*H9MF-IhOHv^w-pI`qbdBsRv>#eQKm`@1ptO z{MX;n^r_Lao9n~7+vVGv#oOz>yIaid^}F}-(>K@KcQ>oI*KH@4?*!yG?{0=JuHLpHm_zq)3BFZb{6>g4XG{q%oyC-!RQ>U!Y(ioE7N7d`j@N8ddN%eSAMWAAP|PXDKH z@&P3z{~(Myyn0ZA*u3n%zUVpoADmr4?&9v28iDP*zUaKVXgatYyt?cMi(*k{;ZDHZx0)AczV~txOj53guUprc{F``GktQretI;1c(;JP zJFcW2Jw6)2UJdLWH*cIy?Vs$QALFJjGuNKKD%{*J0km!1uBDS@{=4kkzdO0a?&MQ# zW>MU?eW+c(v*9utskJdT*Ty5F_FhvN>< zW6q5~P5vOt*giKe_@m>KKDpX=fASlPoeM8+{b(C)8(nsdw!ItEs_R29SN}Q)a;s@_ zgxBWYbY4zAgnO{F=I5`E9utrfKOv`l3V23ybNia%F21ZPC4ag3SMiNc_R#2Ek9d7F z)@ZYSf{d=b?eHq%ptXZheSYfVXepB`^lt0&cxDd1^s=p=czkV#xj&k7v*vQTmuvq^ ztCFbrw`&vA;Kdtn4dx$l zBz5pfPFl--cDLRC!MsO)S+~W2V%-0c|9>P)G+Wrx5#fpW_*jEU_X;o{?SBNHjlTAZ zlT-8$VH(-8iR0SSWDiO-N0J*8QIZp9=VdYll`*IkxN>zb=0#;RPxMKO4bjOdW9ekL z^*3bh#oe@NBNTGSEZ_gXQ#YY4!JSrNK3xLZb^dNvy%3Qp6ng76tDy3o?)Ti@>1Cn% zNRM`!(L0r1OoV3i+rFX(38Mh21KSomqD&PamLSxR;D8kTw?wE3)s@*IiJw`JF#9%z zQJKbZaV7n098Rv^1`}g%te+(%#2sI*GFJUV&gUu_TxFdn!zN+I4doZlqyACk*Bb~w z&#t|=7y{Y5i`dq2OoCpcj}+JEBZ}gZfb%z8tkS``q`Zl#+kfd|uiI=((K{df=exHj zfJ>ay9ZA|x!ok#0(R5uZ{^V_#Smc*_{;Pj>N*EYUach19j8kvP{7v$dgNeAvMNX}r z_BP4M3R4m()ti7yO42yGOMKI4HFgap<0m;kd&J+LuwA%i`~%rXu!or_<0at1tL8yKI?Nh<{=V?hSGTu{nKqo?kSm zo0KO1CU0~K9U49_&Xa(?yu36P@)YzR$j5Pwz&c!($Hm1-nD}x+DYfztlOB*4Mdbs^ zKfYMS$W5N&G}HbOhX1wa6tn<#det2ir*!hk*9!qjmrU{MG9aZ6*y}hDd}2Zq(t0;& zF0e_WKl;YN>9#yKmsy{Bji97P+E`GlPvnarC8;bP4>y#<=wrAlsy&R2@-@dXEnkJY z9tZH`GRqR6euN7E_e(Owq*mt+bP7(V{Q8xO9OeV=?wH++dK-a-7TD$#m4xf34tCl& z#?bPLnfU9`*{qu6DWjTVJI;n$+mCCrXXq7S`#~}QO27#R^9N!PqNA^u-@U6;*eJ$lFV&nCY`PFO4su&tj7_ zSYGsvn`lREXa7hN@bn^wyz3S8*s`t|Ei4{JYp*Vne8{!t-9%>onn4a82DH4qJQJZd zCb~oB{4YTOjg^ zSnK@%OOF%}C}93R>?`x>MRB&!rm8Dswn_9?pAC*n!v?#MaV~gVl9>9mB6y0ua#e>%F>K^XtbGCoKF9Za(GMJPR?4L z@C%3?BD6A-=4PC`H#_i>SuI)-c@<$!M^g8gCNL;QVvuEkX@HAJU?Yg^58;?*Y%KAt z?3cHvS-RF#_qNZC=!n*1$-`a@2_`A1KNAX=l@;!;hgjVi(s6FJCYOK~uTkgg*XE0Z z`>f_^3MVs7|CtNNwfS7!`JAK))4|RkS3pp+00odIV-2SsT>^v>I={CU3>~6U0P_ro zS{v|c?(W@=>wzmDBa*+W0~P7pE@^1K(H|8&c0af^Soi@Ut8LW#M5+i&$)CYyekkOw z#>f_+75Dg?W}ByZ1wR3O4&AF6e55N2NPvy<^zIuc*1O$?0lzHKw^p!(Z#$>`m`(}% zjs-|re5hqKHaCt_fW&E(laS8!)}s4tWzS-(i~4ml^+8QHXA8E8-?zBKQux-&^`HNm za(-kBY;RVO=x^>Bal7-MS6+!`ylMn4u!B(qauWWTc=@7@4;zbX!j531TjHue*z2$I zzPQU=@xf};Iv;iqC;@38CnqYZ2>(d)8`%4IO}*ul{%#cxy}X)bA!UO2KTJuLYgfLs zXc1|p{l`h)K%uUqU%oBEfgB%y5ssPCdE{|=k(W}@wh*zEkGlVdFfj$8(^O0WY_%k? zqjl@ck0HD`K72yV0C~XUFw~z6B7$6rKfJ>I<9rdIU{lbRoHo(%EaKVFVf9n6|tm zi_dHADNKm6l3JMV6YrHA-r|^Ui3++~F`};7Ry+QubLXmu;ZQ~Bg8nNHJ#RQ;g~d$=SXk0&KRm;m~otb1vT&xp^(=;8eyZzwv#zJBTw{20_+6brTJF-o+6R{`>QMg)vAXSWc*TRmms`5i%L#1x zq7$B8dgtz{)i9M}{E?R<=F8LA6r111y144FnQuY45j_8fcelY0w`?suqW|7=BhsA)IkgCmDXbkb{*Dw<| z^NUVO3ei;A=tHB6APupP&Kf+ge2V}16-IvKrB(=&t`?cFdTNa^sC#rvj=nbQys7&V zC&n@!k@1=J=eD+KLqP4t890!-kb^J;kxqxv5z9y0Lf&uxfi2X45G^*UKlT(=3YZ5{=%uxer2G5bYT7M~4B}$n=KQ0) z&5~8G;=hW?k7oJ*?GT`Pfz@sFZ^fTC>N>liApgZ?sz;IcEQ+*i?`(OHCkDxhPek(m z{=~aD@C@U%=tf_tb$on@wEd<`ML7cF>`-pxQs)~&(4X`Vi}C-9J-Szcjfqel$-_{E zw4R?0Yz?$v?Z9xEc9U#_Jw;P6eW+%n$uU|ZOI1v|fMIh|O`w0ho_IYuPA79_{RwJ1 zo#@(6kj_|bOXNYsEv_1jes~Y^yg$2o($jSko>ncy z14)F%KovEw*e9dm(m@(cf;h3yN;7C|16EZ9X{==UO5#XIFt6|33;|NLJ7Nm?RdH4( z?@>JS;_Cn6Vc-Brc+}T-wweSP(E?X)2?i8|GL_ZsyIW)C(nZ)a@#5{145%1shc#ma zG7!v=z>WO*IhExF~RMUtdC-yXXFnBdOm&%RV|K zcPf59ZvAme!JtbzA*SKo>6QF2it-jw^k{;tLlVrRh)Infd?8cmy9aRRW-+(-^x5Mb zRUttPpGVBPZ;79#vY~Y1Aw-qT)Il;l-8Gcp4(_6S&cqjnB)Pd3oAuu!&kxBPH_*>< zQN281gzz)ef3z^}u@5~)xB)JK_EkS8cPdpHT>d+z|FNh}&e5jYnjt0|ZDdiaZxXqG ziG7h3gl?%6a!o5odpxVQZt0-W$&%~fZOqxJtR!)i_cwI#xrHexrsTh$JK1@oC}qF9 zzhhl^m}6E#hI;u7wb^!b#cM>Hh#LZ7|HJbJ{jc!@j%VlSE&qCH;mF%Z^Rc(HY`3!$ z))sz{c|5N&(T}iSau!juKUaPZzk3P!)MEE9! zTi`GF?p@aX_=qrZY{%ci`a5(SA+yoM>*Q5lj@5|LxFfC^L7l`w_Ga@LHSz;M|7w8- zMVRX{8shQqO%~cuWN}&%M#DyrkUP!!OY+NGoDS;qL1Ywl&-+`&&3yOYzunzk0*^F# zzbCDOXFK%$tL7h+;iG3O)@-~J*7mR0+m5Vrv3iu{01J^6sg|{LSm;jI+Yb#*E%mN$ z2@>=vCa$0IjH+AJe z<5w0)2LW&Xb`TgBJnbf59mq>j74yHaih)WS+Ki*uR^PN_Z#GTqJVu{;3;!o@MstX! zZq-~Pk@|U^Up1E11#=mn9#BH4{Z-hkbEx#vFhh4$Ve5WiVn|5H3z99bND~Q|4^<9Y zQr{McZetuK)*F13gy1zwo{3%CSpS$_`)x`>q}D zeudE-SG93yikfe#yoySk_Fa+~m7fxEjweZU_{`q)w{$&l6-X7%LjIWIC*mDuqzk_D z^?drUl%uh2PxE-b`L`?Yn--t>5{ROH5$Hur=X0w?BPpVe9^~1#Z-vX5OpZZ7)(e{d zR}DVNphX9`X^!q5d2r*%h9ZUYzp zaty8yP^&I+L=G$~YX_qDnqc0=4tB(cr>SMix=>%J?R_YtA;h$$Yg14_(x++tZytm} zKLQ9}AecLodqGLBAZo4uEib+j4^zeJMNh3HGFrMOa`We1fbkw5{SDufwTV#{`=U?h z;{?0;ox&eJ!8~s8N{UBe7r&nB6$2u)BT7Xo4sZ1GT+Y;jK&=(%S;{38+Mw=Aps;_i zv9#Xzk9PA&Df6j}3w_eZ(j!(ZQ>zdnX;ty+JTQu=H+Vj>7?hEL_kDNRcH$M?GV{dK z%q!C%n4B{Wu8yCC?sIV0TXGIIsXo6;RjDz@FADN+>yxQb3%O2_p@2~#3dnC4)LjPd zzbukLp67O`zcPC|zPhVa)%1lR7jb{Wl)rP?DWQrKoHYF z6U0~5U+^zD20Tilgi>wo?xuTGMSeP44c*d3<%t@_oMtDntag(V1|!ZY#Xxf|RsIm_ z#CK!k(lLZJe3@3U_1t1A;7pMHgqPSBhA?G(cr)mt!_+vdT5AJ$mMRc5--xf<5;Y8; zYMaSqAyL~7+9papDOcRAJ6PN_Yk3w;oFfg?{1Jc3de(`K_6^u-qM`&*{ie_QNsQeF1*tsHeZSDr@+51C{94 zHT2m|LdaK^8TTES2mcYjt9}`zE8uJYtZduxM?|d3+9$)Dy!5A*bfrDWG{*iXvg1vV zz!AnZiA}Rq%G!oH;Zo-342xxN>mf-=yeB1#Ge71Aqpq#3t#_mjMcJ;d7%v&pX701* z>bf(drgr|luPVMUzSk`Fo%ix^fL+R_hyNWBdc=_o*?@93RZCPwnW5og78VyE2sVFNGIam~`LeECtym|Z z6*luvW@?AsopKlsZ2TeaPP6!yJ_h7NpOU!7;V$CU>=?S81lv4-mX2f^%*<&eX*rFa zTxF95Ql!x~V#7_X*4rq-T@US;B!ThyeBy~1KqG*Q`%&LfLac0TdAuf0BvVsTcK;e2 zRJ0UZJQyA)=)N~Pymn@YHTBHZhRtYo-aKUt{%{&Z<+S!Qis>z?Qp_@EEFAKm7Etps zEC``=0u7~1L^zDzGCREU(O2JHvu0V2VtJd;eYZo^jy1~_`g~j}Jgrypsa|WPSw&dn zhbhRVez3t)-T79$S;4Z)YQ|JL|K%;5?K6V%Im7P)(846=-{-A52xM*LYY8RmXP&G* z*#(??BCjMIgCHM*=;!nTZ8zk_u1K65z(hqXwod+q4X(o#C{!HE(ddNE zT!m^C;=haxDu*N@7uztswXPhvQ|NBagiQEU^Nw3_!}6aF~aJ?R%v(*qathqvtE1=2Td>O!UB(<#F|U^xwAnlNyYyNu3%hGZfRzIvh|2 z&XMI@5q(oJH{@_u4o-y~`I&@K_xTD-gD6+X@zrZRJe2)Ta2CgsHEUb%;L}t7G@xeK ze8DF^k0>pHAA5C0kSLoZh^xQ`{>f}AH+_C+btr0b81zGP7D(71=cU=`Dw8mq1N$&O z^Hd_mH9z3nNV!C2>YtZ!FF`%$Gaia#us0|}ke55oe1({RK+FX#C2XGDm78lY!pL2D zXRl`kdv(iYk-D$M@4|@MDi&(7g<;~Xm@DHUDd8%M@jVUm^0^fI&yMg>mBD3eNm+u2 z-stlh1M@Ui@&ZW4EES6d;YOS@|H}@pL>*91g>VWq=I_q9ayi&-|6d~u4FvL+K!1EU z)eo|U-nMIXKTsE5BuoGivBFlr3R+hBfxF&4g?z>Bo=g zmt1z}YL~TOoI7V6*6;=AETmGx6>^@f99Bd%I~s)<&Hw!_9U}# zTB3N4HUq$_Wxpj!JPNorg~xZIjC{P$@=jH@vgp|Ob1v_%g=p&^|K%bG-R}Wr=S!(3AmI$QkOv@EmQJ$@a2WXr z{1Hlu7uJNxj?t*Wa(nl6OB`zL=o%lc$o4c|R&5 zA_C*{O4NXk2Fl-hmvb0kKw=7&Y?NLInrMv5uRPs^Th$a-BZz;D(9;sfAg=&q?(eYZp0J z)JB(#XZyg~a*jwmciTc&OLW#IulA1YhH2M|7Nxf)8372tbb_mUhW|wgg|iK%{OIE+ zPh*g~l7w&aDhdBe);=jajjd(=GyyR3en};t@-yI`@%GkdBmG)zBf~Q;nI*N;dt{H% zHc|9s`TQF5Z%%7wg-a(^2w_*3v2K4EyNW*0Mb?}0d~l`f#2-1^FbWFUNu?bqal@{p4fnOyb}GYQ<~@<$O0;Sq_Qjm`CHR6LfKki~n-4 zeWtcCfX?0`4c{Z&4^8*t_d|pFUO@48dk$LfWw%yrL%Z7)hGiwifU={*1I%v^7AEO55w%^7d1&Wj)yE~-npf`QriELDsa>xt9`D%P40HD{_^@UNa zAw8Fjs0DZ3TaF+;mWdP5Zt70qw&hTXP2}Nc>ik#*P|@Fe?r67@-#cE(ppTcd4D*je z)uX}`hz16!q)3d8C}hKOubB)v$_CEN)D6FV4~vN55$Jrj_@?RiY!AH9q(yW#b#Lb= zmD0_Xx;DJeX=LOCHFoKc*fG&SsgN+dMv#(cm-9u9SiI=G@?H4tak)P4`2Mkc3$G#> z;7M*!$ULow1ydiN_Zwax9M-!DqZU=e4g4&pRDO}ce7u`olE zovR)`H)^!;pR8BEJ8F6dKtX8Fh;|ATpXVPZ&DI}(?62{TM_@pqHsO3v7*WM+^at?| zmp9YY|DBc4sV_XQ7E3=o?rNb#m~>F>*? z+sF!39B&|GnSbWPR^EFBb$znw4+fTM4D>wT zqbbntE@};4Rlp_rmPm?nd0!i__>A=vkF5oppA}iYNjx7J=spxWE_^A-`t~6b`5&^o zly2qTzlW~&*hNMM=mf43V^%+_2TE1SFo4~y?`L|n?)q19+F1T%k{I6X(;_P1SjR`Z zBpx$eDjWGwexn#8D3NOZi!!*q1~GLeUm<(A!ze||hWcS2B|su|W9US^=5%k$1ix&mh9@-$&5UzS=a{ z1Qd{#zQ1S{qZXNGM*P-I1f!Ax>SsE;&~H?ODqCS~8Xpa54(bkT3aWN{tNFX@2mhT) ztqF>}|E2r$*Hn%DA49qW-;vR0N1Zn|TxY}I#HzA`_r`djodd(l%4ypl5G;SZ$#{t` zlxKvOhkt5Jab{}M-6g4-6yM}3l-~HB%nHOCg3QVBKy*dHp&l*Qqi<7rpf_trr^bfe zLn~cz-qgIZx^EbCk?FM*?Z+(MX0?0OOnI8clrz*(CO97FFD{HB=yN_`B3114)IT?` zL{9BoKnygfxEd@=y)P#j!C1XQqX9TnL<}L<`*v}{Xn8= zPGt+!4wm}?ZZt|SpC7yQ$%740d6n$u#>P3iqpfoT&e+jVjkT#Liy*>~6rGxHmWeOX zf9k0ahsQz4$WLJSjfP;aQ`-(gy;Te8bKA#DIV1RU2E&;)GREEDF8_jh8y|wJE2Pq; zqJv=4Mi9?jd5K?r*p`7(kcuC+4SYWsX0rGRlFD$lA#58Qq>KJ~C?qg(WA8hEx+}${ zeTO8ov)WnMjqFK^h~}d@#j+X1k`nBi)SFSm^E%wKf#{)v26yS7FL^qGx;T?$p%q1t z_yLG#rt2EwMthEG*qZ26$svc(m=_3& zf$TTXKy@$2qAEbgjiSSmrdRlq%BGuj*}7(k_BFJW_{Zi9!2bMaXAy04Kn zbQKnQC&u4Qjf&LpKfdg5+uSDt`-OS&0c%+X08tPvRD-bI6p8!13qZRPeQjL7C~L-< z{#WMWM{C=43HLnqUGS6;R0u(3(r#pm(HO6;!Kv~yx-om2T6oOj_XKRCf`G&(4b%WO zOAfp7qs{`*CIM&(AlnM039Kf{PAF-Ykp#C`g*?Z?g$OJV;RHC zboe{Hww&>#ZzxKH#jDQpND$2BVpc#5WbrB|c)GSCrNOrJq?UH%taE2DY_PgV^{Y^% zh;s5X9IhfC`Oes?h?$5O7fc=x`VS@n*kN|e1nwm9YL{T7+3Q-~X@b?Ubl1}ELY~m&C?rw0T=}Sh9CA27ag*_fjN7+EmUn71@ zGeV=0u=S*R($78HYI0tG3S7EUt6fSaYA=w{?bcnyp3O|o{=l$F7O$X_m7icO(FSJ+ z3(7YJ85Jz$Fe6<+=S~Ev1pnki6Y3=~eb@ATt8$O7g)2DqzEkUTIF(qU0?_s0C{5deKKFBB*D z$~1VxBU-**Yil+>4%9~gNia_F;+~n>@%P(ydEq{PY|MYjha2?$uZe;_ppDJhFkWK%HYrhq$v=*zP zs!D(BY?*wjWd_-!ainOy~QLOsY8X6DFYlG$wmGUZ-2sJ=V zQ$G22&I-Ze=&aV%L)^!recE?|Ovh*7$fjno;cx1gSxoJ-|HS%s-WF@BsME3mf4<|2 z4OZo4myxCYQU*wV$rv)Fr@WtFp2xQzZAeJ^Iq{|Rz$nu1IBl~=u8jlZ z7*vYp&;o{mQTv+6|KuT~42uUokPH&)-+Jmf{^gDLqc2Z#z}Ij3c24ERw7PTpOjDiT z8BRIY>2aqNk~>{FDLn(dA_Xk8k2A5sXgV>lax&+3|0a9s93~-PF0B3Uwu-Rx{r5e0 zx>t9)Nps^K#iiLSK(VAO;R>sklC=S~t5tSrTX2sHw+A3En}hGavGU%Rn*nV)j}=w| zWS3HNwygW5JSDzsA;k6@o&_VACF&d&uY!Gl&*6e&0ZA1Yog>HgFW9 zjSyRwGJ@Wp5Zi^<;LTIO(UJ^Q-tmL~1(#HYku@xpHwCu*&5~AdhNKB@!P_T!_4Vt@ zX{mDw{xqvx*w1P%|J7B1KAPr)j7>$CKA}R~z5*Wl)Gm6cxouH&J#?RipNWRpd@>f9 z0lY|B%6Bdg-9(tk>X)$~$fwvFS%6afe*=sB-| zgzU|$=%n>~fk+L65JpjGzQea-xj(PoW~#1(-u-*+55S$PV0D3L%cvQ#eknP^AU3X4hlbh*f@|Pf^zH9b;&FXRaDsJ? zv-FGUS@LAsLSYRg>)2FalS5^{v$X`s8R3 z?{8yDteM2XmK5MUt*K^@4=Qog<}(EBOEuNL#CCu@`G6juH>K-J!{$nWXNxLofus

X|Fx2dW4zi3amJZaPr$+51? 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 Hu0mjfFj^7S literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/vip_required@3x.png b/QuickLocation/Assets.xcassets/Home/HistoryTrack/vip_required.imageset/vip_required@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1a85d45161f59293beb997aacbbfd20e0b2758d4 GIT binary patch literal 32094 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 V5@mf!_3D3bv^DiK>eTFG{vT_Q_lf`j literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/MemberVipRequired/Contents.json b/QuickLocation/Assets.xcassets/MemberVipRequired/Contents.json new file mode 100644 index 00000000..6e965652 --- /dev/null +++ b/QuickLocation/Assets.xcassets/MemberVipRequired/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/Contents.json b/QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/Contents.json new file mode 100644 index 00000000..4be8d4e9 --- /dev/null +++ b/QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "app_usage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "app_usage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/app_usage@2x.png b/QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/app_usage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f31df81000e12177b8f61332940bf928729347c5 GIT binary patch literal 31928 zcmZ6ycRX8P{69_=EmfrzEmfPA*sG;#)Sj&oiA^I$VpnR^E;ZhE#Yl~6QN&1s)+{B6 ztq7rXSXD7gZ29{99>2%;`+a=RANQW~I`_O@uY2z6zV3OQ=j$duG1F&b;bEbpqhm8P z(6OMSyMUvkqqn-ma8B8@kf}Q-oIWwJ(xv@h<-F_vYW@G!GuqkzCZ3)BpZfnM{y&xf z?~1eI^I_-Z^t_ziQ`DuaK0BoyAD_2q=j_hwr{~@0=Yvz)3GK9z_JDSJOxrl39v@Rr zXjPN`8CJKhqTqh)6=8#VW<0tCnvOn(?i<9dE<;9|W5?5`PmYm45BvW8i(KCoXrdi7-FATa)B4q? zc6QePZT`dF>Nz^N-$m1i-Kjs@ z%&Y&szDR4>ZW9}u9(_mMJsy%eTMs@RaiJwMC~2A-JV))jnRr(91m)G9%%yn*gwFiO znuF~gi)60o8T(QD{M=UD10vwQ;q$*snfUHsJU4ot=N4v`r$;9Tbkv>QP0H%&&)eO{ zs7LP;<03suY(V*lH}~o2LY^4vXjui%P`(fNj6b;%_v`UMsVOD>O-q5TL8+ERY_UM} zH3p_|y6$?0Ycd(1e)ExsE7}k;MaJvh-hU3+N(4l%y|krVd=={9K@Ct%)YI2bOq1FpZdg5F`s*h3~+qOk{HInsuzv&@vl1Hf)iO*mzR4|Y3h$}m8TaiZ# z;{w%ECKhQbFIo#SK|^40nEsd|GCie8UzjM5`z9c)rf>KsG7(0N4u_Tg2|);}q5l(^ z>bt51`oL6Ab7Bb@#wh0H5!(|C&N;mZAppm#gFF9EL+Zd#7?Gvj(#rt~O>ABPX?Rj7kQ?sE76ap+_R1-9| zZ!=<;4NvK7HfOjO199UX5N;WI@%gRATtMucdesvKoFbl7z(~%@SV&*WFg?NmTd5+v z6C05Jb9x|1wIVCrUjYjy&pR{B99x%7K9@T#F+u_|z(sgxOPM9f`)fLYU*!x?3 zJ=a^ncOV$d-*TnTZSF2^p0EO#xW6H_iD^v~iP`C?$IUVwS7fGY~YNqS;m0{-jG zuUa%mb>M6O19?MC^OD(>Z#KG5ke? zZ_tWcC&l5af}I9iVe^pQ1M(Ez8mC%~11@o-XLyJgz8y-!WCJ^55Km^`)f*e`ODGtZ zcaDSbn#Z<%g;w1cFfPyh`;ZzeKPP*3W7QJk$a?hE_#13-%7h;xH$KtlG0rrTuM6_h zW1a%P*cJ0H=7S5T9POj2RyMh%G34qjUG>2vq0p%g1i<6{YcEigC^q#mXlSK?I@!JV zxZJEFP&#){Ts7gRRWSfdevF4`saeX%Va>3r`C#9=m+bZIYY^cUh;%XEsKkn{vgB52Fuy;_pPhLK3&Gc_w7>>dF@qJ=OSl1n}qmrZWV=)Sn~3y+2jWnl9ci` zgxr*Y*%lC}j28eDCn=&&W+(L@Bfaf7g_*BdLdKQwcG za2T7{$5*&_<(qoK=G3aj^t^PO?Nk7ftEKKFZGhvtGqLJLQ7r?+ZvU2dDEfg@lnYE@ zd{}-aL!OVZ75i)?lDz)eWj2*Q60`Gi=*xsT*_X(>z6D#U7X7}SIOOvrNwtLwcQ+0~ z!K~hYLP}KsIFCJIgYZCPuvtjCwV zv*rONPAYY~x^c6rfC0w)QI{pLx=vp_OMbH8L5*GPQXNNVK1WK(zG}%*fhiA6RNk({ z`XWjN^m=~`D6FOuv&3!RJvsj(&W3_=$AkL`7qzM1*kooad^7aya5CO#)dg< z_dW!pLOF*~|$=O=eIx1Ci?T(#k6{>=rGk&dF4+`ryBCiangy2ZJXk8*g8JQ$EI z_Z&UxF)4h(Sf9Qc^ULvl;$%pS8^*K|9)j9=Y4>!>BxtEubIqGd6J2|^KJj#OR{2*H z7p(W?ZG$)~#=2|C+>Z6wE1=(TLD75T{ay|BT2)gZaka40mb){#akk?!;m@uesX>4n zQ4rtSa)&?#s=1Hi= zvV$V--I7Mn(S3-)r&Q%7S~p*?b%m?3%WJF2f_z$_3RRO1Ux!`}_N#b0pA_{O$gXfry3I?e=47_dvyRG-12BN)-JwjP;7mpvtP`a zY$@v@U?h0w;?qv!q|w+Xa-kO5@9wpUPyrr&L`%;L+GwN zVs$$Gw&n!^@LpiW%GF`A$?e{wHGMW@O1WfFiJQaIy8lSV08a_PHrTX$7KFG# z>D2lZe)Z~!#{x_#9x84blJow~hYXDImoWK^#7T{Ko zoBV#&O~G-JQl29tZFF?net#Ve1b&3b%*3K#5TN)HTd%gq$nxO81J+mBJzeA4l6Ya| z((B5zvZoC+~ znjO(+^cmSu=q;(M{@s+-vKXvf5vaSCcFu!`e*LHQ!Tpd94@qH_j@2bx zK!7osrP(nz>ISpNP_g+9FlLxS9_l_(Xn3{57x0cI&fL+{7Qdc4k(IX>7H1)bzJO}` zZS(?I;Sr0cU;XAz2fu+h^!%AG1|r5wD$ms3j%qj#f~LEN!Ze{S$`xm+t(*#iq_rziL>}JT@zo=IW?1g({w^=r2d}n05lpEKXDEGFhx5M7;RcReWSJt z77O_$VfU-S1Qb(ts(qn>sLQ)acJ2-BNbO(NRqKc8Ct^ONHq3uzOx%&0o4`iY+KA+h zGqO!^+9q9J*HXaAuDxa%Za}dC-<2ne);+EDou2rKdMr8sReDs9pq_5Ia;GqEzoQ#( z)3BkBmomh}Q?#SvBF??<-~)^#2bD+DLxg!r>tQuR6= zFhtiLk3j*aD9@Fgpowqe9v zKxQwPmAde4*~qyt&fFN(mU?)heq@Sp=Ri$4Ft>}sO_o*DZMoteKa8iN|zd2n;(2A{E%aa62_%R~gbULJ6i1!C9)jdj(+rBUW1e#LROZ=&g> z&~6P-H51v)&eylcrM>1*<^t3TvMNggt^kuV9Yc8h#v>^&0PkPq;2+iudlj zP*d*K6;h)ISi4^+*QgHmHyV}RjL5>1P6_5`D#&yV#KF-%@>GG=ZiX}%O9{%J>bHZerR)M3uXK+10 zBY?W3b541^8=;y>K|2r+ebd)Nh#<@YVyse!R$vn+_nbjLh*m<=>s*Rp61gvq3xJW#VMSMZ^mb!6A|YjYB5RG7_UA zX!N8ZwfQR3?;uDnjJA$77W^0>b25A6@Rfm+f^u+7u@OfG&j& z&aHP{SpP+u^UP(m?KT8GhSJtLqimq#YRXK?j<{>^_I^<{S-8Cf=uX))x4_qf@u8@z zJGUBu(`Kr+%BF~L+4S6o8kIQ7LFD>XD7M|2L6RPv71rpX#O{Jh25hHif5>pFT_^4s zyZ@==PV~0Lj#jeoNrYki=%t3g>~KjF)Bb?<$MwRLBUni7Zf@pM1FmWN5%=S#w^iKy zSw&f~kfBsN{E=L^HfiHFR0^DseHRRMhgZqA$PMWZAO?KXjmn+1aM!|mpz5xoD`H6N z{a``1?2->Y)5C{^2=4EeWD4WJ^aHMw7#;H2WxS>_f?F{j!`3JEmiOUoKH{Zr zBM3L&5TobHp~e|i#g$y;M5X%VU7yUZ2lVi(ruxU&JSB*B3Jb&XE^Mz=*B=Rv8S0#oZMUVM!! z;jY)JplW?TdMH2gz_*}JarcjLqG7!zOy<3!J0^+HA}EE?5o>DJe9+JU7t3{H<`jf)s=Yaera&B$mWXt}3JD&5 za%vNy#V*u0P^U%I0BREFEwHZC;ZsrK$!E5~{BSLhs1&sG z2$W4Rcj9ujuJ(lJCR=p`jGt{ni?W^&nR;TVaK@a)jB;(H_56$nn<)H_5K=bW!3$&u z;Qo@%7CC}C(q@*+UCK8-H|-~tgUk=b=~)Dqs{5X3uNPur!|p2Kd#qZ>JTc-)Ez^b8hz3`n}S*+Jb)fDjkl|; z?}$l&IypnQD?rrW6jYKk0>#&w z`Ia$+uadvRu5a$WBWgbD_8RKXp(5Dd1M^XEWQ`B<9iov}VF2nvReTW~3+&#=dpr1; z(u%?~QltQ3z2Dupf+Nn9a+N&RH$Rw>q6lC=tlIC8n3^Q=iKs z0P1kOIQ^t%J))tl4UZ4oJO>p_>8ryCRgU!w)GH>$WtdZ@Cgm_gm$>7Ald=uc?i zIeU++i31l=(kq^cD3UQ-8JptXg&8ml3&1G5Qgq(dL#x|hhF#Y_PsZY?v(B}};c;e? zp{X_!f0>Ch=Hg75t7lbqnOAbc$OHHJ2MWi-gJqs1cjTv_PmZ!0cZOR7$)chyZ%gdE zhixc#tDr6bmveXM^$L?OT4xZbU7~V?Ns0&GV`m@(a z_%NeJXNvjr=&E2T&BlZ#0a&MiLE~N6EpLIsGU*ENufNALs&^E+b`=XP@%fgv?M&Xq zP|+byAxRhS*g&?}rwjjWKtVUn%z9k@^cLEc$FX}Tq6#8~YW#}(7Dhgv5 zf^%CTdvvT_fUX|JnidRTr~@U#jP^JdYRi`|r__c8H*^nHF2b2<9%sHxTqW5Fu?sjHeL7YpslN<4$|Q^`A&L@ z(@zO@5>?{fDJX0o4L9z4R4|C0wqXe64|qCg)D(9pp>VlrAsXDQ9AUL?MlT z_QlTDz)*neJ(~;AVFfHz*V=%C7e+xqT_eV8#kQ!{2I(A>z$TR^5-hN zSL0V`Rb?&$L9`9*^y;j%@h1BqX7G*&?sbIp()t|zWF~4>_H;k#dE}BioxZSZt4mSyaaIJ+pFhaO^mnK>3`2WbiUyh1F}dua73TZwx)Hs0@?6 z@r1w$R#*|%lNv4Ycsx`X=GkxyIn?i*t_Y(?rVzb)qagJB=X#FzRjfnb3MWJCJLJ zgA$mnE}*MyOQhkRL~*ZD=xV_ij}$w>O7fsgFzqrEuNHs|9b~DP%+xI*%t%QFYHf3( zK8NN}tkc<2ap{%Npw6Eb?mEq{Bt<<{k^7yAd>3>0e1-XStkDgS7IT=5NCKFuK61>f}3T;>+7_WzS z9W%5L;^q>z^2X|RUS0<`mP&udzp*(nR2%f+#2YFPbRih~D#20^KR4VA&K?)oAb6{< z#eUCHGO*0qebrY0XW5WnfzWHsR~#Ch4bkS3wfo366qU-{e7(oly9e+X0OJsBk;fnS zl|p%4iQ2$Y16MUi8TFQ9^JL0?t);3kes?KnfFOMZ2UO0J_4E|35$jg=pq8t`74N&1 zcuRT=VEMef$_UqV`bbtum?XFJcWL>8SaRk%{mi8|S#HE(7Vu*LtvkA7#S@kP3%DH6 z#1Rn)g^Cy(man)e_D#mSKb^Yz-}j+^QP6}j>OERd~3IDDM?ST=Wn9pGi<=+ z6p{ZhsW|TUM8KC1KsBX(5nkR37d3$I5~qRnth0a@Xc=;@PX*sv+FYCR@2o=dhYE6o zqul2li&7{A(U6pl{rPbUm$kUCPY)GL0bV&7c4g5vGx^$W~eWAaJ zsh{6>o?Lm&{0iYCm$iMq^S!~6gThSWoAO9d*+8YQ&dW!a zRX)k`UP;ZnHj50-wo>nSA8n0)ZQg_?8p~cOKgf168kiD(`S+Hxq$`1pgj1zvN`$Akr{{sdvE~JTpVPgm>MQ7Q!4EKI zb~qikx!mmp@0$)`SD_(enuDMiO8gEqLx3E2Sq0x`T4>cd$*?wfwvmLsT|Cv~Er$QI zd~airlJG1mdvLTUw_gENG52teW@u(@q@P_!-vV)T3%h_$N)bzrtTJtER!yRKO*BvG z5VB6c4l>f?eyrNp-7qIX9|V47i|CFl=>-#1?^(~)W} zAO37SXN!lMA|Iy%U9-5bF{EE@kzbSLoZrZ=Wn`NGE@AY>ke0B6g4;|}z+Xjqg~LmL zH;6#9C(^^RL{}Ml4imT>Pa}*l!t=@(xuKSLW;TN(MESW6HmSwJVbS0}hD4 zrawZRPUACl&mwWQc#bvtuX_OzLO+A#y+<991lae|>gTD`pNnb4CD`}TS7^(6Sp1|Gh;THxA&#w9>^Ev-=C-WLkcTSCIV){L zxqvHSzQ6-VW9l~};&9CSJh!K1I>=mwcC`$HTUZsJxzFv~@3s1%Tfed9*NRgDtNz90 zpMJRKfvhHKpYNt%Go*M88@Cp-)bE1BpGB{ywEs7zDKDw-CNq&g7=_Wew(vRYZybSO zA05e%`qOhzwLy-^X$s*_kDv4)R)XKACdYQ|(mn-QR%K4+SC@5XN)>TsN!dz;9hv*4 zPZrd=-X;~OJQvs#-E^;F@=C{FY3?hibW!O)KR*KRe-;o)rDz2FxYyv7tVB+u zlk)T=IMd-WgU)2Ks+P~cqe}3sh7ISfPtP&6&{|~88%kO!wAUV|$Q>+d{IYhTR1`Yo z{G^-3_FF%?BL)6rAARislOsKj*F*=?!%)@YOG$nq zs3?t<{OERFgAed{u4q0x$)+AEj6W%r@zj7^!E`t9&l;Y5Z+q8icz??LB#N)@8qWH4 zLRBSK74BBcQPZ+X|HL`&Viko6ZLlMy7d*S&EG9{BxqNsvlXeO#G>ckYbt%Zg&041? zc^B+!K0<~4M=bj#oW+5A8^XQ_xkxL)%Ln(heH#==UQ}p5DSq*xzH=Lx9>+XdE%V0kJcEoN2ys_i=?4 zQP$4di34|*x|fDKz5$e9ReRNe|N9lQ9Kg=mbZoT+^&9xAbD12+H0od?vlMCuaLv9 zQ0ctem_yqJO<}G7p85O@ncpqUY*2V+zbIE!$e4I*MsmOn{93F_6QB9@(pLjK(I%=< z4*xSdK+p0TZsVb`$`-DJrxr+6X9udkLA)h1^-Hw&q_f>V``dYzlVn{d1e$^_?6)fh zAUZltI?iE(p{wlT#$pVrV*{%68470+_9ZtWw`l2X!PWDZYAQjtAO&+c_`Nj5)UmJZ zJ$HqUZV!F(l~jIU|9}080dcG~)3tdNgW;i*-QDMfT4F>@pz^YbjJ@0VBqO#D4l)21 zZW^9DTPtEuo_Bh8ly}1S^eFP4D9mzRcED8%FZWE#-;=mDA2q$y$lU5cQ@*{Q-+FrL zox8rt|EPo&|He*{n{w5gOx+(4sSodUz@a5Hk+HfUoPV1K0qHzKUjs3#wUR1|oP-yw zsY^n|r(IOl-x-!K9b|vJ>r8_`G9Cc!|9gUF00%r8a{j_Z_Dd&7Q@|pAY?Wh} zNMeuXay>K~kN~_eExrpG07_cdJ%y3s(8aDDrIuIuY{wSt2`N0RNj8UBRp*P9rs9Nu zGA~p>zaCaMVz&viKWOobM}o-URz{6uJJ_%&Ht1#ki?73Z`!*S!EcF;E>R8ltiU;Ij zG?HHe$sZdBYJH*?a;L-Bwa;haBeTn0p>N%a1Et-L(9h3+rWoiATjMVMi7oNu!` zJLF!x`J-c=>hLbbuQ1+%DtzeiS#|xC?pR_mv`mR_7B?i_qby1Ka10-ZVnKRD!D5L}8>z z`p7B0{w_^p=lyjxKRTr}ADl*jz-v8BX@JV|5?s*YoX1PzhOLn^ClM@kup#Al~gmR>(806C#wABo(&YCEXlygi>nNRiTgrSJAwi5+sX?Kd> z!a_5*ZK-R+vtL}i@75=eBd$#c%6@11NZPQ&R3!mJqMY!*^}p<7637V}>kgi5>gXSplXSbpulB6(Z}w%S z7ltHh2=SjDMK6^6$rwgfr(084>nlyXt9?fx*8evVw(9)nC2C#yLoAf>v32|L&0!a9awQ+MhsHmg}?+=`9{g~41_NZ>|>12Xvooa9D z+0KCAP+r#MtSV7xPLa3gcSj3+7Erm|b-U*Kp9EsNz{;JORSiJ4!RN<*0)sh(&crvzY8dr@x?cVuUYSBB)C z=BfTW$#%++TnUoQAHixfPpFVD=D^L8&5XCPe1K|1~0?#?};%W;TOYH}<76p6VjwpCbfH2O# zsp!nS5p7ME_g&GAW3JNwpzW&vVn!{$)puJYD&28?T$5i$+l3xPVTp?(w+o` zV4Zt()K2EL_kre~e_JntuI`4-Iql97@(KA*h?UbXj5{{E8PwN$gsLuc@Omn@yDizE zF^9gJEj)B#+fE}@%j-Iq$fDuz|CZ~?&u%D$9j9sd@YZ=78Z+mLclqd81)W^Gap(8z z9xrg@A@y}ub=4KJgU=l#QJWH|$U}#TBfVqpW+Gp}z((%aA!3tK=)+cEahO-q85zO0 zw-BCm$XT<8&dApjK=D*eOp0<#3CbFOg;WLk@X@2zEF$9jFms|Tt{@^3mcKXXD&Kb{ zz=U9{`uK~T=b!Y89@ajHc@ygxjC%j0w2$B%N?`D{8I@O6m6Q3_^~zwK$fHnzL~OWU zoTJjYIWXFa!bgvcP^r)NcpATBH=P%Dw*$ookzJHjz9%g~a7lDSpAZ0?Rkvf>(_45Y z7pT9yRcf45<9M`BD(~$IkmfKcpV$tkkN9{V>U(fUCU7TDV9ZfpD>d{T8LJUTVKds- zzPM%Sk}@gpGoT#LflLg!gmHOE$4QKVHMXz78WD5d7jQYB3yaP_fvMNshdLXf{z22q zYHQORM{#~F46v3@jXo&?b`IXLO4x3_2%pu|kL0$@PpPlVC%$Li2q5}Z!oolOeKp;9 zQ`mY9Zj?;5W*|MhRFUsi-x_l3%2g(V(mtU=aG_gK7nN!BD<-Pc$*Q_J`}H7J0`=Z? z0EGCOqjt|W2a{jw3rXL#ApSMk`p~*NM(VA-y-P{;z6+_x$icI8g`V27R8QM8Ksor} z6BKmsf)Q!{IP;H(0PI%vN6}CEnPZMwYo2>wnh3Ow-ZE%*O=$Kvw#H3t?FHzA7v{)V zjYe?)qYa2hDf1N2F^E+mY*(}HnW&I552fv`jt(e_B%1sYa{cY&;_H}DC0jY}-F3>^ zY!lwSci6Fb&d9?7mv)h8QDP#|ot?FmlRHKiQcXM9Hb1p9Aqo*_eJxW(_xtZ&`AO@& zbYo$LN2%m)Zlx6`xFMS*(Kg$;eh(zcB}LF%IAy&jh6*<9hPt^it_`8~|w1Jv|IwE+CV?5#RKjM@yMW zJgi$%T#;*~E2MqfPqRjS&7nbAJR2A#@}H;Fb^*v6%mfh4Rac2ZzV_~rOt!{lgIIJB zRzk_3G=En)!DK}zGhWAKJ^^D3eg!^BaP3z;(SfGZrwIh8vpe~Y9o}0In`zzGQz_0W zAWi-@_EWvwnYgazc%MHRtbSyH|AuF(b_sj-3QS-1;Q0GI>1u#+vRBm#1^?1+UwERzUrtD!ozNdhMV5kmH&b*aV)6n8I*N>c(^N4oDHw8 zDGAL`66LjPgE_&W~J84W!HU!z} z!#lk7y|&cb@ATpbW$P`=P%eZbp3>}`2$VhE4mHL^Bry^r zC{0-3=Kspv8Yddt+?J=A0JF2a0+QmxGc6llY?>{hi-|8r|NTsIP!UAz@00Q|NkMji zre93kJaY}G^+%79MaH0RP6#(*?=m`kE?<2le^Nyz4jkgnEGqfh&gOw*i1ME-f0Q@_ z4;v{F@q8$MEfoB*i+b6;I_lpWasOlhgTyG#_PRZtFF0Q?8C#!KyZ zmBF`_p;7caFa5{=V2be+lm#v)&w#kmq9uV;Ydkw+Jz6c-m%e+;Q}nrGPB$vb4M#Wd zz!SUSM~Azeu6vIB%_TleLrp?Jtc?U8pP_FaQJDO5X6PWZ@S=wg&#kDTtW4&j_$(MoKi^2HJ4lXtZ>z9Mx^s> zLZBsqsTR4W^0e-n>jl|y#C#B*>UBM-r^vKV%7xJoa9q z&G7R4*=7Asb!<~w&h-9I2+fi?mqv-1^^U&oQQi9X+TasKvI6PNdH!XFb)9i&vnF4^e-v2oEc^3d`;$X4 zdqCcjj!;qjjH#>gkc=@MWaV`G6_B?5Wn6#fg3Go9R1h^ktAz`;9}%msR)Bv42qwk-gcje~vh0Em7E8+WdmI z+G0_N%G;0+AgDFaB0_q)UEM(WFCi&0Jag!nI>XxyTfAMK$AbFvE+*Yn4SMSX`kr}~ zEEIpV6jIdZ!;&F&$`nb3EZ+`)E0Z}i^3+f2sJ|LYy&v1)G484ygYX74+2gS{v#jwg zg(>|DUj+8&S*vmH-8Xj^QzLmL@aiq?4bR}MU3si;fVDTDbCRjhCe-BZo1R}JWpDb< z%2;ZjSY@_#X3nMZb36BfqA9{#Nfd|1w56DRcQ;SZdt~502hAj(LzO1O*Tm&K42<5D zh)^C#gQfDdd^=>a$)!A94x1jGSWKiC9bmgwZL_>Fsff=oX8(_Sz*E2T#H!YPF2AKy z^k#c_gm3I%b!*@BHBXdRqXL<1i~H*KO-H8khZphpmhpK~3IDgVnr7367dL42R25Am zb2lp88zV@Ts>+%hcB!?l2a3h!(R~(zXcV|x=GpT=-7lzn^-S86GaZKGiLOsBWei;= z<99h|vfN8MV<+OhfhS%+FC-RlRr#cHLcZ+!F8|2VHPZtIINl(O_f_GyBd$Rs3Gi;m z5dOpUg*HdSEw*I4PcYu6cn2c%n>5|TLMKSL@iDPyA={4XFfVfaI=;w9$@;hlFNi~s z+B2CdILK%zazf_0H}^(STCbpYjO-p$Rprsky+Mk_(AX>EL8Ik)`|3tWBV6AII!}u} zuuBzs`ZH_jJ~Tw)L2FjvF~T2_@{-N%cc^?=?s-BwIBx*$?oTw5NP2h=yJ6Z^O}_4y z^Lfw=7WsRjW<@kY zjsK?CW_sEBm2~e0=$d&UV%I(jV}Yx8N#A% z7_rR^ub~)jBfS-R(?=QC2A)V-#uXKc<9Ofq4KD=-Uhqpb0;DwymTLoKc%=JgC`t7y zQwTJ?QJ#1SD{f3J7W;H8jOnPGC zVQ8^t|I0$qENMvI6{8)&EM2|AGL5E3&ZNxJoVcm{b8U-V>N)SK_i&MY@xJ^>`!msf z1!?==_&T?OXAM)u-@ZRJ&c|ILmnvrJqUv2tIZvR$)*Cmn+U_S|!lQ_HvI()bQ$Mi; z94M*HehW~KBLbF>D61C_18$HbBNJaVY*sF2hKti#&-KHW$)1IJEvH1HVI-%s%-6Kn z{9=t-Wo%D);S*zYuus4EPBQ&#+v(Z=5VjRl6Ts<=f1$T)g2pzo;XAXlfOCO@QyO@0 zlFf+mJCub;#f)BNF;Q;QOq=EY_jmF=l2wA(fFjG6Y|u@^ znWrG4-XNn8(gXUTt#By*HDtxX(@VE8fS5EHp==yO?km|2<(oWDM}nkh=MUY3m|Qo0 zxHo*Q@jq$%RiPYo#U$~9)VtsB=*zzZU;IN}LjYHmLiEee1uNY; zkz)wI%q6toB{tEptC{J)?G3i-ZPm&4V!mF_-#HV-Br?{?Ay)I>A4F#oKH3WQb}0>f zk>oW6RB(Z-$vyH}omcn%GNoM|HA%nC&tFv7=!I3kQg811c=W8ntx_& zO_(gIdpC-K(?K;-E5JCSP`gbArU!p-8t+mHNl2aq#>3mF?%~ zXU&DhT``hW`o}0^s#d~j&iQsWY;VcwTFX4N!A%OR)93RVY@`vv(0Av0nF%T9nXeFf zS)apLSuIOO)Y$N+{Kdu=#Ad(;W99*zHjF}=%+4(Mt>Qd*3Bs3??%rH6@fwSf(w%-}sGfY=EA*q`x7G)wj~+ZhVwc(tEQmr` z75)IV8@eD{s%8RZ%NwlnM;U6D2SlsK;(VkeEx4*P=h_Qs+Jfkx5*KZDn(k(G0)(pQ z$rlp)L;6ZiH5C>xLVgs>#a70WD(C|f6a(&;$dOM_Uw@vgnNS96x>B->XZqxV3|pU< zmwqD$bj}6&F?0I*-URmj0>Il@xz0KKJNYu~-rU?Y+T?##bmf6e|8G2m+^I|wa$lSK z2oZ7%-xRjFXGV-j$eE*%D@W!gxzaZ5GbT5=Hq4b{bCn8Vx5_aJ{Py#E< zF*F(}UT-;h)=e{kc~mc8j_Dfc>S&%}$k%scUEZqHv89ljt48|z0kihiey#ph^Uu~3 z!1dN|Bni&!;MBnsTM()M{RksAgArS`sZQ+q{ax`A4}qrr(S=*v3>21F%3g@mY0xWZ z_WHcU7a0tyi3!rsi{`(kbBFwXzzXP+3OU~Yi>|t4BTczLNR3OyW#!G`gy<||L@O7~ zk5O5tm63Q@4Xwr6G^1@TH-yUJLyj=;5@ateIcY4y`{NV#y+TF~E#_d>M@ub`V*=T1 zk1S`_xvp%;c&6Y~d%5YRCy?jpvd3D6XD^kiC!0(kcI6m)SjlXlHsd!+=@;V$==3@5nB|I{bfWXRAOAS{w_Bdsil*VVV2m@GGsCq35`7`Y z=Q}0TbRzxF;qJ>4901y@EocjvS>pZF_bHLUb~G}JW(Ne$z+S@A!sU`LH{YCA)^(C{4J7jAA}jBUa2cE9R${I+B@gDog5bhIW#dNeqW*RfPqSjF z2}8ksXXt`gcBZBjaxY4kve{Ggc{r|<#4NoEw~-;E3cme*V$hUC1 zPgC>H=tEz<2A)z`VR2f@MmSqe?TCi(($|KEzB#@t%H~z6evcT45WF#>&^LEVamgPj zRcJluT8ulfZul_L%*HteGiWnYoj!lP;f#6JBPChpigJ6`9Ve?RHl>}3rtZUWPD z*;pe^xZYR!4-iOVR2c5M7ol7qp>bBEDhuQtBRxPQ6*qY@dyVV!v*k$Ql^lVb^^_k9 z(YZL`iOli#wP)GuT1_H>L>ryXK}0c{136jq<5yIt!n{24EI2CSU=KvS;UTV&S5Do0 z(qs>U2?HzFovQ;p2Onc|)tTA1(do)E9f=IMj_Ann?$${^UxRNv&BKu++SU@H)$5oc zg+Mq+Ys72*uGpy-aAGU67P-_J{H<#V$xNaCk2*L=vH~(poyT7b(@9N38bgGV>R@UIf>cH}}-hxR}VhB^(dEriXp87b_#yZTj!3a(Y-cAlrS5w@-Wt z9#f(>s$A#bO978p7$NJ;a5+@X_hYQc^(HzXE7rBBCNJN4=2eI??(CjPJcsXg9y{`_ zPyXH4=pKG`!%-ylkaj&6ty7iHl5Yr4LEBTLG!)LwC*qQvfX{T*poKH70@14#1Qv5; z>+RYVs)Cz(hT64G?q|0h-m{>sW*F8xb0xlj0{uo>0mhfu#kG7qk<_1T8sXsL!Zy!q zBbWRpn<3R!A{)cpx5mG@EW-Tertj)qk+*t^vmn>~9y8PNs}w-;O}Q;;Yh<2yVI(|w z0eI{M68Lwq%-7FOnfbgLL}>m%r)PvTT6NIPYtUv4SX`+{;b~K(5Lu?qm{ZjvemhAy z+c7cnSPXa=ISc-)aAwRSXv`v~+mei+CJgEiFdC$lEq}8B?}1B5Nf3(YnCuO}1gsyj z+j4JT&SS8)Ddti+$SS4v!JWgg!a$E4B#>+&<3~Q+c;gS8#x}6ftN^>GHOkHlJi{F6 zC>Ue#lNr&a zqb3X`qzf2!^+`RnJ&sCAx~+{&J^3kPBNf%V8P0+xGX@7w^0&WV*{?w5gJ-zmhhDLN zP6g2tLDpg{uEcMisqPwLMcgS?IHXs?;I@YFIO}ep3846t@l{+(*_OkG^mjJjZm&D5 z1*sPguV6va(Ti_Q_3F>NvynldyX~yM=g$3tpYLf;EENgy%+YDoq~9lGJ=r-osgK3; zP0VZ+peOB=byu=~{Ekb(T@}s6^lhn1^!jE|-m?yGlRu~0n=6Yx=o;A*f6A=GpXa^& zp#rt1&@^q6@MJJs{Bfk*O-qZb=M6QuJ81ru!-Hv#}3SmuV1y$BZudQbeuZn$}6?|k{>hYp4 z2?8^71=$b;N(c!N33C{+X^c5#)m^4j&x{1n-{heArYv%UuFYpNQeNEp;&hXbF7M@} zwMDLcl!INiLncR(jh$Ww zx1ZJ8g)*D6emLOF7(AhIISn&}n%d@h4S@x~B*&CFI*=h9c|t@RP=g*_KTA4-N)CPz z`cfKuYd?P>M9RCbMB9sSgA#vr`km05wC%Zf`LB+jv$a)+SzdwN8-uqZ*6Ez`!yK{< zp#Txa2|i*|F0{>eN8P>?sXLzycJu+riqbLpd9nm~Yf=!NEajBzgjf0*e=$y^nN3#v zXyZlw?e$bMaigN(eJRJvD>LLsqky{n?&qXWv9D1fr;ifU4PHQY#N+tR(vQCMimH{C z-lIH=K<0+ahz3RA$*V7sSO2XMn|glzc=N>Q@Y5gW$B#En@h|k~7>sJ~pS9FUqa)Mr zimxSN4}71}{ej6YsF6a`0>|t8M8jXvVT*4DVc>|rt(q?pqWYHMti!pmy?f2Y5El+C zT~-t^-Xr9ub{e?1@BL=WCL%@;h{PGd+|@$J@qgKH@%Q3y8y&usV-kM;fxdd0-s?%% zTCxhIL|CS^T6zXx24s&=pFRbe=4YByPj*{QQL`%Q+GmwfNxI)=^VD2zkYf?gdLN_r zN^;EY)4}g^oQQ!A2kB~bfQO^<0jO{L`SG9LoVd@n|2>)w_zrsr6WsAYoPKi2K!Ir- z)R_s~iT{U6trr>bR~A_j^sQ0Q->G*iydP8A?)s0AmLzOy;?SdB$9r}Y%KRP5DDYHE47o`l}lH}@mf?@^cB?b|e` z-yF-Xy8pWW-8sD0N3G|~`ghUh_jR;2yMvUNy!%i5iIjJ4gQFkdX3n13j5lFYJj7Ot z)Fb5Wh(_cWWtq-CZf9r*4!sXp*AjpG zXw9eD@HU2eQknDGM=wdlV#?)y@s?8BjmrtHA%;snV7Lnr`oLE0V7O4$)<+-4}p7*`~ zV&c|iwmz%aR=M(xi%oR!|$Cl_b!lD7;S4b>3>6$-8q-57pi7bY^cFGcL{*LyWHIj^&R zCSXt|&Ozs6nR62Sd;fuy!TO#m@&M_1zhC%BEH#n)_s!fnhci8$G7Io_&5kx1U!;#C zb!ljaKhk?{^{Y~3X3$^B@4L)_q!fuHmO?aba|_Z+jUR9j!^w8>ry@4 zN~z5{#((kGx{k5rwbH(GpqAd@*nE$9Vncr6FKzF+xN3O615IxQYxb)S5ZAtbOS>)3 zD@IEe_&4o@U1@XW4A%HcA&qbI6q}5tNIakh9zPln(3q0N{&(A^IiOa<=VxT5DY72B zVDSCl>zVGVD^6Jq&$sqw@JL~7le7e5K>@Y|j0oiBBa}R9k=1VYDP)58SUi92 zw0+RzA=38=&jYx}y5UWLjHW0N!=%UZj;*R3;i@C-4uPt#{wT#{^+*1?x>kwvaK9OF z8ZELov)O9A?S6)MsIP%~JYOOvW! zmkm@U9yGZFuL0tqivuH zRK5$0C{lhB%09Gu<4IuQJ8dnL0^X*Hd-{DzHbXalM4z+-jT6ECk}WiYgRUpt-W9DQ zaLs;}Oukr=a-CN_TSWYa!)jcIwk*yN2878%vz+CxA3XeT&#=?q*|P&Bh`xNxhA;TSjvLI$D*eqd!TpPt zVA12i*+eS6+2`J}(uWUMO_p0%&YYDp7?n^9K_+`NH8;T} z(C6{7rCCxj9##De16>NM)mcC0AjYO;xww8Hm5BkWTuKzW7$ zRyAmz+bzT9&F9^fv{tP4v2Kl@uFnAB8N0XJ^ZCBrqSufM=ZuPEI$M3SLqngk!#;;n zOVHD5u8(m#rB@Tk%V7?;WNB3H*`1LMvrPRJJSBjD0e8RL+CS_(%7G)oU*;Tls~`r9Y|5bYx9-72O*jvG5PjO@=N)c^%RzhIPELIvRctuSV{Q` z^1og`y_oGL`rS(wg<#4dLN%7~0eiRUN)%KWH}M1cj}^MSA?4oKQzV+yjcAsrI~jPU z6JzHpNaRR6oxx-bEXRDF33y;R0TQCiI2^DM4@W0~eb0Hl-c8R_6wq}J)!V>L&~7+= zf$;?RVxgc6vpYCrtO$}nJ1X~q5D6ubpyf))M=z%el!vqPjGa)n&Yo10@!Y$0NNi>lheEVPS{DQA#CM>WLycMbM>9h^uRlO1{lW@IHd2pfv zd@~W}c2|_-3XRhP%u44_1|{PIT>Tn^r)Yz>L+Y2FUvnvG;>|m+lCcH&J#diTs5nl# zq4Rws=}@(za#GC}Fd?Q%?bLqsUU<}N@b$65U2-;`0}znOci(BV)6f3kO@r%!Wn5Jk zze7+Nbh+`eu+&w2@D-K=1sC90q3~FPB7H;* zML#5%hymwZAE+5?(Qn#xb7hCN4k@i%XvLtfe(&3_MHn^}LtC9ik+N8Ih}GI+0`~0E z?dZwCx#Wl8x})Fy9!YCI=#aVw?As6j2M*L(0L1Bq9#XK<092txwYpI*x{B8KJ}_4B z0RD%g{SX=1g$2>Gk}!rtL{)|TIdNa4u2fy?{F>E?rt20u9+P{kJ`|1kwYqO2`KDkZ z=B?_d3k28uElVg0Hw=kF2L9{Pe?B(=hDU7vuD|$yWKy2&Vn9??8Dl9iubW>?u4{Ir zvz7L{4JVG`ny(c#7p+$s_Lk3%+8QqfuZC^N*bbVbeO!h(?6V+qRB&YT&So1?)BD)g&tJdNrC;uC4OMtU^z zN&GFAN4sy{gyr9CNAnKa*B30MYj54tXf}LG=zfIeM0Tq(G8}=j;A^)V9dZJB^$kA@ ze+_cW$Ewz7hXMPkFt=4?^Y4v`?3@AxqM2)ApfUOdazvP==@iA00cinOlhf&{Vz(lK zM3IjIQO+}(+NJuYO+UVS#VEMwn&mK3bkl7p{LkUA&#&^<-I`yxc$yyc!;w2;dv)}$ zYRV9vCgY3;W(jER79*&Pf{sJPy?S)Q{;EVhIe@S>8wl(6J^hj%F1a&Qvb(Qe{Ay@0 zdiQ+O^8!KQrKKZ9gflTO$Rd0OMDU;lYiBrnCc4uXnN2*7SAV=g{*kBcFsR2Q_|VI2 zzTl9of8Z$EnDCf$5l_GY+77tmU9wMnLAIHzQ|pwhN5qKGJSIcz;s}c52;+$NQ&rUX zTk^Z&BdmFkMn_=4Bn-eW$-4$eXf6Py7)G6m@(q76SY0~Jvw#*t@i-@N(pD;>?oQdy zNKa)F^SS2cTLVz<@JXjLfuIMCgwlICt3OX)$BQpkNS5l{qYUF;SVTxV7cv?zevpDi z<*2y=Yn)y}0U)1#gA{xV?wPO6xFgb7d1zH0A?r=3PD(WH0+4}UglDh%oR+gCZk|Q9 zHT#6blgG4!?v^0l-j3@mlx_9+mgvjiIF+*-yC$LE^5hhzdiypmyo`1YgY$^XMf)5e z2YA$K29;gs^H!o#y^gb^80sZX{sSyD&j);u*MnJXN%t=)D9}ank8L*S@DTy)1N^m0 zhNS(_MU>uT@J-^^A}vy$N5F}GthLmwawvay`NzaG*Z>=3x%)ysI?R}msz>lF`hP&V zATMA|dd;ThPPBUFtNYd%4E;0Ouuqnnz}e(rA0p;1xwae}-sC%ZojT-lT*8+R(dpc! z5-oo@#(pv%)v=xsXuEm#CceRh@yM4K=#Cg{X?}Ca(E2dlWL(zn>?$jU2l)> zK{8`WRIa({0GNuYG9L?muS4&L1jvfRteJ8)8s}Vle$2!Gkt&x@f68;pX!@6f(>Ze1 zb!nlMZ3j!I-d(A=Gj*YD<1FhiZ~dy)Bf9w)ic{vFGffub4h=`*YOi)9UFPSoJ{PXW z<$g6Mqm;hdkanATE=3$5!>Jt9LoZ#T7~2wXDR7uB=Jq2!a70t|KhbwK%`&1Yup_)j zf7;H@nv}9<+6d+^kLx&@H^80o2w|v1)=MiKb%_S-it=Y@xpBv`)H8Ex9 z<%7KA)*;kDsJrLR&yVGR4elx9IXq5VlNo1o!8bF&t>={ez^z!-&CnTFM zPno`|Gz%e3)tRi}O^8-`TSdTeI7=Dd!M)L~Zjz(%p< z*Uo*5M~W}v4(NW?&Q*LH>SuW{iXdCyBdiliFu5^=jss#xz|7Ozb90X&Wb>RheHbFV zh7t~D@(|bw!GFj8q!eBJmFkJNF3fH}AMHEjh|4*q9LbfqN@0JtKczn}S$X=RByQf# zfeZdoy+E-`>LhkB4{gkNwf#N=xw$9KmV#`hw|z$~)uG(2gd=bJx7`^(I9k!}`ZY9l zyAH@GRi$&@EV&-D@%>tpBLU7(c{{wG>t3V?i<`Ig~||sXncxa7kCiWd`b4<2gyd zuR%zc28Dewm9UEFhCIwJGP5UUL{m8*dKExxvJwZRV|t~Rir8TG9Eou%E5xWKen?kO z4_C7YJk~1>6Of$SJ1cwy?sGoRGb|MODkOtOFRG=5P*a$4CB|AL9i0wyz0i2`5SQs) zpH(|ENWPYIU9nYav~~VDUBp#+oj3vT(Bh4VmE846nGls1wmN@Kg0IhqgPFiH{nk6N zDWVcgH9*vgtaj;86<_B%Q}|SfAmbX9!&eCY3`cstl#i$q(&A~=8D=<~CV0OY3c4C@ zON2b+5=I^MSY);ZVs%Aff#B&duK0nVO7&D$48l5M;g8i((v1l3c;vtr<5_LnmiAbV z4ueX9pQmuscattur3Wg#Rl|mfeTB+2yQ;ZUq#BWx2j85UZb0N$YWCPimvs$`AM%RU&3!=O~IzKr26%jbWK_uJb>$i8C)3OpbE#jc zYF5*aM0YF{Ek;kxn;Qcml1Zksc55nSNa4lsXIRGZMWfBQFO>ZJpBq2qsQAOOC9U00 z3cvP>e^x9n8*zVVSUe3z=W+0QYit!)S$Eb}dJ9O#%(_aKj z3%~h4$PZ61cpj&8>ya{RK5s?kXx%`Ak@+X5K4wyeJ)d?B@bwsW0@LZJt6On9504|s zQY+IE{6S{uzswE(S(UP!6i6LWja0snm-T-MWCKtAXHM6I#~$9*qt!)=&Ahd*tT>E~ zaKC4S8gc}`_q0+&R(fhMv#<}P9KtSv?CW5s()6HuFG40v$dAVb(P`e_uXLdeA2||FGasWHpvcHZ=h*?U0|9y$pRVhe{rCEG6XnONF+=qZcDJ9opSM#aoi^0_IS@a;-68e2CtQ_`r651J z5>HY1nTIap77%zEWzP{1vAUA)d=?mjP&FZkw=8%2O zcU;RD@W0bf?ymDRPCv= ziL0yhm0ZQLclN$LHQDp|WSEH{5=Nw>dey=hL3~6o>>)%M_4wfHx-T=QTU;&z55b9< zC9USzf5$EtN?k`LGQr9Vq(&0{ol{5emH0m$M>0<`N1|&SMHc8MZ3(WIT>0bAP_^hY zrbyxYdWoo*!0RSndek!zDuC+ULvewAmm-A)$MVWE7z4|X6P=hzy|`y=u0Nf4`?Je% zp|3&PNWgqY(6;{Fz@t+mIu-sGm!#)alz)*S|DHMg(amy+U~JSqkX(zmA_3=sOm&06 zvg1KU@XBX3(cAP{#wSkO`E;raa8gwMD5PbE|`yi}rv>H-uXMzTZ(=?nrx1 zXG^}zwyf1@+4&@tp^v*itb^e+;%c!^UO7YHtBCt%xv(k@Gq~_$ft$NOCEp|gqa8?% z=%#-O%V|aIR-l;*7!ni0(mGmWamh~VSbr=(gnA|@>`S~)D{?vDGNg!c;>*PJh-Vm@ zwy}ACIdlA?G7S$&69OimMEX)eE|SO(+A;n`LeEKAwJ1fMmCba<_)EGtS;ZMp0!fgN zACO;G-Nj)g1!*vYi&N<1n}vrKpGeD>)q(>x^&>4$_=v5wvktdOE0fiSf;+sPLR5oX zFvz{qW3N%h9K4?^5QJ)&|13faQu$cQKD1~(pVxYWK&DdQ#I2hpcy9VL|D80SCA7{O zsSB|@A8Mu_IYLs+w#sx7LkOX(2}*^bp}h&6z)+4kFWpOv9OiD)xm12QtgyxB@NBDQ zw`coaXF0AHVjXRmv#-4~qxajs+rxd$G--M*zee}fAC)51uF=AhAfbJt`#KXyWy;W? z%z%?THO+Yd4oC?pn=K&sup)d1{?(^7gS{nwMPY>LI$2*CJctZ=QQa6r+MaX6tuU?P z8@J1lLHJaMV~;yI*V}iW<{ZHOBg)riX1?<46Yd+t$@M~QF+ME)Mw$~mBJDdw89+3I^BwL^ZARhlUR_~j;e&b-Sm$V2sPG?8jS8NJ;HJll7%+9hmZYo!fqk(f z+XTo5k||bsGS*xoyoXlUx$WE3*S*%N-&vt$;2~5Y7-0i)EItMMIE)lw&pHj@@G>Z5t+za_`UcMa*{ z9fIl)((94sD^+T;bjKJS`h0Q8?um~DT0eh(`tye?Plo7uB7a<+ya9%7U?`0zg1nr` z@D{C70MCXeJGF_v$9&lBh9F~KUadP66xsa9-E=bJ>9?gjMeWZ{16C?T&8`d4DU7Ji z8UtM7^PKKa6wl9c$r*WEqb>Ex{oZw`UOz7t&HsqM^>yAtz3zyYm|!RZn8$hMb?Ky+ zRdnlCqa}UOcjx^&du}wI4A%W=2+!I)ADgSqnWNkfAhC|X!Q7%0S;JN)=JN#ECNt0O zN0Y=ThiSd$%XUGhhiw->-I;W|0y|3rBjl5dy@;H!K?dkF+6Wk5Mtop~!v+{}Wqoi4 z{YGpl+>)t1vwN)A_Oq<}nNhXgaNafi874#i^C-X+rkMAbmSrl6xgi733x-^H1l&`~ z2Lpz9uNu6(2jDZc)$)~gL7zbW^!?1$e0Wd6E3&^DcjE?-Z*mKa7+TD$g^FIAmyw&7 zv%#PY7Y#u8yjqyx(mjc#r5`qJoa+S*J=Af`S*6s}(cszzW3VkI@=6y3Fgr?gC}V_Z zoh;->#4Cn=e5cDr31E-p-1=OY=f2}cE}TGf%5@G@X?=MUCSx6Texrvo&mv;qxgE^0A z2+Cr~+<8E5S8#GTZ%>6{QxzdckvrU~sY6&wi}0!qB{i4q`y|?3{Scs1((08(yUuK7 zW>I=%U}a$aDPB&qKnr-DQ>&dY&>FlmH|IDGL5q{uh;L~)g!Zxq!o@b0hsjBU41&yb zJcyyq)_g+^4SKM%NKUTz8?!m!aTI@l>uQsqU-e983(C_k0W3G4%`OO7;JErZ{J%`t z&Yuf{Y3PXNtSlm?14uhdf`78dqvyC(agyj^q-XE z|4L6W2>~|Fr5Jw-$iAB%^m7eSGGEgZTA#Oj&|_-o|0_TUpCDQXMvTQ^z_v`9`gIar zfo^8k!E4KGHP!i%Z6xLSrCyc0h5J5O8|_76lLy||*8P)-t;9#Mj3>tljit330I{|6 z>F#9=Te*x}ZF3$xXtzJ{*^23O$E--}1^Kbvht_S%JL{b9G52mX{uFadz@r|!uc#sJ zB%_xZa4li(IprXSydhAM0ox87fE0Vj9mf5(a|DWguI0sP3;V&Ul>EceTV-ttI$?>v z3iC3i%=s%`yLX~xG=eQ)8-XGC%YXeVC2`Ln+===!EauBC=l7T|69Aru2((%}tyCS{iiP1w+G-L1? z!A@R46;cY$zz`G1k~u5TFF}R|b1eokq7s1vyAS6S+ninqy@E#PV6o7eE_FlD*Mm^@ z9ID?z!DU#;x!|qXXz{#V8HKg%_&EdN%<52G`OJGjPtjN8GIl_#+E!Ln6ty*X3q3{n zCLAFA|C>AAc?tG>UGe9xO}*KvcvGdMra~*8oIJX zWGa@mzjG!7etT}i+E!Z?Ik=rU(l}0$9{+eC_^OO@savl;VIVK-HY`TFaN?xrI%v#9 z2M&zK%8m`je>HuG_K!IJsSb~NKuabpCZB*%4o@Q5A`_iy!!v`o={2sIvIi};YR)=1 z=-+!^St-NR=cuOMOl(2R{^a5O;yKvVJ(n4NE7Au_Ntrb=@;Ya-NeLz=Yjq-l?@0V7 z>AhIsaFRJ?ct~pUu%HxNja+yj%=AM?F?pFI)XGSa5GiD=VLl~1WA|b6ov}n0JT$G< zC-IN#-{3)&0-Scn6eAqzkn#c8^)@nIGzBFcYjeiQ+Rlm~RVTXWHIUwgwWteXyofeU zR-VW&TS@^yhh zOt>lrsTdL0Z487G)q(07`Ordt&sm%68m+2WB+XqRXmTdpGgU@|C&?-~%xk~sk8 z|00y(mPMn*_*JNyfdMb7hSYquEbPg_B|b{}VoBP5h_&#oZ)I@VgDFVc@forP45=*$bkAh|`1t->9Rz7m-T%(*#m~AKhw6YOn}a7Nc^eIRyJm0< zQX0XIz7NwqD{LSEODZUlo!h)ynW(M+lkjYjv27{iy9L(Jn>K}X%rQ$Roq=s<&4?V1 zp_e{P#)!_%rAq{1MPKn%H$l_+Y(a|I=w&c)n*L)~t##1w-Xq5TgUXzsdgM)lVX-eA zU~2H=@BG_e^<<&Fp#AA&zwU-J$F^@Z_8(rxo?c^?Q;NWI>Cn7KFj$^@=$6FmgP;xp zu$xl$fIH9^yZttszgfi@Z8cv6Nx_*PF}jf9kt9u^@+WGp z$$=^^Gd=4uwHMas#-r0!@K=MJ;{T>xr7!{aGH$b6_w8)OzW)|xjM#d+qx$pssJXY2 zvqY6s`)e%95!WS_h;Zj#R8N~E3JfvEbsx#&=glRi3kg5o&kJfioK-tsl%dOXjblVM zE|vb~Z>|bH`={1R`()?;wXsh!m$6yr>l~bn7{4j-<<&25XW(oNsDp1H%k9_TU9V&F zEZ!j{sOo`s`o8Q@Q%>BcDV5E6(cOrzTJZwWPI}>N+2o3T$v!C#^er?CQbK(V9l{1= z=J{U8#%V!@>`Ti(!vu74c8*7#ybjwNZVff|950K-K%WbF;F*ZuVYE6DPv2`@dfZ;A zOL0UW?DC#T%F1{&pT>;QaDvR(avJz17o{Ua=Mqe!1n<2&8xh&F`ZwCorRM-O1RR+) zhEqvj7P_B#u;YX>aCKGC5=b_4J(bhrGhv}^#x>Bk_doakR(OSlqwgO(2LmTM&%>VX zI+EYJ%=_h;vjP!U{=;gwC4IxN+!Rg6f1r6?WUiLykQ}Cs++@U^dF$p4{)$uh#$3^higYT+AFApbVMldw9GX3i9&W9?+h$UxGUu?fFSNN^;j!$`a}{LHJW@5@8hf=_rWaFuJh?nk zR(#ft*g3cq%$O{XIf%Nl)AiW#IMVKZ1}uu&7yUDlYl$}tItc$OzJ!&7l{g%18_{Dx zC~qt~)+F$i^=`9Am+w+wpN$^k9|x>MkUC#Z>=@tZ3SvdT5ax^@hM2mX?%$CV3sO$p z;znL=P58*4w&_Lj!huNXn_X~0Tsq#E)Q8(kd8UnFCVqX}eqqNgc(0}1<|V=Azv4X5 z-M8{FqmqFv!exlL;9PEcqngW>_ty)o%pW>nhQ~ebtwyxJ4$k>$pYgW0n?_RiE*Dfr zgpuLC$fgD9z^t4sZxCsUcen4%t*t7Q+s%ai!Fl-%SVcYmZsC*f8wa-e$E&)RHmJlE;zPQlZHBq5Vz;R43`2mpM)oshn5a zTD9Bpb^PzaZV+5oG{C=ehqxcGFvcD&bXXSsBPvjYhF@t)qzdvtJ;6vHb0p+g)oY)E zz}(pBH%BX_7aa60uCPWF<4*t}wB}jjPBvQDi!Cfrbh4)hm;W4j+~oLdoWG!oGegbucG@e5JHI&X3e|oM7sZ%yZe2nI^gDr zpz)pRIuX{Lj7L}p9c_EecM2;>95$Zhyt4XwI}Li|a|Eq+!6rew(ib05Ie?;|i!JQk zQhg+PLMyg`o$(6Vwe8#thD}YB5}wIQ9{G%e{SDjO5OD-A?Z$5;WiPu1nj@g^^+7#% z_g(S#X1bhsgE6S34ukC3h<0lJDJt5mLeoPO;O;n2v(CdSz&`UyxaZ+Cpp%3S?}BT% zS@&Zy+*!gagL~+?H+?mE;L-exL9dkHB^n+Lo7$_76I-!tr29{t0QFSdpSFiHb_bUm z=){R4C*ljCj@X|je-!QrU{|C-0PDf=5mD2UG0N@bXAhIL&8d~kgioamI2|cjDzoDw zthGa>{logA5t~dd;WNnZFX?IfQ%o>4H~a>VW5yTP!nAMt8pvcn9 z+=t|{*ClC=4UoP*bm-W1(5JIo`@36=mc{Pehk5J-^uTtnU$GZ>Aj>8JZb!oS)OZ%h zZ-GA)X{p$J%+#_J!;ZrCV`XebHxL4RggvG!s~u;zS127Hf+sGN<-&;a)4?1$somunTtiw z=d`_d0<&01dx!cHOeBI>b6WW;p($%6tKX2rgAng(!^Zhc$~7Eoft$3|p=IZGVN zPaJ?DY6!e!&b?1L&(_IHeEu|CYx}z=@Tq>1h%4*+NdbWcEpJ_SZk>nDOcP*cgJKAq zzE7E!9|>AN%Q$?kZ}vQKN;Tw@Z+FZMY-Fb;U8-RgMu$>#W?_%#xHC-iYkK$hdTmtK&* zjV#(Bs^L1Ai}`QPgSsnNcG?95%hFHF$J_nMsg4r?J4UxxpACTn9tCl?m1WCzD1h*> zqf|Lj96OB_kU`>oDI10gk{K}bK)dx4mI&s{*e=QM=7?YMN2>F{b5fVe+n6T*mXQWOXb8BfCeSNfsg_jWR5*k*;F$EZ(= zBpcZFLaY>cMlB`+VyEDW=^6eXe6Pe)?F~FwO1Be_mAuRuZ)KFd_Pq6v!dnkzQ5L$-KyKMV?p05j<}h@ zbg)g;mhJi9k|R4auKl4e5)b?z^jQF@0urlsFm0aW$No*SEl(d~P6Vd*a=vrwgD2pn zovGj3jK!f3Ct}PxL=z%%zjD)lBV4d%cmbVs!-$;Boy39NU6Vyko@3Y%?)jr#(>0-H zbphPsizm+g6K8iG^spRby#~a`p4KXmIOhRHp2cgti~WiQD~ytRSD&SOEZoPRnAgSz zjJPC4A&w_?pOtuwQ4VSs2eZ@>EP>8hXq(B`_eSkwCoHJXF_@{BUJE-f5ph6L1UayW zc9*DS8z@UqE~DoTirX+<$Br&-8SNkA=lw&Vx_c|3^&E2`L7)~T9nwSSzcKL}V$JJ_ z{Wm;LYCHMx9E8a}mjU|wari6$iY8{-%#NFaP<$vpS0SaC_ zm~M_at7-xEVv0H|`+3VA;q1?wXTXD!oVP>qoTQ5ofvP0vcdBEebDzq!2u{r9FK3!_ zT2rXc3#<(&VE;XOFeB&Ty(`0;SfQ?&*b949XHW*r$w2p&3K;VQ=s@Jpvh^;uSFh+K zUg93Ga@Q+T8N5u&$AKH){Ctqq1Cz&nW#Kb`L2p`Jc`$pR<9M|^oA9Q-UOpS-!0-44 z*3$yObDs9nx?U^8PcgnD-EA(7d8ElMXeoL{RV!yKxL*W^$^x^rsqgjfd!Jz<5ZddY z*mvAb{*ujO)#29tV9TYNsO~meA_Ru!oX=;6Z(R;KQ5yGZb~E1%VzYS|*`DtOBYuu& z_lAU?eg)IMPhAh5^r7E4(cFV>tA0CFzmHE2$F2`WncvXSS(~q_9e;lB z6>a(`H5oQs*keEgG=D#E7y>)gU6)~Lo;R9YDLUB*#A!ZT3Hy#Haez}#CL z4QW9AOB)Jx0u-z~cz^_^Qz0u&896PR*B_@y^%koO} z{h}zWjGab%H|S`N+AFK(W1t`SnmF5AWPE-WE^P_Eld`aj4S%fNXO?vb%vrjrgT0$x z%=a05SHTX_vCtKa^gP1<;|qGcGE{Xx$Nk_rOoA+>TZ@I}(T(Q!|FMJM{|pw>ozt7pP_P_k(G!U7os7GIA`q=L z$L1#ZJaknel<~oHk@>S)HxOZO<30U`KO4ePAY{W}Sj3GsY_H5hT}r)!8zT$~zR@bD zX?b|oza3^ooS7PR|4?EYe(YzpIQaD&ey!6(l5oOS>@h?1SmZn$r4#O#sAI@}6ts6Q zTJ)&&u~;Q^JBxh5^+Zr6eWz@M!^#WmAyK_H($-9v{1JE^+y|PE&5Kj)(cl5D=qfkb zwj0@qm3yznuB%+h zv89>ubmyA(uV0uDvIb$6at}H7(!bOTLq*>W*f)7SN-}@EZ-o7BF+Z#G8vW_&N2r4A zp{D53ALlZtt7wk)rWEs1@Q`yv|E(PdtdDdySlG6lkL)<&PmDzs+I9bZp`mqyfn|Y} z5!IB-IM66pB#yy{Vo?JpA6ZT*nkWu^V|Iwu;!%?mO41g#P g+IC2T-LnVE3_`0$T^cX*4a_I3&F#$^O}&!-2f_idM*si- literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/app_usage@3x.png b/QuickLocation/Assets.xcassets/MemberVipRequired/app_usage.imageset/app_usage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f92deb5f6b8ead4cbaeed0f353914cac95b6fa GIT binary patch literal 59730 zcmZ^KX&_YZ`~GZa%!aYej3tI-U&fN9$V?$yjHR+S)+lKziBPkUt!0v;D5He5808~t zW`rba5~0K>m5Ru|&)@gu@5TSTI_G|t`<&;wp6j~LbDxt*b>AzAQbK`1AW3H@doK_O zh6aJa8wlv8rJH>w0|bIBQr&zU#Q*o$Ed9TR|L@ht#>V>E`eyOQ|Eg@PZ(jfJ5bK&d zfF5tGZ<^QF*EZJH*Ed!-PsHNY&AMxAo7TnuHCn9^TZ`8=mjBmyO}x4~zb0N5|5_KX zEw8UHudU6ku8KD{rdQS%Hcyt<#eY}U#7isU<<*V#rM0yc@x+FBMZD=iyfC}EzOc4F zxx86#YDv7f*_U{ILA<^+CH}J@o*Q2h&#a37EUiqhtW1k1#VcRM^J{D3+25Ov*QUg) z8{(-I@%qfVcy&fRy(a!AUj6e={8#*M`G`>ba(4CS`ug0a@u&T<-VO2W>fep^*)?(N z(jvWoZPV4CjrEz0jj!u#Q|q(M{}${1F8y8Em{{4ETwUy#Tm84X);+&^^3&?SwMFs2 z)wnM!t8q|Y0tHW!ntEcoQI|5{@} z_2cueCucs-E-u!pXf=sfn^etqxz9gSI>X2qE0Fp3gz#ZnEPhFxEXQ^J6@Qu)Z*36& zDwe;vJ~j69$C|+E@w3{=e}9^Pi-$(P<=iYPd(3lc6Ymc`dOrQiyN~aKqfWW*5AEoF zH@7aj`%PT^L)<&~Nv~dfb$EkYRuS+<{8juU_6%cfz-r_7$)WE9=ljLYV(Rmz<{mNo zWoP^Pbj|v_aD6gwdZVXR9PAwwox!pHbz~lE8%*-a%72>?yz1LS4 zmS#XJ(-VKkRo;#4i?6y^urd*Jczy%~`abV$Pw`3kG*KXky+@LFaCVVB*>;T=*eIY;SmlgJVU}x|PD;24R3nkZb zursG}+~Xw|ChELv&y-xg$NBlFHtK%wAJA7L>W=41*s>4rzuI&D9<@KPo9 zg!J<7kX*rw;v3BGak2*xbqB5maVr;9u-avi^fCw?{E)%9`G$taKo7ySPe`Xeyz>=u z{jis>st+$6S$x=@rhqlwG7cfg(p?gAnGTV4O1~gM1?0j|KiX&w153-iBv8k}ah{*a zSLn?8$ex4Xc!BHB4E`~&`mCdK|-JKH^ca8YJ_!^oOv@3ZCTr3&^j{HKf ze+i19F`d=FLV^nKx9u1Fcn&<@>$2OzAtnr4Bs=t$f6{1m2Vs3`J5v-JL+>tkC9VAaN^~SVY-mrR^$I%~a4Qo%&3|~s*YKBKtOIR_=O+}YSI4b_9}>DsW)9I_xzdR_(AY7 za*fL>d0!rL+ZzGE(;I)n>W)D}G`Nx-kqTB3XJghk@dvzWPm%8S$^#DSZHM zqulWb6&Pi7aDP}i!JW%duwABE22y!bkZHaTCWZWQuk5Oxx-9%gqzhS*i*D3oAO#yo z3$b_B(n9&554XwsoIcT(2T=sru*PbH@F#1i5>kl0tLMu@3!!EMj9o;1a6QoontU!J zg0pJGf7813ln>VPEk#Gpg6cPmAA;(+NiK*tpf|)1K}J+R9*RcJFpxTGag?<)7wm^T ze%#pxLxo2_!kDHRQQL%id?dI?<*hF;YN&piyx}@L3{hr_I*F2blwv-RM^=~%2bXip z&^3dwLivs?dJtpctM~3&jL{V%;onmw8+uL>`w#;_zyc_Rd;k(hiE&|&_@;C)hZ=`h~dukQ2(HoZUpyjvp!Ejn&D^^#N#PE>0D zOsIYKBan0e9ve+xk7vFeTR+Zasd*r-zk!UimiIF>$O>*X%woxoXQcKi$cGNv;!e|T zC3i6HXB0CQ3OT>pfjUby5rd(Ja6<@zH#doA*R)qf-@dUeh^}m9==t**`fO;U>G%!i zS`H<+fgCX@;rLI_3O0pxIev&IWNTQh-OH@!QF&JGGVQ|DCKr9bk~zl8sLiFlU9rFg~F;h=HZBGg#&ORd*^>U}ZR8x&_KQvzydF1665( zkQXz&fhe{YX_c5#d;7t$>`O+BQw{@aE1l#rrs!NsyZ}!HXAqyDE*cU10dFd}mKIhE zIz~z>%29+A&T5A96U)#;`s_-7coZ~OkarMoaDxl+RbZfo6DDR>OAR_`$4?iVB|S+#wAFDOOd zV20kHoTWP}?GQD70d9K2Z&ebZ{U=yY1xE}6r+;lo-32`aUBU8DT}HJf$ZL-b5z5#U%P>Ao(b zWR*=$<`l(ZbHREc@dBSw+naY(-!5(&H$qHE9}kLPSS0xJ+PrR(xel}~SQS0txDjyz zfl#vYOjMxsMSkNZNBp7H2vSAfX(Gry^xAWS;j^*+^2a~HT}N5h4N;GvkP1){Ea;pm z7pX;qFwMcWAf3a?n&2YRo*>?Snah>8S*E-^aH-&k;G-JUlL2L20DJl32V`5jU~vnp zdc*KtYF*D-KEITsG0?EC3CQ0ZCa4qicmI)?=@Z?%^yQZJ6E|E&7#zt-Rv@MJgUDQU z)$BU70A1*qe^A19S=xafnSth^jq+TSW*=6$%QRos zM!h_UV=`QZ*_Cfx$c>ri-?)Ulh%8RaV)38wCs<$l+~`Wzn@VTy1(H6~ZcVq2A7$UA zIpXPmM-9OQ9X|vN03sFxHLgWgC}ic4{kb^@gZlSprzlVq zBR1O_Map58b@@gekO=x818BEx!v_t<;}ACmd4oUk6x?f(Su2ymDExhmL*CPb&+DPs zT)A?>!l?_WD~idY?+8#Tbk9Y@gg~Q?jp@>xq&*Uo=Cxr7Vz4SPp@PesL~AJ0SPU2u z@%7TQ9?MbUI$KSa!vv*@c80nM;E8t%C9TpPk99|21K^JMa$WUCa;v$})gJzVVuhOS z!^)G?u|C4Bi12^j+ilRcW@EOEEq?kA7bTm+ydw)c;=(WitFof(JgB6ts9dSo zi|JeLp+tSyIfY3UI0M2V7b+U!a=84Vd)*=vIEkx$A_2qb6;Hk_}|t-qLn2uybXL?DG`zj zp8J{e`@QCA#j!+|sR%>?>|Ii~&Y6glKLj;jW}tTOCz~=$kAc+G70p$o(s^iD@SXa|PNIVXqMZZYI3JiA zLx)Clu|_=GqsU$VsULk}p%@1a*_CmTrRvNGqN(4-v=~v>u(dHHYsHC)O>$8U$5*TN zhJC-iA1;K;!aa$|1C-JRMj%ji#bCyTrt@DqyCi}=CF!BG2h4>wNOqnyS9E&?J01r8 z8`crYop^bJ>}(8uQ~364C+IUnaEISuJ{Ql-vl)YYjiZ-{EH~qjIm+Rb@f<TJtN$GEYX?)#KuX`$;@Y0B^WXe_9a-)CiQW__mZyh!O zqomtYi`2_Q_8`LBZm^)p5}Zv;_Zn^Ic|PzmO_wIMVYu}U zdArb=UO})Y3b#(z7~mZe{UxNpx%@?xY0m{9Fz+D@x#2qOt$NunJIm*^bE4~gPn>KBxrCe@0p6m#b4;X{7xKa(*Q zBfDA4$&q_CHy%Ll)7k%SK4*=RbQ0~Ds-Pwmd;Mj;-0Kef5%@XD@az+s*NGmis!F`u zQGbdTOMMFncID*umj!i!6EuX8@gPJ^qN?9f3jVG^0h3N)u)MGF$E*m2s~<6%Pn2Qi z<8!R>-INNvTiNNyL@j3Q5zb|u=_n&pE3>4N);y4N7{fkTQ4wd;zXkS@mVj(LlgDC? zI!yafGr?N0LX+*#Bvc&x>iO5CUQ{hUSKR;Fp1GSI`{4|NcWkF6OND?hOAJA| zE3j?Q7xEY;-}*c?#djY30m*Ev)ki1xd;(%gbe6hPWTlry(!PJs}R_dTZLq z#v&`E)Y4f>?-CJkN_fx1vBoboqwmz3Cx|{Cdd;yyXtpq{kNaZ|F_@_qN?}SJ z*{op9%9m6Z#9N)y-$g2(H12(dp;hCQ*_MPuH&YSOQoiiY`izl;`XuN>xI5I^G1F1_ z7v*w}yASt>Xrx^|dVZw=R{5>Dh z^?skOIrAYU+03S=oBViJQM6oTVC5Y^%#1l;3Ljid`qdzLO_rFsdZ@@i^1>^S^->w2 zp=5<+NzEk*d}f}`UCXTS;{4+4>0iRwJTqzH4sJR2LG=C_2*m>quJR$7a!hmH>md)P zrawA=KDj=aUz)In`2`cWSA^0q=QH2CQi`GnU0`09;N!=z2Cd%6DCipoC zUMZpU)XC>2_F-`hW)!2^s$OZRW;b)}w+o5>x|ewBjL9-{I{+Y&b2y?px~H2ayDwVb zN(SlHNg|v7Nxw*$Qgx3apO;`nPnz$+mINi}i|f@GCq2!MHsZszQ!c|{^4E#`1XDpq>z+yEDNAYy$uU%kZp^=@8Ft8+ zhP29Zct!zp`k>@5e=8S3LKaT+~}Ei5H=rb3;!k$??q>s6OxjcPE>cW*WOK4t%VwZ z;a2>?$11hegaho;`eBAr2K0$jeXrNoQ{31-+o|SkfiBra*C|Z+01l&kf=I(ppmJrq z_Q6{jHP$ZHj0XgSCkzpE<%Y&|~)G0M)X^udK_v!S~ zCZ+%mnIgc-<`SpBz-OThK;EYAxyJ|NVAAu^#8-3rP*2SO9rhxk?mVR6l0(uCafCXvy~CV9vF?bEw}7(w*C; z^%>s|k(mJaN@QBP@llm@KciTD)6nYfKN)^~D#!C#r616o zwzKcw8DC4f{ET6)!w0>Nf;Y0cWn3W(f*F8ZAg=5&T5;}!;L~8xd1wpS($y(|0ZS4P z*eV(GtWNQ(ojs_|QVCCqMg*M<#*(Cnmt?>ahmW<_o9*)zkq01l2#O@jH6s)MvQ@d1 zb~lY*U|c-0O=t-XwOQu}56o z#W4HrmACb64^RbR_uNKV z#m+l7?zOUWk6?Yx5m%5qzZxQ(ITygqs5u_R14s z8DyQNmh^`b?#wkpF~ciF@CzZ$RZ3lu>)d#xZy>}VazKD?9}WL1n$~Qk#|QgUDU<=G za_+T=#HGm}*ZXdrq+4kr!ys!j5HRKlx@Dk=eD?u>luvbKda>f)!>p~=#>k9d;r4E> zKFSJB$|N{#Mt~;Zd&S&cPGEm*8gnu4Q((o|3+g?}4gf^i1{}>!S~ME&4dqZJwW7g? z1CAK;9l1r=9$le}F!s4E;*;$ugoNAf&(}cNlztcT7tw)5+*^chA2Aht+sfql=~PcD z7DXimn-JMWCB8J zf{`57vz&?5S&71?gFhNAc@RvfsX8WJ(*imedhs`~mRU04L*@Q~g&;MDkYht(QYU3< zwQG+MlMuGegnY9AA%M2p1Wxgo=%YrO`_z$cAkOvOU}!ecr;Ir-lX=jTo7l6#hU2$h8NQ?p zqxDQ*Niao68GW=NlTq>(;6Gdxk*^s_r3g0GSKk;!Ei0Z2xergc?x_M;1`5HQGmG~f z3MAe&-@e2r8tkSmQ==(&;iJKv9cnNGDwU&0Y0#RxYp`vhM785-NW-C%gCQgL81D9h z+ZPQxo*Jo9F)9*N$@Ufz83kWk`RGlJ0DJN5JkVSC9cYHY=qUL%5Q6F?Mp@WBX-wEi ze*dHG_aG7OsbY`ce6~^8S;0c<#F(ZRRuwxZO9Y-?6J0{azUKCq?YTu!4|>n|rpq7< zm3pfdK_9^_b)37&Ue4gXRR>7Um`+^|7q)6`c4q2Jlj{Mp^K_`>v;ozVC>wq#@6M@K z_WkdX&-^L`gZ7fLiwf6qsn90kYj8Dj#wd0CaqILBN-ET9n-y#*&GG&j-GyXS!ftN( z6THs}{^8E?7K%K4|3PBAKM9b}r7^H1;0161{PxQ!W#xjxOS5Z0pOP@hG7w$%)C<+y|WIsPazi-7vH?7sWOOs6;CT@!B%oVSu{HGg~SVT)gci3e}0V>B3mp%j&R(TVs0>`YE$=yEdPdy_ZSQNWE5FG%E}S@QJZ zZs|Z6)Yr&KNc6?X;~4PHC_}y>3;>+JQFdO1pllPpSwTiT710+&GUnPX#9`JgN2^549L|2YAm5FW(9OF|*r_&G2&=)> zf(5D@8AN>`js$cu{{W8|14JDs%jrC9(RE{`auWG}u_Y|CO5TYlPg9cA-30S-N%$cH zxXSZ-A|XFEM7&Yv%aF|gT(#1UkgueDk4%N<>q+MBX^EAaM137IM0j&*&U3HxJvV2z z6{;w=)LL~sdh8t{nfl~b`af=%H2wl@H<=820wPswS^IMqhl)Rl6%Ma2Vkv$nK&X?LT|dKGel%UsTnuZzL=&xF*DEH=-sRp*IrQ3ukbi|a*11O#UI>Cm zAYl|;SUU^;eW`tAV)dZ>2;>(~WY-*tu~4#z5g_1?_sCX*j(c5j zcp0jCF0kOI0TK!AvvoAvs`n)R#=-8Iuk%FUAA$0z`A6Jl~K0Es|)KKt1m)+WlmOuGK!jpa4374o5$H{;E&Z{2ZhWivkKYQJpx+`AwjC zp<9_Mkl9o-)^&am!$3K!?ev~S1C2Oa$yDg`R6;8;`KI8;BFjp;5C%qBMLs4zXPl9@ zj;~`Rfxq`XdVOIIk)@2AI5jUW3tmxu)hA2eG4c_I>wvyy*!%j~rtAoYPNhG1M!w4< z>obR0d>ku>)oes5_`@hUI04L0Mf)(g`cTMm^&ZdLZuVHzj#xJ*0S#rq2*&2gqb^VX zcR`5G`j6&|Q8j_=wZ&X`_ib}|48-M~H_Gplruh0h2}I%Q>gciO$ua0S?6@H!(2uiQ zu-z6Ibr;3UjB%yUf#7LALD8DqMbWR?$^=1qg_TO-ftwL!@BGWhQ-G&dt|$HPVxIAz zpA44SZm<#F3VA^v-t0c@Ga4egbIp*9YD^9c+Z5JRW*Hc6D6;qCJ6Dk@%pOQC$dF3K z`kTk-2Y^TN5yvwxH!-9}z%R_4pOF6wuT26T=viE`M~_0Hq$Z2}(zf51{@W)L(Afm-h%*!!##@jv z;WL0-8MOQNe}&wjLI>MC>?J`tmgN5CrK;bN72oxltF& zN!%||PvDqH3`gwUhR#sOjLSczoe7f1>6``o)BmCmzbq3Cz#l8W$ddsZ8FRiv-d;)8 zXPWT3LA#aAI}NNHWKc1??=zm&KYhx3N}Z;C-x7wE3Sj&*;N}L94_EWQAL7v-wXygc zf{}Y7(=GPkl;^f9o--05qCUvbUYeBE%txRH-B`T&rg4%QNGXxHh&=5Imk1*b1Qk8@ zGv;qe9b#!KJD}XBFJ+$I%A!vH=yt84&8BX~{Lr%({im0Dg{&5g*uY6J^G>0&MaWKE zsU5W4av$uDQsHvr97P_fl{*Vj=*?YeiONg+JqdhqR=Y3fJt7EkWF-n`QJ|?a?skM5 zd*Ld>TmA&L0`^n~6UWWY8C1}%Rmytfm*KQ!hXY|eG`@xkSE+Yi!N+}%v0WUR`Y~KE zJKT`c)E@aF?}faK!oG9oehx3n))f%8tEcK_7{k`m{`^kzd4Qqn(vaia1f>M|>N))V z>5Kg5IuNKiREs-FCvnrY!FO~PG+H5l(wQEPQl1RA#3rH}_++t3LS2L=*TzSl13Y4u z0|OqtIF)hrVkqXfD*UOc6Z#f|-^+5$V0|-k<|~b}XV;>$7 zvz2MUU7URlO9vLCD{?2F4@m>r(gep`!9|71>6HOxp~4}q1MO+yJuxYVvLDsroKQ>abz^&TS@?Hf zxT-dGM^0o-7-cOfF(9{JE9+wb(`O-+@r71?DCK>`%P1rRZ2RITd&7dk@Nha5Eu30B zKM^45zjn#l@buFrnnDvuiB2KpQ$jcp)(D1Gfc(~(B%{gB|%aH_EZN zJVUHJ9RzkvUAH?k&*9xODVHG8)%h7BZ}JKCd_Ijn;Y|C(^tZKt;>e7VKxfAp`0S&i z-SjGN0;AG~I&PFWU94HlF)v076kmk_NRkLv(byKvmZ9w5A%{8KLtwf&cmjcRkldfL@=r zO*ql>G_xE~dA_+tYXA@=4-c?J68V8CyE%`EvJeu3RxEO*a-Z7j3KpNhY23Cyz(Rl* zNxRnd!WA1R{G=Vl6538Sht7W$yp;=9|K+{gFA{FZk!$&?afiUp<8m+9!kY2)aAWS8 z6#57lgPTjdD(%W_=m=cD1~`ou{li5w3Nj3oABrd!_QmIyxkXoBk` zomZh)5AYq`m)WEE3#=`kXwym~Dq-zJo|)3I6+&;sR*{*+X61}!hScoazw>7;J>1{D zef#la{S!p5%*V?`)mn1H{+K?9pXBt&XJ78jSwF0ay1h3eT%VzX$bcwRvyPQ1&dJO{ zd>P4yUxfI*YEl4WY6Fm=c7o6Ta|MDWu|{GWF>;<~vk%jf4cr^0*8(W)KFXxcbDSs= z_8Be3OBndI)Xn`%V>oiXj%(Z{lw4=scYIcFGxg%O-c+U39TgdL5U_i3Zi&wSoY`g- zMb}bhl`sxU>MT5oxkqvM`CkopDU{Oc&$K7+7KI0-1u$C}mv=!h2jrppzoQ<6(w(JeK^4JrQhGIGp;7^r;O;xJXQr!J6YA^Udc zJ;Qd81_Fb_k+xXLJm$NG6=UG`E>mCpZEdWrt&@9y$lv2$mGeaFWPgOTFizflM>cFK z#U;oS|NXg8l&(XU7hT&W4}8AGn%q?sW9eJG=5!b>kgibB!SeFR(x-`0z|vJ$xYb-N zB#X&sK+&i$($=EPzaEGH{JS_K$3<(<_j4evMREhimG~&h&g)qC{i8L++Ds6N0|Gj(Yp1?(<*^Tt zu>-<5u9T(zx`ILlOh0b=A|sfrn!ow23#tT;gPpj^Oc%u6kbaYRb0(GaDdob%osknd z+_khmR_=F5;$ZP%u!A*q)&vAO>%?gjDMy1XSuW#-;nq<`_k9`j7g{DkV&A8@{QSxs zWEAz*HuOn<<|Cj$fE3(dB_Lwo=m0Usykaj=T08W5B@*@#1O`;$$LfkZ4truSfDT-s z3+^WnKWx70cl$GrN?y$##d(9!R5XL~@vzcz6JwA3MS1wX&zL3ikK_f28^S&65@)!i zZ@Et6X61rcSt?f|TE0VMSCcOIYy^*%?cxE6==6edz)oD~0hZmlWyl?^GrfiTGM&7| zpN%^qJo(L&pRR_4ex=d=`gQ5RYj(m(8P7mBf8Ph*H3r66ypo@w{YRvmLB9HvepBO* z{1++L&2Ob~lbCHF@h)YH#vox-@aPxs*y`+4LWD2T0w=T4ai)hz7X0T&Jcxb-8%=w; zuZA%@;?0p39CWW)=fI}2h@w# z&WDn!ifaFa@pcZufd7gg0lB>eG7FxVJJz_1M^Y)>G@-dtIS4G1P4T$zceBCeM_#Yj z*Y_W^)6=iOB!omaCQR^L%@fCin?+MTJugkkj}%CbK&n~MRO|(s8)KIiRKnhb>%xy7 z6z=r(72debuOKeqUa8QBbSZ%;ItKacx`GG5QWwMye})V;vc}A_sue>9-V-+SC#0w& zk`Q@&C+<^{)#Q`MDM^mjwzgV0spBoI!ax-JYzn2VivN=Agrx}L3^>_rO@P*%}y^`&-=n!u*QR_|&LDVe;qsJq9X& zo{|W{pZ>mtv)@wjlC=X%xN-vKZUChbNOMe8F7#k92R!6)FrAERWG|vCa{|aX03!OL zOwBpZw{`e)r($7n>o#)iw$v$?{HrD*PjLpZw-34bQopUW=%+g^bR!5d;l`r*m-aN$ zIgjsTa`cU#99ey;XYu2;Gu`48wuZ``_z$y&d1+y{G;%TQ10Gt+&|al}NH(*Cre&C) zZ2d0-TMn4ulK*adDjQRN@7=5R_S#M5MXh({l^Rw7PIT}I&L=cWA1=%0XMs)S2nNPz zG;Zq5+otVMpH=Cndtr6)2+2o4hmMR=;F0^Z;_z)W*zk90&z}-ol6O)?P5bLl4|Pko zBj(a5u3j8XU1Dzvk|U3Ck&$1*Y7UU!G*KAeKR_U`l ze(dO*Kh0$Jk?F);pIg@+I6_;iXdZ4z9>@gO6=~-CV@ckiXZh`TXnz9z{R2;WcSw65 zU?6ySUe)g0f6}OMWAYI=)D58_3*D(!zKd&TNc)QJ=2N&TDvwWRhwn2sq8{YxvMyu< zvof41{vb?em3(Ue*4Jo>XJF{0CSze7gofNF8i0w2Gmsm!0u$1AZvT{a2{?rIwEF22 zlJ9du#}Q6H=93XT-id4}%&ZoznE1L^@pIYlr$h5}N&4rECyjP@?%kq?v=UDo?m~3j zmTo7E9i{0;H9`?T6e02CbLJ*i9Ur(eV~?`s?U_DY6NtBcz&(*KSw;zgxw|dnIk|>q z+2*R7@*VpaR5xSjJotg)#Cm6Mp~C?=uP86B{C$L5 z9uY3$Z+U6G){`AL(5Nb@3AC^r-X1t?m292tyN8N4jde_z9~j#oZ%k%@%{y|5Ch|UU zue6a-swAo8J$3h0uY&xeVdGy}N%slSpwQ+u_(JcH=Mxuw!^Am2;HY$~RKG;Vl~h zmURGYOzmGd?%cC1ihXuDy~fJgAr+k{d#q_MR%gMNKq>Sp@xmQ?uG0WHV?XvZi9 zDZ7q#=4j4!I>#83&8D|ApvkDxV}_hOLaG761KID7>HO~MOVf2CX;?M!9{^mCH)|4* zSg7BFXTROk4pK1>!pLgZRxt3GK04_FP5Q*HNR-O-LB;R!?EO_N!ldBedp)B^IOS|O z8x^r&Kxl3WMEMvmY2L%hKO?@7OTM8T&v(A7x@eK3S$vLb?lca9Yk5HvIG4!n9IO$% z2Qs1ewl|kria-;XM;r~ECX84Uz$%q2&t^CDKt9r137SGsu^o*KF1CL64ZKfc2uT#w zUvBbqJ4Ggt*@b65ul^%+%%^@U$bw|C1)rth3fB>+(xaPNmoZ=u0&+!KyOXs$%*kpy z)RI(&zDf9T=Em_(95#60I)IaWYDk8(5ov<|XjCbGnl9PVdTR^#hU8?HVAqU9Z}&~>`8>D$|~M6iL5xu!t@%pgMunwo%M6aM4-Q@aT= zIjwc$!c`52&LS!3zybTNZ5_rtA1JQpj3dyznEc$tRmMlmd9V8**^V8rh+Gx=cHu+# zDMek|$tUka)WrMV-Z6y>MO!wRmr@P;@SH#5X|F$k2@u^U0eKH#YO8}}GBb0@4pp>Y z1wB?s`_p{h@9BD5U`+1|XQgmoA=-~&AAr3=sp9}OIGbwM^icbR>k$I|7~K}g&G%6f zDhOmgq`tKy7qXT4jSouC{J}rKE{vq#1u>xFV)$OkZ056IZWdV9c~g20Kw73u7grxl znEo0??jv3lw4A^fvlwQV^DB7qp(eb7tc!yA01%2uxdEsR2Ei=Ir}%ATUyg&ItQR$& zS~heYqDv8io%nY4ptN^765Y303~H3ceRxvt#Us2U&k4_By~x_s&2^xL9h%WI6xq&# z;5-_N5Y8Y5ygms==V%`OH7%;@*l4wA;aw|uFOlhH9DO5-Op>p?Pb2D3rJpN-*b^op z^qTfxJulVp({K7NWc;`FB65nZvKi^Y08iYK983Jkr4m@Q`&6>07ZME)1*qvMog88o z#EE>H?-4X2vC7bK@*)Y7-iN+tJo`IR%s`QxnK_KNaXlgM@xA^u6RuCy7Xwm$Dd1!Q z6f1%c;)ld}^|MLG9%8;N9g=x$82d%9Nyj}e+W5fnxER*y{o`p;>7=yx${})9PL!w< z_^@HXVDH%w%?=~^R)S%qlhdu#A9-d5*nU}mef{7B^|<|1n{>VET^nrXDWEx z{j9dmG;yC?{k51_v{*RXnOzOP`Gj5?$lF3Ug)n_-n}2^Gigp^daoSn}S|5bmM(x5q z0Ns5d(@{;{%YO2DGwmB&!1rOClFynmtHD&GHLtSibi9=wy#X;LYl;WK*!l4S$GX@C z&}+Utc*+X%B4_jh@$gNNMw8cY#dnO{SmPb4uRxd}UesG0FDRoJ3BA*8 z0~vi8#^(-a(0=rq{3Rk3rf-3ZQy+eUJ&zrNd=*{?YqP7WM2A|RACjmHJ!8f)M90{E zZ7Kb&6@{Nu!@$QO>X53fcpW(d4g6SVo6r5%@6ho<6C6Qz6cT?_0HWRFCtWaQ_F7JIy6U=tf08&jjmm_*DX zB6*9SJwBNdAantD1@Q@Z>v7`X!Cwlo4HwY*XI~}|=sA3IrDCB5R8bt4fV2&fcGr_G*K5|4Op!wi~Q(Y*hOjOgc{UiK#gh3Ghggv;Zj z5KheaYZlMQDV7hrfljzZESNjB_t=An=!(X2TjK{Gj5lhnF6BpXJQggxRSf}q=#R#y z467e_C)n-n5TiT0AK>y$Gh8<0@Tsp(3rwy>eFok%zbN<5T5#EVw*Wooa&IG$*JM!Z z`fC$6oI*>LQ>cy1UjbSBht28C9Lg14_RpzCcRuv5`ytR1sz;oP=(xK?=rtDjlupnz z^$ebfBYljcOa+1}%H=rd-Ja=i13U*Qf~2F?f8EG%^SgQsaf^=blx}NU`;eDemRXSC zYI$T!x5H_E9ofi;>qC5QVU{`xd35hoAo5KDzzY7(esIVrItJl6evzw43^#oQDj3FB9|ir6DGc5w-`>v2Jw%Mt>B? z-1^LYDfqh}3^K_|m-xk!*d`4w%btGv3(^Wns%O0RAq}a_Q8my+ywBbi&sxS=@*I;kByJV$|&wn)y$9kNW)PZ%U@u8THT7Lrh^PAN54MMA>^_&*GfBBoG z{t9@1JK`$xoW1M&=&ionb_?UcF0e=Ds3{0(^vTVM_)P2h!;-cZtsv@ILRzP(;yBPndqD} zjcZ?W!n502Y`62?JC_84PRx}MgQyP?)7H)=56S~Y@Bf6hc-}0=;8RQ7e?FqX{k9sH zBUvu@oz;SMGR{AEd~#Q17+AITO2?s}Z5CTh@qB>Xz?jyTg-=4x(u1&Hh6e{PJ8Z!( z1$`KQDDs_-5E}`HQqtVLet4cL+6Ph|y3(Wn%~ZkaJ#8h`q^rHXXzz6_7Q^e{YG2lz zyZm!Y*Zq5psmg@>z-fCYd`9;i=-3T(qvZ3l+U**HP30fuMBS8xMa}zO2kN<2J%W|N zMit(JKqLH>SEsgn)G@~20Gd#(JIB2*oIX;Nd~){Qm0eGbPM+NVhjCDzD5axJkR2ZZ zWYrWgAAvnDj6fd;5wVx1BaHC|fBFD*KZ~V#g$)I}>gLcBht@td*XucjK`q;N!Uw03 zZffxD^RJGl%Q9D4L8@GH;pfS+dlfFcjWaKSrts;JdRoUO5#3FT2Y)co^;+EgEy<<2 zS9Evjta`r_^9$T_hM0|h`$^*!K(6EZN$md)p+w=si#$y``folq@MPq8&5S@2w(ffa zZ@fi*N4%TPFBYxYodR2h8xel@10?VfShYNRXI2h=H69#JwtM-?O<`iv)4n`=Wcm4l z4@$q-(M2+L0#n3a{U>jirB60gj=Sm2ls1nVp8ag22Bg0MJZxn2@Su@E&L98dF9BE^ z>vGzKn~%!$AYSCAwC#X;pa_DWi$Nu@=3VYDbeZu4D^ABN3MHe$`e0qHW1OLU+=0XZQ&*Kg1H+hv~6opXem;{=-NFUs4 zB2N7B8gxCN9D(D513A%8T)h?=a{hGgNYpqrt7W<9j_@ijRjT}Ck)I}+;H`y-7wC?% zmTNFL1H8e$(|%GmI{2uSc<_#_u7kE=f-CC{pqRZH&5xpF=ge*o1Pq?fXixYQd0Oe4 z{)=Yqfp_*q_TR^;=8B+(tuPx&7?XeHzp_t<^;MPdHZm>1=qcu5uj}P?dqzQZOf=qX zu%aqoJ8z%H^3O-lq@LaZy>-fZ_gJEVmSr*MUl=p`vcPG*@99d}_Stu$jV~OEZV8&; zDUos9H?l*6fkeE4y{My6>S>u#4UEf%iWt8&wLnHh`YvsQ^Pi6vzyEUnFY8cIcO}6d zmZYC_;=Qz6z>t#TD@uCCT6v*dZF1<{H!fq{q;IM)BiHIfWs^x8c30+qE=-IPpPax= zu(s}X!xL1o%EDcwK;C~L^s9r@x#%5k^pJa=Rqg&eH8i~qXJI9m4DS|4D$Fbo`CUhk znSuwy7-)WvPZQ%xKxLVTb?tlUtrUZofEx#GLk)3B43oX;!^NwF-J*T;r1S^!G*1Na zO_xUMKy`d;lV3*zM+`)PuuT-40S^pM#R)X~FpBRXPG$W)N2_ORcBoQb31Y0Lk4k6M zeEs)C08%zd53;TA8ckY6eZBlbsv<}e!v{pj(wDGQ1r#I{d=mUDTR`x>lo}`*e%c7T zzh$)(_Bab4*srZ0kxwqJ_KYsPU;JbRp-3_6Z_&Q~PS>|xU?UnEbmwk!edQF*+Y(XzBB*G_o816 zbhTBZLPM+BUixQN;`Y}Q@5qHey@9@QGEu3AmU6UWlBK&cWfabMXBk0~%j@m6)4aB< zdE5)%5l+@3@30Ds`2O6=RC(Ca<|b!Z_F;D|<#e(!i!OiV~0R+hYG!25}6 za#1vz_EOj_aS^kZ73$D@+R`kdmX;MGocVMO{>`nFJW;Co=g2M3yYcTHI4!%k zfJ47rRed>!NidHL&ow#rV4GG#q0%hUAH*Mgxotyk#&699|H4v^oOPMGWI_+W7*cGU zt(e?eHLV0CNcHWAB=!S25S;0+rE+7O(J17IxixN#z;y9*u4_wmlJq%qtXm|ZDRnXV zNCJf$d?L&G%XPxLf#$7I$2VB!h2WkOh?MM+$e;TXQTm^!1QXF8=N||y@VEJTp9!LE zxUsI06Cv-v2&iYBN%KZ=BAHHQT`sxn4Q)ftwyv~rUr8wZS9a7@uSIlrnZuG(-0GL< z(J6Vr2g`q|2iemX%PWLg&24<8&ggUUmo`X6?d_ofk5BDH+Z z_#v1Hw6ZT9dRXYfYi3To_uzj(YkL`;+KiVHuswu@wgIg_?u4mt;^(mFQtIb|r zfUJf@CDwh4y+hS8!eM^5aFdz);;sG!L)VOP{^obYF=B zrhsOk6(XmKvklW0r4^Tj_`#S zhw1`2hR#p-`)#(x1ZZ#$(hOD$Z>%z_zrc7iPyYwfax3bw)hif3V@I=00li6pe?3ORnhZ(XSs(tU97X3hXm zdV}%g*1@p(<@4(jJtPX5=MvE#tVM)erP$#}+keBp}c<8^R4br|6cFfpo) zyI!_Gb$hcjmT}%Za=t zV^1Di9uu{?CH6x)b7uv)8o`B?yzl<^$850Mj39M@OjOkg=9DL*>r&(klYxXByJZi- z=T`>1gm7Nsn4FK#j{X!SshM7$70TGkVdmZrSR6jCD^asxZ$!~7aUrPR*&`{IQnto? zq43JJRdMfEWQ=IoPi2mQy3GZM?(eQAupT0ibaj!U>V%b24i;QB>G0bJ^PejFNQLt_uk+JEEJV*FkH@LaseDOYdKC zFf?eL?3@U1hB%EX+7ah9^3tdlOBhH z-}_?cTaOY6Na|K#6%m<1P^vxG6WD?`j^ty!m75$6Wso6)c?MbebSh5Y%KS~ecG%xi zpBm-&OjN*9D(VqBVe9A=@ELg)>g)zj1l!wBrPv*t+uqDoJ#of>j)om`xo9j?bmhNv z(26O|FlBwn01|~HZ%azz*2u)CogiX?!6OhIN1YhMz-xpKBa5>u=9MI?a;fpd!RJ3j z=h`ZDCF#!1BGJigK#W4>{kb#JU2M1mnZ|tGQ7%o3hqh5$lE6%}vS7v@SVIGHLU7E= zIwM~7h$G^**KOT};0D(VcY`gD)^qY|q6~r$=F#`o`lZsKDfm8M#U4tgH_kBM0OXNe zPS3VwyUyzy--m9bLL{gKL=%n!$xneaK|M9e4b_&$ycXc*%~gDYeX!m(pUXvB18`Mg zXR%o>0jo!s2L+Y9YmW1K_z!fwq~eN}Jod=_!_#B9t;J@zT>UTN`NhnJ~rJ&w}6lUp@JS+~kYk<4pZU{blTKDw~z zAqVK9NU=W6nRX7LiuW<1`1fJz;Hvw{C&MKW8Qa>XnE(I+yP)=}UB$m#*a^ zJ2ru{|3?1hSlG(91-Sc3uddCcW8Y{s@(~Fg!awCcynCtcvogG19h9eAw5(bBCIZ)B{*`BjtY=aUVIp$ldP3&*QkEb=0}x&2m_7K zj6~^aM3CdXIaiaCY7g`!s@V6@|cfeszgm%ynRl0Cjz%k(^e&k?T6oblS3q|B>U=#D`T>5tm32zrzamcqu_fhWe=;+^g0Ma?l!exuFH+1bg(c&^ zA_C``KPSSn!6lnyZYzsS6hml88TC`Csze1|~7GEkK%J7*XDo3n9c_{UJI z-|({#zktEP&(l}kKR#t_zTem^3fb`0$#NnN7k_oa8>pvW#8r@b2D*$WR706_N;)?} zBAN`Wp#DmXiTO&<(Vdv}ek_Al3)P?l z9@$PbrK`ISn9HacRn}|pLKxa{6^s4V^lbt!LaJRN2h2m8N=(-TFt7e``+<)a%vR|- z3r_I}-vy!sgD9JgCu?3vOZ?lJIgI+Z(~!*(`XC*T`NLOGzg7(aqb$$*tmzNC*O)3< z9PePpL#D*OTJYmVSBW8@o+I4@!&EZ$eDfg+6ELZiFsOPfRWe=p=KeGXc1xE57&?zK--Xx|f_pf=dxRuL2q9m5)RpG2d7rKejDWl+Babsn1 z&+%z%u+FQICyfz*>nvn3)y#>PFGf-apZ%U~U`0F$hH`D*+yt>`O!*|7yC@Pa6>{Mv z^p%->-+vOw$Sa~Hv1b^cW-_Z1jpv5nRSg35kW!F&k6q@)kzRy-C)sjyiVy7Lk#OH$ z-sQx5>JI^XPXa4Y$D<|rvcT|>7WV2Mdh{<{$184DdHdf?wNWdyQ`67g9|`cK>ng^1 zC{c9C!!0G?AAk0T=jrfz_P%Yp&97VEu1NO*_#Ln1cDXvxVTH446m&p$yUhL(C=;{$ zVm6!K47a4)_3$3-VZAR-A~Qn#=gnAh~1iqd0n`< zReeZi`u$g@7FMyV*aR7CPbwb=Z!}Ul#9zC6@Lk%dU+B`T} z3A(uAq$E~7m0ha{qKI!-Bn85l>G+@3R(VUlJAY%_ccWtH%utY4;L@?d{9Xr2<-KUR zRUOxfy+yLR+%0(6wMf3(tT!L=_fJEm#CgPbbG=gG35(j-Kl8O!2gFTULyzKf6>~sH{+wDCrJVk{x zgNRs(McBw&vKg-K-V?2r@oMMdsD1Bs^3+0m9Osz7B5|vy2*gd=ongQWMwFKlX)Za? zvx?*8N;nq1&Nc+IL>@4|^No@AI+rf1+$?!zWPirR6@AVMvwcwFU$Uo`fI~2cc38S- z3?qZ%LZ7=6FYa@qTNMd9<4@;Eh|o779O58e2**89i+iK%(OygDDLLWIMp_|#k8(9i z8#E+4t*JUJOpz!Z?K%rI?yZ5amxAG+_C6l} z=03K(A|`RrX~*aK!#y1_)wgu(36L|u^_ReRm0EN<=Ho>Q%k{}6XTi+4##oj!Ue&%T zkB+G~Pxd=un^gvSN&jr2UNRm!cAL#0EXf-VqG_b>KdgKTDAJh1@wTV7^AA9X6U0f= zKS7WdDM{3@&*!!;OSHpK+yWOO@L9X+YeCcpwQO?zN&=WihQ^t4bLeCrhn zQq=2=K01LP8glkeq6RM)yZg`A>u(PK`g;B2&ruU}^q>BaUF$QQ*EV+d%-O#)Xzz?Z zKxQj(ZgD#QB9w9V0`SZ3&%@!Sn=R5Cu4b5&RkJQpMrQJ&stf{r(P53Ft1U1kl)219 zbFdU(*(e0jPalCRF~c*P9N*3~X{uJg1>(d}Z30cR1Xp9<@I!9^=eb;zD$a5(q7T#j z2r;2(0fRb{T*i@JFnuJ8ae6Fkj^03LdDEng**{@A9PSmULOKS|%<~y>J#gJu1sXxP zDBU8P!9LjwFGlaSJ$blo>O;);`TiTYlO9e*?QgC`TEL=bL(U#GOCAP(jBB1<6BK|F z@c)>Q*nNUr@b=}f^UY{so6q%LDeNZ?wOQyB9|Im8fkn2FA+ojVX+RD*%>Cb<7~CxI zAb!s1>EC=aQ3`F7agVS4{0s67)^wbtnM$rR%S@@%`z_+>P8-Ysz5Rsbc!GaOAVjcv z&dBprE97*oJRV0B*jCOEAR}_XY5@sM__Ji!tjPp2ud9v)(m%uITDiyi@zX$Kow|@^ zl_m8Gw^``&O!4lR(8lz%>%%Hc)8t^z*~3o*DmP%^m`i^KtGQ}(P;&{$0~kG=G@YvC z78?Pj(7qx867?g^zMFm}Q}1=b?b6f|mZ-!tmo502Tkc7Rck=(oTJJL> z+O#j6n8Sa#{n6Se`djG+?A|W3Q{xzEmNm~8@;8t|^;Dk-pJxYq9&m!)#^ZXPLNqJD z*lUA9P=DC+#@bi@w)hdaN zIT2_n!QTi+U+WDTqXk?|AVR$dBVvVLVM2*~4Op}8z*BsE8Fqs?TeQM-R2x&ba=}&_ z*fWR$5JJg68G`Ssxh@^qgD5;Z(e7bR67(hF>=C3nGW(kIsHWGCtR0Kl2Tx)*2haXp zeDGvo3&VlGx!(5B12cPRe85urY<=gqhu12RyUn)cVlChPsd>Mj<^z#We+`Hkq6XvY zKCEwbwYB}aHMsD+VsYYL1Zwo-?#)or=~nQJ98TZxFceqIqYx$f0EDYr(gCOw4Pg;V zR8jx$XH%}`W2LqV33ZX-f&B?rWwhdMBq|PKc1L7YqUAoGmXgu!q?NUdRr$w;_Nko> zy%*u5^IoCLCnf)*F0Ohu3UUP>qxAA9)C=m!S$J4kX@EZ;2rF7r@Hm=JFO4)yfO`30 zZ==Ppt4P&;_06ipMBCPIx4xO+C{jW<(V}KQj(2_=OzF9;V9IuOw8G_4xyk}lT1W%5 zi<JXn z2zSJ%ZH8LCKuARuatM8pe!66`9U|x+MBl~dE0Zy|)vYdOS`;g&n#>)36t6f2Y@9S= z1FKSzx-FHmh<_R%kt5%~SSp8o|GsT_>b;=gi8Fb^$ID&T*OP;x_5{eu|AA{=)~o0% zRtztLeIW40*k8NZ?`wuR5rs&F%s8vUDw&zV68f$pks5hP$TD9do~bSy0I%nqp^{m% z-Gd|eEEAE|Crc7<)Yt;MeThJejKr#_7}7zt0xvLuSCZP+P2Nwc#Yo0(DEhJyb8%No zRU^O2*u+IjY!f2$@EsUe73356d8uS{7Aih)P*mcc&GUZl4>j*?gUsdSWE za!RbUkA9Lsc7VH;2dZl#;-Kz`E_Npt{Mhcv@SmgVTU!QI1x!x$pVf;fhT>L5-buTV zfEAr#xn@6dJe@O>s9J*nUXkvs(`PXh<~xHr3hIvPu`+}UKv zF6sz`2GL|Ca<{3c(H2k~5wX__akklrkSq)wP>vH)S#(rR#*j~H$X9H*%TNFAUR^Cu zlei*Y%GAE?<0S)}a%L7{{_Z@yCgdtMZA^aIbN{4jVR<00Zl<`lK+38pJ(N+;Pq{<2 zfAmZTha=U+xZhYv^s-ER49vqJ6Ev1W8AC##U+s8iz0u0tPg8gu673qZ3O30dJ44fu z0$*1(>M+h&!*v+7ig;11(JZVErvo#K?61?-z;UPB4+7GW1f&h())At{Z4uc4*ZQ5K z7n{7|0=Bl+rhahZ6n4ZaNtin+wDsH3|Bb>?1Jue}&_Vbl_gCTgWw*?p;eGE=b`n0c z_4z-ZKWTfr0Og+(6z*r{p#_3bB({OAg{5JuoM@q}m4sEdoJR(1l(Din1O@*ORr2fD z-&c1_cWhJ+9F42k6Nkk`pQfC+gT9X+bY+uSIMElsZ>j`NYz&w`|7u3qFeFQz+hrGbn5~D(kjsp6e z7bexPxQ8(NN9btTo+sE0(0m2{_=S4>MlloAj3gd&LFh6N8rwN3a9l^cV~E>03Zl9# zg%}qlG##A)B=AxJbsvDYuh#EM-4A7G3m8g4@`%^vBM2VtsSJw}v(wkrx_$=t13$zh z&mwFQthDJy?pBY+y&3vn+F&EkpSHc;pD-7h2PTJ;cD%zmsrI%ApRM|K(rc6 z75FZ#LR8@TaS+<)W$_YyR6>39=xyk|OHt!xFb587ltc940s@&n&xh=Ok^=^h%f7F43!bz8;Xp-P=tvqlzp^dJNqxXiA4yA;1 zcFzEKAL-fSEy&1G3;ALphzi|tq?HA=2YUAHTJ&Vz55(4{YE|CP)4)!5c%tLT2vspE zb#k8yd0Qr(ZUeaiR>Krk)+}a#3Qp<$_mniWbuHM%-_{@q0m>eq>$?*`Q?hK)iTF)7 zzp7Kn@81U}4r2z``Xaue&Jy5q;k&VeGnd?ASgjwgu=@v0z(r=UUpJ76X6jD7j|Dgo ztE+He89#}5t!+9r`-Xce18rTVQAU9%k%`CUb=%ktoHV0HaGh${b0&BkZcit_hJri+ zCNzh?n&{%=#um4!#0%l1H-E^)xj4p4z^!O%!vnw#TG7`n;r7th9|_5wE?NSr0+Z~Q z2$dwHvOri^O>_iq z_70xvFQI&2%}m;8Cm1)$zKP_JS?fkOeW*XgVH7FuAG9V<;tcm=x0g5%x>?G+igE$|zs5UVRfYPyL^N7O^Zs4=`RmU8_* z^X)a=m#=?j^&hQ_@!vg{clflsJPvuX6r4WC2;-b6;0{O>&~azs%tugP+R=W9-$5ax zE*7eq*&7aJfnL54eyrc#4prwv?_5s{K1aA7U?1()K85fS_{HWm38Y}c+`?CWe{_$^9q;i$l#Ls(3 zwq@4;H<^9$W!1yi@XdwwH|xwk*ZPpE6adSJhrL4Vj@4gcbH)jk8n*?f-JVc2syl40 zpAX_)l`0&{1S((?_?MRW(|yE8m`-Mm3uGUB9FYt(7Syj)QV`c}aB%XAvrN_cNDjO6 ztVlAN3tMEWw^=y+`TbMwMjs_9-nUEl7(!HN!~miq5s)?$Z7ZStHc-u7JTP$3y*;UL z?2(*V%+hQ5Jj@rCKCkuA{e@FCb9;k1sk&v(^e8aWiDf#` z6*a0S_R(fAq859TEPygEq2^kIeE((p&`S%2$6;dK%|}O zL~=5Ibx%He2mJSoyw^}z!QbuO>H~|~>6kySKdjdjZ9NM4vNwX{lmZb`$B|DFuoA0D z5Ovs50l8UY{0JR$<#5eK7`BwDlEz|6Nn1W;k)F~+tu?8-_IPQy1Hbek#iO5=H8Q3P zPUzBtIZ7?8dy+C2Z!ZLOlVOStkoYNlnI)FXOx!T2-8BffTGbPXvP3_ammbHj zcr%Pnrhk2H!=YxS?i0NbL3;Bk7)lFf97jC#$WYY9^*j-#NVEChc0ta6&yt;Bl9+^l zuoE?o5eCI6^ZfN6`uKaqJ^)d(UKkINuMeuGfKv@rwGgNiD>Z)SI6NN4!j?tzS(h!h z{&+Ac552_fJq1ODa9&s5B17IitipI$zeg(`k;rP!WfbW{m3ez-1o;21nwUdM^$xkB zoA(4PkbDP_k0+xLm5H3vnxFuimgwOSPMoFY_j*nvR#xsHxg@!w!J{rvxeL(l2JWN= zCe859K6Z&dF|z2?FHxzAORNtbK{QoamoadI@DU@N_9$){#)o z9}`4lZRFk)z{kI^e~*rpSob)p)ugG)u_9>1pWNc9BDO@Ot;+?_&IHwk{D5jJ)SA*NLT2trDd6{!*HVH= z$UyT6)#v?Rf9T@4Y{M>ZXdFXJl!o*Jj{_Sq58oV6KGKf8f*-%A#Vh?dn&L(H`Y%g1 zuTOP=y^$;UtPV`xU@}rt-bb6Mspe&!J?Iz-tq?@q_4E50zwmyvxtcwzr-6=seixd} z@P>VnvhIWs`s{Gwr~oNb3xdDf8}YWE*cV$?UkOWpk9ku?NFU>Q@7yoH9U;&bpM(mh zi%hy){>iKA_LDG4>UYI`tEbRiS;3r)PllOsm-l9tScrMHcJ_^=97$AHoQ^?|>xaF_ z#4TATb@q09HALV99i9iMvWJwH#)s^fr75e@ID*#V;`0|({~ZisoK?VV`LeempCEbJ z8%rB@W9Evew4MqIEO#_IH|&EoCFVCG?czwI~U_As>fmZ=~7G z=Qv{g72{0~c&Xm9<(LE(9$)uC&?Wbp$Y4atbEUX2&bzAjz*VIXD243=k%qVk>OjpD zx+?B}1mxSS)otG^3=a9@+CLw%(Tsleiw0F4VGCyy`d-8eb*Jd6>P`Z$Npk;ne5?(J z@+dlTKhL_g5bUQuEJ5L|j@LiG2Yo18xsq9h3@2Ce(~Yx%=4FmG!} z-~*$)BH`NKBikqQz}>O0?8AAzVpl7fknFj3}{Ot&ZhO&;`)voX=&*EXNBT60fp5IVpB%`6!bne9p^K+*7Y z88XpjHZN@P3*_&SPQh(L-tqy0HSg-LkOFf9Pw9-4s=aU?#r_+aZK_1b^2ySIECSyJ zt)5Z`T39;66}+vfZB6E=UFvm-=Sr~;`O5F}_&hG)WQ9D0=FBR1@e{l9ljo6k1F_d z=jn|4Ol$j^!;??2%cn*=luCbo34=P*NmOVxb>s8JAd+BWA1h$}L<(9CH~;PT&CkKD z9&PyBqfMcjd(ywZLP!ESpS+}wV^?5rtdeO^TYNwMFk-wkiqiM!fpxC=m>2*U(M63=w&B<}YCQ`X!Kky>Q5<_F4 z5K~tlUk(iMs4bY+fR%z+kOga_w{jQihy-FMox^?w7zGeV(lDHuV=t$i^uF3xfHKE| zzj%joQYXof$w%mky>$52a#)W{2uGu+e8Dkd@lYl>ESXlz{XKG~q(B6RiCp-ZN0G}* zy@$P<=%49|%Ys(ZF}b&Qg_7=G6Shg~o%Sj!ZeC!y@O&So_IN-JHH zg|^Ni;Ac79W+}D=1gXKWNBoz%sE~|YKWrp>=)-M-TbV(_i*1Om4u>TO-;xQSYVu{U ziMmK>fH`L@gILAc14;t8C^lUs@l%z__1b0wqu{0GjwLeNiDyK?{vLBY$w%zWsE`0= zg1ZMPc!{vIFQ!}b5kMhMKD)N_$!%X;SKi@$GWEUwJtbNe{qX!1uuEaLf`a2^_s4~z zO605u{lHEr>8yuGO2Ki@-$9H!C)%jurK-i*b_Jzo7cK_`hX)7WfA~$XvWCVnEegQsPs$(&O znlTQ93C9dD53I$ot<1W}S<<_2j2E3OV4H&H{&RgVTePAeTUd^m-&qroE{AL$oALRd zNZjHx77%{pikrgz+fQsqWE`KNcCG8e;$nWO3C)44mEiN=f}eE{wBm11Rg&3wp208cXI&B_9>f=Gwh&vwo0LLbm%fCj^dYKHR!LMQ zufOnEA+kI+l&oaKdm>%d*(htQ%0D9fc=iyD8!C;@AN!~GWQW<}Ec94H1xIxbGL8ch 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 SKX4aNT`PQ6dtXpdXa5gU4afxm literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/Contents.json b/QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/Contents.json new file mode 100644 index 00000000..083fa343 --- /dev/null +++ b/QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "phone_report@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "phone_report@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/phone_report@2x.png b/QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/phone_report@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..500a39af3df53e271b86c530cdcca7f732016197 GIT binary patch literal 25203 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 Gn)-hm*=HL7 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/phone_report@3x.png b/QuickLocation/Assets.xcassets/MemberVipRequired/phone_report.imageset/phone_report@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..cfcccd21f39dc4f0e9e704d59524b878b45f5cad GIT binary patch literal 47296 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

-Z(8IM?875ZC{|2YLVr0^lZl`R(8e@n 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/Contents.json b/QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/Contents.json new file mode 100644 index 00000000..044f4fb9 --- /dev/null +++ b/QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "limited_offer@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "limited_offer@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/limited_offer@2x.png b/QuickLocation/Assets.xcassets/VipFeature/limited_offer.imageset/limited_offer@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe03d28a4ee6bd08d8531ddcace347df0b7a61a GIT binary patch literal 1647 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 literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/Contents.json b/QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/Contents.json new file mode 100644 index 00000000..ef02356a --- /dev/null +++ b/QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "narrow_button_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "narrow_button_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/narrow_button_bg@2x.png b/QuickLocation/Assets.xcassets/VipFeature/narrow_button_bg.imageset/narrow_button_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..03e861ebbf0c6736c924f52d40d03ed230388cb9 GIT binary patch literal 1124 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 blazY_-$Vq2Qjh!e00000NkvXXu0mjfwFNF@ literal 0 HcmV?d00001 diff --git a/QuickLocation/Assets.xcassets/VipFeature/wide_button_bg.imageset/wide_button_bg@3x.png b/QuickLocation/Assets.xcassets/VipFeature/wide_button_bg.imageset/wide_button_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8d7489556f6b575b9a0212ca671c249a9cec4a GIT binary patch literal 7540 zcmW+*dpy(s_ZPXeMi<*mE>URB$W+KJ3|$m+8FLGB3nNOVTyh;Y(FG~OB$v5wF3T;q zH!4!OKK9%9_jtVDuh;vJ_v^gQInQ&R=e%F<6s+Y1anKQvfPjGbrHiIE z0s=y{{O3|JA^y0h|LIHqk244%^eFF(NKDK_&2t9Xa% zcq*)2lU|-t4^I&E)P=v3Sg4Jqt$*T9Gz4KQk- zU!RsjM%WAGQv*ES4*JO4%v8tA_Jw6tV`dh$-ksak4q@O8BE>%(cH zsq&j|+R|5}Egtw=zs!tlqU*_i$0V&hu+DHiX<}>*18p2D8C%dhBsWc3JN7qxvgPFV zg&!BvrQ%-ieJvio>RIokHfjyoZ)k8oStsoXJ(}mMDK8TtoKZ139CO)hs+X2@g~~7+ z{YFnNw3=`+{Ygt*^<+jk2;{|8BYl4p#T8b{#e|PmA3b`sgxnbN?+j?Kb56_K?URev zxP+`KXE{gjw$aOBxb4gE@=KL7B}p#->c(**i~h$^u@5VQI(5fEJ<;<@p90V5_&xc^ z`TWKI{(Q7u2;CNlDM7wBn!JH?ktm?d?DLxu^GkXH=za=oF;FX9hzY&_c`(=IoQMylpxFUp`@?&TpTyQgV1ta8R>1mwx~>Tqy` zex9!9fVc38%vUi z>W2s37YPTvB!ooABEw#eJC<_N>dLRb*_VZGLQWU{DpGPh?Z#wk6w_HdvDJ34h+&F$ z9(_CTORpRcHFOXc)tSObv({QzV9U^qj(6^B*lT??0U;T}tqjG!yhl)h{2;w@E^BOLOXz=!BOkadp@)B94(@Ea2g%ep7PcDqQ72s zv@w?vCw6xw5h1`tk~O{}(Voe%dZmPVJnF!kQMWxhPE?Ek+U1(^AZ<1{)PtF);%51^ zrtn_-&YPLp^PNuUzDbOCCG_ZG`*R(28480{D-OJNhEOZ%W0%I2wJkN&gHSLd03Jp8 zE^fb9VaB7w;bxMuoRu!l1wm|05f?sKNZDtHL)B=I&R0r`bYWGeA3LGb>_Q$PoCEsD zC9uF#SLlnygv+(IP^zS6uy&icusaTDpTOUK=8_uHex5KBx1~4qcj4P(5aYs=7Kw8OYQ+ zF6H#dKl75~p*{4m^8=PIDd!(}>wPz`NRghS!_UD|vi@QVQsTTEHRYGDiDU6p01Mo) zf(@EN-G-dNuKfq}z*3uGIB@60hU!4o7m0u%HP}5T=e+JgFHCLoei@2G5>jN;BIv|d zcxj4>?1QWc><82387Fp){j$PPQa&>8!n5D@0P?oOp%T1#Dbn(>SQjcKJnOV7pUiKP_Y)|asc{KMFv4qqf1I*W{HvfVMxQf`7*D9g_yVCg=XITd1fWwy$=^6M3iI6JhTT7!BzZW}ZYr&E}W zk?z37Ki{hLlxH^OEHrhTslplf`r`-2H<*9#SX z6N1myuS6M!Ph!W2o+@KI|9n?k2m7k_mMfDWx5CRg*ms0SK2b!3Lh6W9$hlZ#Ljx?` z7h@b?#Wv`uiK7!HT&_%w6U+4_@GYK=G^4Duj?5)Js%RrkASei9EFaDZ>~!Bg!2Y;U z>$c}$+aqyOn--)Ldc6K^ksNV0$O|W{5iHtGH0bb5%~+TdI|*Vet2<;2`50f%_$JkZXZYwOlPFotlIS_)ziXvv>U}qnlOF%yWkGP z`s1C~f0{Z|#UpQzVZGk!N90%UJ_j%v&sCVT_Q$A3t6;d0#spTWi1)?^qu8e9NJL5r z9U0{O>m9>JqO*F#;EH^HkDf3Gey%fUeMSztau(kvCexdl;ZGzTTW--g(v#S_84%5~DpM7W1t zt|v9n9xzwV^<`9)Ag8D1rhQYIs9CkfrIf4G7EAa65UDczeZ4agu}IN-;fwx#UlAZk z`t>qs;eHZ8K|R4}s1(iv9bXB#)l+*Jen2b-xoh}EJ^-(WZkqn3VyT<5jdnoFu&KwZfl+xa$VKMiyDE@28Ez*It)VIdibW7V z1vv-ZMZB6?M;qIrrSAuJEo|CJ-qP}8r`13!E$f&prB*;o2GqxS6NrdTD&++C_{i*Y z>My=?+&hjP{OOT>j2zgvfCLa6cjM&vc}e^M_*jQ;YGL;2lB#-QuLmS z3y;yuVVEOQZ;=NSUh~3LThP)j#Ht)7(7#}#!SW1-bRif)GIpiZBqpHde%7E6-Rzz)D16y90b-vMXnT^91 z4}X@g2z6qh^JZZd#S4aIoQVW!}jXq)%CIiw* z9r`TSD4zH(S8bVyz^an9xa+qiBJyweU_$DV?`a7OeOp5T=hAY-*~$$Pl(*hm+$^Bf z;LUv4`Ri-UD^n$k*9d=bn{ysPg$lx@l>tCb%f^_jlB^t1kv!ElzSL{!oVL z$RF;(7;D!H6$v&O3sep~78{J!tAX5uK8tPsw;PDK*6RS2DO4zjZ*V<2Us9Zv%w<3m zPA)Q9wmui@zqSrKmQa`Cnx(l>dFjY$n9M%*#q}TCgVW=I=l1P2&R+c9`LRF7+A3pj z+8XbXrG}H<(jPw)LGdtjvqKQ~ZP}SAw-W&X%hRCQe35tt`eHl7ap%g$4+L2FR@d`j zFkp~oaFky6H(twzcKLj0C7pXW5j&Nfm4MAm8Rn z1M6n;P4qS=<-VhF<1x5Z5B5Vu*k7_<^nO68ceH`fNB3?#{&iU5j6?Dh4WGDb9XigFKoms}{~Y{dM^(M|fvNwFOKX&Z8>LeHnm^+_+b!13dmX|mpK zyPP)E>J*H61qgIoFPfq_e;SwaEBG<$J#rnT60Btczj0a(!qw@ZXZ(hY@3_4BwpZA5 z{TQ55;PI!7b#@26XA^I2P}spbTRbYr#Mh!B@U+|KLm&1&Y`XnGx_;{%6=gV(M2ji* zL=@N|<;}nN2VJ2@e3@P;8~?bh6G@ywPF|grj;AG~Sn~wLtTW*ny8#|FSVCw{iPal? zWp>-TtL4C8@ex|r9U_L@)(b_c)MvXR*r)el=H#sku&5YXjH^^Tw!OAXN%w;5*~@Zk z_hRMm(XwyS2p))_OORe?e{ctuajmtH`9LXt8m@BW+gb40|_jOw=w8&1zTp`EC$H<%gkRZc@MI8#fC2;3tQzWCy8 zPyGw!(65=vA5CM=lCIPG+z}V62~q(#S<^Wp1QY9QuSD+jBOuAG#WGo8@Nb5;NdXQt zCGxQ`2k=cWq!+6I8?sBK+e#LtPR{MMSr1+z!YQYi#hke_JK?&zX{Cpm=b1EK^!mZl zB)wqK<<6G8!1NF>aHvYy;iD2?Cql@|vzOnslW2&4svn0R-V6#T-#LS#gXvmYKL#x_ zu^|tEJimE3X!|#PYzv(`6JC=_0_HJ9_T1Jd)3XrD9Ur< zzv%4`4XYgRes9wh9O%7Bc@rks%DP==<=I%UXh&rSPF^dS7K0>-fX&|5H0D7QX$XSE za^>oCx+tB*cse+&Xz=v%OU}*Y?qIc(QkdPXv9#tb>E~7t@xqVJ1lPN}V*CSm*d+&t`c*qBz^&D8|~ZuqdZtFSUr^6m!{?8N(EQ3Xrjg zS^Ip=G(9bJ@P!-%ea_KlpCF52~2G$Vh3B{pgP!zA7~H%b$17Iq*l@!ILJO=T{g7gY7ys}FKMr83XLUQ zUw(AHVyW9lcJC*~TE&A(r?*jM4Koc)+Rl?u?U9UEnvk9Ocj&fVV{5DlW9 zA{3(tP7GuTkT`-g0FWz1kh^@E3&??!m>pw!+Q zteuB9)Ur}&+sZ%EMjC4wnHK@~p74(B1Ws_T?YpU+Ty~3Oli%lfni!kGv8_#;NEx}K zPZkVHbQ_Z4iaozSOz}fnc5@`P*lJ0%?Y1SmiWgxf2VU2+*rHNDzLWyH*+jyVr1eOP zBhW5c%2jc8N|Wd9VM`Vq4r2U0m*9Jxntu)s;?qgI+msb+-tQN=*?01`WEoyBPl=jH zYZuCCVPx3g>yV?6i`&Ij8gn2;#TFbo`IU53A~nvh3Csy~(CDmX>Q9ShcKiW3Dm zI^@Df6q=Y_{%973zgN>EIB1J%&Jkn6kCpMi6|W)M3?sq9|L!u1@R9VJWGIz(@XOe> z3#+Ef{o}z;q*(!%22xUJF&e>7y7KcDzew=uwg-FhGT`%PyTlhsKBjv^bjAk_>99-P zVsxS*k2eix{@RBjM>`*fK7R@jUOS+N@To4c^H|v`2epRtFYvj&SUXZ3>=qi5pWn76 zeK`AnYO%)P6y1HcMa}vJU~=KB+~vD^D{tf6g!m1jXc@kzeX7J-h@@#-TlpmY-d*`v z+Smzy;NK`mhr6$C{Tv#y@?G-YY|ug(-U8SFEC6@w*-R9Ac{Ln$GeiU0ENY@6@sdL> z;*@wG@-irjZ^~HbGmzt#iwXJ(FBku05?Mc|xkYG5F?uhi<04?MKo*Qn3@>BRvj)3# z{ZH_MH6Sstl38M)JjSCC4jLQvG+ft!e4uO@N<}G~HA%RObG{JRb-NtjWE1Lt5&YCk z!lMK*>;2-S;p$Ja&h#SHG+M!ZAQ?y~xfo1o5hsm_#axgl$JvHG(+J+8ZR6GQllV^9 zeN)2GoW>a6a4aHRN1T5OHWpd)UTT*+53SyZSs&`cy2z@U>iRc=0NeFE33f+CO4{2^4lF;O>1s*GiaBj39t-0@eqUiNp`HxYZ? z5yeFu5)kk@Tz=HL87dnTfG!0NPH!k_KxPfRH6X#2L#sU%w>=Ps_j|D|u(&Q0pHWkkHdHDV~VMIK56NgL$dgl(l#Wz*JiLY|+RRS7;agN}jw8h9r zDYWpD)B8`t0_ObWbayDBde#$?Ck=s3@23#5U>VD=v*JY4*>Xnfb0N$ggIfE4b5ZNN z&y(dre2MXo%EsjMix&B1toJ&S%ZKaM)R#lC%yBG|?CJ|(jcjdeB`*W7N!pVY$#hQaMdL*ydXnCor8SCt8?M_Yz7v9#?U zH$zr>f#ZDMsN`s%A>0fl=rNHsL$3!}b2sh>mY zeI!i!XvbbaL+YGs72%*|%Y&GZXTp5b)u69c)hBR*c69p!rrs+%S@YBr+U(nEQkYon z+UvCIjIuF9CUW%w+Y zZoxBERD$K$)E^1aX7i8DinY2A0g(V^-#=-n2%(0*ej#TSa47ZdM6f9H zZuHgFD6K2tL_N_B1A7FSV=P2!COinRbJ2(Lg4X;=^LyjQqGo8D3J6@HY0TIE+!#s= zUr;`zq{Lv9oNxK=;^5mOr==(T>#4KjIP?*&k?S`GtIk=_$i)#X{4k7v)}Vim%!!QD z*nFlheZPuwJg#I;f&qVQ55pK2W?NBDlH;uM+MR5nzDm@Y!$(~mpqP($JxKu%0lr9~ zOlRm!0mW@Gq0^gHE-J(Ie{gnT6K}E1T#(VKnGL#w`}eMjGFUPt)En=#`fK2pQ{>L9 znn;DQvt!ru(`3P>?Bf+A9twTqmJBARRFZRfAvn!_Nr+s5cmKlyjZT8agZ{j}00)&J!;WxuymPm8nMjeZ4gfd@Y3SKaaMj1G znadSXh9-Y1=eIqiXO~(q?Xw0(4O7S4kPYUr`1&?DNa6eRx8;z}T}zry@1}1gJc;?` zSw8`YJ_1DC>*wK==1Zf6C#V+9sAxd&Z9gh{Ay|v&7vj}Axb2Es;-q}u@zXrQ2Wfw1 z!CablPogx&S{F%a{4QQ(U#9j|9E5s-RreGxD(V z?W)4dWA=;(YOLevXbOV!B#y zzxi(=Jo4FcLV=a`uz@D`G6zb4?8PM>6I3KU9P?3xqaUkqqw)S_Q^Da{T+pac9XqVP8}a6zM+@d zl}{BPoxM*J2z<`3tLIzPEL~d%3)J|j#O^;v%|SW0ZQW@?`gCe~cQpd1t`<^DczZVB z6p1wTbeolQGo76A;LjJd+*uY*O%eb$9Jl_MPw=|ve-GkZZ{jAD!1WV>;#D)<)5Q8g zegiQRb?i*YUpxdO+w6%j`h4dU^)){~BVWSt&$N@eVc$~A| z>+v!}oLYn}pBl~Q6Vc|F(JLA5gR@*L5Z_D)hE0d1(eQZafrF$+$lXM>T7eU}Hdn}e z9g^QBER3b}U7jPNC>Do-P?J41$gl4Rn|lHG{&YOX`mKT z+(&1jTsVvWw7+yvRA?n^ZI;^;|^$r9+reI<0FI!JgVL5^<*rzthA&QHW=E%)I^B}e1{r=_8+ca?C>Ixll9Im#q zZ@yf^QqLNt$rdiT(0?Ml9X3=c*z? zO%(6bYIsgsXI)k`aqNnwtv`|N$PV^@#=Yy!(DP?Z_}DPp_n<^vO8F~8+|!n zSePW|oFBy6S>KK};C}6_h4#Mrhb?!lDA+L-!o%KqBF6STxJy7R*1@wY-+HFNL49*i zLne-@Yu%}+4C4*%2-*PAU2@v&OhvMu7fdoR#8mM#+aT)CuVpsfqaw*yWpy{0rNlI@ z3_H}tRP7Obdk}y*>!mxgvB6z(zr8>DR(L!9GhZSa^IaI~-5_7JGgJ}k9Tlm+TK&0e z!E@R&p<%*o{|&_$ehrvi!xvC#rD|vhUN^RyfAnyx-S8Bdv-Rg+$H;$6;j*e^o?yq< XF9mI4>Yn_cngW;1EKRFS+~fWash4EI literal 0 HcmV?d00001 diff --git a/QuickLocation/Manager/Account/AppContextManager.swift b/QuickLocation/Manager/Account/AppContextManager.swift index e4df4462..10f59056 100644 --- a/QuickLocation/Manager/Account/AppContextManager.swift +++ b/QuickLocation/Manager/Account/AppContextManager.swift @@ -15,6 +15,7 @@ class AppContextManager: NSObject { var systemConfig: SystemConfigModel? var imToken: String? + var imTokenUserId: String? var account: UserConfigModel? { if let loginAccount = loginAccount { @@ -129,6 +130,8 @@ class AppContextManager: NSObject { Defaults[\.userConfig] = nil Defaults[\.defaultGroupKey] = "" loginAccount = nil + imToken = nil + imTokenUserId = nil } } diff --git a/QuickLocation/Manager/App/ApiManager.swift b/QuickLocation/Manager/App/ApiManager.swift index 8cc28cc0..3e07a123 100644 --- a/QuickLocation/Manager/App/ApiManager.swift +++ b/QuickLocation/Manager/App/ApiManager.swift @@ -127,7 +127,11 @@ extension ApiManager { DLToast.show(text: combineMessage) } } - return .failure(handleError(with: code, domain: "Data Error", message: combineMessage, data: response)) + return .failure(handleError(with: code, + domain: "Data Error", + message: combineMessage, + isShowTip: code != GatewayStatusCode.needVip.rawValue, + data: response)) case let .failure(error): let message = error.gatewayMessage ?? "请检查网络连接" if error.innerError?.code == NSURLErrorCancelled { @@ -181,10 +185,15 @@ extension ApiManager { // MARK: - 需开通VIP private func handleNeedVip(_ msg: String) { + let message = msg + .split(separator: ",", maxSplits: 1, omittingEmptySubsequences: false) + .first + .map(String.init)? + .trimmingCharacters(in: .whitespacesAndNewlines) ?? "" MainAsync { - ConfirmPopVC.showAlert(title: "温馨提示", message: msg, confirmText: "去开通", confirmBlock: { + UIViewController.showConfirmPop(title: "温馨提示", message: message, confirmText: "去开通", confirmBlock: { AppRouter.push(Route.vipRecharge) - }) + }, cancelText: "取消") } } } diff --git a/QuickLocation/Model/GroupModel.swift b/QuickLocation/Model/GroupModel.swift index 6ff0fbc9..938c1a82 100644 --- a/QuickLocation/Model/GroupModel.swift +++ b/QuickLocation/Model/GroupModel.swift @@ -92,6 +92,7 @@ struct GroupUsersResponse: BaseModelProtocol { var message: String? var model: GroupInfoModel? var list: [GroupMemberModel] = [] + var vip = GroupMemberVip() var reviewCount: Int = 0 init?(map: Map) {} @@ -101,6 +102,7 @@ struct GroupUsersResponse: BaseModelProtocol { message <- map["message"] model <- map["data.group"] list <- map["data.mates"] + vip <- map["data.vip"] reviewCount <- (map["data.reviewCount"], kStrTransformInt) if reviewCount == 0 { reviewCount <- (map["data.review_count"], kStrTransformInt) @@ -286,6 +288,27 @@ struct GroupPrivilege: Mappable, Equatable { } } +struct GroupMemberVip: Mappable, Equatable { + var app_usage_record: Bool? + var phone_report: Bool? + var trip_analysis_others: Bool? + var app_lock: Bool? + var pigeon_mail: Bool? + var view_phone: Bool? + + init() {} + init?(map: Map) {} + + mutating func mapping(map: Map) { + app_usage_record <- (map["app_usage_record"], kOptionalFlexibleBool) + phone_report <- (map["phone_report"], kOptionalFlexibleBool) + trip_analysis_others <- (map["trip_analysis_others"], kOptionalFlexibleBool) + app_lock <- (map["app_lock"], kOptionalFlexibleBool) + pigeon_mail <- (map["pigeon_mail"], kOptionalFlexibleBool) + view_phone <- (map["view_phone"], kOptionalFlexibleBool) + } +} + private let kFlexibleBool = TransformOf(fromJSON: { value in switch value { case let value as Bool: @@ -304,6 +327,31 @@ private let kFlexibleBool = TransformOf(fromJSON: { value in value }) +private let kOptionalFlexibleBool = TransformOf(fromJSON: { value in + switch value { + case let value as Bool: + return value + case let value as NSNumber: + return value.boolValue + case let value as Int: + return value != 0 + case let value as String: + let text = value.trimmingCharacters(in: .whitespacesAndNewlines).lowercased() + switch text { + case "1", "true", "yes": + return true + case "0", "false", "no": + return false + default: + return nil + } + default: + return nil + } +}, toJSON: { value in + value +}) + extension UIImageView { @MainActor func setGroupIcon(_ model: GroupInfoModel) { @@ -424,7 +472,13 @@ struct GroupMemberModel: Mappable, Equatable { /// 会员等级 1普通 2白银 3永久 4钻石 var level: Int = 1 + var shouldShowVipAvatarFrame: Bool { + AppContextManager.shared.systemConfig?.isIntercept != true && level != 1 + } var vipIcon: UIImage { + guard AppContextManager.shared.systemConfig?.isIntercept != true else { + return UIImage() + } switch level { case 2: // 白银 return UIImage(named: "VipIcon/2") ?? UIImage() diff --git a/QuickLocation/Section/AppRestrict/AppRestrictVC.swift b/QuickLocation/Section/AppRestrict/AppRestrictVC.swift index 75a3e33b..36207973 100644 --- a/QuickLocation/Section/AppRestrict/AppRestrictVC.swift +++ b/QuickLocation/Section/AppRestrict/AppRestrictVC.swift @@ -135,7 +135,7 @@ final class AppRestrictVC: BaseViewController { .subscribe(onNext: { _ in DLToast.show(text: "配对成功") }, onError: { error in - DLToast.show(text: error.gatewayMessage ?? error.localizedDescription) + DLToast.show(error) }) .disposed(by: disposeBag) } @@ -278,7 +278,7 @@ final class AppRestrictVC: BaseViewController { DLToast.show(text: "删除成功") }, onError: { [weak self] error in self?.deletingTokenStrings.remove(tokenString) - DLToast.show(text: error.gatewayMessage ?? error.localizedDescription) + DLToast.show(error) }) .disposed(by: UserService.disposeBag) } diff --git a/QuickLocation/Section/Explore/FeatureIntroVC.swift b/QuickLocation/Section/Explore/FeatureIntroVC.swift index 165e3f6b..06577a45 100644 --- a/QuickLocation/Section/Explore/FeatureIntroVC.swift +++ b/QuickLocation/Section/Explore/FeatureIntroVC.swift @@ -35,7 +35,8 @@ final class FeatureIntroVC: BaseViewController { super.viewDidAppear(animated) rootView.reloadFeatureItems() - guard let config = AppContextManager.shared.systemConfig else { return } + guard AppContextManager.shared.systemConfig?.isIntercept == false, + let config = AppContextManager.shared.systemConfig else { return } bannerList = config.bannerList rootView.cycleScrollView.isHidden = config.bannerList.filter { $0.enable == true }.count == 0 rootView.cycleScrollView.imageURLStringsGroup = config.bannerList.filter { $0.enable == true }.map { $0.img } diff --git a/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift b/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift index 03a54c2d..3e774699 100644 --- a/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift +++ b/QuickLocation/Section/Group/CreateGroup/CreateGroupViewModel.swift @@ -96,7 +96,7 @@ class CreateGroupViewModel { self?.groupType = response.list[0].type self?.groupTemplates.onNext(response.list) }, onError: { error in - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } @@ -135,7 +135,7 @@ class CreateGroupViewModel { CreateGroupVipPopView.show() } else { - DLToast.show(text: error.localizedDescription) + DLToast.show(error) } }).disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift b/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift index a49b1e4c..a712594d 100644 --- a/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift +++ b/QuickLocation/Section/Group/GroupChat/GroupChatVC.swift @@ -96,16 +96,7 @@ final class GroupChatVC: BaseViewController { setupKeyboard() IQKeyboardManager.shared.isEnabled = false IQKeyboardManager.shared.resignOnTouchOutside = false - - // 非圈主 会员权益拦截 -// let isCircleOwner = GroupOwnerMatcher.matches( -// userId: AppContextManager.shared.userId, -// groupKey: viewModel.groupId -// ) -// let canSend = isCircleOwner || AppContextManager.shared.vip > 1 -// rootView.disableIMView.isHidden = canSend -// rootView.quickActionBar.isUserInteractionEnabled = canSend -// rootView.quickActionBar.alpha = canSend ? 1 : 0.35 + rootView.updateVipMediaAccess(isUnlocked: isVipUnlocked) } override func viewWillDisappear(_ animated: Bool) { @@ -581,6 +572,22 @@ final class GroupChatVC: BaseViewController { } // MARK: - Actions + private var isVipUnlocked: Bool { + guard AppContextManager.shared.systemConfig?.isIntercept == false else { + return false + } + + return AppContextManager.shared.vip > 1 + } + + private func requireVipForMedia() -> Bool { + guard isVipUnlocked else { + AppRouter.push(Route.vipRecharge) + return false + } + return true + } + private func reactiveAction() { rootView.backBtn.rx.tap .subscribe(onNext: { _ in @@ -630,7 +637,7 @@ final class GroupChatVC: BaseViewController { rootView.galleryBtn.rx.tap .subscribe(onNext: { [weak self] in - guard let self = self else { return } + guard let self, self.requireVipForMedia() else { return } self.rootView.dismissAllPanels() self.showAlbum() }) @@ -638,8 +645,9 @@ final class GroupChatVC: BaseViewController { rootView.cameraBtn.rx.tap .subscribe(onNext: { [weak self] in - self?.rootView.dismissAllPanels() - self?.showCamera() + guard let self, self.requireVipForMedia() else { return } + self.rootView.dismissAllPanels() + self.showCamera() }) .disposed(by: disposeBag) @@ -699,16 +707,19 @@ final class GroupChatVC: BaseViewController { // MARK: - 显示相册 private func showAlbum() { + guard requireVipForMedia() else { return } let picker = PhotoPickerVC(maxCount: 9) picker.onConfirm = { [weak self] images in + guard let self, self.requireVipForMedia() else { return } for image in images { - self?.sendImageMessage(image) + self.sendImageMessage(image) } } present(picker, animated: true) } private func showCamera() { + guard requireVipForMedia() else { return } guard UIImagePickerController.isSourceTypeAvailable(.camera) else { DLToast.showError(text: "当前设备不支持拍照") return @@ -748,6 +759,11 @@ final class GroupChatVC: BaseViewController { private var currentVoiceHover: VoiceRecordView.HoverTarget = .none private func enterVoiceInputMode() { + guard isVipUnlocked else { + rootView.dismissAllPanels() + rootView.setVoiceInputMode(true) + return + } let status = AVCaptureDevice.authorizationStatus(for: .audio) switch status { case .authorized: @@ -831,6 +847,7 @@ final class GroupChatVC: BaseViewController { } private func startVoiceRecording() { + guard requireVipForMedia() else { return } guard !isVoiceRecording else { return } AudioServicesPlaySystemSound(1519) currentVoiceHover = .none @@ -945,28 +962,30 @@ final class GroupChatVC: BaseViewController { } private func sendVoiceMessage(url: URL, durationMs: Int) { - let msg = OIMMessageInfo.createSoundMessage(fromFullPath: url.path, duration: durationMs) - viewModel.cacheMessage(msg) - OIMManager.manager.sendMessage(msg, - recvID: "", - groupID: viewModel.groupId, - offlinePushInfo: nil, - onSuccess: { [weak self] returnedMsg in + guard requireVipForMedia() else { + deleteRecordFile() + rootView.voiceRecordView.reset() + return + } + GroupIMService.shared.sendGroupMessage(groupId: viewModel.groupId, + makeMessage: { + OIMMessageInfo.createSoundMessage(fromFullPath: url.path, duration: durationMs) + }, + onPrepared: { [weak self] message in + self?.viewModel.cacheMessage(message) + }, + onSuccess: { [weak self] sentMessage in DispatchQueue.main.async { guard let self else { return } - let sentMessage = returnedMsg ?? msg - if sentMessage.soundElem == nil { - sentMessage.soundElem = msg.soundElem - } sentMessage.soundElem?.soundPath = url.path self.viewModel.onReceiveMessage(sentMessage) } }, - onProgress: nil as OIMNumberCallback?, - onFailure: { [weak self] code, errMsg in + onFailure: { [weak self] code, errMsg in print("Voice send failed: \(code) \(errMsg ?? "")") DispatchQueue.main.async { - self?.dl.show(text: (errMsg?.isEmpty == false ? errMsg : "语音发送失败,请重试") ?? "语音发送失败,请重试") + let text = GroupIMService.shared.displaySendError(errMsg, fallback: "语音发送失败,请重试") + self?.dl.show(text: text) } }) } @@ -1014,7 +1033,7 @@ final class GroupChatVC: BaseViewController { }, onError: { [weak self] error in guard let self, self.groupInfoRequestID == requestID else { return } if showError { - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) } }) .disposed(by: disposeBag) @@ -1186,6 +1205,7 @@ private class MessageListenerProxy: NSObject, OIMAdvancedMsgListener { extension GroupChatVC { private func sendImageMessage(_ image: UIImage) { + guard requireVipForMedia() else { return } let sendImage = image.cgImage != nil ? image.fixOrientation() : image guard let data = sendImage.jpegData(compressionQuality: 0.8) else { return } let dir = NSTemporaryDirectory() @@ -1195,39 +1215,38 @@ extension GroupChatVC { let displaySize = ChatImageLayout.displaySize(width: sendImage.size.width, height: sendImage.size.height) - let msg = OIMMessageInfo.createImageMessage(fromFullPath: fileURL.path) - // 使用 SDK 的 clientMsgID 作为本地消息 ID,方便后续与监听器去重 - let localId = msg.clientMsgID ?? UUID().uuidString - viewModel.cacheMessage(msg) - - // 立即显示本地图片(带 loading) - let localMsg = ChatMessage( - id: localId, - isSelf: true, - senderId: AppContextManager.shared.userId, - avatar: viewModel.getUserAvatar(id: AppContextManager.shared.userId), - headPic: viewModel.getUserHeadPic(id: AppContextManager.shared.userId), - senderName: AppContextManager.shared.name, - content: "", - voiceUrl: "", - imageUrl: fileURL.path, - imageWidth: displaySize.width, - imageHeight: displaySize.height, - timestamp: Date().timeIntervalSince1970, - showTime: false, - isUploading: true - ) - viewModel.appendLocalMessage(.imageSend(localMsg)) - OIMManager.manager.sendMessage(msg, - recvID: "", - groupID: viewModel.groupId, - offlinePushInfo: nil, - onSuccess: { [weak self] returnedMsg in + var localId = "" + GroupIMService.shared.sendGroupMessage(groupId: viewModel.groupId, + makeMessage: { + OIMMessageInfo.createImageMessage(fromFullPath: fileURL.path) + }, + onPrepared: { [weak self] message in + guard let self else { return } + localId = message.clientMsgID ?? UUID().uuidString + self.viewModel.cacheMessage(message) + let localMessage = ChatMessage( + id: localId, + isSelf: true, + senderId: AppContextManager.shared.userId, + avatar: self.viewModel.getUserAvatar(id: AppContextManager.shared.userId), + headPic: self.viewModel.getUserHeadPic(id: AppContextManager.shared.userId), + senderName: AppContextManager.shared.name, + content: "", + voiceUrl: "", + imageUrl: fileURL.path, + imageWidth: displaySize.width, + imageHeight: displaySize.height, + timestamp: Date().timeIntervalSince1970, + showTime: false, + isUploading: true + ) + self.viewModel.appendLocalMessage(.imageSend(localMessage)) + }, + onSuccess: { [weak self] sentMessage in // 服务端返回后,更新本地消息为服务端图片URL,去掉loading - // 注意:returnedMsg 是 SDK 回填服务端数据后的新 OIMMessageInfo,包含完整 URL - let networkUrl = returnedMsg?.pictureElem?.sourcePicture?.url - ?? returnedMsg?.pictureElem?.bigPicture?.url - ?? returnedMsg?.pictureElem?.sourcePath + let networkUrl = sentMessage.pictureElem?.sourcePicture?.url + ?? sentMessage.pictureElem?.bigPicture?.url + ?? sentMessage.pictureElem?.sourcePath ?? "" self?.viewModel.updateLocalMessage(id: localId) { chatMsg in // 仅在服务端有URL时才替换,否则保留本地路径让图片仍可见 @@ -1238,13 +1257,16 @@ extension GroupChatVC { } try? FileManager.default.removeItem(at: fileURL) }, - onProgress: nil as OIMNumberCallback?, - onFailure: { [weak self] code, errMsg in + onFailure: { [weak self] code, errMsg in print("Image send failed: \(code) \(errMsg ?? "")") // 发送失败,隐藏 loading self?.viewModel.updateLocalMessage(id: localId) { chatMsg in chatMsg.isUploading = false } + DispatchQueue.main.async { + let text = GroupIMService.shared.displaySendError(errMsg, fallback: "图片发送失败,请重试") + self?.dl.show(text: text) + } }) } } diff --git a/QuickLocation/Section/Group/GroupChat/GroupChatView.swift b/QuickLocation/Section/Group/GroupChat/GroupChatView.swift index d8dd0803..7f507b81 100644 --- a/QuickLocation/Section/Group/GroupChat/GroupChatView.swift +++ b/QuickLocation/Section/Group/GroupChat/GroupChatView.swift @@ -161,6 +161,7 @@ class GroupChatView: UIView { /// 收起所有浮层面板 private var isVoiceInputMode = false + private var isVipMediaUnlocked = true func setVoiceInputMode(_ enabled: Bool) { isVoiceInputMode = enabled @@ -171,9 +172,22 @@ class GroupChatView: UIView { refreshComposer() } + func updateVipMediaAccess(isUnlocked: Bool) { + isVipMediaUnlocked = isUnlocked + let lockedBackground = isUnlocked ? nil : UIImage(named: "VipFeature/media_locked_bg") + galleryBtn.setBackgroundImage(lockedBackground, for: .normal) + cameraBtn.setBackgroundImage(lockedBackground, for: .normal) + galleryBtn.backgroundColor = isUnlocked ? .white : .clear + cameraBtn.backgroundColor = isUnlocked ? .white : .clear + voiceBtn.setImage(UIImage(named: "IM/voice_input"), for: .normal) + textField.placeholder = "发消息或者按住说话" + refreshComposer() + } + func refreshComposer() { let hasText = !(textField.text ?? "").trimmingCharacters(in: .whitespacesAndNewlines).isEmpty if isVoiceInputMode { + updateHoldSpeakAppearance() textField.isHidden = true emojiBtn.isHidden = true voiceBtn.isHidden = true @@ -191,6 +205,22 @@ class GroupChatView: UIView { layoutIfNeeded() } + private func updateHoldSpeakAppearance() { + var configuration = UIButton.Configuration.plain() + configuration.title = "按住 说话" + configuration.image = isVipMediaUnlocked ? nil : UIImage(named: "VipFeature/crown") + configuration.imagePlacement = .leading + configuration.imagePadding = isVipMediaUnlocked ? 0 : 10 + configuration.contentInsets = .zero + configuration.baseForegroundColor = UIColor(hexStr: "#293445") + configuration.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { attributes in + var attributes = attributes + attributes.font = .systemFont(ofSize: 16, weight: .medium) + return attributes + } + holdSpeakBtn.configuration = configuration + } + func dismissAllPanels(excludeTextField: Bool = false) { let needsReset = !emojiPanelView.isHidden || textField.isFirstResponder diff --git a/QuickLocation/Section/Group/GroupChat/GroupChatViewModel.swift b/QuickLocation/Section/Group/GroupChat/GroupChatViewModel.swift index 09e1f5b6..f772bd6e 100644 --- a/QuickLocation/Section/Group/GroupChat/GroupChatViewModel.swift +++ b/QuickLocation/Section/Group/GroupChat/GroupChatViewModel.swift @@ -333,65 +333,62 @@ final class GroupChatViewModel { let atAll = pendingAtAll let mentions = pendingMentions - let msg: OIMMessageInfo - if atAll { - msg = OIMMessageInfo.createText(atAllMessage: trimmed, - displayText: "@所有人", - message: quote) - } else if !mentions.isEmpty { - let ids = mentions.map(\.userId) - let infos: [OIMAtInfo] = mentions.map { m in - let info = OIMAtInfo() - info.atUserID = m.userId - info.groupNickname = m.nickname - return info - } - msg = OIMMessageInfo.createText(atMessage: trimmed, - atUsersID: ids, - atUsersInfo: infos, - message: quote) - } else if let quote { - msg = OIMMessageInfo.createQuoteMessage(trimmed, message: quote) - } else { - msg = OIMMessageInfo.createTextMessage(trimmed) - } - clearPendingQuote() clearPendingMentions() - OIMManager.manager.sendMessage(msg, - recvID: "", - groupID: groupId, - offlinePushInfo: nil, - onSuccess: { [weak self] _ in - self?.cacheMessage(msg) - self?.appendMessage(msg) + GroupIMService.shared.sendGroupMessage(groupId: groupId, + makeMessage: { + if atAll { + return OIMMessageInfo.createText(atAllMessage: trimmed, + displayText: "@所有人", + message: quote) + } + if !mentions.isEmpty { + let ids = mentions.map(\.userId) + let infos: [OIMAtInfo] = mentions.map { mention in + let info = OIMAtInfo() + info.atUserID = mention.userId + info.groupNickname = mention.nickname + return info + } + return OIMMessageInfo.createText(atMessage: trimmed, + atUsersID: ids, + atUsersInfo: infos, + message: quote) + } + if let quote { + return OIMMessageInfo.createQuoteMessage(trimmed, message: quote) + } + return OIMMessageInfo.createTextMessage(trimmed) }, - onProgress: nil as OIMNumberCallback?, - onFailure: { code, errMsg in + onSuccess: { [weak self] message in + self?.cacheMessage(message) + self?.appendMessage(message) + }, + onFailure: { code, errMsg in print("send failed: \(code) \(errMsg ?? "")") DispatchQueue.main.async { - DLToast.showError(text: errMsg ?? "发送失败") + let text = GroupIMService.shared.displaySendError(errMsg, fallback: "消息发送失败,请重试") + DLToast.showError(text: text) } }) } func sendLocation(_ location: ChatLocationPayload) { - let msg = OIMMessageInfo.createLocationMessage(location.encodedDescription, - latitude: location.latitude, - longitude: location.longitude) - OIMManager.manager.sendMessage(msg, - recvID: "", - groupID: groupId, - offlinePushInfo: nil, - onSuccess: { [weak self] _ in - self?.cacheMessage(msg) - self?.appendMessage(msg) + GroupIMService.shared.sendGroupMessage(groupId: groupId, + makeMessage: { + OIMMessageInfo.createLocationMessage(location.encodedDescription, + latitude: location.latitude, + longitude: location.longitude) }, - onProgress: nil as OIMNumberCallback?, - onFailure: { code, errMsg in + onSuccess: { [weak self] message in + self?.cacheMessage(message) + self?.appendMessage(message) + }, + onFailure: { code, errMsg in DispatchQueue.main.async { - DLToast.showError(text: errMsg ?? "位置发送失败(\(code))") + let text = GroupIMService.shared.displaySendError(errMsg, fallback: "位置发送失败,请重试") + DLToast.showError(text: text) } }) } diff --git a/QuickLocation/Section/Group/GroupIMService.swift b/QuickLocation/Section/Group/GroupIMService.swift index b4acf878..b40b57d3 100644 --- a/QuickLocation/Section/Group/GroupIMService.swift +++ b/QuickLocation/Section/Group/GroupIMService.swift @@ -15,8 +15,12 @@ final class GroupIMService { private var isInited = false private var isLogining = false + private var isLoggingOut = false + private var isSessionInvalidated = false + private var loginGeneration = 0 /// 登录进行中时排队的回调,登录结束统一回调,避免并发重复登录 - private var pendingLoginCompletions: [(Bool) -> Void] = [] + private var pendingLoginCompletions: [(userId: String, completion: (Bool) -> Void)] = [] + private var pendingLogoutCompletions: [(Bool) -> Void] = [] private let disposeBag = DisposeBag() private init() {} @@ -34,85 +38,273 @@ final class GroupIMService { onConnecting: {}, onConnectFailure: { _, _ in }, onConnectSuccess: {}, - onKickedOffline: {}, - onUserTokenExpired: {}, - onUserTokenInvalid: { _ in }) + onKickedOffline: { + GroupIMService.shared.invalidateSession() + }, + onUserTokenExpired: { + GroupIMService.shared.invalidateSession() + }, + onUserTokenInvalid: { _ in + GroupIMService.shared.invalidateSession() + }) } // MARK: - Login /// 确保已登录(幂等):已登录直接回调,否则拉 token 再登录;登录中则排队等待 func ensureLogin(completion: @escaping (Bool) -> Void) { - login(completion: completion) + runOnMain { [weak self] in + self?.login(completion: completion) + } } - func login(completion: @escaping (Bool) -> Void) { - if OIMManager.manager.getLoginStatus() == .logged { - completion(true) - return - } + private func login(completion: @escaping (Bool) -> Void) { if AppContextManager.shared.isGuest { completion(false) return } - let userId = AppContextManager.shared.userId + let userId = AppContextManager.shared.userId.trimmingCharacters(in: .whitespacesAndNewlines) guard !userId.isEmpty else { completion(false) return } - pendingLoginCompletions.append(completion) - guard !isLogining else { return } - isLogining = true - - let existing = AppContextManager.shared.imToken?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - if !existing.isEmpty { - performSDKLogin(userId: userId, token: existing) + if !isSessionInvalidated, + OIMManager.manager.getLoginStatus() == .logged, + OIMManager.manager.getLoginUserID() == userId { + completion(true) return } + pendingLoginCompletions.append((userId, completion)) + startLoginIfNeeded() + } + + private func startLoginIfNeeded() { + guard !isLogining, !isLoggingOut, !pendingLoginCompletions.isEmpty else { return } + + let userId = AppContextManager.shared.userId.trimmingCharacters(in: .whitespacesAndNewlines) + guard !AppContextManager.shared.isGuest, !userId.isEmpty else { + let callbacks = pendingLoginCompletions + pendingLoginCompletions.removeAll() + callbacks.forEach { $0.completion(false) } + return + } + + let staleCompletions = pendingLoginCompletions.filter { $0.userId != userId } + pendingLoginCompletions.removeAll { $0.userId != userId } + staleCompletions.forEach { $0.completion(false) } + guard !pendingLoginCompletions.isEmpty else { return } + + let status = OIMManager.manager.getLoginStatus() + if status == .logged { + if !isSessionInvalidated, OIMManager.manager.getLoginUserID() == userId { + finishLogin(success: true, userId: userId) + } else { + clearCachedToken() + loginGeneration += 1 + beginSDKLogout() + } + return + } + if status == .logging { + clearCachedToken() + loginGeneration += 1 + beginSDKLogout() + return + } + + isLogining = true + loginGeneration += 1 + let generation = loginGeneration + + let existing = AppContextManager.shared.imToken?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + if !existing.isEmpty, AppContextManager.shared.imTokenUserId == userId { + performSDKLogin(userId: userId, token: existing, generation: generation, canRefreshToken: true) + return + } + clearCachedToken() + requestTokenAndLogin(userId: userId, generation: generation) + } + + private func requestTokenAndLogin(userId: String, generation: Int) { UserService.imToken() .subscribe(onNext: { [weak self] response in guard let self else { return } - guard let data = response.data, - let token = data["token"] as? String, - !token.isEmpty else { - self.finishLogin(success: false) + guard self.loginGeneration == generation else { return } + guard AppContextManager.shared.userId == userId else { + self.finishLogin(success: false, userId: userId) return } - AppContextManager.shared.imToken = token - self.performSDKLogin(userId: userId, token: token) + guard let data = response.data, + let token = data["token"] as? String, + !token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { + self.finishLogin(success: false, userId: userId) + return + } + let normalizedToken = token.trimmingCharacters(in: .whitespacesAndNewlines) + AppContextManager.shared.imToken = normalizedToken + AppContextManager.shared.imTokenUserId = userId + self.performSDKLogin(userId: userId, + token: normalizedToken, + generation: generation, + canRefreshToken: false) }, onError: { [weak self] _ in - self?.finishLogin(success: false) + guard let self, self.loginGeneration == generation else { return } + self.finishLogin(success: false, userId: userId) }) .disposed(by: disposeBag) } - private func performSDKLogin(userId: String, token: String) { + private func performSDKLogin(userId: String, + token: String, + generation: Int, + canRefreshToken: Bool) { OIMManager.manager.login(userId, token: token) { [weak self] _ in - self?.finishLogin(success: true) + guard let self, self.loginGeneration == generation else { return } + let isCurrentUser = AppContextManager.shared.userId == userId + && OIMManager.manager.getLoginUserID() == userId + self.isSessionInvalidated = !isCurrentUser + self.finishLogin(success: isCurrentUser, userId: userId) } onFailure: { [weak self] code, msg in + guard let self, self.loginGeneration == generation else { return } print("OpenIM login failed: \(code) \(msg ?? "")") - self?.finishLogin(success: false) + if canRefreshToken, AppContextManager.shared.userId == userId { + self.clearCachedToken() + self.requestTokenAndLogin(userId: userId, generation: generation) + } else { + self.finishLogin(success: false, userId: userId) + } } } - private func finishLogin(success: Bool) { + private func finishLogin(success: Bool, userId: String) { isLogining = false - let callbacks = pendingLoginCompletions - pendingLoginCompletions.removeAll() - callbacks.forEach { $0(success) } + let callbacks = pendingLoginCompletions.filter { $0.userId == userId } + pendingLoginCompletions.removeAll { $0.userId == userId } + callbacks.forEach { $0.completion(success) } + startLoginIfNeeded() } // MARK: - Logout func logout(completion: ((Bool) -> Void)? = nil) { + runOnMain { [weak self] in + guard let self else { return } + self.clearCachedToken() + self.isSessionInvalidated = true + self.loginGeneration += 1 + self.isLogining = false + let loginCallbacks = self.pendingLoginCompletions + self.pendingLoginCompletions.removeAll() + loginCallbacks.forEach { $0.completion(false) } + if let completion { + self.pendingLogoutCompletions.append(completion) + } + self.beginSDKLogout() + } + } + + private func beginSDKLogout() { + guard !isLoggingOut else { return } + guard OIMManager.manager.getLoginStatus() != .logout else { + finishLogout(success: true) + return + } + isLoggingOut = true OIMManager.manager.logoutWith(onSuccess: { (_: String?) in - completion?(true) - }, onFailure: { (code: Int, msg: String?) in + GroupIMService.shared.finishLogout(success: true) + }, onFailure: { [weak self] (code: Int, msg: String?) in print("OpenIM logout failed: \(code) \(msg ?? "")") - completion?(false) + self?.finishLogout(success: false) }) } + private func finishLogout(success: Bool) { + isLoggingOut = false + let callbacks = pendingLogoutCompletions + pendingLogoutCompletions.removeAll() + callbacks.forEach { $0(success) } + if success { + startLoginIfNeeded() + } else { + let loginCallbacks = pendingLoginCompletions + pendingLoginCompletions.removeAll() + loginCallbacks.forEach { $0.completion(false) } + } + } + + private func clearCachedToken() { + AppContextManager.shared.imToken = nil + AppContextManager.shared.imTokenUserId = nil + } + + private func invalidateSession() { + runOnMain { [weak self] in + self?.isSessionInvalidated = true + self?.clearCachedToken() + } + } + + private func runOnMain(_ action: @escaping () -> Void) { + if Thread.isMainThread { + action() + } else { + DispatchQueue.main.async(execute: action) + } + } + + // MARK: - Send + func sendGroupMessage(groupId: String, + makeMessage: @escaping () -> OIMMessageInfo, + onPrepared: ((OIMMessageInfo) -> Void)? = nil, + onSuccess: ((OIMMessageInfo) -> Void)?, + onProgress: ((Int) -> Void)? = nil, + onFailure: ((Int, String?) -> Void)?) { + let normalizedGroupId = groupId.trimmingCharacters(in: .whitespacesAndNewlines) + guard !normalizedGroupId.isEmpty else { + onFailure?(-1, "圈子信息无效") + return + } + + ensureLogin { success in + let userId = AppContextManager.shared.userId + guard success, + OIMManager.manager.getLoginStatus() == .logged, + OIMManager.manager.getLoginUserID() == userId else { + onFailure?(-1, "消息服务连接失败,请重试") + return + } + let message = makeMessage() + guard !(message.clientMsgID ?? "").isEmpty else { + onFailure?(-1, "消息创建失败,请重试") + return + } + onPrepared?(message) + OIMManager.manager.sendMessage(message, + recvID: "", + groupID: normalizedGroupId, + offlinePushInfo: nil, + onSuccess: { returnedMessage in + onSuccess?(returnedMessage ?? message) + }, + onProgress: { progress in + onProgress?(progress) + }, + onFailure: { code, errorMessage in + onFailure?(code, errorMessage) + }) + } + } + + func displaySendError(_ message: String?, fallback: String) -> String { + let text = message?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + guard !text.isEmpty else { return fallback } + let lowercased = text.lowercased() + if lowercased.contains("json") || lowercased.contains("unexpected end") { + return fallback + } + return text + } + // MARK: - Get Joined Groups func getJoinedGroups(completion: @escaping ([OIMGroupInfo]) -> Void) { OIMManager.manager.getJoinedGroupListWith(onSuccess: { groups in diff --git a/QuickLocation/Section/Group/GroupMemberList/GroupMemberListVC.swift b/QuickLocation/Section/Group/GroupMemberList/GroupMemberListVC.swift index abaf5928..233938d9 100644 --- a/QuickLocation/Section/Group/GroupMemberList/GroupMemberListVC.swift +++ b/QuickLocation/Section/Group/GroupMemberList/GroupMemberListVC.swift @@ -86,7 +86,7 @@ final class GroupMemberListVC: BaseViewController { self.viewModel.loadData(group: group, members: response.list) }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Group/GroupMemberList/GroupMemberListView.swift b/QuickLocation/Section/Group/GroupMemberList/GroupMemberListView.swift index f9ac040f..ba5829f2 100644 --- a/QuickLocation/Section/Group/GroupMemberList/GroupMemberListView.swift +++ b/QuickLocation/Section/Group/GroupMemberList/GroupMemberListView.swift @@ -264,7 +264,7 @@ final class GroupMemberListCell: UICollectionViewCell { nameLabel.text = model.showName nameLabel.textColor = UIColor(hexStr: isCurrentUser ? "#16B3FF" : "#0F2846") selectionImageView.isHidden = !isSelected - vipBackgroundView.isHidden = model.level == 1 + vipBackgroundView.isHidden = !model.shouldShowVipAvatarFrame let isSOS = model.status == 1 updateSOSBlink(isSOS) diff --git a/QuickLocation/Section/Group/GroupSetting/GroupSettingVC.swift b/QuickLocation/Section/Group/GroupSetting/GroupSettingVC.swift index 546ab8c8..c9e20b8b 100644 --- a/QuickLocation/Section/Group/GroupSetting/GroupSettingVC.swift +++ b/QuickLocation/Section/Group/GroupSetting/GroupSettingVC.swift @@ -176,7 +176,7 @@ class GroupSettingVC: BaseViewController { self.requestReviewBadge() }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Group/GroupViewController.swift b/QuickLocation/Section/Group/GroupViewController.swift index e70aa01b..acae4557 100644 --- a/QuickLocation/Section/Group/GroupViewController.swift +++ b/QuickLocation/Section/Group/GroupViewController.swift @@ -24,6 +24,7 @@ final class GroupViewController: BaseViewController { private var groupRefreshWorkItem: DispatchWorkItem? private var groupInfoRequestID = UUID() private var hasAppeared = false + private var isEnteringGroupChat = false override func loadView() { rootView = GroupView(frame: UIScreen.main.bounds) @@ -184,10 +185,10 @@ final class GroupViewController: BaseViewController { rootView.createdTableView.rx.modelSelected(GroupCellData.self).asObservable(), rootView.joinedTableView.rx.modelSelected(GroupCellData.self).asObservable() ) - .subscribe(onNext: { data in + .subscribe(onNext: { [weak self] data in let groupId = data.group.group_key guard !groupId.isEmpty else { return } - AppRouter.push(Route.groupChat, userInfo: ["groupId": groupId]) + self?.openGroupChat(groupId: groupId) }) .disposed(by: disposeBag) @@ -215,6 +216,24 @@ final class GroupViewController: BaseViewController { .disposed(by: disposeBag) } + private func openGroupChat(groupId: String) { + guard !isEnteringGroupChat else { return } + isEnteringGroupChat = true + DLToast.showLoading() + GroupIMService.shared.ensureLogin { [weak self] success in + DispatchQueue.main.async { + guard let self else { return } + self.isEnteringGroupChat = false + DLToast.dismiss() + guard success else { + DLToast.showError(text: "消息服务登录失败,请重试") + return + } + AppRouter.push(Route.groupChat, userInfo: ["groupId": groupId]) + } + } + } + private func bindItineraryPage() { let page = rootView.itineraryPage diff --git a/QuickLocation/Section/Group/Mailbox/MailboxDetailViewController.swift b/QuickLocation/Section/Group/Mailbox/MailboxDetailViewController.swift index 85748ecf..4adffd07 100644 --- a/QuickLocation/Section/Group/Mailbox/MailboxDetailViewController.swift +++ b/QuickLocation/Section/Group/Mailbox/MailboxDetailViewController.swift @@ -78,7 +78,7 @@ final class MailboxDetailViewController: UIViewController { DLToast.dismiss() self?.isLoading = false self?.detailView.setControlsEnabled(true) - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Group/Mailbox/MailboxViewController.swift b/QuickLocation/Section/Group/Mailbox/MailboxViewController.swift index 4e69af7b..3ff2d55c 100644 --- a/QuickLocation/Section/Group/Mailbox/MailboxViewController.swift +++ b/QuickLocation/Section/Group/Mailbox/MailboxViewController.swift @@ -187,7 +187,7 @@ final class MailboxViewController: BaseViewController { self.updateContentState(showLoading: false) self.loadPendingCategoryIfNeeded() }, onError: { [weak self] error in - self?.finishLoadingWithError(message: error.localizedDescription) + self?.finishLoadingWithError(error: error) }) .disposed(by: disposeBag) } @@ -228,6 +228,13 @@ final class MailboxViewController: BaseViewController { DLToast.showError(text: message) } + private func finishLoadingWithError(error: Error) { + isLoading = false + finishRefreshControls() + updateContentState(showLoading: false) + DLToast.showError(error) + } + private func finishRefreshControls() { rootView.tableView.mj_header?.endRefreshing() if reachedEnd { @@ -281,7 +288,7 @@ final class MailboxViewController: BaseViewController { self.present(detailController, animated: true) }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } @@ -343,7 +350,7 @@ final class MailboxViewController: BaseViewController { DLToast.showSuccess(text: "已清空") }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Group/MemberInfo/MemberInfoVC.swift b/QuickLocation/Section/Group/MemberInfo/MemberInfoVC.swift index e155d937..b3b11f5b 100644 --- a/QuickLocation/Section/Group/MemberInfo/MemberInfoVC.swift +++ b/QuickLocation/Section/Group/MemberInfo/MemberInfoVC.swift @@ -230,7 +230,7 @@ final class MemberInfoVC: BaseViewController { self.refreshDetail() }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } @@ -248,7 +248,7 @@ final class MemberInfoVC: BaseViewController { case .success: self.presentRelationPicker() case let .failure(error): - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) } } } @@ -291,7 +291,7 @@ final class MemberInfoVC: BaseViewController { self.refreshDetail() }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } @@ -310,7 +310,7 @@ final class MemberInfoVC: BaseViewController { self?.syncUserConfig() }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } @@ -324,7 +324,7 @@ final class MemberInfoVC: BaseViewController { self?.syncUserConfig() }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } @@ -340,7 +340,7 @@ final class MemberInfoVC: BaseViewController { self?.syncUserConfig() }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Group/RemoveMember/RemoveMemberVC.swift b/QuickLocation/Section/Group/RemoveMember/RemoveMemberVC.swift index 4d9240a3..c572428f 100644 --- a/QuickLocation/Section/Group/RemoveMember/RemoveMemberVC.swift +++ b/QuickLocation/Section/Group/RemoveMember/RemoveMemberVC.swift @@ -115,7 +115,7 @@ class RemoveMemberVC: BaseViewController { self.viewModel.loadData(response.list) }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift b/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift index 11cb28b0..4a5675a6 100644 --- a/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift +++ b/QuickLocation/Section/Home/Bubble/CreateBubbleSetupView.swift @@ -25,6 +25,7 @@ final class CreateBubbleSetupView: UIView { private let subtitleLab = UILabel() private let titleLab = UILabel() private let hourPicker = BubbleHourPickerView() + private let vipOfferImageView = UIImageView(image: UIImage(named: "VipFeature/limited_offer")) private let sheetOverlay = UIView() private let sheetPanel = UIView() @@ -83,6 +84,7 @@ final class CreateBubbleSetupView: UIView { addSubview(subtitleLab) addSubview(hourPicker) addSubview(confirmBtn) + addSubview(vipOfferImageView) heroView.showsOuterDecorBubbles = false heroView.layoutChain @@ -113,6 +115,25 @@ final class CreateBubbleSetupView: UIView { confirmBtn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) confirmBtn.cornerRadius = 20 confirmBtn.layoutChain.left(30).right(30).bottom(34).height(56) + + vipOfferImageView.contentMode = .scaleAspectFit + vipOfferImageView.isHidden = true + vipOfferImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + vipOfferImageView.trailingAnchor.constraint(equalTo: confirmBtn.trailingAnchor, constant: -6), + vipOfferImageView.bottomAnchor.constraint(equalTo: confirmBtn.topAnchor, constant: 10), + vipOfferImageView.widthAnchor.constraint(equalToConstant: 94), + vipOfferImageView.heightAnchor.constraint(equalToConstant: 32) + ]) + } + + func updateVipAccess(isUnlocked: Bool) { + confirmBtn.setTitle(isUnlocked ? "确定" : "开通会员 解锁功能", for: .normal) + confirmBtn.setBackgroundImage( + UIImage(named: isUnlocked ? "Common/button_bg_2" : "VipFeature/wide_button_bg"), + for: .normal + ) + vipOfferImageView.isHidden = isUnlocked } private func setupSheet() { diff --git a/QuickLocation/Section/Home/Bubble/CreateBubbleVC.swift b/QuickLocation/Section/Home/Bubble/CreateBubbleVC.swift index 20bf91b6..36ad1e62 100644 --- a/QuickLocation/Section/Home/Bubble/CreateBubbleVC.swift +++ b/QuickLocation/Section/Home/Bubble/CreateBubbleVC.swift @@ -26,6 +26,7 @@ class CreateBubbleVC: BaseViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + rootView.updateVipAccess(isUnlocked: isVipUnlocked) requestUserStatus() } @@ -48,6 +49,10 @@ class CreateBubbleVC: BaseViewController { rootView.setupView.confirmBtn.rx.tap .subscribe(onNext: { [weak self] in guard let self else { return } + guard self.isVipUnlocked else { + AppRouter.push(Route.vipRecharge) + return + } let hours = self.rootView.setupView.selectedHour.value let message = self.rootView.setupView.buildMessage(for: hours) self.rootView.setupView.showNotifySheet(message: message) @@ -80,18 +85,21 @@ class CreateBubbleVC: BaseViewController { } private func submitCreate() { - guard let systemConfig = AppContextManager.shared.systemConfig, systemConfig.isIntercept == false else { - let hours = rootView.setupView.selectedHour.value - requestSetBubble(enable: true, keep_time: hours) + guard isVipUnlocked else { + rootView.setupView.dismissNotifySheet() + AppRouter.push(Route.vipRecharge) return } + let hours = rootView.setupView.selectedHour.value + requestSetBubble(enable: true, keep_time: hours) + } - if AppContextManager.shared.vip > 1 { - let hours = rootView.setupView.selectedHour.value - requestSetBubble(enable: true, keep_time: hours) - } else { - CreateBubblePopView.show() + private var isVipUnlocked: Bool { + guard AppContextManager.shared.systemConfig?.isIntercept == false else { + return false } + + return AppContextManager.shared.vip > 1 } private func restoreCachedBubbleIfNeeded() { @@ -119,7 +127,7 @@ class CreateBubbleVC: BaseViewController { self.applyUserStatus(model) }, onError: { [weak self] error in guard let self, requestVersion == self.statusRequestVersion else { return } - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Home/Bubble/CreateBubbleView.swift b/QuickLocation/Section/Home/Bubble/CreateBubbleView.swift index 35ca0d89..0b132dc8 100644 --- a/QuickLocation/Section/Home/Bubble/CreateBubbleView.swift +++ b/QuickLocation/Section/Home/Bubble/CreateBubbleView.swift @@ -90,4 +90,8 @@ class CreateBubbleView: UIView { func updateNavTitleForSheet(_ visible: Bool) { navView.titleLabel.text = visible ? "通知您的圈子" : "设置气泡时间" } + + func updateVipAccess(isUnlocked: Bool) { + setupView.updateVipAccess(isUnlocked: isUnlocked) + } } diff --git a/QuickLocation/Section/Home/GroupMemberView.swift b/QuickLocation/Section/Home/GroupMemberView.swift index e4be1bbf..44ea7819 100644 --- a/QuickLocation/Section/Home/GroupMemberView.swift +++ b/QuickLocation/Section/Home/GroupMemberView.swift @@ -158,6 +158,7 @@ class GroupMemberCell: UITableViewCell { ownView.isHidden = !isOwn avaterImgView.setHeadPic(model.displayHeadPic) vipIcon.image = model.vipIcon + vipIcon.isHidden = !model.shouldShowVipAvatarFrame nameLab.text = model.showName // 位置 locationLab.text = "在 " + model.lastLocation diff --git a/QuickLocation/Section/Home/GroupMemberView2.swift b/QuickLocation/Section/Home/GroupMemberView2.swift index 0e83b608..6fd867bb 100644 --- a/QuickLocation/Section/Home/GroupMemberView2.swift +++ b/QuickLocation/Section/Home/GroupMemberView2.swift @@ -10,14 +10,25 @@ import Network import CoreLocation import SwiftyUserDefaults +enum MemberFeatureAccessState: Equatable { + case available + case vipRequired + case privilegeDenied +} + class GroupMemberView2: UIView { private var navBarHeightConstraint: NSLayoutConstraint? private var todayTrackTopToInteraction: NSLayoutConstraint? private var todayTrackTopToMember: NSLayoutConstraint? + private var appUsageTopToPhoneReportConstraint: NSLayoutConstraint? + private var appUsageTopToTodayTrackConstraint: NSLayoutConstraint? + private var todayTrackBottomConstraint: NSLayoutConstraint? private var phoneReportBottomConstraint: NSLayoutConstraint? private var appUsageBottomConstraint: NSLayoutConstraint? + private var isAppUsageVisible = false private var currentMemberModel: GroupMemberModel? + private var currentGroupVip = GroupMemberVip() private var emojiEchoByUserId: [String: String] = [:] private var messageEchoByUserId: [String: String] = [:] private var phoneStatusObserver: NSObjectProtocol? @@ -26,6 +37,7 @@ class GroupMemberView2: UIView { private var localWeatherSnapshotKey: String? private var localWeatherUpdatedAt: Date? private var pendingWeatherLocationKey: String? + private(set) var isTodayTrackVipRequired = false var onCoupleMemberTap: ((GroupMemberModel) -> Void)? private static let weatherRefreshInterval: TimeInterval = 15 * 60 @@ -43,9 +55,11 @@ class GroupMemberView2: UIView { func setupMemberInfo( _ model: GroupMemberModel, isOwner: Bool, - phoneUsage: PhoneUsageTodayModel? + phoneUsage: PhoneUsageTodayModel?, + groupVip: GroupMemberVip ) { currentMemberModel = model + currentGroupVip = groupVip memberNameLab.text = model.showName ownView.isHidden = !isOwner relationIconView.configure(relationIdx: model.extra.relation_idx) @@ -64,9 +78,7 @@ class GroupMemberView2: UIView { } applyPhoneUsage(phoneUsage) - if isCurrentUser { - applyLocalDeviceInfo() - startLocalPhoneStatusObserving() + if isCurrentUser, !isPhoneDeviceVipRequired { requestLocalWeather() } updateRealtimeInteractionVisibility(isCurrentUser: isCurrentUser) @@ -75,6 +87,7 @@ class GroupMemberView2: UIView { func clearMemberInfo() { currentMemberModel = nil + currentGroupVip = GroupMemberVip() memberNameLab.text = "" ownView.isHidden = true relationIconView.configure(relationIdx: "") @@ -92,16 +105,23 @@ class GroupMemberView2: UIView { func updatePhoneUsage(_ phoneUsage: PhoneUsageTodayModel?, for userId: String) { guard currentMemberModel?.user_id == userId else { return } applyPhoneUsage(phoneUsage) - if Self.isCurrentUser(userId) { + if Self.isCurrentUser(userId), !isPhoneDeviceVipRequired { applyLocalDeviceInfo() } } func refreshLocalDeviceInfoIfNeeded() { - guard isShowingCurrentUser else { return } + guard isShowingCurrentUser, !isPhoneDeviceVipRequired else { return } applyLocalDeviceInfo() } + func refreshInterceptState() { + memberCV.reloadData() + coupleLeftSlot.refreshVipVisibility() + coupleRightSlot.refreshVipVisibility() + updateFeatureVisibilityLayout() + } + func applyEmojiEcho(name: String, for userId: String) { emojiEchoByUserId[userId] = name if currentMemberModel?.user_id == userId { @@ -186,7 +206,9 @@ class GroupMemberView2: UIView { } private func applyPhoneUsage(_ usage: PhoneUsageTodayModel?) { - if isShowingCurrentUser { + if isPhoneDeviceVipRequired { + stopLocalPhoneStatusObserving() + } else if isShowingCurrentUser { applyLocalDeviceInfo() startLocalPhoneStatusObserving() } else { @@ -197,51 +219,95 @@ class GroupMemberView2: UIView { applyDeviceInfo(usage?.phoneInfo) } } + applyPhoneDeviceAccessState() if isShowingOfflineOther { phoneReportView.configure(with: nil) appUsageView.configure(with: nil) - applyPrivilegeMasks(appUsagePreview: nil) + applyFeatureAccessStates(appUsagePreview: nil) applyOfflineStayPoints() return } phoneReportView.configure(with: Self.phoneReportPreview(from: usage)) let appUsagePreview = MemberAppUsagePreview(topApps: usage?.topApps ?? []) appUsageView.configure(with: appUsagePreview) - applyPrivilegeMasks(appUsagePreview: appUsagePreview) + applyFeatureAccessStates(appUsagePreview: appUsagePreview) applyStayPoints(usage?.stayPoints ?? []) } var isPhoneReportDenied: Bool { phoneReportView.isDenied } var isAppUsageDenied: Bool { appUsageView.isDenied } + var isPhoneReportVipRequired: Bool { phoneReportView.isVipRequired } + var isAppUsageVipRequired: Bool { appUsageView.isVipRequired } var onPhoneReportRemind: (() -> Void)? var onAppUsageRemind: (() -> Void)? - private func applyPrivilegeMasks(appUsagePreview: MemberAppUsagePreview? = nil) { + private func applyFeatureAccessStates(appUsagePreview: MemberAppUsagePreview?) { guard currentMemberModel != nil else { - phoneReportView.setDenied(false) - appUsageView.setDenied(false) + isTodayTrackVipRequired = false + todayTrackVipView.isHidden = true + phoneReportView.setAccessState(.available) + appUsageView.setAccessState(.available) updateAppUsageVisibility(appUsagePreview != nil) return } let isSelf = isShowingCurrentUser - let privilege = currentMemberModel?.extra.privilege ?? GroupPrivilege() - let phoneDenied = !isSelf && !privilege.phone_report - let usageDenied = !isSelf && !privilege.app_usage_record - phoneReportView.setDenied(phoneDenied) + let memberPrivilege = currentMemberModel?.extra.privilege ?? GroupPrivilege() + let phoneState = Self.accessState( + vipAllowed: currentGroupVip.phone_report, + privilegeAllowed: isSelf || memberPrivilege.phone_report + ) + let appUsageState = Self.accessState( + vipAllowed: currentGroupVip.app_usage_record, + privilegeAllowed: isSelf || memberPrivilege.app_usage_record + ) + + isTodayTrackVipRequired = !isSelf && currentGroupVip.trip_analysis_others == false + todayTrackVipView.isHidden = !isTodayTrackVipRequired + phoneReportView.setAccessState(phoneState) phoneReportView.onDeniedAction = { [weak self] in self?.onPhoneReportRemind?() } - appUsageView.setDenied(usageDenied) + appUsageView.setAccessState(appUsageState) appUsageView.onDeniedAction = { [weak self] in self?.onAppUsageRemind?() } - let showUsage = appUsagePreview != nil || usageDenied - if appUsagePreview == nil, usageDenied { + let showUsage = appUsagePreview != nil || appUsageState != .available + if appUsagePreview == nil, appUsageState != .available { appUsageView.configure(with: nil) } updateAppUsageVisibility(showUsage) } + private static func accessState( + vipAllowed: Bool?, + privilegeAllowed: Bool + ) -> MemberFeatureAccessState { + if vipAllowed == false { + return .vipRequired + } + if !privilegeAllowed { + return .privilegeDenied + } + return .available + } + private var isShowingCurrentUser: Bool { Self.isCurrentUser(currentMemberModel?.user_id) } + private var isPhoneDeviceVipRequired: Bool { + currentMemberModel != nil && !isShowingCurrentUser && currentGroupVip.view_phone == false + } + + private func applyPhoneDeviceAccessState() { + let requiresVip = isPhoneDeviceVipRequired + phoneModelView.isHidden = requiresVip + batteryView.isHidden = requiresVip + networkView.isHidden = requiresVip + weatherView.isHidden = requiresVip + phoneDeviceVipButton.isHidden = !requiresVip + } + + @objc private func handlePhoneDeviceVipTap() { + AppRouter.push(Route.vipRecharge) + } + private static func isCurrentUser(_ userId: String?) -> Bool { let memberId = userId?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" let selfId = AppContextManager.shared.userId.trimmingCharacters(in: .whitespacesAndNewlines) @@ -280,7 +346,7 @@ class GroupMemberView2: UIView { object: nil, queue: .main ) { [weak self] _ in - guard let self, self.isShowingCurrentUser else { return } + guard let self, self.isShowingCurrentUser, !self.isPhoneDeviceVipRequired else { return } self.applyLocalDeviceInfo() } } @@ -309,6 +375,7 @@ class GroupMemberView2: UIView { } private func requestLocalWeather() { + guard !isPhoneDeviceVipRequired else { return } guard let latitude = Defaults[\.currentLatitude], let longitude = Defaults[\.currentLongitude] else { if localWeatherSnapshot == nil { @@ -342,7 +409,7 @@ class GroupMemberView2: UIView { MemberWeatherService.shared.weather(for: location) { [weak self] result in guard let self, self.weatherRequestID == requestID else { return } self.pendingWeatherLocationKey = nil - guard self.isShowingCurrentUser else { return } + guard self.isShowingCurrentUser, !self.isPhoneDeviceVipRequired else { return } switch result { case .success(let snapshot): self.localWeatherSnapshot = snapshot @@ -369,14 +436,20 @@ class GroupMemberView2: UIView { } private func updateAppUsageVisibility(_ visible: Bool) { - if visible { - phoneReportBottomConstraint?.isActive = false - appUsageBottomConstraint?.isActive = true - } else { - appUsageBottomConstraint?.isActive = false - phoneReportBottomConstraint?.isActive = true - } + isAppUsageVisible = visible appUsageView.isHidden = !visible + updateFeatureVisibilityLayout() + } + + private func updateFeatureVisibilityLayout() { + let hidesPhoneReport = AppContextManager.shared.systemConfig?.isIntercept == true + phoneReportView.isHidden = hidesPhoneReport + + appUsageTopToPhoneReportConstraint?.isActive = !hidesPhoneReport + appUsageTopToTodayTrackConstraint?.isActive = hidesPhoneReport + phoneReportBottomConstraint?.isActive = !hidesPhoneReport && !isAppUsageVisible + appUsageBottomConstraint?.isActive = isAppUsageVisible + todayTrackBottomConstraint?.isActive = hidesPhoneReport && !isAppUsageVisible setNeedsLayout() } @@ -594,8 +667,16 @@ class GroupMemberView2: UIView { scrollContentView.addSubview(appUsageView) appUsageView.layoutChain - .topToBottomOfView(phoneReportView, offset: 15) .edgesHorzontal() + appUsageTopToPhoneReportConstraint = appUsageView.topAnchor.constraint( + equalTo: phoneReportView.bottomAnchor, + constant: 15 + ) + appUsageTopToPhoneReportConstraint?.isActive = true + appUsageTopToTodayTrackConstraint = appUsageView.topAnchor.constraint( + equalTo: todayTrackView.bottomAnchor, + constant: 15 + ) phoneReportBottomConstraint = phoneReportView.bottomAnchor.constraint( equalTo: scrollContentView.bottomAnchor, @@ -605,6 +686,10 @@ class GroupMemberView2: UIView { equalTo: scrollContentView.bottomAnchor, constant: -(49 + kSafeBottomMargin) ) + todayTrackBottomConstraint = todayTrackView.bottomAnchor.constraint( + equalTo: scrollContentView.bottomAnchor, + constant: -(49 + kSafeBottomMargin) + ) phoneReportBottomConstraint?.isActive = true return view @@ -864,6 +949,7 @@ class GroupMemberView2: UIView { view.addSubview(batteryView) view.addSubview(networkView) view.addSubview(weatherView) + view.addSubview(phoneDeviceVipButton) phoneModelView.layoutChain .topToBottomOfView(locationLab, offset: 20) @@ -884,6 +970,12 @@ class GroupMemberView2: UIView { .leftToRightOfView(networkView) .right() .widthToView(phoneModelView) + + phoneDeviceVipButton.layoutChain + .centerX() + .centerY(phoneModelView) + .width(174) + .height(34) return view }() @@ -1146,6 +1238,17 @@ class GroupMemberView2: UIView { label.font = .systemFont(ofSize: 12, weight: .medium) return label }() + + private lazy var phoneDeviceVipButton: UIButton = { + let button = UIButton(type: .custom) + button.setTitle("开通会员 解锁功能", for: .normal) + button.setTitleColor(.white, for: .normal) + button.titleLabel?.font = FontManager.boboBold(14) + button.setBackgroundImage(UIImage(named: "VipFeature/narrow_button_bg"), for: .normal) + button.isHidden = true + button.addTarget(self, action: #selector(handlePhoneDeviceVipTap), for: .touchUpInside) + return button + }() // MARK: - 手机报告 / APP使用记录 lazy var phoneReportView = MemberPhoneReportView() @@ -1359,9 +1462,28 @@ class GroupMemberView2: UIView { stayNodataView.layoutChain .topToBottomOfView(stayTxtLab, offset: 14) .leftToView(stayTxtLab) + + view.addSubview(todayTrackVipView) + todayTrackVipView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + todayTrackVipView.topAnchor.constraint(equalTo: infoView.topAnchor), + todayTrackVipView.leadingAnchor.constraint(equalTo: infoView.leadingAnchor), + todayTrackVipView.trailingAnchor.constraint(equalTo: infoView.trailingAnchor), + todayTrackVipView.bottomAnchor.constraint(equalTo: infoView.bottomAnchor) + ]) return view }() + + private lazy var todayTrackVipView: UIImageView = { + let view = UIImageView(image: UIImage(named: "MemberVipRequired/today_track")) + view.contentMode = .scaleAspectFill + view.clipsToBounds = true + view.cornerRadius = 16 + view.isHidden = true + view.isUserInteractionEnabled = false + return view + }() lazy var stayNumLab: UILabel = { let label = UILabel() @@ -1507,7 +1629,11 @@ private final class CoupleMemberSlot: UIControl { avatarImageView.setHeadPic(model?.displayHeadPic) avatarImageView.layer.borderColor = UIColor(hexStr: isSelected ? "#FFD43B" : "#FFFFFF").cgColor nameLabel.text = model?.showName - vipImageView.isHidden = model?.level == 1 || model == nil + refreshVipVisibility() + } + + func refreshVipVisibility() { + vipImageView.isHidden = member?.shouldShowVipAvatarFrame != true } private func setupUI() { diff --git a/QuickLocation/Section/Home/HomeViewController.swift b/QuickLocation/Section/Home/HomeViewController.swift index 09a18d24..4d38ce70 100644 --- a/QuickLocation/Section/Home/HomeViewController.swift +++ b/QuickLocation/Section/Home/HomeViewController.swift @@ -330,7 +330,12 @@ class HomeViewController: BaseViewController { // 今日轨迹二级页 rootView.groupMemberView.todayTrackView.rx.tapGesture.subscribe(onNext: { [weak self] _ in - self?.openTodayTrackDetail() + guard let self else { return } + if self.rootView.groupMemberView.isTodayTrackVipRequired { + AppRouter.push(Route.vipRecharge) + } else { + self.openTodayTrackDetail() + } }).disposed(by: disposeBag) // 实时互动 @@ -344,13 +349,23 @@ class HomeViewController: BaseViewController { // 手机报告二级页 rootView.groupMemberView.phoneReportView.rx.tapGesture.subscribe(onNext: { [weak self] _ in - guard let self, !self.rootView.groupMemberView.isPhoneReportDenied else { return } + guard let self else { return } + if self.rootView.groupMemberView.isPhoneReportVipRequired { + AppRouter.push(Route.vipRecharge) + return + } + guard !self.rootView.groupMemberView.isPhoneReportDenied else { return } self.openPhoneReportDetail() }).disposed(by: disposeBag) // APP 报告二级页 rootView.groupMemberView.appUsageView.rx.tapGesture.subscribe(onNext: { [weak self] _ in - guard let self, !self.rootView.groupMemberView.isAppUsageDenied else { return } + guard let self else { return } + if self.rootView.groupMemberView.isAppUsageVipRequired { + AppRouter.push(Route.vipRecharge) + return + } + guard !self.rootView.groupMemberView.isAppUsageDenied else { return } self.openAppUsageReport() }).disposed(by: disposeBag) @@ -379,6 +394,7 @@ class HomeViewController: BaseViewController { guard let self = self, let model = response.model else { return } Defaults[\.loginToken] = model.token AppContextManager.shared.systemConfig = model.config + self.rootView.groupMemberView.refreshInterceptState() // rootView.searchLottieView.isHidden = model.config?.isIntercept == true self.requestUserInfo { [weak self] in self?.requestGroupInfo() @@ -595,7 +611,7 @@ class HomeViewController: BaseViewController { done(true) }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) done(false) }) .disposed(by: disposeBag) @@ -660,7 +676,7 @@ class HomeViewController: BaseViewController { }, onError: { [weak self] error in guard let self, self.groupInfoRequestID == requestID else { return } if showError { - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) } if retryAllowed { self.scheduleGroupDataRetry(changes: changes) @@ -833,7 +849,7 @@ class HomeViewController: BaseViewController { return } - self.viewModel.updateMembers(response.list) + self.viewModel.updateGroupUsers(response.list, vip: response.vip) // 成员接口是气泡结束的权威来源:status=0 时重新显示地图点。 self.syncMemberAnnotations(self.viewModel.memberList) self.refreshMQTTSubscriptions(self.viewModel.memberList) @@ -855,7 +871,7 @@ class HomeViewController: BaseViewController { self.groupInfoRequestID == requestID, self.viewModel.groupModel?.default_group_key == groupKey else { return } if showError { - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) } if retryAllowed { self.scheduleGroupDataRetry(changes: changes) @@ -945,7 +961,7 @@ class HomeViewController: BaseViewController { GroupService.operate(opType: "setdefault", requestData: ["group_key" : groupKey]) .subscribe(onNext: { _ in }, onError: { error in - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } @@ -1168,7 +1184,8 @@ class HomeViewController: BaseViewController { rootView.groupMemberView.setupMemberInfo( model, isOwner: viewModel.isGroupOwn(id: model.user_id), - phoneUsage: usage + phoneUsage: usage, + groupVip: viewModel.groupVip ) } @@ -1424,7 +1441,7 @@ extension HomeViewController { self?.queryUnlockRequests() done(true) }, onError: { error in - DLToast.show(text: error.gatewayMessage ?? "解锁失败") + DLToast.show(error, fallbackText: "解锁失败") done(false) }) .disposed(by: disposeBag) diff --git a/QuickLocation/Section/Home/HomeViewModel.swift b/QuickLocation/Section/Home/HomeViewModel.swift index 71411cd9..a2483ca5 100644 --- a/QuickLocation/Section/Home/HomeViewModel.swift +++ b/QuickLocation/Section/Home/HomeViewModel.swift @@ -87,6 +87,7 @@ class HomeViewModel { } private(set) var memberList: [GroupMemberModel] = [] + private(set) var groupVip = GroupMemberVip() func markMemberInBubble(userId: String) { updateMemberStatus(userId: userId, status: 2) @@ -112,7 +113,13 @@ class HomeViewModel { sectionedItems.onNext(memberList.mapSection()) } + func updateGroupUsers(_ list: [GroupMemberModel], vip: GroupMemberVip) { + groupVip = vip + updateMembers(list) + } + func clearMembers() { + groupVip = GroupMemberVip() updateMembers([]) } diff --git a/QuickLocation/Section/Home/LockedAppPopView.swift b/QuickLocation/Section/Home/LockedAppPopView.swift index 0e4687aa..72e060ef 100644 --- a/QuickLocation/Section/Home/LockedAppPopView.swift +++ b/QuickLocation/Section/Home/LockedAppPopView.swift @@ -339,7 +339,7 @@ final class LockedAppPopView: UIView { DLToast.show(text: "已向圈主发送解锁请求") Self.dismiss() }, onError: { error in - DLToast.show(text: error.gatewayMessage ?? "发送失败") + DLToast.show(error, fallbackText: "发送失败") }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Home/MemberAppUsageView.swift b/QuickLocation/Section/Home/MemberAppUsageView.swift index cf31fc0f..ec5606bd 100644 --- a/QuickLocation/Section/Home/MemberAppUsageView.swift +++ b/QuickLocation/Section/Home/MemberAppUsageView.swift @@ -74,8 +74,10 @@ final class MemberAppUsageView: UIView { private let usageTitleLab = UILabel() private let topTitleLab = UILabel() private let topStack = UIStackView() + private let vipRequiredView = UIImageView() private let deniedOverlay = PrivilegeDeniedOverlay() private(set) var isDenied = false + private(set) var isVipRequired = false var onDeniedAction: (() -> Void)? override init(frame: CGRect) { @@ -88,8 +90,9 @@ final class MemberAppUsageView: UIView { fatalError("init(coder:) has not been implemented") } - func setDenied(_ denied: Bool) { - isDenied = denied + func setAccessState(_ state: MemberFeatureAccessState) { + isDenied = state == .privilegeDenied + isVipRequired = state == .vipRequired deniedOverlay.configure( title: "TA未开启设置", message: "无法查看app使用记录", @@ -97,9 +100,13 @@ final class MemberAppUsageView: UIView { imageName: "PrivilegeDenied/app_usage" ) deniedOverlay.onAction = { [weak self] in self?.onDeniedAction?() } - deniedOverlay.setVisible(denied) + deniedOverlay.setVisible(isDenied) deniedOverlay.layer.cornerRadius = cardView.layer.cornerRadius - gestureRecognizers?.forEach { $0.isEnabled = !denied } + vipRequiredView.isHidden = !isVipRequired + [usageTitleLab, topTitleLab, donutView, totalTimeLab, totalHintLab, topStack].forEach { + $0.isHidden = isVipRequired + } + gestureRecognizers?.forEach { $0.isEnabled = !isDenied } } func configure(with preview: MemberAppUsagePreview?) { @@ -200,6 +207,14 @@ final class MemberAppUsageView: UIView { .left(160) .right(14) + vipRequiredView.image = UIImage(named: "MemberVipRequired/app_usage") + vipRequiredView.contentMode = .scaleAspectFill + vipRequiredView.clipsToBounds = true + vipRequiredView.isHidden = true + vipRequiredView.isUserInteractionEnabled = false + cardView.addSubview(vipRequiredView) + vipRequiredView.layoutChain.edges() + cardView.bringSubviewToFront(deniedOverlay) } diff --git a/QuickLocation/Section/Home/MemberPhoneReportView.swift b/QuickLocation/Section/Home/MemberPhoneReportView.swift index d58b44ad..1b9eeca1 100644 --- a/QuickLocation/Section/Home/MemberPhoneReportView.swift +++ b/QuickLocation/Section/Home/MemberPhoneReportView.swift @@ -52,8 +52,10 @@ final class MemberPhoneReportView: UIView { private let unlockIcon = UIImageView() private let unlockTitleLab = UILabel() private let unlockValueLab = UILabel() + private let vipRequiredView = UIImageView() private let deniedOverlay = PrivilegeDeniedOverlay() private(set) var isDenied = false + private(set) var isVipRequired = false var onDeniedAction: (() -> Void)? override init(frame: CGRect) { @@ -66,8 +68,9 @@ final class MemberPhoneReportView: UIView { fatalError("init(coder:) has not been implemented") } - func setDenied(_ denied: Bool) { - isDenied = denied + func setAccessState(_ state: MemberFeatureAccessState) { + isDenied = state == .privilegeDenied + isVipRequired = state == .vipRequired deniedOverlay.configure( title: "TA未开启设置", message: "无法查看手机报告", @@ -75,9 +78,12 @@ final class MemberPhoneReportView: UIView { imageName: "PrivilegeDenied/phone_report" ) deniedOverlay.onAction = { [weak self] in self?.onDeniedAction?() } - deniedOverlay.setVisible(denied) + deniedOverlay.setVisible(isDenied) deniedOverlay.layer.cornerRadius = cardView.layer.cornerRadius - gestureRecognizers?.forEach { $0.isEnabled = !denied } + vipRequiredView.isHidden = !isVipRequired + leftPanel.isHidden = isVipRequired + rightPanel.isHidden = isVipRequired + gestureRecognizers?.forEach { $0.isEnabled = !isDenied } } func configure(with preview: MemberPhoneReportPreview?) { @@ -259,6 +265,14 @@ final class MemberPhoneReportView: UIView { .leftToRightOfView(unlockValueLab, offset: 3) .bottomToView(unlockValueLab, offset: -4) + vipRequiredView.image = UIImage(named: "MemberVipRequired/phone_report") + vipRequiredView.contentMode = .scaleAspectFill + vipRequiredView.clipsToBounds = true + vipRequiredView.isHidden = true + vipRequiredView.isUserInteractionEnabled = false + cardView.addSubview(vipRequiredView) + vipRequiredView.layoutChain.edges() + cardView.bringSubviewToFront(deniedOverlay) } } diff --git a/QuickLocation/Section/Home/SOS/SOSListViewController.swift b/QuickLocation/Section/Home/SOS/SOSListViewController.swift index b5f43344..82f3408b 100644 --- a/QuickLocation/Section/Home/SOS/SOSListViewController.swift +++ b/QuickLocation/Section/Home/SOS/SOSListViewController.swift @@ -137,7 +137,7 @@ final class SOSListViewController: BaseViewController { self.rootView.tableView.reloadData() }, onError: { [weak self] error in self?.finishLoading() - DLToast.showError(text: error.gatewayMessage ?? error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Home/SOS/SOSViewController.swift b/QuickLocation/Section/Home/SOS/SOSViewController.swift index da1070a5..2cef329c 100644 --- a/QuickLocation/Section/Home/SOS/SOSViewController.swift +++ b/QuickLocation/Section/Home/SOS/SOSViewController.swift @@ -83,7 +83,7 @@ final class SOSViewController: BaseViewController { self.rootView.setState(model.status == 1 ? .active : .idle) }, onError: { [weak self] error in guard let self, requestVersion == self.statusRequestVersion else { return } - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift index bfed7086..d3ec9131 100644 --- a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift +++ b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultVC.swift @@ -43,14 +43,20 @@ class SearchLocationResultVC: BaseViewController { private func applyResultPresentation() { handleCode() let isVip = isVipUnlocked() - rootView.vipMaskView.isHidden = isVip + rootView.updateVipAccess(isUnlocked: isVip) if !isVip { - rootView.actionBtn.setTitle("开通会员", for: .normal) + rootView.actionBtn.setTitle("开通会员 解锁功能", for: .normal) rootView.actionBtn.isHidden = false } } private func reactiveAction() { + rootView.vipMaskView.rx.tap + .subscribe(onNext: { + AppRouter.push(Route.vipRecharge) + }) + .disposed(by: disposeBag) + rootView.actionBtn.rx.tap.subscribe(onNext: { _ in guard self.isVipUnlocked() else { AppRouter.push(Route.vipRecharge) diff --git a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift index 857db5eb..d0d8d022 100644 --- a/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift +++ b/QuickLocation/Section/Home/SearchLocation/SearchLocationResultView.swift @@ -9,6 +9,7 @@ import Lottie class SearchLocationResultView: UIView { let headerView = SearchLocationHeaderView() + private var vipResultHeightConstraint: NSLayoutConstraint? private func setupUI() { addSubview(navBgView) @@ -44,6 +45,17 @@ class SearchLocationResultView: UIView { .height(showInviteRow ? 72 : 0) } + func updateVipAccess(isUnlocked: Bool) { + normalResultContentView.isHidden = !isUnlocked + vipMaskView.isHidden = isUnlocked + vipOfferImageView.isHidden = isUnlocked + vipResultHeightConstraint?.isActive = !isUnlocked + actionBtn.setBackgroundImage( + UIImage(named: isUnlocked ? "Common/button_bg_2" : "VipFeature/wide_button_bg"), + for: .normal + ) + } + lazy var navBgView: UIImageView = { let iv = UIImageView() iv.image = UIImage(named: "Common/navBar_bg_2") @@ -73,6 +85,7 @@ class SearchLocationResultView: UIView { resultCard.layoutChain .topToBottomOfView(headerView, offset: 20) .edgesHorzontal(15) + vipResultHeightConstraint = resultCard.heightAnchor.constraint(equalToConstant: 158) contentView.addSubview(actionBtn) actionBtn.layoutChain @@ -81,6 +94,15 @@ class SearchLocationResultView: UIView { .height(56) .bottom(kSafeBottomMargin + 30) + contentView.addSubview(vipOfferImageView) + vipOfferImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + vipOfferImageView.trailingAnchor.constraint(equalTo: actionBtn.trailingAnchor, constant: -6), + vipOfferImageView.bottomAnchor.constraint(equalTo: actionBtn.topAnchor, constant: 10), + vipOfferImageView.widthAnchor.constraint(equalToConstant: 94), + vipOfferImageView.heightAnchor.constraint(equalToConstant: 32) + ]) + return view }() @@ -89,8 +111,25 @@ class SearchLocationResultView: UIView { card.backgroundColor = UIColor(hexStr: "#EFF9FF") card.cornerRadius = 16 + card.addSubview(resultStackView) + resultStackView.layoutChain.edges() + resultStackView.addArrangedSubview(normalResultContentView) + + card.addSubview(vipMaskView) + vipMaskView.layoutChain.edges() + return card + }() + + private lazy var resultStackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + return stackView + }() + + private lazy var normalResultContentView: UIView = { + let contentView = UIView() let locationRow = UIView() - card.addSubview(locationRow) + contentView.addSubview(locationRow) let pinIcon = UIImageView(image: UIImage(named: "Home/member_location")) pinIcon.contentMode = .scaleAspectFit @@ -115,7 +154,7 @@ class SearchLocationResultView: UIView { let pillContainer = UIView() pillContainer.backgroundColor = .white pillContainer.cornerRadius = 14 - card.addSubview(pillContainer) + contentView.addSubview(pillContainer) pillContainer.addSubview(statusPillLab) statusPillLab.layoutChain.edgesHorzontal(58).edgesVertical(13) pillContainer.layoutChain @@ -123,30 +162,27 @@ class SearchLocationResultView: UIView { .centerX() .height(48) - card.addSubview(disclaimerIcon) + contentView.addSubview(disclaimerIcon) disclaimerIcon.layoutChain .topToBottomOfView(pillContainer, offset: 14) .left(24) .width(12) .height(12) - card.addSubview(disclaimerLab) + contentView.addSubview(disclaimerLab) disclaimerLab.layoutChain .topToBottomOfView(pillContainer, offset: 11) .leftToRightOfView(disclaimerIcon, offset: 3) .right(23) - card.addSubview(inviteView) + contentView.addSubview(inviteView) inviteView.layoutChain .topToBottomOfView(disclaimerLab, offset: 0) .edgesHorzontal(12) .height(0) .bottom(16) - card.addSubview(vipMaskView) - vipMaskView.layoutChain.edges() - - return card + return contentView }() lazy var phoneAreaLab: UILabel = { @@ -197,6 +233,13 @@ class SearchLocationResultView: UIView { return btn }() + private lazy var vipOfferImageView: UIImageView = { + let view = UIImageView(image: UIImage(named: "VipFeature/limited_offer")) + view.contentMode = .scaleAspectFit + view.isHidden = true + return view + }() + var inviteBtn: UIButton { actionBtn } lazy var inviteView: UIView = { @@ -240,10 +283,9 @@ class SearchLocationResultView: UIView { return btn }() - lazy var vipMaskView: UIImageView = { - let view = UIImageView() - view.image = UIImage(named: "SearchLocation/vip_mask") - view.contentMode = .scaleAspectFill + lazy var vipMaskView: UIButton = { + let view = UIButton(type: .custom) + view.setBackgroundImage(UIImage(named: "VipFeature/realtime_location"), for: .normal) view.isHidden = true return view }() diff --git a/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailVC.swift b/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailVC.swift index 72f891b4..73191533 100644 --- a/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailVC.swift +++ b/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailVC.swift @@ -84,6 +84,11 @@ final class TodayTrackDetailVC: BaseViewController { } } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + viewModel.start() + } + override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() let width = rootView.dateCV.bounds.width @@ -125,6 +130,12 @@ final class TodayTrackDetailVC: BaseViewController { }) .disposed(by: disposeBag) + rootView.vipRequiredBtn.rx.tap + .subscribe(onNext: { + AppRouter.push(Route.vipRecharge) + }) + .disposed(by: disposeBag) + viewModel.displayedTrips .observe(on: MainScheduler.instance) .subscribe(onNext: { [weak self] trips in @@ -135,7 +146,22 @@ final class TodayTrackDetailVC: BaseViewController { viewModel.isEmpty .observe(on: MainScheduler.instance) .subscribe(onNext: { [weak self] empty in - self?.rootView.emptyLab.isHidden = !empty + guard let self, !self.viewModel.isVipRequired.value else { return } + self.rootView.emptyLab.isHidden = !empty + }) + .disposed(by: disposeBag) + + viewModel.isVipRequired + .observe(on: MainScheduler.instance) + .distinctUntilChanged() + .subscribe(onNext: { [weak self] required in + guard let self else { return } + self.stopPlayback(resetProgress: true) + self.rootView.setVipRequired(required) + self.updateSheetHeight(isVipRequired: required) + if !required { + self.rootView.emptyLab.isHidden = !self.viewModel.isEmpty.value + } }) .disposed(by: disposeBag) @@ -174,7 +200,14 @@ final class TodayTrackDetailVC: BaseViewController { }) .disposed(by: disposeBag) - viewModel.start() + } + + private func updateSheetHeight(isVipRequired: Bool) { + guard let constraint = rootView.sheetHeightConstraint else { return } + let minHeight: CGFloat = 200 + kSafeBottomMargin + let maxHeight: CGFloat = UIScreen.main.bounds.height * 0.7 + let vipHeight: CGFloat = UIScreen.main.bounds.height * 0.47 + constraint.constant = isVipRequired ? min(maxHeight, max(minHeight, vipHeight)) : minHeight } private func bindSheetPan() { diff --git a/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailView.swift b/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailView.swift index 91589403..806c3790 100644 --- a/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailView.swift +++ b/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailView.swift @@ -150,6 +150,14 @@ final class TodayTrackDetailView: UIView { return lab }() + let vipRequiredBtn: UIButton = { + let btn = UIButton(type: .custom) + btn.setImage(UIImage(named: "Home/HistoryTrack/vip_required"), for: .normal) + btn.imageView?.contentMode = .scaleAspectFit + btn.isHidden = true + return btn + }() + private(set) var sheetHeightConstraint: NSLayoutConstraint? override init(frame: CGRect) { @@ -263,6 +271,20 @@ final class TodayTrackDetailView: UIView { emptyLab.layoutChain .centerX() .topToBottomOfView(dateBar, offset: 40) + + sheetView.addSubview(vipRequiredBtn) + vipRequiredBtn.layoutChain + .topToBottomOfView(dateBar, offset: 28) + .centerX() + .width(303) + .height(139) + } + + func setVipRequired(_ required: Bool) { + vipRequiredBtn.isHidden = !required + timelineTV.isHidden = required + emptyLab.isHidden = true + playbackBar.isHidden = required } func cleanupMap() { diff --git a/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailViewModel.swift b/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailViewModel.swift index bf54888e..e3f37a92 100644 --- a/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailViewModel.swift +++ b/QuickLocation/Section/Home/TodayTrackDetail/TodayTrackDetailViewModel.swift @@ -23,6 +23,7 @@ final class TodayTrackDetailViewModel { let selectedTripId = BehaviorRelay(value: nil) let displayedTrips = BehaviorRelay<[ScheduleRecordModel]>(value: []) let isEmpty = BehaviorRelay(value: true) + let isVipRequired = BehaviorRelay(value: false) let loading = BehaviorRelay(value: false) private let disposeBag = DisposeBag() @@ -75,6 +76,7 @@ final class TodayTrackDetailViewModel { selectedTripId.accept(nil) trips.accept([]) displayedTrips.accept([]) + isVipRequired.accept(false) isEmpty.accept(false) loadTrips(userId: userId, dateKey: dateKey) } @@ -93,14 +95,19 @@ final class TodayTrackDetailViewModel { .subscribe(onNext: { [weak self] response in guard let self, self.requestToken == token else { return } self.applyTrips(response.trips) - }, onError: { [weak self] _ in + }, onError: { [weak self] error in guard let self, self.requestToken == token else { return } + if error.gatewayStatusCode == 22000 { + self.applyVipRequired() + return + } self.applyTrips([]) }) .disposed(by: disposeBag) } private func applyTrips(_ list: [ScheduleRecordModel]) { + isVipRequired.accept(false) let sorted = list.sorted { $0.start_time < $1.start_time } trips.accept(sorted) if selectedTripId.value == nil || !sorted.contains(where: { $0.id == selectedTripId.value }) { @@ -110,6 +117,15 @@ final class TodayTrackDetailViewModel { loading.accept(false) } + private func applyVipRequired() { + selectedTripId.accept(nil) + trips.accept([]) + displayedTrips.accept([]) + isEmpty.accept(false) + isVipRequired.accept(true) + loading.accept(false) + } + private func applyDisplayedTrips() { let all = trips.value if let id = selectedTripId.value, let one = all.first(where: { $0.id == id }) { diff --git a/QuickLocation/Section/LockDistract/LockDistractVC.swift b/QuickLocation/Section/LockDistract/LockDistractVC.swift index f755cb5a..ee78245e 100644 --- a/QuickLocation/Section/LockDistract/LockDistractVC.swift +++ b/QuickLocation/Section/LockDistract/LockDistractVC.swift @@ -13,10 +13,12 @@ final class LockDistractVC: BaseViewController { private var groupModel: GroupModel? private var ownedGroups: [GroupInfoModel] = [] private var activeGroupKey: String = "" + private var groupVip = GroupMemberVip() private var members: [GroupMemberModel] = [] private var selectedIndex = 0 private var lockAppsDisposable: Disposable? private let lockStateSubscriptionOwner = UUID() + private var hasAppeared = false override var isNavigationBarHidden: Bool { true } @@ -29,9 +31,18 @@ final class LockDistractVC: BaseViewController { super.viewDidLoad() view.backgroundColor = UIColor(hexStr: "#FAFAFA") bind() + applyGroupVip(groupVip) loadGroupMembers() } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + if hasAppeared { + refreshGroupVip() + } + hasAppeared = true + } + @MainActor deinit { MQTTService.shared.updateLockStateSubscriptions( owner: lockStateSubscriptionOwner, @@ -145,6 +156,7 @@ final class LockDistractVC: BaseViewController { private func loadUsers(for groupKey: String) { guard !groupKey.isEmpty else { + applyGroupVip(GroupMemberVip()) applyMembers([]) return } @@ -154,9 +166,11 @@ final class LockDistractVC: BaseViewController { DLToast.showError(text: response.message ?? "获取圈子成员失败") return } - self?.applyMembers(response.list) + guard let self, self.activeGroupKey == groupKey else { return } + self.applyGroupVip(response.vip) + self.applyMembers(response.list) }, onError: { error in - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } @@ -173,6 +187,28 @@ final class LockDistractVC: BaseViewController { loadLockableApps() } + private var isAppLockVipUnlocked: Bool { + groupVip.app_lock == true + } + + private func applyGroupVip(_ vip: GroupMemberVip) { + groupVip = vip + rootView.updateVipAccess(isUnlocked: isAppLockVipUnlocked) + } + + private func refreshGroupVip() { + let groupKey = activeGroupKey + guard !groupKey.isEmpty else { return } + GroupService.groupUsers(groupKey: groupKey) + .subscribe(onNext: { [weak self] response in + guard let self, + self.activeGroupKey == groupKey, + response.isValid(for: groupKey) else { return } + self.applyGroupVip(response.vip) + }, onError: { _ in }) + .disposed(by: disposeBag) + } + private func stepMember(_ delta: Int) { guard !members.isEmpty else { return } let count = members.count @@ -258,7 +294,7 @@ final class LockDistractVC: BaseViewController { self.rootView.configureLockableApps([]) self.rootView.configureLocked(false) self.rootView.setTodayLockCount(0) - DLToast.show(text: error.gatewayMessage ?? "获取可锁应用失败") + DLToast.show(error, fallbackText: "获取可锁应用失败") }) lockAppsDisposable?.disposed(by: disposeBag) } @@ -290,10 +326,11 @@ final class LockDistractVC: BaseViewController { } DLToast.showLoading() UserService.requestPhoneUnlock(os: os, groupKey: activeGroupKey, tokens: tokens) - .subscribe(onNext: { _ in + .subscribe(onNext: { [weak self] _ in DLToast.show(text: "已向圈主发送解锁请求") + self?.refreshGroupVip() }, onError: { error in - DLToast.show(text: error.gatewayMessage ?? "发送失败") + DLToast.show(error, fallbackText: "发送失败") }) .disposed(by: disposeBag) } @@ -322,14 +359,19 @@ final class LockDistractVC: BaseViewController { self?.rootView.lockBtn.isEnabled = true DLToast.show(text: "已解锁") self?.loadLockableApps() + self?.refreshGroupVip() }, onError: { [weak self] error in self?.rootView.lockBtn.isEnabled = true - DLToast.show(text: error.gatewayMessage ?? "解锁失败") + DLToast.show(error, fallbackText: "解锁失败") }) .disposed(by: disposeBag) } private func performPrimaryAction() { + if rootView.primaryAction == .lock, !isAppLockVipUnlocked { + AppRouter.push(Route.vipRecharge) + return + } switch rootView.primaryAction { case .requestUnlock: requestUnlockForLockedApps() @@ -343,6 +385,10 @@ final class LockDistractVC: BaseViewController { } private func lockSelectedApps() { + guard isAppLockVipUnlocked else { + AppRouter.push(Route.vipRecharge) + return + } guard let member = selectedMember, !activeGroupKey.isEmpty else { DLToast.show(text: "请选择要锁定的成员") return @@ -368,9 +414,10 @@ final class LockDistractVC: BaseViewController { self?.rootView.lockBtn.isEnabled = true DLToast.show(text: "锁定成功") self?.loadLockableApps() + self?.refreshGroupVip() }, onError: { [weak self] error in self?.rootView.lockBtn.isEnabled = true - DLToast.show(text: error.gatewayMessage ?? "锁定失败") + DLToast.show(error, fallbackText: "锁定失败") }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/LockDistract/LockDistractView.swift b/QuickLocation/Section/LockDistract/LockDistractView.swift index c3012dde..92821aba 100644 --- a/QuickLocation/Section/LockDistract/LockDistractView.swift +++ b/QuickLocation/Section/LockDistract/LockDistractView.swift @@ -35,6 +35,7 @@ final class LockDistractView: UIView { private(set) var isLocked = false private(set) var isCurrentUser = false private(set) var primaryAction: LockDistractPrimaryAction = .lock + private(set) var isVipUnlocked = true private let copyMaxLength = 20 private var lockBtnHeightConstraint: NSLayoutConstraint? private var bottomStackToAppsConstraint: NSLayoutConstraint? @@ -110,6 +111,11 @@ final class LockDistractView: UIView { appCollectionView.reloadData() } + func updateVipAccess(isUnlocked: Bool) { + isVipUnlocked = isUnlocked + applyLockedState() + } + var selectedLockApps: [PhoneLockAppItem] { lockableApps.enumerated().compactMap { index, app in selectedAppIndexes.contains(index) ? app : nil @@ -167,16 +173,23 @@ final class LockDistractView: UIView { appCollectionView.reloadData() lockBtn.isHidden = lockedByOthers lockBtnHeightConstraint?.constant = lockedByOthers ? 0 : 56 + vipOfferImageView.isHidden = lockedByOthers || primaryAction != .lock || isVipUnlocked switch primaryAction { case .lock: tipLab.text = "锁定功能需要在对方开启权限情况下才能使用哟~" - lockBtn.setTitle("锁定", for: .normal) + lockBtn.setTitle(isVipUnlocked ? "锁定" : "开通会员 解锁功能", for: .normal) + lockBtn.setBackgroundImage( + UIImage(named: isVipUnlocked ? "Common/button_bg_2" : "VipFeature/wide_button_bg"), + for: .normal + ) case .requestUnlock: tipLab.text = "已被其他圈主锁定,请先申请解锁哟~" lockBtn.setTitle("请求解锁", for: .normal) + lockBtn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) case .unlock: tipLab.text = "TA已经被你锁定,解锁后才能重新设置哟~" lockBtn.setTitle("解锁", for: .normal) + lockBtn.setBackgroundImage(UIImage(named: "Common/button_bg_2"), for: .normal) case .hidden: tipLab.text = "该成员的APP已被其他圈主锁定~" } @@ -195,6 +208,7 @@ final class LockDistractView: UIView { addSubview(footerBar) footerBar.addSubview(tipRow) footerBar.addSubview(lockBtn) + footerBar.addSubview(vipOfferImageView) contentView.addSubview(navBgView) contentView.addSubview(statsRow) @@ -230,6 +244,14 @@ final class LockDistractView: UIView { .bottomToTopOfView(lockBtn, offset: -8) .top(10) + vipOfferImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + vipOfferImageView.trailingAnchor.constraint(equalTo: lockBtn.trailingAnchor, constant: -6), + vipOfferImageView.bottomAnchor.constraint(equalTo: lockBtn.topAnchor, constant: 10), + vipOfferImageView.widthAnchor.constraint(equalToConstant: 94), + vipOfferImageView.heightAnchor.constraint(equalToConstant: 32) + ]) + scrollView.layoutChain .top() .edgesHorzontal() @@ -705,6 +727,13 @@ final class LockDistractView: UIView { return btn }() + lazy var vipOfferImageView: UIImageView = { + let view = UIImageView(image: UIImage(named: "VipFeature/limited_offer")) + view.contentMode = .scaleAspectFit + view.isHidden = true + return view + }() + private func makeSectionTitle(_ text: String) -> UIView { let row = UIView() let star = UIImageView(image: UIImage(named: "LockDistract/section_star")) diff --git a/QuickLocation/Section/Login/LoginView.swift b/QuickLocation/Section/Login/LoginView.swift index 86a9b38a..8344608e 100644 --- a/QuickLocation/Section/Login/LoginView.swift +++ b/QuickLocation/Section/Login/LoginView.swift @@ -85,9 +85,11 @@ class LoginView: UIView { addSubview(rightSeparator) addSubview(agreementView) - agreementView.addSubview(checkBox) + addSubview(checkBox) + agreementView.addSubview(agreementTV) agreementView.addSubview(agreementLabel) +// agreementView.addSubview(checkBox) bgMaskImage.layoutChain.edges(excludingEdge: .bottom).heightToWidth(320/375) @@ -176,15 +178,13 @@ class LoginView: UIView { agreementLabel.layoutChain.edges() checkBox.layoutChain - .left() - .centerY() + .rightToLeftOfView(agreementView, offset: 0) + .centerY(agreementView) .width(12) .height(12) agreementTV.layoutChain - .leftToRightOfView(checkBox, offset: 0) - .right() - .top() + .edges() phoneLoginBtn.layoutChain .bottom(kSafeBottomMargin + 30) @@ -457,7 +457,7 @@ class LoginView: UIView { let btn = UIButton(type: .custom) btn.setImage(UIImage(named: "Login/checkbox"), for: .normal) btn.setImage(UIImage(named: "Login/selected"), for: .selected) - btn.extendEdgeInsets = UIEdgeInsets(top: 20, left: 100, bottom: 100, right: 20) + btn.extendEdgeInsets = UIEdgeInsets(top: 20, left: 150, bottom: 150, right: 50) return btn }() diff --git a/QuickLocation/Section/Login/LoginViewController.swift b/QuickLocation/Section/Login/LoginViewController.swift index 1b961aca..1ed06bab 100644 --- a/QuickLocation/Section/Login/LoginViewController.swift +++ b/QuickLocation/Section/Login/LoginViewController.swift @@ -66,8 +66,8 @@ class LoginViewController: BaseViewController { return } - guard let phone = self.rootView.phoneInputTF.text, !phone.isEmpty else { - DLToast.showError(text: "请输入手机号码") + guard let phone = self.rootView.phoneInputTF.text, !phone.isEmpty, phone.count == 11 else { + DLToast.showError(text: "请输入正确手机号码") return } diff --git a/QuickLocation/Section/Login/OneTapLoginView.swift b/QuickLocation/Section/Login/OneTapLoginView.swift index 59bc8a03..fa80dd05 100644 --- a/QuickLocation/Section/Login/OneTapLoginView.swift +++ b/QuickLocation/Section/Login/OneTapLoginView.swift @@ -66,7 +66,8 @@ class OneTapLoginView: UIView { inputContainerView.addSubview(loginButton) addSubview(agreementView) - agreementView.addSubview(checkBox) + addSubview(checkBox) +// agreementView.addSubview(checkBox) agreementView.addSubview(agreementLabel) agreementView.addSubview(agreementTV) @@ -107,8 +108,8 @@ class OneTapLoginView: UIView { .edgesHorzontal(30) checkBox.layoutChain - .left() - .top(10) + .rightToLeftOfView(agreementView, offset: 0) + .centerY(agreementView) .width(12) .height(12) @@ -119,10 +120,7 @@ class OneTapLoginView: UIView { .bottom() agreementTV.layoutChain - .leftToRightOfView(checkBox, offset: 0) - .right() - .top() - .bottom() + .edges() } override init(frame: CGRect) { diff --git a/QuickLocation/Section/Mine/Account/AccountVC.swift b/QuickLocation/Section/Mine/Account/AccountVC.swift index 6dca3222..18bf5b16 100644 --- a/QuickLocation/Section/Mine/Account/AccountVC.swift +++ b/QuickLocation/Section/Mine/Account/AccountVC.swift @@ -122,7 +122,7 @@ class AccountVC: BaseViewController { NotificationCenter.default.post(name: .RefreshUserConfigNotification, object: nil) }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } @@ -140,7 +140,7 @@ class AccountVC: BaseViewController { NotificationCenter.default.post(name: .RefreshUserConfigNotification, object: nil) }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } @@ -156,7 +156,7 @@ class AccountVC: BaseViewController { NotificationCenter.default.post(name: .RefreshUserConfigNotification, object: nil) }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }).disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Mine/Feedback/FeedbackVC.swift b/QuickLocation/Section/Mine/Feedback/FeedbackVC.swift index 61fd8f49..e091cb77 100644 --- a/QuickLocation/Section/Mine/Feedback/FeedbackVC.swift +++ b/QuickLocation/Section/Mine/Feedback/FeedbackVC.swift @@ -194,7 +194,7 @@ final class FeedbackVC: BaseViewController { pendingDraft = nil isSubmitting = false rootView.setSubmitting(false) - DLToast.show(text: error.localizedDescription) + DLToast.show(error) } private func compressedJPEG(from image: UIImage) -> Data? { diff --git a/QuickLocation/Section/Mine/MineViewController.swift b/QuickLocation/Section/Mine/MineViewController.swift index aa3f3775..732af8c6 100644 --- a/QuickLocation/Section/Mine/MineViewController.swift +++ b/QuickLocation/Section/Mine/MineViewController.swift @@ -127,7 +127,7 @@ final class MineViewController: BaseViewController { groupInfo: response.model ) }, onError: { error in - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Mine/MoodStatus/MoodStatusVC.swift b/QuickLocation/Section/Mine/MoodStatus/MoodStatusVC.swift index ba4f75f1..12e7af52 100644 --- a/QuickLocation/Section/Mine/MoodStatus/MoodStatusVC.swift +++ b/QuickLocation/Section/Mine/MoodStatus/MoodStatusVC.swift @@ -79,7 +79,7 @@ final class MoodStatusVC: BaseViewController { } }, onError: { [weak self] error in guard let self, requestVersion == self.statusRequestVersion else { return } - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Mine/MyProfile/AvatarIconListVC.swift b/QuickLocation/Section/Mine/MyProfile/AvatarIconListVC.swift index 40723101..511ffb4d 100644 --- a/QuickLocation/Section/Mine/MyProfile/AvatarIconListVC.swift +++ b/QuickLocation/Section/Mine/MyProfile/AvatarIconListVC.swift @@ -84,7 +84,7 @@ class AvatarIconListVC: BaseViewController { self.rootView.setPreviewImage(image) self.onSelectIcon?(url) }, onError: { error in - DLToast.show(text: error.gatewayMessage ?? "更换失败") + DLToast.show(error, fallbackText: "更换失败") }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Mine/PrivacySettings/PrivacySettingsViewController.swift b/QuickLocation/Section/Mine/PrivacySettings/PrivacySettingsViewController.swift index abaf6ccc..935f5849 100644 --- a/QuickLocation/Section/Mine/PrivacySettings/PrivacySettingsViewController.swift +++ b/QuickLocation/Section/Mine/PrivacySettings/PrivacySettingsViewController.swift @@ -93,7 +93,7 @@ final class PrivacySettingsViewController: BaseViewController { }, onError: { [weak self] error in self?.groups = [] self?.rootView.configure(groups: [], selectedGroupKey: "") - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } @@ -127,7 +127,7 @@ final class PrivacySettingsViewController: BaseViewController { }, onError: { [weak self] error in self?.rootView.setSettingsEnabled(!(self?.groups.isEmpty ?? true)) self?.applySelectedPrivilege() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } @@ -242,7 +242,7 @@ final class PrivacySettingsViewController: BaseViewController { self.isSubmitting = false self.rootView.setSettingsEnabled(!self.groups.isEmpty) self.revertPrivilege(groupKey: groupKey, previous: previous) - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/PigeonMessage/PigeonMessageVC.swift b/QuickLocation/Section/PigeonMessage/PigeonMessageVC.swift index 579465a1..7d7f4600 100644 --- a/QuickLocation/Section/PigeonMessage/PigeonMessageVC.swift +++ b/QuickLocation/Section/PigeonMessage/PigeonMessageVC.swift @@ -13,6 +13,7 @@ final class PigeonMessageVC: BaseViewController { private var rootView: PigeonMessageView! private var groupModel: GroupModel? private var activeGroupKey: String = "" + private var groupVip = GroupMemberVip() private var members: [GroupMemberModel] = [] private var selectedMembers: [GroupMemberModel] = [] private var selectedImage: UIImage? @@ -26,6 +27,7 @@ final class PigeonMessageVC: BaseViewController { private var playbackTimer: Timer? private var recordedDuration: TimeInterval = 0 private var isPressingRecord = false + private var hasAppeared = false override func loadView() { rootView = PigeonMessageView(frame: UIScreen.main.bounds) @@ -36,9 +38,18 @@ final class PigeonMessageVC: BaseViewController { super.viewDidLoad() bindActions() setupRecordingGesture() + applyGroupVip(groupVip) loadMembers() } + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + if hasAppeared { + refreshGroupVip() + } + hasAppeared = true + } + override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) guard isMovingFromParent || navigationController?.isBeingDismissed == true else { return } @@ -102,13 +113,14 @@ final class PigeonMessageVC: BaseViewController { self.loadUsers(for: self.activeGroupKey, showLoading: false) }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }).disposed(by: disposeBag) } private func loadUsers(for groupKey: String, showLoading: Bool) { guard !groupKey.isEmpty else { DLToast.dismiss() + applyGroupVip(GroupMemberVip()) applyMembers([]) return } @@ -120,10 +132,12 @@ final class PigeonMessageVC: BaseViewController { DLToast.showError(text: response.message ?? "获取圈子成员失败") return } - self?.applyMembers(response.list) + guard let self, self.activeGroupKey == groupKey else { return } + self.applyGroupVip(response.vip) + self.applyMembers(response.list) }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }) .disposed(by: disposeBag) } @@ -134,6 +148,28 @@ final class PigeonMessageVC: BaseViewController { rootView.configureMembers(members, selectedIds: []) } + private var isPigeonVipUnlocked: Bool { + groupVip.pigeon_mail == true + } + + private func applyGroupVip(_ vip: GroupMemberVip) { + groupVip = vip + rootView.updateVipAccess(isUnlocked: isPigeonVipUnlocked) + } + + private func refreshGroupVip() { + let groupKey = activeGroupKey + guard !groupKey.isEmpty else { return } + GroupService.groupUsers(groupKey: groupKey) + .subscribe(onNext: { [weak self] response in + guard let self, + self.activeGroupKey == groupKey, + response.isValid(for: groupKey) else { return } + self.applyGroupVip(response.vip) + }, onError: { _ in }) + .disposed(by: disposeBag) + } + private func updateCurrentGroupDisplay() { let groupName = groupModel?.groups.first { $0.group_key == activeGroupKey @@ -158,7 +194,7 @@ final class PigeonMessageVC: BaseViewController { self.presentGroupPicker(model) }, onError: { error in DLToast.dismiss() - DLToast.showError(text: error.localizedDescription) + DLToast.showError(error) }).disposed(by: disposeBag) } @@ -480,6 +516,10 @@ final class PigeonMessageVC: BaseViewController { } @objc private func sendMessage() { + guard isPigeonVipUnlocked else { + AppRouter.push(Route.vipRecharge) + return + } if let wait = pigeonSendWaitSeconds() { DLToast.show(text: "发送过于频繁,请\(Self.formatWaitDuration(wait))后再试") return @@ -580,10 +620,11 @@ final class PigeonMessageVC: BaseViewController { self.cleanupAudio(deleteFile: true) self.rootView.clearVoiceDraft() self.recordPigeonSendSuccess() + self.refreshGroupVip() DLToast.show(text: "发送成功") }, onError: { error in DLToast.dismiss() - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift b/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift index 49949528..f3e176ef 100644 --- a/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift +++ b/QuickLocation/Section/PigeonMessage/PigeonMessageView.swift @@ -82,6 +82,7 @@ final class PigeonMessageView: UIView, UITextFieldDelegate { private let recordingHintLabel = UILabel() private let voiceTimeLabel = UILabel() private let waveformView = PigeonWaveformView() + private let vipOfferImageView = UIImageView(image: UIImage(named: "VipFeature/limited_offer")) private var selectedImageHeightConstraint: NSLayoutConstraint? private var isRecording = false @@ -252,6 +253,15 @@ final class PigeonMessageView: UIView, UITextFieldDelegate { updateMode() } + func updateVipAccess(isUnlocked: Bool) { + sendButton.setTitle(isUnlocked ? "发送" : "开通会员 解锁功能", for: .normal) + sendButton.setBackgroundImage( + UIImage(named: isUnlocked ? "Common/button_bg_2" : "VipFeature/wide_button_bg"), + for: .normal + ) + vipOfferImageView.isHidden = isUnlocked + } + private func setupUI() { let headerView = PigeonHeaderGradientView() addSubview(headerView) @@ -384,6 +394,17 @@ final class PigeonMessageView: UIView, UITextFieldDelegate { .topToBottomOfView(modeContainer, offset: 12) .edgesHorzontal(15) .bottom(16) + + vipOfferImageView.contentMode = .scaleAspectFit + vipOfferImageView.isHidden = true + addSubview(vipOfferImageView) + vipOfferImageView.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + vipOfferImageView.trailingAnchor.constraint(equalTo: sendButton.trailingAnchor, constant: -6), + vipOfferImageView.bottomAnchor.constraint(equalTo: sendButton.topAnchor, constant: 10), + vipOfferImageView.widthAnchor.constraint(equalToConstant: 94), + vipOfferImageView.heightAnchor.constraint(equalToConstant: 32) + ]) } private func setupRecipientCard(_ card: UIView) { diff --git a/QuickLocation/Section/Schedule/CreateSchedule/CreateScheduleVC.swift b/QuickLocation/Section/Schedule/CreateSchedule/CreateScheduleVC.swift index 879165ab..25087ed7 100644 --- a/QuickLocation/Section/Schedule/CreateSchedule/CreateScheduleVC.swift +++ b/QuickLocation/Section/Schedule/CreateSchedule/CreateScheduleVC.swift @@ -118,7 +118,7 @@ class CreateScheduleVC: BaseViewController, MAMapViewDelegate { CreateScheduleVipPopView.show() } else { - self.dl.show(text: error.localizedDescription) + self.dl.show(error) } }).disposed(by: disposeBag) } diff --git a/QuickLocation/Section/Web/Controller/WebViewController.swift b/QuickLocation/Section/Web/Controller/WebViewController.swift index 4645cccc..520375ea 100644 --- a/QuickLocation/Section/Web/Controller/WebViewController.swift +++ b/QuickLocation/Section/Web/Controller/WebViewController.swift @@ -495,7 +495,7 @@ class FullscreenWebView: WKWebView { @objc private func image(_ image: UIImage, didFinishSavingWithError error: NSError?, context: UnsafeRawPointer) { if let error = error { - error.isShowErrorTips ? DLToast.showError(text: error.localizedDescription) : () + DLToast.showError(error) } else { DLToast.showSuccess(text: "oapp_Success".localizedString) } diff --git a/QuickLocation/Service/GroupService.swift b/QuickLocation/Service/GroupService.swift index 6e634c01..c0c45def 100644 --- a/QuickLocation/Service/GroupService.swift +++ b/QuickLocation/Service/GroupService.swift @@ -267,7 +267,7 @@ struct GroupService { } DLToast.show(text: "已提醒") }, onError: { error in - DLToast.show(text: error.localizedDescription) + DLToast.show(error) }) .disposed(by: disposeBag) } diff --git a/QuickLocation/UIKit/Alert/DLToast.swift b/QuickLocation/UIKit/Alert/DLToast.swift index ca865c07..183d6ccd 100644 --- a/QuickLocation/UIKit/Alert/DLToast.swift +++ b/QuickLocation/UIKit/Alert/DLToast.swift @@ -299,6 +299,15 @@ public class DLToast { completion: (() -> Void)? = nil) { show(text: text, icon: UIImage(named: "fail"), in: view, completion: completion) } + + public static func showError(_ error: Error, + in view: UIView? = nil, + completion: (() -> Void)? = nil) { + guard error.isShowErrorTips else { return } + showError(text: error.gatewayMessage ?? error.localizedDescription, + in: view, + completion: completion) + } /// 显示警告信息 /// - Parameters: @@ -337,6 +346,16 @@ public class DLToast { toastView.show(in: superView) } } + + public static func show(_ error: Error, + fallbackText: String? = nil, + in view: UIView? = nil, + completion: (() -> Void)? = nil) { + guard error.isShowErrorTips else { return } + show(text: error.gatewayMessage ?? fallbackText ?? error.localizedDescription, + in: view, + completion: completion) + } /// 隐藏toast /// - Parameters: @@ -384,6 +403,11 @@ extension DLWrapper where Base: UIView { completion: (() -> Void)? = nil) { DLToast.showError(text: text, in: base, completion: completion) } + + public func showError(_ error: Error, + completion: (() -> Void)? = nil) { + DLToast.showError(error, in: base, completion: completion) + } /// 显示警告信息 /// - Parameters: @@ -408,6 +432,12 @@ extension DLWrapper where Base: UIView { completion: (() -> Void)? = nil) { DLToast.show(text: text, icon: icon, config: config, style: style, in: base, completion: completion) } + + public func show(_ error: Error, + fallbackText: String? = nil, + completion: (() -> Void)? = nil) { + DLToast.show(error, fallbackText: fallbackText, in: base, completion: completion) + } /// 隐藏toast /// - Parameters: @@ -445,6 +475,11 @@ extension DLWrapper where Base: UIViewController { completion: (() -> Void)? = nil) { DLToast.showError(text: text, in: base.view, completion: completion) } + + public func showError(_ error: Error, + completion: (() -> Void)? = nil) { + DLToast.showError(error, in: base.view, completion: completion) + } /// 显示警告信息 /// - Parameters: @@ -469,6 +504,12 @@ extension DLWrapper where Base: UIViewController { completion: (() -> Void)? = nil) { DLToast.show(text: text, icon: icon, config: config, style: style, in: base.view, completion: completion) } + + public func show(_ error: Error, + fallbackText: String? = nil, + completion: (() -> Void)? = nil) { + DLToast.show(error, fallbackText: fallbackText, in: base.view, completion: completion) + } /// 隐藏toast /// - Parameters: