A working KIM-based KerberosAgent to handle all of KIM's built-in GUI prompting.
authorJustin Anderson <jander@mit.edu>
Wed, 1 Oct 2008 14:12:31 +0000 (14:12 +0000)
committerJustin Anderson <jander@mit.edu>
Wed, 1 Oct 2008 14:12:31 +0000 (14:12 +0000)
A few outstanding issues remain, like the ability to add duplicate entries to the list of favorite identities.

ticket: 6055

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20793 dc483132-0cff-0310-8789-dd5450dbe970

23 files changed:
src/kim/agent/mac/AuthenticationController.h [new file with mode: 0644]
src/kim/agent/mac/AuthenticationController.m [new file with mode: 0644]
src/kim/agent/mac/BadgedImageView.h
src/kim/agent/mac/BadgedImageView.m
src/kim/agent/mac/IPCClient.h [new file with mode: 0644]
src/kim/agent/mac/IPCClient.m [new file with mode: 0644]
src/kim/agent/mac/Identities.m
src/kim/agent/mac/KIMUtilities.h
src/kim/agent/mac/KIMUtilities.m
src/kim/agent/mac/KerberosAgent-Info.plist
src/kim/agent/mac/KerberosAgentController.h
src/kim/agent/mac/KerberosAgentController.m
src/kim/agent/mac/KerberosAgentListener.h [new file with mode: 0644]
src/kim/agent/mac/KerberosAgentListener.m [new file with mode: 0644]
src/kim/agent/mac/SelectIdentityController.h
src/kim/agent/mac/SelectIdentityController.m
src/kim/agent/mac/ServerDemux.m
src/kim/agent/mac/main.m
src/kim/agent/mac/resources/English.lproj/Authentication.xib
src/kim/agent/mac/resources/English.lproj/AuthenticationController.strings [new file with mode: 0644]
src/kim/agent/mac/resources/English.lproj/MainMenu.xib
src/kim/agent/mac/resources/English.lproj/SelectIdentity.strings [new file with mode: 0644]
src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib

diff --git a/src/kim/agent/mac/AuthenticationController.h b/src/kim/agent/mac/AuthenticationController.h
new file mode 100644 (file)
index 0000000..5fcb612
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2008 Massachusetts Institute of Technology.
+ * All Rights Reserved.
+ *
+ * Export of this software from the United States of America may
+ * require a specific license from the United States Government.
+ * It is the responsibility of any person or organization contemplating
+ * export to obtain such a license before exporting.
+ * 
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of M.I.T. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission.  Furthermore if you modify this software you must label
+ * your software as modified software and not distribute it in such a
+ * fashion that it might be confused with the original M.I.T. software.
+ * M.I.T. makes no representations about the suitability of
+ * this software for any purpose.  It is provided "as is" without express
+ * or implied warranty.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+@class IPCClient;
+@class BadgedImageView;
+
+@interface AuthenticationController : NSWindowController {
+    IPCClient *associatedClient;
+    
+    IBOutlet NSView *containerView;
+    IBOutlet NSView *identityView;
+    IBOutlet NSView *passwordView;
+    IBOutlet NSView *samView;
+    IBOutlet NSView *changePasswordView;
+    IBOutlet NSView *expiredPasswordView;
+    IBOutlet NSView *errorView;
+
+    IBOutlet BadgedImageView *enterBadge;
+    IBOutlet BadgedImageView *passwordBadge;
+    IBOutlet BadgedImageView *samBadge;
+    IBOutlet BadgedImageView *changePasswordBadge;
+    IBOutlet BadgedImageView *errorBadge;
+    
+    // Controls that need to be made key
+    IBOutlet NSTextField *usernameField;
+    IBOutlet NSTextField *passwordField;
+    IBOutlet NSTextField *samPromptField;
+    IBOutlet NSTextField *oldPasswordField;
+    
+    // Other controls of interest
+    IBOutlet NSButton *rememberPasswordInKeychainCheckBox;
+    
+    IBOutlet NSObjectController *glueController;
+}
+
+@property (readwrite, retain) IPCClient *associatedClient;
+
+- (void) setContent: (NSMutableDictionary *) newContent;
+
+- (void) showEnterIdentity;
+- (void) showAuthPrompt;
+- (void) showEnterPassword;
+- (void) showSAM;
+- (void) showChangePassword;
+- (void) showError;
+
+- (IBAction) cancel: (id) sender;
+- (IBAction) enterIdentity: (id) sender;
+- (IBAction) answerAuthPrompt: (id) sender;
+- (IBAction) changePassword: (id) sender;
+- (IBAction) showedError: (id) sender;
+
+@end
diff --git a/src/kim/agent/mac/AuthenticationController.m b/src/kim/agent/mac/AuthenticationController.m
new file mode 100644 (file)
index 0000000..6a9b668
--- /dev/null
@@ -0,0 +1,383 @@
+/*
+ * Copyright 2008 Massachusetts Institute of Technology.
+ * All Rights Reserved.
+ *
+ * Export of this software from the United States of America may
+ * require a specific license from the United States Government.
+ * It is the responsibility of any person or organization contemplating
+ * export to obtain such a license before exporting.
+ * 
+ * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
+ * distribute this software and its documentation for any purpose and
+ * without fee is hereby granted, provided that the above copyright
+ * notice appear in all copies and that both that copyright notice and
+ * this permission notice appear in supporting documentation, and that
+ * the name of M.I.T. not be used in advertising or publicity pertaining
+ * to distribution of the software without specific, written prior
+ * permission.  Furthermore if you modify this software you must label
+ * your software as modified software and not distribute it in such a
+ * fashion that it might be confused with the original M.I.T. software.
+ * M.I.T. makes no representations about the suitability of
+ * this software for any purpose.  It is provided "as is" without express
+ * or implied warranty.
+ */
+
+#import "AuthenticationController.h"
+#import "IPCClient.h"
+#import "BadgedImageView.h"
+
+// to get kim_prompt_type enum
+#import <Kerberos/kim_ui_plugin.h>
+
+/*
+ * glueController KVC mapping is as follows:
+ * name = client app name
+ * path = client app bundle path
+ * title = suggested label for prompt field
+ * message = desired large text message
+ * description = longer, detailed, small text message
+ * username = 'user' part of 'user@REALM.ORG'
+ * realm = 'REALM.ORG' part of 'user@REALM.ORG'
+ * realm_history = past realms the user has entered
+ * prompt_response = auth prompt response
+ * allow_save_password = whether or not to show the 'save password in keychain' checkbox
+ * should_save_password = whether or not to save the password in the keychain
+ * old_password = for change password dialog
+ * new_password = "
+ * verify_password = "
+ */
+
+#define client_name_keypath          @"content.name"
+#define client_path_keypath          @"content.path"
+
+#define identity_string_keypath      @"content.identity_string"
+#define title_keypath                @"content.title"
+#define message_keypath              @"content.message"
+#define description_keypath          @"content.description"
+
+#define username_keypath             @"content.username"
+#define realm_keypath                @"content.realm"
+#define realm_history_keypath        @"content.realm_history"
+
+#define prompt_response_keypath      @"content.prompt_response"
+#define allow_save_password_keypath  @"content.allow_save"
+#define should_save_password_keypath @"content.save_response"
+
+#define password_expired_keypath     @"content.expired"
+#define old_password_keypath         @"content.old_password"
+#define new_password_keypath         @"content.new_password"
+#define verify_password_keypath      @"content.verify_password"
+
+#define enable_identity_ok_keypath   @"content.isPrincipalValid"
+#define enable_prompt_ok_keypath     @"content.isPromptValid"
+#define change_password_ok_keypath   @"content.isChangePasswordValid"
+
+#define valid_lifetime_keypath       @"content.valid_lifetime"
+#define renewal_lifetime_keypath     @"content.renewal_lifetime"
+#define renewable_keypath            @"content.renewable"
+#define addressless_keypath          @"content.addressless"
+#define forwardable_keypath          @"content.forwardable"
+
+#define max_valid_lifetime_keypath   @"content.max_valid_lifetime"
+#define min_valid_lifetime_keypath   @"content.min_valid_lifetime"
+#define max_renewal_lifetime_keypath @"content.max_renewal_lifetime"
+#define min_renewal_lifetime_keypath @"content.min_renewal_lifetime"
+
+
+#define ACKVOContext                 @"authenticationController"
+
+// localization keys and tables
+
+#define ACLocalizationTable          @"AuthenticationController"
+
+#define ACAppPrincReqKey             @"AuthControllerApplicationPrincipalRequest"
+#define ACPrincReqKey                @"AuthControllerPrincipalRequest"
+#define ACAppPasswordReqKey          @"AuthControllerApplicationPasswordRequest"
+#define ACPasswordReqKey             @"AuthControllerPasswordRequest"
+#define ACPasswordChangeExpired      @"ChangePasswordPasswordExpired"
+#define ACPasswordChangeApp          @"ChangePasswordApplicationRequest"
+#define ACPasswordChangePrinc        @"ChangePasswordPrincipalRequest"
+
+@implementation AuthenticationController
+
+@synthesize associatedClient;
+
+- (id) init
+{
+    return [self initWithWindowNibName: @"Authentication"];
+}
+
+- (void) awakeFromNib
+{
+    [glueController addObserver:self 
+                     forKeyPath:username_keypath 
+                        options:NSKeyValueObservingOptionNew 
+                        context:ACKVOContext];
+    [glueController addObserver:self
+                     forKeyPath:realm_keypath
+                        options:NSKeyValueObservingOptionNew
+                        context:ACKVOContext];
+    [glueController addObserver:self
+                     forKeyPath:prompt_response_keypath
+                        options:NSKeyValueObservingOptionNew
+                        context:ACKVOContext];
+    [glueController addObserver:self
+                     forKeyPath:old_password_keypath
+                        options:NSKeyValueObservingOptionNew
+                        context:ACKVOContext];
+    [glueController addObserver:self
+                     forKeyPath:new_password_keypath
+                        options:NSKeyValueObservingOptionNew
+                        context:ACKVOContext];
+    [glueController addObserver:self
+                     forKeyPath:verify_password_keypath
+                        options:NSKeyValueObservingOptionNew
+                        context:ACKVOContext];
+    
+    [[self window] center];
+    // We need to float over the loginwindow and SecurityAgent so use its hardcoded level.
+    [[self window] setLevel:2003];
+}
+
+- (void) dealloc
+{
+    [glueController removeObserver:self forKeyPath:username_keypath];
+    [glueController removeObserver:self forKeyPath:realm_keypath];
+    [glueController removeObserver:self forKeyPath:prompt_response_keypath];
+    [super dealloc];
+}
+
+- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+    if ([(NSString *) context isEqualToString:ACKVOContext]) {
+       if ([keyPath isEqualToString:username_keypath] || [keyPath isEqualToString:realm_keypath]) {
+            BOOL valid = [KIMUtilities validatePrincipalWithName:[glueController valueForKeyPath:username_keypath] 
+                                                           realm:[glueController valueForKeyPath:realm_keypath]];
+            [glueController setValue:[NSNumber numberWithBool:valid] 
+                          forKeyPath:enable_identity_ok_keypath];
+       }
+        else if ([keyPath isEqualToString:prompt_response_keypath]) {
+            BOOL valid = ([[glueController valueForKeyPath:prompt_response_keypath] length] > 0);
+            [glueController setValue:[NSNumber numberWithBool:valid] 
+                          forKeyPath:enable_prompt_ok_keypath];
+       }
+        else if ([keyPath isEqualToString:old_password_keypath] ||
+                 [keyPath isEqualToString:new_password_keypath] ||
+                 [keyPath isEqualToString:verify_password_keypath]) {
+            NSString *oldString = [glueController valueForKeyPath:old_password_keypath];
+            NSString *newString = [glueController valueForKeyPath:new_password_keypath];
+            NSString *verifyString = [glueController valueForKeyPath:verify_password_keypath];
+            BOOL valid = ([oldString length] > 0 &&
+                          [newString length] > 0 &&
+                          [verifyString length] > 0 &&
+                          [newString isEqualToString:verifyString]);
+            [glueController setValue:[NSNumber numberWithBool:valid] 
+                          forKeyPath:change_password_ok_keypath];
+        }
+    }
+    else {
+        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
+    }
+}
+
+- (void) setContent: (NSMutableDictionary *) newContent
+{
+    [self window]; // wake up the nib connections
+    [glueController setContent:newContent];
+}
+
+- (void) showEnterIdentity
+{
+    NSString *key = (associatedClient.name) ? ACAppPrincReqKey : ACPrincReqKey;
+    NSString *message = [NSString stringWithFormat:
+                         NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+                         associatedClient.name];
+    
+    // wake up the nib connections and adjust window size
+    [self window];
+    // set up controls with info from associatedClient
+    [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+    [containerView addSubview:identityView];
+    [enterBadge setBadgePath:associatedClient.path];
+    [glueController setValue:message
+                  forKeyPath:message_keypath];
+    [self showWindow:nil];
+    [[self window] makeFirstResponder:usernameField];
+}
+
+- (void) showAuthPrompt
+{
+    uint32_t type = [[glueController valueForKeyPath:@"content.prompt_type"] unsignedIntegerValue];
+    
+    switch (type) {
+        case kim_prompt_type_password :
+            [self showEnterPassword]; break;
+        case kim_prompt_type_preauth :
+        default :
+            [self showSAM]; break;
+    }
+}
+
+- (void) showEnterPassword
+{
+    CGFloat shrinkBy;
+    NSRect frame;
+    NSString *key = nil;
+    NSString *message = nil;
+    
+    [self window];
+
+    if ([associatedClient.name isEqualToString:[[NSBundle mainBundle] bundlePath]]) {
+        key = ACPasswordReqKey;
+        message = [NSString stringWithFormat:
+                   NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+                   [glueController valueForKeyPath:identity_string_keypath]];
+    } else {
+        key = ACAppPasswordReqKey;
+        message = [NSString stringWithFormat:
+                   NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+                   associatedClient.name,
+                   [glueController valueForKeyPath:identity_string_keypath]];
+    }
+    [glueController setValue:message
+                  forKeyPath:message_keypath];
+
+    // wake up the nib connections and adjust window size
+    // set up controls with info from associatedClient
+    [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+    [containerView addSubview:passwordView];
+    // set badge
+    [passwordBadge setBadgePath:associatedClient.path];
+    
+    // adjust for checkbox visibility
+    if (![[glueController valueForKeyPath:allow_save_password_keypath] boolValue]) {
+        shrinkBy = ([passwordField frame].origin.y - 
+                    [rememberPasswordInKeychainCheckBox frame].origin.y);
+        frame = [[self window] frame];
+        frame.origin.y += shrinkBy;
+        frame.size.height -= shrinkBy;
+        [[self window] setFrame:frame display:NO animate:NO];
+    }
+    
+    [self showWindow:nil];
+    [[self window] makeFirstResponder:passwordField];
+}
+
+- (void) showSAM
+{
+    // wake up the nib connections and adjust window size
+    [self window];
+    // set up controls with info from associatedClient
+    [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+    [containerView addSubview:samView];
+    // set badge
+    [samBadge setBadgePath:associatedClient.path];
+
+    [glueController setValue:[NSNumber numberWithBool:NO]
+                   forKeyPath:allow_save_password_keypath];
+    
+    [self showWindow:nil];
+    [[self window] makeFirstResponder:samPromptField];
+}
+
+- (void) showChangePassword
+{
+    NSString *key = ([glueController valueForKeyPath:password_expired_keypath]) ? ACAppPrincReqKey : ACPrincReqKey;
+    NSString *message = [NSString stringWithFormat:
+                         NSLocalizedStringFromTable(key, ACLocalizationTable, NULL),
+                         associatedClient.name];
+
+                     
+    BOOL expired = [[glueController valueForKeyPath:password_expired_keypath] boolValue];
+    BOOL calledBySelf = [associatedClient.path isEqualToString:[[NSBundle mainBundle] bundlePath]];
+    
+    if (calledBySelf) {
+        key = ACPasswordChangePrinc;
+        message = [NSString stringWithFormat:
+                   NSLocalizedStringFromTable(key, ACLocalizationTable, NULL), 
+                   [glueController valueForKeyPath:identity_string_keypath]];
+        // Please change the Kerberos password for \"%@\"
+    } else if (!expired) {
+        key = ACPasswordChangeApp;
+        message = [NSString stringWithFormat:
+                   NSLocalizedStringFromTable(key, ACLocalizationTable, NULL), 
+                   associatedClient.name,
+                   [glueController valueForKeyPath:identity_string_keypath]];
+        // %@ requires that you change the Kerberos password for \"%@\"
+    } else {
+        key = ACPasswordChangeExpired;
+        message = NSLocalizedStringFromTable(key, ACLocalizationTable, NULL);
+        // Your password has expired, would you like to change it?
+    }
+    [glueController setValue:message forKeyPath:message_keypath];
+                     
+    // wake up the nib connections and adjust window size
+    [self window];
+    // set up controls with info from associatedClient
+    [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+    [containerView addSubview:changePasswordView];
+    // set badge
+    [changePasswordBadge setBadgePath:associatedClient.path];
+    
+    [self showWindow:nil];
+    [[self window] makeFirstResponder:oldPasswordField];
+}
+
+- (void) showError
+{
+    // wake up the nib connections and adjust window size
+    [self window];
+    // set up controls with info from associatedClient
+    [[containerView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+    [containerView addSubview:errorView];
+    // set badge
+    [errorBadge setBadgePath:associatedClient.path];
+    
+    [self showWindow:nil];
+}
+
+- (IBAction) cancel: (id) sender
+{
+    [associatedClient didCancel];
+    [self close];
+}
+
+- (IBAction) enterIdentity: (id) sender
+{
+    NSString *usernameString = [glueController valueForKeyPath:username_keypath];
+    NSString *realmString = [glueController valueForKeyPath:realm_keypath];
+    NSString *identityString = [NSString stringWithFormat:@"%@@%@", usernameString, realmString];
+    
+    // the principal must already be valid to get this far
+    [associatedClient didEnterIdentity:identityString];
+}
+
+- (IBAction) answerAuthPrompt: (id) sender
+{
+    NSString *responseString = [glueController valueForKeyPath:prompt_response_keypath];
+    NSNumber *saveResponse = [glueController valueForKeyPath:should_save_password_keypath];
+    
+    if (!saveResponse) {
+        saveResponse = [NSNumber numberWithBool:NO];
+    }
+    [associatedClient didPromptForAuth:responseString
+                          saveResponse:saveResponse];
+}
+
+- (IBAction) changePassword: (id) sender
+{
+    NSString *oldString = [glueController valueForKeyPath:old_password_keypath];
+    NSString *newString = [glueController valueForKeyPath:new_password_keypath];
+    NSString *verifyString = [glueController valueForKeyPath:verify_password_keypath];
+    
+    [associatedClient didChangePassword:oldString
+                            newPassword:newString
+                         verifyPassword:verifyString];
+}
+
+- (IBAction) showedError: (id) sender
+{
+    [associatedClient didHandleError];
+}
+
+@end
index 714c13ef5c3ed47ed987708df477a20c85a9b8a9..4fba86727c785a26f11f7b062bd4643214140c1f 100644 (file)
@@ -33,6 +33,7 @@
 - (id) initWithFrame: (NSRect) frameRect;
 - (void) dealloc;
 - (void) setBadgeImage: (NSImage *) image;
+- (void) setBadgePath: (NSString *) path;
 - (void) drawRect: (NSRect) rect;
 
 @end
index b408130e3ee32d8574b398dd577425f0fb04f51c..167130aca33a483f7e7bfa630dd0403e1e77ba48 100644 (file)
 
 // ---------------------------------------------------------------------------
 
+- (void) setBadgePath: (NSString *) path
+{
+    NSImage *newImage = [[NSWorkspace sharedWorkspace] iconForFile: path];
+    [self setBadgeImage: newImage];
+}
+
+// ---------------------------------------------------------------------------
+
 - (void) drawRect: (NSRect) rect
 {
     float frameSize = [self frame].size.width;
diff --git a/src/kim/agent/mac/IPCClient.h b/src/kim/agent/mac/IPCClient.h
new file mode 100644 (file)
index 0000000..531f7cb
--- /dev/null
@@ -0,0 +1,51 @@
+//
+//  IPCClient.h
+//  Kerberos5
+//
+//  Created by Justin Anderson on 9/28/08.
+//  Copyright 2008 MIT. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "KIMUtilities.h"
+
+@class SelectIdentityController;
+@class AuthenticationController;
+
+@interface IPCClient : NSObject {
+    mach_port_t port;
+    NSString *name;
+    NSString *path;
+    NSInteger state;
+    NSMutableDictionary *currentInfo;
+
+    SelectIdentityController *selectController;
+    AuthenticationController *authController;
+}
+
+@property (assign) mach_port_t port;
+@property (readwrite, retain) NSString *name;
+@property (readwrite, retain) NSString *path;
+@property (assign) NSInteger state;
+@property (readwrite, retain) NSMutableDictionary *currentInfo;
+@property (readonly, retain) SelectIdentityController *selectController;
+@property (readonly, retain) AuthenticationController *authController;
+
+- (void) cleanup;
+
+- (kim_error) selectIdentity: (NSDictionary *) info;
+- (kim_error) enterIdentity: (NSDictionary *) info;
+- (kim_error) promptForAuth: (NSDictionary *) info;
+- (kim_error) changePassword: (NSDictionary *) info;
+- (kim_error) handleError: (NSDictionary *) info;
+
+- (void) didCancel;
+- (void) didSelectIdentity: (NSString *) identityString;
+- (void) didEnterIdentity: (NSString *) identityString;
+- (void) didPromptForAuth: (NSString *) responseString saveResponse: (NSNumber *) saveResponse;
+- (void) didChangePassword: (NSString *) oldPassword
+               newPassword: (NSString *) newPassword
+            verifyPassword: (NSString *) verifyPassword;
+- (void) didHandleError;
+
+@end
diff --git a/src/kim/agent/mac/IPCClient.m b/src/kim/agent/mac/IPCClient.m
new file mode 100644 (file)
index 0000000..4cb10fc
--- /dev/null
@@ -0,0 +1,189 @@
+//
+//  IPCClient.m
+//  Kerberos5
+//
+//  Created by Justin Anderson on 9/28/08.
+//  Copyright 2008 MIT. All rights reserved.
+//
+
+#import "IPCClient.h"
+#import "SelectIdentityController.h"
+#import "AuthenticationController.h"
+#import "KerberosAgentListener.h"
+
+enum krb_agent_client_state {
+    ipc_client_state_idle,
+    ipc_client_state_init,
+    ipc_client_state_enter,
+    ipc_client_state_select,
+    ipc_client_state_auth_prompt,
+    ipc_client_state_change_password,
+    ipc_client_state_handle_error,
+    ipc_client_state_fini,
+};
+
+@interface IPCClient ()
+
+@property (readwrite, retain) SelectIdentityController *selectController;
+@property (readwrite, retain) AuthenticationController *authController;
+
+@end
+
+
+@implementation IPCClient
+
+@synthesize port;
+@synthesize name;
+@synthesize path;
+@synthesize state;
+@synthesize currentInfo;
+@synthesize selectController;
+@synthesize authController;
+
+- (BOOL) isEqual: (IPCClient *) otherClient
+{
+    return (self.port == otherClient.port);
+}
+
+- (NSUInteger) hash
+{
+    return self.port;
+}
+
+- (id) init
+{
+    self = [super init];
+    if (self != nil) {
+        self.state = ipc_client_state_init;
+        self.selectController = [[[SelectIdentityController alloc] init] autorelease];
+        self.authController = [[[AuthenticationController alloc] init] autorelease];
+        self.selectController.associatedClient = self;
+        self.authController.associatedClient = self;
+    }
+    return self;
+}
+
+- (void) cleanup
+{
+    [self.selectController close];
+    [self.authController close];
+}
+
+- (void) didCancel
+{
+    kim_error err = KIM_USER_CANCELED_ERR;
+    if (self.state == ipc_client_state_select) {
+        [KerberosAgentListener didSelectIdentity:self.currentInfo error:err];
+    }
+    else if (self.state == ipc_client_state_enter) {
+        [KerberosAgentListener didEnterIdentity:self.currentInfo error:err];
+    }
+    else if (self.state == ipc_client_state_select) {
+        [KerberosAgentListener didSelectIdentity:self.currentInfo error:err];
+    }
+    else if (self.state == ipc_client_state_auth_prompt) {
+        [KerberosAgentListener didPromptForAuth:self.currentInfo error:err];
+    }
+    else if (self.state == ipc_client_state_change_password) {
+        [KerberosAgentListener didChangePassword:self.currentInfo error:err];
+    }
+    [self.selectController close];
+    [self.authController close];
+    self.state = ipc_client_state_idle;
+}
+
+- (kim_error) selectIdentity: (NSDictionary *) info
+{
+    self.currentInfo = [[info mutableCopy] autorelease];
+    self.state = ipc_client_state_select;
+
+    [self.selectController showWindow:nil];
+    
+    return 0;
+}
+
+- (void) didSelectIdentity: (NSString *) identityString
+{
+    [self.currentInfo setObject:identityString forKey:@"identity_string"];
+    
+    [KerberosAgentListener didSelectIdentity:self.currentInfo error:0];
+    
+    // clean up state
+    self.currentInfo = nil;
+    self.state = ipc_client_state_idle;
+}
+
+- (kim_error) enterIdentity: (NSDictionary *) info
+{
+    self.currentInfo = [[info mutableCopy] autorelease];
+    self.state = ipc_client_state_enter;
+
+    [self.authController setContent:self.currentInfo];
+    [self.authController showEnterIdentity];
+    
+    return 0;
+}
+
+- (void) didEnterIdentity: (NSString *) identityString
+{
+    [self.currentInfo setObject:identityString forKey:@"identity_string"];
+    [KerberosAgentListener didEnterIdentity:self.currentInfo error:0];
+}
+
+- (kim_error) promptForAuth: (NSDictionary *) info
+{
+    self.currentInfo = [[info mutableCopy] autorelease];
+    self.state = ipc_client_state_auth_prompt;
+    
+    [self.authController setContent:self.currentInfo];
+    [self.authController showAuthPrompt];
+    
+    return 0;
+}
+
+- (void) didPromptForAuth: (NSString *) responseString saveResponse: (NSNumber *) saveResponse
+{
+    [self.currentInfo setObject:responseString forKey:@"prompt_response"];
+    [self.currentInfo setObject:saveResponse forKey:@"save_response"];
+    [KerberosAgentListener didPromptForAuth:self.currentInfo error:0];
+}
+
+- (kim_error) changePassword: (NSDictionary *) info
+{
+    self.currentInfo = [[info mutableCopy] autorelease];
+    self.state = ipc_client_state_change_password;
+    
+    [self.authController setContent:self.currentInfo];
+    [self.authController showChangePassword];
+    
+    return 0;
+}
+
+- (void) didChangePassword: (NSString *) oldPassword 
+               newPassword: (NSString *) newPassword 
+            verifyPassword: (NSString *) verifyPassword
+{
+    [self.currentInfo setObject:oldPassword forKey:@"old_password"];
+    [self.currentInfo setObject:newPassword forKey:@"new_password"];
+    [self.currentInfo setObject:verifyPassword forKey:@"verify_password"];
+    [KerberosAgentListener didChangePassword:self.currentInfo error:0];
+}
+
+
+- (kim_error) handleError: (NSDictionary *) info
+{
+    self.currentInfo = [[info mutableCopy] autorelease];
+    self.state = ipc_client_state_handle_error;
+    
+    [self.authController setContent:self.currentInfo];
+    [self.authController showError];
+    
+    return 0;
+}
+
+- (void) didHandleError
+{
+    [KerberosAgentListener didHandleError:self.currentInfo error:0];
+}
+
+@end
index 54a4947dcfee063842585ea6675692906d06f04d..5dcd32939cd2de4a467a06f15914b757346c8c45 100644 (file)
        self.favorite = true;
     } else {
        kim_string_create_for_last_error(&error_string, err);
-       NSLog(@"%s failed with %s", _cmd, error_string);
+       NSLog(@"%s failed with %s", __FUNCTION__, error_string);
     }
     return (err != KIM_NO_ERROR);
 }
        self.favorite = false;
     } else {
        kim_string_create_for_last_error(&error_string, err);
-       NSLog(@"%s failed with %s", _cmd, error_string);
+       NSLog(@"%s failed with %s", __FUNCTION__, error_string);
     }
     return (err != KIM_NO_ERROR);
 }
            err = cc_context_wait_for_change (context);
             
            if (!err) {
-               NSLog (@"%s thread noticed update", __FUNCTION__);
+       //      NSLog (@"%s thread noticed update", __FUNCTION__);
            } else {
-               NSLog (@"%s thread got error %d (%s)", __FUNCTION__, err, [NSString stringForLastKIMError:err]);
+       //      NSLog (@"%s thread got error %d (%s)", __FUNCTION__, err, [KIMUtilities stringForLastKIMError:err]);
                 err = 0; /* The server quit unexpectedly -- just try again */
             }
-            
+
+            //NSLog(@"waited %@", [[NSThread currentThread] description]);
             [(Identities *) [connection rootProxy] update];
            sleep (1);
         }
        if (context) { cc_context_release (context); }
     }
     
-    NSLog (@"%s thread exiting", __FUNCTION__);
+//    NSLog (@"%s thread exiting", __FUNCTION__);
     [pool release];
 }
 
     }
     
     // Build list of identities with existing ccaches
