Преглед изворни кода

Merge branch 'develop_PDFReaderPro_V4.7.0' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderPro_V4.7.0

zenghong пре 1 недеља
родитељ
комит
6dcd7a6f75
28 измењених фајлова са 211 додато и 130 уклоњено
  1. 6 2
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AIConfigWindowController.swift
  2. 5 1
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AINewConfigWindowController.swift
  3. 1 1
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatTranslateResultItem.swift
  4. 4 0
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIHeaderView/AIHeaderView.swift
  5. 1 1
      PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIInfoInputView/AIInfoInputView.swift
  6. 1 1
      PDF Office/PDF Master/Class/AIInfo/AITranslateTipWindowController/AITranslateTipWindowController.swift
  7. 1 1
      PDF Office/PDF Master/Class/AIInfo/KMAIRequestServerManager.swift
  8. 15 15
      PDF Office/PDF Master/Class/Purchase/IAPProductsManager.m
  9. 27 22
      PDF Office/PDF Master/MemberCenter/Model/KMMemberCenterManager.swift
  10. 5 5
      PDF Office/PDF Master/MemberCenter/Model/KMMemberInfo.swift
  11. 24 9
      PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.swift
  12. 14 9
      PDF Office/PDF Master/MemberCenter/ViewModel/KMProductModel.swift
  13. 2 2
      PDF Office/PDF Master/MemberCenter/ViewModel/KMUserInfoVCModel.swift
  14. 15 10
      PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.swift
  15. 1 1
      PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.xib
  16. 2 3
      PDF Office/PDF Master/Strings/ar.lproj/Localizable.strings
  17. 4 4
      PDF Office/PDF Master/Strings/de.lproj/Localizable.strings
  18. 4 5
      PDF Office/PDF Master/Strings/es.lproj/Localizable.strings
  19. 4 4
      PDF Office/PDF Master/Strings/fr.lproj/Localizable.strings
  20. 4 5
      PDF Office/PDF Master/Strings/it.lproj/Localizable.strings
  21. 4 5
      PDF Office/PDF Master/Strings/ja.lproj/Localizable.strings
  22. 4 4
      PDF Office/PDF Master/Strings/nl.lproj/Localizable.strings
  23. 4 5
      PDF Office/PDF Master/Strings/pl.lproj/Localizable.strings
  24. 3 3
      PDF Office/PDF Master/Strings/pt.lproj/Localizable.strings
  25. 4 5
      PDF Office/PDF Master/Strings/ru.lproj/Localizable.strings
  26. 3 3
      PDF Office/PDF Master/Strings/zh-Hans.lproj/Localizable.strings
  27. 4 4
      PDF Office/PDF Master/Strings/zh-Hant.lproj/Localizable.strings
  28. 45 0
      PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

+ 6 - 2
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AIConfigWindowController.swift

