Lockscreen improvements.
[FIXED]     Switching between guide and unlock screen.
[ADDED]     Sign out button in action so you can sign in with a
            different master password.
[REMOVED]   Change password from MPConfig.  There are better facilities
            for this now.
[FIXED]     Image names in the lockscreen.
			
			
This commit is contained in:
		
							
								
								
									
										2
									
								
								External/Pearl
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								External/Pearl
									
									
									
									
										vendored
									
									
								
							 Submodule External/Pearl updated: bb0df3e889...bb9d8d10cb
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,17 +1,10 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Scheme
 | 
			
		||||
   LastUpgradeVersion = "0430"
 | 
			
		||||
   version = "1.3">
 | 
			
		||||
   <BuildAction
 | 
			
		||||
      parallelizeBuildables = "YES"
 | 
			
		||||
      buildImplicitDependencies = "YES">
 | 
			
		||||
   <BuildAction>
 | 
			
		||||
      <BuildActionEntries>
 | 
			
		||||
         <BuildActionEntry
 | 
			
		||||
            buildForTesting = "YES"
 | 
			
		||||
            buildForRunning = "YES"
 | 
			
		||||
            buildForProfiling = "YES"
 | 
			
		||||
            buildForArchiving = "YES"
 | 
			
		||||
            buildForAnalyzing = "YES">
 | 
			
		||||
            buildForRunning = "YES">
 | 
			
		||||
            <BuildableReference
 | 
			
		||||
               BuildableIdentifier = "primary"
 | 
			
		||||
               BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
@@ -22,65 +15,19 @@
 | 
			
		||||
         </BuildActionEntry>
 | 
			
		||||
      </BuildActionEntries>
 | 
			
		||||
   </BuildAction>
 | 
			
		||||
   <TestAction
 | 
			
		||||
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
 | 
			
		||||
      shouldUseLaunchSchemeArgsEnv = "YES"
 | 
			
		||||
      buildConfiguration = "Production">
 | 
			
		||||
      <Testables>
 | 
			
		||||
      </Testables>
 | 
			
		||||
      <MacroExpansion>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </MacroExpansion>
 | 
			
		||||
   </TestAction>
 | 
			
		||||
   <LaunchAction
 | 
			
		||||
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
 | 
			
		||||
      launchStyle = "0"
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
 | 
			
		||||
      useCustomWorkingDirectory = "NO"
 | 
			
		||||
      buildConfiguration = "Production"
 | 
			
		||||
      ignoresPersistentStateOnLaunch = "NO"
 | 
			
		||||
      debugDocumentVersioning = "YES"
 | 
			
		||||
      allowLocationSimulation = "YES">
 | 
			
		||||
      <BuildableProductRunnable>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
      <AdditionalOptions>
 | 
			
		||||
      </AdditionalOptions>
 | 
			
		||||
   </LaunchAction>
 | 
			
		||||
   <ProfileAction
 | 
			
		||||
      shouldUseLaunchSchemeArgsEnv = "YES"
 | 
			
		||||
      savedToolIdentifier = ""
 | 
			
		||||
      useCustomWorkingDirectory = "NO"
 | 
			
		||||
      buildConfiguration = "Production"
 | 
			
		||||
      debugDocumentVersioning = "YES">
 | 
			
		||||
      <BuildableProductRunnable>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
   </ProfileAction>
 | 
			
		||||
   <AnalyzeAction
 | 
			
		||||
      buildConfiguration = "Production">
 | 
			
		||||
   </AnalyzeAction>
 | 
			
		||||
   <ArchiveAction
 | 
			
		||||
      buildConfiguration = "Production"
 | 
			
		||||
      revealArchiveInOrganizer = "YES">
 | 
			
		||||
   </ArchiveAction>
 | 
			
		||||
      <BuildableProductRunnable>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
   </LaunchAction>
 | 
			
		||||