-    
+//    NSLog(@"updating %@", [[NSThread currentThread] description]);
     while (!err) {
         kim_ccache ccache = NULL;
         kim_identity kimIdentity = NULL;
index 68774952cfd048830b00ca442eb90f75b163c84b..9b735b3e22cae35df3ea6eb37081ac5f3b72d669 100644 (file)
 
 #define log_kim_error_to_console(err)\
 {\
-NSLog(@"%s got error %@", _cmd, [NSString stringForLastKIMError:err]);\
+NSLog(@"%s got error %@", _cmd, [KIMUtilities stringForLastKIMError:err]);\
 } while (0);
 
-@interface NSString (KIMUtilities)
+@interface KIMUtilities : NSObject
 
 + (NSString *) stringForLastKIMError: (kim_error) in_err;
 
++ (BOOL) validatePrincipalWithName: (NSString *) name
+                             realm: (NSString *) realm;
+
 @end
index 07c85e8e8283905f4f2af22329faef5d22e5e634..1326c137fa94adde87af4ce50eda66cd2dc7612c 100644 (file)
@@ -8,7 +8,7 @@
 
 #import "KIMUtilities.h"
 
-@implementation NSString (KIMUtilities)
+@implementation KIMUtilities
 
 + (NSString *) stringForLastKIMError: (kim_error) in_err
 {
     return result;
 }
 
++ (BOOL) validatePrincipalWithName: (NSString *) name
+                             realm: (NSString *) realm
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_identity identity = NULL;
+    NSString *principal = nil;
+    
+    if (!name || !realm || [name length] == 0) {
+        err = KIM_BAD_PRINCIPAL_STRING_ERR;
+    }
+    if (!err) {
+        principal = [[NSString alloc] initWithFormat:@"%@@%@", name, realm];
+        err = kim_identity_create_from_string(&identity, [principal UTF8String]);
+        [principal release];
+    }
+    if (!identity) {
+        err = KIM_BAD_PRINCIPAL_STRING_ERR;
+    }
+    kim_identity_free(&identity);
+    
+    return (err == KIM_NO_ERROR);
+}
+
 @end
index d3379ce0d6bfc737b3f08fb7108bf27a9abfa070..6f851e91debdbc9a4583667c1acdbd68a9b71858 100644 (file)
@@ -22,5 +22,7 @@
        <string>MainMenu</string>
        <key>NSPrincipalClass</key>
        <string>NSApplication</string>
+       <key>LSUIElement</key>
+       <true/>
 </dict>
 </plist>
index 42992dbf3870c0d36aeb040a006f9535832b4b5f..87696116346708924ced4cd552e344a8fba6fb5c 100644 (file)
 
 #import <Cocoa/Cocoa.h>
 
+@class IPCClient;
+@class AuthenticationController;
 
 @interface KerberosAgentController : NSObject {
-
+    NSMutableArray *clients;
+    NSTimer *autoQuitTimer;
 }
 
+@property (readwrite, retain) NSMutableArray *clients;
+
+- (void) quitIfIdle: (NSTimer *) timer;
+
+- (IPCClient *)clientForPort:(mach_port_t)client_port;
+- (IPCClient *)clientForInfo:(NSDictionary *)info;
+
+- (IBAction) fakeANewClient: (id) sender;
+
+- (void) addClient: (NSDictionary *) info;
+- (void) enterIdentity: (NSDictionary *) info;
+- (void) selectIdentity: (NSDictionary *) info;
+- (void) promptForAuth: (NSDictionary *) info;
+- (void) changePassword: (NSDictionary *) info;
+- (void) handleError: (NSDictionary *) info;
+- (void) removeClient: (NSDictionary *) info;
+
 @end
index 20b74015a3963ff8efea3bbed154343e855f6a18..5e973ea5e6bdf00c3454f311ab1444005b4f602f 100644 (file)
 
 #import "KerberosAgentController.h"
 #import "SelectIdentityController.h"
+#import "AuthenticationController.h"
+#import "KerberosAgentListener.h"
+#import "IPCClient.h"
+#import "ServerDemux.h"
 
+#define SECONDS_BEFORE_AUTO_QUIT_ON_START 5
+#define SECONDS_BEFORE_AUTO_QUIT_ON_NO_CLIENTS 1
 
 @implementation KerberosAgentController
 