@@ -108,7 +108,7 @@ import Cocoa
                 } else if self.configType == .proofreading {
                     tipString = NSLocalizedString("No more than 2000 characters.", comment: "")
                 } else if self.configType == .translate {
-                    tipString = NSLocalizedString("1 credit for every 10,000 characters", comment: "")
+                    tipString = NSLocalizedString("2 credit for every 10,000 characters", comment: "")
                 }
                 let popViewController = KMToolbarItemPopViewController.init()
                 if self.popOver == nil {
@@ -737,7 +737,11 @@ import Cocoa
                             if infoDict["charCount"] != nil {
                                 charCount = (infoDict["charCount"] ?? "0") as! Int
                                 if credit == 0 {
-                                    credit = charCount/10000 + 1
+                                    if charCount < 10000 {
+                                       credit = 2
+                                   } else {
+                                       credit = charCount/5000 + 1
+                                   }
                                 }
                             }
                             

+ 5 - 1
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/AINewConfigWindowController.swift

@@ -597,7 +597,11 @@ protocol AIConfigWindowDelegate: AnyObject {
                         if infoDict["charCount"] != nil {
                             charCount = (infoDict["charCount"] ?? "0") as! Int
                             if credit == 0 {
-                                credit = charCount/10000 + 1
+                                 if charCount < 10000 {
+                                    credit = 2
+                                } else {
+                                    credit = charCount/5000 + 1
+                                }
                             }
                         }
                         

+ 1 - 1
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIChatView/CollectionViewItems/AIChatTranslateResultItem.swift

@@ -100,7 +100,7 @@ class AIChatTranslateResultItem: NSCollectionViewItem {
         self.errorTipLabel.font = NSFont.SFProTextRegularFont(12)
         
         self.titleLabel1.stringValue = NSLocalizedString("You will cost:", comment: "")
-        self.creditTipLabel.stringValue = NSLocalizedString("Tip: 1 credit for each 10,000 characters", comment: "")
+        self.creditTipLabel.stringValue = NSLocalizedString("Tip: 2 credit for each 10,000 characters", comment: "")
         self.errorTipLabel.stringValue = NSLocalizedString("Insufficient credit", comment: "")
         
         self.cancelBtn.title = NSLocalizedString("Cancel", comment: "")

+ 4 - 0
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIHeaderView/AIHeaderView.swift

@@ -57,6 +57,10 @@ class AIHeaderView: NSView, NibLoadable {
             
         }
         
+        KMUserInfoVCModel().refreshUserInfo { success, msg in
+            NotificationCenter.default.post(name: NSNotification.Name(rawValue: kDeviceAIStatusChangeNotification), object: nil)
+         }
+        
         let controller = AIUserInfoController.init()
         controller.purchaseHandle = { vc in
 #if VERSION_DMG

+ 1 - 1
PDF Office/PDF Master/Class/AIInfo/AIConfigWindowController/Views/AIInfoInputView/AIInfoInputView.swift

@@ -126,7 +126,7 @@ class AIInfoInputView: NSView, NibLoadable, NSTextFieldDelegate, NSTextViewDeleg
                 } else if self.aiConfigType == .proofreading {
                     tipString = NSLocalizedString("No more than 2000 characters.", comment: "")
                 } else if self.aiConfigType == .translate {
-                    tipString = NSLocalizedString("1 credit for every 10,000 characters; No more than 10M of a document. ", comment: "")
+                    tipString = NSLocalizedString("2 credit for every 10,000 characters; No more than 10M of a document. ", comment: "")
                 }
                 let popViewController = KMToolbarItemPopViewController.init()
                 if self.popOver == nil {

+ 1 - 1
PDF Office/PDF Master/Class/AIInfo/AITranslateTipWindowController/AITranslateTipWindowController.swift

@@ -58,7 +58,7 @@ class AITranslateTipWindowController: NSWindowController {
         
         self.titleLabel1.stringValue = NSLocalizedString("You will cost:", comment: "")
                 
-        self.creditTipLabel.stringValue = NSLocalizedString("1 credit for every 10,000 characters", comment: "")
+        self.creditTipLabel.stringValue = NSLocalizedString("2 credit for every 10,000 characters", comment: "")
         self.errorTipLabel.stringValue = NSLocalizedString("Insufficient credit", comment: "")
         
         self.cancelBtn.title = NSLocalizedString("Cancel", comment: "")

+ 1 - 1
PDF Office/PDF Master/Class/AIInfo/KMAIRequestServerManager.swift

@@ -880,7 +880,7 @@ class KMAIRequestServer {
                 var message: String = ""
                 if let string = jsonObject!["data"] {
                     let dataDic = jsonObject!["data"] as? NSDictionary ?? [:]
-                    if let dataStr = dataDic["content"] {
+                    if let dataStr = dataDic["dst"] {
                         message = dataStr as! String
                         result_bool = true
                     }

+ 15 - 15
PDF Office/PDF Master/Class/Purchase/IAPProductsManager.m

@@ -1368,12 +1368,12 @@ NSString * const KMIAPSubscriptionLoadedNotification = @"KMIAPSubscriptionLoaded
         self.allAccessPackNew6months_lite.isSubscribed = YES;
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
     } else if ([productIdentifier isEqualToString:self.allAccessPack12months_lite.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.allAccessPack12months_lite.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.allAccessPackPermanent_lite.productIdentifier]) {
@@ -1401,73 +1401,73 @@ NSString * const KMIAPSubscriptionLoadedNotification = @"KMIAPSubscriptionLoaded
     } else if ([productIdentifier isEqualToString:self.fourDevicesAllAccessPackNew6Months_lite.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.fourDevicesAllAccessPackNew6Months_lite.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.fourDevicesAllAccessPackNew12months_lite.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.fourDevicesAllAccessPackNew12months_lite.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.advancedAddDevicesAllAccessPack12months_lite.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.advancedAddDevicesAllAccessPack12months_lite.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.advancedAdd2DevicesAllAccessPack12months_lite.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.advancedAdd2DevicesAllAccessPack12months_lite.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.aiAllAccessPack12month_lite.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.aiAllAccessPack12month_lite.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.aiAllAccessPack12month_pro.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.aiAllAccessPack12month_pro.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.standardAddDevicesAllAccessPack12months_pro.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.standardAddDevicesAllAccessPack12months_pro.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.advancedAddDevicesAllAccessPack12months_pro.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.advancedAddDevicesAllAccessPack12months_pro.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.advancedAdd2DevicesAllAccessPack12months_pro.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.advancedAdd2DevicesAllAccessPack12months_pro.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.aiAllAccessPack1month_lite.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.aiAllAccessPack1month_lite.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.aiAllAccessPack1month_pro.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.aiAllAccessPack1month_pro.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.fourDevicesAllAccessPack12months_pro.productIdentifier]) {
         [self loadReceipt:^(NSError *error) {
             [[NSNotificationCenter defaultCenter] postNotificationName:KMIAPSubscriptionLoadedNotification
-                                                                object:nil];
+                                                                object:transaction];
         }];
         self.fourDevicesAllAccessPack12months_pro.isSubscribed = YES;
     } else if ([productIdentifier isEqualToString:self.allAccessProduct.productIdentifier]) {
@@ -1513,7 +1513,6 @@ NSString * const KMIAPSubscriptionLoadedNotification = @"KMIAPSubscriptionLoaded
                                          NSLocalizedString(@"—》Due to Apple needs to confirm your purchase info, you may be required to sign in with your Apple ID. When you restore your purchase, make sure you use the same Apple ID that you previously used.", nil),
                                          NSLocalizedString(@"—》Once you see the \"Restore Successfully\" message, you will be able to access the advanced features, including PDF to Office, PDF Watermark, Page Editor, and more.", nil)];
             }
-            
             NSAlert *alert = [[[NSAlert alloc] init] autorelease];
             [alert addButtonWithTitle:NSLocalizedString(@"OK", nil)];
             [alert setAlertStyle:NSAlertStyleWarning];
@@ -1760,6 +1759,7 @@ NSString * const KMIAPSubscriptionLoadedNotification = @"KMIAPSubscriptionLoaded
                 break;
             case SKPaymentTransactionStateRestored:
                 [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
+                [self productDidPurchased:transaction];
                 break;
         }
     }

+ 27 - 22
PDF Office/PDF Master/MemberCenter/Model/KMMemberCenterManager.swift

@@ -1497,35 +1497,40 @@ class KMMemberCenterManager: NSObject {
             return
         }
         let urlString = configuration.activityBaseURL() + "/member-system-website/applePay/appStoreEquityVerification"
-        let params: [String: Any] = ["userId": KMMemberInfo.shared.userID,
+        let bundleID = Bundle.main.object(forInfoDictionaryKey: "CFBundleIdentifier") ?? ""
+        let params: [String: Any] = ["appBundleId": bundleID,
                                      "applePayProductId": applePayProductId,
                                      "transactionId": transactionId,
                                      "productCode": productCode]
-        KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: params) { requestSerializer in
-            requestSerializer.setValue("Bearer " + token, forHTTPHeaderField: "Authorization")
-        } completion: { [weak self] (task, responseObject, error) in
-            var dic: NSDictionary = [:]
-            if error == nil, let responseObject = responseObject as? NSDictionary {
-                dic = responseObject
-            } else {
-                var info = responseObject
-                if let error = error {
-                    if let data = error.userInfo["com.alamofire.serialization.response.error.data"] as? Data {
-                        info = try? JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? NSDictionary
-                    }
-                }
-                dic = (info as? NSDictionary) ?? [:]
+        let postData  = try! JSONSerialization.data(withJSONObject: params)
+        
+        var request = URLRequest(url: URL(string: urlString)!,timeoutInterval: Double.infinity)
+        request.addValue("Bearer " + token, forHTTPHeaderField: "Authorization")
+        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
+        request.httpMethod = "POST"
+        request.httpBody = postData
+        
+        let task = URLSession.shared.dataTask(with: request) { data, response, error in
+            guard let data = data else {
+                print(String(describing: error))
+                return
             }
-            let code: Int = dic["code"] as? Int ?? 0
-            let result: NSDictionary = dic["result"] as? NSDictionary ?? [:]
-            let message: String = dic["msg"] as? String ?? ""
-            let result1 = KMMemberProductResult(code: code, msg: message, result: "")
-            if code == 200 {
-                complete(true, result1)
+            let jsonObject = try? JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary ?? [:]
+            if jsonObject != nil {
+                let code: Int = jsonObject!["code"] as? Int ?? 0
+                let result: NSDictionary = jsonObject!["result"] as? NSDictionary ?? [:]
+                let message: String = jsonObject!["msg"] as? String ?? ""
+                let result1 = KMMemberProductResult(code: code, msg: message, result: "")
+                if code == 200 {
+                    complete(true, result1)
+                } else {
+                    complete(false, result1)
+                }
             } else {
-                complete(false, result1)
+                complete(false, KMMemberProductResult(code: 0, msg: "", result: ""))
             }
         }
+        task.resume()
     }
 
 

+ 5 - 5
PDF Office/PDF Master/MemberCenter/Model/KMMemberInfo.swift

@@ -22,9 +22,9 @@ import Cocoa
     case lite_type11    // 免费版 有旧买断 试用过期或取消 (右上角导航栏按钮 - “登录领福利” + 开通会员)
     case lite_type12    // 免费版 有旧买断 订阅中 (右上角导航栏按钮 - “登录领福利”)
     case lite_type13    // 免费版 有旧买断 订阅未过期且取消订阅 (右上角导航栏按钮 - “登录领福利” + 续费)
-    case pro_type1      // 付费版 有旧PDF To Office (右上角导航栏按钮 - “登录领福利” + 升级(全平台))
+    case pro_type1      // 付费版 有旧PDF To Office未订阅 (右上角导航栏按钮 - “登录领福利” + 升级(全平台))
     case pro_type2      // 付费版 有旧PDF To Office 订阅且未过期 (右上角导航栏按钮 - “登录领福利”)
-    case pro_type3      // 付费版 无旧PDF To Office (右上角导航栏按钮 - “登录领福利” + 升级(全平台/高级版永久))
+    case pro_type3      // 付费版 无旧PDF To Office未订阅 (右上角导航栏按钮 - “登录领福利” + 升级(全平台/高级版永久))
     case pro_type4      // 付费版 无旧PDF To Office 高级版永久 (右上角导航栏按钮 - Info + 升级(全平台))
     case pro_type5      // 付费版 无旧PDF To Office 订阅且未过期 (右上角导航栏按钮 - Info)
 }
@@ -309,16 +309,16 @@ import Cocoa
 #else
     // AppStore 付费版
             if IAPProductsManager.default().pdfToOfficeProduct.isSubscribed == true {
-                if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.ai_status == 1 { //订阅中
+                if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.vip_status == 1 { //订阅中
                     return .pro_type2
                 } else {
                     return .pro_type1
                 }
             } else {
-                if KMMemberInfo.shared.vip_paymentModel == "2" { //买断
+                if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_status == 1 { //买断
                     return .pro_type4
                 } else {
-                    if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.ai_status == 1 {//订阅中
+                    if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.vip_status == 1 {//订阅中
                         return .pro_type5
                     } else {
                         return .pro_type3

+ 24 - 9
PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.swift

@@ -209,6 +209,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type2 {
             lockedLabel.stringValue = NSLocalizedString("Annual Plan", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -222,6 +223,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type3 {
             lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
@@ -236,6 +238,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type4 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -253,6 +256,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type5 {
             lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -270,6 +274,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type6 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -288,6 +293,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type7 {
             lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
@@ -302,6 +308,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type8 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -319,6 +326,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type9 {
             lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
@@ -333,6 +341,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type10 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -346,6 +355,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type11 {
             lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
@@ -360,6 +370,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type12 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -377,6 +388,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .lite_type13 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -394,6 +406,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type1 {
             lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
@@ -408,6 +421,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type2 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -420,11 +434,13 @@ class KMUserInfoViewController: NSViewController {
             number1ImageView.isHidden = false
             number1Label.isHidden = true
             centerBackgroud.image = NSImage(named: "ButtonBackgroundImage5")
+            number1Label.textColor = NSColor(named: "FFFFFF")
             number2Label.textColor = NSColor(named: "FFFFFF")
             number3Label.textColor = NSColor(named: "FFFFFF")
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type3 {
             lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
@@ -439,6 +455,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type4 {
             lockedLabel.stringValue = NSLocalizedString("Permanent", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -456,6 +473,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else if KMMemberInfo.shared.userScenarioType == .pro_type5 {
             lockedLabel.stringValue = NSLocalizedString("Subscription", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "UpgradeImage2")
@@ -473,6 +491,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(named: "FFFFFF")
             number4_1Label.textColor = NSColor(named: "FFFFFF")
             number5Label.textColor = NSColor(named: "FFFFFF")
+            membershipLabel.textColor = NSColor(named: "FFFFFF")
         } else {
             lockedLabel.stringValue = NSLocalizedString("Locked", tableName: "MemberCenterLocalizable", comment: "")
             lockedImageView.image = NSImage(named: "LockedImage")
@@ -487,6 +506,7 @@ class KMUserInfoViewController: NSViewController {
             number4Label.textColor = NSColor(hex: "42464D")
             number4_1Label.textColor = NSColor(hex: "42464D")
             number5Label.textColor = NSColor(hex: "42464D")
+            membershipLabel.textColor = NSColor(hex: "42464D")
         }
     }
     
@@ -596,17 +616,12 @@ class KMUserInfoViewController: NSViewController {
                     KMMemberInfo.shared.userScenarioType == .pro_type3 ||
                     KMMemberInfo.shared.userScenarioType == .pro_type4 ||
                     KMMemberInfo.shared.userScenarioType == .pro_type5 {
-            membershipLabel.textColor = NSColor(named: "FFFFFF")
-            lockedLabel.textColor = NSColor(hex: "FCFDFF")
-            number5Label.textColor = NSColor(named: "FFFFFF")
             rightsBox.fillColor = NSColor(named: "FFFFFF_0.2") ?? .white
-            if KMMemberInfo.shared.userScenarioType == .lite_type5 ||
-                KMMemberInfo.shared.userScenarioType == .pro_type1 ||
-                KMMemberInfo.shared.userScenarioType == .pro_type3 ||
-                KMMemberInfo.shared.userScenarioType == .pro_type4 {
+            if KMMemberInfo.shared.userScenarioType == .pro_type1 ||
+                KMMemberInfo.shared.userScenarioType == .pro_type3 {
                 buyBox.contentView = buyView2
-                buyNow3ImageView.isHidden = true
-                arrow3ImageView.image = NSImage(named: "BuyNewArrowImage2")
+                buyNow3Label.textColor = NSColor(named: "FFFFFF")
+                arrow3ImageView.image = NSImage(named: "BuyNewArrowImage1")
             }
         } else if KMMemberInfo.shared.userScenarioType == .lite_type7 ||
                     (KMMemberInfo.shared.userScenarioType == .lite_type9 && !(KMMemberInfo.shared.vip_status == 1 || KMMemberInfo.shared.vip_status == 4)  && isNoOldSubscribed) || (KMMemberInfo.shared.userScenarioType == .lite_type11 && KMMemberInfo.shared.vip_paymentModel == "2" && isNoOldSubscribed) {

+ 14 - 9
PDF Office/PDF Master/MemberCenter/ViewModel/KMProductModel.swift

@@ -7,6 +7,9 @@
 
 import Foundation
 import Combine
+#if !VERSION_DMG
+import StoreKit
+#endif
 
 @objc enum KMCompareTableType : Int {
     case trial = 0 // 试用比较表
@@ -503,9 +506,9 @@ class KMProductModel: ObservableObject {
     }
     
     func appStoreEquityVerification(_ notification: Notification,_ complete: @escaping KMMemberProductComplete) -> Void {
-        if let userInfo = notification.userInfo,
-           let transactionId = userInfo["transactionId"] as? String,
-           let productId = userInfo["productId"] as? String {
+        if let userInfo = notification.object as? SKPaymentTransaction,
+           let transactionId = userInfo.transactionIdentifier as? String,
+           let productId = userInfo.payment.productIdentifier as? String {
             print("Transaction ID: \(transactionId)")
             print("product ID: \(productId)")
             
@@ -592,13 +595,15 @@ class KMProductModel: ObservableObject {
                 }
             }
 #endif
-            KMMemberCenterManager.manager.appStoreEquityVerification(applePayProductId: productId, transactionId: transactionId, productCode: productCode) { success, result in
-                if success {
-                    complete(true, result)
-                } else {
-                    complete(false, result)
-                }
+            if isSubscribed {
+                KMMemberCenterManager.manager.appStoreEquityVerification(applePayProductId: productId, transactionId: transactionId, productCode: productCode) { success, result in
+                    if success {
+                        complete(true, result)
+                    } else {
+                        complete(false, result)
+                    }
 
+                }
             }
         } else {
             print("Transaction ID not found in notification.")

+ 2 - 2
PDF Office/PDF Master/MemberCenter/ViewModel/KMUserInfoVCModel.swift

@@ -60,9 +60,9 @@ class KMUserInfoVCModel: ObservableObject {
                 KMMemberInfo.shared.userScenarioType == .lite_type8 ||
                 KMMemberInfo.shared.userScenarioType == .lite_type12 ||
                 KMMemberInfo.shared.userScenarioType == .lite_type13 ||
-                KMMemberInfo.shared.userScenarioType == .pro_type1 ||
                 KMMemberInfo.shared.userScenarioType == .pro_type2 ||
-                KMMemberInfo.shared.userScenarioType == .pro_type3 {
+                KMMemberInfo.shared.userScenarioType == .pro_type4 ||
+                KMMemberInfo.shared.userScenarioType == .pro_type5 {
                 if platform == "mac" {
                     images.append(NSImage(named: "MacOSPlatformImage2")!)
                 } else if platform == "ios" {

+ 15 - 10
PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.swift

@@ -139,11 +139,15 @@ class KMProductCompareWC: NSWindowController {
         let windowC = KMProductCompareWC(windowNibName: "KMProductCompareWC")
         return windowC
     }()
+    
+    override init(window: NSWindow?) {
+        super.init(window: window)
+        setupNotifications()
+    }
 
-      convenience init() {
-          self.init(windowNibName: "KMProductCompareWC")
-          setupNotifications()
-      }
+    required init?(coder: NSCoder) {
+        super.init(coder: coder)
+    }
 
       // MARK: - Notification Setup
 
@@ -184,7 +188,7 @@ class KMProductCompareWC: NSWindowController {
               name: NSNotification.Name(rawValue: "KMIAPProductRestoreFailedNotification"),
               object: nil
           )
-          
+
           DistributedNotificationCenter.default.addObserver(self, selector: #selector(themeChanged(_:)), name: NSNotification.Name("AppleInterfaceThemeChangedNotification"), object: nil)
       }
 
@@ -1072,11 +1076,6 @@ class KMProductCompareWC: NSWindowController {
     @objc func IAPProductPurchasedNotification(_ notification: Notification) {
         removeWaitingView(from: window?.contentView ?? NSView())
         reloadData()
-        
-        model.appStoreEquityVerification(notification) { success, msg in
-            KMUserInfoVCModel().refreshUserInfo { success, msg in
-            }
-        }
 
         if IAPProductsManager.default().fourDevicesAllAccessPackNew6Months_lite.isSubscribed {
             if kEventTag == 1 {
@@ -1104,6 +1103,12 @@ class KMProductCompareWC: NSWindowController {
     @objc func IAPSubscriptionLoadedNotification(_ notification: Notification) {
         removeWaitingView(from: window?.contentView ?? NSView())
         reloadData()
+        if KMMemberInfo.shared.isLogin {
+            model.appStoreEquityVerification(notification) { success, msg in
+                KMUserInfoVCModel().refreshUserInfo { success, msg in
+                }
+            }
+        }
     }
     
     @objc func themeChanged(_ notification: Notification) {

+ 1 - 1
PDF Office/PDF Master/MemberCenter/WindowsController/KMProductCompareWC.xib

@@ -102,7 +102,7 @@
         <window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="documentWindow" titlebarAppearsTransparent="YES" id="7jy-UC-R98">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
             <rect key="contentRect" x="77" y="40" width="970" height="660"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1800" height="1125"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
             <view key="contentView" wantsLayer="YES" misplaced="YES" id="BHT-Ss-56B">
                 <rect key="frame" x="0.0" y="0.0" width="970" height="660"/>
                 <autoresizingMask key="autoresizingMask"/>

Разлика између датотеке није приказан због своје велике величине
+ 2 - 3
PDF Office/PDF Master/Strings/ar.lproj/Localizable.strings


+ 4 - 4
PDF Office/PDF Master/Strings/de.lproj/Localizable.strings

@@ -2715,7 +2715,7 @@
 "Show/Hide AI robot icon"="AI -Roboter -Symbol zeigen/ausblenden";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Klicken Sie mit der rechten Maustaste, um die KI-Roboter-Symbol auszublenden. Zeigen Sie das Symbol erneut von der oberen rechten Ecke „My AI Credit“.";
 "Hide AI robot icon"="KI -Roboter -Symbol verbergen";
-"1 credit for every 10,000 characters"="1 Kredit für jeweils 10.000 Zeichen";
+"2 credit for every 10,000 characters"="2 Kredit für jeweils 10.000 Zeichen";
 "You will cost:"="Sie kosten:";
 "(Total %@ characters)"="(Gesamt %@ -Zeichen)";
 "Insufficient credit"="Unzureichende Gutschrift";
@@ -2738,7 +2738,7 @@
 "Show/Hide AI robot icon"="AI -Roboter -Symbol zeigen/ausblenden";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Klicken Sie mit der rechten Maustaste, um die KI-Roboter-Symbol auszublenden. Zeigen Sie das Symbol erneut von der oberen rechten Ecke „My AI Credit“.";
 "Hide AI robot icon"="KI -Roboter -Symbol verbergen";
-"1 credit for every 10,000 characters"="1 Kredit für jeweils 10.000 Zeichen";
+"2 credit for every 10,000 characters"="2 Kredit für jeweils 10.000 Zeichen";
 "You will cost:"="Sie kosten:";
 "(Total %@ characters)"="(Gesamt %@ -Zeichen)";
 "Insufficient credit"="Unzureichende Gutschrift";
@@ -2748,7 +2748,7 @@
 "Each use of the AI tools costs 1 or more credits."="Jede Verwendung der KI -Tools kostet 1 oder mehr Credits.";
 "Please Enter AI License"="Bitte geben Sie die AI -Lizenz ein";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="Für die PDF Reader Pro Permanent/Premium -Lizenz klicken Sie auf PDF Reader Pro in der Menubar und tippen Sie auf \"Lizenz eingeben\".";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "1 Kredit für jeweils 10.000 Zeichen; Nicht mehr als 10 m eines Dokuments.";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "2 Kredit für jeweils 10.000 Zeichen; Nicht mehr als 10 m eines Dokuments.";
 "This AI license code has been taken up by another device, please use another one." = "Dieser KI -Lizenzcode wurde von einem anderen Gerät aufgenommen. Bitte verwenden Sie ein anderes.";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "Bitte bestätigen Sie Ihren PDF Reader Pro AI -Lizenzcode über die E -Mail, die Sie beim Kauf angegeben haben.";
 
@@ -2834,7 +2834,7 @@
 "Clear session"="Sitzung löschen";
 "All the AI content will be removed. Are you sure you want to clear the session?"="Der gesamte KI-Inhalt wird entfernt. Möchten Sie die Sitzung wirklich löschen?";
 "Clear"="Klar";
-"Tip: 1 credit for each 10,000 characters" = "Tipp: 1 Credit pro 10.000 Zeichen";
+"Tip: 2 credit for each 10,000 characters" = "Tipp: 2 Credit pro 10.000 Zeichen";
 
 "Page" = "Seite";
 "Screen" = "Bildschirm";

+ 4 - 5
PDF Office/PDF Master/Strings/es.lproj/Localizable.strings

@@ -2808,7 +2808,7 @@
 "Show/Hide AI robot icon"="Mostrar/ocultar el icono del robot ai";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Haga clic derecho para ocultar el icono del robot AI. Muestre el ícono nuevamente desde la esquina superior derecha \"mi crédito AI\".";
 "Hide AI robot icon"="Ocultar ícono del robot ai";
-"1 credit for every 10,000 characters"="1 crédito por cada 10,000 caracteres";
+"2 credit for every 10,000 characters"="2 crédito por cada 10,000 caracteres";
 "You will cost:"="Costarás:";
 "(Total %@ characters)"="(Total de caracteres %@)";
 "Insufficient credit"="Crédito insuficiente";
@@ -2831,8 +2831,7 @@
 "Show/Hide AI robot icon"="Mostrar/ocultar el icono del robot ai";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Haga clic derecho para ocultar el icono del robot AI. Muestre el ícono nuevamente desde la esquina superior derecha \"mi crédito AI\".";
 "Hide AI robot icon"="Ocultar ícono del robot ai";
-"1 credit for every 10,000 characters"="1 crédito por cada 10,000 caracteres";
-"You will cost:"="Costarás:";
+ "You will cost:"="Costarás:";
 "(Total %@ characters)"="(Total de caracteres %@)";
 "Insufficient credit"="Crédito insuficiente";
 "Credits to be unlocked: "="Créditos para desbloquear: ";
@@ -2841,7 +2840,7 @@
 "Each use of the AI tools costs 1 or more credits."="Cada uso de las herramientas de IA cuesta 1 o más créditos.";
 "Please Enter AI License"="Ingrese la licencia AI";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="Para la licencia PDF Reader Pro Permanent/Premium, haga clic en PDF Reader Pro en el Menubar, luego toque \"Ingrese la licencia\".";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "1 crédito por cada 10,000 caracteres; No más de 10 m de un documento.";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "2 crédito por cada 10,000 caracteres; No más de 10 m de un documento.";
 "This AI license code has been taken up by another device, please use another one." = "Este código de licencia de IA ha sido tomado por otro dispositivo, use otro.";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "Confirme su código de licencia PDF Reader Pro AI a través del correo electrónico que proporcionó al comprar.";
 
@@ -2927,7 +2926,7 @@
 "Clear session"="Borrar sesión";
 "All the AI content will be removed. Are you sure you want to clear the session?"="Se eliminará todo el contenido de IA. ¿Está seguro de que desea borrar la sesión?";
 "Clear"="Claro";
-"Tip: 1 credit for each 10,000 characters" = "Consejo: 1 crédito por cada 10.000 caracteres";
+"Tip: 2 credit for each 10,000 characters" = "Consejo: 2 crédito por cada 10.000 caracteres";
 
 "Page" = "Página";
 "Screen" = "Pantalla";

+ 4 - 4
PDF Office/PDF Master/Strings/fr.lproj/Localizable.strings

@@ -2678,7 +2678,7 @@
 "Show/Hide AI robot icon"="Afficher / masquer l'icône du robot AI";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Cliquez avec le bouton droit sur l'icône du robot AI. Montrez à nouveau l'icône du coin supérieur droit «Mon crédit AI».";
 "Hide AI robot icon"="Icône de robot Hide AI";
-"1 credit for every 10,000 characters"="1 crédit pour 10 000 caractères";
+"2 credit for every 10,000 characters"="2 crédit pour 10 000 caractères";
 "You will cost:"="Vous coûterez:";
 "(Total %@ characters)"="(Total %@ caractères)";
 "Insufficient credit"="Crédit insuffisant";
@@ -2701,7 +2701,7 @@
 "Show/Hide AI robot icon"="Afficher / masquer l'icône du robot AI";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Cliquez avec le bouton droit sur l'icône du robot AI. Montrez à nouveau l'icône du coin supérieur droit «Mon crédit AI».";
 "Hide AI robot icon"="Icône de robot Hide AI";
-"1 credit for every 10,000 characters"="1 crédit pour 10 000 caractères";
+"2 credit for every 10,000 characters"="2 crédit pour 10 000 caractères";
 "You will cost:"="Vous coûterez:";
 "(Total %@ characters)"="(Total %@ caractères)";
 "Insufficient credit"="Crédit insuffisant";
@@ -2711,7 +2711,7 @@
 "Each use of the AI tools costs 1 or more credits."="Chaque utilisation des outils d'IA coûte 1 crédits ou plus.";
 "Please Enter AI License"="Veuillez saisir la licence AI";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="Pour PDF Reader Pro Licence Permanent / Premium, veuillez cliquer sur PDF Reader Pro sur le Menubar, puis appuyez sur \"Entrez la licence\".";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "1 crédit pour 10 000 caractères; Pas plus de 10 m de document.";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "2 crédit pour 10 000 caractères; Pas plus de 10 m de document.";
 "This AI license code has been taken up by another device, please use another one." = "Ce code de licence AI a été repris par un autre appareil, veuillez en utiliser un autre.";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "Veuillez confirmer le code de licence PDF Reader Pro AI via l'e-mail que vous avez fourni lors de l'achat.";
 
@@ -2798,7 +2798,7 @@
 "Clear session"="Effacer la session";
 "All the AI content will be removed. Are you sure you want to clear the session?"="Tout le contenu de l'IA sera supprimé. Êtes-vous sûr de vouloir effacer la session ?";
 "Clear"="Clair";
-"Tip: 1 credit for each 10,000 characters" = "Astuce : 1 crédit pour 10 000 caractères";
+"Tip: 2 credit for each 10,000 characters" = "Astuce : 2 crédit pour 10 000 caractères";
 
 "Page" = "Page";
 "Screen" = "Écran";

+ 4 - 5
PDF Office/PDF Master/Strings/it.lproj/Localizable.strings

@@ -2604,7 +2604,7 @@
 "Show/Hide AI robot icon"="Mostra/nascondi icona robot AI";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Fare clic con il tasto destro per nascondere l'icona del robot AI. Mostra di nuovo l'icona dall'angolo in alto a destra \"My AI Credit\".";
 "Hide AI robot icon"="Nascondi icona robot";
-"1 credit for every 10,000 characters"="1 credito per ogni 10.000 caratteri";
+"2 credit for every 10,000 characters"="2 credito per ogni 10.000 caratteri";
 "You will cost:"="Costerai:";
 "(Total %@ characters)"="(Caratteri %@ totali)";
 "Insufficient credit"="Credito insufficiente";
@@ -2627,8 +2627,7 @@
 "Show/Hide AI robot icon"="Mostra/nascondi icona robot AI";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Fare clic con il tasto destro per nascondere l'icona del robot AI. Mostra di nuovo l'icona dall'angolo in alto a destra \"My AI Credit\".";
 "Hide AI robot icon"="Nascondi icona robot";
-"1 credit for every 10,000 characters"="1 credito per ogni 10.000 caratteri";
-"You will cost:"="Costerai:";
+ "You will cost:"="Costerai:";
 "(Total %@ characters)"="(Caratteri %@ totali)";
 "Insufficient credit"="Credito insufficiente";
 "Credits to be unlocked: "="Crediti da sbloccare: ";
@@ -2637,7 +2636,7 @@
 "Each use of the AI tools costs 1 or more credits."="Ogni utilizzo degli strumenti AI costa 1 o più crediti.";
 "Please Enter AI License"="Inserisci la licenza AI";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="Per la licenza permanente/premium PDF Reader Pro, fare clic su PDF Reader Pro sul Menubar, quindi tocca \"Invio la licenza\".";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "1 credito per ogni 10.000 caratteri; Non più di 10 m di documento.";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "2 credito per ogni 10.000 caratteri; Non più di 10 m di documento.";
 "This AI license code has been taken up by another device, please use another one." = "Questo codice di licenza di intelligenza artificiale è stato assorbito da un altro dispositivo, per favore usa un altro.";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "Conferma il codice di licenza PDF Reader Pro AI tramite l'e -mail fornita al momento dell'acquisto.";
 
@@ -2723,7 +2722,7 @@
 "Clear session"="Sessione chiara";
 "All the AI content will be removed. Are you sure you want to clear the session?"="Tutto il contenuto AI verrà rimosso. Sei sicuro di voler cancellare la sessione?";
 "Clear"="Chiaro";
-"Tip: 1 credit for each 10,000 characters" = "Suggerimento: 1 credito ogni 10.000 caratteri";
+"Tip: 2 credit for each 10,000 characters" = "Suggerimento: 2 credito ogni 10.000 caratteri";
 
 "Page" = "Pagina";
 "Screen" = "Schermo";

+ 4 - 5
PDF Office/PDF Master/Strings/ja.lproj/Localizable.strings

@@ -2871,8 +2871,7 @@
 "Show/Hide AI robot icon"="AIロボットアイコンを表示/非表示にします";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="右クリックしてAIロボットアイコンを非表示にします。右上隅「私のAIクレジット」から再びアイコンを表示します。";
 "Hide AI robot icon"="AIロボットアイコンを非表示にします";
-"1 credit for every 10,000 characters"="10,000文字ごとに1クレジット";
-"You will cost:"="あなたは費用がかかります:";
+ "You will cost:"="あなたは費用がかかります:";
 "(Total %@ characters)"="(合計%@文字)";
 "Insufficient credit"="不十分なクレジット";
 "Credits to be unlocked: "="ロック解除されるクレジット:";
@@ -2894,7 +2893,7 @@
 "Show/Hide AI robot icon"="AIロボットアイコンを表示/非表示にします";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="右クリックしてAIロボットアイコンを非表示にします。右上隅「私のAIクレジット」から再びアイコンを表示します。";
 "Hide AI robot icon"="AIロボットアイコンを非表示にします";
-"1 credit for every 10,000 characters"="10,000文字ごとに1クレジット";
+"2 credit for every 10,000 characters"="5,000文字ごとに1クレジット";
 "You will cost:"="あなたは費用がかかります:";
 "(Total %@ characters)"="(合計%@文字)";
 "Insufficient credit"="不十分なクレジット";
@@ -2904,7 +2903,7 @@
 "Each use of the AI tools costs 1 or more credits."="AIツールを使用するたびに、1クレジット以上の価格がかかります。";
 "Please Enter AI License"="AIライセンスを入力してください";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="PDF Reader Pro Permantion/Premiumライセンスについては、MenubarのPDF Reader Proをクリックしてから、「ライセンスを入力する」をタップしてください。";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "10,000文字ごとに1クレジット。ドキュメントの10m以下。";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "10,000文字ごとに2クレジット。ドキュメントの10m以下。";
 "This AI license code has been taken up by another device, please use another one." = "このAIライセンスコードは別のデバイスによって取り上げられています。別のデバイスを使用してください。";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "購入時に提供された電子メールを介して、PDF Reader Pro AIライセンスコードを確認してください。";
 
@@ -2990,7 +2989,7 @@
 "Clear session"="セッションをクリアする";
 "All the AI content will be removed. Are you sure you want to clear the session?"="すべての AI コンテンツが削除されます。セッションをクリアしてもよろしいですか?";
 "Clear"="クリア";
-"Tip: 1 credit for each 10,000 characters" = "ヒント: 10,000 文字ごとに 1 クレジット";
+"Tip: 2 credit for each 10,000 characters" = "ヒント: 10,000 文字ごとに 2 クレジット";
 
 "Page" = "ページ";
 "Screen" = "スクリーン";

+ 4 - 4
PDF Office/PDF Master/Strings/nl.lproj/Localizable.strings

@@ -2880,7 +2880,7 @@
 "Show/Hide AI robot icon"="Toon/verbergen AI Robot -pictogram";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Klik met de rechtermuisknop om het AI-robotpictogram te verbergen. Toon het pictogram opnieuw vanuit de rechterbovenhoek \"My AI Credit\".";
 "Hide AI robot icon"="Verberg ai robotpictogram";
-"1 credit for every 10,000 characters"="1 krediet voor elke 10.000 tekens";
+"2 credit for every 10,000 characters"="2 krediet voor elke 10.000 tekens";
 "You will cost:"="Je gaat kosten:";
 "(Total %@ characters)"="(Totaal %@ -tekens)";
 "Insufficient credit"="Onvoldoende krediet";
@@ -2903,7 +2903,7 @@
 "Show/Hide AI robot icon"="Toon/verbergen AI Robot -pictogram";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Klik met de rechtermuisknop om het AI-robotpictogram te verbergen. Toon het pictogram opnieuw vanuit de rechterbovenhoek \"My AI Credit\".";
 "Hide AI robot icon"="Verberg ai robotpictogram";
-"1 credit for every 10,000 characters"="1 krediet voor elke 10.000 tekens";
+"2 credit for every 10,000 characters"="2 krediet voor elke 10.000 tekens";
 "You will cost:"="Je gaat kosten:";
 "(Total %@ characters)"="(Totaal %@ -tekens)";
 "Insufficient credit"="Onvoldoende krediet";
@@ -2913,7 +2913,7 @@
 "Each use of the AI tools costs 1 or more credits."="Elk gebruik van de AI -tools kost 1 of meer credits.";
 "Please Enter AI License"="Voer AI -licentie in";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="Klik voor PDF Reader Pro Permanent/Premium -licentie op PDF Reader Pro op de Menubar en tik vervolgens op \"Licentie invoeren\".";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "1 krediet voor elke 10.000 tekens; Niet meer dan 10m van een document.";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "2 krediet voor elke 10.000 tekens; Niet meer dan 10m van een document.";
 "This AI license code has been taken up by another device, please use another one." = "Deze AI -licentiecode is overgenomen door een ander apparaat, gebruik een andere.";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "Bevestig uw PDF Reader Pro AI -licentiecode via de e -mail die u hebt verstrekt bij het kopen.";
 
@@ -3000,7 +3000,7 @@
 "Clear session"="Duidelijke sessie";
 "All the AI content will be removed. Are you sure you want to clear the session?"="Alle AI-inhoud wordt verwijderd. Weet u zeker dat u de sessie wilt wissen?";
 "Clear"="Duidelijk";
-"Tip: 1 credit for each 10,000 characters" = "Tip: 1 credit voor elke 10.000 tekens";
+"Tip: 2 credit for each 10,000 characters" = "Tip: 2 credit voor elke 10.000 tekens";
 
 "Page" = "Pagina";
 "Screen" = "Scherm";

+ 4 - 5
PDF Office/PDF Master/Strings/pl.lproj/Localizable.strings

@@ -2820,8 +2820,7 @@
 "Show/Hide AI robot icon"="Pokaż/ukryj ikonę robota AI";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Kliknij prawym przyciskiem myszy, aby ukryć ikonę robota AI. Ponownie pokaż ikonę z prawego górnego rogu „My AI Credit”.";
 "Hide AI robot icon"="Ukryj ikonę robota AI";
-"1 credit for every 10,000 characters"="1 kredyt na każde 10 000 znaków";
-"You will cost:"="Będziesz kosztować:";
+ "You will cost:"="Będziesz kosztować:";
 "(Total %@ characters)"="(Całkowite znaki %@)";
 "Insufficient credit"="Niewystarczający kredyt";
 "Credits to be unlocked: "="Kredyty do odblokowania: ";
@@ -2843,7 +2842,7 @@
 "Show/Hide AI robot icon"="Pokaż/ukryj ikonę robota AI";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Kliknij prawym przyciskiem myszy, aby ukryć ikonę robota AI. Ponownie pokaż ikonę z prawego górnego rogu „My AI Credit”.";
 "Hide AI robot icon"="Ukryj ikonę robota AI";
-"1 credit for every 10,000 characters"="1 kredyt na każde 10 000 znaków";
+"2 credit for every 10,000 characters"="2 kredyt na każde 10 000 znaków";
 "You will cost:"="Będziesz kosztować:";
 "(Total %@ characters)"="(Całkowite znaki %@)";
 "Insufficient credit"="Niewystarczający kredyt";
@@ -2853,7 +2852,7 @@
 "Each use of the AI tools costs 1 or more credits."="Każde użycie narzędzi AI kosztuje 1 lub więcej kredytów.";
 "Please Enter AI License"="Wprowadź licencję AI";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="W przypadku licencji PDF Reader Pro Permanent/Premium kliknij PDF Reader Pro na menu, a następnie dotknij „Wprowadź licencję”.";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "1 kredyt na każde 10 000 znaków; Nie więcej niż 10 m dokumentu.";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "2 kredyt na każde 10 000 znaków; Nie więcej niż 10 m dokumentu.";
 "This AI license code has been taken up by another device, please use another one." = "Ten kod licencji AI został podjęty przez inne urządzenie, proszę użyć innego.";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "Potwierdź swój kod licencji czytnika PDF Pro za pośrednictwem podanego poczty e -mail podczas zakupu.";
 
@@ -2939,7 +2938,7 @@
 "Clear session"="Wyczyść sesję";
 "All the AI content will be removed. Are you sure you want to clear the session?"="Cała zawartość AI zostanie usunięta. Czy na pewno chcesz wyczyścić sesję?";
 "Clear"="Jasne";
-"Tip: 1 credit for each 10,000 characters" = "Wskazówka: 1 kredyt za każde 10 000 znaków";
+"Tip: 2 credit for each 10,000 characters" = "Wskazówka: 2 kredyt za każde 10 000 znaków";
 
 "Page" = "Strona";
 "Screen" = "Ekran";

Разлика између датотеке није приказан због своје велике величине
+ 3 - 3
PDF Office/PDF Master/Strings/pt.lproj/Localizable.strings


+ 4 - 5
PDF Office/PDF Master/Strings/ru.lproj/Localizable.strings

@@ -2745,7 +2745,7 @@
 "Show/Hide AI robot icon"="Show/Hide Ai Robot значок робота";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Щелкните правой кнопкой мыши, чтобы скрыть значок робота ИИ. Покажите значок снова из верхнего правого угла «My AI Credit».";
 "Hide AI robot icon"="Скрыть значок робота ИИ";
-"1 credit for every 10,000 characters"="1 кредит на каждые 10 000 символов";
+"2 credit for every 10,000 characters"="2 кредит на каждые 10 000 символов";
 "You will cost:"="Вы будете стоить:";
 "(Total %@ characters)"="(Всего %@ символов)";
 "Insufficient credit"="Недостаточный кредит";
@@ -2768,8 +2768,7 @@
 "Show/Hide AI robot icon"="Show/Hide Ai Robot значок робота";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="Щелкните правой кнопкой мыши, чтобы скрыть значок робота ИИ. Покажите значок снова из верхнего правого угла «My AI Credit».";
 "Hide AI robot icon"="Скрыть значок робота ИИ";
-"1 credit for every 10,000 characters"="1 кредит на каждые 10 000 символов";
-"You will cost:"="Вы будете стоить:";
+ "You will cost:"="Вы будете стоить:";
 "(Total %@ characters)"="(Всего %@ символов)";
 "Insufficient credit"="Недостаточный кредит";
 "Credits to be unlocked: "="Кредиты, которые будут разблокированы: ";
@@ -2778,7 +2777,7 @@
 "Each use of the AI tools costs 1 or more credits."="Каждое использование инструментов ИИ стоит 1 или более кредитов.";
 "Please Enter AI License"="Пожалуйста, введите лицензию AI";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="Для PDF Reader Pro Permanent/Premium License, пожалуйста, нажмите PDF Reader Pro на Menubar, затем нажмите «Введите лицензию».";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "1 кредит на каждые 10 000 символов; Не более 10 м документа.";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "2 кредит на каждые 10 000 символов; Не более 10 м документа.";
 "This AI license code has been taken up by another device, please use another one." = "Этот код лицензии AI был построен другим устройством, пожалуйста, используйте другое.";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "Пожалуйста, подтвердите свой лицензионный код PDF Reader Pro AI по электронной почте, которое вы предоставили при покупке.";
 
@@ -2863,7 +2862,7 @@
 "Clear session"="Очистить сеанс";
 "All the AI content will be removed. Are you sure you want to clear the session?"="Весь контент ИИ будет удален. Вы уверены, что хотите очистить сеанс?";
 "Clear"="Прозрачный";
-"Tip: 1 credit for each 10,000 characters" = "Совет: 1 кредит за каждые 10 000 символов.";
+"Tip: 2 credit for each 10,000 characters" = "Совет: 2 кредит за каждые 10 000 символов.";
 
 "Page" = "Страница";
 "Screen" = "Экран";

+ 3 - 3
PDF Office/PDF Master/Strings/zh-Hans.lproj/Localizable.strings

@@ -3785,7 +3785,7 @@
 "Show/Hide AI robot icon"="显示/隐藏AI快捷入口";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="右键隐藏AI快捷入口。点击右上角 \"我的AI权益 \"再次显示图标。";
 "Hide AI robot icon"="隐藏AI快捷入口";
-"1 credit for every 10,000 characters"="每10,000字符消耗1个权益点";
+"2 credit for every 10,000 characters"="每10,000字符消耗2个权益点";
 "You will cost:"="你将消耗:";
 "(Total %@ characters)"="(共%@字符)";
 "Insufficient credit"="权益点不足";
@@ -3815,7 +3815,7 @@
 "Each use of the AI tools costs 1 or more credits."="每使用一次AI工具将消耗一个或多个权益点。";
 "Please Enter AI License"="请输入AI序列码";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="如果您购买的是PDF Reader Pro高级版/标准版序列码,请点击菜单栏中“PDF Reader Pro” - “输入序列码”激活。";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "每10,000字符消耗1个权益点,文档不超过10M。";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "每10,000字符消耗2个权益点,文档不超过10M。";
 "This AI license code has been taken up by another device, please use another one." = "该序列码已被另一台设备使用,请更换AI序列码。";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "请前往您购买时提供的邮箱,确认PDF Reader Pro AI序列码。";
 
@@ -3901,7 +3901,7 @@
 "Clear session"="清除会话";
 "All the AI content will be removed. Are you sure you want to clear the session?"="所有AI内容将会被清除。你确定要清除会话吗?";
 "Clear"="清除";
-"Tip: 1 credit for each 10,000 characters" = "提示:每10,000字符消耗1个权益点。";
+"Tip: 2 credit for each 10,000 characters" = "提示:每10,000字符消耗2个权益点。";
 
 "Page" = "页面";
 "Screen" = "屏幕";

+ 4 - 4
PDF Office/PDF Master/Strings/zh-Hant.lproj/Localizable.strings

@@ -3906,7 +3906,7 @@
 "Show/Hide AI robot icon"="顯示/隱藏AI快捷入口";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="右鍵隱藏AI快捷入口。點擊右上角 \"我的AI權益 \"再次顯示圖標。";
 "Hide AI robot icon"="隱藏AI快捷入口";
-"1 credit for every 10,000 characters"="每10,000字符消耗1個權益點";
+"2 credit for every 10,000 characters"="每10,000字符消耗2個權益點";
 "You will cost:"="你將消耗:";
 "(Total %@ characters)"="(共%@字符)";
 "Insufficient credit"="權益點不足";
@@ -3935,7 +3935,7 @@
 "Show/Hide AI robot icon"="顯示/隱藏AI快捷入口";
 "Right-click to hide AI robot icon. Show the icon again from the top right corner “My AI Credit”. "="右鍵隱藏AI快捷入口。點擊右上角 \"我的AI權益 \"再次顯示圖標。";
 "Hide AI robot icon"="隱藏AI快捷入口";
-"1 credit for every 10,000 characters"="每10,000字符消耗1個權益點";
+"2 credit for every 10,000 characters"="每10,000字符消耗2個權益點";
 "You will cost:"="你將消耗:";
 "(Total %@ characters)"="(共%@字符)";
 "Insufficient credit"="權益點不足";
@@ -3945,7 +3945,7 @@
 "Each use of the AI tools costs 1 or more credits."="每使用一次AI工具將消耗一個或多個權益點。";
 "Please Enter AI License"="請輸入AI序列碼";
 "For PDF Reader Pro Permanent/Premium License, please click PDF Reader Pro on the menubar, then tap \"Enter License\"."="如果您購買的是PDF Reader Pro高級版/標準版序列碼,請點擊菜單欄中“PDF Reader Pro” - “輸入序列碼”激活。";
-"1 credit for every 10,000 characters; No more than 10M of a document. " = "每10,000字符消耗1個權益點,文檔不超過10M。";
+"2 credit for every 10,000 characters; No more than 10M of a document. " = "每10,000字符消耗2個權益點,文檔不超過10M。";
 "This AI license code has been taken up by another device, please use another one." = "該序列碼已被另一台設備使用,請更換AI序列碼。";
 "Please confirm your PDF Reader Pro AI license code through the email you provided when purchasing." = "請前往您購買時提供的郵箱,確認PDF Reader Pro AI序列碼。";
 
@@ -4032,7 +4032,7 @@
 "Clear session"="清除會話";
 "All the AI content will be removed. Are you sure you want to clear the session?"="所有AI內容將會被清除。你確定要清除會話嗎?";
 "Clear"="清除";
-"Tip: 1 credit for each 10,000 characters" = "提示:每10,000字元消耗1個權益點。";
+"Tip: 2 credit for each 10,000 characters" = "提示:每10,000字元消耗2個權益點。";
 
 "Page" = "頁面";
 "Screen" = "螢幕";

+ 45 - 0
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -95,6 +95,21 @@
                   endingLineNumber = "293"
                   offsetFromSymbolStart = "33928">
                </Location>
+               <Location
+                  uuid = "8C529510-56EC-4574-84FD-69D27D802C8C - 1ee8d43b9478057c"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMUserInfoViewController.refreshEquity() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/MemberCenter/ViewController/KMUserInfoViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "293"
+                  endingLineNumber = "293"
+                  offsetFromSymbolStart = "23144">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -173,6 +188,21 @@
                   endingLineNumber = "312"
                   offsetFromSymbolStart = "39000">
                </Location>
+               <Location
+                  uuid = "A5B7433A-2EFF-4A54-AAE1-EC3A2284D58C - 1ee8d43b9478fbcf"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMUserInfoViewController.refreshEquity() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/MemberCenter/ViewController/KMUserInfoViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "312"
+                  endingLineNumber = "312"
+                  offsetFromSymbolStart = "27880">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -251,6 +281,21 @@
                   endingLineNumber = "263"
                   offsetFromSymbolStart = "26560">
                </Location>
+               <Location
+                  uuid = "3824A12F-405B-44E4-89F0-313CCD4A216E - 1ee8d43b9478011e"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMUserInfoViewController.refreshEquity() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/MemberCenter/ViewController/KMUserInfoViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "263"
+                  endingLineNumber = "263"
+                  offsetFromSymbolStart = "16276">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>