</Scheme>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,10 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Scheme
 | 
			
		||||
   LastUpgradeVersion = "0430"
 | 
			
		||||
   version = "1.3">
 | 
			
		||||
   <BuildAction
 | 
			
		||||
      parallelizeBuildables = "YES"
 | 
			
		||||
      buildImplicitDependencies = "YES">
 | 
			
		||||
   <BuildAction>
 | 
			
		||||
      <BuildActionEntries>
 | 
			
		||||
         <BuildActionEntry
 | 
			
		||||
            buildForTesting = "YES"
 | 
			
		||||
            buildForRunning = "YES"
 | 
			
		||||
            buildForProfiling = "YES"
 | 
			
		||||
            buildForArchiving = "YES"
 | 
			
		||||
            buildForAnalyzing = "YES">
 | 
			
		||||
            buildForRunning = "YES">
 | 
			
		||||
            <BuildableReference
 | 
			
		||||
               BuildableIdentifier = "primary"
 | 
			
		||||
               BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
@@ -22,75 +15,19 @@
 | 
			
		||||
         </BuildActionEntry>
 | 
			
		||||
      </BuildActionEntries>
 | 
			
		||||
   </BuildAction>
 | 
			
		||||
   <TestAction
 | 
			
		||||
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
 | 
			
		||||
      shouldUseLaunchSchemeArgsEnv = "YES"
 | 
			
		||||
      buildConfiguration = "Debug">
 | 
			
		||||
      <Testables>
 | 
			
		||||
      </Testables>
 | 
			
		||||
      <MacroExpansion>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </MacroExpansion>
 | 
			
		||||
   </TestAction>
 | 
			
		||||
   <LaunchAction
 | 
			
		||||
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
 | 
			
		||||
      launchStyle = "0"
 | 
			
		||||
      useCustomWorkingDirectory = "NO"
 | 
			
		||||
      buildConfiguration = "Debug"
 | 
			
		||||
      ignoresPersistentStateOnLaunch = "NO"
 | 
			
		||||
      debugDocumentVersioning = "YES"
 | 
			
		||||
      allowLocationSimulation = "YES">
 | 
			
		||||
      <BuildableProductRunnable>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
      <AdditionalOptions>
 | 
			
		||||
         <AdditionalOption
 | 
			
		||||
            key = "OBJC_PRINT_EXCEPTIONS"
 | 
			
		||||
            value = "YES"
 | 
			
		||||
            isEnabled = "YES">
 | 
			
		||||
         </AdditionalOption>
 | 
			
		||||
         <AdditionalOption
 | 
			
		||||
            key = "NSZombieEnabled"
 | 
			
		||||
            value = "YES"
 | 
			
		||||
            isEnabled = "YES">
 | 
			
		||||
         </AdditionalOption>
 | 
			
		||||
      </AdditionalOptions>
 | 
			
		||||
   </LaunchAction>
 | 
			
		||||
   <ProfileAction
 | 
			
		||||
      shouldUseLaunchSchemeArgsEnv = "YES"
 | 
			
		||||
      savedToolIdentifier = ""
 | 
			
		||||
      useCustomWorkingDirectory = "NO"
 | 
			
		||||
      buildConfiguration = "Debug"
 | 
			
		||||
      debugDocumentVersioning = "YES">
 | 
			
		||||
      <BuildableProductRunnable>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
   </ProfileAction>
 | 
			
		||||
   <AnalyzeAction
 | 
			
		||||
      buildConfiguration = "Debug">
 | 
			
		||||
   </AnalyzeAction>
 | 
			
		||||
   <ArchiveAction
 | 
			
		||||
      buildConfiguration = "Release"
 | 
			
		||||
      revealArchiveInOrganizer = "YES">
 | 
			
		||||
   </ArchiveAction>
 | 
			
		||||
      <BuildableProductRunnable>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
 | 
			
		||||
            BuildableName = "MasterPassword.app"
 | 
			
		||||
            BlueprintName = "MasterPassword"
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
   </LaunchAction>
 | 
			
		||||
</Scheme>
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,8 @@
 | 
			
		||||
- (NSURL *)applicationDocumentsDirectory;
 | 
			
		||||
 | 
			
		||||
- (void)showGuide;
 | 
			
		||||