+@synthesize clients;
+
 // ---------------------------------------------------------------------------
 
 - (void) applicationDidFinishLaunching: (NSNotification *) notification
 {
-    SelectIdentityController *controller = [[SelectIdentityController alloc] init];
-    int result = [controller runWindow];
-    if (result != 0) {
-       NSLog(@"SelectIdentityController -runWindow result was %d", result);
+    self.clients = [NSMutableArray array];
+    [KerberosAgentListener startListening];
+    
+    [NSApp activateIgnoringOtherApps:YES];
+    
+    autoQuitTimer = [NSTimer scheduledTimerWithTimeInterval:SECONDS_BEFORE_AUTO_QUIT_ON_START
+                                                     target:self
+                                                   selector:@selector(quitIfIdle:)
+                                                   userInfo:nil 
+                                                    repeats:NO];
+}
+
+- (void) dealloc
+{
+    self.clients = nil;
+    [autoQuitTimer invalidate];
+    [autoQuitTimer release];
+    
+    [super dealloc];
+}
+
+- (void) quitIfIdle: (NSTimer *) timer
+{
+    if ([self.clients count] == 0) {
+        NSLog(@"No active clients. Terminating.");
+        [NSApp terminate:nil];
     }
+    autoQuitTimer = nil;
+}
+
+- (IPCClient *)clientForPort:(mach_port_t)client_port
+{
+    IPCClient *aClient = nil;
+    
+    for (aClient in self.clients) {
+        if (aClient.port == client_port) {
+            break;
+        }
+    }
+    
+    return aClient;
+}
 
+- (IPCClient *)clientForInfo:(NSDictionary *)info
+{
+    mach_port_t client_port = [[info objectForKey:@"client_port"] integerValue];
+    return [self clientForPort:client_port];
+}
+
+- (IBAction) fakeANewClient: (id) sender
+{
+    IPCClient *aClient = [[IPCClient alloc] init];
+    aClient.port = 1;
+    aClient.name = @"Barry";
+    aClient.path = [[NSBundle mainBundle] bundlePath];
+    [self.clients addObject:aClient];
+    [aClient release];
+}
+
+#pragma mark Client actions
+
+// init
+- (void) addClient: (NSDictionary *) info
+{
+    int32_t err = 0;
+    IPCClient *aClient = [self clientForInfo:info];
+
+    if (aClient) {
+        // already registered
+        err = KIM_IDENTITY_ALREADY_IN_LIST_ERR;
+    } else {
+        aClient = [[IPCClient alloc] init];
+        aClient.port = [[info objectForKey:@"client_port"] integerValue];
+        aClient.name = [info objectForKey:@"name"];
+        aClient.path = [info objectForKey:@"path"];
+        [self.clients addObject:aClient];
+        [aClient release];
+    }
+    
+    [autoQuitTimer invalidate];
+    
+    [KerberosAgentListener didAddClient:info error:err];
+    [info release];
+}
+
+// enter
+- (void) enterIdentity: (NSDictionary *) info
+{
+    kim_error err = KIM_NO_ERROR;
+    IPCClient *aClient = nil;
+
+    // get client object for matching info, creating if it doesn't exist
+    aClient = [self clientForInfo:info];
+    if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+    else {
+        err = [aClient enterIdentity:info];
+    }
+    if (err) {
+        [KerberosAgentListener didEnterIdentity:info error:err];
+    }
+}
+
+// select
+- (void) selectIdentity: (NSDictionary *) info
+{
+    kim_error err = KIM_NO_ERROR;
+    IPCClient *aClient = nil;
+    
+    // get client object for matching info, creating if it doesn't exist
+    aClient = [self clientForInfo:info];
+    if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+    else {
+        err = [aClient selectIdentity:info];
+    }
+    if (err) {
+        [KerberosAgentListener didSelectIdentity:info error:err];
+    }
+}
+
+// auth
+- (void) promptForAuth: (NSDictionary *) info
+{
+    kim_error err = KIM_NO_ERROR;
+    IPCClient *aClient = nil;
+    
+    aClient = [self clientForInfo:info];
+    if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+    else {
+        err = [aClient promptForAuth:info];
+    }
+}
+
+// change password
+- (void) changePassword: (NSDictionary *) info
+{
+    kim_error err = KIM_NO_ERROR;
+    IPCClient *aClient = nil;
+    
+    aClient = [self clientForInfo:info];
+    if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+    else {
+        err = [aClient changePassword:info];
+    }
+}
+
+// error
+- (void) handleError: (NSDictionary *) info
+{
+    kim_error err = KIM_NO_ERROR;
+    IPCClient *aClient = nil;
+    
+    aClient = [self clientForInfo:info];
+    if (!aClient) { err = KIM_IDENTITY_NOT_IN_LIST_ERR; }
+    else {
+        err = [aClient handleError:info];
+    }
+}
+
+// fini
+- (void) removeClient: (NSDictionary *) info
+{
+    kim_error err = KIM_NO_ERROR;
+    IPCClient *aClient = [self clientForInfo:info];
+    
+    if (!aClient) {
+        err = KIM_IDENTITY_NOT_IN_LIST_ERR;
+    } else {
+        // close all windows associated with it
+        [aClient cleanup];
+        [self.clients removeObject:aClient];
+        if ([self.clients count] == 0) {
+            // the client removes itself after select identity,
+            // but might come back shortly afterward in need of an auth prompt
+            autoQuitTimer = [NSTimer scheduledTimerWithTimeInterval:SECONDS_BEFORE_AUTO_QUIT_ON_NO_CLIENTS
+                                                             target:self
+                                                           selector:@selector(quitIfIdle:)
+                                                           userInfo:nil 
+                                                            repeats:NO];
+        }
+    }
+    
+    // called after user finishes prompt
+    [KerberosAgentListener didRemoveClient:info error:err];
+    [info release];
 }
 
 @end
diff --git a/src/kim/agent/mac/KerberosAgentListener.h b/src/kim/agent/mac/KerberosAgentListener.h
new file mode 100644 (file)
index 0000000..f58ce33
--- /dev/null
@@ -0,0 +1,91 @@
+//
+//  KerberosAgentListener.h
+//  Kerberos5
+//
+//  Created by Justin Anderson on 9/28/08.
+//  Copyright 2008 MIT. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import <Kerberos/kim.h>
+
+#define kCheckinMessage 100
+
+@interface KerberosAgentListener : NSObject {
+    NSThread *thread;
+}
+
+@property (readwrite, retain) NSThread *thread;
+
++ (KerberosAgentListener *) sharedListener;
+
++ (void) startListening;
+
+- (void) threadMain;
+
++ (void) addClientWithPort: (mach_port_t) client_port
+                 replyPort: (mach_port_t) reply_port
+                      name: (kim_string) name
+                      path: (kim_string) path;
+
+// contains reply_port
++ (void) didAddClient: (NSDictionary *) info 
+                error: (int32_t) error;
+
++ (void) enterIdentityWithClientPort: (mach_port_t) client_port
+                           replyPort: (mach_port_t) reply_port;
+
+// contains reply_port, kim_identity
++ (void) didEnterIdentity: (NSDictionary *) info 
+                    error: (int32_t) error;
+
++ (void) selectIdentityWithClientPort: (mach_port_t) client_port
+                            replyPort: (mach_port_t) reply_port
+                                hints: (kim_selection_hints) hints;
+
+// contains reply_port, kim_identity
++ (void) didSelectIdentity: (NSDictionary *) info 
+                     error: (int32_t) error;
+
++ (void) promptForAuthWithClientPort: (mach_port_t) client_port
+                           replyPort: (mach_port_t) reply_port
+                            identity: (kim_string) identity_string
+                          promptType: (uint32_t) prompt_type
+                           allowSave: (kim_boolean) allow_save  
+                           hideReply: (kim_boolean) hide_reply
+                               title: (kim_string) title
+                             message: (kim_string) message
+                         description: (kim_string) description;
+
+// contains reply_port, (string) prompt_response
++ (void) didPromptForAuth: (NSDictionary *) info 
+                    error: (int32_t) error;
+
++ (void) changePasswordWithClientPort: (mach_port_t) client_port
+                            replyPort: (mach_port_t) reply_port
+                             identity: (kim_string) identity_string
+                              expired: (kim_boolean) expired;
+
+// contains reply_port, old password, new password, verify password
++ (void) didChangePassword: (NSDictionary *) info 
+                     error: (int32_t) error;
+
++ (void) handleErrorWithClientPort: (mach_port_t) client_port
+                         replyPort: (mach_port_t) reply_port
+                          identity: (kim_string) identity_string
+                             error: (kim_error) error
+                           message: (kim_string) message
+                       description: (kim_string) description;
+
+// contains reply_port
++ (void) didHandleError: (NSDictionary *) info 
+                  error: (int32_t) error;
+
+
++ (void) removeClientMatchingPort: (mach_port_t) client_port
+                        replyPort: (mach_port_t) reply_port;
+
++ (void) didRemoveClient: (NSDictionary *)info
+                   error: (int32_t) error;
+
+@end
diff --git a/src/kim/agent/mac/KerberosAgentListener.m b/src/kim/agent/mac/KerberosAgentListener.m
new file mode 100644 (file)
index 0000000..f765997
--- /dev/null
@@ -0,0 +1,316 @@
+//
+//  KerberosAgentListener.m
+//  Kerberos5
+//
+//  Created by Justin Anderson on 9/28/08.
+//  Copyright 2008 MIT. All rights reserved.
+//
+
+#import "KerberosAgentListener.h"
+#import "KIMUtilities.h"
+#import "ServerDemux.h"
+#import "IPCClient.h"
+
+@implementation KerberosAgentListener
+
+@synthesize thread;
+
+- (id) init
+{
+    self = [super init];
+    if (self != nil) {
+        self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadMain) object:nil];
+    }
+    return self;
+}
+
+static KerberosAgentListener *sharedListener = nil;
+
++ (KerberosAgentListener *) sharedListener
+{
+    @synchronized(self) {
+        if (sharedListener == nil) {
+            [[self alloc] init]; // assignment not done here
+        }
+    }
+    return sharedListener;
+}
+
++ (id)allocWithZone:(NSZone *)zone
+{
+    @synchronized(self) {
+        if (sharedListener == nil) {
+            sharedListener = [super allocWithZone:zone];
+            return sharedListener;  // assignment and return on first allocation
+        }
+    }
+    return nil; //on subsequent allocation attempts return nil
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    return self;
+}
+
+- (id)retain
+{
+    return self;
+}
+
+- (unsigned)retainCount
+{
+    return UINT_MAX;  //denotes an object that cannot be released
+}
+
+- (void)release
+{
+    //do nothing
+}
+
+- (id)autorelease
+{
+    return self;
+}
+
+#pragma mark Thread management
+
+// called from main thread to start listen thread
++ (void) startListening
+{
+//    NSLog(@"%s %@ thread", __FUNCTION__, ([NSThread isMainThread]) ? @"main" : @"not main");
+
+    [[KerberosAgentListener sharedListener].thread start];
+}
+
+- (void) threadMain
+{
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    int32_t err = 0;
+    
+//    NSLog(@"%s starting up", __FUNCTION__);
+    
+    while (!err && ![self.thread isCancelled]) {
+        err = kim_agent_listen_loop();
+        if (!err) {
+//            NSLog (@"%s loop resetting %@", __FUNCTION__, [[NSThread currentThread] description]);
+        } else {
+            NSLog (@"%s got error %d (%@) %@", __FUNCTION__, err, [KIMUtilities stringForLastKIMError:err], [[NSThread currentThread] description]);
+            err = 0; /* The server quit unexpectedly -- just try again */
+        }
+        sleep(10);
+    }
+    
+    [pool release];
+}
+
+#pragma mark IPC handlers
+
++ (void) addClientWithPort: (mach_port_t) client_port
+                 replyPort: (mach_port_t) reply_port
+                      name: (kim_string) name
+                      path: (kim_string) path
+{
+    NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+                          [NSNumber numberWithInteger:client_port], @"client_port",
+                          [NSNumber numberWithInteger:reply_port], @"reply_port",
+                          [NSString stringWithUTF8String:name], @"name",
+                          [NSString stringWithUTF8String:path], @"path",
+                          nil];
+    [[NSApp delegate] performSelectorOnMainThread:@selector(addClient:) 
+                                       withObject:info
+                                    waitUntilDone:NO];
+}
+
++ (void) didAddClient: (NSDictionary *) info 
+                error: (kim_error) error
+{
+    kim_error err = KIM_NO_ERROR;
+    mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+    err = kim_handle_reply_init(reply_port, error);
+}
+
++ (void) enterIdentityWithClientPort: (mach_port_t) client_port
+                           replyPort: (mach_port_t) reply_port
+{
+    NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+                          [NSNumber numberWithInteger:client_port], @"client_port",
+                          [NSNumber numberWithInteger:reply_port], @"reply_port",
+                          nil];
+    [[NSApp delegate] performSelectorOnMainThread:@selector(enterIdentity:) 
+                                       withObject:info
+                                    waitUntilDone:NO];
+}
+
+// contains reply_port, identity_string
++ (void) didEnterIdentity: (NSDictionary *) info 
+                    error: (kim_error) error
+{
+    kim_error err = KIM_NO_ERROR;
+    mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+    kim_identity identity = NULL;
+    
+    if (!err) {
+        err = kim_identity_create_from_string(&identity, [[info objectForKey:@"identity_string"] UTF8String]);
+    }
+    
+    err = kim_handle_reply_enter_identity(reply_port, identity, error);
+}
+
++ (void) selectIdentityWithClientPort: (mach_port_t) client_port
+                            replyPort: (mach_port_t) reply_port
+                                hints: (kim_selection_hints) hints
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_selection_hints new_hints = NULL;
+    NSDictionary *info = nil;
+    
+    // new hints will be freed by main thread
+    err = kim_selection_hints_copy(&new_hints, hints);
+    
+    info = [[NSDictionary alloc] initWithObjectsAndKeys:
+            [NSNumber numberWithInteger:client_port], @"client_port",
+            [NSNumber numberWithInteger:reply_port], @"reply_port",
+            [NSValue valueWithPointer:new_hints], @"hints", 
+            nil];
+    
+    [[NSApp delegate] performSelectorOnMainThread:@selector(selectIdentity:) 
+                                       withObject:info
+                                    waitUntilDone:NO];
+}
+
+// contains reply_port, identity_string
++ (void) didSelectIdentity: (NSDictionary *) info 
+                     error: (int32_t) error
+{
+    kim_error err = KIM_NO_ERROR;
+    NSNumber *portNumber = [info objectForKey:@"reply_port"];
+    NSString *identityString = [info objectForKey:@"identity_string"];
+    mach_port_t reply_port = [portNumber integerValue];
+    kim_identity identity = NULL;
+    kim_identity_create_from_string(&identity, (identityString) ? [identityString UTF8String] : "");
+
+    err = kim_handle_reply_select_identity(reply_port, identity, error);
+}
+
++ (void) promptForAuthWithClientPort: (mach_port_t) client_port
+                           replyPort: (mach_port_t) reply_port
+                            identity: (kim_string) identity_string
+                          promptType: (uint32_t) prompt_type
+                           allowSave: (kim_boolean) allow_save  
+                           hideReply: (kim_boolean) hide_reply
+                               title: (kim_string) title
+                             message: (kim_string) message
+                         description: (kim_string) description
+{
+    NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+                          [NSNumber numberWithInteger:client_port], @"client_port",
+                          [NSNumber numberWithInteger:reply_port], @"reply_port",
+                          [NSString stringWithUTF8String:identity_string], @"identity_string",
+                          [NSNumber numberWithUnsignedInt:prompt_type], @"prompt_type",
+                          [NSNumber numberWithBool:allow_save], @"allow_save",
+                          [NSNumber numberWithBool:hide_reply], @"hide_reply",
+                          [NSString stringWithUTF8String:title], @"title",
+                          [NSString stringWithUTF8String:message], @"message",
+                          [NSString stringWithUTF8String:description], @"description",
+                          nil];
+    [[NSApp delegate] performSelectorOnMainThread:@selector(promptForAuth:) 
+                                       withObject:info
+                                    waitUntilDone:NO];
+}
+
+// contains reply_port, (string) prompt_response
++ (void) didPromptForAuth: (NSDictionary *) info 
+                    error: (int32_t) error
+{
+    kim_error err = KIM_NO_ERROR;
+    mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+    kim_string prompt_response = [[info objectForKey:@"prompt_response"] UTF8String];
+    kim_boolean save_response = [[info objectForKey:@"save_response"] boolValue];
+
+    err = kim_handle_reply_auth_prompt(reply_port, prompt_response, save_response, error);
+}
+
++ (void) changePasswordWithClientPort: (mach_port_t) client_port
+                            replyPort: (mach_port_t) reply_port
+                             identity: (kim_string) identity_string
+                              expired: (kim_boolean) expired
+{
+    NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+                          [NSNumber numberWithInteger:client_port], @"client_port",
+                          [NSNumber numberWithInteger:reply_port], @"reply_port",
+                          [NSString stringWithUTF8String:identity_string], @"identity_string",
+                          [NSNumber numberWithBool:expired], @"expired",
+                          nil];
+    [[NSApp delegate] performSelectorOnMainThread:@selector(changePassword:) 
+                                       withObject:info
+                                    waitUntilDone:NO];
+}
+
+// contains reply_port, old password, new password, verify password
++ (void) didChangePassword: (NSDictionary *) info 
+                     error: (int32_t) error
+{
+    kim_error err = KIM_NO_ERROR;
+    mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+    kim_string old_pw = [[info objectForKey:@"old_password"] UTF8String];
+    kim_string new_pw = [[info objectForKey:@"new_password"] UTF8String];
+    kim_string verify_pw = [[info objectForKey:@"verify_password"] UTF8String];
+
+    err = kim_handle_reply_change_password(reply_port, old_pw, new_pw, verify_pw, error);
+}
+
++ (void) handleErrorWithClientPort: (mach_port_t) client_port
+                         replyPort: (mach_port_t) reply_port
+                          identity: (kim_string) identity_string
+                             error: (kim_error) error
+                           message: (kim_string) message
+                       description: (kim_string) description
+{
+    NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+                          [NSNumber numberWithInteger:client_port], @"client_port",
+                          [NSNumber numberWithInteger:reply_port], @"reply_port",
+                          [NSString stringWithUTF8String:identity_string], @"identity_string",
+                          [NSNumber numberWithUnsignedInt:error], @"error",
+                          [NSString stringWithUTF8String:message], @"message",
+                          [NSString stringWithUTF8String:description], @"description",
+                          nil];
+    [[NSApp delegate] performSelectorOnMainThread:@selector(handleError:) 
+                                       withObject:info
+                                    waitUntilDone:NO];
+    
+}
+
+// contains reply_port
++ (void) didHandleError: (NSDictionary *) info 
+                  error: (int32_t) error
+{
+    kim_error err = KIM_NO_ERROR;
+    mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+
+    err = kim_handle_reply_handle_error(reply_port, error);
+}
+
++ (void) removeClientMatchingPort: (mach_port_t) client_port
+                        replyPort: (mach_port_t) reply_port
+{
+    NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:
+                          [NSNumber numberWithInteger:client_port], @"client_port",
+                          [NSNumber numberWithInteger:reply_port], @"reply_port",
+                          nil];
+    [[NSApp delegate] performSelectorOnMainThread:@selector(removeClient:) 
+                                       withObject:info
+                                    waitUntilDone:NO];
+}
+
+// contains reply_port
++ (void) didRemoveClient: (NSDictionary *)info
+                   error: (int32_t) error
+{
+    kim_error err = KIM_NO_ERROR;
+    mach_port_t reply_port = [[info objectForKey:@"reply_port"] integerValue];
+    if (reply_port) {
+        err = kim_handle_reply_fini(reply_port, error);
+    }
+}
+
+@end
index 01bcd92287d2a2832ea8330050d6fc1d30bfb94e..2251d2773e95ff66c918cb5c18b8a16670321aef 100644 (file)
 #import "BadgedImageView.h"
 #import "Identities.h"
 
-@interface SelectIdentityController : NSWindowController {
+@class IPCClient;
 
+@interface SelectIdentityController : NSWindowController {
+    IPCClient *associatedClient;
+    
     IBOutlet NSObjectController *identitiesController;
     IBOutlet NSArrayController *identityArrayController;
 
     IBOutlet NSObjectController *identityOptionsController;
     IBOutlet NSTextField *nameField;
     IBOutlet NSTextField *realmField;
+    
+    IBOutlet NSButton *ticketOptionsOkButton;
 }
 
+@property (readwrite, retain) IPCClient *associatedClient;
+
 - (IBAction) newIdentity: (id) sender;
 - (IBAction) addToFavorites: (id) sender;
 - (IBAction) removeFromFavorites: (id) sender;
 - (IBAction) select: (id) sender;
 - (IBAction) cancel: (id) sender;
 
-- (int) runWindow;
+- (void)controlTextDidChange:(NSNotification *)aNotification;
+
 - (void) showOptions: (NSString *) contextInfo;
 - (void) didEndSheet: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo;
 - (void) saveOptions;
 
-- (void) reloadData;
-- (void) refreshTable;
-
 - (void) timedRefresh:(NSTimer *)timer;
 
 @end
index e70189d68e36b580636499e7d9fe1af3752a0478..897e0dcc7630fd60ea948b958cac7627dd87ad55 100644 (file)
  */
 
 #import "SelectIdentityController.h"
+#import "IPCClient.h"
 
 #define identities_key_path @"identities"
 
 @implementation SelectIdentityController
 
+@synthesize associatedClient;
+
 // ---------------------------------------------------------------------------
 
 - (id) initWithWindowNibName: (NSString *) windowNibName
 {
     if ((self = [super initWithWindowNibName: windowNibName])) {
-        identities = [[Identities alloc] init];
-        [identities addObserver:self 
-                     forKeyPath:identities_key_path 
-                        options:NSKeyValueObservingOptionNew 
-                        context:@"selectIdentityController"];
-        refreshTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timedRefresh:) userInfo:nil repeats:true];
     }
     
     return self;
@@ -56,7 +53,6 @@
 - (void) dealloc
 {
     [refreshTimer release];
-    [identities removeObserver:self forKeyPath:identities_key_path];
     [identities release];
     [super dealloc];
 }
 
 - (void) awakeFromNib 
 {
-    [headerTextField setStringValue: @"Some header text"];
-    [identityTableView setDoubleAction:@selector(select:)];
-}
+    NSString *key = nil;
+    NSString *message = nil;
 
-// ---------------------------------------------------------------------------
+    // We need to float over the loginwindow and SecurityAgent so use its hardcoded level.
+    [[self window] center];
+    [[self window] setLevel:2003];
 
