From 93cc2bc93006e7b7e04eb4e53217796c81fb40fa Mon Sep 17 00:00:00 2001 From: tperfitt Date: Fri, 3 Jun 2022 23:14:52 -0500 Subject: [PATCH] added keychain and user password changes --- XCreds/AppDelegate.swift | 69 +----- XCreds/CheckTokenMenuItem.swift | 18 +- XCreds/KeychainUtil.swift | 219 ++++++++++++++++++ XCreds/MainController.swift | 89 +++++++ XCreds/PasswordUtils.swift | 11 +- XCreds/ScheduleManager.swift | 32 ++- XCreds/TokenManager.swift | 29 ++- XCreds/WebView.swift | 11 +- XCreds/xCreds.entitlements | 9 +- xCreds.xcodeproj/project.pbxproj | 8 + .../UserInterfaceState.xcuserstate | Bin 73906 -> 76922 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 66 ++++++ 12 files changed, 452 insertions(+), 109 deletions(-) create mode 100644 XCreds/KeychainUtil.swift create mode 100644 XCreds/MainController.swift diff --git a/XCreds/AppDelegate.swift b/XCreds/AppDelegate.swift index fc53393..a9d0f00 100644 --- a/XCreds/AppDelegate.swift +++ b/XCreds/AppDelegate.swift @@ -11,76 +11,13 @@ import Cocoa class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var window: NSWindow! - + var mainController:MainController? func applicationDidFinishLaunching(_ aNotification: Notification) { - NotificationCenter.default.addObserver(forName: Notification.Name("TCSTokensUpdated"), object: nil, queue: nil) { notification in -// ScheduleManager.shared.startCredentialCheck() - - let alertController = NSAlert() - alertController.messageText = "Local Password" - alertController.addButton(withTitle: "OK") - alertController.addButton(withTitle: "Cancel") - - let localPassword = NSSecureTextField(frame: CGRect(x: 0, y: 0, width: 200, height: 24)) - localPassword.becomeFirstResponder() - - alertController.accessoryView = localPassword - alertController.runModal() - - } mainMenu.statusBarItem.menu = mainMenu.mainMenu - ScheduleManager.shared.startCredentialCheck() - var password:String? - while (true){ - let alertController = NSAlert() - - alertController.messageText = "Please enter your local password" - alertController.addButton(withTitle: "OK") - alertController.addButton(withTitle: "Cancel") - - let localPassword = NSSecureTextField(frame: CGRect(x: 0, y: 0, width: 200, height: 24)) - - alertController.accessoryView = localPassword - localPassword.becomeFirstResponder() - - let response = alertController.runModal() - - - if response == .alertSecondButtonReturn { - break - } - let isPasswordValid = PasswordUtils.verifyCurrentUserPassword(password: localPassword.stringValue) - if isPasswordValid==true { - password=localPassword.stringValue - break - } - } - - if let password = password { - - NotifyManager.shared.sendMessage(message: "valid password") - } - else { - NotifyManager.shared.sendMessage(message: "cancelled") - } - - - do { - - let isPasswordValid = PasswordUtils.verifyCurrentUserPassword(password: "asdfasfd") - - if isPasswordValid { - print("good password") - } - else { - print("bad password") - - } - } - - + mainController = MainController.init() + mainController?.run() } func applicationWillTerminate(_ aNotification: Notification) { diff --git a/XCreds/CheckTokenMenuItem.swift b/XCreds/CheckTokenMenuItem.swift index b7743b2..71ffb1c 100644 --- a/XCreds/CheckTokenMenuItem.swift +++ b/XCreds/CheckTokenMenuItem.swift @@ -42,14 +42,14 @@ class CheckTokenMenuItem: NSMenuItem { } @objc func doAction() { - let alert = NSAlert() - - if TokenManager.shared.getNewAccessToken() { - alert.messageText = "Success!" - } else { - alert.messageText = "Failure!" - } - - alert.runModal() +// let alert = NSAlert() +// +// if TokenManager.shared.getNewAccessToken() { +// alert.messageText = "Success!" +// } else { +// alert.messageText = "Failure!" +// } +// +// alert.runModal() } } diff --git a/XCreds/KeychainUtil.swift b/XCreds/KeychainUtil.swift new file mode 100644 index 0000000..c079852 --- /dev/null +++ b/XCreds/KeychainUtil.swift @@ -0,0 +1,219 @@ +// +// KeychainUtil.swift +// NoMAD +// +// Created by Joel Rennich on 8/7/16. +// Copyright © 2016 Trusource Labs. All rights reserved. +// + +// class to manage all keychain interaction + +enum KeychainError: Error { + case notConnected + case notLoggedIn + case noPasswordExpirationTime + case ldapServerLookup + case ldapNamingContext + case ldapServerPasswordExpiration + case ldapConnectionError + case userPasswordSetDate + case userHome + case noStoredPassword + case storedPasswordWrong +} + + + +import Foundation +import Security + +struct certDates { + var serial : String + var expireDate : Date +} + +class KeychainUtil { + + var myErr: OSStatus + let serviceName = "xcreds" + var passLength: UInt32 = 0 + var passPtr: UnsafeMutableRawPointer? = nil + + var myKeychainItem: SecKeychainItem? + + init() { + myErr = 0 + } + + // find if there is an existing account password and return it or throw + + func findPassword(_ name: String) throws -> String { + + myErr = SecKeychainFindGenericPassword(nil, UInt32(serviceName.count), serviceName, UInt32(name.count), name, &passLength, &passPtr, &myKeychainItem) + + if myErr == OSStatus(errSecSuccess) { + let password = NSString(bytes: passPtr!, length: Int(passLength), encoding: String.Encoding.utf8.rawValue) + return password as! String + } else { + throw KeychainError.noStoredPassword + } + } + + // set the password + + func setPassword(_ name: String, pass: String) -> OSStatus { + + myErr = SecKeychainAddGenericPassword(nil, UInt32(serviceName.count), serviceName, UInt32(name.count), name, UInt32(pass.count), pass, nil) + + return myErr + } + + func updatePassword(_ name: String, pass: String) -> Bool { + if (try? findPassword(name)) != nil { + deletePassword() + } + myErr = setPassword(name, pass: pass) + if myErr == OSStatus(errSecSuccess) { + return true + } else { + return false + } + } + + // delete the password from the keychain + + func deletePassword() -> OSStatus { + myErr = SecKeychainItemDelete(myKeychainItem!) + return myErr + } + + // convience functions + + func findAndDelete(_ name: String) -> Bool { + do { + try findPassword(name) + } catch{ + return false + } + if ( deletePassword() == 0 ) { + return true + } else { + return false + } + } +// +// // return the last expiration date for any certs that match the domain and user +// +// func findCertExpiration(_ identifier: String, defaultNamingContext: String) -> Date? { +// +// var matchingCerts = [certDates]() +// var myCert: SecCertificate? = nil +// var searchReturn: AnyObject? = nil +// var lastExpire = Date.distantPast +// +// // create a search dictionary to find Identitys with Private Keys and returning all matches +// +// /* +// @constant kSecMatchIssuers Specifies a dictionary key whose value is a +// CFArray of X.500 names (of type CFDataRef). If provided, returned +// certificates or identities will be limited to those whose +// certificate chain contains one of the issuers provided in this list. +// */ +// +// // build our search dictionary +// +// let identitySearchDict: [String:AnyObject] = [ +// kSecClass as String: kSecClassIdentity, +// kSecAttrKeyClass as String: kSecAttrKeyClassPrivate as String as String as AnyObject, +// +// // this matches e-mail address +// //kSecMatchEmailAddressIfPresent as String : identifier as CFString, +// +// // this matches Common Name +// //kSecMatchSubjectContains as String : identifier as CFString, +// +// kSecReturnRef as String: true as AnyObject, +// kSecMatchLimit as String : kSecMatchLimitAll as AnyObject +// ] +// +// myErr = 0 +// +// +// // look for all matches +// +// myErr = SecItemCopyMatching(identitySearchDict as CFDictionary, &searchReturn) +// +// if myErr != 0 { +// return nil +// } +// +// let foundCerts = searchReturn as! CFArray as Array +// +// if foundCerts.count == 0 { +// return nil +// } +// +// for cert in foundCerts { +// +// myErr = SecIdentityCopyCertificate(cert as! SecIdentity, &myCert) +// +// if myErr != 0 { +// return nil +// } +// +// // get the full OID set for the cert +// +// let myOIDs : NSDictionary = SecCertificateCopyValues(myCert!, nil, nil)! +// +// // look at the NT Principal name +// +// if myOIDs["2.5.29.17"] != nil { +// let SAN = myOIDs["2.5.29.17"] as! NSDictionary +// let SANValues = SAN["value"]! as! NSArray +// for values in SANValues { +// let value = values as! NSDictionary +// if String(_cocoaString: value["label"]! as AnyObject) == "1.3.6.1.4.1.311.20.2.3" { +// if let myNTPrincipal = value["value"] { +// // we have an NT Principal, let's see if it's Kerberos Principal we're looking for +// myLogger.logit(.debug, message: "Certificate NT Principal: " + String(describing: myNTPrincipal) ) +// if String(describing: myNTPrincipal) == identifier { +//myLogger.logit(.debug, message: "Found cert match") +// +// +// // we have a match now gather the expire date and the serial +// +// let expireOID : NSDictionary = myOIDs["2.5.29.24"]! as! NSDictionary +// let expireDate = expireOID["value"]! as! Date +// +// // this finds the serial +// +// let serialDict : NSDictionary = myOIDs["2.16.840.1.113741.2.1.1.1.3"]! as! NSDictionary +// let serial = serialDict["value"]! as! String +// +// // pack the data up into a certDate +// +// let certificate = certDates( serial: serial, expireDate: expireDate) +// +// if lastExpire.timeIntervalSinceNow < expireDate.timeIntervalSinceNow { +// lastExpire = expireDate +// } +// +// // append to the list +// +// matchingCerts.append(certificate) +// +// } else { +//myLogger.logit(.debug, message: "Certificate doesn't match current user principal.") +// } +// } +// +// } +// } +// } +// +// } +// myLogger.logit(.debug, message: "Found " + String(matchingCerts.count) + " certificates.") +// myLogger.logit(.debug, message: "Found certificates: " + String(describing: matchingCerts) ) +// return lastExpire +// } +} diff --git a/XCreds/MainController.swift b/XCreds/MainController.swift new file mode 100644 index 0000000..cfd9567 --- /dev/null +++ b/XCreds/MainController.swift @@ -0,0 +1,89 @@ +// +// MainController.swift +// XCreds +// +// Created by Timothy Perfitt on 6/3/22. +// + +import Cocoa + +class MainController: NSObject { + func run() -> Void { + // make sure we have the local password, else prompt. we don't need to save it + // just make sure we prompt if not in the keychain. if the user cancels, then it will + // prompt when using OAuth. + let _ = localPassword() + NotificationCenter.default.addObserver(forName: Notification.Name("TCSTokensUpdated"), object: nil, queue: nil) { notification in + //now we set the password. + + DispatchQueue.main.async { + if let userInfo = notification.userInfo, let newPassword = userInfo["password"] as? String { + let password = self.localPassword() + + if let password = password { + try? PasswordUtils.changeLocalUserAndKeychainPassword(password, newPassword1: newPassword, newPassword2: newPassword) + } + + ScheduleManager.shared.startCredentialCheck() + } + } + } + ScheduleManager.shared.startCredentialCheck() + + } + + //get local password either from keychain or prompt. If prompt, then it will save in keychain for next time. if keychain, get keychain and test to make sure it is valid. + func localPassword() -> String? { + let keychainUtil = KeychainUtil() + + let password = try? keychainUtil.findPassword("xcreds") + + if let password = password { + if PasswordUtils.verifyCurrentUserPassword(password: password) == true { + return password + } + } + while (true){ + + let alertController = NSAlert() + + alertController.messageText = "Please enter your local password" + alertController.addButton(withTitle: "OK") + alertController.addButton(withTitle: "Cancel") + + let localPassword = NSSecureTextField(frame: CGRect(x: 0, y: 0, width: 200, height: 24)) + + alertController.accessoryView = localPassword + localPassword.becomeFirstResponder() + + let response = alertController.runModal() + + + if response == .alertSecondButtonReturn { + break + } + let isPasswordValid = PasswordUtils.verifyCurrentUserPassword(password: localPassword.stringValue) + if isPasswordValid==true { + let err = keychainUtil.setPassword("xcreds", pass: localPassword.stringValue) + if err != OSStatus(errSecSuccess) { + return nil + } + return localPassword.stringValue + } + } + + return nil + } +} + + +/* + if let password = password { + + NotifyManager.shared.sendMessage(message: "valid password") + } + else { + NotifyManager.shared.sendMessage(message: "cancelled") + } + + */ diff --git a/XCreds/PasswordUtils.swift b/XCreds/PasswordUtils.swift index 52a7329..052d3a7 100644 --- a/XCreds/PasswordUtils.swift +++ b/XCreds/PasswordUtils.swift @@ -63,7 +63,6 @@ class PasswordUtils: NSObject { class func verifyCurrentUserPassword(password:String) -> Bool { let currentUser = PasswordUtils.getCurrentConsoleUserRecord() - do { try currentUser?.verifyPassword(password) } @@ -92,7 +91,7 @@ class PasswordUtils: NSObject { } return true } - static func changeKeychainPassword(_ oldPassword: String, newPassword1: String, newPassword2: String) throws { + static func changeLocalUserAndKeychainPassword(_ oldPassword: String, newPassword1: String, newPassword2: String) throws { if (newPassword1 != newPassword2) { throw PasswordError.invalidParamater("New passwords do not match.") } @@ -117,6 +116,14 @@ class PasswordUtils: NSObject { throw PasswordError.invalidResult("Error unlocking default keychain.") } + do { + try getCurrentConsoleUserRecord()?.changePassword(oldPassword, toPassword: newPassword1) + } catch { + throw PasswordError.unknownError("error changing password") + + } + + err = SecKeychainChangePassword(myDefaultKeychain, UInt32(oldPassword.count), oldPassword, UInt32(newPassword1.count), newPassword1) if (err == noErr) { diff --git a/XCreds/ScheduleManager.swift b/XCreds/ScheduleManager.swift index c088590..8acdebd 100644 --- a/XCreds/ScheduleManager.swift +++ b/XCreds/ScheduleManager.swift @@ -19,15 +19,29 @@ class ScheduleManager { } timer=Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in - if TokenManager.shared.getNewAccessToken() { - NotifyManager.shared.sendMessage(message: "Azure password unchanged") - } else { - timer.invalidate() - NotifyManager.shared.sendMessage(message: "Azure password changed or not set") - mainMenu.webView = WebViewController() - mainMenu.webView?.window!.forceToFrontAndFocus(nil) - mainMenu.webView?.run() - } + TokenManager.shared.getNewAccessToken(completion: { isSuccessful, hadConnectionError in + + if hadConnectionError==true { + NotifyManager.shared.sendMessage(message: "Could not check token.") + + return + } + else if isSuccessful == true { + NotifyManager.shared.sendMessage(message: "Azure password unchanged") + + } + else { + timer.invalidate() + NotifyManager.shared.sendMessage(message: "Azure password changed or not set") + DispatchQueue.main.async { + mainMenu.webView = WebViewController() + mainMenu.webView?.window!.forceToFrontAndFocus(nil) + mainMenu.webView?.run() + + } + + } + }) }) } func stopCredentialCheck() { diff --git a/XCreds/TokenManager.swift b/XCreds/TokenManager.swift index af417be..3e6ecf1 100644 --- a/XCreds/TokenManager.swift +++ b/XCreds/TokenManager.swift @@ -6,6 +6,7 @@ // import Foundation + struct RefreshTokenResponse: Codable { let accessToken, expiresIn, expiresOn, refreshToken, extExpiresIn,tokenType: String @@ -26,13 +27,14 @@ class TokenManager { let defaults = UserDefaults.standard var timer: Timer? - func getNewAccessToken() -> Bool { + func getNewAccessToken(completion:@escaping (_ isSuccessful:Bool,_ hadConnectionError:Bool)->Void) -> Void { - var result = false - guard let url = URL(string: defaults.string(forKey: PrefKeys.tokenEndpoint.rawValue) ?? "") else { return false } + guard let url = URL(string: defaults.string(forKey: PrefKeys.tokenEndpoint.rawValue) ?? "") else { + completion(false,true) + return + } - let sema = DispatchSemaphore(value: 0) var req = URLRequest(url: url) let refreshToken = defaults.string(forKey: PrefKeys.refreshToken.rawValue) ?? "" @@ -52,8 +54,8 @@ class TokenManager { let task = URLSession.shared.dataTask(with: req) { data, response, error in guard let data = data else { print(String(describing: error)) - sema.signal() - return + completion(false,true) + return } if let response = response as? HTTPURLResponse { if response.statusCode == 200 { @@ -61,22 +63,27 @@ class TokenManager { do { let json = try decoder.decode(RefreshTokenResponse.self, from: data) - result = true let expirationDate = Date().addingTimeInterval(TimeInterval(Int(json.expiresIn) ?? 0)) UserDefaults.standard.set(expirationDate, forKey: PrefKeys.expirationDate.rawValue) UserDefaults.standard.set(json.refreshToken, forKey: PrefKeys.refreshToken.rawValue) UserDefaults.standard.set(json.accessToken, forKey: PrefKeys.accessToken.rawValue) + completion(true,false) } catch { - print(String(data: data, encoding: .utf8) as Any) } + print(String(data: data, encoding: .utf8) as Any) + completion(true,false) + return + } + + } + else { + completion(false,false) + } } - sema.signal() } task.resume() - sema.wait() - return result } } diff --git a/XCreds/WebView.swift b/XCreds/WebView.swift index 2b4f01c..d381b64 100644 --- a/XCreds/WebView.swift +++ b/XCreds/WebView.swift @@ -20,7 +20,7 @@ class WebViewController: NSWindowController { @IBOutlet weak var cancelButton: NSButton! var oidcLite: OIDCLite? - + var password:String? func run() { var scopes: [String]? @@ -83,7 +83,9 @@ extension WebViewController: WKNavigationDelegate { if navigationAction.request.url?.host == "login.microsoftonline.com" { let javaScript = "document.getElementById('i0118').value" webView.evaluateJavaScript(javaScript, completionHandler: { response, error in -// if let rawPass = response as? String { + if let rawPass = response as? String { + self.password=rawPass + } // let alert = NSAlert.init() // alert.messageText = "Your password is: \(rawPass)" // RunLoop.main.perform { @@ -209,7 +211,6 @@ extension WebViewController: OIDCLiteDelegate { } func tokenResponse(tokens: OIDCLiteTokenResponse) { - print("You got tokens!!!") UserDefaults.standard.set(tokens.accessToken, forKey: PrefKeys.accessToken.rawValue) UserDefaults.standard.set(tokens.idToken, forKey: PrefKeys.idToken.rawValue) @@ -218,8 +219,10 @@ extension WebViewController: OIDCLiteDelegate { RunLoop.main.perform { self.window?.close() - NotificationCenter.default.post(name: Notification.Name("TCSTokensUpdated"), object: self) + if let password = self.password { + NotificationCenter.default.post(name: Notification.Name("TCSTokensUpdated"), object: self, userInfo: ["password":password]) + } } } } diff --git a/XCreds/xCreds.entitlements b/XCreds/xCreds.entitlements index 275f07d..0c67376 100644 --- a/XCreds/xCreds.entitlements +++ b/XCreds/xCreds.entitlements @@ -1,12 +1,5 @@ - - com.apple.security.app-sandbox - - com.apple.security.files.user-selected.read-only - - com.apple.security.network.client - - + diff --git a/xCreds.xcodeproj/project.pbxproj b/xCreds.xcodeproj/project.pbxproj index f1e8d16..8d2ab3a 100644 --- a/xCreds.xcodeproj/project.pbxproj +++ b/xCreds.xcodeproj/project.pbxproj @@ -10,6 +10,8 @@ 767116A7284AABC500CCD6FF /* NotifyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 767116A6284AABC500CCD6FF /* NotifyManager.swift */; }; 767116A9284AAE2B00CCD6FF /* ScheduleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 767116A8284AAE2B00CCD6FF /* ScheduleManager.swift */; }; 767116AC284AB4C000CCD6FF /* PasswordUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 767116AB284AB4C000CCD6FF /* PasswordUtils.swift */; }; + 767116B1284B021500CCD6FF /* MainController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 767116B0284B021500CCD6FF /* MainController.swift */; }; + 767116B3284B045800CCD6FF /* KeychainUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 767116B2284B045800CCD6FF /* KeychainUtil.swift */; }; 76EE069E27FD1D00009E0F3A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EE069D27FD1D00009E0F3A /* AppDelegate.swift */; }; 76EE06A027FD1D01009E0F3A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76EE069F27FD1D01009E0F3A /* Assets.xcassets */; }; 76EE06A327FD1D01009E0F3A /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 76EE06A127FD1D01009E0F3A /* MainMenu.xib */; }; @@ -33,6 +35,8 @@ 767116AB284AB4C000CCD6FF /* PasswordUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasswordUtils.swift; sourceTree = ""; }; 767116AD284AB59400CCD6FF /* SecurityPrivateAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SecurityPrivateAPI.h; sourceTree = ""; }; 767116AE284AB5D900CCD6FF /* XCreds-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "XCreds-Bridging-Header.h"; sourceTree = ""; }; + 767116B0284B021500CCD6FF /* MainController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainController.swift; sourceTree = ""; }; + 767116B2284B045800CCD6FF /* KeychainUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeychainUtil.swift; sourceTree = ""; }; 76EE069A27FD1D00009E0F3A /* XCreds.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = XCreds.app; sourceTree = BUILT_PRODUCTS_DIR; }; 76EE069D27FD1D00009E0F3A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 76EE069F27FD1D01009E0F3A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -83,6 +87,7 @@ 76EE069C27FD1D00009E0F3A /* XCreds */ = { isa = PBXGroup; children = ( + 767116B2284B045800CCD6FF /* KeychainUtil.swift */, 767116AD284AB59400CCD6FF /* SecurityPrivateAPI.h */, 76EE06AB27FD1D92009E0F3A /* TokenManager.swift */, 76EE06AD27FD1DC3009E0F3A /* PrefKeys.swift */, @@ -100,6 +105,7 @@ 76EE06C127FD1F50009E0F3A /* MainMenu.swift */, 76EE06AA27FD1D66009E0F3A /* Info.plist */, 76EE069D27FD1D00009E0F3A /* AppDelegate.swift */, + 767116B0284B021500CCD6FF /* MainController.swift */, 767116A6284AABC500CCD6FF /* NotifyManager.swift */, 76EE069F27FD1D01009E0F3A /* Assets.xcassets */, 76EE06A127FD1D01009E0F3A /* MainMenu.xib */, @@ -189,11 +195,13 @@ 767116A7284AABC500CCD6FF /* NotifyManager.swift in Sources */, 76EE06B827FD1EB7009E0F3A /* PreferencesWindowController.swift in Sources */, 76EE06AE27FD1DC3009E0F3A /* PrefKeys.swift in Sources */, + 767116B3284B045800CCD6FF /* KeychainUtil.swift in Sources */, 76EE06BC27FD1EFE009E0F3A /* PrefsMenuItem.swift in Sources */, 76EE06B427FD1E5F009E0F3A /* WebView.swift in Sources */, 76EE069E27FD1D00009E0F3A /* AppDelegate.swift in Sources */, 76EE06C227FD1F50009E0F3A /* MainMenu.swift in Sources */, 76EE06B027FD1DD8009E0F3A /* Window+ForceToFront.swift in Sources */, + 767116B1284B021500CCD6FF /* MainController.swift in Sources */, 767116A9284AAE2B00CCD6FF /* ScheduleManager.swift in Sources */, 767116AC284AB4C000CCD6FF /* PasswordUtils.swift in Sources */, 76EE06BE27FD1F13009E0F3A /* CheckTokenMenuItem.swift in Sources */, diff --git a/xCreds.xcodeproj/project.xcworkspace/xcuserdata/tperfitt.xcuserdatad/UserInterfaceState.xcuserstate b/xCreds.xcodeproj/project.xcworkspace/xcuserdata/tperfitt.xcuserdatad/UserInterfaceState.xcuserstate index 11749ec690164bbf0b85be70c2005b312e8f7fdd..ad5c4a321ef3801d83d6fd6be327f17d3ae59548 100644 GIT binary patch literal 76922 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 JKmNbowE=MrBF6v# literal 73906 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
    U7i zTpR8>)3wUA+O@`YmTRr+Y$`w>O{Ky#Dom%s3<_7c3$r$(ey(-!I^T6R*V_f#gsH%8 z=Mv_?cW_IAFqa{nsV+tyCBFH&zEEL!Y9P!s!?{ggj0}MsG*pDrFnh+!rnqedmbBpA%Pne6a4MSvvs+qp{B4o$@< z2?i_YH!EPNI;?p{2gXZF&PyGbpP8DFnUbHHke-?~Fd=tja$Z9Az>#SqbF=fZ(=yVa z@+(%bo656ORt|_?k(!Y`5H2E5OHE(7(oid|VQPgi=wP*?-_fcS@2RRN*<`z+F}OY6 zxOVM3bnMi*OJ^A4qeFb(ITMPF7K=7I5Id$}YS4nl7e+h!L!dOU9t%NtL9oIwC@?_v zDTRgkFftW}*}ZbSyuqe!DdHPJFa=?cr2!oX;Rn^0Rd-yZ^%OBrz#@a87PsA&kXSr%j(V&o|$1Xj`Rf*Q^Za zuz1#6(awrbhM%O@tWbwjNQ)cW3=gySWwDinDO!^+A#Z5Joh6YfC zMBUzyl@02NTaVj0WN6y3;UfTd(99rj{MAOYPnlAfZw%ql@w@p~Om8yODlo3)LpAdY zMiwOGrsroQWR5JzPe@PBDo98hn4h1Sk(ZI5pPxK?1#1hyF}$zb0ij3zf9<__Je2Dn zKRiY=t->s-(;~abzVBnk5GiDdY+1$@#xj#F%uSX^Bt#;+WGN&%g;r9?(rG(nC;QgE z{;qolozC|CexK*}dj5LOt7B&FYhOOw`}4W3`|p$)uquCSB~N$HiaG;#(qJzE=x-Yt z>)}QfREW~b@A| ztwXjtw6ZT*eao}j!|b??t(iRo&&3YZNE}cULqcR_ckfh|g{zQ}SCI$b734xg!H)P* z_0rJgST#F2!)o~tMbT-Gophj*i<6_Yva_>{oV4^`v@uTrW=0^=5V=hK>pG$p@ftKU2O7f8f=Da``L`y4zQWBnXy^09b~g&vu3kpJIv`n#h8nj63itCWe=eaLnsFb z7@pQp*iOJ%>;)Ak-@e)d!&l;Ag|I zB;x`^YU)M}*za)E9lVYmHb3Dx4#e5Q23E; zr6e<(jRnvobSRE=SMVx%VAt%Ucv1a=^!yxr+Sue7}J62 zgiyW^3P87E5GoErr9h~B2vrNA9>B98#>BNG;kjUXwU*eGxxVDea3o1?4&JU5e=r%# z_~1$!Fz{C@*y~RFLm?vQ{}CUmJHR1WxtZt@r=A~`?!&4E$OTX*3#^7a@N;>6e}6jM z=GK3xUl%Akz%cxW)Dq}XD_UI{Zy|h73@l2TrTIG$H0f?F$)kXC>QevLIwY8 zsV-m(e87Cfd;-_C0xcL;w2Wam1OQcj6n_98F$Fh-ItHOajJPiTS*hW$0??fov(tbe zfQmrV24Dqn%{s%@gPp&VABb);ruqZAp?cf0TrMm>qJNGYz+Tge%%VT$ty!11cCElN z8^~L~L4e@P`XxY!c4L0aS;M_mQe&^7xuvzUt4|Osm2KIy+qhhI=`)yR$9%pK& zU^jyujNJsGqH?joPr-a!51g6lO7_=g_HQ}!b}aB%1JVGb_y_5#s0b_NveGJ{q01Th zv2c{zQmsM|>IB1SIY|_|>nD^RyBjM9@Bpj?RuU_PmBz|o0mcigrIQdU0YaUEP>B#K zsR%0%Sn(sQ66OIGAgHIAd>F9TWWakN)ET%#{D04Ln9NUdnX@UZWco+e%PIgfGq62K zR39LNz@)E~`-x++@&dh(zJ#cY{9C>ss|IRZerwjBcrdF*CZGJr{m9D0V#fc8mH%&| z;@=qm^7@gn;1wZdSY50hb`Mq`Yk=L0HN@`2?#CKojj;d&NQF>o5b7+1N{3Jx5b7L+ z%7jqoAygKG%7#!EAXH8nH!s$Vo0ppxI84C*;BLch@Hea-2!Vi5Al@6C_Zb8<1OEXZ z0PcamL#RA>nPKH%g?<2ez^eo6{>yuNMeu>=Kjmd|1fVa1ynquhLoAry4HiNOa>LA? z?B_@IV-X!#{UusrC9O32b1B&P1r!FD_g{-`gZl;49oT087(5_&zpm_p%1 ze_{{|tAcyG^xyy;1irx5A8hNaG|XIgX1PC5HWT8(dNCoMzoAMQW$7PO>5HWSe;d{h z3*>A8geuI#(y>6m7D1?M@YHVcrBnQZjDcgo3pjTC{C}8Hwk}LjYV1G*&%Kv-LI{=t z1UU8>HWV9%1q`qlLS2MVB@pUT0T#kWU?Z`|Ayg@ZDuYnv5UK)hf@ew4fyp&>qWVxs zZd5A3eSpRQi!-u=e~=kf-x~-pAka+U-Y_j;Yi7q_-v{ij!7zWB0#y)jL{?Y>7lO43 zhz>L-H<&QYD1kI)c{3OA>nZjWHW8bIJ&jF9aAMD3QxIVYTkKhEx|M^slN<1wc)MCL zD>b9|d0BbEm5?0#DTiQi*_qkTL(F7mXCTy72z7Z40|B9`Aymy1P~$mlCiXlw3t@}2 z$6f$Ep#UKWVvcA!?*2ZW4oe;)OE7g_@JgG}K<6M-69H`MhJBaLfwNm)BhLRAod=%36^B{Ayj=X zwi!Y-{HulsTwF7MR@?rsxVUiZH*DIwPWNd1|!drg(fmJPm8a9Bk znBF}WW5Ls?M=0L9?i5dF7PDiDcCg3%{=m1ELhE)=So#BzPNPvl8CZk zDO<(BbZzF?^2;B*VmS=%tVmt1k+8DswqU`#R`0KrjEG(QS^Ac0qWKLr?$fDasky~)7o?GL`XuLKG* z)`C~Q0zhY-4ZLlayKf4hSufQ0G48;!25lfGZ>Y%NS_4q2pT`20 zZ3+4Q!Ja`!Ob!6Fi9M>6Vn?bHaav*mhr2*<94{#SXqy|z8X@E3D?n4?OO^|j-KV$$vUE+|5$RuPk z@+`6rS&w{${KPVHR`3&>C8KBQgPrF;8;RI9>|>aPv_q)dxme&Rx%00q1eOR-Fdwl` z|Fe;J*NA)7_Mh2}k+H@9b1M;ehR_?hu$z9_!6ziT8^E_3S|qam-mcYa)~+}6aiF&7#WaP#z6T4Zt|Tv6dwwhNN*=#TUZ+D>yQkAVSkWik@$15cL9d?UpEoK|I@QdLv`ud55*X$h*+TwefsEY(HOCjQqYp-v4@QfGbcx-MP4J^ytvSHcER z%wT;k26)Z)|JTLrjyf~<(;EhFah{23-hl%@APqBf0mAVIObQhsBo8yc zx6TT1P!MdP145{PB%w(92e`Y?xVV`7X)EwFXdw0?9D(P-6LAy~gkS*P6oWViaNjCK zE#g!Yg9&o3Rh|g>YfC2LZz9h{i2R!boZ2Q=3*eGlsY+h_sHX2(D;6WGI z3V^S@5ga${VC!Og1`yznz{|cG@FPCpWmiG&0o=y|X^lLL^asdq{1W%MguITtgKS2& zAls1x$T{Rkb|gEBeGNM|JC1!jyD+;by9B!oJDJ6XR=AV(5?fmOU6JDe&ohdHnxi@LE3 z#P#6*#G3Lk80->n0;;U>-}z~|*nUR1LKsnrXUePC}>_2=x#`J%UiJ5ULGAwHG0+uro*fSDi6J%MG(WS_u7-K0a*TY-jP@ek5iXeYBeU`!f$ zdjY3d}x7XWx_f2K@C9vfx~*1YFi%RXB-07#=l^{V!vU(Lnt7% z0Hoaop}GrjY&axB2)7CX;Q^@M;2}MQ2gLNh!O%NUEmqDifIbU=_DFPaFvFW>=s*YN zmMKf&ImcU5ifG#NM8z~YKCYU8a@F6hQerZ;4c-$rsaDn52 zP%m?Fn<3Qi@WA=Nu@OJkE(75S;5Z1y6*wKpfnaf9(Wk$3gafw?(UXVUj@tpD0R8nc zRP4Frm%t);6$DN8#|*N^J8;xSmRTmh#I4nyMP6tQE>EiTodvN+V1KeI58A8p0 zYs*kyAkmD?wbL_n-U>U@PrhCY|N_ zDGto$^ z;EnHy1CGN*2=#F#@D=BR^FZ+A<6LoWIN(%!1EJnRsCW6eBY?ShL8$jIXZZjEwt;c= z!vM8`e=Wzf0F@K`gjZ{ygDU`y=*|=?FcYk?2oRFEej;8vF6i%?3kJ;{gHWH~=03wx z5yrlkw*x$p0t7z>vm$FFptb3H8+!s$g#jnb(&8CXTxe$01MaSFG!|Dm4&twHQ4kvO zW2~{bL?AJ6Cvb7Nc-%=`0`3%qW`od32+a47an<#`{4WZXS zXnE$B12B30w5PaPqlCjt99aG^unkzx_JG9(90)8J;QzL)XYekSkrTIumt`;DBuu8e z9nd7*(;22rV-O{KfC4}+e;U~E%t&S~_GPNPfXfHbzPKD*E-nv3uZ7U-AoTit9P`x< z5PAcUYuDlR$AHcNf5B4o%nblmXnBXhp(gOI0u!tg1b{Vnr{yQCNh<^4ZMbp>&A||S zj=O@Z#8u&{5uCWIxEkCwTrI8+cOCaD?gs8A>LsoL*qP4YxE|ci6}T5}j}1W4+u1^8<#U^zyGCe18R# zfY2BSy&XdDfY2Kuv>b$%g~RI5GEZ^0aJO-Hz##A9?&0p^nsCjy2e=lb4!p0IhPNER zZ})=)V6p@ZV}*Af071|IeW0+OgOXk#tmsE}FjvfZH*#67^G6zl-UOk!AoLapy$wQh zGOpWmNv$|AewtZUt&%H^uDCo{i`RxYnvZM8J;rrFXl@9NgV1;o0f_6y0dy2syKw{V z*`Xh;nlt+Y&&n#$Humq-aVCI?dx`rU0KLs6c$I6 z^apHjpSw2@!#+TX``cvr;0p;p3=E8Rpv3%b9)0hltYAzaPXAg9K>tC^-U?Fyc?AAi z3)64Ul&_Lh7Z-5S`tNFDdG}elV88l54N03$10D^~&|gOk2j1#}0C%89{@rW^fH)aL zP&4buF`gGNWIR|NF$U`ZDlW?zO$e>@k8%co2yeYCXCSl&gjW6o`)Bpe0WfpCBi;$` z453vZv?_#F`x7%?;obknTk%vDZ&m+~ymfg41>z$CtH1~0gYhBwWB5>f7(N`&z(e>5 z2(1O72@qNvLK7i02}0{YXflM>h0uBsde0^N@g-IfyTmF^!mL7nnN{rl!77aYe^&8- z|7H#RIha*sLTH0!Rsk-D{a02|h%bg&MG=HH%*9`X(EI*NR#Aq(3OR$=@vtb#?>4fsYDmhlr60=DaPBoBWJrfV4J z_-i6;H!SJa_N>&O)I0oL{5=-gfs6gnKxUb(kR7<>k41M65l0L0kMOPdHheq&F@y$V zw1Ci-5ZVetANoOoH`i|idJIq^!AY1EMF#(rMQjI|#Af{md~;dTVQOLj9pMhK>azYL z;l4x!<6q;)@e}w-z^|qdf%s|s3|eiiI(`mmkF>|n;};ON_yznM!1#b}?Z?8DJn3HE zte|pW9stN2263o=e8}zO2Eq-%O$B}j;CM$v3LFp*9}k6Hd}MDRv6#Y&i&YkuPAkOZ^W2{)fkJStKkg-1+zq_>b^%FFOqXoZ;`4 zz2$B9nFq$t@L%v>@!#+Oaj=Kbhaof&Z;k~#Y&^*I+jv$%XeS8m##}{ThL9y}MY4bg zW;DyP9lc`DA7WXXupwu~v^C+(OU?1D=ivg)@oeDX;MvH-384Y!ra)*H2<=+HCJI2v zR)Fx>09mcLg!3>@3j$B%pHr7^l3<2G0L0*@L}qbt#`ed# zL{OgRr!36cVM}beuUmPx1MGkY7#!}oJisRM_!sPehaX@EJOVs|5c&v&_Fl24c|>@? z`-T649q{Z%2=PclXis3wqrDhTE0Zcfh-2CC%bk$pQTn^`%Ah=;Dk@yw2b|JgnP>sR z$+|zH2|QXn0IAC50W!%i7pcQCfVly*@K1lGlIq&*^v z!4I4cTM+z+-3S?kDnbh!`LjUSAnZ5{ISz2xbGUN&aRhOMaWFU{IASWb; z%JG6@ierXjj$?u24aYl<4;-I3zHofo$PM4bzj5=%ts8f2`1N^^$9hYZl!2^A%j{!^W)$j)WL+n{r!$ zn?78*Y1~J-1Hr`=m$`3pH*(+RzQ^6f{Q#VapXQ$9Uf_O%S&PA9gfX%hb&Mv4fYHW~ zFl2Cy%>@&L3BiPd(^AQpvmpGu41`;^Vn#5ZL4@T7EI0NS5EiI})xnxz&9D|&E37rv z78?WtjH0kH*b~@nYz`bi1INH%uVS0953moht=QkNz1V*2Aa)Y_5r@F7#^G>Va9aWX z%8vucCr%Wn05C=sfG?iFrQyE++r;~T_aSd9Z#!=XZx`$?>W4k@@ua^!fJk?c+1zJHThgXTf)n&zaAa&z;Yc&zsMOFM;nI-vz#0 zzI?ume3$sj_$v77`C9ne`JVCh@Qv`j=6lQciSG;FH-2`06#r`ewfvm?JNU)^wAUI_$C?dE^P+U+#P*qSvP)m>~ zs3WK==p^VPNEZwc3=#|zWC%tG9v3_#cwR6|@Pc5TV5wl8V58t|!MlR@1zQE%1v>=0 z1fK{F39S;^B(zg#myoQGf{>Dsijc0*UZH(LMnYyn7DARnhlCCbc?(4eB@3Mu$`HyF z$`Q&FDiA6XDif*|suvm%nh{zQdMor^=!?)dVT3SJm|J*IVB5lsC`xp-=vq->Q8`g%QB_fOQEgF@ zC|Oib)I!u+)K2t>sE??hC`~j-G(NE&Db5W`}pqY-L1P{?EZas z@9sVcDG7B6O$mYoQ6g3%RU$_sPohAgNaCWzC5ak|T8ZltHzevM8YON^3`u;K#7gd# zRFNb|5+!vcbtU&n8cCW+no62W+DW=fdPsUodP{~#G9)7;k4v7AjF(K1Oq48=td^{k z{8jR%C7($4O7=+(NDfJkNX|&kNiImfk$fllL5fpKSc)KJDs@=OLCR6e zS;|++Ps(44E)^yfBNZogQtFgchE$PMja04Fb*URt^-_&ex25h%bxA#udMfo?>ZMeV z)GMiesX?hXQs1S8r3uo8(k{}+q@$#hrBkHSq|>F(NuQU_md=qbm#&k(D}7(OS-M4f zOnOfGgY;LKbut@dHp)oIsLH6zXv)~ic*uClc*`WnoRc{(lPyy(^H8Q$rd?)Q=9A24 znJ+TmWLL}LWp~K($qL8{$x6#=$m+`K%NoiW$sUlkmbH_0kad=Im35bmk}a0KA^SwO zSGHevNOnYaPWG!DT5he}202bSjNDea9dbM61muL}MCG*PEaZITBIT0gPRk|BrO4&V z<;msC70Ok}-H>}I*Cy8?*Dd!{?uA^BT%X*G+`QbP+&j4sa-ZeC$s^>E@;G^3d0qL# z@}Bb1^5^9X<*Vdtb$T!H}mcJ+8B;PInRQ|dAq5?vJT>+)AQvsZCQ;=0KQm|35 zS8z}WQ;1hMrI4ghuJEfuy+WfxkHWaZgu#m9z^0;#4=O{-U~FRa8}6RZ>+(RbEv|RYlcN^|)$|>Q&V?)t9OR zs>7;dsuQa7s*9@cR6nYIR$HgGT}@L>Pt8DWpPG@Hjhcg+vzn`#ry5nwPmQJ)ua>Ts zrIw?XuXa(bRINhoirN#kUbP9eMYVToAJx97eOF(jzFwU}ol707j#uBUPExm3_fZd3 z4^t0UhtyB0C#ol@C#z?wXRGI`=c`w!-%x+3-lpE6-mU&r{e^mudY}4?`n>w0`aAUx z>YvrWX&^L^8aNGJ4PA}H8lD=_8s{|%HL5gfH0m^NXf$Zt*0`t9q|vSMRO7kE8%;LN zRhno`K}{J=c}+#l1Df`lj+)Mzk(x=GXEakaD>WN5Z)@Jw?AM&uoY9=soY(xSh1OcD zwLxp6))p;cEg3C&EhQ~gEe$P#)?TgsS|(a%S_icbY1wGGYx!vTYaP`J(qd>uXhmto zYQ<@t(Mr?G(8|=hs8z0YMXOq?PV0tNgVrsrXIjHr<62W%vs!Po-fMl*`a(bvFodmy z9RxmtAVGv6O^_of5R?h31a*Qw!GN%ru#a$vU`?LhiOo|2xEekZ*m^^*oklcWXGTha&8XVO=lbvhh6oH~*^YC4)a1RZ-FPaUd` zuTGLqmQJ?L1)W@-a-C~B*L7~{H0V4cZzOY*apX5HYHn-t;jZHd$J>$LUtn`A$yZ6$ydp> z$9RwFp38e~?rGR_YtLPMto}}YetkiG5q*DshJJ+pas3zrF#{z76$3Q`O@qe0YRe$+hG{Hl4U`AhR&^M3O|^GWkJ=I_lvntw6> zW`VFkT5wumEbtbaEw);0w@|gvvoN&SZ((9#VPR=uZDDKSX+gE{wFt9_w1~2ZwMei? zv`Dr{vBc8gAnCl=2vURv~8^ji#Be6aXz@zvt{LAHad4x$gPIk@g1 z$3f16+y^BO?mOsv@XW#5gT0n)mOCxAENv_)mTs0uEWIp`T83LfmXVfGmNAwmEYmDA zEYDkBu*|b8u)J;AZrN@5)bhDyuVugGpyjaTqUAd)cB?g3>#R7eFjhFLO;%g1M6DF8 z46OE98C#iJSy)+F*;v_IIa*Py+^j;a7*-Kh$E~8RPFS6^O0+s{m131n!U$>jLXy>oV&K>q_ft>pRwutw*iL zt*5MKtrx7{T7R(qZ2irK&1RL&YMUK4d^Q3$LN+2cVm1;s(l)X-@-|8~DmH31mNo%4 znKtz{1GcMeg>4ON-EE_76K#`iQ*F=M=Gd0lmf2R=R@zqE*4WnC-m`7CeQ4We+hN;f zJ8S#Jj?IqU4sEyIj>C@24r9k>Cuk>Or)sBVr){TWr*F5{Zoi$eoxPo>oxj~tyCAz` zc9C{bcCmKxb_sTAb{Tf(?XvAk?XK8W+g-D}Vb@@H+wQL2OS>_5RgKG;6g zo?#zhf5E=Ne(>fAw!`lZe|JDSpd3~^a5-#o*ygaqfzLs}LC8VG zVV8rVgNlQ?gO&r)LC3+t!P~*#f$k9K5b6-_5aDp#;fzC?!v%+2hYE*khZ=`EhkA!b zhdU1U9J(F)9mX6c9Ht%S9Ns&8bok=%-I2|a%TdNr$8n#dg`<_Djia685l0_Kf5)Sa zA&y~=kYl9dImcqhGRMn~RgSfezdF`CHaZSD&N-o+);O(q+UUgXgmc>D^o!GWr=3m$ zPRdSdP8v>HPTEd7PP$HeoD7`yIT<;bIC(oII8{1zJH2<_?yT*6*g4$!ymO)RMdwoI za_4K#jn227?>gUiZgy^Qe(Lu0qMV_mQ8Fm!DHkYtltRj{lzK`dImrHS%@@`%z# z>7aB`o>1mpxLo92EL?(Ja$N4Y47nm*d0jtok0*JrLTTzgz!xlX%& za^rNvxZ&M4yKQyb;l}4C=qBPO<|g4rbR)azx#_#@b=&V|;%4S%;b!G#?Plv1?3UqH z@7Cwe?!L=?A2=Bw?|#v}(*3G?t^0NNJMNF%+ub|dyWM|tf9C$e{df1*?vw5_?(^<% z+~0X%J$8Bsd5Cz3c}RK4c*uJwdXPQ#c$j#YdK~tkc({6acu+ljJ!l?BJ)%64J&HXp zd6aux@u>E==5gKQrbna49gq7SFFkra`aA|ahCD_+#yzGyW<2IS7Cqh`!5on}Vtypx zNam5-M@BqXc?x(EJoP;dJ&im~JP&y~dAfMIc^>if@}zqDdWLyIp2t07JmWl1dX{)z z^St5N;CajQzUKqahn}sTzk9y&9P=FaeCPSu^Q#xa3+1)iYn|5yudQC9UK(BmFOrw8 zm%f*wmyy>2FLN(TFKaI!FMlt(SAbWL*D6IItM_**8+9X$AaUqYsylgpZ+*k597CHJ=_|gfFkJrmwZHv#+bKhp(qE z-8ak^@;&Yw;~VFD()W~arf;@yu5W>Fv2TfQlW({0bKjS~y}pCK!@gs_Jx>pOBx3pQ0bh?~tFZ-(f!|KNmlDKTmLc(a(?W7w8w_m+Y77ch)b% zFVipEFUK$6uh6g9?~-4cUxnWzzX|`1{?h(t{=xnk{`LMn{vT;b8j7}twvL9SZKLth z_-KMOVVWpSjHX0WrD@OzG!l(WbEHveG}=*G5G{S({xT4+ycy|jMX5N(t;O`D}H(B9JC(-CxbI-0(Qj;H@Z-%j627ov;O#px1s9l8nK zf^J2(p*zr>>8^Blx*t89o<`50pQm4-=g|x47wM(+3VJ2|D!rE8PVc05(|@Bsqras0 z(EI2E^db5v{WX2!=<1`wM-7g89!)xW?dWeuKL%_LPzcZr&<@ZE&B? zpp8LXL6{(1(59d*L0f~AgAN9T1Z4%?4jKzyA1oHEAM6rL4fYGB2L}W*f=>j;2cHT~ z3O*B@8k`qg7<@6fG`J%8N^o27%izA?f#Bib@!-kenc%tL?;*$#&JbJ(Pso;#9U(hI z1VV&DuOX&A7WEd)JP1yRdjbYqjxG?cB$uQ|K*)aJqr7)E+wJ?n^tuSI3 zIZQ9iIV>`)IIJaXIvg7=9c~uxAD$eZ8J-=U8=fCt7G4ux7yfH_eRyN|?eM$d9pT;K zPs3k?_k_O+{|wHEae%W`7{(^X7RENl4u%9nnxVnaVdyao82cDz3=4)8aGBUKTp2zL zf5uTpAR~$q$4Fo#F;W@nj7&xr<0|7eqlwYNXk~OVo-m#wJO z3$z~E3`s!JkQ}54sX*$G7DR-|&>m!VWf4WTclScHPSCKATlWOSY%jaLgcx~%aK))HIa3ZHzFG%Z%5vX zY>s>w*%mn%ITAS*IUYF~ITJY-xe)m#@_ppT$j`?&A6GhVeLVDd?(yd1lTquUc17t% z8ATn4GLJeKbvVjB>PVD#luwj@6g?^;Dk>^ADn9B|R8mxV)UQ#EQFo&5MYTk=Mzu$E zMD;}tM$JaOiFz0HG3r}1BAPuK6^)DLi&l(QiB^x+iY7*rqxVGbjou$^5^Wak9_<U8nZvfFXnX2m6*1er!g;LdSYJ1jK$2w zEX2Htc^C5`=2PtI*mbcSv0Sm(SbVH(tX8Z}tX`~s?EYAjSkqYZSm#*Z*rTz5u_3XH z*ofGu*qGR~*!#~##zVN#T|}wkMoP8#|6X%#~q6ci(|wk z#3jX@iA#&ih|7$ti@P89Fs?Q3aom%*r*SXhevg}on~wVw_dT91epUS1`1SD{reNb{+NtRMkTLFUYCqb-j>Xp%$F>fESxNwtdOjntd^{qtes3sKAh~8?3YYS4oE(h z9F`0vMpKZ826 z<_zx{{xgDSgwKec5kDhwM(T{r8M!lxXH?Fpov}Oos@+FlmbyX@lb$#l_RIXG^ zDqpH(szRz#s!FO_Dlt_jRWH>b)iBjO)h^W`)j8EA)ju^bH8}NHDwKLWH74~$YEEi- zYE|mh)N83XQtMM2Q*WoXr*^0Qmij!kH?=QyFm*U}F%6NnDeafE?P)vH1k!}lcBSo3 zlS-3KQ%F-zGfF#w+ z*GMO%6Vpx7?b4mnDd}$MUg^|yzjRu9WO`Ei+4OViS?M|H#pxyKW$BmGE7N~XuTQ^~ zekc8L`jhl$=`Yj!(g)K=(#O)jWvtKO%D`suWNgjYk-?WCkg+>MC1ZbvNrqX*!Hh#0 zwi$;roHAT8+%r5gpp4@g(HXHBaTy62i5aIe&Sa!zq-UJVsLgnq@#);QbA)p)=i<(l zoO^I?=%GM{Jup7|(6tX=RD7S9(SJS{Fd`u&+jsVG;R!mk>)|srdtc#{dxZ_D11&6h2lEt)N!Es?FBt)Fd|?U3!9?V9b8?Un75?Vo)#J1F~D_UY`D?6mCk z>~q;!*%z{Nv-7iyvM**|%5Kgcy|C`W?hD2jj$Sx-;rfN=7v5g@mcy2_DhHjznX@@( zYtD`wz8t|E;T+K%g&gG^wH(bH?Hp3h;T*3VzZ_alK+dt8upB5SGAB7FB_}thDCc5M zY0j0Ls+^jf+MK4G?wpC7>72Qo#hiCJA9KFse9uMZqHD-r2m2yu7^9yo$WaysLS& zdDru9TC0{LHBVQ|DH-At5 z-u(Uf#`#wHj`@^)w|tNMfc#_mVfl>wsQlRc`22+Yg8a(-Yx#BgzvegQ-_F0Ae?Pw~ z|5^Tv{GR-Q{Gt5O{MY&K3sx0uE!a`OS0Gp*QXp0!Q6OC)SD;v+T%cBPpuoJ~V1ZSE zb%9;M;R443=K_}k_X5uX?}GS(O9kx(bA`A<)xv{?A%*7(uNU4aykGdB@L^$hVNYRS z;XvU~;Yi_F;hVzug`Wz)79om|MZ873i)4!Aixi90iZqJ|MZ_YLBD*3=k!z8A(UBs* zB3e;EQE<_*qNt)%MW>5WiqeYmi!K&jDk>|gEV^1$TXemsqo}uNuxPkwv}m$ux@fj& zzUW&qdoikbO)*C?XECN2S1eF0T}&?CQ@po$f3ZoiS@FT*L&dhmhl`zx1B*k7LyNg9<7bh=HUwn7*dkL~+ zRmtj-wI%CIHkWKI*-^q*B3L3^LMkyXF)y(!IaFd_;#lHb;!;8{2`q^!i7Po-l30>b zl2(#Yl38-8q_(8BN{@eyO~yyr%qGd0qMQ@`3W1^4apa@`dv6 z703!y#hQxs6&w}36`~cpDt1>WRH#;1R!}NjDqJhvD~?u#Rxm0eE21kBDv~PBRHRj; zR}@whSCmwgRm@dx$MD?<=WSE?>EG<T~>Q$OmT2kBrdRF>Z23ICjrc`EC)>q!E9IpISwYq9e)!M4{Rhz5$ssyVG@!suZhK zs?@8rs)$uORkW)7s;;V!)!1s`YN=}3YK3a0>OIwatM^x%RGU@XR(n)atNp6!)xp)F z)r{(h>J!yT)%n$zs%xw3s;^hysD4oWxVo$Qx9aEBebs~2Bh{~~C$4U}y639z)!?h4 zR~c6$uAaG?b~WSb`KuSMPF!8ALDZmX*3_)8;i|#b@YHOsk*Fco7}WsaxyH2SaE()q zOO1PtXN`Bwv6{%5q?*E-i#4S+6*ZMLS8Hl(eyypmxm9zw=6TKUHLq&=YX)mZYF^h& z*38t**DTh&t@(b9=NjKN)oc5%IbRF9cIsNuwZ>}?uXSE~cI`_od+n-PZ0*k4UA4Pw zrD|ns6>2qWwQF^1^=b`j4Qna2jM~iF_Sz@4zt{HGj@C}s&ebl~zN`IEhpO99$61G| z!`E%AYmrVtQ)ACxH)!n{N}rQ z_Ih;v+WHOkob{M`d_8}?P`zlqc)eu3Ouc-)V!d@eqyAF;lltEJ(fXPC_w}C|*c;Y0 za5nHah&Mpj@%o{8l4mH>`P#Rns+!}lv&Np0W$ZIHUxY%&1 zp}gTrLv_QohU*PC8yXvKH{5GzZg|+x*6_HYtKqkXXAQ#*qYbYcCL2kO#*GIW%^EEl zof;{Pu8kgzt&J}lUpG!R&NR+9zG-~l_^I*htqr#}-r~N6y~T5D%dM@qcHG)|OYN4y zE&p5Dw{G3)xxM|i@@?&=@Fu9~R8wwKK~r(lrKa+xD^1l+*P5<3-E4Z?)Ygu zrrxIhrlF>hrq@jqO<$Y2ngyGcn)fzaHhVWi&56zDo6DQ8G*>rYYrfumv$?VPPV@cd zr_C>#dz$;22b)KlUpG%S&os|H*#1D~f&ByD2d5uge$e$`{=v7F)h+82y0 z&cjC!-#q;MNbu2#M`e$$Kf3p*`O(8iZI3!0bw7IbXyDP%qmf6iA5A`*Ze7(X*=o^B zX$@#S-Wt;y*P76p)SBE{&|2AA)mq(J)7sYhvbDFhzjdf}wDooC+tzoj?^{2%q1&)+ zJZ)RrwzcuL@wW-J$+ju9DYvP$X|`#%>9py#9cjyNd(`%}eM`G~yG?ss`^EN}_V)J9 z_9yMn+F!Q!w)eLWwU4%sw@tpR;}0FHJGOR6cW8C&>Co@k+u_vV(?RbD>Kx1+yfsAIHaykoL+Ri{9wRHsg-Zl_(RQ|GbH=+30hbDf2q zS30XZuXWaTUhllw+1T09`MPty^Ihl1&d;6Sx>k2_cj3B3yJWgZT?SpIT{c~`uAr{d zT_s%=UA0}$yL!96b$##N(2eij+`YAXM>k)$ShqyCbhli$Vz+X)QMXg~vF@|o1>MEn zm%7WluXI;+w>@io_VU@-vx#TZ&*q*jK70F|>-m=FiqBP^tM}OUc=UMn`1JVq9PJ70 zIn#5#=X%f0p2ptN-n!oVy$^aH^|tqR_CD!-);rug+B@Dm**o1k*SpaB<`w6wU9U*5 z>|S}jN_chdRsO4@S0%5?UR{1w_v*&0hF7;<-FpKG6c-_gGC zK1N?e-?_g0zAJszeb@S~_ucGk=o{>t?3?Rb?0eVup-{(T8~g9|H}ya0f7m}buxfyNKy*NSKypB4Kz=}JKy^T4fG|KB&>hepI6UAq zKpAiwI5OZp;5$GY2p9++2pwPyL=2=2+#UFBpns5kaO86YG}>S`k{?O_@T{1zYJ|3;vJG0QXSeiba3eKkk=4x zC}1dfD0JxfP|VPYp_4SNkt zhsV6ee8&97=wlIMQDZS_ufLBY$5G>J#@CN;9OoX#jc*#?JuWpaGcGr-Fs?kV zHm*5N7$=RB$MwdY$0Ns!$6LmyC$JMr6BZNniR6jQiR_8oiTsJOiJFPJiC-t`CmJVi zPqa^TPCS`-Ht}+zXX4`|dUE|F$0XMzesa^~FO%CQ#V3^~H72ztiIaMh`jdu}`zLKD z6DBJsf1T`{d^$Nj`EK&#&-=r-Y_Nr}U=`r;Mf!OqowvPFYXcO*u>jPlZk~ zrXr`Jr%p`8Po+#{PGwK!P8CcQO;t}_o4P)AbE;*kb*g=;bL!R9z|_#x=+yMor>U>g zh-u_B=d|Fo$h6qB#I*FZ+_d7f%C!2l)--YY;Pjzsn`yi0!_!XFF4OMQN2a}}eWv}U z6Q?VtyQbgFY@X4aah!o>a%Sphnr2#NT4&m4p3U^n49$$pyq=kunVR`H^JV7yEOHh# zyLwh|R%TXlR%KRgmM}}2CC}>3TFg4ly3Kmbdd>RH(q;o@gJxrAPtTUjR?IfdKA)YR zeKY%h_S5XwIm8_M+=jVLbHB`OpW8VnFef}GI;SwFJf}9NIk$Ii|D5rh>74zX=Nxs; zZ;n0}F&8x#GZ!~^cJAEV`MC>oMRSkmM&~}ybI$Y6E6f|r+s!-7JI%YyyUlyd`_CVn zPn*x0ubpq3e>p!iKRQ1?KQ%u)|6%^~{I>or^+?qKo2-5{s&f+KW1i zdW!~&CW~f^7K>Jk){D-IUW>tt(BkpMn8moo(~BvKX^R<)nTv&s6^l0(8y0Ub-dk*1 he6ZNFIKDWsIJr2zxP0Z&(knf9_A&#XSN<%1`9CWYhm-&S diff --git a/xCreds.xcodeproj/xcuserdata/tperfitt.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/xCreds.xcodeproj/xcuserdata/tperfitt.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 74a680b..a88fb8b 100644 --- a/xCreds.xcodeproj/xcuserdata/tperfitt.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/xCreds.xcodeproj/xcuserdata/tperfitt.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -3,4 +3,70 @@ uuid = "94C20054-8AB3-42DB-93A7-A3026166D6FC" type = "1" version = "2.0"> + + + + + + + + + + + + + + + + + +