- (void)loadKeyPhrase;
 | 
			
		||||
- (void)loadKeyPhrase:(BOOL)animated;
 | 
			
		||||
- (void)signOut;
 | 
			
		||||
- (void)forgetKeyPhrase;
 | 
			
		||||
- (NSData *)keyPhraseWithLength:(NSUInteger)keyLength;
 | 
			
		||||
- (BOOL)tryMasterPassword:(NSString *)tryPassword;
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
+ (NSDictionary *)keyPhraseHashQuery;
 | 
			
		||||
 | 
			
		||||
- (void)loadStoredKeyPhrase;
 | 
			
		||||
- (void)askKeyPhrase;
 | 
			
		||||
- (void)askKeyPhrase:(BOOL)animated;
 | 
			
		||||
 | 
			
		||||
@end
 | 
			
		||||
 | 
			
		||||
@@ -36,7 +36,9 @@
 | 
			
		||||
@synthesize keyPhraseHashHex = _keyPhraseHashHex;
 | 
			
		||||
 | 
			
		||||
+ (void)initialize {
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    [MPConfig get];
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
    [PearlLogger get].autoprintLevel = PearlLogLevelTrace;
 | 
			
		||||
    [NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
 | 
			
		||||
@@ -146,23 +148,25 @@
 | 
			
		||||
                                                      if ([NSStringFromSelector(@selector(storeKeyPhrase))
 | 
			
		||||
                                                           isEqualToString:[note.object description]]) {
 | 
			
		||||
                                                          self.keyPhrase = self.keyPhrase;
 | 
			
		||||
                                                          [self loadKeyPhrase];
 | 
			
		||||
                                                          [self loadKeyPhrase:YES];
 | 
			
		||||
                                                      }
 | 
			
		||||
                                                      if ([NSStringFromSelector(@selector(forgetKeyPhrase))
 | 
			
		||||
                                                           isEqualToString:[note.object description]])
 | 
			
		||||
                                                          [self loadKeyPhrase];
 | 
			
		||||
                                                          [self loadKeyPhrase:YES];
 | 
			
		||||
                                                  }];
 | 
			
		||||
    
 | 
			
		||||
    [self loadKeyPhrase];
 | 
			
		||||
 | 
			
		||||
    [[UIApplication sharedApplication] setStatusBarHidden:NO
 | 
			
		||||
                                            withAnimation:UIStatusBarAnimationSlide];
 | 
			
		||||
    
 | 
			
		||||
    return [super application:application didFinishLaunchingWithOptions:launchOptions];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
 | 
			
		||||
    
 | 
			
		||||
    if ([[MPConfig get].showQuickStart boolValue])
 | 
			
		||||
        [self showGuide];
 | 
			
		||||
    else
 | 
			
		||||
        [self loadKeyPhrase];
 | 
			
		||||
        [self loadKeyPhrase:NO];
 | 
			
		||||
    
 | 
			
		||||
#ifndef PRODUCTION
 | 
			
		||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointActivated];
 | 
			
		||||