-- (void) windowDidLoad
-{
-    [explanationTextField setStringValue: @"Some explanation text"];
+    [identityTableView setDoubleAction:@selector(select:)];
+    identities = [[Identities alloc] init];
     [identitiesController setContent:identities];
-}    
+    refreshTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timedRefresh:) userInfo:nil repeats:true];    
+
+    [kerberosIconImageView setBadgePath:associatedClient.path];
+    
+    if ([associatedClient.name isEqualToString:[[NSBundle mainBundle] bundlePath]]) {
+        key = @"SelectIdentityRequest";
+        message = NSLocalizedStringFromTable(key, @"SelectIdentity", NULL);
+    }
+    else {
+        key = @"SelectIdentityApplicationRequest";
+        message = [NSString stringWithFormat:
+                   NSLocalizedStringFromTable(key, @"SelectIdentity", NULL),
+                   associatedClient.name];
+    }
+    [headerTextField setStringValue:message];
+}
 
 // ---------------------------------------------------------------------------
 
+
 - (IBAction) newIdentity: (id) sender
 {
     Identity *newIdentity = [[Identity alloc] init];
@@ -87,7 +99,6 @@
     identityOptionsController.content = newIdentity;
     [newIdentity release];
 
-    NSLog(@"New identity %@", [newIdentity description]);
     [self showOptions:@"new"];
 }
 
 {
     Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
     identityOptionsController.content = nil;
-    NSLog(@"Add %@ to favorites", [anIdentity description]);
+
     anIdentity.favorite = TRUE;
     
     [self saveOptions];
 {
     Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
     identityOptionsController.content = anIdentity;
-    NSLog(@"Remove %@ from favorites", [anIdentity description]);
+
     anIdentity.favorite = FALSE;
     
     [self saveOptions];
 
 - (IBAction) select: (id) sender
 {
+    Identity *selectedIdentity = nil;
+    
     // ignore double-click on header
     if ([sender respondsToSelector:@selector(clickedRow)] && [sender clickedRow] < 0) {
         return;
     }
-    NSLog(@"Select identity: %@", identityArrayController.selectedObjects.description);
+    selectedIdentity = [[identityArrayController selectedObjects] lastObject];
+
+    [associatedClient didSelectIdentity: selectedIdentity.principalString];
 }
 
 // ---------------------------------------------------------------------------
 
 - (IBAction) cancel: (id) sender
 {
-    NSLog(@"Cancel identity selection");
+    [associatedClient didCancel];
 }
 
 // ---------------------------------------------------------------------------
     [NSApp endSheet: identityOptionsWindow];
 }
 
-// ---------------------------------------------------------------------------
-
-- (int) runWindow
+- (void)controlTextDidChange:(NSNotification *)aNotification
 {
-    //[[NSApp delegate] addActiveWindow: [self window]];
-    //NSWindow *window = [self window];
-    
-    //[window center];
-    [self showWindow: self];
-//    [NSApp run];
-//    [self close];
-    
-    //[[NSApp delegate] removeActiveWindow: [self window]];
-    
-    return 0;
+    BOOL valid = [KIMUtilities validatePrincipalWithName:[nameField stringValue] 
+                                                   realm:[realmField stringValue]];
+    [ticketOptionsOkButton setEnabled:valid];
+    [ticketOptionsOkButton setNeedsDisplay];
 }
 
 // ---------------------------------------------------------------------------
             Identity *newIdentity = identityOptionsController.content;
             err = [identities addIdentity:newIdentity];
             
-#warning Add validation to prevent the addition of existing principals and invalid principals
             if (err) {
-                NSLog(@"%s received error %@ trying to add identity %@", _cmd, [NSString stringForLastKIMError:err], [newIdentity description]);
+                NSLog(@"%s received error %@ trying to add identity %@", _cmd, [KIMUtilities stringForLastKIMError:err], [newIdentity description]);
             }
             [self saveOptions];
         }
 
 // ---------------------------------------------------------------------------
 
-- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
-{
-    if ([(NSString *) context isEqualToString:@"selectIdentityController"]) {
-       if ([keyPath isEqualToString:identities_key_path]) {
-//            [self reloadData];
-       }
-    }
-    else {
-        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
-    }
-}
-
-// ---------------------------------------------------------------------------
-
-- (void) reloadData
-{
-    // Preserve selection
-    Identity *selectedIdentity = [[identityArrayController.selectedObjects lastObject] retain];
-    NSUInteger a, b, c;
-    a = [identityArrayController selectionIndex];
-    b = [[identityArrayController content] count];
-    c = NSNotFound;
-    
-    NSLog(@"== updating table == %s", _cmd);
-    identityArrayController.content = identities.identities;
-
-    c = [identityArrayController.content indexOfObject:selectedIdentity];
-    if ([[identityArrayController content] count] >= a)
-        [identityArrayController setSelectionIndex:(c == NSNotFound) ? (a > b) ? b : a : c];
-    
-    [selectedIdentity release];
-}
-
-// ---------------------------------------------------------------------------
-
-- (void) refreshTable
-{
-    [identityArrayController rearrangeObjects];
-}
-
-// ---------------------------------------------------------------------------
-
 - (void) timedRefresh:(NSTimer *)timer
 {
     // refetch data to update expiration times
-    [self refreshTable];
+    [identityArrayController rearrangeObjects];
 }
 
 @end
index ed4e73d1d6256f10c0b3206111bc7030928196a4..b24011d74c75cc65edc80ae3150d626610ec15a7 100644 (file)
@@ -24,6 +24,7 @@
 
 #import "ServerDemux.h"
 #import "kim_selection_hints_private.h"
+#import "KerberosAgentListener.h"
 
 // ---------------------------------------------------------------------------
 
@@ -91,10 +92,11 @@ static int32_t kim_handle_request_init (mach_port_t   in_client_port,
     }
     
     if (!err) {
-#warning Send init message to main thread with 2 ports, name and path
-        NSLog (@"Got init message with pid '%d', name '%s', path '%s'", 
-               pid, name, path);
-        err = kim_handle_reply_init (in_reply_port, 0);
+        // performs selector on main thread
+        [KerberosAgentListener addClientWithPort:in_client_port 
+                                       replyPort:in_reply_port 
+                                            name:name 
+                                            path:path];
     }
     
     k5_ipc_stream_free_string (name);    
@@ -139,14 +141,9 @@ static int32_t kim_handle_request_enter_identity (mach_port_t   in_client_port,
     int32_t err = 0;
     
     if (!err) {
-#warning Send enter identity message to main thread with 2 ports
-        kim_identity identity = NULL;
-        NSLog (@"Got enter identity message");
-        err = kim_identity_create_from_string (&identity, "nobody@TEST-KERBEROS-1.3.1");
-        if (!err) {
-            err = kim_handle_reply_enter_identity (in_reply_port, identity, 0);
-        }
-        kim_identity_free (&identity);
+        // performs selector on main thread
+        [KerberosAgentListener enterIdentityWithClientPort:in_client_port 
+                                                 replyPort:in_reply_port];
     }
     
     return err;   
@@ -162,7 +159,7 @@ int32_t kim_handle_reply_enter_identity (mach_port_t   in_reply_port,
     k5_ipc_stream reply = NULL;
     kim_string identity_string = NULL;
     
-    if (!err) {
+    if (!err && !in_error) {
         err = kim_identity_get_string (in_identity, &identity_string);
     }
     
@@ -198,21 +195,17 @@ static int32_t kim_handle_request_select_identity (mach_port_t   in_client_port,
 {
     int32_t err = 0;
     kim_selection_hints hints = NULL;
-    
+
     if (!err) {
         err = kim_selection_hints_create_from_stream (&hints, 
                                                       in_request_stream);
     }    
     
     if (!err) {
-#warning Send select identity message to main thread with 2 ports
-        kim_identity identity = NULL;
-        NSLog (@"Got select identity message");
-        err = kim_identity_create_from_string (&identity, "nobody@TEST-KERBEROS-1.3.1");
-        if (!err) {
-            err = kim_handle_reply_select_identity (in_reply_port, identity, 0);
-        }
-        kim_identity_free (&identity);
+        // performs selector on main thread
+        [KerberosAgentListener selectIdentityWithClientPort:in_client_port 
+                                                  replyPort:in_reply_port
+                                                      hints:hints];
     }
     
     kim_selection_hints_free (&hints);
@@ -230,7 +223,7 @@ int32_t kim_handle_reply_select_identity (mach_port_t   in_reply_port,
     k5_ipc_stream reply = NULL;
     kim_string identity_string = NULL;
     
-    if (!err) {
+    if (!err && !in_error) {
         err = kim_identity_get_string (in_identity, &identity_string);
     }
     
@@ -302,10 +295,16 @@ static int32_t kim_handle_request_auth_prompt (mach_port_t   in_client_port,
     }    
     
     if (!err) {
-        NSLog (@"Got auth prompt with identity '%s', type '%d', allow_save_reply '%d', hide '%d', title '%s', message '%s', description '%s'",
-               identity_string, type, allow_save_reply, hide_reply, title, message, description);
-        err = kim_handle_reply_auth_prompt (in_reply_port, "ydobon", 0, 0);
-#warning Send auth prompt message to main thread with 2 ports and arguments
+        // performs selector on main thread
+        [KerberosAgentListener promptForAuthWithClientPort:in_client_port
+                                                 replyPort:in_reply_port 
+                                                  identity:identity_string 
+                                                promptType:type 
+                                                 allowSave:allow_save_reply
+                                                 hideReply:hide_reply
+                                                     title:title
+                                                   message:message
+                                               description:description];
     }
     
     k5_ipc_stream_free_string (identity_string);    
@@ -373,13 +372,11 @@ static int32_t kim_handle_request_change_password (mach_port_t   in_client_port,
     }    
     
     if (!err) {
-#warning Send change password message to main thread with 2 ports and arguments
-        NSLog (@"Got change password with identity '%s', old_password_expired '%d'",
-               identity_string, old_password_expired);
-        err = kim_handle_reply_change_password (in_reply_port, 
-                                                "ydobon",
-                                                "foo",
-                                                "bar", 0);
+        // performs selector on main thread
+        [KerberosAgentListener changePasswordWithClientPort:in_client_port
+                                                 replyPort:in_reply_port 
+                                                  identity:identity_string 
+                                                    expired:old_password_expired];
     }
     
     k5_ipc_stream_free_string (identity_string);   
@@ -458,10 +455,13 @@ static int32_t kim_handle_request_handle_error (mach_port_t   in_client_port,
     }    
     
     if (!err) {
-#warning Send handle error message to main thread with 2 ports and arguments
-        NSLog (@"Got handle error with identity '%s', error '%d', message '%s', description '%s'",
-               identity_string, error, message, description);
-        err = kim_handle_reply_handle_error (in_reply_port, 0);
+        // performs selector on main thread
+        [KerberosAgentListener handleErrorWithClientPort:in_client_port
+                                                 replyPort:in_reply_port 
+                                                  identity:identity_string 
+                                                     error:error
+                                                   message:message
+                                               description:description];
     }
     
     k5_ipc_stream_free_string (identity_string);   
@@ -505,12 +505,8 @@ static int32_t kim_handle_request_fini (mach_port_t   in_client_port,
                                         k5_ipc_stream in_request_stream)
 {
     int32_t err = 0;
-    
-    if (!err) {
-#warning Send fini message to main thread with 2 ports
-        NSLog (@"Got fini message");
-        err = kim_handle_reply_fini (in_reply_port, 0);
-    }
+
+    [KerberosAgentListener removeClientMatchingPort:in_client_port replyPort:in_reply_port];
     
     return err;   
 }
@@ -564,7 +560,7 @@ int32_t k5_ipc_server_remove_client (mach_port_t in_client_port)
     if (!err) {
         /* Client exited.  Main thread should check for windows belonging to
          * in_client_port and close any it finds. */
-#warning Insert code to handle client death here
+        [KerberosAgentListener removeClientMatchingPort:in_client_port replyPort:0];
     }
     
     return err;
index dec69409326cf131ac42d3ec3c1b5e0c9ccad586..1e887a00379c99d6d37a827860f56dfc5f20942f 100644 (file)
@@ -1,27 +1,6 @@
 #import <Cocoa/Cocoa.h>
 
-#import "ServerDemux.h"
-#import "k5_mig_server.h"
-#include <Kerberos/kipc_server.h>
-#include <syslog.h>
-
-
-int main(int argc, const char *argv[])
+int main(int argc, char *argv[])
 {
-    int err = 0;
-    NSAutoreleasePool *pool = NULL;
-    
-    openlog (argv[0], LOG_CONS | LOG_PID, LOG_AUTH);
-    syslog (LOG_INFO, "Starting up.");   
-
-    pool = [[NSAutoreleasePool alloc] init];
-
-    [NSApplication sharedApplication];
-    [NSBundle loadNibNamed: @"MainMenu" owner: NSApp];
-    
-    err = k5_ipc_server_listen_loop ();
-    
-    syslog (LOG_NOTICE, "Exiting: %s (%d)", kipc_error_string (err), err);
-    
-    return err;
+    return NSApplicationMain(argc,  (const char **) argv);
 }
index 67d1b41a75774c190620635512b2093bc7b768c3..6b2aad9cd01d1075912b7727d45ef4818ef69e4a 100644 (file)
@@ -2,14 +2,17 @@
 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.02">
        <data>
                <int key="IBDocument.SystemTarget">1050</int>
-               <string key="IBDocument.SystemVersion">9E17</string>
-               <string key="IBDocument.InterfaceBuilderVersion">670</string>
-               <string key="IBDocument.AppKitVersion">949.33</string>
+               <string key="IBDocument.SystemVersion">9F33</string>
+               <string key="IBDocument.InterfaceBuilderVersion">672</string>
+               <string key="IBDocument.AppKitVersion">949.34</string>
                <string key="IBDocument.HIToolboxVersion">352.00</string>
                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <integer value="20"/>
                        <integer value="300157"/>
+                       <integer value="300274"/>
+                       <integer value="300193"/>
+                       <integer value="20"/>
+                       <integer value="300175"/>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
@@ -18,7 +21,7 @@
                <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000842439">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                        <object class="NSCustomObject" id="262677138">
-                               <string key="NSClassName">NSApplication</string>
+                               <string key="NSClassName">AuthenticationController</string>
                        </object>
                        <object class="NSCustomObject" id="553445653">
                                <string key="NSClassName">FirstResponder</string>
                        <object class="NSCustomObject" id="714830734">
                                <string key="NSClassName">NSApplication</string>
                        </object>
+                       <object class="NSObjectController" id="57033499">
+                               <object class="NSMutableArray" key="NSDeclaredKeys">
+                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                       <string>username</string>
+                                       <string>realm</string>
+                                       <string>old_password</string>
+                                       <string>new_password</string>
+                                       <string>verify_password</string>
+                                       <string>title</string>
+                                       <string>message</string>
+                                       <string>description</string>
+                                       <string>allow_save_password</string>
+                                       <string>realm_history</string>
+                                       <string>should_save_password</string>
+                                       <string>isPrincipalValid</string>
+                                       <string>prompt_response</string>
+                                       <string>isPromptValid</string>
+                                       <string>isChangePasswordValid</string>
+                                       <string>save_response</string>
+                                       <string>allow_save</string>
+                                       <string>forwardable</string>
+                                       <string>addressless</string>
+                                       <string>renewable</string>
+                                       <string>valid_lifetime</string>
+                                       <string>renewal_lifetime</string>
+                                       <string>min_renewal_lifetime</string>
+                                       <string>max_renewal_lifetime</string>
+                                       <string>max_valid_lifetime</string>
+                                       <string>min_valid_lifetime</string>
+                               </object>
+                               <bool key="NSEditable">YES</bool>
+                               <object class="_NSManagedProxy" key="_NSManagedProxy"/>
+                       </object>
                        <object class="NSCustomView" id="92892041">
                                <reference key="NSNextResponder"/>
                                <int key="NSvFlags">274</int>
@@ -33,8 +69,8 @@
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <object class="NSTextField" id="498665267">
                                                <reference key="NSNextResponder" ref="92892041"/>
-                                               <int key="NSvFlags">282</int>
-                                               <string key="NSFrame">{{101, 126}, {382, 40}}</string>
+                                               <int key="NSvFlags">264</int>
+                                               <string key="NSFrame">{{101, 126}, {382, 54}}</string>
                                                <reference key="NSSuperview" ref="92892041"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSTextFieldCell" key="NSCell" id="645367368">
                                                                <object class="NSMutableArray" key="NSTableColumns">
                                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                                        <object class="NSTableColumn">
-                                                                               <integer value="0" key="NSIdentifier"/>
+                                                                               <integer value="0" key="NSIdentifier" id="8"/>
                                                                                <double key="NSWidth">1.200000e+01</double>
                                                                                <double key="NSMinWidth">1.000000e+01</double>
                                                                                <double key="NSMaxWidth">1.000000e+03</double>
                                                        <int key="NSPeriodicInterval">25</int>
                                                </object>
                                        </object>
-                                       <object class="NSButton" id="980345926">
+                                       <object class="NSCustomView" id="1001544034">
                                                <reference key="NSNextResponder" ref="92892041"/>
-                                               <int key="NSvFlags">292</int>
-                                               <string key="NSFrame">{{18, 16}, {51, 27}}</string>
+                                               <int key="NSvFlags">268</int>
+                                               <string key="NSFrame">{{20, 126}, {64, 64}}</string>
+                                               <reference key="NSSuperview" ref="92892041"/>
+                                               <string key="NSClassName">BadgedImageView</string>
+                                       </object>
+                                       <object class="NSPopUpButton" id="1016187493">
+                                               <reference key="NSNextResponder" ref="92892041"/>
+                                               <int key="NSvFlags">-2147483356</int>
+                                               <string key="NSFrame">{{20, 17}, {38, 26}}</string>
                                                <reference key="NSSuperview" ref="92892041"/>
                                                <bool key="NSEnabled">YES</bool>
-                                               <object class="NSButtonCell" key="NSCell" id="432989262">
-                                                       <int key="NSCellFlags">67239424</int>
-                                                       <int key="NSCellFlags2">134217728</int>
-                                                       <string key="NSContents"/>
-                                                       <object class="NSFont" key="NSSupport">
-                                                               <string key="NSName">LucidaGrande</string>
-                                                               <double key="NSSize">1.000000e+01</double>
-                                                               <int key="NSfFlags">16</int>
-                                                       </object>
-                                                       <reference key="NSControlView" ref="980345926"/>
-                                                       <int key="NSButtonFlags">-2033434369</int>
-                                                       <int key="NSButtonFlags2">2</int>
-                                                       <object class="NSCustomResource" key="NSNormalImage">
-                                                               <string key="NSClassName">NSImage</string>
-                                                               <string key="NSResourceName">Gear</string>
-                                                       </object>
+                                               <object class="NSPopUpButtonCell" key="NSCell" id="690863814">
+                                                       <int key="NSCellFlags">-2076049856</int>
+                                                       <int key="NSCellFlags2">134219776</int>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="1016187493"/>
+                                                       <int key="NSButtonFlags">-2030944001</int>
+                                                       <int key="NSButtonFlags2">34</int>
                                                        <string key="NSAlternateContents"/>
                                                        <string key="NSKeyEquivalent"/>
                                                        <int key="NSPeriodicDelay">400</int>
                                                        <int key="NSPeriodicInterval">75</int>
+                                                       <object class="NSMenuItem" key="NSMenuItem" id="1020091532">
+                                                               <reference key="NSMenu" ref="594991555"/>
+                                                               <bool key="NSIsHidden">YES</bool>
+                                                               <string key="NSTitle"/>
+                                                               <string key="NSKeyEquiv"/>
+                                                               <int key="NSMnemonicLoc">2147483647</int>
+                                                               <int key="NSState">1</int>
+                                                               <object class="NSCustomResource" key="NSImage">
+                                                                       <string key="NSClassName">NSImage</string>
+                                                                       <string key="NSResourceName">NSActionTemplate</string>
+                                                               </object>
+                                                               <object class="NSCustomResource" key="NSOnImage" id="530784694">
+                                                                       <string key="NSClassName">NSImage</string>
+                                                                       <string key="NSResourceName">NSMenuCheckmark</string>
+                                                               </object>
+                                                               <object class="NSCustomResource" key="NSMixedImage" id="790891323">
+                                                                       <string key="NSClassName">NSImage</string>
+                                                                       <string key="NSResourceName">NSMenuMixedState</string>
+                                                               </object>
+                                                               <string key="NSAction">_popUpItemAction:</string>
+                                                               <reference key="NSTarget" ref="690863814"/>
+                                                       </object>
+                                                       <bool key="NSMenuItemRespectAlignment">YES</bool>
+                                                       <object class="NSMenu" key="NSMenu" id="594991555">
+                                                               <string key="NSTitle">OtherViews</string>
+                                                               <object class="NSMutableArray" key="NSMenuItems">
+                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                       <reference ref="1020091532"/>
+                                                                       <object class="NSMenuItem" id="452996455">
+                                                                               <reference key="NSMenu" ref="594991555"/>
+                                                                               <string type="base64-UTF8" key="NSTitle">VGlja2V0IE9wdGlvbnPigKY</string>
+                                                                               <string key="NSKeyEquiv"/>
+                                                                               <int key="NSMnemonicLoc">2147483647</int>
+                                                                               <reference key="NSOnImage" ref="530784694"/>
+                                                                               <reference key="NSMixedImage" ref="790891323"/>
+                                                                               <string key="NSAction">_popUpItemAction:</string>
+                                                                               <reference key="NSTarget" ref="690863814"/>
+                                                                       </object>
+                                                                       <object class="NSMenuItem" id="917012637">
+                                                                               <reference key="NSMenu" ref="594991555"/>
+                                                                               <bool key="NSIsDisabled">YES</bool>
+                                                                               <bool key="NSIsSeparator">YES</bool>
+                                                                               <string key="NSTitle"/>
+                                                                               <string key="NSKeyEquiv"/>
+                                                                               <int key="NSMnemonicLoc">2147483647</int>
+                                                                               <reference key="NSOnImage" ref="530784694"/>
+                                                                               <reference key="NSMixedImage" ref="790891323"/>
+                                                                               <string key="NSAction">_popUpItemAction:</string>
+                                                                               <reference key="NSTarget" ref="690863814"/>
+                                                                       </object>
+                                                                       <object class="NSMenuItem" id="8728780">
+                                                                               <reference key="NSMenu" ref="594991555"/>
+                                                                               <string type="base64-UTF8" key="NSTitle">QWJvdXQgS2VyYmVyb3PigKY</string>
+                                                                               <string key="NSKeyEquiv"/>
+                                                                               <int key="NSMnemonicLoc">2147483647</int>
+                                                                               <reference key="NSOnImage" ref="530784694"/>
+                                                                               <reference key="NSMixedImage" ref="790891323"/>
+                                                                               <string key="NSAction">_popUpItemAction:</string>
+                                                                               <reference key="NSTarget" ref="690863814"/>
+                                                                       </object>
+                                                               </object>
+                                                       </object>
+                                                       <bool key="NSPullDown">YES</bool>
+                                                       <int key="NSPreferredEdge">1</int>
+                                                       <bool key="NSUsesItemFromMenu">YES</bool>
+                                                       <bool key="NSAltersState">YES</bool>
+                                                       <int key="NSArrowPosition">2</int>
                                                </object>
                                        </object>
-                                       <object class="NSCustomView" id="1001544034">
-                                               <reference key="NSNextResponder" ref="92892041"/>
-                                               <int key="NSvFlags">268</int>
-                                               <string key="NSFrame">{{20, 126}, {64, 64}}</string>
-                                               <reference key="NSSuperview" ref="92892041"/>
-                                               <string key="NSClassName">BadgedImageView</string>
-                                       </object>
                                </object>
                                <string key="NSFrameSize">{500, 210}</string>
                                <reference key="NSSuperview"/>
                                <string key="NSClassName">NSView</string>
                        </object>
                        <object class="NSCustomView" id="866582848">
-                               <nil key="NSNextResponder"/>
+                               <reference key="NSNextResponder"/>
                                <int key="NSvFlags">274</int>
                                <object class="NSMutableArray" key="NSSubviews">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <object class="NSTextField" id="225475172">
                                                <reference key="NSNextResponder" ref="866582848"/>
-                                               <int key="NSvFlags">290</int>
+                                               <int key="NSvFlags">266</int>
                                                <string key="NSFrame">{{104, 82}, {376, 22}}</string>
                                                <reference key="NSSuperview" ref="866582848"/>
                                                <bool key="NSEnabled">YES</bool>
                                        </object>
                                        <object class="NSTextField" id="464070473">
                                                <reference key="NSNextResponder" ref="866582848"/>
-                                               <int key="NSvFlags">282</int>
+                                               <int key="NSvFlags">266</int>
                                                <string key="NSFrame">{{101, 126}, {382, 41}}</string>
                                                <reference key="NSSuperview" ref="866582848"/>
                                                <bool key="NSEnabled">YES</bool>
                                        </object>
                                        <object class="NSTextField" id="427167925">
                                                <reference key="NSNextResponder" ref="866582848"/>
-                                               <int key="NSvFlags">292</int>
+                                               <int key="NSvFlags">268</int>
                                                <string key="NSFrame">{{17, 84}, {80, 17}}</string>
                                                <reference key="NSSuperview" ref="866582848"/>
                                                <bool key="NSEnabled">YES</bool>
                                        </object>
                                        <object class="NSButton" id="645528597">
                                                <reference key="NSNextResponder" ref="866582848"/>
-                                               <int key="NSvFlags">294</int>
+                                               <int key="NSvFlags">290</int>
                                                <string key="NSFrame">{{102, 58}, {380, 18}}</string>
                                                <reference key="NSSuperview" ref="866582848"/>
                                                <bool key="NSEnabled">YES</bool>
                                                        <reference key="NSControlView" ref="645528597"/>
                                                        <int key="NSButtonFlags">1211912703</int>
                                                        <int key="NSButtonFlags2">130</int>
-                                                       <object class="NSCustomResource" key="NSNormalImage">
+                                                       <object class="NSCustomResource" key="NSNormalImage" id="375544883">
                                                                <string key="NSClassName">NSImage</string>
                                                                <string key="NSResourceName">NSSwitch</string>
                                                        </object>
-                                                       <object class="NSButtonImageSource" key="NSAlternateImage">
+                                                       <object class="NSButtonImageSource" key="NSAlternateImage" id="875913500">
                                                                <string key="NSImageName">NSSwitch</string>
                                                        </object>
                                                        <string key="NSAlternateContents"/>
                                        </object>
                                </object>
                                <string key="NSFrameSize">{500, 210}</string>
+                               <reference key="NSSuperview"/>
                                <string key="NSClassName">NSView</string>
                        </object>
                        <object class="NSCustomView" id="898191415">
-                               <nil key="NSNextResponder"/>
+                               <reference key="NSNextResponder"/>
                                <int key="NSvFlags">274</int>
                                <object class="NSMutableArray" key="NSSubviews">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        </object>
                                </object>
                                <string key="NSFrameSize">{500, 210}</string>
+                               <reference key="NSSuperview"/>
                                <string key="NSClassName">NSView</string>
                        </object>
                        <object class="NSCustomView" id="60326189">
-                               <nil key="NSNextResponder"/>
-                               <int key="NSvFlags">268</int>
+                               <reference key="NSNextResponder"/>
+                               <int key="NSvFlags">286</int>
                                <object class="NSMutableArray" key="NSSubviews">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <object class="NSCustomView" id="1061510403">
                                                <reference key="NSNextResponder" ref="60326189"/>
                                                <int key="NSvFlags">268</int>
-                                               <string key="NSFrame">{{20, 126}, {64, 64}}</string>
+                                               <string key="NSFrame">{{20, 146}, {64, 64}}</string>
                                                <reference key="NSSuperview" ref="60326189"/>
                                                <string key="NSClassName">BadgedImageView</string>
                                        </object>
-                                       <object class="NSButton" id="655431516">
-                                               <reference key="NSNextResponder" ref="60326189"/>
-                                               <int key="NSvFlags">289</int>
-                                               <string key="NSFrame">{{404, 12}, {82, 32}}</string>
-                                               <reference key="NSSuperview" ref="60326189"/>
-                                               <bool key="NSEnabled">YES</bool>
-                                               <object class="NSButtonCell" key="NSCell" id="544381563">
-                                                       <int key="NSCellFlags">67239424</int>
-                                                       <int key="NSCellFlags2">134217728</int>
-                                                       <string key="NSContents">Yes</string>
-                                                       <reference key="NSSupport" ref="604532625"/>
-                                                       <reference key="NSControlView" ref="655431516"/>
-                                                       <int key="NSButtonFlags">-2038284033</int>
-                                                       <int key="NSButtonFlags2">1</int>
-                                                       <reference key="NSAlternateImage" ref="604532625"/>
-                                                       <string key="NSAlternateContents"/>
-                                                       <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
-                                                       <int key="NSPeriodicDelay">200</int>
-                                                       <int key="NSPeriodicInterval">25</int>
-                                               </object>
-                                       </object>
-                                       <object class="NSButton" id="331992464">
-                                               <reference key="NSNextResponder" ref="60326189"/>
-                                               <int key="NSvFlags">289</int>
-                                               <string key="NSFrame">{{322, 12}, {82, 32}}</string>
-                                               <reference key="NSSuperview" ref="60326189"/>
-                                               <bool key="NSEnabled">YES</bool>
-                                               <object class="NSButtonCell" key="NSCell" id="418342109">
-                                                       <int key="NSCellFlags">67239424</int>
-                                                       <int key="NSCellFlags2">134217728</int>
-                                                       <string key="NSContents">No</string>
-                                                       <reference key="NSSupport" ref="604532625"/>
-                                                       <reference key="NSControlView" ref="331992464"/>
-                                                       <int key="NSButtonFlags">-2038284033</int>
-                                                       <int key="NSButtonFlags2">129</int>
-                                                       <string key="NSAlternateContents"/>
-                                                       <string key="NSKeyEquivalent"/>
-                                                       <int key="NSPeriodicDelay">200</int>
-                                                       <int key="NSPeriodicInterval">25</int>
-                                               </object>
-                                       </object>
                                        <object class="NSTextField" id="299103498">
                                                <reference key="NSNextResponder" ref="60326189"/>
                                                <int key="NSvFlags">274</int>
-                                               <string key="NSFrame">{{101, 60}, {382, 76}}</string>
+                                               <string key="NSFrame">{{101, 146}, {382, 19}}</string>
                                                <reference key="NSSuperview" ref="60326189"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSTextFieldCell" key="NSCell" id="627916817">
                                        <object class="NSTextField" id="1064523274">
                                                <reference key="NSNextResponder" ref="60326189"/>
                                                <int key="NSvFlags">266</int>
-                                               <string key="NSFrame">{{101, 144}, {382, 17}}</string>
+                                               <string key="NSFrame">{{101, 173}, {382, 17}}</string>
                                                <reference key="NSSuperview" ref="60326189"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSTextFieldCell" key="NSCell" id="246958577">
                                                        <reference key="NSTextColor" ref="883746258"/>
                                                </object>
                                        </object>
+                                       <object class="NSTextField" id="441176528">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">290</int>
+                                               <string key="NSFrame">{{161, 116}, {319, 22}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSTextFieldCell" key="NSCell" id="453153516">
+                                                       <int key="NSCellFlags">-1804468671</int>
+                                                       <int key="NSCellFlags2">272630784</int>
+                                                       <string key="NSContents"/>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="441176528"/>
+                                                       <bool key="NSDrawsBackground">YES</bool>
+                                                       <reference key="NSBackgroundColor" ref="490771653"/>
+                                                       <reference key="NSTextColor" ref="955928389"/>
+                                               </object>
+                                       </object>
+                                       <object class="NSTextField" id="962648515">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">292</int>
+                                               <string key="NSFrame">{{62, 118}, {94, 17}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSTextFieldCell" key="NSCell" id="678162638">
+                                                       <int key="NSCellFlags">68288064</int>
+                                                       <int key="NSCellFlags2">71304192</int>
+                                                       <string key="NSContents">Old Password:</string>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="962648515"/>
+                                                       <reference key="NSBackgroundColor" ref="876444531"/>
+                                                       <reference key="NSTextColor" ref="883746258"/>
+                                               </object>
+                                       </object>
+                                       <object class="NSTextField" id="29184344">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">292</int>
+                                               <string key="NSFrame">{{57, 90}, {99, 17}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSTextFieldCell" key="NSCell" id="698626122">
+                                                       <int key="NSCellFlags">68288064</int>
+                                                       <int key="NSCellFlags2">71304192</int>
+                                                       <string key="NSContents">New Password:</string>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="29184344"/>
+                                                       <reference key="NSBackgroundColor" ref="876444531"/>
+                                                       <reference key="NSTextColor" ref="883746258"/>
+                                               </object>
+                                       </object>
+                                       <object class="NSTextField" id="255611063">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">292</int>
+                                               <string key="NSFrame">{{17, 62}, {139, 17}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSTextFieldCell" key="NSCell" id="742145870">
+                                                       <int key="NSCellFlags">68288064</int>
+                                                       <int key="NSCellFlags2">71304192</int>
+                                                       <string key="NSContents">Verify New Password:</string>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="255611063"/>
+                                                       <reference key="NSBackgroundColor" ref="876444531"/>
+                                                       <reference key="NSTextColor" ref="883746258"/>
+                                               </object>
+                                       </object>
+                                       <object class="NSTextField" id="158061">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">290</int>
+                                               <string key="NSFrame">{{161, 88}, {319, 22}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSTextFieldCell" key="NSCell" id="899060580">
+                                                       <int key="NSCellFlags">-1804468671</int>
+                                                       <int key="NSCellFlags2">272630784</int>
+                                                       <string key="NSContents"/>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="158061"/>
+                                                       <bool key="NSDrawsBackground">YES</bool>
+                                                       <reference key="NSBackgroundColor" ref="490771653"/>
+                                                       <reference key="NSTextColor" ref="955928389"/>
+                                               </object>
+                                       </object>
+                                       <object class="NSTextField" id="576133689">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">290</int>
+                                               <string key="NSFrame">{{161, 60}, {319, 22}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSTextFieldCell" key="NSCell" id="696656312">
+                                                       <int key="NSCellFlags">-1804468671</int>
+                                                       <int key="NSCellFlags2">272630784</int>
+                                                       <string key="NSContents"/>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="576133689"/>
+                                                       <bool key="NSDrawsBackground">YES</bool>
+                                                       <reference key="NSBackgroundColor" ref="490771653"/>
+                                                       <reference key="NSTextColor" ref="955928389"/>
+                                               </object>
+                                       </object>
+                                       <object class="NSButton" id="105446308">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">289</int>
+                                               <string key="NSFrame">{{388, 12}, {98, 32}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSButtonCell" key="NSCell" id="676106072">
+                                                       <int key="NSCellFlags">67239424</int>
+                                                       <int key="NSCellFlags2">134217728</int>
+                                                       <string key="NSContents">Continue</string>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="105446308"/>
+                                                       <int key="NSButtonFlags">-2038284033</int>
+                                                       <int key="NSButtonFlags2">1</int>
+                                                       <reference key="NSAlternateImage" ref="604532625"/>
+                                                       <string key="NSAlternateContents"/>
+                                                       <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+                                                       <int key="NSPeriodicDelay">200</int>
+                                                       <int key="NSPeriodicInterval">25</int>
+                                               </object>
+                                       </object>
+                                       <object class="NSButton" id="288995352">
+                                               <reference key="NSNextResponder" ref="60326189"/>
+                                               <int key="NSvFlags">289</int>
+                                               <string key="NSFrame">{{295, 12}, {93, 32}}</string>
+                                               <reference key="NSSuperview" ref="60326189"/>
+                                               <bool key="NSEnabled">YES</bool>
+                                               <object class="NSButtonCell" key="NSCell" id="613041994">
+                                                       <int key="NSCellFlags">67239424</int>
+                                                       <int key="NSCellFlags2">134217728</int>
+                                                       <string key="NSContents">Cancel</string>
+                                                       <reference key="NSSupport" ref="604532625"/>
+                                                       <reference key="NSControlView" ref="288995352"/>
+                                                       <int key="NSButtonFlags">-2038284033</int>
+                                                       <int key="NSButtonFlags2">1</int>
+                                                       <reference key="NSAlternateImage" ref="604532625"/>
+                                                       <string key="NSAlternateContents"/>
+                                                       <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+                                                       <int key="NSPeriodicDelay">200</int>
+                                                       <int key="NSPeriodicInterval">25</int>
+                                               </object>
+                                       </object>
                                </object>
-                               <string key="NSFrameSize">{500, 210}</string>
+                               <string key="NSFrameSize">{500, 230}</string>
+                               <reference key="NSSuperview"/>
                                <string key="NSClassName">NSView</string>
                        </object>
                        <object class="NSCustomView" id="861423802">
                                                        <int key="NSPeriodicInterval">25</int>
                                                </object>
                                        </object>
-                                       <object class="NSButton" id="424661587">
-                                               <reference key="NSNextResponder" ref="861423802"/>
-                                               <int key="NSvFlags">268</int>
-                                               <string key="NSFrame">{{314, 12}, {90, 32}}</string>
-                                               <reference key="NSSuperview" ref="861423802"/>
-                                               <bool key="NSEnabled">YES</bool>
-                                               <object class="NSButtonCell" key="NSCell" id="517774830">
-                                                       <int key="NSCellFlags">67239424</int>
-                                                       <int key="NSCellFlags2">134217728</int>
-                                                       <string key="NSContents">Cancel</string>
-                                                       <reference key="NSSupport" ref="604532625"/>
-                                                       <reference key="NSControlView" ref="424661587"/>
-                                                       <int key="NSButtonFlags">-2038284033</int>
-                                                       <int key="NSButtonFlags2">129</int>
-                                                       <string key="NSAlternateContents"/>
-                                                       <string key="NSKeyEquivalent"/>
-                                                       <int key="NSPeriodicDelay">200</int>
-                                                       <int key="NSPeriodicInterval">25</int>
-                                               </object>
-                                       </object>
                                </object>
                                <string key="NSFrameSize">{500, 210}</string>
                                <string key="NSClassName">NSView</string>
                        </object>
                        <object class="NSWindowTemplate" id="236877202">
-                               <int key="NSWindowStyleMask">13</int>
+                               <int key="NSWindowStyleMask">5</int>
                                <int key="NSWindowBacking">2</int>
                                <string key="NSWindowRect">{{378, 236}, {500, 210}}</string>
                                <int key="NSWTFlags">1886912512</int>
                                <string key="NSMaxSize">{600, 422}</string>
                                <string key="NSFrameAutosaveName"/>
                        </object>
-                       <object class="NSMenu" id="161772700">
-                               <string key="NSTitle">Menu</string>
-                               <object class="NSMutableArray" key="NSMenuItems">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                       <object class="NSMenuItem" id="1064438280">
-                                               <reference key="NSMenu" ref="161772700"/>
-                                               <string type="base64-UTF8" key="NSTitle">VGlja2V0IE9wdGlvbnPigKY</string>
-                                               <string key="NSKeyEquiv"/>
-                                               <int key="NSKeyEquivModMask">1048576</int>
-                                               <int key="NSMnemonicLoc">2147483647</int>
-                                               <object class="NSCustomResource" key="NSOnImage" id="947702371">
-                                                       <string key="NSClassName">NSImage</string>
-                                                       <string key="NSResourceName">NSMenuCheckmark</string>
-                                               </object>
-                                               <object class="NSCustomResource" key="NSMixedImage" id="868037723">
-                                                       <string key="NSClassName">NSImage</string>
-                                                       <string key="NSResourceName">NSMenuMixedState</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMenuItem" id="466925177">
-                                               <reference key="NSMenu" ref="161772700"/>
-                                               <string type="base64-UTF8" key="NSTitle">Q2hhbmdlIFBhc3N3b3Jk4oCmA</string>
-                                               <string key="NSKeyEquiv"/>
-                                               <int key="NSKeyEquivModMask">1048576</int>
-                                               <int key="NSMnemonicLoc">2147483647</int>
-                                               <reference key="NSOnImage" ref="947702371"/>
-                                               <reference key="NSMixedImage" ref="868037723"/>
-                                       </object>
-                                       <object class="NSMenuItem" id="278140056">
-                                               <reference key="NSMenu" ref="161772700"/>
-                                               <bool key="NSIsDisabled">YES</bool>
-                                               <bool key="NSIsSeparator">YES</bool>
-                                               <string key="NSTitle"/>
-                                               <string key="NSKeyEquiv"/>
-                                               <int key="NSKeyEquivModMask">1048576</int>
-                                               <int key="NSMnemonicLoc">2147483647</int>
-                                               <reference key="NSOnImage" ref="947702371"/>
-                                               <reference key="NSMixedImage" ref="868037723"/>
-                                       </object>
-                                       <object class="NSMenuItem" id="738897734">
-                                               <reference key="NSMenu" ref="161772700"/>
-                                               <string key="NSTitle">About Kerberos...</string>
-                                               <string key="NSKeyEquiv"/>
-                                               <int key="NSKeyEquivModMask">1048576</int>
-                                               <int key="NSMnemonicLoc">2147483647</int>
-                                               <reference key="NSOnImage" ref="947702371"/>
-                                               <reference key="NSMixedImage" ref="868037723"/>
-                                       </object>
-                               </object>
-                               <string key="NSName"/>
+                       <object class="NSWindowTemplate" id="102029948">
+                               <int key="NSWindowStyleMask">1</int>
+                               <int key="NSWindowBacking">2</int>
+                               <string key="NSWindowRect">{{21, 50}, {430, 283}}</string>
+                               <int key="NSWTFlags">1886912512</int>
+                               <string key="NSWindowTitle">Kerberos Ticket Options</string>
+                               <string key="NSWindowClass">NSWindow</string>
+                               <object class="NSMutableString" key="NSViewClass">
+                                       <characters key="NS.bytes">View</characters>
+                               </object>
+                               <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+                               <string key="NSWindowContentMinSize">{430, 283}</string>
+                               <object class="NSView" key="NSWindowView" id="389112266">
+                                       <nil key="NSNextResponder"/>
+                                       <int key="NSvFlags">256</int>
+                                       <object class="NSMutableArray" key="NSSubviews">
+                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                               <object class="NSSlider" id="486016405">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <string key="NSFrame">{{38, 214}, {374, 25}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSSliderCell" key="NSCell" id="624979516">
+                                                               <int key="NSCellFlags">67501824</int>
+                                                               <int key="NSCellFlags2">0</int>
+                                                               <object class="NSMutableString" key="NSContents">
+                                                                       <characters key="NS.bytes"/>
+                                                               </object>
+                                                               <object class="NSFont" key="NSSupport" id="784855171">
+                                                                       <string key="NSName">Helvetica</string>
+                                                                       <double key="NSSize">1.200000e+01</double>
+                                                                       <int key="NSfFlags">16</int>
+                                                               </object>
+                                                               <reference key="NSControlView" ref="486016405"/>
+                                                               <double key="NSMaxValue">1.000000e+02</double>
+                                                               <double key="NSMinValue">0.000000e+00</double>
+                                                               <double key="NSValue">0.000000e+00</double>
+                                                               <double key="NSAltIncValue">0.000000e+00</double>
+                                                               <int key="NSNumberOfTickMarks">11</int>
+                                                               <int key="NSTickMarkPosition">0</int>
+                                                               <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+                                                               <bool key="NSVertical">NO</bool>
+                                                       </object>
+                                               </object>
+                                               <object class="NSTextField" id="318596865">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{17, 246}, {396, 17}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="254246330">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">4194304</int>
+                                                               <string key="NSContents">Get tickets that are valid for:</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="318596865"/>
+                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                       </object>
+                                               </object>
+                                               <object class="NSTextField" id="523287828">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <string key="NSFrame">{{37, 192}, {376, 14}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="175033886">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">4325376</int>
+                                                               <string key="NSContents">10 hours</string>
+                                                               <reference key="NSSupport" ref="26"/>
+                                                               <reference key="NSControlView" ref="523287828"/>
+                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                       </object>
+                                               </object>
+                                               <object class="NSSlider" id="594182616">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <string key="NSFrame">{{37, 82}, {375, 25}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSSliderCell" key="NSCell" id="734223932">
+                                                               <int key="NSCellFlags">67501824</int>
+                                                               <int key="NSCellFlags2">0</int>
+                                                               <object class="NSMutableString" key="NSContents">
+                                                                       <characters key="NS.bytes"/>
+                                                               </object>
+                                                               <reference key="NSSupport" ref="784855171"/>
+                                                               <reference key="NSControlView" ref="594182616"/>
+                                                               <double key="NSMaxValue">1.000000e+05</double>
+                                                               <double key="NSMinValue">0.000000e+00</double>
+                                                               <double key="NSValue">0.000000e+00</double>
+                                                               <double key="NSAltIncValue">0.000000e+00</double>
+                                                               <int key="NSNumberOfTickMarks">11</int>
+                                                               <int key="NSTickMarkPosition">0</int>
+                                                               <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+                                                               <bool key="NSVertical">NO</bool>
+                                                       </object>
+                                               </object>
+                                               <object class="NSButton" id="198913348">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{18, 134}, {394, 18}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="452074655">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">0</int>
+                                                               <string key="NSContents">Get tickets without IP addresses (NAT mode)</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="198913348"/>
+                                                               <int key="NSButtonFlags">1211912703</int>
+                                                               <int key="NSButtonFlags2">2</int>
+                                                               <reference key="NSNormalImage" ref="375544883"/>
+                                                               <reference key="NSAlternateImage" ref="875913500"/>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string key="NSKeyEquivalent"/>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                               </object>
+                                               <object class="NSButton" id="964499406">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{18, 156}, {394, 18}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="873232825">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">0</int>
+                                                               <string key="NSContents">Get tickets that can be forwarded to other computers</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="964499406"/>
+                                                               <int key="NSButtonFlags">1211912703</int>
+                                                               <int key="NSButtonFlags2">2</int>
+                                                               <reference key="NSNormalImage" ref="375544883"/>
+                                                               <reference key="NSAlternateImage" ref="875913500"/>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string key="NSKeyEquivalent"/>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                               </object>
+                                               <object class="NSButton" id="368169141">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{18, 112}, {394, 18}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="535311584">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">0</int>
+                                                               <string key="NSContents">Get tickets that can be renewed for:</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="368169141"/>
+                                                               <int key="NSButtonFlags">1211912703</int>
+                                                               <int key="NSButtonFlags2">2</int>
+                                                               <reference key="NSNormalImage" ref="375544883"/>
+                                                               <reference key="NSAlternateImage" ref="875913500"/>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string key="NSKeyEquivalent"/>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                               </object>
+                                               <object class="NSTextField" id="332956369">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <string key="NSFrame">{{36, 60}, {377, 14}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="931635862">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">4325376</int>
+                                                               <string key="NSContents">7 days</string>
+                                                               <reference key="NSSupport" ref="26"/>
+                                                               <reference key="NSControlView" ref="332956369"/>
+                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                       </object>
+                                               </object>
+                                               <object class="NSButton" id="681646907">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">256</int>
+                                                       <string key="NSFrame">{{334, 12}, {82, 32}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="88378654">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">OK</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="681646907"/>
+                                                               <int key="NSButtonFlags">-2038284033</int>
+                                                               <int key="NSButtonFlags2">1</int>
+                                                               <reference key="NSAlternateImage" ref="604532625"/>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                               </object>
+                                               <object class="NSButton" id="284195308">
+                                                       <reference key="NSNextResponder" ref="389112266"/>
+                                                       <int key="NSvFlags">256</int>
+                                                       <string key="NSFrame">{{252, 12}, {82, 32}}</string>
+                                                       <reference key="NSSuperview" ref="389112266"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="12024755">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">Cancel</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="284195308"/>
+                                                               <int key="NSButtonFlags">-2038284033</int>
+                                                               <int key="NSButtonFlags2">1</int>
+                                                               <reference key="NSAlternateImage" ref="604532625"/>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                               </object>
+                                       </object>
+                                       <string key="NSFrameSize">{430, 283}</string>
+                               </object>
+                               <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+                               <string key="NSMinSize">{430, 305}</string>
+                               <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
                        </object>
                </object>
                <object class="IBObjectContainer" key="IBDocument.Objects">
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">menu</string>
-                                               <reference key="source" ref="980345926"/>
-                                               <reference key="destination" ref="161772700"/>
+                                               <string key="label">identityView</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="92892041"/>
                                        </object>
-                                       <int key="connectionID">300259</int>
+                                       <int key="connectionID">300295</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">menu</string>
-                                               <reference key="source" ref="432989262"/>
-                                               <reference key="destination" ref="161772700"/>
+                                               <string key="label">passwordView</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="866582848"/>
                                        </object>
-                                       <int key="connectionID">300261</int>
+                                       <int key="connectionID">300296</int>
                                </object>
-                       </object>
-                       <object class="IBMutableOrderedSet" key="objectRecords">
-                               <object class="NSArray" key="orderedObjects">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">0</int>
-                                               <object class="NSArray" key="object" id="0">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                               </object>
-                                               <reference key="children" ref="1000842439"/>
-                                               <nil key="parent"/>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">samView</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="898191415"/>
                                        </object>
-                                       <object class="IBObjectRecord">
+                                       <int key="connectionID">300297</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">expiredPasswordView</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="60326189"/>
+                                       </object>
+                                       <int key="connectionID">300298</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.message</string>
+                                               <reference key="source" ref="464070473"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="464070473"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.message</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.message</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300301</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.message</string>
+                                               <reference key="source" ref="1024084044"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="1024084044"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.message</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.message</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300303</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.description</string>
+                                               <reference key="source" ref="860880966"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="860880966"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.description</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.description</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300304</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">glueController</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="57033499"/>
+                                       </object>
+                                       <int key="connectionID">300326</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">window</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="236877202"/>
+                                       </object>
+                                       <int key="connectionID">300339</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">contentValues: selection.realm_history</string>
+                                               <reference key="source" ref="529434335"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="756729013">
+                                                       <reference key="NSSource" ref="529434335"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">contentValues: selection.realm_history</string>
+                                                       <string key="NSBinding">contentValues</string>
+                                                       <string key="NSKeyPath">selection.realm_history</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300342</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.message</string>
+                                               <reference key="source" ref="498665267"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="498665267"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.message</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.message</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300344</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">enterIdentity:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="207178735"/>
+                                       </object>
+                                       <int key="connectionID">300347</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancel:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="523041784"/>
+                                       </object>
+                                       <int key="connectionID">300348</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.username</string>
+                                               <reference key="source" ref="409092758"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="409092758"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.username</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.username</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+                                                               <integer value="1" key="NS.object.0" id="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300349</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.realm</string>
+                                               <reference key="source" ref="529434335"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="529434335"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.realm</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.realm</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+                                                               <reference key="NS.object.0" ref="9"/>
+                                                       </object>
+                                                       <reference key="NSPreviousConnector" ref="756729013"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300350</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: selection.isPrincipalValid</string>
+                                               <reference key="source" ref="207178735"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="207178735"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">enabled: selection.isPrincipalValid</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">selection.isPrincipalValid</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300351</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">usernameField</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="409092758"/>
+                                       </object>
+                                       <int key="connectionID">300352</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">enterBadge</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="1001544034"/>
+                                       </object>
+                                       <int key="connectionID">300353</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">passwordField</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="225475172"/>
+                                       </object>
+                                       <int key="connectionID">300354</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancel:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="494687042"/>
+                                       </object>
+                                       <int key="connectionID">300359</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">passwordBadge</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="775546934"/>
+                                       </object>
+                                       <int key="connectionID">300360</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">answerAuthPrompt:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="133507311"/>
+                                       </object>
+                                       <int key="connectionID">300361</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">rememberPasswordInKeychainCheckBox</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="645528597"/>
+                                       </object>
+                                       <int key="connectionID">300364</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: selection.isPromptValid</string>
+                                               <reference key="source" ref="133507311"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="133507311"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">enabled: selection.isPromptValid</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">selection.isPromptValid</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300365</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.prompt_response</string>
+                                               <reference key="source" ref="225475172"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="225475172"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.prompt_response</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.prompt_response</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+                                                               <reference key="NS.object.0" ref="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300368</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">samBadge</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="944021079"/>
+                                       </object>
+                                       <int key="connectionID">300369</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">samPromptField</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="270897371"/>
+                                       </object>
+                                       <int key="connectionID">300370</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">answerAuthPrompt:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="499090485"/>
+                                       </object>
+                                       <int key="connectionID">300371</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancel:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="907069022"/>
+                                       </object>
+                                       <int key="connectionID">300372</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.title</string>
+                                               <reference key="source" ref="1041175973"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="1041175973"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.title</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.title</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300373</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.message</string>
+                                               <reference key="source" ref="1018438662"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="1018438662"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.message</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.message</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300374</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.description</string>
+                                               <reference key="source" ref="798767897"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="798767897"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.description</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.description</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300375</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.prompt_response</string>
+                                               <reference key="source" ref="270897371"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="270897371"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.prompt_response</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.prompt_response</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+                                                               <reference key="NS.object.0" ref="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300377</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: selection.isPromptValid</string>
+                                               <reference key="source" ref="499090485"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="499090485"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">enabled: selection.isPromptValid</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">selection.isPromptValid</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300378</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">errorView</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="861423802"/>
+                                       </object>
+                                       <int key="connectionID">300379</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">errorBadge</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="41252477"/>
+                                       </object>
+                                       <int key="connectionID">300380</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">showedError:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="432972501"/>
+                                       </object>
+                                       <int key="connectionID">300381</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">changePasswordView</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="60326189"/>
+                                       </object>
+                                       <int key="connectionID">300382</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">changePasswordBadge</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="1061510403"/>
+                                       </object>
+                                       <int key="connectionID">300383</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">changePassword:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="105446308"/>
+                                       </object>
+                                       <int key="connectionID">300403</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancel:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="288995352"/>
+                                       </object>
+                                       <int key="connectionID">300404</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.message</string>
+                                               <reference key="source" ref="1064523274"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="1064523274"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.message</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.message</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300405</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.description</string>
+                                               <reference key="source" ref="299103498"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="299103498"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.description</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.description</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300406</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">oldPasswordField</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="441176528"/>
+                                       </object>
+                                       <int key="connectionID">300407</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nextKeyView</string>
+                                               <reference key="source" ref="441176528"/>
+                                               <reference key="destination" ref="158061"/>
+                                       </object>
+                                       <int key="connectionID">300408</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nextKeyView</string>
+                                               <reference key="source" ref="158061"/>
+                                               <reference key="destination" ref="576133689"/>
+                                       </object>
+                                       <int key="connectionID">300409</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nextKeyView</string>
+                                               <reference key="source" ref="576133689"/>
+                                               <reference key="destination" ref="441176528"/>
+                                       </object>
+                                       <int key="connectionID">300410</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: selection.isChangePasswordValid</string>
+                                               <reference key="source" ref="105446308"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="105446308"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">enabled: selection.isChangePasswordValid</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">selection.isChangePasswordValid</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300411</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.old_password</string>
+                                               <reference key="source" ref="441176528"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="441176528"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.old_password</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.old_password</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+                                                               <reference key="NS.object.0" ref="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300412</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.new_password</string>
+                                               <reference key="source" ref="158061"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="158061"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.new_password</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.new_password</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+                                                               <reference key="NS.object.0" ref="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300413</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.verify_password</string>
+                                               <reference key="source" ref="576133689"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="576133689"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.verify_password</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.verify_password</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
+                                                               <reference key="NS.object.0" ref="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300414</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">containerView</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="632526042"/>
+                                       </object>
+                                       <int key="connectionID">300415</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.save_response</string>
+                                               <reference key="source" ref="645528597"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="645528597"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.save_response</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.save_response</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300416</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">hidden: selection.allow_save</string>
+                                               <reference key="source" ref="645528597"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="645528597"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">hidden: selection.allow_save</string>
+                                                       <string key="NSBinding">hidden</string>
+                                                       <string key="NSKeyPath">selection.allow_save</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSValueTransformerName</string>
+                                                               <string key="NS.object.0">NSNegateBoolean</string>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300417</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">takeObjectValueFrom:</string>
+                                               <reference key="source" ref="332956369"/>
+                                               <reference key="destination" ref="594182616"/>
+                                       </object>
+                                       <int key="connectionID">300441</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">takeObjectValueFrom:</string>
+                                               <reference key="source" ref="523287828"/>
+                                               <reference key="destination" ref="486016405"/>
+                                       </object>
+                                       <int key="connectionID">300442</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="523287828"/>
+                                               <reference key="destination" ref="486016405"/>
+                                       </object>
+                                       <int key="connectionID">300443</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="332956369"/>
+                                               <reference key="destination" ref="594182616"/>
+                                       </object>
+                                       <int key="connectionID">300444</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.forwardable</string>
+                                               <reference key="source" ref="964499406"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="964499406"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.forwardable</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.forwardable</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300445</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.addressless</string>
+                                               <reference key="source" ref="198913348"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="198913348"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.addressless</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.addressless</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300446</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.renewable</string>
+                                               <reference key="source" ref="368169141"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="368169141"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.renewable</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.renewable</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300447</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: selection.renewable</string>
+                                               <reference key="source" ref="594182616"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="594182616"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">enabled: selection.renewable</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">selection.renewable</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300450</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">maxValue: selection.max_renewal_lifetime</string>
+                                               <reference key="source" ref="594182616"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="970138044">
+                                                       <reference key="NSSource" ref="594182616"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">maxValue: selection.max_renewal_lifetime</string>
+                                                       <string key="NSBinding">maxValue</string>
+                                                       <string key="NSKeyPath">selection.max_renewal_lifetime</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300453</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">minValue: selection.min_renewal_lifetime</string>
+                                               <reference key="source" ref="594182616"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="564091763">
+                                                       <reference key="NSSource" ref="594182616"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">minValue: selection.min_renewal_lifetime</string>
+                                                       <string key="NSBinding">minValue</string>
+                                                       <string key="NSKeyPath">selection.min_renewal_lifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="970138044"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300454</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.renewal_lifetime</string>
+                                               <reference key="source" ref="594182616"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="594182616"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.renewal_lifetime</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.renewal_lifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="564091763"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300455</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">maxValue: selection.max_valid_lifetime</string>
+                                               <reference key="source" ref="486016405"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="72846604">
+                                                       <reference key="NSSource" ref="486016405"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">maxValue: selection.max_valid_lifetime</string>
+                                                       <string key="NSBinding">maxValue</string>
+                                                       <string key="NSKeyPath">selection.max_valid_lifetime</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300456</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">minValue: selection.min_valid_lifetime</string>
+                                               <reference key="source" ref="486016405"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="337570750">
+                                                       <reference key="NSSource" ref="486016405"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">minValue: selection.min_valid_lifetime</string>
+                                                       <string key="NSBinding">minValue</string>
+                                                       <string key="NSKeyPath">selection.min_valid_lifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="72846604"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300458</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.valid_lifetime</string>
+                                               <reference key="source" ref="486016405"/>
+                                               <reference key="destination" ref="57033499"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="486016405"/>
+                                                       <reference key="NSDestination" ref="57033499"/>
+                                                       <string key="NSLabel">value: selection.valid_lifetime</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.valid_lifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="337570750"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300459</int>
+                               </object>
+                       </object>
+                       <object class="IBMutableOrderedSet" key="objectRecords">
+                               <object class="NSArray" key="orderedObjects">
+                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">0</int>
+                                               <object class="NSArray" key="object" id="0">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                               </object>
+                                               <reference key="children" ref="1000842439"/>
+                                               <nil key="parent"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
                                                <int key="objectID">-2</int>
                                                <reference key="object" ref="262677138"/>
                                                <reference key="parent" ref="0"/>
                                                <reference key="parent" ref="0"/>
                                                <string key="objectName">Application</string>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300030</int>
-                                               <reference key="object" ref="161772700"/>
-                                               <object class="NSMutableArray" key="children">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="738897734"/>
-                                                       <reference ref="278140056"/>
-                                                       <reference ref="466925177"/>
-                                                       <reference ref="1064438280"/>
-                                               </object>
-                                               <reference key="parent" ref="0"/>
-                                               <string key="objectName">GearMenu</string>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300031</int>
-                                               <reference key="object" ref="738897734"/>
-                                               <reference key="parent" ref="161772700"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300032</int>
-                                               <reference key="object" ref="278140056"/>
-                                               <reference key="parent" ref="161772700"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300033</int>
-                                               <reference key="object" ref="466925177"/>
-                                               <reference key="parent" ref="161772700"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300034</int>
-                                               <reference key="object" ref="1064438280"/>
-                                               <reference key="parent" ref="161772700"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300157</int>
                                                <reference key="object" ref="92892041"/>
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <reference ref="523041784"/>
                                                        <reference ref="207178735"/>
-                                                       <reference ref="980345926"/>
                                                        <reference ref="238778309"/>
                                                        <reference ref="409092758"/>
                                                        <reference ref="930407441"/>
                                                        <reference ref="1001544034"/>
                                                        <reference ref="529434335"/>
                                                        <reference ref="498665267"/>
+                                                       <reference ref="1016187493"/>
                                                </object>
                                                <reference key="parent" ref="0"/>
                                                <string key="objectName">Enter Identity</string>
                                                </object>
                                                <reference key="parent" ref="92892041"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300164</int>
-                                               <reference key="object" ref="980345926"/>
-                                               <object class="NSMutableArray" key="children">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="432989262"/>
-                                               </object>
-                                               <reference key="parent" ref="92892041"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300162</int>
                                                <reference key="object" ref="238778309"/>
                                                <reference key="object" ref="1073582594"/>
                                                <reference key="parent" ref="238778309"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300166</int>
-                                               <reference key="object" ref="432989262"/>
-                                               <reference key="parent" ref="980345926"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300167</int>
                                                <reference key="object" ref="563505192"/>
                                                <reference key="object" ref="60326189"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="655431516"/>
                                                        <reference ref="1061510403"/>
                                                        <reference ref="1064523274"/>
                                                        <reference ref="299103498"/>
-                                                       <reference ref="331992464"/>
+                                                       <reference ref="255611063"/>
+                                                       <reference ref="962648515"/>
+                                                       <reference ref="29184344"/>
+                                                       <reference ref="441176528"/>
+                                                       <reference ref="158061"/>
+                                                       <reference ref="576133689"/>
+                                                       <reference ref="105446308"/>
+                                                       <reference ref="288995352"/>
                                                </object>
                                                <reference key="parent" ref="0"/>
-                                               <string key="objectName">Expired Password</string>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300278</int>
-                                               <reference key="object" ref="655431516"/>
-                                               <object class="NSMutableArray" key="children">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="544381563"/>
-                                               </object>
-                                               <reference key="parent" ref="60326189"/>
+                                               <string key="objectName">Change Password</string>
                                        </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300275</int>
                                                </object>
                                                <reference key="parent" ref="60326189"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300284</int>
-                                               <reference key="object" ref="331992464"/>
-                                               <object class="NSMutableArray" key="children">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="418342109"/>
-                                               </object>
-                                               <reference key="parent" ref="60326189"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300285</int>
-                                               <reference key="object" ref="418342109"/>
-                                               <reference key="parent" ref="331992464"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300287</int>
                                                <reference key="object" ref="627916817"/>
                                                <reference key="object" ref="246958577"/>
                                                <reference key="parent" ref="1064523274"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300281</int>
-                                               <reference key="object" ref="544381563"/>
-                                               <reference key="parent" ref="655431516"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300211</int>
                                                <reference key="object" ref="861423802"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <reference ref="860880966"/>
-                                                       <reference ref="424661587"/>
                                                        <reference ref="41252477"/>
                                                        <reference ref="432972501"/>
                                                        <reference ref="1024084044"/>
                                                </object>
                                                <reference key="parent" ref="861423802"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300290</int>
-                                               <reference key="object" ref="424661587"/>
-                                               <object class="NSMutableArray" key="children">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="517774830"/>
-                                               </object>
-                                               <reference key="parent" ref="861423802"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300212</int>
                                                <reference key="object" ref="41252477"/>
                                                <reference key="object" ref="1042795512"/>
                                                <reference key="parent" ref="432972501"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">300291</int>
-                                               <reference key="object" ref="517774830"/>
-                                               <reference key="parent" ref="424661587"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">300216</int>
                                                <reference key="object" ref="1060905079"/>
                                                <reference key="parent" ref="860880966"/>
                                        </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300300</int>
+                                               <reference key="object" ref="57033499"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Glue Controller</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300312</int>
+                                               <reference key="object" ref="1016187493"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="690863814"/>
+                                               </object>
+                                               <reference key="parent" ref="92892041"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300313</int>
+                                               <reference key="object" ref="690863814"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="594991555"/>
+                                               </object>
+                                               <reference key="parent" ref="1016187493"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300314</int>
+                                               <reference key="object" ref="594991555"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="1020091532"/>
+                                                       <reference ref="8728780"/>
+                                                       <reference ref="917012637"/>
+                                                       <reference ref="452996455"/>
+                                               </object>
+                                               <reference key="parent" ref="690863814"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300316</int>
+                                               <reference key="object" ref="1020091532"/>
+                                               <reference key="parent" ref="594991555"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300317</int>
+                                               <reference key="object" ref="8728780"/>
+                                               <reference key="parent" ref="594991555"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300320</int>
+                                               <reference key="object" ref="917012637"/>
+                                               <reference key="parent" ref="594991555"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300384</int>
+                                               <reference key="object" ref="441176528"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="453153516"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300385</int>
+                                               <reference key="object" ref="962648515"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="678162638"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300386</int>
+                                               <reference key="object" ref="678162638"/>
+                                               <reference key="parent" ref="962648515"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300387</int>
+                                               <reference key="object" ref="453153516"/>
+                                               <reference key="parent" ref="441176528"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300388</int>
+                                               <reference key="object" ref="29184344"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="698626122"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300389</int>
+                                               <reference key="object" ref="698626122"/>
+                                               <reference key="parent" ref="29184344"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300390</int>
+                                               <reference key="object" ref="255611063"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="742145870"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300391</int>
+                                               <reference key="object" ref="742145870"/>
+                                               <reference key="parent" ref="255611063"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300392</int>
+                                               <reference key="object" ref="158061"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="899060580"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300393</int>
+                                               <reference key="object" ref="899060580"/>
+                                               <reference key="parent" ref="158061"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300394</int>
+                                               <reference key="object" ref="576133689"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="696656312"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300395</int>
+                                               <reference key="object" ref="696656312"/>
+                                               <reference key="parent" ref="576133689"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300396</int>
+                                               <reference key="object" ref="105446308"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="676106072"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300397</int>
+                                               <reference key="object" ref="288995352"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="613041994"/>
+                                               </object>
+                                               <reference key="parent" ref="60326189"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300398</int>
+                                               <reference key="object" ref="613041994"/>
+                                               <reference key="parent" ref="288995352"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300399</int>
+                                               <reference key="object" ref="676106072"/>
+                                               <reference key="parent" ref="105446308"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300419</int>
+                                               <reference key="object" ref="102029948"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="389112266"/>
+                                               </object>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Options</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300420</int>
+                                               <reference key="object" ref="389112266"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="284195308"/>
+                                                       <reference ref="681646907"/>
+                                                       <reference ref="332956369"/>
+                                                       <reference ref="368169141"/>
+                                                       <reference ref="964499406"/>
+                                                       <reference ref="198913348"/>
+                                                       <reference ref="594182616"/>
+                                                       <reference ref="523287828"/>
+                                                       <reference ref="318596865"/>
+                                                       <reference ref="486016405"/>
+                                               </object>
+                                               <reference key="parent" ref="102029948"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300421</int>
+                                               <reference key="object" ref="284195308"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="12024755"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300422</int>
+                                               <reference key="object" ref="681646907"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="88378654"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300423</int>
+                                               <reference key="object" ref="332956369"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="931635862"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300424</int>
+                                               <reference key="object" ref="368169141"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="535311584"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300425</int>
+                                               <reference key="object" ref="964499406"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="873232825"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300426</int>
+                                               <reference key="object" ref="198913348"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="452074655"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300427</int>
+                                               <reference key="object" ref="594182616"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="734223932"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300428</int>
+                                               <reference key="object" ref="523287828"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="175033886"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300429</int>
+                                               <reference key="object" ref="318596865"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="254246330"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300430</int>
+                                               <reference key="object" ref="486016405"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="624979516"/>
+                                               </object>
+                                               <reference key="parent" ref="389112266"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300431</int>
+                                               <reference key="object" ref="624979516"/>
+                                               <reference key="parent" ref="486016405"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300432</int>
+                                               <reference key="object" ref="254246330"/>
+                                               <reference key="parent" ref="318596865"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300433</int>
+                                               <reference key="object" ref="175033886"/>
+                                               <reference key="parent" ref="523287828"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300434</int>
+                                               <reference key="object" ref="734223932"/>
+                                               <reference key="parent" ref="594182616"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300435</int>
+                                               <reference key="object" ref="452074655"/>
+                                               <reference key="parent" ref="198913348"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300436</int>
+                                               <reference key="object" ref="873232825"/>
+                                               <reference key="parent" ref="964499406"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300437</int>
+                                               <reference key="object" ref="535311584"/>
+                                               <reference key="parent" ref="368169141"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300438</int>
+                                               <reference key="object" ref="931635862"/>
+                                               <reference key="parent" ref="332956369"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300439</int>
+                                               <reference key="object" ref="88378654"/>
+                                               <reference key="parent" ref="681646907"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300440</int>
+                                               <reference key="object" ref="12024755"/>
+                                               <reference key="parent" ref="284195308"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300464</int>
+                                               <reference key="object" ref="452996455"/>
+                                               <reference key="parent" ref="594991555"/>
+                                       </object>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="flattenedProperties">
                                        <string>19.windowTemplate.minSize</string>
                                        <string>20.IBPluginDependency</string>
                                        <string>20.ImportedFromIB2</string>
-                                       <string>300030.IBEditorWindowLastContentRect</string>
-                                       <string>300030.IBPluginDependency</string>
-                                       <string>300030.ImportedFromIB2</string>
-                                       <string>300031.IBPluginDependency</string>
-                                       <string>300031.ImportedFromIB2</string>
-                                       <string>300032.IBPluginDependency</string>
-                                       <string>300032.ImportedFromIB2</string>
-                                       <string>300033.IBPluginDependency</string>
-                                       <string>300033.ImportedFromIB2</string>
-                                       <string>300034.IBPluginDependency</string>
-                                       <string>300034.ImportedFromIB2</string>
                                        <string>300157.IBEditorWindowLastContentRect</string>
                                        <string>300157.IBPluginDependency</string>
                                        <string>300158.IBPluginDependency</string>
                                        <string>300162.ImportedFromIB2</string>
                                        <string>300163.IBPluginDependency</string>
                                        <string>300163.ImportedFromIB2</string>
-                                       <string>300164.CustomClassName</string>
-                                       <string>300164.IBPluginDependency</string>
-                                       <string>300164.ImportedFromIB2</string>
                                        <string>300165.IBPluginDependency</string>
                                        <string>300175.IBEditorWindowLastContentRect</string>
                                        <string>300175.IBPluginDependency</string>
                                        <string>300274.IBEditorWindowLastContentRect</string>
                                        <string>300274.IBPluginDependency</string>
                                        <string>300275.IBPluginDependency</string>
-                                       <string>300278.IBPluginDependency</string>
-                                       <string>300278.ImportedFromIB2</string>
-                                       <string>300284.IBPluginDependency</string>
-                                       <string>300285.IBPluginDependency</string>
                                        <string>300286.IBPluginDependency</string>
                                        <string>300286.ImportedFromIB2</string>
                                        <string>300288.IBPluginDependency</string>
                                        <string>300288.ImportedFromIB2</string>
-                                       <string>300290.IBPluginDependency</string>
-                                       <string>300291.IBPluginDependency</string>
+                                       <string>300300.IBPluginDependency</string>
+                                       <string>300312.IBPluginDependency</string>
+                                       <string>300313.IBPluginDependency</string>
+                                       <string>300314.IBEditorWindowLastContentRect</string>
+                                       <string>300314.IBPluginDependency</string>
+                                       <string>300316.IBPluginDependency</string>
+                                       <string>300317.IBPluginDependency</string>
+                                       <string>300320.IBPluginDependency</string>
+                                       <string>300384.CustomClassName</string>
+                                       <string>300384.IBPluginDependency</string>
+                                       <string>300384.ImportedFromIB2</string>
+                                       <string>300385.IBPluginDependency</string>
+                                       <string>300386.IBPluginDependency</string>
+                                       <string>300388.IBPluginDependency</string>
+                                       <string>300389.IBPluginDependency</string>
+                                       <string>300390.IBPluginDependency</string>
+                                       <string>300391.IBPluginDependency</string>
+                                       <string>300392.CustomClassName</string>
+                                       <string>300392.IBPluginDependency</string>
+                                       <string>300392.ImportedFromIB2</string>
+                                       <string>300394.CustomClassName</string>
+                                       <string>300394.IBPluginDependency</string>
+                                       <string>300394.ImportedFromIB2</string>
+                                       <string>300396.IBPluginDependency</string>
+                                       <string>300396.ImportedFromIB2</string>
+                                       <string>300397.IBPluginDependency</string>
+                                       <string>300397.ImportedFromIB2</string>
+                                       <string>300419.IBEditorWindowLastContentRect</string>
+                                       <string>300419.IBPluginDependency</string>
+                                       <string>300419.IBWindowTemplateEditedContentRect</string>
+                                       <string>300419.ImportedFromIB2</string>
+                                       <string>300419.windowTemplate.hasMaxSize</string>
+                                       <string>300419.windowTemplate.hasMinSize</string>
+                                       <string>300419.windowTemplate.maxSize</string>
+                                       <string>300419.windowTemplate.minSize</string>
+                                       <string>300420.IBPluginDependency</string>
+                                       <string>300420.ImportedFromIB2</string>
+                                       <string>300421.IBPluginDependency</string>
+                                       <string>300421.ImportedFromIB2</string>
+                                       <string>300422.IBPluginDependency</string>
+                                       <string>300422.ImportedFromIB2</string>
+                                       <string>300423.IBPluginDependency</string>
+                                       <string>300423.ImportedFromIB2</string>
+                                       <string>300424.IBPluginDependency</string>
+                                       <string>300424.ImportedFromIB2</string>
+                                       <string>300425.IBPluginDependency</string>
+                                       <string>300425.ImportedFromIB2</string>
+                                       <string>300426.IBPluginDependency</string>
+                                       <string>300426.ImportedFromIB2</string>
+                                       <string>300427.IBPluginDependency</string>
+                                       <string>300427.ImportedFromIB2</string>
+                                       <string>300428.IBPluginDependency</string>
+                                       <string>300428.ImportedFromIB2</string>
+                                       <string>300429.IBPluginDependency</string>
+                                       <string>300429.ImportedFromIB2</string>
+                                       <string>300430.IBPluginDependency</string>
+                                       <string>300430.ImportedFromIB2</string>
+                                       <string>300464.IBPluginDependency</string>
                                </object>
                                <object class="NSMutableArray" key="dict.values">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{696, 646}, {500, 210}}</string>
+                                       <string>{{628, 646}, {500, 210}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{696, 646}, {500, 210}}</string>
-                                       <integer value="1" id="5"/>
-                                       <reference ref="5"/>
+                                       <string>{{628, 646}, {500, 210}}</string>
+                                       <reference ref="9"/>
+                                       <reference ref="9"/>
                                        <string>{{932, 664}, {484, 199}}</string>
-                                       <reference ref="5"/>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
+                                       <reference ref="9"/>
                                        <string>{600, 400}</string>
                                        <string>{484, 199}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
-                                       <string>{{557, 1049}, {203, 73}}</string>
+                                       <reference ref="9"/>
+                                       <string>{{602, 432}, {500, 210}}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
-                                       <string>{{602, 364}, {500, 210}}</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{477, 611}, {500, 210}}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>NSSecureTextField</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
-                                       <string>PopupButton</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{547, 453}, {500, 210}}</string>
+                                       <string>{{628, 163}, {500, 210}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>NSSecureTextField</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{553, 638}, {500, 210}}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>{{512, 496}, {500, 230}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{557, 743}, {500, 210}}</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{611, 402}, {176, 73}}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>NSSecureTextField</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{546, 628}, {500, 210}}</string>
+                                       <string>NSSecureTextField</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>NSSecureTextField</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
+                                       <string>{{579, 449}, {430, 283}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <string>{{579, 449}, {430, 283}}</string>
+                                       <reference ref="9"/>
+                                       <reference ref="8"/>
+                                       <reference ref="9"/>
+                                       <string>{3.40282e+38, 3.40282e+38}</string>
+                                       <string>{430, 283}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
-                                       <string>{{619, 442}, {500, 210}}</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                </object>
                        </object>
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">300293</int>
+                       <int key="maxID">300467</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">BadgedImageView</string>
-                                       <string key="superclassName">NSView</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">../Sources/kim/agent/mac/BadgedImageView.h</string>
+                                       <string key="className">AuthenticationController</string>
+                                       <string key="superclassName">NSWindowController</string>
+                                       <object class="NSMutableDictionary" key="actions">
+                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                               <object class="NSMutableArray" key="dict.sortedKeys">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <string>answerAuthPrompt:</string>
+                                                       <string>cancel:</string>
+                                                       <string>changePassword:</string>
+                                                       <string>enterIdentity:</string>
+                                                       <string>showedError:</string>
+                                               </object>
+                                               <object class="NSMutableArray" key="dict.values">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
+                                               </object>
+                                       </object>
+                                       <object class="NSMutableDictionary" key="outlets">
+                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                               <object class="NSMutableArray" key="dict.sortedKeys">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <string>changePasswordBadge</string>
+                                                       <string>changePasswordView</string>
+                                                       <string>containerView</string>
+                                                       <string>enterBadge</string>
+                                                       <string>errorBadge</string>
+                                                       <string>errorView</string>
+                                                       <string>expiredPasswordView</string>
+                                                       <string>glueController</string>
+                                                       <string>identityView</string>
+                                                       <string>oldPasswordField</string>
+                                                       <string>passwordBadge</string>
+                                                       <string>passwordField</string>
+                                                       <string>passwordView</string>
+                                                       <string>rememberPasswordInKeychainCheckBox</string>
+                                                       <string>samBadge</string>
+                                                       <string>samPromptField</string>
+                                                       <string>samView</string>
+                                                       <string>usernameField</string>
+                                               </object>
+                                               <object class="NSMutableArray" key="dict.values">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <string>BadgedImageView</string>
+                                                       <string>NSView</string>
+                                                       <string>NSView</string>
+                                                       <string>BadgedImageView</string>
+                                                       <string>BadgedImageView</string>
+                                                       <string>NSView</string>
+                                                       <string>NSView</string>
+                                                       <string>NSObjectController</string>
+                                                       <string>NSView</string>
+                                                       <string>NSTextField</string>
+                                                       <string>BadgedImageView</string>
+                                                       <string>NSTextField</string>
+                                                       <string>NSView</string>
+                                                       <string>NSButton</string>
+                                                       <string>BadgedImageView</string>
+                                                       <string>NSTextField</string>
+                                                       <string>NSView</string>
+                                                       <string>NSTextField</string>
+                                               </object>
                                        </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">FirstResponder</string>
-                                       <string key="superclassName">NSObject</string>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBUserSource</string>
-                                               <string key="minorKey"/>
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">../Sources/kim/agent/mac/AuthenticationController.h</string>
                                        </object>
                                </object>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">PopupButton</string>
-                                       <string key="superclassName">NSButton</string>
+                                       <string key="className">BadgedImageView</string>
+                                       <string key="superclassName">NSView</string>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">../Sources/kim/agent/mac/PopupButton.h</string>
+                                               <string key="minorKey">../Sources/kim/agent/mac/BadgedImageView.h</string>
                                        </object>
                                </object>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">PopupButton</string>
-                                       <string key="superclassName">NSButton</string>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <string key="NS.key.0">popupMenu</string>
-                                               <string key="NS.object.0">NSMenu</string>
-                                       </object>
+                                       <string key="className">FirstResponder</string>
+                                       <string key="superclassName">NSObject</string>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBUserSource</string>
                                                <string key="minorKey"/>
diff --git a/src/kim/agent/mac/resources/English.lproj/AuthenticationController.strings b/src/kim/agent/mac/resources/English.lproj/AuthenticationController.strings
new file mode 100644 (file)
index 0000000..fc0f2f7
Binary files /dev/null and b/src/kim/agent/mac/resources/English.lproj/AuthenticationController.strings differ
index da6d9efed364f705e5bfe61b9b8959ed499a84c0..f56ab63372397d160537060c57bf0565c67216c4 100644 (file)
@@ -2,12 +2,13 @@
 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.02">
        <data>
                <int key="IBDocument.SystemTarget">1050</int>
-               <string key="IBDocument.SystemVersion">9E17</string>
-               <string key="IBDocument.InterfaceBuilderVersion">670</string>
-               <string key="IBDocument.AppKitVersion">949.33</string>
+               <string key="IBDocument.SystemVersion">9F33</string>
+               <string key="IBDocument.InterfaceBuilderVersion">672</string>
+               <string key="IBDocument.AppKitVersion">949.34</string>
                <string key="IBDocument.HIToolboxVersion">352.00</string>
                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
                        <bool key="EncodedWithXMLCoder">YES</bool>
+                       <integer value="57"/>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                                        <reference key="NSOnImage" ref="42192827"/>
                                                                        <reference key="NSMixedImage" ref="708750045"/>
                                                                </object>
-                                                               <object class="NSMenuItem" id="941049996">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <bool key="NSIsDisabled">YES</bool>
-                                                                       <bool key="NSIsSeparator">YES</bool>
-                                                                       <string key="NSTitle"/>
-                                                                       <string key="NSKeyEquiv"/>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="885473566">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string>
-                                                                       <string key="NSKeyEquiv">,</string>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="773057625">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <bool key="NSIsDisabled">YES</bool>
-                                                                       <bool key="NSIsSeparator">YES</bool>
-                                                                       <string key="NSTitle"/>
-                                                                       <string key="NSKeyEquiv"/>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="701559942">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <string key="NSTitle">Services</string>
-                                                                       <string key="NSKeyEquiv"/>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                                       <string key="NSAction">submenuAction:</string>
-                                                                       <object class="NSMenu" key="NSSubmenu" id="297859549">
-                                                                               <object class="NSMutableString" key="NSTitle">
-                                                                                       <characters key="NS.bytes">Services</characters>
-                                                                               </object>
-                                                                               <object class="NSMutableArray" key="NSMenuItems">
-                                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                                               </object>
-                                                                               <string key="NSName">_NSServicesMenu</string>
-                                                                       </object>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="2694966">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <bool key="NSIsDisabled">YES</bool>
-                                                                       <bool key="NSIsSeparator">YES</bool>
-                                                                       <string key="NSTitle"/>
-                                                                       <string key="NSKeyEquiv"/>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="329699580">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <string key="NSTitle">Hide KerberosAgent</string>
-                                                                       <string key="NSKeyEquiv">h</string>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="844777333">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <string key="NSTitle">Hide Others</string>
-                                                                       <string key="NSKeyEquiv">h</string>
-                                                                       <int key="NSKeyEquivModMask">1572864</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="110892548">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <string key="NSTitle">Show All</string>
-                                                                       <string key="NSKeyEquiv"/>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="354292100">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <bool key="NSIsDisabled">YES</bool>
-                                                                       <bool key="NSIsSeparator">YES</bool>
-                                                                       <string key="NSTitle"/>
-                                                                       <string key="NSKeyEquiv"/>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
-                                                               <object class="NSMenuItem" id="10506244">
-                                                                       <reference key="NSMenu" ref="980333367"/>
-                                                                       <string key="NSTitle">Quit KerberosAgent</string>
-                                                                       <string key="NSKeyEquiv">q</string>
-                                                                       <int key="NSKeyEquivModMask">1048576</int>
-                                                                       <int key="NSMnemonicLoc">2147483647</int>
-                                                                       <reference key="NSOnImage" ref="42192827"/>
-                                                                       <reference key="NSMixedImage" ref="708750045"/>
-                                                               </object>
                                                        </object>
                                                        <string key="NSName">_NSAppleMenu</string>
                                                </object>
                                        </object>
                                        <int key="connectionID">122</int>
                                </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">terminate:</string>
-                                               <reference key="source" ref="58791012"/>
-                                               <reference key="destination" ref="10506244"/>
-                                       </object>
-                                       <int key="connectionID">139</int>
-                               </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBActionConnection" key="connection">
                                                <string key="label">orderFrontStandardAboutPanel:</string>
                                        </object>
                                        <int key="connectionID">142</int>
                                </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">hideOtherApplications:</string>
-                                               <reference key="source" ref="58791012"/>
-                                               <reference key="destination" ref="844777333"/>
-                                       </object>
-                                       <int key="connectionID">146</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">hide:</string>
-                                               <reference key="source" ref="58791012"/>
-                                               <reference key="destination" ref="329699580"/>
-                                       </object>
-                                       <int key="connectionID">152</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">unhideAllApplications:</string>
-                                               <reference key="source" ref="58791012"/>
-                                               <reference key="destination" ref="110892548"/>
-                                       </object>
-                                       <int key="connectionID">153</int>
-                               </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBActionConnection" key="connection">
                                                <string key="label">cut:</string>
                                        </object>
                                        <int key="connectionID">300448</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="364998124"/>
+                                               <reference key="destination" ref="620802461"/>
+                                       </object>
+                                       <int key="connectionID">300468</int>
+                               </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                <object class="NSArray" key="orderedObjects">
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <reference ref="104201360"/>
-                                                       <reference ref="885473566"/>
-                                                       <reference ref="701559942"/>
-                                                       <reference ref="329699580"/>
-                                                       <reference ref="10506244"/>
-                                                       <reference ref="773057625"/>
-                                                       <reference ref="2694966"/>
-                                                       <reference ref="844777333"/>
-                                                       <reference ref="354292100"/>
-                                                       <reference ref="110892548"/>
-                                                       <reference ref="941049996"/>
                                                </object>
                                                <reference key="parent" ref="946093663"/>
                                        </object>
                                                <reference key="object" ref="104201360"/>
                                                <reference key="parent" ref="980333367"/>
                                        </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">129</int>
-                                               <reference key="object" ref="885473566"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">131</int>
-                                               <reference key="object" ref="701559942"/>
-                                               <object class="NSMutableArray" key="children">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="297859549"/>
-                                               </object>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">130</int>
-                                               <reference key="object" ref="297859549"/>
-                                               <reference key="parent" ref="701559942"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">134</int>
-                                               <reference key="object" ref="329699580"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">136</int>
-                                               <reference key="object" ref="10506244"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">143</int>
-                                               <reference key="object" ref="773057625"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">144</int>
-                                               <reference key="object" ref="2694966"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">145</int>
-                                               <reference key="object" ref="844777333"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">149</int>
-                                               <reference key="object" ref="354292100"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">150</int>
-                                               <reference key="object" ref="110892548"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
-                                               <int key="objectID">202</int>
-                                               <reference key="object" ref="941049996"/>
-                                               <reference key="parent" ref="980333367"/>
-                                       </object>
                                        <object class="IBObjectRecord">
                                                <int key="objectID">103</int>
                                                <reference key="object" ref="608222506"/>
                                        <string>106.editorWindowContentRectSynchronizationRect</string>
                                        <string>111.IBPluginDependency</string>
                                        <string>111.ImportedFromIB2</string>
-                                       <string>129.IBPluginDependency</string>
-                                       <string>129.ImportedFromIB2</string>
-                                       <string>130.IBPluginDependency</string>
-                                       <string>130.ImportedFromIB2</string>
-                                       <string>131.IBPluginDependency</string>
-                                       <string>131.ImportedFromIB2</string>
-                                       <string>134.IBPluginDependency</string>
-                                       <string>134.ImportedFromIB2</string>
-                                       <string>136.IBPluginDependency</string>
-                                       <string>136.ImportedFromIB2</string>
-                                       <string>143.IBPluginDependency</string>
-                                       <string>143.ImportedFromIB2</string>
-                                       <string>144.IBPluginDependency</string>
-                                       <string>144.ImportedFromIB2</string>
-                                       <string>145.IBPluginDependency</string>
-                                       <string>145.ImportedFromIB2</string>
-                                       <string>149.IBPluginDependency</string>
-                                       <string>149.ImportedFromIB2</string>
-                                       <string>150.IBPluginDependency</string>
-                                       <string>150.ImportedFromIB2</string>
                                        <string>156.IBPluginDependency</string>
                                        <string>156.ImportedFromIB2</string>
                                        <string>157.IBPluginDependency</string>
                                        <string>163.ImportedFromIB2</string>
                                        <string>164.IBPluginDependency</string>
                                        <string>164.ImportedFromIB2</string>
+                                       <string>169.IBEditorWindowLastContentRect</string>
                                        <string>169.IBPluginDependency</string>
                                        <string>169.ImportedFromIB2</string>
                                        <string>169.editorWindowContentRectSynchronizationRect</string>
                                        <string>173.ImportedFromIB2</string>
                                        <string>19.IBPluginDependency</string>
                                        <string>19.ImportedFromIB2</string>
-                                       <string>202.IBPluginDependency</string>
-                                       <string>202.ImportedFromIB2</string>
                                        <string>203.IBPluginDependency</string>
                                        <string>203.ImportedFromIB2</string>
                                        <string>210.IBPluginDependency</string>
                                        <string>5.ImportedFromIB2</string>
                                        <string>56.IBPluginDependency</string>
                                        <string>56.ImportedFromIB2</string>
+                                       <string>57.IBEditorWindowLastContentRect</string>
                                        <string>57.IBPluginDependency</string>
                                        <string>57.ImportedFromIB2</string>
                                        <string>57.editorWindowContentRectSynchronizationRect</string>
                                        <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
+                                       <string>{{630, 563}, {253, 173}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
                                        <string>{{1022, 430}, {253, 173}}</string>
                                        <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="9"/>
                                        <string>{{1066, 510}, {197, 93}}</string>
-                                       <string>{{492, 1079}, {314, 20}}</string>
+                                       <string>{{492, 736}, {314, 20}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
                                        <string>{{884, 603}, {314, 20}}</string>
                                        <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
+                                       <string>{{504, 713}, {202, 23}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <reference ref="9"/>
                                        <string>{{896, 420}, {240, 183}}</string>
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">300448</int>
+                       <int key="maxID">300484</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                <object class="IBPartialClassDescription">
                                        <string key="className">KerberosAgentController</string>
                                        <string key="superclassName">NSObject</string>
+                                       <object class="NSMutableDictionary" key="actions">
+                                               <string key="NS.key.0">fakeANewClient:</string>
+                                               <string key="NS.object.0">id</string>
+                                       </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
                                                <string key="majorKey">IBProjectSource</string>
                                                <string key="minorKey">../Sources/kim/agent/mac/KerberosAgentController.h</string>
diff --git a/src/kim/agent/mac/resources/English.lproj/SelectIdentity.strings b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.strings
new file mode 100644 (file)
index 0000000..6eb2109
Binary files /dev/null and b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.strings differ
index bf65e894d4ca071d1d3fcc2207dfcc13a00ebfdf..3a1fb160ef51828d08ae9e50cc801d19bdab6871 100644 (file)
@@ -8,8 +8,8 @@
                <string key="IBDocument.HIToolboxVersion">352.00</string>
                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <integer value="300428"/>
                        <integer value="300295"/>
+                       <integer value="6"/>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                                                </object>
                                                                        </object>
                                                                </object>
-                                                               <int key="NSSelectedIndex">1</int>
                                                                <bool key="NSPullDown">YES</bool>
                                                                <int key="NSPreferredEdge">2</int>
                                                                <bool key="NSUsesItemFromMenu">YES</bool>
                                                        <reference key="NSSuperview" ref="1019868804"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSButtonCell" key="NSCell" id="870649207">
-                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags">604110336</int>
                                                                <int key="NSCellFlags2">134217728</int>
                                                                <string key="NSContents">OK</string>
                                                                <reference key="NSSupport" ref="604532625"/>
                                        </object>
                                        <int key="connectionID">300455</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">ticketOptionsOkButton</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="932240937"/>
+                                       </object>
+                                       <int key="connectionID">300459</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="623163777"/>
+                                               <reference key="destination" ref="262677138"/>
+                                       </object>
+                                       <int key="connectionID">300460</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="485004197"/>
+                                               <reference key="destination" ref="262677138"/>
+                                       </object>
+                                       <int key="connectionID">300461</int>
+                               </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                <object class="NSArray" key="orderedObjects">
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{360, 291}, {427, 378}}</string>
+                                       <string>{{553, 305}, {427, 378}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{360, 291}, {427, 378}}</string>
-                                       <integer value="0"/>
+                                       <string>{{553, 305}, {427, 378}}</string>
+                                       <reference ref="75542549"/>
                                        <reference ref="75542549"/>
                                        <string>{10000, 354}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">300455</int>
+                       <int key="maxID">300461</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                                        <string>nameField</string>
                                                        <string>realmField</string>
                                                        <string>selectIdentityButton</string>
+                                                       <string>ticketOptionsOkButton</string>
                                                </object>
                                                <object class="NSMutableArray" key="dict.values">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <string>NSTextField</string>
                                                        <string>NSTextField</string>
                                                        <string>NSButton</string>
+                                                       <string>NSButton</string>
                                                </object>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">