@@ -178,24 +182,16 @@
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (void)loadKeyPhrase {
 | 
			
		||||
- (void)loadKeyPhrase:(BOOL)animated {
 | 
			
		||||
    
 | 
			
		||||
    if (self.keyPhrase)
 | 
			
		||||
        return;
 | 
			
		||||
    
 | 
			
		||||
    if ([[MPConfig get].forgetKeyPhrase boolValue]) {
 | 
			
		||||
        [self forgetKeyPhrase];
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    [self loadStoredKeyPhrase];
 | 
			
		||||
    if (self.keyPhrase)
 | 
			
		||||
        [[UIApplication sharedApplication] setStatusBarHidden:NO
 | 
			
		||||
                                                withAnimation:UIStatusBarAnimationSlide];
 | 
			
		||||
    else {
 | 
			
		||||
    if (!self.keyPhrase) {
 | 
			
		||||
        // Key phrase is not known.  Ask user to set/specify it.
 | 
			
		||||
        dbg(@"Key phrase not known.  Will ask user.");
 | 
			
		||||
        [self askKeyPhrase];
 | 
			
		||||
        [self askKeyPhrase:animated];
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -205,10 +201,11 @@
 | 
			
		||||
    dbg(@"Forgetting key phrase.");
 | 
			
		||||
    [PearlAlert showAlertWithTitle:@"Changing Master Password"
 | 
			
		||||
                                    message:
 | 
			
		||||
     @"You've requested to change your master password.\n\n"
 | 
			
		||||
     @"If you continue, your current sites and passwords will become unavailable.\n\n"
 | 
			
		||||
     @"You can always change back to the old master password later.\n"
 | 
			
		||||
     @"Your old sites and passwords will then become available again."
 | 
			
		||||
     @"This will allow you to log in with a different master password.\n\n"
 | 
			
		||||
     @"Note that you will only see the sites and passwords for the master password you log in with.\n"
 | 
			
		||||
     @"If you log in with a different master password, your current sites will be unavailable.\n\n"
 | 
			
		||||
     @"You can always change back to your current master password later.\n"
 | 
			
		||||
     @"Your current sites and passwords will then become available again."
 | 
			
		||||
                                  viewStyle:UIAlertViewStyleDefault
 | 
			
		||||
                          tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
 | 
			
		||||
                              if (buttonIndex != [alert cancelButtonIndex]) {
 | 
			
		||||
@@ -223,7 +220,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
                              }
 | 
			
		||||
                              
 | 
			
		||||
                              [self loadKeyPhrase];
 | 
			
		||||
                              [self loadKeyPhrase:YES];
 | 
			
		||||
                              
 | 
			
		||||
#ifndef PRODUCTION
 | 
			
		||||
                              [TestFlight passCheckpoint:MPTestFlightCheckpointMPChanged];
 | 
			
		||||
@@ -231,7 +228,12 @@
 | 
			
		||||
                          }
 | 
			
		||||
                                cancelTitle:[PearlStrings get].commonButtonAbort
 | 
			
		||||
                                otherTitles:[PearlStrings get].commonButtonContinue, nil];
 | 
			
		||||
    [MPConfig get].forgetKeyPhrase = [NSNumber numberWithBool:NO];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (void)signOut {
 | 
			
		||||
    
 | 
			
		||||
    self.keyPhrase = nil;
 | 
			
		||||
    [self loadKeyPhrase:YES];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (void)loadStoredKeyPhrase {
 | 
			
		||||
@@ -251,9 +253,13 @@
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (void)askKeyPhrase {
 | 
			
		||||
    
 | 
			
		||||
    [self.navigationController presentViewController:[self.navigationController.storyboard instantiateViewControllerWithIdentifier:@"MPUnlockViewController"] animated:NO completion:nil];
 | 
			
		||||
- (void)askKeyPhrase:(BOOL)animated {
 | 
			
		||||
 | 
			
		||||
    dispatch_async(dispatch_get_main_queue(), ^{
 | 
			
		||||
        [self.navigationController presentViewController:
 | 
			
		||||
                [self.navigationController.storyboard instantiateViewControllerWithIdentifier:@"MPUnlockViewController"]
 | 
			
		||||
                                                animated:animated completion:nil];
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (void)applicationWillResignActive:(UIApplication *)application {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,6 @@
 | 
			
		||||
@property (nonatomic, retain) NSNumber *dataStoreError;
 | 
			
		||||
@property (nonatomic, retain) NSNumber *storeKeyPhrase;
 | 
			
		||||
@property (nonatomic, retain) NSNumber *rememberKeyPhrase;
 | 
			
		||||
@property (nonatomic, retain) NSNumber *forgetKeyPhrase;
 | 
			
		||||
@property (nonatomic, retain) NSNumber *helpHidden;
 | 
			
		||||
@property (nonatomic, retain) NSNumber *showQuickStart;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,9 +9,7 @@
 | 
			
		||||
#import "MPConfig.h"
 | 
			
		||||
 | 
			
		||||
@implementation MPConfig
 | 
			
		||||
 | 
			
		||||
@dynamic dataStoreError, storeKeyPhrase, rememberKeyPhrase, forgetKeyPhrase, helpHidden, showQuickStart;
 | 
			
		||||
 | 
			
		||||
@dynamic dataStoreError, storeKeyPhrase, rememberKeyPhrase, helpHidden, showQuickStart;
 | 
			
		||||
 | 
			
		||||
- (id)init {
 | 
			
		||||
    
 | 
			
		||||
@@ -22,7 +20,6 @@
 | 
			
		||||
                                     [NSNumber numberWithBool:NO],                                  NSStringFromSelector(@selector(dataStoreError)),
 | 
			
		||||
                                     [NSNumber numberWithBool:NO],                                  NSStringFromSelector(@selector(storeKeyPhrase)),
 | 
			
		||||
                                     [NSNumber numberWithBool:YES],                                 NSStringFromSelector(@selector(rememberKeyPhrase)),
 | 
			
		||||
                                     [NSNumber numberWithBool:NO],                                  NSStringFromSelector(@selector(forgetKeyPhrase)),
 | 
			
		||||
                                     [NSNumber numberWithBool:NO],                                  NSStringFromSelector(@selector(helpHidden)),
 | 
			
		||||
                                     [NSNumber numberWithBool:YES],                                 NSStringFromSelector(@selector(showQuickStart)),
 | 
			
		||||
                                     nil]];
 | 
			
		||||
 
 | 
			
		||||
@@ -29,9 +29,16 @@
 | 
			
		||||
    [super viewWillDisappear:animated];
 | 
			
		||||
    
 | 
			
		||||
    [MPConfig get].showQuickStart = [NSNumber numberWithBool:NO];
 | 
			
		||||
    [[MPAppDelegate get] loadKeyPhrase];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (void)viewDidDisappear:(BOOL)animated {
 | 
			
		||||
 | 
			
		||||
    [super viewDidDisappear:animated];
 | 
			
		||||
 | 
			
		||||
    [[MPAppDelegate get] loadKeyPhrase:animated];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- (void)viewDidUnload {
 | 
			
		||||
 | 
			
		||||
    [self setScrollView:nil];
 | 
			
		||||
 
 | 
			
		||||
@@ -359,7 +359,13 @@
 | 
			
		||||
                                  case 4:
 | 
			
		||||
                                      [TestFlight openFeedbackView];
 | 
			
		||||
                                      break;
 | 
			
		||||
                                  case 5: {
 | 
			
		||||
#else
 | 
			
		||||
                                  case 4: {
 | 
			
		||||
#endif
 | 
			
		||||
                                      [[MPAppDelegate get] signOut];
 | 
			
		||||
                                      break;
 | 
			
		||||
                                  }
 | 
			
		||||
                              }
 | 
			
		||||
                              
 | 
			
		||||
#ifndef PRODUCTION
 | 
			
		||||
@@ -371,6 +377,7 @@
 | 
			
		||||
#ifndef PRODUCTION
 | 
			
		||||
     @"Feedback",
 | 
			
		||||
#endif
 | 
			
		||||
     @"Sign Out",
 | 
			
		||||
     nil]; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,16 +35,16 @@ typedef enum {
 | 
			
		||||
        self.lock.alpha = 0.0f;
 | 
			
		||||
        switch (state) {
 | 
			
		||||
            case MPLockscreenIdle:
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lockscreen_idle"]];
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lock_idle"]];
 | 
			
		||||
                break;
 | 
			
		||||
            case MPLockscreenError:
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lockscreen_red"]];
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lock_red"]];
 | 
			
		||||
                break;
 | 
			
		||||
            case MPLockscreenSuccess:
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lockscreen_green"]];
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lock_green"]];
 | 
			
		||||
                break;
 | 
			
		||||
            case MPLockscreenProgress:
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lockscreen_blue"]];
 | 
			
		||||
                [self.lock setImage:[UIImage imageNamed:@"lock_blue"]];
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 
 | 
			
		||||
@@ -378,7 +378,7 @@ The passwords aren't saved anywhere.  This is a major advantage: if you loose yo
 | 
			
		||||
                                        <size key="shadowOffset" width="0.0" height="1"/>
 | 
			
		||||
                                    </label>
 | 
			
		||||
                                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="S3cre7^Pa$swcrD" textAlignment="center" minimumFontSize="17" clearButtonMode="whileEditing" id="fiX-10-fif">
 | 
			
		||||
                                        <rect key="frame" x="20" y="33" width="280" height="60"/>
 | 
			
		||||
                                        <rect key="frame" x="20" y="46" width="280" height="60"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                        <color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
 | 
			
		||||
                                        <fontDescription key="fontDescription" name="Copperplate-Bold" family="Copperplate" pointSize="26"/>
 | 
			
		||||
@@ -389,7 +389,7 @@ The passwords aren't saved anywhere.  This is a major advantage: if you loose yo
 | 
			
		||||
                                    </textField>
 | 
			
		||||
                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.50000000000000011" contentMode="left" text="1" textAlignment="right" lineBreakMode="tailTruncation" minimumFontSize="10" id="Iuf-np-e9C">
 | 
			
		||||
                                        <rect key="frame" x="240" y="27" width="40" height="20"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                        <fontDescription key="fontDescription" name="Copperplate-Bold" family="Copperplate" pointSize="17"/>
 | 
			
		||||
                                        <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                                        <nil key="highlightedColor"/>
 | 
			
		||||
@@ -445,22 +445,22 @@ The passwords aren't saved anywhere.  This is a major advantage: if you loose yo
 | 
			
		||||
                                        </connections>
 | 
			
		||||
                                    </button>
 | 
			
		||||
                                    <view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="v2m-Gf-pEV">
 | 
			
		||||
                                        <rect key="frame" x="55" y="8" width="210" height="57"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                        <rect key="frame" x="55" y="5" width="210" height="60"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                        <subviews>
 | 
			
		||||
                                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="fdm-NG-GFC">
 | 
			
		||||
                                                <rect key="frame" x="0.0" y="-1" width="210" height="60"/>
 | 
			
		||||
                                                <rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
 | 
			
		||||
                                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                                            </imageView>
 | 
			
		||||
                                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap       to set a password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="ieN-QQ-PyR">
 | 
			
		||||
                                                <rect key="frame" x="20" y="0.0" width="170" height="37"/>
 | 
			
		||||
                                                <rect key="frame" x="20" y="0.0" width="170" height="40"/>
 | 
			
		||||
                                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
 | 
			
		||||
                                                <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
 | 
			
		||||
                                                <nil key="highlightedColor"/>
 | 
			
		||||
                                            </label>
 | 
			
		||||
                                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="KEn-n3-qhX">
 | 
			
		||||
                                                <rect key="frame" x="48.5" y="6.5" width="24" height="24"/>
 | 
			
		||||
                                                <rect key="frame" x="48" y="6" width="24" height="24"/>
 | 
			
		||||
                                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                            </imageView>
 | 
			
		||||
                                        </subviews>
 | 
			
		||||
@@ -534,7 +534,7 @@ L4m3P4sSw0rD</string>
 | 
			
		||||
                                </subviews>
 | 
			
		||||
                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
 | 
			
		||||
                            </view>
 | 
			
		||||
                            <searchBar contentMode="redraw" barStyle="blackOpaque" placeholder="Site" showsSearchResultsButton="YES" id="qeo-n2-WVh">
 | 
			
		||||
                            <searchBar contentMode="redraw" barStyle="blackOpaque" placeholder="Enter site name" showsSearchResultsButton="YES" id="qeo-n2-WVh">
 | 
			
		||||
                                <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                <gestureRecognizers/>
 | 
			
		||||
@@ -544,24 +544,21 @@ L4m3P4sSw0rD</string>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </searchBar>
 | 
			
		||||
                            <view userInteractionEnabled="NO" contentMode="scaleToFill" id="zOR-Du-qRL">
 | 
			
		||||
                                <rect key="frame" x="55" y="-27" width="210" height="57"/>
 | 
			
		||||
                                <rect key="frame" x="10" y="-25" width="300" height="60"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                <subviews>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="ORD-Xv-bOQ">
 | 
			
		||||
                                        <rect key="frame" x="0.0" y="-1" width="210" height="60"/>
 | 
			
		||||
                                        <rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                                        <rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Enter the site's name." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="21b-bH-lR9">
 | 
			
		||||
                                        <rect key="frame" x="20" y="0.0" width="170" height="37"/>
 | 
			
		||||
                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Begin by entering the name of your site." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="21b-bH-lR9">
 | 
			
		||||
                                        <rect key="frame" x="-20" y="9" width="340" height="21"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
 | 
			
		||||
                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
 | 
			
		||||
                                        <nil key="highlightedColor"/>
 | 
			
		||||
                                    </label>
 | 
			
		||||
                                    <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="4Xf-mC-295">
 | 
			
		||||
                                        <rect key="frame" x="49" y="6" width="24" height="24"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                </subviews>
 | 
			
		||||
                                <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
 | 
			
		||||
                            </view>
 | 
			
		||||
@@ -604,63 +601,56 @@ L4m3P4sSw0rD</string>
 | 
			
		||||
            <objects>
 | 
			
		||||
                <placeholder placeholderIdentifier="IBFirstResponder" id="7yf-G7-kVy" userLabel="First Responder" sceneMemberID="firstResponder"/>
 | 
			
		||||
                <viewController id="qz3-eG-aEi" customClass="MPGuideViewController" sceneMemberID="viewController">
 | 
			
		||||
                    <view key="view" contentMode="scaleToFill" id="cwa-ct-2DY">
 | 
			
		||||
                    <scrollView key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" directionalLockEnabled="YES" pagingEnabled="YES" showsVerticalScrollIndicator="NO" id="Nr4-hi-8b2">
 | 
			
		||||
                        <rect key="frame" x="0.0" y="20" width="320" height="460"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                        <subviews>
 | 
			
		||||
                            <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" pagingEnabled="YES" showsVerticalScrollIndicator="NO" id="Nr4-hi-8b2">
 | 
			
		||||
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_0.png" id="eJP-cS-VRU">
 | 
			
		||||
                                <rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
			
		||||
                                <subviews>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_0.png" id="eJP-cS-VRU">
 | 
			
		||||
                                        <rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_1.png" id="1J9-z9-h96">
 | 
			
		||||
                                        <rect key="frame" x="320" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_2.png" id="8kf-Wm-F3L">
 | 
			
		||||
                                        <rect key="frame" x="640" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_3.png" id="H5W-P4-o7O">
 | 
			
		||||
                                        <rect key="frame" x="960" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_4.png" id="IXz-T9-Umi">
 | 
			
		||||
                                        <rect key="frame" x="1280" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_5.png" id="Hd0-Or-naq">
 | 
			
		||||
                                        <rect key="frame" x="1280" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_6.png" id="1jq-Ic-GVZ">
 | 
			
		||||
                                        <rect key="frame" x="1600" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                    </imageView>
 | 
			
		||||
                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" reversesTitleShadowWhenHighlighted="YES" lineBreakMode="middleTruncation" id="q93-J1-auj">
 | 
			
		||||
                                        <rect key="frame" x="1610" y="394" width="300" height="46"/>
 | 
			
		||||
                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                        <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
 | 
			
		||||
                                        <size key="titleShadowOffset" width="0.0" height="1"/>
 | 
			
		||||
                                        <state key="normal" title="Get started" backgroundImage="ui_button_green_large.png">
 | 
			
		||||
                                            <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                                            <color key="titleShadowColor" red="0.194560533886145" green="0.30086678832116787" blue="0.1263640535337863" alpha="1" colorSpace="deviceRGB"/>
 | 
			
		||||
                                        </state>
 | 
			
		||||
                                        <state key="highlighted">
 | 
			
		||||
                                            <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                                        </state>
 | 
			
		||||
                                        <connections>
 | 
			
		||||
                                            <action selector="close" destination="qz3-eG-aEi" eventType="touchUpInside" id="uYR-EJ-U6H"/>
 | 
			
		||||
                                        </connections>
 | 
			
		||||
                                    </button>
 | 
			
		||||
                                </subviews>
 | 
			
		||||
                            </scrollView>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
 | 
			
		||||
                            </imageView>
 | 
			
		||||
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_1.png" id="1J9-z9-h96">
 | 
			
		||||
                                <rect key="frame" x="320" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
 | 
			
		||||
                            </imageView>
 | 
			
		||||
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_2.png" id="8kf-Wm-F3L">
 | 
			
		||||
                                <rect key="frame" x="640" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
 | 
			
		||||
                            </imageView>
 | 
			
		||||
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_3.png" id="H5W-P4-o7O">
 | 
			
		||||
                                <rect key="frame" x="960" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
 | 
			
		||||
                            </imageView>
 | 
			
		||||
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_4.png" id="IXz-T9-Umi">
 | 
			
		||||
                                <rect key="frame" x="1280" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
 | 
			
		||||
                            </imageView>
 | 
			
		||||
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_5.png" id="Hd0-Or-naq">
 | 
			
		||||
                                <rect key="frame" x="1280" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
 | 
			
		||||
                            </imageView>
 | 
			
		||||
                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_6.png" id="1jq-Ic-GVZ">
 | 
			
		||||
                                <rect key="frame" x="1600" y="0.0" width="320" height="460"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
 | 
			
		||||
                            </imageView>
 | 
			
		||||
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" reversesTitleShadowWhenHighlighted="YES" lineBreakMode="middleTruncation" id="q93-J1-auj">
 | 
			
		||||
                                <rect key="frame" x="1610" y="394" width="300" height="46"/>
 | 
			
		||||
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
 | 
			
		||||
                                <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
 | 
			
		||||
                                <size key="titleShadowOffset" width="0.0" height="1"/>
 | 
			
		||||
                                <state key="normal" title="Get started" backgroundImage="ui_button_green_large.png">
 | 
			
		||||
                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                                    <color key="titleShadowColor" red="0.194560533886145" green="0.30086678832116787" blue="0.1263640535337863" alpha="1" colorSpace="deviceRGB"/>
 | 
			
		||||
                                </state>
 | 
			
		||||
                                <state key="highlighted">
 | 
			
		||||
                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                                </state>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="close" destination="qz3-eG-aEi" eventType="touchUpInside" id="uYR-EJ-U6H"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </subviews>
 | 
			
		||||
                        <color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
 | 
			
		||||
                    </view>
 | 
			
		||||
                    </scrollView>
 | 
			
		||||
                    <connections>
 | 
			
		||||
                        <outlet property="scrollView" destination="Nr4-hi-8b2" id="8QD-sv-vu6"/>
 | 
			
		||||
                    </connections>
 | 
			
		||||
 
 | 
			
		||||
@@ -78,24 +78,6 @@
 | 
			
		||||
			<key>Type</key>
 | 
			
		||||
			<string>PSToggleSwitchSpecifier</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>FooterText</key>
 | 
			
		||||
			<string>Turn this on if you want to change the master password.  Start the application and it will ask you for a new master password.  All passwords will change to those for the new master password.</string>
 | 
			
		||||
			<key>Title</key>
 | 
			
		||||
			<string></string>
 | 
			
		||||
			<key>Type</key>
 | 
			
		||||
			<string>PSGroupSpecifier</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>DefaultValue</key>
 | 
			
		||||
			<false/>
 | 
			
		||||
			<key>Key</key>
 | 
			
		||||
			<string>forgetKeyPhrase</string>
 | 
			
		||||
			<key>Title</key>
 | 
			
		||||
			<string>Change my password</string>
 | 
			
		||||
			<key>Type</key>
 | 
			
		||||
			<string>PSToggleSwitchSpecifier</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
	</array>
 | 
			
		||||
	<key>StringsTable</key>
 | 
			
		||||
	<string>Root</string>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user