From 9b430b8e906b8a6ee832df85b1316026f011ece4 Mon Sep 17 00:00:00 2001 From: Alexandra Ellwood Date: Wed, 30 Jul 2008 20:52:12 +0000 Subject: [PATCH] Additional implementation of the KerberosAgent ticket: 6055 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20590 dc483132-0cff-0310-8789-dd5450dbe970 --- src/include/kim/kim_ccache.h | 28 +- src/include/kim/kim_error.h | 5 +- src/kim/agent/mac/BadgedImageView.h | 38 + src/kim/agent/mac/BadgedImageView.m | 96 + src/kim/agent/mac/Identities.h | 43 + src/kim/agent/mac/Identities.m | 257 + src/kim/agent/mac/KerberosAgentController.h | 32 + src/kim/agent/mac/KerberosAgentController.m | 41 + src/kim/agent/mac/PopupButton.h | 34 + src/kim/agent/mac/PopupButton.m | 57 + src/kim/agent/mac/SelectIdentityController.h | 52 + src/kim/agent/mac/SelectIdentityController.m | 112 + .../English.lproj/Authentication.xib | 4520 +++++------------ .../mac/resources/English.lproj/MainMenu.xib | 3169 +----------- .../English.lproj/SelectIdentity.xib | 1042 ++++ src/kim/lib/kim.exports | 1 + src/kim/lib/kim_ccache.c | 204 +- src/kim/lib/kim_credential.c | 2 + src/kim/lib/kim_error.c | 8 +- 19 files changed, 3458 insertions(+), 6283 deletions(-) create mode 100644 src/kim/agent/mac/BadgedImageView.h create mode 100644 src/kim/agent/mac/BadgedImageView.m create mode 100644 src/kim/agent/mac/Identities.h create mode 100644 src/kim/agent/mac/Identities.m create mode 100644 src/kim/agent/mac/KerberosAgentController.h create mode 100644 src/kim/agent/mac/KerberosAgentController.m create mode 100644 src/kim/agent/mac/PopupButton.h create mode 100644 src/kim/agent/mac/PopupButton.m create mode 100644 src/kim/agent/mac/SelectIdentityController.h create mode 100644 src/kim/agent/mac/SelectIdentityController.m create mode 100644 src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib diff --git a/src/include/kim/kim_ccache.h b/src/include/kim/kim_ccache.h index c04381edc..d805c5c92 100644 --- a/src/include/kim/kim_ccache.h +++ b/src/include/kim/kim_ccache.h @@ -428,7 +428,7 @@ kim_error kim_ccache_get_type (kim_ccache in_ccache, * \brief Get the type and name for a ccache in display format. */ kim_error kim_ccache_get_display_name (kim_ccache in_ccache, - kim_string *out_display_name); + kim_string *out_display_name); /*! * \param in_ccache a ccache object. @@ -438,7 +438,7 @@ kim_error kim_ccache_get_display_name (kim_ccache in_ccache, * \brief Get the client identity for a ccache. */ kim_error kim_ccache_get_client_identity (kim_ccache in_ccache, - kim_identity *out_client_identity); + kim_identity *out_client_identity); /*! * \param in_ccache a ccache object. @@ -447,14 +447,28 @@ kim_error kim_ccache_get_client_identity (kim_ccache in_ccache, * if you only want return value, not the actual credential. * \return On success, #KIM_NO_ERROR. On failure, an error object representing the failure. * \brief Get the first valid credential in a ccache. - * \note This function prefers TGT credentials. If there are any non-valid TGTs + * \note This function prefers valid TGT credentials. If there are only non-valid TGTs * in the ccache, it will always return an error. However, if there are no * TGTs at all, it will return the first valid non-TGT credential. If you only want * TGTs, use kim_credential_is_tgt() to verify that \a out_credential is a tgt. */ kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache, - kim_credential *out_credential); + kim_credential *out_credential); +/*! + * \param in_ccache a ccache object. + * \param out_state on exit, the state of the credentials in \a in_ccache. + * See #kim_credential_state_enum for the possible values + * of \a out_state. + * \return On success, #KIM_NO_ERROR. On failure, an error object representing the failure. + * \brief Check the state of the credentials in a ccache (valid, expired, postdated, etc). + * \note This function prefers TGT credentials. If there are any TGTs in the + * ccache, it will always return their state. However, if there are no + * TGTs at all, it will return the state of the first non-TGT credential. + */ +kim_error kim_ccache_get_state (kim_ccache in_ccache, + kim_credential_state *out_state); + /*! * \param in_ccache a ccache object. * \param out_start_time on exit, the time when the credentials in \a in_ccache @@ -463,7 +477,7 @@ kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache, * \brief Get the time when the credentials in the ccache become valid. */ kim_error kim_ccache_get_start_time (kim_ccache in_ccache, - kim_time *out_start_time); + kim_time *out_start_time); /*! * \param in_ccache a ccache object. @@ -473,7 +487,7 @@ kim_error kim_ccache_get_start_time (kim_ccache in_ccache, * \brief Get the time when the credentials in the ccache will expire. */ kim_error kim_ccache_get_expiration_time (kim_ccache in_ccache, - kim_time *out_expiration_time); + kim_time *out_expiration_time); /*! * \param in_ccache a ccache object. @@ -483,7 +497,7 @@ kim_error kim_ccache_get_expiration_time (kim_ccache in_ccache, * \brief Get the time when the credentials in the ccache will no longer be renewable. */ kim_error kim_ccache_get_renewal_expiration_time (kim_ccache in_ccache, - kim_time *out_renewal_expiration_time); + kim_time *out_renewal_expiration_time); /*! * \param io_ccache a ccache object which will be set to the default ccache. diff --git a/src/include/kim/kim_error.h b/src/include/kim/kim_error.h index 081585c41..87688e083 100644 --- a/src/include/kim/kim_error.h +++ b/src/include/kim/kim_error.h @@ -107,9 +107,12 @@ kim_string kim_error_get_display_string (kim_error in_error); /*! * \param io_error the error object to be freed. Set to NULL on exit. + * \return a machine-readable error code describing the error represented + * by \a io_error. This is the same code returned by + * #kim_error_get_code. * \brief Free memory associated with an error. */ -void kim_error_free (kim_error *io_error); +kim_error_code kim_error_free (kim_error *io_error); /*!@}*/ diff --git a/src/kim/agent/mac/BadgedImageView.h b/src/kim/agent/mac/BadgedImageView.h new file mode 100644 index 000000000..714c13ef5 --- /dev/null +++ b/src/kim/agent/mac/BadgedImageView.h @@ -0,0 +1,38 @@ +/* + * 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 + + +@interface BadgedImageView : NSView { + NSImage *iconImage; + NSImage *badgeImage; +} + +- (id) initWithFrame: (NSRect) frameRect; +- (void) dealloc; +- (void) setBadgeImage: (NSImage *) image; +- (void) drawRect: (NSRect) rect; + +@end diff --git a/src/kim/agent/mac/BadgedImageView.m b/src/kim/agent/mac/BadgedImageView.m new file mode 100644 index 000000000..b408130e3 --- /dev/null +++ b/src/kim/agent/mac/BadgedImageView.m @@ -0,0 +1,96 @@ +/* + * 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 "BadgedImageView.h" + + +@implementation BadgedImageView + +// --------------------------------------------------------------------------- + +- (id) initWithFrame: (NSRect) frameRect +{ + if ((self = [super initWithFrame: frameRect])) { + iconImage = NULL; + badgeImage = NULL; + } + return self; +} + +// --------------------------------------------------------------------------- + +- (void) dealloc +{ + if (iconImage ) { [iconImage release]; } + if (badgeImage) { [badgeImage release]; } + + [super dealloc]; +} + +// --------------------------------------------------------------------------- + +- (void) setBadgeImage: (NSImage *) image +{ + if (badgeImage) { [badgeImage release]; } + + badgeImage = [image retain]; + [self setNeedsDisplay: YES]; +} + +// --------------------------------------------------------------------------- + +- (void) drawRect: (NSRect) rect +{ + float frameSize = [self frame].size.width; + float iconSize = 64.0; + float badgeSize = 32.0; + + if (!iconImage) { + iconImage = [[NSImage imageNamed: @"NSApplicationIcon"] retain]; + } + + if (iconImage) { + [self lockFocus]; + + // Clear an old badged icon + [[NSColor windowBackgroundColor] set]; + NSRectFill ([self frame]); + + [iconImage setScalesWhenResized: YES]; + [iconImage setSize: NSMakeSize (iconSize, iconSize)]; + [iconImage compositeToPoint: NSMakePoint (0.0, frameSize - iconSize) + operation: NSCompositeSourceOver]; + + if (badgeImage) { + // draw badge + [badgeImage setScalesWhenResized: YES]; + [badgeImage setSize: NSMakeSize (badgeSize, badgeSize)]; + [badgeImage compositeToPoint: NSMakePoint (frameSize - badgeSize, 0.0) + operation: NSCompositeSourceOver]; + } + [self unlockFocus]; + } +} + +@end diff --git a/src/kim/agent/mac/Identities.h b/src/kim/agent/mac/Identities.h new file mode 100644 index 000000000..985ea362d --- /dev/null +++ b/src/kim/agent/mac/Identities.h @@ -0,0 +1,43 @@ +/* + * 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 + +@interface Identity : NSObject { + kim_identity kimIdentity; + int state; + cc_time_t *expirationTime; + +} + + +@interface Identities : NSObject { + NSArray *identitiesArray; + NSConnection *threadConnection; + +} + +- (NSArray *) identities; + +@end diff --git a/src/kim/agent/mac/Identities.m b/src/kim/agent/mac/Identities.m new file mode 100644 index 000000000..e59af9534 --- /dev/null +++ b/src/kim/agent/mac/Identities.m @@ -0,0 +1,257 @@ +/* + * 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 "Identities.h" + +@implementation Identity + +- (id) initWithIdentity: (kim_identity) identity +{ + if ((self = [super init])) { + kimIdentity = identity; + state = kim_credentials_state_not_yet_valid; + expirationTime = 0; + } + + return self; +} + + + + +@end + +@implementation Identities + +// --------------------------------------------------------------------------- + ++ (void) waitForChange: (NSArray *) portArray +{ + NSAutoreleasePool *pool; + NSConnection *connection; + + pool = [[NSAutoreleasePool alloc] init]; + + connection = [NSConnection connectionWithReceivePort: [portArray objectAtIndex: 0] + sendPort: [portArray objectAtIndex: 1]]; + + { + cc_int32 err = ccNoError; + cc_context_t context = NULL; + + err = cc_initialize (&context, ccapi_version_max, NULL, NULL); + + while (!err) { + // This call puts the thread to sleep + err = cc_context_wait_for_change (context); + + if (!err) { + NSLog (@"%s thread noticed update", __FUNCTION__); + } else { + NSLog (@"%s thread got error %d (%s)", __FUNCTION__, err, error_message (err)); + err = 0; /* The server quit unexpectedly -- just try again */ + } + + [(Identities *) [connection rootProxy] update]; + sleep (1); + } + + if (context) { cc_context_release (context); } + } + + NSLog (@"%s thread exiting", __FUNCTION__); + [pool release]; +} + +// --------------------------------------------------------------------------- + +- (id) init +{ + int err = 0; + + threadConnection = NULL; + favoriteIdentitiesArray = NULL; + ccacheIdentitiesArray = NULL: + + if (!err) { + self = [super init]; + if (!self) { err = ENOMEM; } + } + + if (!err) { + favoriteIdentitiesArray = [[NSMutableArray alloc] init]; + if (!favoriteIdentitiesArray) { err = ENOMEM; } + } + + if (!err) { + kim_error kimErr = KIM_NO_ERROR; + kim_favorite_identities favoriteIdentities = NULL; + kim_count count = 0; + + kimErr = kim_favorite_identities_create (&favorite_identities); + err = kim_error_free (&kimErr); + + if (!err) { + kimErr = kim_favorite_identities_get_number_of_identities (favoriteIdentities, + &count); + err = kim_error_free (&kimErr); + } + + for (i = 0; !err && i < count; i++) { + kim_identity kimIdentity = NULL; + Identity *identity = NULL: + + kimErr = kim_favorite_identities_get_identity_at_index (favoriteIdentities, + i, &kimIdentity); + err = kim_error_free (&kimErr); + + if (!err) { + Identity *identity = [[[Identity alloc] initWithIdentity: kimIdentity] autorelease]; + if (!identity) { err = ENOMEM; } + } + + if (!err) { + kimIdentity = NULL; /* take ownership */ + [favoriteIdentitiesArray addObject: identity]; + } + + kim_identity_free (&kimIdentity); + } + + kim_favorite_identities_free (&favoriteIdentities); + } + + if (!err) { + err = [self update]; + } + + if (!err) { + NSPort *port1 = [NSPort port]; + NSPort *port2 = [NSPort port]; + if (!port1 || !port2) { err = ENOMEM; } + + if (!err) { + threadConnection = [[NSConnection alloc] initWithReceivePort: port1 + sendPort: port2]; + if (!threadConnection) { err = ENOMEM; } + } + + if (!err) { + [threadConnection setRootObject: self]; + + [NSThread detachNewThreadSelector: @selector(waitForChange:) + toTarget: [self class] + withObject: [NSArray arrayWithObjects: port2, port1, NULL]]; + } + } + + return err ? NULL : self; +} + +// --------------------------------------------------------------------------- + +- (void) dealloc +{ + if (identitiesArray ) { [identitiesArray release]; } + if (threadConnection) { [threadConnection release]; } + + [super dealloc]; +} + +// --------------------------------------------------------------------------- + +- (NSArray *) identities +{ + return identities; +} + +// --------------------------------------------------------------------------- + +- (int) update +{ + kim_error err = KIM_NO_ERROR; + kim_ccache_iterator iterator = NULL; + + err = kim_ccache_iterator_create (&iterator); + + while (!err) { + kim_ccache ccache = NULL; + kim_identity kimIdentity = NULL; + kim_credential_state state = kim_credentials_state_valid; + kim_time expirationTime = 0; + + err = kim_ccache_iterator_next (iterator, &ccache); + if (!err && !ccache) { break; } + + if (!err) { + err = kim_ccache_get_client_identity (ccache, &kimIdentity); + } + + if (!err) { + err = kim_ccache_get_state (ccache, &state); + } + + if (!err && state == kim_credentials_state_valid) { + err = kim_ccache_get_expiration_time (ccache, &expirationTime); + } + + if (!err) { + Identity *identity = NULL; + + identity = [self findIdentity: kimIdentity]; + if (identity) { + [identity updateWithState: state + expirationTime: expirationTime]; + } else { + identity = [[Identity alloc] initWithIdentity: kimIdentity + state: state + expirationTime: expirationTime]; + } + + if (identity) { + + } + } + + if (kim_error_get_code (err) == KIM_NO_CREDENTIALS_ECODE) { + /* ccache is empty, just ignore it */ + kim_error_free (&err); + err = KIM_NO_ERROR; + } + + kim_identity_free (&identity); + kim_ccache_free (&ccache); + } + + kim_ccache_iterator_free (&iterator); + + if (err) { + NSLog (@"Got error %s", kim_error_get_display_string (err)); + } + + return kim_error_free (&err); +} + + +@end diff --git a/src/kim/agent/mac/KerberosAgentController.h b/src/kim/agent/mac/KerberosAgentController.h new file mode 100644 index 000000000..42992dbf3 --- /dev/null +++ b/src/kim/agent/mac/KerberosAgentController.h @@ -0,0 +1,32 @@ +/* + * 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 + + +@interface KerberosAgentController : NSObject { + +} + +@end diff --git a/src/kim/agent/mac/KerberosAgentController.m b/src/kim/agent/mac/KerberosAgentController.m new file mode 100644 index 000000000..9313a8c14 --- /dev/null +++ b/src/kim/agent/mac/KerberosAgentController.m @@ -0,0 +1,41 @@ +/* + * 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 "KerberosAgentController.h" +#import "SelectIdentityController.h" + + +@implementation KerberosAgentController + +// --------------------------------------------------------------------------- + +- (void) applicationDidFinishLaunching: (NSNotification *) notification +{ + SelectIdentityController *controller = [[SelectIdentityController alloc] init]; + int result = [controller runWindow]; + + +} + +@end diff --git a/src/kim/agent/mac/PopupButton.h b/src/kim/agent/mac/PopupButton.h new file mode 100644 index 000000000..5ced9513e --- /dev/null +++ b/src/kim/agent/mac/PopupButton.h @@ -0,0 +1,34 @@ +/* + * 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 + + +@interface PopupButton : NSButton { + +} + +- (void) mouseDown: (NSEvent *) event; + +@end diff --git a/src/kim/agent/mac/PopupButton.m b/src/kim/agent/mac/PopupButton.m new file mode 100644 index 000000000..e4934a9eb --- /dev/null +++ b/src/kim/agent/mac/PopupButton.m @@ -0,0 +1,57 @@ +/* + * 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 "PopupButton.h" + + +@implementation PopupButton + +// --------------------------------------------------------------------------- + +- (void) mouseDown: (NSEvent *) event +{ + if([self isEnabled] && ([self menu] != NULL)) { + NSPoint menuPoint = { 3, [self frame].size.height + 1 }; + + [self highlight: YES]; + + NSEvent *menuEvent = [NSEvent mouseEventWithType: [event type] + location: [self convertPoint: menuPoint toView: NULL] + modifierFlags: [event modifierFlags] + timestamp: [event timestamp] + windowNumber: [[event window] windowNumber] + context: [event context] + eventNumber: [event eventNumber] + clickCount: [event clickCount] + pressure: [event pressure]]; + + [NSMenu popUpContextMenu: [self menu] withEvent: menuEvent forView: self]; + + [self highlight: NO]; + } else { + [super mouseDown: event]; + } +} + +@end diff --git a/src/kim/agent/mac/SelectIdentityController.h b/src/kim/agent/mac/SelectIdentityController.h new file mode 100644 index 000000000..7fd4025e8 --- /dev/null +++ b/src/kim/agent/mac/SelectIdentityController.h @@ -0,0 +1,52 @@ +/* + * 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 +#import "BadgedImageView.h" + + +@interface SelectIdentityController : NSWindowController { + + IBOutlet BadgedImageView *kerberosIconImageView; + IBOutlet NSTextField *headerTextField; + IBOutlet NSTextField *explanationTextField; + + IBOutlet NSTableView *identityTableView; + IBOutlet NSTableColumn *identityTableColumn; + IBOutlet NSTableColumn *timeRemainingTableColumn; + IBOutlet NSButton *addIdentityButton; + IBOutlet NSButton *removeIdentityButton; + IBOutlet NSButton *selectIdentityButton; + IBOutlet NSButton *cancelButton; +} + +- (IBAction) add: (id) sender; +- (IBAction) remove: (id) sender; + +- (IBAction) select: (id) sender; +- (IBAction) cancel: (id) sender; + +- (int) runWindow; + +@end diff --git a/src/kim/agent/mac/SelectIdentityController.m b/src/kim/agent/mac/SelectIdentityController.m new file mode 100644 index 000000000..ac3dc0726 --- /dev/null +++ b/src/kim/agent/mac/SelectIdentityController.m @@ -0,0 +1,112 @@ +/* + * 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 "SelectIdentityController.h" + + +@implementation SelectIdentityController + +// --------------------------------------------------------------------------- + +- (id) initWithWindowNibName: (NSString *) windowNibName +{ + if ((self = [super initWithWindowNibName: windowNibName])) { + NSLog (@"SelectIdentityController initializing"); + + } + + return self; +} + +// --------------------------------------------------------------------------- + +- (id) init +{ + return [self initWithWindowNibName: @"SelectIdentity"]; +} + +// --------------------------------------------------------------------------- + +- (void) dealloc +{ + [super dealloc]; +} + +// --------------------------------------------------------------------------- + +- (void) awakeFromNib +{ + [headerTextField setStringValue: @"Some header text"]; +} + +// --------------------------------------------------------------------------- + +- (void) windowDidLoad +{ + [explanationTextField setStringValue: @"Some explanation text"]; +} + +// --------------------------------------------------------------------------- + +- (IBAction) add: (id) sender +{ +} + +// --------------------------------------------------------------------------- + +- (IBAction) remove: (id) sender +{ +} + +// --------------------------------------------------------------------------- + +- (IBAction) select: (id) sender +{ +} + +// --------------------------------------------------------------------------- + +- (IBAction) cancel: (id) sender +{ +} + +// --------------------------------------------------------------------------- + +- (int) runWindow +{ + //[[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; +} + + +@end diff --git a/src/kim/agent/mac/resources/English.lproj/Authentication.xib b/src/kim/agent/mac/resources/English.lproj/Authentication.xib index 1060d733f..4665e183d 100644 --- a/src/kim/agent/mac/resources/English.lproj/Authentication.xib +++ b/src/kim/agent/mac/resources/English.lproj/Authentication.xib @@ -1,20 +1,18 @@ - + 1050 - 9A581 - 629 - 949 - 343.00 + 9E17 + 670 + 949.33 + 352.00 YES - - - + YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -27,368 +25,778 @@ NSApplication - - 15 - 2 - {{279, 363}, {419, 465}} - 1886912512 - Select a Kerberos Identity - - NSWindow - - - View - - - - 256 - - YES - - - 268 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - + + + 274 + + YES + + + 282 + {{101, 126}, {382, 40}} + + + YES + + 67239424 + 272629760 + Please enter your Kerberos identity + + LucidaGrande + 1.300000e+01 + 1044 - {{17, 386}, {62, 62}} - - - YES - - 537001472 - 33554432 - - NSImage - KerberosAgent + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA - 0 - 0 - 0 - NO - YES - - - - 266 - {{84, 386}, {318, 40}} - - - YES - - 67239424 - 272629760 - Please select a Kerberos Identity - - LucidaGrande - 1.300000e+01 - 1044 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2OQA - + + 6 + System + controlTextColor + + 3 + MAA - - 6 - - controlTextColor - - 3 - MAA - + + + + + + 290 + {{104, 88}, {376, 22}} + + + YES + + -1804468671 + 272630784 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + 6 + System + textColor + + - - - 274 - - YES - - - 2304 - - YES - - - 256 - {380, 300} - - - YES - - - 256 - {380, 17} - - - - - - - -2147483392 - {{-26, 0}, {16, 17}} - - + + + + 292 + {{17, 90}, {82, 17}} + + + YES + + 67239424 + 71303168 + Name: + + + + + + + + + 290 + {{104, 56}, {379, 26}} + + YES + + 343014976 + 272630784 + + + + + + YES + + + 5 + YES + + + + 274 + {15, 0} + + + YES + + YES + + + 1.200000e+01 + 1.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + LucidaGrande + 1.200000e+01 + 16 - - YES - - 2.739741e+02 - 1.499741e+02 - 1.000000e+03 - - 75628032 - 0 - Identity - - - 1.100000e+01 - 3100 - - - 3 - MC4zMzMzMzI5OQA - - - 6 - - headerTextColor - - - - - 1411513920 - 272761856 - Text Cell - - - - - - 3 - YES - YES - - - - 1.003135e+02 - 1.000000e+02 - 1.500000e+02 - - 67239424 - 67108864 - Time Remaining - - - 6 - - headerColor - - 3 - MQA - - - - - - 1140981312 - 71435264 - - - - - - - 3 - YES - YES - - + + 3 + MC4zMzMzMzI5OQA - 3.000000e+00 - 2.000000e+00 - - + + + + 338820672 + 1024 + + + YES + 6 - - gridColor - - 3 - MC41AA - + System + controlBackgroundColor + - 1.700000e+01 - 1119879168 - 5 - 15 - 0 - YES + + 3 + YES + - {{1, 17}, {380, 300}} - - - - - - 6 - - controlBackgroundColor - - - 4 - - - - -2147483392 - {{-30, 17}, {15, 285}} - - - - _doScroller: - 9.684210e-01 - - - - -2147483392 - {{1, -30}, {362, 15}} - - - 1 - - - 9.040768e-01 - - - 2304 - - YES - + 3.000000e+00 + 2.000000e+00 + + + 6 + System + gridColor + + 3 + MC41AA - {{1, 0}, {380, 17}} - - - - - - 4 - + 1.900000e+01 + tableViewAction: + -767524864 + + + + 1 + 15 + 0 + YES - {{17, 60}, {382, 318}} - - - - 562 - - - - - - QSAAAEEgAABBmAAAQZgAAA - - - - 289 - {{320, 12}, {87, 32}} - - - YES - - 67239424 - 134217728 - Select - - - -2038284033 - 1 - - - - - - 200 - 25 + + + + + 292 + {{17, 61}, {82, 17}} + + + YES + + 67239424 + 71303168 + Realm: + + + + + + + + + 289 + {{388, 12}, {98, 32}} + + YES + + 67239424 + 134217728 + Continue + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 289 + {{295, 12}, {93, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 292 + {{18, 16}, {51, 27}} + + YES + + 67239424 + 134217728 + + + LucidaGrande + 1.000000e+01 + 16 + + + -2033434369 + 2 + + NSImage + Gear + + + 400 + 75 - - - 289 - {{156, 12}, {82, 32}} - - - YES - - 67239424 - 134217728 - Cancel - - - -2038284033 - 1 - - - - - - 200 - 25 + + + + 268 + {{20, 126}, {64, 64}} + + BadgedImageView + + + {500, 210} + NSView + + + + 274 + + YES + + + 290 + {{104, 82}, {376, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 289 + {{388, 12}, {98, 32}} + + YES + + 67239424 + 134217728 + Continue + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 289 + {{295, 12}, {93, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 282 + {{101, 126}, {382, 41}} + + YES + + 67239424 + 272629760 + Please enter the Kerberos password for %@ + + + + + + + + + 292 + {{18, 16}, {51, 26}} + + YES + + 67239424 + 134217728 + + + + -2033958657 + 2 + + + + 400 + 75 + + + + + 292 + {{17, 84}, {80, 17}} + + YES + + 68288064 + 71304192 + Password: + + + + + + + + + 294 + {{102, 58}, {380, 18}} + + YES + + -2080244224 + 0 + Remember this password in my keychain + + + 1211912703 + 130 + + NSImage + NSSwitch + + NSSwitch + + + + 200 + 25 - - - 289 - {{238, 12}, {82, 32}} - - - YES - - 67239424 - 134217728 - TmV34oCmA - - - -2038284033 - 1 - - - - - - 200 - 25 + + + + 268 + {{20, 126}, {64, 64}} + + BadgedImageView + + + {500, 210} + NSView + + + + 274 + + YES + + + 266 + {{101, 149}, {382, 17}} + + YES + + 67239424 + 272629760 + %@ + + + + + + + + + 290 + {{226, 62}, {254, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 289 + {{388, 12}, {98, 32}} + + YES + + 67239424 + 134217728 + Continue + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 292 + {{18, 16}, {51, 26}} + + YES + + 67239424 + 134217728 + + + + -2033958657 + 2 + + + + 400 + 75 + + + + + 292 + {{17, 64}, {204, 17}} + + YES + + 68288064 + 71304192 + %@: + + + + + + + + + 274 + {{101, 92}, {382, 49}} + + YES + + 67239424 + 272629760 + %@ + + LucidaGrande + 1.100000e+01 + 3100 + + + + + + + + 268 + {{20, 126}, {64, 64}} + + BadgedImageView + + + + 289 + {{295, 12}, {93, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 1 + + + Gw + 200 + 25 - {419, 465} - - - {{0, 0}, {1920, 1178}} - {213, 129} - {3.40282e+38, 3.40282e+38} + {500, 210} + NSView + + + + 268 + + YES + + + 268 + {{20, 126}, {64, 64}} + + BadgedImageView + + + + 289 + {{404, 12}, {82, 32}} + + YES + + 67239424 + 134217728 + Yes + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 289 + {{322, 12}, {82, 32}} + + YES + + 67239424 + 134217728 + No + + + -2038284033 + 129 + + + 200 + 25 + + + + + 274 + {{101, 60}, {382, 76}} + + YES + + 67239424 + 272760832 + Your password has expired. Would you like to change it? + + + + 3 + MSAwLjk3MDAwMDAzAA + + + + + + + 266 + {{101, 144}, {382, 17}} + + YES + + 67239424 + 272629760 + Kerberos Authentication Failed. + + + + + + + + {500, 210} + NSView + + + + 274 + + YES + + + 268 + {{20, 126}, {64, 64}} + + BadgedImageView + + + + 266 + {{101, 149}, {382, 17}} + + YES + + 67239424 + 272629760 + Kerberos Authentication Failed. + + + + + + + + + 274 + {{101, 65}, {382, 76}} + + YES + + 67239424 + 272760832 + Password incorrect + + + + 3 + MSAwLjk3MDAwMDAzAA + + + + + + + 289 + {{404, 12}, {82, 32}} + + YES + + 67239424 + 134217728 + OK + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 268 + {{314, 12}, {90, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 129 + + + 200 + 25 + + + + {500, 210} + NSView 13 2 - {{378, 247}, {484, 199}} + {{378, 236}, {500, 210}} 1886912512 Authenticate to Kerberos @@ -397,634 +805,18 @@ View + {600, 400} + {484, 199} 256 - - YES - - - 274 - - YES - - - 256 - - YES - - - 289 - {{392, 12}, {82, 32}} - - - - YES - - 67239424 - 134217728 - Done - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 268 - - YES - - YES - - - - - - - - - {{17, 122}, {62, 62}} - - - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - - - - 266 - {{84, 167}, {387, 17}} - - - - YES - - 67239424 - 272629760 - Conclusion - - - - - - - - - 274 - {{84, 60}, {387, 99}} - - - - YES - - 67239424 - 272760832 - Congratulations! You have acquired Kerberos tickets for lxs@ATHENA.MIT.EDU. - - - - 3 - MSAwLjk3MDAwMDAzAA - - - - - - - 289 - {{305, 12}, {91, 32}} - - - - YES - - 67239424 - 134217728 - Go Back - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - {488, 201} - - - - - - {{-4, 0}, {488, 201}} - - - - - YES - - 1 - - - 256 - - YES - - - 268 - - YES - - YES - - - - - - - - - {{20, 119}, {62, 62}} - - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - - - - 266 - {{87, 119}, {387, 51}} - - - YES - - 67239424 - 272629760 - Please enter your Kerberos identity - - - - - - - - - 266 - {{90, 89}, {378, 22}} - - - YES - - -1804468671 - 272630784 - - - - YES - - 6 - - textBackgroundColor - - - - 6 - - textColor - - - - - - - 268 - {{17, 94}, {68, 17}} - - - YES - - 67239424 - 71303168 - Name: - - - - - - - - - 266 - {{90, 57}, {381, 26}} - - - YES - - 343014976 - 272630784 - - - - - - YES - - - 5 - YES - - - - 274 - {15, 0} - - - YES - - YES - - - 1.200000e+01 - 1.000000e+01 - 1.000000e+03 - - 75628032 - 0 - - - - 1.200000e+01 - 16 - - - 3 - MC4zMzMzMzI5OQA - - - - - 338820672 - 1024 - - - YES - - - - 3 - YES - - - - 3.000000e+00 - 2.000000e+00 - - - 1.900000e+01 - tableViewAction: - -767524864 - - - - 1 - 15 - 0 - YES - - - - - - 268 - {{17, 61}, {68, 17}} - - - YES - - 67239424 - 71303168 - Realm: - - - - - - - - - 289 - {{376, 12}, {98, 32}} - - - YES - - 67239424 - 134217728 - Continue - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 292 - {{18, 15}, {51, 27}} - - YES - - 67239424 - 134217728 - - - - 1.000000e+01 - 16 - - - -2033434369 - 2 - - - Gear - - - - 400 - 75 - - - - {488, 201} - - - Select Identity - - - - - 2 - - - 256 - - YES - - - 268 - - YES - - YES - - - - - - - - - {{17, 122}, {62, 62}} - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - - - - 290 - {{87, 60}, {381, 22}} - - YES - - -1804468671 - 272630784 - - - - YES - - - - - - - 289 - {{376, 12}, {98, 32}} - - YES - - 67239424 - 134217728 - - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 289 - {{283, 12}, {93, 32}} - - YES - - 67239424 - 134217728 - - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 266 - {{84, 167}, {387, 17}} - - YES - - 67239424 - 272629760 - Please enter your Kerberos password - - - - - - - - - 274 - {{84, 90}, {387, 69}} - - YES - - 67239424 - 272629760 - Mail wants to connect to the account lxs@mit.edu - - - - - - - - - 292 - {{18, 16}, {51, 26}} - - YES - - 67239424 - 134217728 - - - - -2033958657 - 2 - - - - 400 - 75 - - - - {488, 201} - - Authentication Information - - - - - 3 - - Result - - - - - - - 6 - YES - YES - - - {484, 199} + {500, 210} - {{0, 0}, {1920, 1178}} - {239.32, 129} - {3.40282e+38, 131} - - - - - YES - servicePrincipalString - shortTimeRemainingString - - KerberosCredential - YES - - YES - YES - YES - YES - YES - - - - YES - credentialsArray - principalString - shortTimeRemainingString - - KerberosCache - - YES - YES - YES - YES - YES - - - KerberosCacheCollection - - - - YES - cachesArray - - KerberosCacheCollection - + {484, 221} + {600, 422} + Menu @@ -1033,739 +825,101 @@ VGlja2V0IE9wdGlvbnPigKY - + 1048576 2147483647 - - + + NSImage NSMenuCheckmark - - + + NSImage NSMenuMixedState Q2hhbmdlIFBhc3N3b3Jk4oCmA - + 1048576 2147483647 - - + + YES YES - - + + 1048576 2147483647 - - + + About Kerberos... - - 1048576 - 2147483647 - - - - - - - - Authentication - - YES - - - KerberosAgent - - 1048576 - 2147483647 - - - submenuAction: - - - - YES - - - About KerberosAgent - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - UHJlZmVyZW5jZXPigKY - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - - Services - - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide KerberosAgent - h - 1048576 - 2147483647 - - - - - - Hide Others - - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit KerberosAgent - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - - Window - - - YES - - - Close - w - 1048576 - 2147483647 - - - - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - + 1048576 2147483647 - - - submenuAction: - - - Help - - - YES - - - KerberosAgent Help - ? - 1048576 - 2147483647 - - - - - + + - _NSMainMenu + YES - - - selectNextTabViewItem: - - - - 35 - - - - selectNextTabViewItem: - - - - 65 - - - - selectPreviousTabViewItem: - - - - 66 - - - - selectPreviousTabViewItem: - - - - 68 - - - - performClose: - - - - 300013 - - - - value: arrangedObjects.principalString - - - - - - - value - arrangedObjects.principalString - - YES - - YES - NSAllowsEditingMultipleValuesSelection - NSAlwaysPresentsApplicationModalAlerts - NSConditionallySetsEditable - NSConditionallySetsEnabled - NSContinuouslyUpdatesValue - NSCreatesSortDescriptor - NSMultipleValuesPlaceholder - NSNoSelectionPlaceholder - NSNotApplicablePlaceholder - NSNullPlaceholder - NSRaisesForNotApplicableKeys - NSValidatesImmediately - - - YES - - - - - - - - - - - - - - - 2 - - - 300026 - - - - value: arrangedObjects.shortTimeRemainingString - - - - - - - - arrangedObjects.shortTimeRemainingString - - YES - - YES - - - - - - - - - - - - - - - YES - - - - - - - - - - - - - - - 2 - - - 300027 - - menu - - - - 300036 - - - - popupMenu - - + nextKeyView + + - 300037 + 300173 - nextKeyView - - + nextKeyView + + - 300038 + 300174 - - - - - 300039 - - - - - + menu + - 300040 + 300259 - - + menu + - 300041 + 300261 - content - - - - 300042 - - - - - - + menu + + - 300043 + 300270 - - - - - 300044 - - - - hide: - - - - 300099 - - - - hideOtherApplications: - - - - 300100 - - - - unhide: - - - - 300101 - - - - terminate: - - - - 300102 - - - - performClose: - - - - 300104 - - - - performMiniaturize: - - - - 300105 - - - - performZoom: - - - - 300106 - - - - arrangeInFront: - - - - 300107 - - - - undo: - - - - 300108 - - - - redo: - - - - 300109 - - - - cut: - - - - 300110 - - - - copy: - - - - 300111 - - - - paste: - - - - 300112 - - - - pasteAsPlainText: - - - - 300113 - - - - delete: - - - - 300114 - - - - selectAll: - - - - 300115 - - - - showHelp: - - - - 300116 - - - - orderFrontStandardAboutPanel: - - + menu + + - 300117 + 300271 @@ -1791,115 +945,6 @@ First Responder - - 5 - - - YES - - - - - - - 6 - - - YES - - - - - - - - - - - 7 - - - YES - - - - - - 8 - - - YES - - - - - - 9 - - - YES - - - - - - - - - 10 - - - YES - - - - - - - 11 - - - YES - - - - - - 18 - - - YES - - - - - - 15 - - - YES - - - - - - 16 - - - YES - - - - - - 17 - - - YES - - - - 19 @@ -1908,740 +953,579 @@ - Window1 + Authenticate to Kerberos 20 YES - - 21 - - - YES - - - - - - - - 22 - - - YES - - - - - - 23 - - - YES - - - - - - - - - - - - 43 - - - YES - - - - - - 45 - - - YES - - - - - - 47 - - - YES - - - - - - 48 - - - YES - - - - - - 49 - - - YES - - - - - - 50 - - - YES - - - - - - 24 - - - YES - - - - - - 25 - - - YES - - - - - - - - - - - - - 26 - - - YES - - - - - - 27 - - - YES - - - - - - 28 - - - YES - - - - - - 29 - - - YES - - - - - - 31 - - - YES - - - + -3 + + + Application - 32 - + 300030 + YES - + + + + - + + GearMenu - 33 - - - YES - - - + 300031 + + - 59 - - - YES - - - + 300032 + + - 60 - - - YES - - - - - - - + 300033 + + - 61 - - - YES - - - + 300034 + + - 62 - + 300157 + YES - + + + + + + + + + - + + Enter Identity - 63 - + 300221 + YES - + - + - 64 - + 300163 + YES - + - + - 67 - + 300164 + - YES - - - - - - 100007 - - - - - 100008 - - - - - 100015 - - - - - 100016 - - - - - 100017 - - - - - 100043 - - - - - 100045 - - - - - 100047 - - - - - 100048 - - - - - 100049 - - - - - 100050 - - - - - 100026 - - + YES + + + - 100027 - - + 300162 + + + YES + + + - 100028 - - + 300159 + + + YES + + + - 100029 - - + 300160 + + + YES + + + - 100031 - - + 300165 + + - 100032 - - + 300161 + + + YES + + + - 100033 - - + 300158 + + + YES + + + - 100061 - - + 300172 + + - 100062 - - + 300169 + + - 100063 - - + 300170 + + - 100064 - - + 300171 + + - 100067 - - + 300168 + + - 100009 - - + 300166 + + - 200009 - - + 300167 + + - 300009 - - + 300222 + + - -3 - + 300175 + + + YES + + + + + + + + + - Application + Enter Password - 300010 - + 300179 + YES - + - - - - 300011 - - + - 300018 - - + 300192 + + - 300019 - + 300182 + YES + - + - 300021 - - - CredentialsController + 300178 + + + YES + + + - 300022 - - - CachesController + 300181 + + + YES + + + - 300023 - - - + 300183 + + + YES + + + - 300024 - - - CacheCollectionController + 300180 + + + YES + + + - 300028 - + 300177 + YES - + - + - 300029 - - + 300190 + + - 300030 - - - YES - - - - - - - GearMenu + 300187 + + - 300031 - - + 300184 + + - 300032 - - + 300186 + + - 300033 - - + 300189 + + - 300034 - - + 300185 + + - 300045 - + 300188 + + + + + 300193 + YES - - - - + + + + + + + + - MainMenu + SAM Authentication + + + 300210 + + - 300047 - + 300199 + YES - + - + - 300048 - + 300201 + YES - + - + - 300049 - + 300195 + YES - + - + - 300050 - + 300196 + YES - + - + - 300051 - + 300200 + YES - - - - - + - + - 300052 - - + 300223 + + + YES + + + - 300053 - - + 300197 + + + YES + + + - 300055 - - + 300206 + + - 300057 - - + 300224 + + - 300058 - - + 300203 + + - 300059 - - - YES - - - - - - - - - - - - - + 300207 + + - 300060 - - + 300208 + + - 300061 - - + 300202 + + - 300062 - - + 300204 + + - 300063 - - + 300274 + + + YES + + + + + + + + Expired Password - 300064 - - + 300278 + + + YES + + + - 300065 - - + 300275 + + - 300066 - - + 300288 + + + YES + + + - 300067 - - + 300286 + + + YES + + + - 300068 - + 300284 + YES - + - + + + + 300285 + + - 300069 - - + 300287 + + - 300070 - - + 300289 + + - 300071 - - + 300281 + + - 300072 - + 300211 + YES - + + + + + - - - - 300073 - - + + Result - 300074 - + 300215 + YES - - - - - - - - - + - - - - 300076 - - + - 300078 - - + 300290 + + + YES + + + - 300079 - - + 300212 + + - 300080 - - + 300217 + + + YES + + + - 300081 - - + 300213 + + + YES + + + - 300082 - - + 300214 + + - 300083 - - + 300218 + + - 300084 - - + 300291 + + - 300085 - - + 300216 + + @@ -2651,19 +1535,7 @@ YES -1.IBPluginDependency -2.IBPluginDependency - 10.IBPluginDependency - 10.ImportedFromIB2 - 100009.IBShouldRemoveOnLegacySave - 11.IBPluginDependency - 11.ImportedFromIB2 - 15.IBPluginDependency - 15.ImportedFromIB2 - 16.IBPluginDependency - 16.ImportedFromIB2 - 17.IBPluginDependency - 17.ImportedFromIB2 - 18.IBPluginDependency - 18.ImportedFromIB2 + 19.IBEditorWindowLastContentRect 19.IBPluginDependency 19.IBWindowTemplateEditedContentRect 19.ImportedFromIB2 @@ -2675,42 +1547,7 @@ 19.windowTemplate.minSize 20.IBPluginDependency 20.ImportedFromIB2 - 200009.IBShouldRemoveOnLegacySave - 21.IBPluginDependency - 21.ImportedFromIB2 - 22.IBPluginDependency - 22.ImportedFromIB2 - 23.IBPluginDependency - 23.ImportedFromIB2 - 24.IBPluginDependency - 24.ImportedFromIB2 - 25.IBPluginDependency - 25.ImportedFromIB2 - 26.IBPluginDependency - 26.ImportedFromIB2 - 27.IBPluginDependency - 27.ImportedFromIB2 - 28.IBPluginDependency - 28.ImportedFromIB2 - 29.IBPluginDependency - 29.ImportedFromIB2 - 300009.IBShouldRemoveOnLegacySave - 300010.CustomClassName - 300010.IBPluginDependency - 300010.ImportedFromIB2 - 300018.IBPluginDependency - 300019.IBPluginDependency - 300021.IBPluginDependency - 300021.ImportedFromIB2 - 300022.IBPluginDependency - 300022.ImportedFromIB2 - 300023.IBPluginDependency - 300023.ImportedFromIB2 - 300024.IBPluginDependency - 300024.ImportedFromIB2 - 300028.CustomClassName - 300028.IBPluginDependency - 300028.ImportedFromIB2 + 300030.IBEditorWindowLastContentRect 300030.IBPluginDependency 300030.ImportedFromIB2 300031.IBPluginDependency @@ -2721,188 +1558,135 @@ 300033.ImportedFromIB2 300034.IBPluginDependency 300034.ImportedFromIB2 - 300045.IBPluginDependency - 300045.ImportedFromIB2 - 300045.editorWindowContentRectSynchronizationRect - 300047.IBPluginDependency - 300047.ImportedFromIB2 - 300048.IBPluginDependency - 300048.ImportedFromIB2 - 300049.IBPluginDependency - 300049.ImportedFromIB2 - 300050.IBPluginDependency - 300050.ImportedFromIB2 - 300051.IBPluginDependency - 300051.ImportedFromIB2 - 300051.editorWindowContentRectSynchronizationRect - 300052.IBPluginDependency - 300052.ImportedFromIB2 - 300053.IBPluginDependency - 300053.ImportedFromIB2 - 300055.IBPluginDependency - 300055.ImportedFromIB2 - 300057.IBPluginDependency - 300057.ImportedFromIB2 - 300058.IBPluginDependency - 300058.ImportedFromIB2 - 300059.IBPluginDependency - 300059.ImportedFromIB2 - 300059.editorWindowContentRectSynchronizationRect - 300060.IBPluginDependency - 300060.ImportedFromIB2 - 300061.IBPluginDependency - 300061.ImportedFromIB2 - 300062.IBPluginDependency - 300062.ImportedFromIB2 - 300063.IBPluginDependency - 300063.ImportedFromIB2 - 300064.IBPluginDependency - 300064.ImportedFromIB2 - 300065.IBPluginDependency - 300065.ImportedFromIB2 - 300066.IBPluginDependency - 300066.ImportedFromIB2 - 300067.IBPluginDependency - 300067.ImportedFromIB2 - 300068.IBPluginDependency - 300068.ImportedFromIB2 - 300069.IBPluginDependency - 300069.ImportedFromIB2 - 300070.IBPluginDependency - 300070.ImportedFromIB2 - 300071.IBPluginDependency - 300071.ImportedFromIB2 - 300071.editorWindowContentRectSynchronizationRect - 300072.IBPluginDependency - 300072.ImportedFromIB2 - 300072.editorWindowContentRectSynchronizationRect - 300073.IBPluginDependency - 300073.ImportedFromIB2 - 300074.IBPluginDependency - 300074.ImportedFromIB2 - 300074.editorWindowContentRectSynchronizationRect - 300076.IBPluginDependency - 300076.ImportedFromIB2 - 300078.IBPluginDependency - 300078.ImportedFromIB2 - 300079.IBPluginDependency - 300079.ImportedFromIB2 - 300080.IBPluginDependency - 300080.ImportedFromIB2 - 300081.IBPluginDependency - 300081.ImportedFromIB2 - 300082.IBPluginDependency - 300082.ImportedFromIB2 - 300083.IBPluginDependency - 300083.ImportedFromIB2 - 300084.IBPluginDependency - 300084.ImportedFromIB2 - 300085.IBPluginDependency - 300085.ImportedFromIB2 - 31.IBPluginDependency - 31.ImportedFromIB2 - 32.IBPluginDependency - 32.ImportedFromIB2 - 33.IBPluginDependency - 33.ImportedFromIB2 - 43.IBPluginDependency - 43.ImportedFromIB2 - 45.CustomClassName - 45.IBPluginDependency - 45.ImportedFromIB2 - 47.IBPluginDependency - 47.ImportedFromIB2 - 48.IBPluginDependency - 48.ImportedFromIB2 - 49.IBPluginDependency - 49.ImportedFromIB2 - 5.IBPluginDependency - 5.IBWindowTemplateEditedContentRect - 5.ImportedFromIB2 - 5.NSWindowTemplate.visibleAtLaunch - 5.editorWindowContentRectSynchronizationRect - 5.windowTemplate.hasMaxSize - 5.windowTemplate.hasMinSize - 5.windowTemplate.maxSize - 5.windowTemplate.minSize - 50.IBPluginDependency - 50.ImportedFromIB2 - 59.IBPluginDependency - 59.ImportedFromIB2 - 6.IBPluginDependency - 6.ImportedFromIB2 - 60.IBPluginDependency - 60.ImportedFromIB2 - 61.IBPluginDependency - 61.ImportedFromIB2 - 62.IBPluginDependency - 62.ImportedFromIB2 - 63.IBPluginDependency - 63.ImportedFromIB2 - 64.IBPluginDependency - 64.ImportedFromIB2 - 67.IBPluginDependency - 67.ImportedFromIB2 - 7.IBPluginDependency - 7.ImportedFromIB2 - 8.IBPluginDependency - 8.ImportedFromIB2 - 9.IBPluginDependency - 9.ImportedFromIB2 + 300157.IBEditorWindowLastContentRect + 300157.IBPluginDependency + 300158.IBPluginDependency + 300158.ImportedFromIB2 + 300159.IBPluginDependency + 300159.ImportedFromIB2 + 300160.IBPluginDependency + 300160.ImportedFromIB2 + 300161.IBPluginDependency + 300161.ImportedFromIB2 + 300162.IBPluginDependency + 300162.ImportedFromIB2 + 300163.IBPluginDependency + 300163.ImportedFromIB2 + 300164.CustomClassName + 300164.IBPluginDependency + 300164.ImportedFromIB2 + 300165.IBPluginDependency + 300175.IBEditorWindowLastContentRect + 300175.IBPluginDependency + 300177.CustomClassName + 300177.IBPluginDependency + 300177.ImportedFromIB2 + 300178.IBPluginDependency + 300178.ImportedFromIB2 + 300179.IBPluginDependency + 300179.ImportedFromIB2 + 300180.IBPluginDependency + 300180.ImportedFromIB2 + 300181.CustomClassName + 300181.IBPluginDependency + 300181.ImportedFromIB2 + 300182.IBPluginDependency + 300183.IBPluginDependency + 300184.IBPluginDependency + 300185.IBPluginDependency + 300192.IBPluginDependency + 300193.IBEditorWindowLastContentRect + 300193.IBPluginDependency + 300195.IBPluginDependency + 300195.ImportedFromIB2 + 300196.CustomClassName + 300196.IBPluginDependency + 300196.ImportedFromIB2 + 300197.IBPluginDependency + 300197.ImportedFromIB2 + 300199.CustomClassName + 300199.IBPluginDependency + 300199.ImportedFromIB2 + 300200.IBPluginDependency + 300201.IBPluginDependency + 300201.ImportedFromIB2 + 300203.IBPluginDependency + 300210.IBPluginDependency + 300211.IBEditorWindowLastContentRect + 300211.IBPluginDependency + 300212.IBPluginDependency + 300213.IBPluginDependency + 300213.ImportedFromIB2 + 300215.IBPluginDependency + 300215.ImportedFromIB2 + 300217.IBPluginDependency + 300217.ImportedFromIB2 + 300221.IBPluginDependency + 300221.ImportedFromIB2 + 300223.IBPluginDependency + 300223.ImportedFromIB2 + 300274.IBEditorWindowLastContentRect + 300274.IBPluginDependency + 300275.IBPluginDependency + 300278.IBPluginDependency + 300278.ImportedFromIB2 + 300284.IBPluginDependency + 300285.IBPluginDependency + 300286.IBPluginDependency + 300286.ImportedFromIB2 + 300288.IBPluginDependency + 300288.ImportedFromIB2 + 300290.IBPluginDependency + 300291.IBPluginDependency YES - - - - - - - - - - - - - - - - - {{932, 664}, {484, 199}} - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{546, 698}, {500, 210}} + com.apple.InterfaceBuilder.CocoaPlugin + {{546, 698}, {500, 210}} + {{932, 664}, {484, 199}} - {3.40282e+38, 109} - {239.32, 107} - + {600, 400} + {484, 199} + com.apple.InterfaceBuilder.CocoaPlugin + {{492, 1049}, {203, 73}} + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{139, 469}, {500, 210}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin PopupButton com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + {{223, 184}, {500, 210}} com.apple.InterfaceBuilder.CocoaPlugin + NSSecureTextField com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2914,144 +1698,54 @@ PopupButton com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - - {{21, 1069}, {314, 20}} - - - - - - - - - - - {{203, 976}, {197, 93}} - - - - - - - - - - - - - {{33, 886}, {240, 183}} - - - - - - - - - - - - - - - - - - - - - - - - - {{273, 1003}, {64, 6}} - - - {{274, 1046}, {211, 23}} - - - - - {{159, 896}, {253, 173}} - - - - - - - - - - - - - - - - - - - - - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{136, 743}, {500, 210}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin NSSecureTextField - - - - - - - - - - {{503, 256}, {419, 465}} - - - {{503, 256}, {419, 465}} - - - {3.40282e+38, 3.40282e+38} - {213, 107} - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + PopupButton + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{467, 111}, {500, 210}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{619, 442}, {500, 210}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -3074,78 +1768,33 @@ - 300117 + 300293 YES - PopupButton - NSButton - - YES - - YES - - - YES - - - - - NSMenu - + BadgedImageView + NSView - IBUserSource - + IBProjectSource + ../Sources/kim/agent/mac/BadgedImageView.h - KerberosCacheCollection + FirstResponder NSObject - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - - IBProjectSource - ../../../Common/Headers/KerberosCacheCollection.h + IBUserSource + - FirstResponder - - - YES - - YES - - - YES - - + PopupButton + NSButton - YES - - YES - - - YES - + popupMenu + NSMenu IBUserSource @@ -3155,544 +1804,7 @@ 0 - ../../../Projects/KerberosIdentityManagement.xcodeproj + ../../../../../../Projects/Kerberos5.xcodeproj 3 - - YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDBAALAAwAMQA1ADYAPAA9 -AEMAWwBcAF0AYQBlAGgACwB1AH4AjgCXAJgAmQCaAJsAnACdAKEAogCwALUAtgC3ALoAvQDDAMwAzQDa -ANsA4wDkAOcA8QDyAPMA+AD6AP8BAAEDAQcBCgEiASoBOQE9AVoBWwFjAW0BbgFxAXgBeQF8AYEBkwGa -AZsBoAGjAagBqQGsAbUBtgG5AcMBygHLAdAB0QHUAd0B4QHmAecB6gHsAe0B8gHzAfYCAgIDAgQCBwIR -AhICFgIXAhgCGwIkAiUCOAI5AjoCPAI/AkICSgJLAlMCVAJWAl4CXwJnAmgCagALAmsCbQJuAm8CcAJz -AoACgQKCAoQChgALAo0CkQKiAqYCrgK2Ar8CwALIAskCywLWAt8C4ALpAu4C7wL4Av8DAAMBAwoDEgMT -AxYDFwMfAyADIgMjAyQDKgM0AzUDOwNGA1ADWQNaA2IDZgNnA28DdgN3A38DgAOIA5IDlwOYA50DngOf -A6cDqAOwAAsDsQPAA8IACwPUAAsD1QPZAKwD4gPoA+wD7gP3A/gD+wP+BAEEAgQJBAoEEgQTBBsEHAQe -BCkCQQQqBCsENwQ6BD4EPwMiBEIEQwRGBE0ETgRTBF0EZgLfBG8EcwR9AQkEfgR/BIcEEgSOBJYEmASf -BKAEqASqAu4EsQS4BLkEwATBBMgEyQQpBNIE0wMiBNwE3QTkBOUE5gToAAsCbQTpBOoE6wUQBRcFGAUc -BSEFIgUmBTYFPAU9BT4FQgVDBUcFSAVLBUwFUQVWBVcFXgVlBWYFbQVuBXkFgAWBBYMFhAWHBYwFkwWY -BZkFmgWeBaUFqQWqBasFrAWwBbcFuAW5BboFvwXABcQFywXMBc0F0QXYBdkF2gXbBd8F5gXqBesF7AXt -BfIF+gX7BfwANQX/BgAGBAYLBgwGDQYOBhIGGQYaBhsGHwYmBicGKAYpBRcGLgYyBjkGOgY7BjwFIQZB -BbkGRgZLBlAGYwZoBmkGagZrBm0GbwZ0Bn4GhAaFBmkGhgaHBokGigaPBpAGlAabBpwGnQaeBqMGqAat -BrIGtga3BrgGuga8BsEGyAbJBsoGzwbWBtcG2AbZBt4G5QbmBucG7AbzBvQG9Qb6BrcG/QcBBwgHCQcK -BwsHFwcYBxkHGgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgCvAIcCOQdFB0gHSwdTB1QHVQdxB+gH7Qfu -B/UAtgf/CAAIDggXCB4IHwggCCkIMgf/CDMIOAg6CD0IPghHCFAIUQhaB/8IWwhnCHAIeQf/CHoIfAiE -CI0IjgiXB/8ImAiaCJ4InwihCRgJkAoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUKFgoXChgKGQoa -ChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoyCjMKNAo1CjYKNwo4 -CjkKOgo7CjwKPQBnCj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApV -ClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpz -CnQKdQp2CncKeAp5CnoKgAqGCyALugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sA7gvM -C80LzgvPC9AL0QvSC9ML1AvVC9YL1wvYC9kL2gvbAVEL3AvdC94L3wvgC+EL4gvjC+QL5QvmC+cL6Avp -C+oL6wvsC+0L7gvvC/AL8QvyC/ML9Av1C/YAWAv3C/gL+Qv6C/sL/Av9C/4L/wwADAEMAgwDDAQMBQIM -DAYMBwwIDAkMCgwLDAwMDQwODA8MEAwRDBIMEwwUDBUMFgwXAi8MGAwZDBoMGwwcDB0MHgwfDCAMIQwi -DCMMJAPrDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/ -DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDE4MUQxUVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYA -FwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYk -Y2xhc3NdTlNPYmplY3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNW -YWx1ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5T -T2lkc0tleXNdTlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFu -YWdlcl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlP -aWRzS2V5c1lOU05leHRPaWRcTlNPaWRzVmFsdWVzgAKBAwOBAcWBAmaBAwKBARCBAfCABYECZYECZ4EB -8YEDAIAAgAaBAe+BAwESAASUVoECaNIADgAyADMANFtOU0NsYXNzTmFtZYAEgANdTlNBcHBsaWNhdGlv -btIANwA4ADkAOlgkY2xhc3Nlc1okY2xhc3NuYW1logA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3Rf -EBBJQkNvY29hRnJhbWV3b3Jr0gAOAD4APwBAWk5TLm9iamVjdHOAGKIAQQBCgAeAftwARAAOAEUARgBH -AEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFpcTlNXaW5kb3dWaWV3XE5TU2NyZWVu -UmVjdF1OU1dpbmRvd1RpdGxlWU5TV1RGbGFnc11OU1dpbmRvd0NsYXNzXE5TV2luZG93UmVjdFlOU01h -eFNpemVfEA9OU1dpbmRvd0JhY2tpbmdfEBFOU1dpbmRvd1N0eWxlTWFza1lOU01pblNpemVbTlNWaWV3 -Q2xhc3OADYB9gHqACRJweAAAgAqACIB8EAIQD4B7gAxfEBh7ezI3OSwgMzYzfSwgezQxOSwgNDY1fX1f -EBpTZWxlY3QgYSBLZXJiZXJvcyBJZGVudGl0edIADgBeAF8AYFlOUy5zdHJpbmeAC1hOU1dpbmRvd9IA -NwA4AGIAY6MAYwBkADtfEA9OU011dGFibGVTdHJpbmdYTlNTdHJpbmfSAA4AXgBfAGeAC1RWaWV31wBp -AA4AagBrAGwAYABtAG4AbwBwAHEAcgBuAHRfEA9OU05leHRSZXNwb25kZXJaTlNTdWJ2aWV3c1hOU3ZG -bGFnc1tOU0ZyYW1lU2l6ZVtOU1N1cGVydmlld4AOgHmADxEBAIB3gA6AeNIADgA+AHYAd4BSpgB4AHkA -egB7AHwAfYAQgCGAMoBlgG2ActoAaQAOAH8AgACBAIIAawCDAGAAbQBPAIUAhgCHAIgAiQCKAIcAbgBP -V05TRnJhbWVaTlNFZGl0YWJsZVZOU0NlbGxbTlNEcmFnVHlwZXNZTlNFbmFibGVkgA2AIIAZCYAagBER -AQwJgA6ADdIADgA+AD8AkIAYpgCRAJIAkwCUAJUAloASgBOAFIAVgBaAF18QGUFwcGxlIFBERiBwYXN0 -ZWJvYXJkIHR5cGVfEBlBcHBsZSBQTkcgcGFzdGVib2FyZCB0eXBlXxAxTmVYVCBFbmNhcHN1bGF0ZWQg -UG9zdFNjcmlwdCB2MS4yIHBhc3RlYm9hcmQgdHlwZV8QFU5TRmlsZW5hbWVzUGJvYXJkVHlwZV8QHk5l -WFQgVElGRiB2NC4wIHBhc3RlYm9hcmQgdHlwZV8QGkFwcGxlIFBJQ1QgcGFzdGVib2FyZCB0eXBl0gA3 -ADgAngCfowCfAKAAO1xOU011dGFibGVTZXRVTlNTZXRfEBV7ezE3LCAzODZ9LCB7NjIsIDYyfX3YAKMA -DgCkAKUApgCnAKgAqQCqAKsArACtAKwArACuAK9bTlNDZWxsRmxhZ3NXTlNTdHlsZVpOU0NvbnRlbnRz -V05TQWxpZ25XTlNTY2FsZVxOU0NlbGxGbGFnczJaTlNBbmltYXRlcxIgAf4AgB8QAIAbEgIAAAAI0wAO -ADIAsQCyALMAtF5OU1Jlc291cmNlTmFtZYAegByAHVdOU0ltYWdlXUtlcmJlcm9zQWdlbnTSADcAOAC4 -ALmiALkAO18QEE5TQ3VzdG9tUmVzb3VyY2XSADcAOAC7ALyjALwAgQA7W05TSW1hZ2VDZWxs0gA3ADgA -vgC/pQC/AMAAwQDCADtbTlNJbWFnZVZpZXdZTlNDb250cm9sVk5TVmlld1tOU1Jlc3BvbmRlctgAaQAO -AH8AgQBrAIMAYABtAE8AxQDGAMcAyACHAG4AT4ANgDGAIoAjEQEKCYAOgA1fEBZ7ezg0LCAzODZ9LCB7 -MzE4LCA0MH192ACjAA4AzgClAM8A0ACoANEA0gDTANQA1QDWAHkA2ADZXxARTlNCYWNrZ3JvdW5kQ29s -b3JZTlNTdXBwb3J0XU5TQ29udHJvbFZpZXdbTlNUZXh0Q29sb3ISBAH+AIAwgCiAJIAlgCESEEAAAIAt -XxAhUGxlYXNlIHNlbGVjdCBhIEtlcmJlcm9zIElkZW50aXR51AAOANwA3QDeAN8A4ADhAOJWTlNTaXpl -Vk5TTmFtZVhOU2ZGbGFnc4AnI0AqAAAAAAAAgCYRBBRcTHVjaWRhR3JhbmRl0gA3ADgA5QDmogDmADtW -TlNGb2501QAOAOgA6QDqAOsA7ADtAO4A7wDwV05TQ29sb3JcTlNDb2xvclNwYWNlW05TQ29sb3JOYW1l -XU5TQ2F0YWxvZ05hbWWALIArEAaAKoApVlN5c3RlbVxjb250cm9sQ29sb3LTAA4A6QD0AOwA9gD3V05T -V2hpdGWALBADSzAuNjY2NjY2NjkA0gA3ADgA+QDoogDoADvVAA4A6ADpAOoA6wDsAPwA7gD9APCALIAv -gC6AKV8QEGNvbnRyb2xUZXh0Q29sb3LTAA4A6QD0AOwA9gECgCxCMADSADcAOAEEAQWkAQUBBgCBADtf -EA9OU1RleHRGaWVsZENlbGxcTlNBY3Rpb25DZWxs0gA3ADgBCAEJpQEJAMAAwQDCADtbTlNUZXh0Rmll -bGTfEA8AaQELAA4AfwEMAQ0BDgBqAQ8AawBgAG0BEAERARIATwEUARUBFgEXARgBGQEaARsBHABuAE8B -HwEgASBbTlNIU2Nyb2xsZXJYTlNzRmxhZ3NcTlNDb3JuZXJWaWV3XxAQTlNIZWFkZXJDbGlwVmlld1xO -U1Njcm9sbEFtdHNbTlNWU2Nyb2xsZXJdTlNOZXh0S2V5Vmlld11OU0NvbnRlbnRWaWV3gA2AX4BkgGMR -AjKAPIA5gDNPEBBBIAAAQSAAAEGYAABBmAAAEQESgA6ADYBbgDSANNIADgA+AHYBJIBSpQEgAR8BFAEZ -ARiANIBbgF+AOYA82wBpAA4AfwErAGoAawEsAGABLQBtAREAegEvATABMQEyATMBNABuATYAegE0WU5T -Y3ZGbGFnc1lOU0RvY1ZpZXdZTlNCR0NvbG9ygDKAWoBXEASANREJAIA2gA6AWIAygDbSAA4APgB2ATuA -UqEBNIA23xAUAGkBPgAOAT8BQADOAUEBDQFCAUMBRABrAGwAgwBgAUUBRgBtAUcBSAEgAKwBSgFLAUwB -TQCHARgBUAFRAVIAcQFTAIcAbgFWAFgBIAFYAVlfEB9OU0RyYWdnaW5nU291cmNlTWFza0Zvck5vbkxv -Y2FsWU5TVHZGbGFnc1xOU0hlYWRlclZpZXdfEBJOU0FsbG93c1R5cGVTZWxlY3RfEBdOU0ludGVyY2Vs -bFNwYWNpbmdXaWR0aF8QGU5TQ29sdW1uQXV0b3Jlc2l6aW5nU3R5bGVfEBhOU0ludGVyY2VsbFNwYWNp -bmdIZWlnaHRbTlNHcmlkQ29sb3JfEBxOU0RyYWdnaW5nU291cmNlTWFza0ZvckxvY2FsXk5TVGFibGVD -b2x1bW5zW05TUm93SGVpZ2h0gDSAVhJCwAAAgDiAUAmAPCNACAAAAAAAABAFI0AAAAAAAAAAgDcJgA6A -U4A0gD8jQDEAAAAAAABaezM4MCwgMzAwfdcAaQAOAGsAbABgAG0BXAEZAV4AcQFfAG4BGQE0W05TVGFi -bGVWaWV3gDmAO4A6gA6AOYA22wBpAA4AfwErAGoAawEsAGABLQBtAREAegEvAWYBMQFnATMBTABuATYA -egFMgDKAWoBigGGAOIAOgFiAMoA4WXszODAsIDE3fdIANwA4AW8BcKQBcADBAMIAO18QEU5TVGFibGVI -ZWFkZXJWaWV31gBpAA4AfwBrAGAAbQB6AXMBdAF1AG4AeoAygD6APRP/////gAABAIAOgDJfEBR7ey0y -NiwgMH0sIHsxNiwgMTd9fdIANwA4AXoBe6QBewDBAMIAO11fTlNDb3JuZXJWaWV30gAOAD4AdgF+gFKi -AX8BgIBAgEvaAYIADgGDAYQBhQGGAYcBiAGJAVwAhwGLAYwBjQGOAPYBjwGQAIcBNF5OU0lzUmVzaXpl -YWJsZVxOU0hlYWRlckNlbGxXTlNXaWR0aFpOU0RhdGFDZWxsXk5TUmVzaXppbmdNYXNrWk5TTWluV2lk -dGhaTlNNYXhXaWR0aFxOU0lzRWRpdGFibGUJgEqAQSNAcR+WAAAAAIBII0BivywAAAAAI0CPQAAAAAAA -CYA21wCjAA4AzgClAM8AqADRAZQBlQGWAZcBmACsAZkSBIH+AIBHgESAQoBDgEVYSWRlbnRpdHnUAA4A -3ADdAN4A3wGdAOEBn4AnI0AmAAAAAAAAgCYRDBzTAA4A6QD0AOwA9gGigCxLMC4zMzMzMzI5OQDVAA4A -6ADpAOoA6wDsAPwA7gGmAPCALIAvgEaAKV8QD2hlYWRlclRleHRDb2xvctIANwA4AaoBq6UBqwEFAQYA -gQA7XxARTlNUYWJsZUhlYWRlckNlbGzYAKMADgDOAKUAzwDQAKgA0QGtANMA1AGwAZgBNAGzANkSVCH+ -QIAwgCiASYBDgDYSEEIEAIAtWVRleHQgQ2VsbNIANwA4AbcBuKIBuAA7XU5TVGFibGVDb2x1bW7aAYIA -DgGDAYQBhQGGAYcBiAGJAVwAhwGLAbwBvQG+APYBvwHAAIcBNAmASoBMI0BZFBAAAAAAgFEjQFkAAAAA -AAAjQGLAAAAAAAAJgDbXAKMADgDOAKUAzwCoANEA0gGVAcUBxgGYAcgBmYBHgE6ATYBDEgQAAACARV5U -aW1lIFJlbWFpbmluZ9UADgDoAOkA6gDrAOwBTQDuAc4A8IAsgFCAT4ApW2hlYWRlckNvbG9y0wAOAOkA -9ADsAPYB04AsQjEA2ACjAA4AzgClAM8A0ACoANEB1QDTANQBsAGYATQB2wDZEkQB/kCAMIAogEmAQ4A2 -EgRCBACALdIANwA4Ad4B36MB3wHgADteTlNNdXRhYmxlQXJyYXlXTlNBcnJhedUADgDoAOkA6gDrAOwB -4wDuAeQA8IAsgFWAVIApWWdyaWRDb2xvctMADgDpAPQA7AD2AemALEQwLjUA0gA3ADgB6wFcpQFcAMAA -wQDCADtfEBV7ezEsIDE3fSwgezM4MCwgMzAwfX3VAA4A6ADpAOoA6wDsAO0A7gHwAPCALIArgFmAKV8Q -FmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3LSADcAOAH0AfWkAfUAwQDCADtaTlNDbGlwVmlld9kAaQH3AA4A -fwBrAGAB+ABtAfkAegB6AfwB/QF1AG4B/wB6AgFYTlNUYXJnZXRYTlNBY3Rpb25ZTlNQZXJjZW50gDKA -MoBegFyADoBdgDIjP+79TiAAAABfEBZ7ey0zMCwgMTd9LCB7MTUsIDI4NX19XF9kb1Njcm9sbGVyOtIA -NwA4AgUCBqUCBgDAAMEAwgA7Wk5TU2Nyb2xsZXLaAGkB9wAOAH8BDABrAGAB+ABtAfkAegB6AfwCCwIM -AXUAbgH/AHoCEIAygDKAXoBgEAGADoBdgDIjP+zuMmAAAABfEBV7ezEsIC0zMH0sIHszNjIsIDE1fX3S -AA4APgB2AhSAUqEBTIA4XxATe3sxLCAwfSwgezM4MCwgMTd9fV8QFnt7MTcsIDYwfSwgezM4MiwgMzE4 -fX3SADcAOAIZAhqkAhoAwQDCADtcTlNTY3JvbGxWaWV32ABpAA4AfwCBAGsAgwBgAG0ATwIdAh4CHwIg -AIcAbgBPgA2AbIBmgGcRASEJgA6ADV8QFXt7MzIwLCAxMn0sIHs4NywgMzJ9fd0AowAOAiYCJwIoAikC -KgClAM8A0AIrAKgCLADSAi0CLgIvAgwA1gIxAjIA1gB7AjUCNgI3XxATTlNBbHRlcm5hdGVDb250ZW50 -c18QEk5TUGVyaW9kaWNJbnRlcnZhbF5OU0J1dHRvbkZsYWdzMl8QEE5TQWx0ZXJuYXRlSW1hZ2VfEA9O -U0tleUVxdWl2YWxlbnRfEA9OU1BlcmlvZGljRGVsYXldTlNCdXR0b25GbGFnc4BrgGkQGYAlgGqAaIAl -gGUQyBIIAAAAE/////+GgkD/VlNlbGVjdFDSAA4AXgBfAjmAC9IANwA4Aj0CPqQCPgEGAIEAO1xOU0J1 -dHRvbkNlbGzSADcAOAJAAkGlAkEAwADBAMIAO1hOU0J1dHRvbtgAaQAOAH8AgQBrAIMAYABtAE8CHQJF -AkYCIACHAG4AT4ANgGyAboBvCYAOgA1fEBV7ezE1NiwgMTJ9LCB7ODIsIDMyfX3dAKMADgImAicCKAIp -AioApQDPANACKwCoAiwA0gItAi4CLwIMANYCTwJQANYAfAI1AjYCN4BrgGmAJYBxgHCAJYBtVkNhbmNl -bNIADgBeAF8COYAL2ABpAA4AfwCBAGsAgwBgAG0ATwIdAlkCWgIgAIcAbgBPgA2AbIBzgHQJgA6ADV8Q -FXt7MjM4LCAxMn0sIHs4MiwgMzJ9fd0AowAOAiYCJwIoAikCKgClAM8A0AIrAKgCLADSAi0CLgIvAgwA -1gJjAmQA1gB9AjUCNgI3gGuAaYAlgHaAdYAlgHJkAE4AZQB3ICbSAA4AXgBfAjmAC1p7NDE5LCA0NjV9 -0gA3ADgCbADBowDBAMIAO18QFnt7MCwgMH0sIHsxOTIwLCAxMTc4fX1aezIxMywgMTI5fV8QGnszLjQw -MjgyZSszOCwgMy40MDI4MmUrMzh90gA3ADgCcQJyogJyADtfEBBOU1dpbmRvd1RlbXBsYXRl3QBEAA4A -RQJ0AEYARwBIAEkASgBLAEwATQBOAnUAUAJ3Ai4CeQBTAnoCewJ8AFcCfQJ+An9fEBNOU0ZyYW1lQXV0 -b3NhdmVOYW1lgIOAfYEBDYBpgICAgYB/gQEPEA2BAQ6Agl8QGHt7Mzc4LCAyNDd9LCB7NDg0LCAxOTl9 -fV8QGEF1dGhlbnRpY2F0ZSB0byBLZXJiZXJvc9IADgBeAF8AYIAL0gAOAF4AXwBngAvXAGkADgBqAGsA -bABgAG0ChwBvAokAcQKKAocCjICEgHmAhYEBC4CEgQEM0gAOAD4AdgKPgFKhApCAht4AaQAOApIBPwB/ -AOYAagBrAGACkwBtApQBEQKVAnUClwKYAO4CmQDWApsBHAKHAIcCdQCHAqACoV5OU1RhYlZpZXdJdGVt -c18QEU5TRHJhd3NCYWNrZ3JvdW5kXxAWTlNBbGxvd1RydW5jYXRlZExhYmVsc18QFU5TU2VsZWN0ZWRU -YWJWaWV3SXRlbYCDgQEKgKOAooAlgIeAhAmAgwmAiIEBB9IADgA+AHYCpIBSoQKggIjYAGkADgBqAGsA -bABgAG0BEQKQAG8CqQBxAqoChwKQAq2AhoB5gImAoYCEgIaAj9IADgA+AHYCsIBSpQKxAq0CswK0ArWA -ioCPgJKAlYCZ2QBpAA4AfwCBAGsAgwBgAG0BEQKgAh0CuQK6AiAAhwKHAqACkICIgGyAi4CMCYCEgIiA -hl8QFXt7MzkyLCAxMn0sIHs4MiwgMzJ9fd0AowAOAiYCJwIoAikCKgClAM8A0AIrAKgCLADSAi0CLgIv -AgwA1gLEAsUA1gKxAjUCNgI3gGuAaYAlgI6AjYAlgIpURG9uZdIADgBeAF8COYAL2wBpAA4AfwCAAIEA -ggBrAIMAYABtARECoACFAs4AhwLQAtEAigCHAocCoAKzgIiAIICRCYCTgJAJgISAiICS0gAOAD4APwLY -gBimAJEAkgCTAJQAlQCWgBKAE4AUgBWAFoAXXxAVe3sxNywgMTIyfSwgezYyLCA2Mn192QBpAA4AfwCB -AGsAgwBgAG0BEQKgAMUC4wLkAMgAhwKHAqACtICIgDGAlICWCYCEgIiAldgAowAOAKQApQCmAKcAqACp -AuoAqwCsAK0ArACsAK4ArxIAAf4AgB+AGwhfEBZ7ezg0LCAxNjd9LCB7Mzg3LCAxN3192QBpAA4AfwCB -AGsAgwBgAG0BEQKgAMUC8gLzARwAhwKHAqACtYCIgDGAmICaCYCEgIiAmdgAowAOAM4ApQDPANAAqADR -ANIA0wDUAvsA1gKzANgA2YAwgCiAl4AlgJKALVpDb25jbHVzaW9uXxAVe3s4NCwgNjB9LCB7Mzg3LCA5 -OX192QBpAA4AfwCBAGsAgwBgAG0BEQKgAh0DBAMFAiAAhwKHAqACsYCIgGyAnYCeCYCEgIiAitgAowAO -AM4ApQDPANAAqADRANIA0wMMAw0BmAK0AxAA2YAwgJyAm4BDgJUSEEIAAIAtXxBLQ29uZ3JhdHVsYXRp -b25zISBZb3UgaGF2ZSBhY3F1aXJlZCBLZXJiZXJvcyB0aWNrZXRzIGZvciBseHNAQVRIRU5BLk1JVC5F -RFUu0wAOAOkA9ADsAPYDFYAsTTEgMC45NzAwMDAwMwBfEBV7ezMwNSwgMTJ9LCB7OTEsIDMyfX3dAKMA -DgImAicCKAIpAioApQDPANACKwCoAiwA0gItAi4CLwIMANYDGwMcANYCtQI1AjYCN4BrgGmAJYCggJ+A -JYCZV0dvIEJhY2vSAA4AXgBfAjmAC1p7NDg4LCAyMDF9XxAVe3stNCwgMH0sIHs0ODgsIDIwMX190gAO -AD4AdgMmgFKjAycDKAKhgKSA5IEBB9YADgMrAMEDLADoAy0DLgMvAzACkADUAzNcTlNJZGVudGlmaWVy -WU5TVGFiVmlld1dOU0xhYmVsgOOApYCmgIaAKIDiUTHWAGkADgBqAGsAbAERACsAbwM4AHEDOQM6gACA -eYCngOGAqNIADgA+AHYDPYBSqAM6Az8DQANBA0IDQwNEA0WAqICrgLGAroC8gLOA04DY2gBpAA4AfwCA -AIEAggBrAIMAbQERAzAAhQNJAIcDSwNMAIoAhwMwAz+ApoAggKoJgKyAqQmApoCr0gAOAD4APwNSgBim -AJEAkgCTAJQAlQCWgBKAE4AUgBWAFoAXXxAVe3syMCwgMTE5fSwgezYyLCA2Mn192ABpAA4AfwCBAGsA -gwBtAREDMADFA10DXgDIAIcDMANBgKaAMYCtgK8JgKaArtgAowAOAKQApQCmAKcAqACpAuoAqwCsAK0A -rACsAK4Ar4AfgBsIXxAWe3s4NywgMTE5fSwgezM4NywgNTF9fdgAaQAOAH8AgQBrAIMAbQERAzAAxQNq -A2sAigCHAzADQICmgDGAuYC6CYCmgLHYAKMADgDOAKUAzwDQAKgA0QDSANMA1ANyANYDPwDYANmAMIAo -gLCAJYCrgC1fECNQbGVhc2UgZW50ZXIgeW91ciBLZXJiZXJvcyBpZGVudGl0edgAaQAOAH8AgQBrAIMA -bQERAzAAxQN6A3sAyACHAzADQ4CmgDGAsoC0CYCmgLNfEBV7ezkwLCA4OX0sIHszNzgsIDIyfX3YAGkA -DgB/AIEAawCDAG0BEQMwAMUDgwOEAIoAhwMwA0KApoAxgNCA0QmApoC82QCjAA4AzgClAM8A0ACoApMA -0QOJANMDiwIuANYDQAOPAIcDkRP/////lHH+QYAwgLWAaYAlgLESEEAEAAmAt9UADgDoAOkA6gDrAOwB -TQDuA5UA8IAsgFCAtoApXxATdGV4dEJhY2tncm91bmRDb2xvctUADgDoAOkA6gDrAOwA/ADuA5sA8IAs -gC+AuIApWXRleHRDb2xvcl8QFHt7MTcsIDk0fSwgezY4LCAxN3192ACjAA4AzgClAM8A0ACoANEA0gDT -ANQDogDWA0EDpQDZgDCAKIC7gCWArhIEQAAAgC1VTmFtZTrYAGkADgB/AIEAawCDAG0BEQMwA6oDqwOs -AMgAhwMwA6+ApoDPgL2AvwmApoC+XxAVe3s5MCwgNTd9LCB7MzgxLCAyNn193QOyAKMADgDOAKUAzwDQ -AKgCkwOzAVwDtADRA0IDtgO3A4sDuQDWA0IDjwCHAVEDvQCHANlaTlNEZWxlZ2F0ZV8QEk5TVmlzaWJs -ZUl0ZW1Db3VudF8QFU5TSGFzVmVydGljYWxTY3JvbGxlcoC8EhRx/kCAzoC1gMCAJYC8CYDBCYAt0gAO -AF4AXwI5gAvfEBYAaQOyAfcBPwE+AA4AzgFBAUIBQwFEA8MAawBsAIMAYAH4AUUBRgBtAUcBSAPEA6wD -rAPHAKwDyAE2AIcBUAIMAVIDrAEcA8wAhwPOA88BVgBYA8QD0gPTXE5TRGF0YVNvdXJjZYDCgL+AvxP/ -////0kCAAIDNgFgJgL+AwwmAxIDMgFOAwoDFI0AzAAAAAAAAV3sxNSwgMH3SAA4APgB2A9eAUqED2IDG -2gGCAA4BgwMrAYQBhQGGAYcBiAFcAIcBiwPcA90D3gPfAPYD4AGQA70JgEqAyIDHI0AoAAAAAAAAgMsj -QCQAAAAAAACAwdcAowAOAM4ApQDPAKgA0QGUAZUD5AO5A+YArAFNgEeAyoDAgMmAUNQADgDcAN0A3gDf -A94A4QPrgCeAJhAQ0wAOAOkA9ADsAPYBooAs2ACjAA4AzgDPANAAqAKTANED7wDTATYA1gO9A/QAhwDZ -EhQx/kCAMIBYgCWAwREEAAmALV8QEHRhYmxlVmlld0FjdGlvbjrSADcAOAP5A/qmA/oBXADAAMEAwgA7 -XxAQTlNDb21ib1RhYmxlVmlld9IANwA4A/wD/aUD/QEFAQYAgQA7Xk5TQ29tYm9Cb3hDZWxs0gA3ADgD -/wQApgQAAQkAwADBAMIAO1pOU0NvbWJvQm94XxAUe3sxNywgNjF9LCB7NjgsIDE3fX3YAKMADgDOAKUA -zwDQAKgA0QDSANMA1AQFANYDQwOlANmAMIAogNKAJYCzgC1WUmVhbG062ABpAA4AfwCBAGsAgwBtARED -MAIdBA0EDgIgAIcDMAKQgKaAbIDUgNUJgKaAhl8QFXt7Mzc2LCAxMn0sIHs5OCwgMzJ9fd0AowAOAiYC -JwIoAikCKgClAM8A0AIrAKgCLADSAi0CLgIvAgwA1gQXBBgA1gNEAjUCNgI3gGuAaYAlgNeA1oAlgNNY -Q29udGludWXSAA4AXgBfAjmAC9kAaQAOAH8EHwCBAGsAgwAyAG0DMAQhBCIEIwQkBCUAhwQnAzBfEBNO -U09yaWdpbmFsQ2xhc3NOYW1lgKaA4IDbgNqA3BEBJAmA2YCmW1BvcHVwQnV0dG9uXxAUe3sxOCwgMTV9 -LCB7NTEsIDI3fX3dAKMADgImBCwCJwIoAioApQDPANACKwCoAiwA0gItAi4ELwQwAFcCLgIuBDMDRQQ1 -AjYENl1OU05vcm1hbEltYWdlgGuAaYDeEEuAaYBpgN2A2BEBkBP/////hsxA/9QADgDcAN0A3gDfA+AA -4QPrgCeAJtMADgAyALEAsgCzBD2AHoAcgN9UR2VhctIANwA4BEAEQaIEQQA7Xk5TQ2xhc3NTd2FwcGVy -XxAPU2VsZWN0IElkZW50aXR50gA3ADgERARFogRFADtdTlNUYWJWaWV3SXRlbdYADgMrAMEDLADoAy0D -LgRIBEkCkADUBEyA44DlgOaAhoAogQEGUTLVAGkADgBqAGsAbAArAG8EUQBxBFKAAIB5gOeBAQXSAA4A -PgB2BFWAUqcEVgRXBFgEWQRaBFsEXIDogOyA8YD1gPmA/YEBAdkAaQAOAH8AgACBAIIAawCDAG0ESQCF -BGAAhwRiBGMAigCHBEmA5oAggOoJgOuA6QmA5tIADgA+AD8EaIAYpgCRAJIAkwCUAJUAloASgBOAFIAV -gBaAF9gAowAOAKQApQCmAKcAqACpAuoAqwCsAK0ArACsAK4Ar4AfgBsI2QBpAA4AfwQfAIEAawCDADIA -bQRJBCEEdgR3BHgEeQCHBHsESYDmgOCA74DugPARASIJgO2A5l8QEU5TU2VjdXJlVGV4dEZpZWxkXxAV -e3s4NywgNjB9LCB7MzgxLCAyMn192QCjAA4AzgClAM8A0ACoApMA0QOJANMDiwIuANYEVwOPAIcDkYAw -gLWAaYAlgOwJgLfXAGkADgB/AIEAawCDAG0ESQIdBIoEiwIgAIcESYDmgGyA8oDzCYDm3QCjAA4CJgIn -AigCKQIqAKUAzwDQAisAqAIsANICLQIuAi8CDADWBJIEGADWBFgCNQI2AjeAa4BpgCWA9IDWgCWA8dIA -DgBeAF8COYAL1wBpAA4AfwCBAGsAgwBtBEkCHQSbBJwCIACHBEmA5oBsgPaA9wmA5l8QFXt7MjgzLCAx -Mn0sIHs5MywgMzJ9fd0AowAOAiYCJwIoAikCKgClAM8A0AIrAKgCLADSAi0CLgIvAgwA1gSkAxwA1gRZ -AjUCNgI3gGuAaYAlgPiAn4AlgPXSAA4AXgBfAjmAC9cAaQAOAH8AgQBrAIMAbQRJAMUErQSuAMgAhwRJ -gOaAMYD6gPsJgObYAKMADgDOAKUAzwDQAKgA0QDSANMA1AS0ANYEWgDYANmAMIAogPyAJYD5gC1fECNQ -bGVhc2UgZW50ZXIgeW91ciBLZXJiZXJvcyBwYXNzd29yZNcAaQAOAH8AgQBrAIMAbQRJAMUEvAS9ARwA -hwRJgOaAMYD+gP8JgOZfEBV7ezg0LCA5MH0sIHszODcsIDY5fX3YAKMADgDOAKUAzwDQAKgA0QDSANMA -1ATEAZgEWwDYANmAMIAogQEAgEOA/YAtXxAwTWFpbCB3YW50cyB0byBjb25uZWN0IHRvIHRoZSBhY2Nv -dW50IGx4c0BtaXQuZWR12QBpAA4AfwQfAIEAawCDADIAbQRJBCEEzAQjBM4EJQCHBNAESYDmgOCBAQOA -2oEBBAmBAQKA5l8QFHt7MTgsIDE2fSwgezUxLCAyNn193QCjAA4CJgQsAicCKAIqAKUAzwDQAisAqAIs -ANICLQIuBC8EMABXAi4CLgQzBFwENQI2BNuAa4BpgN6AaYBpgN2BAQET/////4bEQP9fEBpBdXRoZW50 -aWNhdGlvbiBJbmZvcm1hdGlvbtYADgMrAMEDLADoAy0DLgTfAqACkADUBOOA44EBCICIgIaAKIEBCVEz -VlJlc3VsdNIANwA4BOcDLKQDLADBAMIAO1p7NDg0LCAxOTl9XXsyMzkuMzIsIDEyOX1fEBJ7My40MDI4 -MmUrMzgsIDEzMX3SAA4APgB2BO2AUq8QIgTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E -/wUABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPgQERgQEUgQEWgQEhgQEvgQE0gQE6gQE/gQFB -gQFFgQFKgQFQgQFXgQFcgQFggQFlgQFngQFsgQFugQFwgQFxgQGCgQGEgQGJgQGKgQGLgQGSgQGWgQGb -gQGfgQGjgQGmgQGrgQHB1AAOBREFEgMtBRMCkAK1BRZdTlNEZXN0aW5hdGlvblhOU1NvdXJjZYEBE4CG -gJmBARJfEBpzZWxlY3RQcmV2aW91c1RhYlZpZXdJdGVtOtIANwA4BRkFGqMFGgUbADtfEBVOU05pYkNv -bnRyb2xDb25uZWN0b3JeTlNOaWJDb25uZWN0b3LUAA4FEQUSAy0FEwKQA0QFIIEBE4CGgNOBARVfEBZz -ZWxlY3ROZXh0VGFiVmlld0l0ZW060wAOBRIDLQUTBSQFJYEBE4EBF4EBINgADgUnBSgFKQUqBSsFLAUt -BS4FLwUwBTEFMgUzBTQFNVdOU1RpdGxlXxARTlNLZXlFcXVpdk1vZE1hc2taTlNLZXlFcXVpdl1OU01u -ZW1vbmljTG9jWU5TT25JbWFnZVxOU01peGVkSW1hZ2VWTlNNZW51gQEfgQEZEgAQAACBARoSf////4EB -G4EBHYEBGNQADgUnAN0FNwU4BTkFOgU7W05TTWVudUl0ZW1zgQEsgQHkgQHngQHlWE1pbmltaXplUW3T -AA4AMgCxALIAswVBgB6AHIEBHF8QD05TTWVudUNoZWNrbWFya9MADgAyALEAsgCzBUaAHoAcgQEeXxAQ -TlNNZW51TWl4ZWRTdGF0ZdIANwA4BUkFSqIFSgA7Wk5TTWVudUl0ZW1fEBNwZXJmb3JtTWluaWF0dXJp -emU61AAOBREFEgMtBU0FTgNFBVCBAS6BASKA2IEBLdQADgUnAN0FNwU4BVMCLgVVgQEsgQEjgGmBASRU -TWVuddIADgA+AHYFWYBSpAVaBVsFXAVdgQElgQEngQEpgQEq2AAOBScFKAUpBSoFKwUsBS0FLgVgBTAC -LgUyBTMFNAVOgQEfgQEmgGmBARuBAR2BASJvEA8AVABpAGMAawBlAHQAIABPAHAAdABpAG8AbgBzICbY -AA4FJwUoBSkFKgUrBSwFLQUuBWgFMAIuBTIFMwU0BU6BAR+BASiAaYEBG4EBHYEBIm8QEABDAGgAYQBu -AGcAZQAgAFAAYQBzAHMAdwBvAHIAZCAm2gAOBScFKAVvBSkFcAUqBSsFLAUtBS4CLgUwAIcCLgCHBTIF -MwU0BU5dTlNJc1NlcGFyYXRvclxOU0lzRGlzYWJsZWSBAR+AaQmAaQmBARuBAR2BASLYAA4FJwUoBSkF -KgUrBSwFLQUuBXsFMAIuBTIFMwU0BU6BAR+BASuAaYEBG4EBHYEBIl8QEUFib3V0IEtlcmJlcm9zLi4u -0gA3ADgFggUtogUtADtUbWVuddIANwA4BYUFhqMFhgUbADtfEBROU05pYk91dGxldENvbm5lY3RvctQA -DgURBRIDLQUTAB8FigWLgQETgAKBATCBATPXAA4FJwUpBSoFKwUsBS0FLgWOAi4FMgUzBTQFkoEBH4EB -MoBpgQEbgQEdgQEx1AAOBScA3QU3BTgFlQWWBZeBASyBAcqBAduBAcxfEBNBYm91dCBLZXJiZXJvc0Fn -ZW50XxAdb3JkZXJGcm9udFN0YW5kYXJkQWJvdXRQYW5lbDrTAA4FEgMtBRMFnAWdgQETgQE1gQE52AAO -BScFKAUpBSoFKwUsBS0FLgWgBTAFoQUyBTMFNAWkgQEfgQE3gQE4gQEbgQEdgQE20wAOBScFNwU4BacF -qIEBLIEB3YEB31RVbmRvUXpVdW5kbzrTAA4FEgMtBRMFrgWvgQETgQE7gQE+2AAOBScFKAUpBSoFKwUs -BS0FLgWyBTAFswUyBTMFNAU1gQEfgQE8gQE9gQEbgQEdgQEYVUNsb3NlUXddcGVyZm9ybUNsb3NlOtQA -DgURBRIDLQVNA0ADQgW+gQEugLGAvIEBQFtuZXh0S2V5Vmlld9MADgUSAy0FEwXCBcOBAROBAUKBAUTY -AA4FJwUoBSkFKgUrBSwFLQUuBcYFMAIuBTIFMwU0BaSBAR+BAUOAaYEBG4EBHYEBNlZEZWxldGVXZGVs -ZXRlOtMADgUSAy0FEwXPBdCBAROBAUaBAUnYAA4FJwUoBSkFKgUrBSwFLQUuBdMFMAXUBTIFMwU0BaSB -AR+BAUeBAUiBARuBAR2BATZaU2VsZWN0IEFsbFFhWnNlbGVjdEFsbDrTAA4FEgMtBRMF3QXegQETgQFL -gQFP2AAOBScFKAUpBSoFKwUsBS0FLgXhBTAF4gUyBTMFNAXlgQEfgQFNgQFOgQEbgQEdgQFM0wAOBScF -NwU4BegF6YEBLIEB64EB7F8QEktlcmJlcm9zQWdlbnQgSGVscFE/WXNob3dIZWxwOtQADgURBRIDLQUT -Be8F8AXxgQETgQFUgQFRgQFW2AAOBScFKAUpBSoFKwUsBS0FLgX0BfUF9gUyBTMFNAWSgQEfgQFSEgAY -AACBAVOBARuBAR2BATFbSGlkZSBPdGhlcnNRaNIADgAyADMF/oAEgQFVXxAWaGlkZU90aGVyQXBwbGlj -YXRpb25zOtMADgUSAy0FEwYCBgOBAROBAViBAVvYAA4FJwUoBSkFKgUrBSwFLQUuBgYFMAYHBTIFMwU0 -BaSBAR+BAVmBAVqBARuBAR2BATZUUmVkb1FaVXJlZG860wAOBRIDLQUTBhAGEYEBE4EBXYEBX9gADgUn -BSgFKQUqBSsFLAUtBS4GFAUwAi4FMgUzBTQFNYEBH4EBXoBpgQEbgQEdgQEYVFpvb21ccGVyZm9ybVpv -b2060wAOBRIDLQUTBh0GHoEBE4EBYYEBZNgADgUnBSgFKQUqBSsFLAUtBS4GIQUwBiIFMgUzBTQFpIEB -H4EBYoEBY4EBG4EBHYEBNlVQYXN0ZVF2VnBhc3RlOtQADgURBRIDLQUTApAEWQYtgQETgIaA9YEBZtMA -DgUSAy0FEwYwBjGBAROBAWiBAWvYAA4FJwUoBSkFKgUrBSwFLQUuBjQFMAY1BTIFMwU0BaSBAR+BAWmB -AWqBARuBAR2BATZTQ3V0UXhUY3V0OtQADgURBRIDLQUTApAEWAZAgQETgIaA8YEBbdQADgURBRIDLQUT -AEECRgZFgQETgAeAb4EBb9QADgURBRIDLQVNA0IDQAW+gQEugLyAsYEBQNQADgURBRIDLQVNBk0GTgZP -gQEugQF6gQFygQGB2gZRAA4GUgZTAIAGVAZVBlYGVwZYAIcGWgCHBlwAhwZeBl8AhwCHAIdfEBpOU0Zp -bHRlclJlc3RyaWN0c0luc2VydGlvbl8QFE5TUHJlc2VydmVzU2VsZWN0aW9uXxAPX05TTWFuYWdlZFBy -b3h5XxARTlNPYmplY3RDbGFzc05hbWVeTlNEZWNsYXJlZEtleXNfECJOU0NsZWFyc0ZpbHRlclByZWRp -Y2F0ZU9uSW5zZXJ0aW9uXxAYTlNTZWxlY3RzSW5zZXJ0ZWRPYmplY3RzXxAWTlNBdm9pZHNFbXB0eVNl -bGVjdGlvbgmBAXkJgQF3CYEBdoEBcwkJCdIADgA+AHYGZYBSogZmBmeBAXSBAXVfEBZzZXJ2aWNlUHJp -bmNpcGFsU3RyaW5nXxAYc2hvcnRUaW1lUmVtYWluaW5nU3RyaW5nXxASS2VyYmVyb3NDcmVkZW50aWFs -0QAOBmyBAXjSADcAOAZuBlOiBlMAO9IANwA4BnAGcaQGcQZyBnMAO18QEU5TQXJyYXlDb250cm9sbGVy -XxASTlNPYmplY3RDb250cm9sbGVyXE5TQ29udHJvbGxlctkGUQAOBlIGUwZUBlUGVgZXBlgAhwZaAIcG -eAZ5BnoAhwCHAIcJgQF5CYEBgIEBf4EBewkJCdIADgA+AHYGgIBSowaBBoIGg4EBfIEBfYEBfl8QEGNy -ZWRlbnRpYWxzQXJyYXlfEA9wcmluY2lwYWxTdHJpbmddS2VyYmVyb3NDYWNoZdEADgZsgQF4V2NvbnRl -bnTUAA4FEQUSAy0FTQVOBFwGjoEBLoEBIoEBAYEBg1lwb3B1cE1lbnXTAA4FEgMtBRMGkgaTgQETgQGF -gQGI2AAOBScFKAUpBSoFKwUsBS0FLgaWBfUGlwUyBTMFNAWkgQEfgQGGgQGHgQEbgQEdgQE2XxAVUGFz -dGUgYW5kIE1hdGNoIFN0eWxlUVZfEBFwYXN0ZUFzUGxhaW5UZXh0OtQADgURBRIDLQVNBU4DRQaOgQEu -gQEigNiBAYPUAA4FEQUSAy0FTQVOBFwFUIEBLoEBIoEBAYEBLdQADgURBRIDLQVNBqoGTQZPgQEugQGM -gQF6gQGB1AAOBlMGVAZVBq4GrwawBrGBAZGBAZCBAY+BAY3SAA4APgB2BrSAUqEGtYEBjltjYWNoZXNB -cnJheV8QF0tlcmJlcm9zQ2FjaGVDb2xsZWN0aW9u0QAOBmyBAXjSADcAOAa7BnKjBnIGcwA71AAOBREF -EgMtBRMF7wa/BsCBAROBAVSBAZOBAZXYAA4FJwUoBSkFKgUrBSwFLQUuBsMFMAIuBTIFMwU0BTWBAR+B -AZSAaYEBG4EBHYEBGF8QEkJyaW5nIEFsbCB0byBGcm9udF8QD2FycmFuZ2VJbkZyb250OtQADgURBRID -LQUTBe8GzQbOgQETgQFUgQGXgQGa2AAOBScFKAUpBSoFKwUsBS0FLgbRBTAG0gUyBTMFNAWSgQEfgQGY -gQGZgQEbgQEdgQExXxASUXVpdCBLZXJiZXJvc0FnZW50UXFadGVybWluYXRlOtQADgURBRIDLQUTBe8G -3AbdgQETgQFUgQGcgQGe2AAOBScFKAUpBSoFKwUsBS0FLgbgBTAF9gUyBTMFNAWSgQEfgQGdgQFTgQEb -gQEdgQExXxASSGlkZSBLZXJiZXJvc0FnZW50VWhpZGU61AAOBREFEgMtBRMF7wbqBuuBAROBAVSBAaCB -AaLYAA4FJwUoBSkFKgUrBSwFLQUuBu4FMAIuBTIFMwU0BZKBAR+BAaGAaYEBG4EBHYEBMVhTaG93IEFs -bFd1bmhpZGU61AAOBREFEgMtBU0G9waqBk+BAS6BAaSBAYyBAYHSAA4AMgAzBvyABIEBpdMADgUSAy0F -Ewb/BwCBAROBAaeBAarYAA4FJwUoBSkFKgUrBSwFLQUuBwMFMAcEBTIFMwU0BaSBAR+BAaiBAamBARuB -AR2BATZUQ29weVFjVWNvcHk62AAOBREHDAcNBRIDLQcOBw8HEAZNBxIHEwF/BxUHFgBXWU5TS2V5UGF0 -aFlOU0JpbmRpbmdZTlNPcHRpb25zXxAcTlNOaWJCaW5kaW5nQ29ubmVjdG9yVmVyc2lvboEBwIEBeoEB -roEBrYBAgQGsgQGvXxAmdmFsdWU6IGFycmFuZ2VkT2JqZWN0cy5wcmluY2lwYWxTdHJpbmdVdmFsdWVf -EB9hcnJhbmdlZE9iamVjdHMucHJpbmNpcGFsU3RyaW5n0wAOBxsAPgccBx0HKldOUy5rZXlzgQG/rAce -Bx8HIAchByIHIwckByUHJgcnBygHKYEBsIEBsYEBsoEBs4EBtIEBtYEBtoEBt4EBuIEBuYEBuoEBu6wH -KwcsBysHKwcvBy8HKwcsBy8HLwcrByyBAbyBAb2BAbyBAbyBAb6BAb6BAbyBAb2BAb6BAb6BAbyBAb1f -EBpOU0NvbmRpdGlvbmFsbHlTZXRzRW5hYmxlZF8QHE5TUmFpc2VzRm9yTm90QXBwbGljYWJsZUtleXNf -EBZOU1ZhbGlkYXRlc0ltbWVkaWF0ZWx5XxAmTlNBbHdheXNQcmVzZW50c0FwcGxpY2F0aW9uTW9kYWxB -bGVydHNfEBtOU011bHRpcGxlVmFsdWVzUGxhY2Vob2xkZXJfEBFOU051bGxQbGFjZWhvbGRlcl8QGk5T -Q29udGludW91c2x5VXBkYXRlc1ZhbHVlXxAXTlNDcmVhdGVzU29ydERlc2NyaXB0b3JfEBpOU05vdEFw -cGxpY2FibGVQbGFjZWhvbGRlcl8QGE5TTm9TZWxlY3Rpb25QbGFjZWhvbGRlcl8QJk5TQWxsb3dzRWRp -dGluZ011bHRpcGxlVmFsdWVzU2VsZWN0aW9uXxAbTlNDb25kaXRpb25hbGx5U2V0c0VkaXRhYmxlCAnS -ADcAOAdGB0eiB0cAO1xOU0RpY3Rpb25hcnnSADcAOAdJB0qjB0oFGwA7XxAVTlNOaWJCaW5kaW5nQ29u -bmVjdG9y2AAOBREHDAcNBRIDLQcOBw8HEAZNB04HEwGAB1EHUgBXgQHAgQF6gQHDgQGtgEuBAcKBAcRf -EC92YWx1ZTogYXJyYW5nZWRPYmplY3RzLnNob3J0VGltZVJlbWFpbmluZ1N0cmluZ18QKGFycmFuZ2Vk -T2JqZWN0cy5zaG9ydFRpbWVSZW1haW5pbmdTdHJpbmfTAA4HGwA+BxwHVwdkgQG/rAceBx8HIAchByIH -IwckByUHJgcnBygHKYEBsIEBsYEBsoEBs4EBtIEBtYEBtoEBt4EBuIEBuYEBuoEBu6wHKwcsBysHKwcv -By8HKwcrBy8HLwcrByyBAbyBAb2BAbyBAbyBAb6BAb6BAbyBAbyBAb6BAb6BAbyBAb3SAA4APgdyB3OB -Ae6vEHQHdAE0AX8EDgJ1AHkGTQRYBVsCswMFB38BgABPBCQFnAWkAIgCtAUkA0AGkgRWBK4HjAYCARQA -QQeQBhABjgTOAqEG3AM/BVoHmAa/BjAF5QNBBvcEXAbNA0QAeAeiAtAESQVOB6YAewXCBfAG6gerAqAE -vQMoBGIHsAK1BFcDXgOsAh8Htge3BV0DSwRaA3sAQgWuAzAC8wRbAuQFNQZOA2sDQgXdA0MAfAKQAloA -xwM6Bv8HzgG+BJwCsQXPAroFigaqA0UEWQVcAycH2gR4BIsH3QB9AUwBHwWSA4QAegXvAkYCrQYdgQHG -gDaAQIDVgIOAIYEBeoDxgQEngJKAnoEBzYBLgA2A3IEBNYEBNoAagJWBAReAsYEBhYDogPuBAdyBAViA -X4AHgQHJgQFdgEiBAQSBAQeBAZyAq4EBJYEBzoEBk4EBaIEBTICugQGkgQEBgQGXgNOAEIEB4YCTgOaB -ASKBAeCAZYEBQoEBUYEBoIEB0oCIgP+A5IDrgQHVgJmA7ICvgL+AZ4EB6IEB2YEBKoCsgPmAtIB+gQE7 -gKaAmoD9gJaBARiBAXKAuoC8gQFLgLOAbYCGgHSAI4CogQGngQHagFGA94CKgQFGgIyBATCBAYyA2ID1 -gQEpgKSBAeaA8IDzgQHRgHKAOIBbgQExgNGAMoEBVIBvgI+BAWHUAA4FJwDdBTcFOAfqB+sH7IEBLIEB -x4EB7YEByF5BdXRoZW50aWNhdGlvbtIADgA+AHYH8IBSpAeQB4wHoge2gQHJgQHcgQHhgQHo2gAOB/YF -JwUoBSkFKgUrBSwFLQH4BS4FkgWVBTACLgUyBTMFNAd0B/5ZTlNTdWJtZW51gQEfgQExgQHKgGmBARuB -AR2BAcaBActec3VibWVudUFjdGlvbjrSAA4APgB2CAKAUqsFigd/B5gH3QerB7cG3AXwBuoHzgbNgQEw -gQHNgQHOgQHRgQHSgQHZgQGcgQFRgQGggQHagQGX2gAOBScFKAVvBSkFcAUqBSsFLAUtBS4CLgUwAIcC -LgCHBTIFMwU0BZKBAR+AaQmAaQmBARuBAR2BATHYAA4FJwUoBSkFKgUrBSwFLQUuCBkFMAgaBTIFMwU0 -BZKBAR+BAc+BAdCBARuBAR2BATFsAFAAcgBlAGYAZQByAGUAbgBjAGUAcyAmUSzaAA4FJwUoBW8FKQVw -BSoFKwUsBS0FLgIuBTAAhwIuAIcFMgUzBTQFkoEBH4BpCYBpCYEBG4EBHYEBMdoADgf2BScFKAUpBSoF -KwUsBS0B+AUuB7AILAUwAi4FMgUzBTQFkggxgQEfgQHVgQHTgGmBARuBAR2BATGBAdRYU2VydmljZXPU -AA4FJwDdBTcFOAg1CDYIN4EBLIEB1oEB2IEB19IADgBeAF8IMoAL0gAOAD4Adgg8gFKgXxAPX05TU2Vy -dmljZXNNZW512gAOBScFKAVvBSkFcAUqBSsFLAUtBS4CLgUwAIcCLgCHBTIFMwU0BZKBAR+AaQmAaQmB -ARuBAR2BATHaAA4FJwUoBW8FKQVwBSoFKwUsBS0FLgIuBTAAhwIuAIcFMgUzBTQFkoEBH4BpCYBpCYEB -G4EBHYEBMVxfTlNBcHBsZU1lbnXaAA4H9gUnBSgFKQUqBSsFLAUtAfgFLgWkBacFMAIuBTIFMwU0B3QI -WYEBH4EBNoEB3YBpgQEbgQEdgQHGgQHeVEVkaXTSAA4APgB2CF2AUqkFnAYCB6YGMAb/Bh0GkgXCBc+B -ATWBAViBAeCBAWiBAaeBAWGBAYWBAUKBAUbaAA4FJwUoBW8FKQVwBSoFKwUsBS0FLgIuBTAAhwIuAIcF -MgUzBTQFpIEBH4BpCYBpCYEBG4EBHYEBNtoADgf2BScFKAUpBSoFKwUsBS0B+AUuBTUIcwUwAi4FMgUz -BTQHdAh4gQEfgQEYgQHigGmBARuBAR2BAcaBAeNWV2luZG930gAOAF4AXwh5gAvSAA4APgB2CH6AUqUF -rgUkBhAH2ga/gQE7gQEXgQFdgQHmgQGT2gAOBScFKAVvBSkFcAUqBSsFLAUtBS4CLgUwAIcCLgCHBTIF -MwU0BTWBAR+AaQmAaQmBARuBAR2BARheX05TV2luZG93c01lbnXaAA4H9gUnBSgFKQUqBSsFLAUtAfgF -LgXlCJEFMAIuBTIFMwU0B3QIloEBH4EBTIEB6YBpgQEbgQEdgQHGgQHqVEhlbHDSAA4AXgBfCJeAC9IA -DgA+AHYInIBSoQXdgQFLW19OU01haW5NZW510gA3ADgIoAHgogHgADvSAA4APgdyCKOBAe6vEHQAHwB6 -ATQDRABCAE8AHwRJBU4CoAK1BZIBNABBA0UFpAeMAHgCoAU1AzAFpARJBFoHdAWkAHoAHwd0BTUBfwRc -ApAFkgMwBU4FkgU1BaQHtgMwAB8ESQWSAzAATwd0Aq0DKAAfBaQATwWkBZIFkgWSAqEEWwKQBFYHqwKg -BEkDPwNCAHsHdAWSBU4DOgRJA0AAHwU1AycCtARJArMHogAfA0EDMAXlAzAATwJ1AH0AeQMwBaQFkgGA -BFkCoAWkArEFkgAfAzAESQVOApAFNQRXBFgFkgBPAHoAegeQA0MATwAfAHwCoAWkgAKAMoA2gNOAfoAN -gAKA5oEBIoCIgJmBATGANoAHgNiBATaBAdyAEICIgQEYgKaBATaA5oD5gQHGgQE2gDKAAoEBxoEBGIBA -gQEBgIaBATGApoEBIoEBMYEBGIEBNoEB6ICmgAKA5oEBMYCmgA2BAcaAj4DkgAKBATaADYEBNoEBMYEB -MYEBMYEBB4D9gIaA6IEB0oCIgOaAq4C8gGWBAcaBATGBASKAqIDmgLGAAoEBGICkgJWA5oCSgQHhgAKA -roCmgQFMgKaADYCDgHKAIYCmgQE2gQExgEuA9YCIgQE2gIqBATGAAoCmgOaBASKAhoEBGIDsgPGBATGA -DYAygDKBAcmAs4ANgAKAbYCIgQE20gAOAD4HcgkagQHurxB1B3QBNAF/BA4CdQB5Bk0EWAVbArMDBQd/ -AYAATwQkBZwFpACIArQFJAaSA0AEVgYCB4wErgEUAEEHkAYQAY4EzgKhBtwDPwVaB5gGvwYwBeUDQQb3 -Bs0HogRcAHgDRALQBU4ESQemBfAAewXCBuoHqwKgBL0DKARiB7ACtQRXAB8DXgOsAh8Htge3BV0DSwRa -A3sAQgWuAzAC8wRbBTUC5AZOBd0DQgNrA0MAfAKQAloAxwM6Bv8HzgG+BJwCsQXPAroFigaqA0UFXARZ -AycH2gR4BIsH3QB9AUwBHwWSA4QAegXvAq0CRgYdgQHGgDaAQIDVgIOAIYEBeoDxgQEngJKAnoEBzYBL -gA2A3IEBNYEBNoAagJWBAReBAYWAsYDogQFYgQHcgPuAX4AHgQHJgQFdgEiBAQSBAQeBAZyAq4EBJYEB -zoEBk4EBaIEBTICugQGkgQGXgQHhgQEBgBCA04CTgQEigOaBAeCBAVGAZYEBQoEBoIEB0oCIgP+A5IDr -gQHVgJmA7IACgK+Av4BngQHogQHZgQEqgKyA+YC0gH6BATuApoCagP2BARiAloEBcoEBS4C8gLqAs4Bt -gIaAdIAjgKiBAaeBAdqAUYD3gIqBAUaAjIEBMIEBjIDYgQEpgPWApIEB5oDwgPOBAdGAcoA4gFuBATGA -0YAygQFUgI+Ab4EBYdIADgA+B3IJkoEB7q8QdQmTCZQJlQmWCZcJmAmZCZoJmwmcCZ0JngmfCaAJoQmi -CaMJpAmlCaYJpwmoCakJqgmrCawJrQhzCa8JsAmxCbIJswm0CbUJtgm3CbgJuQm6CbsG/Am9Cb4JvwnA -CcEJwgnDCcQJxQnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCdwJ3Qne -Cd8J4AnhCeIJ4wnkCeUJ5gnnCegJ6QnqCesJ7AntCe4J7wnwCfEJ8gnzCfQJ9Qn2CfcJ+An5CfoJ+wn8 -Cf0J/gn/CgAKAQoCCgMKBAoFCgYKB4EB8oEB84EB9IEB9YEB9oEB94EB+IEB+YEB+oEB+4EB/IEB/YEB -/oEB/4ECAIECAYECAoECA4ECBIECBYECBoECB4ECCIECCYECCoECC4ECDIEB4oECDYECDoECD4ECEIEC -EYECEoECE4ECFIECFYECFoECF4ECGIECGYEBpYECGoECG4ECHIECHYECHoECH4ECIIECIYECIoECI4EC -JIECJYECJoECJ4ECKIECKYECKoECK4ECLIECLYECLoECL4ECMIECMYECMoECM4ECNIECNYECNoECN4EC -OIECOYECOoECO4ECPIECPYECPoECP4ECQIECQYECQoECQ4ECRIECRYECRoECR4ECSIECSYECSoECS4EC -TIECTYECToECT4ECUIECUYECUoECU4ECVIECVYECVoECV4ECWIECWYECWoECW4ECXIECXYECXoECX4EC -YIECYYECYoECY4ECZFhNYWluTWVudV8QJVRhYmxlIFZpZXcgKElkZW50aXR5LCBUaW1lIFJlbWFpbmlu -ZylfEBdUYWJsZSBDb2x1bW4gKElkZW50aXR5KV8QGEJ1dHRvbiBDZWxsIChDb250aW51ZSktMV5Db250 -ZW50IFZpZXctMV8QL1N0YXRpYyBUZXh0IChQbGVhc2Ugc2VsZWN0IGEgS2VyYmVyb3MgSWRlbnRpdHkp -XxAQQ2FjaGVzQ29udHJvbGxlcl8QFlB1c2ggQnV0dG9uIChDb250aW51ZSlvEBwATQBlAG4AdQAgAEkA -dABlAG0AIAAoAEMAaABhAG4AZwBlACAAUABhAHMAcwB3AG8AcgBkICYAKV8QGFN0YXRpYyBUZXh0IChD -b25jbHVzaW9uKV8QFUJ1dHRvbiBDZWxsIChHbyBCYWNrKVtTZXBhcmF0b3ItMl8QHVRhYmxlIENvbHVt -biAoVGltZSBSZW1haW5pbmcpXENvbnRlbnQgVmlld18QFEJ1dHRvbiBDZWxsIChHZWFyKS0xXxAQTWVu -dSBJdGVtIChVbmRvKVtNZW51IChFZGl0KV8QGkltYWdlIENlbGwgKEtlcmJlcm9zQWdlbnQpXxBZU3Rh -dGljIFRleHQgKENvbmdyYXR1bGF0aW9ucyEgWW91IGhhdmUgYWNxdWlyZWQgS2VyYmVyb3MgdGlja2V0 -cyBmb3IgbHhzQEFUSEVOQS5NSVQuRURVLilfEBRNZW51IEl0ZW0gKE1pbmltaXplKV8QIU1lbnUgSXRl -bSAoUGFzdGUgYW5kIE1hdGNoIFN0eWxlKVpUZXh0IEZpZWxkXxAcSW1hZ2UgVmlldyAoS2VyYmVyb3NB -Z2VudCktMl8QEE1lbnUgSXRlbSAoUmVkbylfEBBNZW51IEl0ZW0gKEVkaXQpXxA1VGV4dCBGaWVsZCBD -ZWxsIChQbGVhc2UgZW50ZXIgeW91ciBLZXJiZXJvcyBwYXNzd29yZClfEBNIb3Jpem9udGFsIFNjcm9s -bGVyXxAZTWVudSBJdGVtIChLZXJiZXJvc0FnZW50KV8QEE1lbnUgSXRlbSAoWm9vbSlfEBtUZXh0IEZp -ZWxkIENlbGwgKFRleHQgQ2VsbClfEBJCdXR0b24gQ2VsbCAoR2VhcilfEBZUYWIgVmlldyBJdGVtIChS -ZXN1bHQpXxAeTWVudSBJdGVtIChIaWRlIEtlcmJlcm9zQWdlbnQpXxAxU3RhdGljIFRleHQgKFBsZWFz -ZSBlbnRlciB5b3VyIEtlcmJlcm9zIGlkZW50aXR5KW8QGwBNAGUAbgB1ACAASQB0AGUAbQAgACgAVABp -AGMAawBlAHQAIABPAHAAdABpAG8AbgBzICYAKW8QGABNAGUAbgB1ACAASQB0AGUAbQAgACgAUAByAGUA -ZgBlAHIAZQBuAGMAZQBzICYAKV8QHk1lbnUgSXRlbSAoQnJpbmcgQWxsIHRvIEZyb250KV8QD01lbnUg -SXRlbSAoQ3V0KVtNZW51IChIZWxwKV8QE1N0YXRpYyBUZXh0IChOYW1lOilfEB5NZW51IEl0ZW0gKFF1 -aXQgS2VyYmVyb3NBZ2VudClfEBJNZW51IEl0ZW0gKFdpbmRvdylfEBNQb3B1cCBCdXR0b24gKEdlYXIp -XxAaSW1hZ2UgVmlldyAoS2VyYmVyb3NBZ2VudClfEBhQdXNoIEJ1dHRvbiAoQ29udGludWUpLTFfEBxJ -bWFnZSBDZWxsIChLZXJiZXJvc0FnZW50KS0xWEdlYXJNZW51VlZpZXctMVtTZXBhcmF0b3ItMV8QF01l -bnUgSXRlbSAoSGlkZSBPdGhlcnMpXxAUUHVzaCBCdXR0b24gKFNlbGVjdClfEBJNZW51IEl0ZW0gKERl -bGV0ZSlfEBRNZW51IEl0ZW0gKFNob3cgQWxsKV8QFE1lbnUgSXRlbSAoU2VydmljZXMpXxBCVGV4dCBG -aWVsZCBDZWxsIChNYWlsIHdhbnRzIHRvIGNvbm5lY3QgdG8gdGhlIGFjY291bnQgbHhzQG1pdC5lZHUp -XxAqVGFiIFZpZXcgSXRlbSAoQXV0aGVudGljYXRpb24gSW5mb3JtYXRpb24pXxAcSW1hZ2UgQ2VsbCAo -S2VyYmVyb3NBZ2VudCktMl8QD01lbnUgKFNlcnZpY2VzKV8QFVB1c2ggQnV0dG9uIChHbyBCYWNrKV8Q -EVNlY3VyZSBUZXh0IEZpZWxkXEZpbGUncyBPd25lcl8QNVRleHQgRmllbGQgQ2VsbCAoUGxlYXNlIGVu -dGVyIHlvdXIgS2VyYmVyb3MgaWRlbnRpdHkpXkNvbWJvIEJveCBDZWxsXxAUQnV0dG9uIENlbGwgKFNl -bGVjdClfEBBNZW51IEl0ZW0gKEhlbHApW1NlcGFyYXRvci0zXxAdTWVudSBJdGVtIChBYm91dCBLZXJi -ZXJvcy4uLilfEBxJbWFnZSBDZWxsIChLZXJiZXJvc0FnZW50KS0zXxAxU3RhdGljIFRleHQgKFBsZWFz -ZSBlbnRlciB5b3VyIEtlcmJlcm9zIHBhc3N3b3JkKV8QEVRleHQgRmllbGQgQ2VsbC0xV1dpbmRvdzFf -EBFNZW51IEl0ZW0gKENsb3NlKVZWaWV3LTJfEF1UZXh0IEZpZWxkIENlbGwgKENvbmdyYXR1bGF0aW9u -cyEgWW91IGhhdmUgYWNxdWlyZWQgS2VyYmVyb3MgdGlja2V0cyBmb3IgbHhzQEFUSEVOQS5NSVQuRURV -LilfED5TdGF0aWMgVGV4dCAoTWFpbCB3YW50cyB0byBjb25uZWN0IHRvIHRoZSBhY2NvdW50IGx4c0Bt -aXQuZWR1KV1NZW51IChXaW5kb3cpXxAcVGV4dCBGaWVsZCBDZWxsIChDb25jbHVzaW9uKV8QFUNyZWRl -bnRpYWxzQ29udHJvbGxlcl8QHk1lbnUgSXRlbSAoS2VyYmVyb3NBZ2VudCBIZWxwKVlDb21ibyBCb3hf -EBdUZXh0IEZpZWxkIENlbGwgKE5hbWU6KV8QFFN0YXRpYyBUZXh0IChSZWFsbTopXxAUUHVzaCBCdXR0 -b24gKENhbmNlbClfEEhObyBTaGFkb3cgVGFiIFZpZXcgKFNlbGVjdCBJZGVudGl0eSwgQXV0aGVudGlj -YXRpb24gSW5mb3JtYXRpb24sIFJlc3VsdClvEBIAQgB1AHQAdABvAG4AIABDAGUAbABsACAAKABOAGUA -dyAmAClfEDNUZXh0IEZpZWxkIENlbGwgKFBsZWFzZSBzZWxlY3QgYSBLZXJiZXJvcyBJZGVudGl0eSlf -EBxJbWFnZSBWaWV3IChLZXJiZXJvc0FnZW50KS0zXxAQTWVudSBJdGVtIChDb3B5KVtTZXBhcmF0b3It -NF8QHVRleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKS0xXxAXQnV0dG9uIENlbGwgKEdvIEJhY2spLTFf -EBJQdXNoIEJ1dHRvbiAoRG9uZSlfEBZNZW51IEl0ZW0gKFNlbGVjdCBBbGwpXxASQnV0dG9uIENlbGwg -KERvbmUpXxAfTWVudSBJdGVtIChBYm91dCBLZXJiZXJvc0FnZW50KV8QGUNhY2hlQ29sbGVjdGlvbkNv -bnRyb2xsZXJfEBVQb3B1cCBCdXR0b24gKEdlYXIpLTFZU2VwYXJhdG9yXxAXUHVzaCBCdXR0b24gKEdv -IEJhY2spLTFfEB9UYWIgVmlldyBJdGVtIChTZWxlY3QgSWRlbnRpdHkpW1NlcGFyYXRvci02XxAPVGV4 -dCBGaWVsZCBDZWxsXxAWQnV0dG9uIENlbGwgKENvbnRpbnVlKVtTZXBhcmF0b3ItNW8QEgBQAHUAcwBo -ACAAQgB1AHQAdABvAG4AIAAoAE4AZQB3ICYAKV8QEVRhYmxlIEhlYWRlciBWaWV3XxARVmVydGljYWwg -U2Nyb2xsZXJfEBRNZW51IChLZXJiZXJvc0FnZW50KV8QGFRleHQgRmllbGQgQ2VsbCAoUmVhbG06KVtT -Y3JvbGwgVmlld1tBcHBsaWNhdGlvbl8QHEltYWdlIFZpZXcgKEtlcmJlcm9zQWdlbnQpLTFfEBRCdXR0 -b24gQ2VsbCAoQ2FuY2VsKV8QEU1lbnUgSXRlbSAoUGFzdGUp0gAOAD4Hcgp8gQHuowRXBFwDRYDsgQEB -gNjSAA4APgdyCoKBAe6jBHsE0AQngO2BAQKA2dIADgA+B3IKiIEB7q8Qlwd0ATQBfwT0BQAEDgJ1AHkE -7gZNBFgFWwUIArMFCQMFB38BgABPBCQFnAWkBPwAiAK0BSQE/QUKA0AGkgRWBK4HjAYCARQAQQeQBQEG -EAGOBM4FDAKhBtwDPwVaB5gGvwYwBeUDQQUDBvcEXAbNA0QAeAeiBQ8C0ARJBU4HpgB7BcIF8ATyBuoH -qwKgBL0E+QMoBGIHsAK1BPEEVwT1AB8FDQNeBQUDrAIfBPMHtgT+B7cE+gVdA0sFBwRaBPgDewBCBa4D -MALzBFsC5AU1Bk4E8ANrA0IF3QT2A0MFBAT3AHwFCwKQAloAxwM6BQYG/wfOAb4E+wScArEFzwK6BYoG -qgNFBFkFXAMnB9oEeAT/BIsH3QB9AUwE7wUCAR8FDgWSA4QAegXvAkYCrQYdgQHGgDaAQIEBOoEBboDV -gIOAIYEBEYEBeoDxgQEngQGSgJKBAZaAnoEBzYBLgA2A3IEBNYEBNoEBYIAagJWBAReBAWWBAZuAsYEB -hYDogPuBAdyBAViAX4AHgQHJgQFwgQFdgEiBAQSBAaOBAQeBAZyAq4EBJYEBzoEBk4EBaIEBTICugQGC -gQGkgQEBgQGXgNOAEIEB4YEBwYCTgOaBASKBAeCAZYEBQoEBUYEBL4EBoIEB0oCIgP+BAVCA5IDrgQHV -gJmBASGA7IEBP4ACgQGmgK+BAYmAv4BngQE0gQHogQFngQHZgQFXgQEqgKyBAYuA+YEBSoC0gH6BATuA -poCagP2AloEBGIEBcoEBFoC6gLyBAUuBAUGAs4EBhIEBRYBtgQGfgIaAdIAjgKiBAYqBAaeBAdqAUYEB -XID3gIqBAUaAjIEBMIEBjIDYgPWBASmApIEB5oDwgQFsgPOBAdGAcoA4gQEUgQFxgFuBAauBATGA0YAy -gQFUgG+Aj4EBYdIADgA+B3ILIoEB7q8QlwsjCyQLJQsmCycLKAspCyoLKwssCy0LLgsvCzALMQsyCzML -NAs1CzYLNws4CzkLOgs7CzwLPQs+Cz8LQAtBC0ILQwtEC0ULRgtHC0gLSQtKC0sLTAtNC04LTwtQC1EL -UgtTC1QLVQtWC1cLWAtZC1oLWwtcC10LXgtfC2ALYQtiC2MLZAtlC2YLZwtoC2kLagtrC2wLbQtuC28L -cAtxC3ILcwt0C3ULdgt3C3gLeQt6C3sLfAt9C34LfwuAC4ELgguDC4QLhQuGC4cLiAuJC4oLiwuMC40L -jguPC5ALkQuSC5MLlAuVC5YLlwuYC5kLmgubC5wLnQueC58LoAuhC6ILowukC6ULpgunC6gLqQuqC6sL -rAutC64LrwuwC7ELsguzC7QLtQu2C7cLuAu5gQJpgQJqgQJrgQJsgQJtgQJugQJvgQJwgQJxgQJygQJz -gQJ0gQJ1gQJ2gQJ3gQJ4gQJ5gQJ6gQJ7gQJ8gQJ9gQJ+gQJ/gQKAgQKBgQKCgQKDgQKEgQKFgQKGgQKH -gQKIgQKJgQKKgQKLgQKMgQKNgQKOgQKPgQKQgQKRgQKSgQKTgQKUgQKVgQKWgQKXgQKYgQKZgQKagQKb -gQKcgQKdgQKegQKfgQKggQKhgQKigQKjgQKkgQKlgQKmgQKngQKogQKpgQKqgQKrgQKsgQKtgQKugQKv -gQKwgQKxgQKygQKzgQK0gQK1gQK2gQK3gQK4gQK5gQK6gQK7gQK8gQK9gQK+gQK/gQLAgQLBgQLCgQLD -gQLEgQLFgQLGgQLHgQLIgQLJgQLKgQLLgQLMgQLNgQLOgQLPgQLQgQLRgQLSgQLTgQLUgQLVgQLWgQLX -gQLYgQLZgQLagQLbgQLcgQLdgQLegQLfgQLggQLhgQLigQLjgQLkgQLlgQLmgQLngQLogQLpgQLqgQLr -gQLsgQLtgQLugQLvgQLwgQLxgQLygQLzgQL0gQL1gQL2gQL3gQL4gQL5gQL6gQL7gQL8gQL9gQL+gQL/ -EgAElA0QChALEgAElEgSAAST7RIAAYbBEBQQCBBEEgAEk/YQLxIABJQBEgAElEsQPxIABJRGEgABhuMS -AASUHBASEgAEk/0SAASUMxIABJQqEgAElFASAAGGpxBAEgAElBQQQhIABJRDEBwSAASULBArEgABhtES -AASUDxIABJQuEgADDUkSAASUERIABJQGEgAElBcSAAST8hIABJPrEgAElAsQOxIABJQjEBsSAASUAhIA -BJQlEgAElBoSAASUMhIABJQoEB0SAASUCBIABJP3EgAEk+oSAASUIhAhEAcSAASUEhIABJP7EgABht4Q -FxIABJP+EgAElDUSAASUMRIABJQfEgAElFUSAASUHRIABJQkEDwSAAGG0hIABJREEBYSAAGGyxIABJQn -EEMSAASUBBAtEgAElAcSAASUTxIAAYa7EgAElAUSAAGGvxIAAYavEgAElEwSAASUEBIABJROEgAElCAS -AASUTRIABJP/EgABhroSAASUDBAxEgAElFQSAAGGvBATEgAElBkSAAGG4BAyEgABht8SAASUExIABJP1 -EgAElEkSAAGGvRAfEgAElCkSAASUUhAgEgAElFESAASUUxIABJRFEBUSAAGGsRIAAYaoEBoSAASUCRIA -BJQ0EgAElB4SAAST8xIABJRKEgABhtAQPRIABJQvEgABht0SAASUJhIABJP4EgAEk/wQMBIABJQAEBgS -AASUFRIAAYbNEEESAAGGzxIABJQhEBESAAST6RAjEgAElAoSAAGGqRIABJP6EgAElBsSAAGGwBAJE/// -///////9EgABhrAQPhIABJQw0gAOAD4AdgxNgFKg0gAOAD4HcgxQgQHuoNIADgA+B3IMU4EB7qDSADcA -OAxVDFaiDFYAO15OU0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/AEQAUgBUAGYGcgZ4BsMGygbRBt8G -8QcNBxsHJwczB0EHTAdaB3YHhAeXB6kHwwfNB9oH3AffB+IH5QfoB+sH7gfwB/MH9gf5B/wH/ggACAMI -BggLCA4IFwgjCCUIJwg1CD4IRwhSCFcIZghvCIIIiwiWCJgInQifCKEI0gjfCOwI+gkECRIJHwkpCTsJ -TwlZCWUJZwlpCWsJbQlyCXQJdgl4CXoJfAl+CYAJmwm4CcEJywnNCdYJ3wnmCfgKAQoKCgwKEQouCkAK -SwpUCmAKbApuCnAKcgp1CncKeQp7CoQKhgqTCpUKlwqZCpsKnQqfCsgK0ArbCuIK7gr4CvoK/Ar+Cv8L -AQsDCwYLBwsJCwsLFAsWCyMLJQsnCykLKwstCy8LSwtnC5sLswvUC/EL+gwBDA4MFAwsDE0MWQxhDGwM -dAx8DIkMlAyZDJsMnQyfDKQMpQyyDMEMwwzFDMcMzwzdDOYM6wz+DQcNDg0aDSMNLg06DUQNSw1XDXgN -eg18DX4NgA2DDYQNhg2IDaENwg3WDeAN7g36Df8OAQ4DDgUOBw4JDg4OEA40DkUOTA5TDlwOXg5nDmkO -bA55DoIOhw6ODqMOqw64DsQO0g7UDtYO2A7aDtwO4w7wDv0PBQ8HDwkPFQ8eDyMPOA86DzwPPg9AD1MP -YA9iD2UPbg93D4kPlg+fD6oPtg/1EAEQChAXECoQNxBDEFEQXxBhEGMQZRBnEGoQbBBuEHAQgxCGEIgQ -ihCMEI4QkBCZEJsQphCoEKoQrBCuELAQ3RDnEPEQ+xD9EP8RAREDEQURCBEKEQwRDhEQERIRGxEdESAR -IhF1EZcRoRGuEcMR3RH5EhQSIBI/Ek4SWhJcEl4SYxJlEmcSaBJqEnMSdRJ+EoASgRKDEoUShxKJEpIS -nRK6EsYSyBLKEswSzhLQEtIS/xMBEwMTBRMHEwkTCxMNEw8TERMbEyQTLRNBE1oTXBNeE2ATaRNrE20T -hBONE5YTpBOtE68TtBO2E7gT4RPwE/0UBRQQFB8UKhQ1FEIUQxRFFEcUUBRSFFsUZBRlFGcUhBSJFIsU -jRSPFJEUkxScFK0UrxS4FLoUvRTKFMwU2BTtFO8U8RTzFPUVBxUQFRsVLxVQFVUVVxVZFVsVXRVfFWQV -ZhVwFXkVfhWMFbUVthW4FboVwxXFFc4V1xXYFdoV9xX5FfsV/RX/FgQWBhYVFioWLBYuFjAWMhY+FksW -TRZQFnEWdhZ4FnoWfBZ+FoAWhRaHFpAWlxamFq4WwxbFFscWyRbLFtUW4hbkFukW8hb9FxUXKhcsFy4X -MBcyF0sXVBddF2gXjReWF58XqRerF60XrxexF7MXtRe3F8AX2RfmF+8X+hgFGC4YMBgyGDQYNhg4GDoY -PBg+GEcYXxhoGGoYbRhvGIUYnhinGLAYvRjeGOAY4hjkGOYY6RjqGOwY7hkGGTsZURlmGXUZiBmaGawZ -uhm8Gb4ZwBnCGcQZxhnIGcoZzBnRGdoZ4RniGesZ7Rn2Gf8aDBoVGiAaKRpKGkwaThpQGlIaUxpVGlca -bxqkGqYaqBqqGqwarhqwGrIauRrCGsQa5RrnGuka6xrtGu4a8BryGwobPxtBG0MbRRtHG0kbSxtNG1Yb -XxthG2wbdRt8G5UboBu9G8YbyxveHBMcKRwrHC0cMBwyHDQcNhw4HDscPRxAHEIcXRx4HIEcgxyMHI4c -qxytHK8csRy0HLYcuRzCHMQcxxzJHQIdER0lHT4dVh1YHVsdXR1fHWEdYx1lHWYdaB1pHWsdbh13HXkd -fB1+HZ8doR2jHaUdpx2pHasdrR22Hbgdwx3FHccdyR3LHc0d8h30HfYd+B36Hfsd/R3/HgEeGR5OHlAe -Uh5UHlYeWB5aHlweYR5qHmwemR6bHp0enx6gHqIepB6lHqceqR6rHrQeth7DHsUexx7JHssezR7PHucf -DB8OHxAfEh8UHxUfFx8ZHxsfPB9BH0MfRR9GH18fhB+GH4gfih+MH40fjx+RH5MftB+2H7gfuh+8H74f -wB/LH+MgCCAKIAwgDiAQIBEgEyAVIBcgOCA6IDwgPiBAIEIgRyBJIJcgpCCmILQgzCEBIQMhBSEHIQkh -CyENIQ8hFyEgISIhLSFFIU4hUCFXIVkhWyFeIXchhCGOIZYhmCGaIZwhniGgIaIhpCG9Ib8hwSHDIcUh -xyHQIdIh4yHlIech6SHrIe0h7yHxIfMiHCIeIiAiIiIjIiUiJyIoIioiLCI1IjciRCJGIkgiSiJMIk4i -UCJoIokiiyKNIo8ikSKSIpQiliK3IrkiuyK8ItUi9iL4Ivoi/CL+Iv8jASMDIyQjJiMoIyojLCMuIzAj -ViN3I3kjeyN9I38jgCOCI4QjnCO9I78jwSPDI8UjxiPII8oj7yP4I/oj/CP+JAAkAiQHJAgkCiQfJCEk -IyQlJCckPSRSJFQkViRYJFokZCR7JJwkniSgJKIkpCSmJKskrSSzJNQk1iTYJNok3CTdJN8k4ST5JS4l -OSVOJWYlaCVtJW8lcSVzJXUldyV4JXoleyV9JYYliCXjJfAl8iX0JfYl/yYBJgMmBCYGJggmCSYLJg0m -DyYRJhMmHCYkJi0mLyYyJjQmXSZeJmAmYiZkJm0mbyZ4JnomlyaZJpsmnSafJqEmsia0JrYmuCbFJscm -6CbtJu8m8SbzJvUm+Cb5JvsnDicXJyQnNydAJ0snWidjJ3AneyeSJ7MntSe3J7knuye9J78nxifnJ+kn -6yftJ+8n8CfyJ/QoDChBKEMoRShHKEkoSyhNKE8oWChhKGMoiCieKKAooiikKKYoqCirKKworiiwKLwo -0ykIKRYpGCkaKRwpHikgKSIpJCkmKSkpMilDKUUpRylUKVYpWClaKV8paCltKXwpjimXKZwpqinDKcUp -xynJKcspzSnQKdIp5ynpKesp7SnwKfkp+yoKKgwqDioQKhIqFCoWKhkqPipAKkIqRCpFKkcqSSpKKkwq -VSpXKmQqZipoKmoqbCpuKnAqkSqTKpUqliq7Kr0qvyrBKsMqxSrIKskqyyrNKuEq+SseKyArIiskKyYr -KCspKysrSCtKK0wrTitQK1ErUyuIK4orjCuOK5ArkiuUK5YrnyuhK74rwCvCK8QrxivHK8kr4SwWLBgs -GiwcLB4sICwiLCQsLSwvLEwsTixQLFIsVCxVLFcseCx6LHwsfiyALIIshCyqLMcsySzLLM0szyzQLNIs -6i0LLQ0tDy0SLRQtFi0YLUstcC1yLXQtdy15LXwtfS2ALYItmS3OLdAt0i3ULdYt2C3aLd0t5i4DLhwu -Hi4hLiMuJS4nLiouLC4zLjwuRS5QLl4ucy58Ln4uxS7ILssuzi7RLtQu1y7aLt0u4C7jLuYu6S7sLu8u -8i71Lvgu+y7+LwEvBC8HLwovDS8QLxMvFi8ZLxwvHy8iLyUvKC8rLzwvSi9TL1YvWC9aL10vei+DL4ov -oi+xL8IvxS/HL8kvzC/lL/Iv9S/4L/swHDAkMDgwQzBRMFswaDBvMHIwdTB6MH0wgjCFMIgwizCcMKgw -qzCuMLEwtDC9ML8wzDDOMNAw0zDlMPIw9DD2MPkxDDEVMRoxJTE7MUwxTzFSMVQxVzFoMWsxbjFwMXMx -eDGBMYMxjDGPMZIxlTGYMbkxvDG/McExxDHHMcox6zIMMg8yEjIUMhcyGjIdMkAyaTJ3MoQyhzKJMooy -jDKNMpAykzKWMrcyujK9Mr8ywjLFMsgy3DLlMuoy7zL4Mv8zFjMnMyozLDMvMzIzTzNSM1UzVzNaM10z -YDNxM3QzdzN6M30zkzOzM8AzwzPGM8kz6jPtM/Az8zP2M/kz/DQJNAw0DzQSNBc0GTQfNCw0LzQyNDU0 -VjRZNFw0XzRiNGU0aDRuNHA0fjSPNJI0lDSWNJk0pTSyNLU0uDS7NNw03zTiNOQ05zTqNO009DT8NQk1 -DDUPNRI1MzU2NTk1PDU/NUI1RTVQNVI1XTVqNW01cDVzNZQ1lzWaNZ01oDWjNaY1szW2Nbk1vDXRNdM1 -3TXuNfE19DX3Nfo2GzYeNiE2JjYpNiw2LzYyNj42QDZJNks2TjZnNnQ2dzZ6Nn02njahNqQ2pzaqNq02 -sDa1Nrc2vTbKNs020DbTNvQ29zb6Nvw2/zcCNwU3CjcXNyQ3JzcqNy03TjdRN1Q3VzdaN103YDdmN2g3 -bzeAN4M3hTeHN4o3lzeaN503oDfBN8Q3xzfKN8030DfTN9c32TfeN+838jf0N/Y3+TgKOA04DzgROBQ4 -JTgoOCo4LDgvOEA4QzhGOEk4TDh1OJI4qTi7OM843jkDOR45Nzk4OTs5PDk/OUA5QzlGOUc5SDlJOVI5 -VDlZOVw5Xzl4OZM5qDmtObA5uTm+Occ50DnkOfk6BjorOiw6LzowOjM6Njo5Ojo6Ozo8OkU6RzpOOlE6 -VDpXOmo6fDqKOo86kjqaOqs6rjqxOrQ6tzrBOs460TrUOtc6+Dr7Ov47ATsEOwc7CjsiOyQ7ODtJO0w7 -TztRO1Q7ZTtoO2s7bjtxO4I7hTuIO4s7jjufO6I7pTuoO6s7tDu2O7k7vDvIO+I75zvqO/M7+jwLPA48 -ETwUPBc8ODw7PD48QDxDPEY8STxePHA8gTyEPIc8ijyNPK48sTy0PLc8ujy9PMA81TzXPOI88zz2PPk8 -/Dz/PSA9Iz0mPSk9LD0vPTI9Rz1NPV49YT1kPWc9aj2LPY49kT2TPZY9mT2cPaU9rT2+PcE9xD3HPco9 -0z3VPdg95T3oPes97j4PPhI+FT4YPhs+Hj4hPiY+KD4uPk8+WT5jPm0+jD6PPpI+lT6YPpo+nT6gPsk+ -zz7xPv4/Bj8JPyI/JT8oPys/Lj8xPzQ/Nz86Pz0/QD9DP0Y/Xz9iP2U/aD9rP24/cT90P3c/ej99P4A/ -gz+gP78/2EABQB9AM0BQQGpAh0CiQMtA6UDqQOtA9ED5QQZBD0EWQS5BT0FSQVVBWEFbQV1BYEFjQZVB -wEHNQdBB6UHsQe9B8kH1QfhB+0H+QgFCBEIHQgpCDUImQilCLEIvQjJCNUI4QjtCPkJBQkRCR0JKQlNC -VkNBQ0RDRkNIQ0pDTENOQ1FDU0NWQ1hDWkNdQ19DYUNjQ2ZDaUNrQ21DcENyQ3VDd0N5Q3xDf0OBQ4ND -hkOJQ4tDjkORQ5RDlkOZQ5xDn0OiQ6VDp0OqQ61DsEOyQ7RDt0O5Q7tDvkPBQ8NDxkPJQ8xDz0PRQ9ND -1UPXQ9pD3EPeQ+BD4kPkQ+dD6kPtQ+9D8UPzQ/VD+EP6Q/xD/kQARANEBkQIRApEDUQPRBFEE0QVRBdE -GUQcRB9EIUQjRCVEKEQqRC1EMEQyRDREN0Q5RDxEPkRARENERURHRElETERORFBEU0RVRFdEWkRrRG5E -cUR0RHdEhkSPRJFEmkSdRKBEo0SmRM9E2UTcRN9E4kTkROdE6kTtRPBE/0UIRQpFIUUkRSdFKkUtRTBF -M0U2RTlFPEU/RUJFa0VuRXBFcUVzRXRFd0V6RX1FnkWhRaRFp0WqRa1FsEXJRctF9EX3RflF+kX8Rf1G -AEYDRgZGL0YyRjVGOEY6Rj1GQEZDRkZGT0ZgRmNGZkZpRmxGdUZ3RoBGgkaDRpVGvkbBRsNGxEbGRsdG -ykbNRtBG+Ub8Rv5G/0cBRwJHBUcIRwtHGEdBR0RHR0dKR0xHT0dSR1VHWEddR2ZHaEd7R35HgUeER4dH -ikeNR5BHk0eWR79HwkfER8VHx0fIR8tHzkfRR/pH/UgASANIBUgISAtIDkgRSBhIIUgjSCxILkg5SDxI -P0hCSEVISEhxSHRIdkh3SHlIekh9SIBIg0iSSLtIvkjBSMRIxkjJSMxIz0jSSNdI4EjiSOtI7UjwSPNI -/0kISQ1JFkkZSgRKBkoISgpKDEoOShBKEkoUShdKGUobSh5KIEoiSiRKJ0oqSixKLkoxSjNKNko4SjpK -PUpASkJKREpHSkpKTEpPSlFKVEpWSllKXEpfSmJKZUpnSmlKa0puSnBKckp1SndKeUp7Sn5KgEqDSoZK -iUqMSo9KkUqTSpVKmEqaSpxKnkqgSqJKpUqoSqtKrUqvSrFKs0q2SrhKukq8Sr5KwUrDSsVKx0rKSsxK -zkrQStJK1ErWStlK3EreSuBK4krlSudK6krsSu5K8ErzSvVK+Er6SvxK/0sBSwNLBUsISwpLDEsOSxBL -EksVSx5LIUwOTBFME0wVTBdMGUwbTB5MIEwjTCVMJ0wqTCxMLkwwTDNMNkw4TDpMPUxATEJMRExHTEpM -TExOTFBMU0xWTFhMW0xeTGFMY0xmTGlMbExvTHJMdEx3THpMfUyATIJMhEyGTIlMi0yOTJFMk0yWTJlM -nEyeTKBMokykTKdMqUyrTK1Mr0yxTLNMtky5TLxMvkzATMJMxEzHTMlMy0zNTNBM0kzVTNhM2kzcTN5M -4EziTORM5kzoTOtM7kzwTPJM9Ez3TPlM/Ez/TQFNBE0GTQhNC00NTQ9NEk0UTRZNGE0bTR1NH00iTSRN -Jk0pTTJNNU4iTiVOKE4rTi5OMU40TjdOOk49TkBOQ05GTklOTE5PTlJOVU5YTltOXk5hTmROZ05qTm1O -cE5zTnZOeU58Tn9Ogk6FTohOi06OTpFOlE6XTppOnU6gTqNOpk6pTqxOr06yTrVOuE67Tr5OwU7ETsdO -yk7NTtBO007WTtlO3E7fTuJO5U7oTutO7k7xTvRO9076Tv1PAE8DTwZPCU8MTw9PEk8VTxhPG08eTyFP -JE8nTypPLU8wTzNPNk85TzxPP09CT0VPSE9LT05PUU9UT1dPWk9dT2BPY09mT2lPbE9vT3JPdU94T3tP -fk+BT4pPsk/MT+dP9lAoUDtQVFCPUKpQwlDOUO5Q+1ESUSVRMVFOUapRwVHlUfBSD1IiUjVSbVKDUp9S -slLQUuVS/lMfU1NTjFO/U+BT8lP+VBRUNVRKVGBUfVSYVLdUwFTHVNNU7VUEVRlVMFVHVYxVuVXYVepW -AlYWViNWW1ZqVoFWlFagVsBW31cTVydXL1dDV0pXqlfrV/lYGFgwWFFYW1h1WIxYo1juWRVZS1lqWX1Z -iVmpWcNZ2FnxWgZaKFpEWlxaZlqAWqJarlrAWtla5VsMWyBbNFtLW2Zbclt+W51btFvIW9Fb1FvbW91b -4FviW+tb7lv1W/db+lv8XAVcCF05XTxdPl1AXUNdRl1IXUpdTF1PXVJdVF1XXVpdXF1fXWFdZF1mXWhd -al1tXXBdc111XXddel19XYBdgl2FXYddiV2MXY9dkV2TXZZdmV2cXZ5doV2kXaddql2sXa9dsl21Xbhd -u129XcBdw13GXcldy13NXdBd013VXddd2l3dXd9d4l3lXehd613uXfBd8l31Xfdd+V38Xf5eAV4DXgZe -CF4LXg1eEF4SXhReF14aXh1eIF4jXiZeKF4rXi1eMF4yXjReN145XjtePV4/XkJeRV5IXkpeTF5PXlJe -VF5XXlpeXF5fXmFeY15lXmdeal5tXnBecl51XndeeV58Xn5egV6EXoZeiF6LXo1ekF6SXpVel16aXpxe -nl6hXqRepl6pXqxerl6wXrNetV63Xrpew17GX/df+l/9YABgA2AGYAlgDGAPYBJgFWAYYBtgHmAhYCRg -J2AqYC1gMGAzYDZgOWA8YD9gQmBFYEhgS2BOYFFgVGBXYFpgXWBgYGNgZmBpYGxgb2ByYHVgeGB7YH5g -gWCEYIdgimCNYJBgk2CWYJlgnGCfYKJgpWCoYKtgrmCxYLRgt2C6YL1gwGDDYMZgyWDMYM9g0mDVYNhg -22DeYOFg5GDnYOpg7WDwYPNg9mD5YPxg/2ECYQVhCGELYQ5hEWEUYRdhGmEdYSBhI2EmYSlhLGEvYTJh -NWE4YTthPmFBYURhR2FKYU1hUGFTYVZhWWFcYV9hYmFlYWhha2FuYXFhdGF3YXphfWGAYYNhhmGJYYxh -j2GSYZVhmGGbYZ5hoWGkYadhqmGtYbBhs2G2YblhvGHBYcNhxWHKYc9h1GHWYdhh2mHfYeFh5mHrYe1h -8mH3Yfxh/mIDYghiDWISYhdiGWIeYiBiJWInYixiLmIzYjhiPWJCYkdiTGJRYlZiW2JgYmJiZ2JpYm5i -c2J4Yn1igmKEYolijmKTYphimmKcYqFipmKrYq1ismK3YrxiwWLGYsti0GLSYtdi3GLeYuNi6GLqYu9i -8WL2YvtjAGMFYwpjD2MUYxljHmMjYyhjLWMyYzdjOWM+Y0NjRWNKY09jUWNWY1tjYGNlY2pjbGNxY3Zj -eGN9Y4Jjh2OJY45jk2OVY5pjn2OkY6ljrmOzY7VjumO/Y8RjyWPOY9Bj1WPXY9xj4WPjY+hj7WPvY/Rj -9mP7ZABkBWQKZA9kEWQaZB9kIWQmZC9kMWQyZDtkPmQ/ZEhkS2RMZFVkWgAAAAAAAAICAAAAAAAADFcA -AAAAAAAAAAAAAAAAAGRpA - diff --git a/src/kim/agent/mac/resources/English.lproj/MainMenu.xib b/src/kim/agent/mac/resources/English.lproj/MainMenu.xib index 12d33cbef..da6d9efed 100644 --- a/src/kim/agent/mac/resources/English.lproj/MainMenu.xib +++ b/src/kim/agent/mac/resources/English.lproj/MainMenu.xib @@ -1,19 +1,17 @@ - + 1050 - 9A581 - 629 - 949 - 343.00 + 9E17 + 670 + 949.33 + 352.00 YES - - YES - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -29,46 +27,46 @@ NSApplication - MainMenu + MainMenu YES - KerberosAgent - + KerberosAgent + 1048576 2147483647 - NSImage + NSImage NSMenuCheckmark - - + + NSImage NSMenuMixedState submenuAction: - + KerberosAgent YES About KerberosAgent - + 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -77,27 +75,27 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Services - + 1048576 2147483647 - + submenuAction: @@ -113,50 +111,50 @@ YES YES - - + + 1048576 2147483647 - + Hide KerberosAgent - h + h 1048576 2147483647 - + Hide Others - + h 1572864 2147483647 - + Show All - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -165,7 +163,7 @@ 1048576 2147483647 - + _NSAppleMenu @@ -173,15 +171,15 @@ - Edit - + Edit + 1048576 2147483647 - + submenuAction: - + Edit YES @@ -191,7 +189,7 @@ 1048576 2147483647 - + @@ -200,18 +198,18 @@ 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + @@ -220,7 +218,7 @@ 1048576 2147483647 - + @@ -229,7 +227,7 @@ 1048576 2147483647 - + @@ -238,7 +236,7 @@ 1048576 2147483647 - + @@ -247,16 +245,16 @@ 1572864 2147483647 - + Delete - + 1048576 2147483647 - + @@ -265,19 +263,19 @@ 1048576 2147483647 - + - Window - + Window + 1048576 2147483647 - + submenuAction: @@ -292,7 +290,7 @@ 1048576 2147483647 - + @@ -301,36 +299,36 @@ 1048576 2147483647 - + Zoom - + 1048576 2147483647 - + YES YES - - + + 1048576 2147483647 - + Bring All to Front - + 1048576 2147483647 - + _NSWindowsMenu @@ -339,11 +337,11 @@ Help - + 1048576 2147483647 - + submenuAction: @@ -358,7 +356,7 @@ 1048576 2147483647 - + @@ -366,1095 +364,8 @@ _NSMainMenu - - - YES - cachesArray - - KerberosCacheCollection - - - - - - - - YES - credentialsArray - principalString - shortTimeRemainingString - timeRemainingString - - KerberosCache - - YES - YES - YES - YES - YES - - - - YES - servicePrincipalString - - - KerberosCredential - YES - - YES - YES - YES - YES - YES - - - 13 - 2 - {{279, 363}, {419, 465}} - 1886912512 - Choose a Kerberos Identity - - NSWindow - - - View - - - - 256 - - YES - - - 268 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{17, 386}, {62, 62}} - - - YES - - 537001472 - 33554432 - - - KerberosAgent - - 0 - 0 - 0 - NO - - YES - - - - 266 - {{84, 377}, {318, 29}} - - - YES - - 67239424 - 4325376 - Checking mail for account lxs@mit.edu - - LucidaGrande - 1.100000e+01 - 3100 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2OQA - - - - 6 - - controlTextColor - - 3 - MAA - - - - - - - 274 - - YES - - - 2304 - - YES - - - 256 - {380, 291} - - - YES - - - 256 - {380, 17} - - - - - - - -2147483392 - {{-26, 0}, {16, 17}} - - - - - YES - - 2.739741e+02 - 1.499741e+02 - 1.000000e+03 - - 75628032 - 0 - Identity - - - 3 - MC4zMzMzMzI5OQA - - - 6 - - headerTextColor - - - - - 1411513920 - 1346372608 - Text Cell - - - 1.300000e+01 - 1044 - - - YES - - - - 3 - YES - YES - - - - 1.003135e+02 - 1.000000e+02 - 1.500000e+02 - - 67239424 - 67108864 - Time Remaining - - - 6 - - headerColor - - 3 - MQA - - - - - - 1140981312 - 1145046016 - - - - - - - 3 - YES - YES - - - - 3.000000e+00 - 2.000000e+00 - - - 6 - - gridColor - - 3 - MC41AA - - - 1.700000e+01 - 1119879168 - 5 - 15 - 0 - YES - - - {{1, 17}, {380, 291}} - - - - - 6 - - controlBackgroundColor - - - 4 - - - - -2147483392 - {{-30, 17}, {15, 285}} - - - - _doScroller: - 9.684210e-01 - - - - -2147483392 - {{1, -30}, {362, 15}} - - - 1 - - - 9.040768e-01 - - - - 2304 - - YES - - - {{1, 0}, {380, 17}} - - - - - 4 - - - - {{17, 60}, {382, 309}} - - - 562 - - - - - - QSAAAEEgAABBmAAAQZgAAA - - - - 289 - {{320, 12}, {87, 32}} - - - YES - - 67239424 - 134217728 - Choose - - - -2038284033 - 1 - - - DQ - 200 - 25 - - - - - 289 - {{238, 12}, {82, 32}} - - - YES - - 67239424 - 134217728 - Cancel - - - -2038284033 - 1 - - - Gw - 200 - 25 - - - - - 270 - {{84, 414}, {318, 21}} - - - YES - - 67239424 - 4194304 - Mail requires that you choose a Kerberos Identity - - - - - - - - - 292 - {{17, 30}, {23, 22}} - - - YES - - 67239424 - 134217728 - - - - 138690815 - 6 - - - Add - - - - Add_Pressed - - - - - - 200 - 25 - - - - - 292 - {{39, 30}, {23, 22}} - - - YES - - 67239424 - 134217728 - - - - 138690815 - 6 - - - Remove - - - - Remove_Pressed - - - - - - 200 - 25 - - - - {419, 465} - - - - {{0, 0}, {1920, 1178}} - {213, 129} - {3.40282e+38, 3.40282e+38} - - - - 13 - 2 - {{378, 247}, {484, 199}} - 1886912512 - Authenticate to Kerberos - - NSWindow - - - View - - - - 256 - - YES - - - 274 - - YES - - - 256 - - YES - - - 268 - - YES - - YES - - - - - NeXT Encapsulated PostScript v1.2 pasteboard type - - - - {{20, 119}, {62, 62}} - - - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - - - - 266 - {{87, 119}, {387, 51}} - - - - YES - - 67239424 - 272629760 - Please enter your Kerberos identity - - - - - - - - - 266 - {{90, 89}, {378, 22}} - - - - YES - - -1804468671 - 272630784 - - - - YES - - 6 - - textBackgroundColor - - - - 6 - - textColor - - - - - - - 268 - {{17, 94}, {68, 17}} - - - - YES - - 67239424 - 71303168 - Name: - - - - - - - - - 266 - {{90, 57}, {381, 26}} - - - YES - - 343014976 - 272630784 - - - - - - YES - - - 5 - YES - - - - 274 - {15, 0} - - - YES - - YES - - - 1.200000e+01 - 1.000000e+01 - 1.000000e+03 - - 75628032 - 0 - - - - 1.200000e+01 - 16 - - - 3 - MC4zMzMzMzI5OQA - - - - - 338820672 - 1024 - - - YES - - - - 3 - YES - - - - 3.000000e+00 - 2.000000e+00 - - - 1.900000e+01 - tableViewAction: - -767524864 - - - - 1 - 15 - 0 - YES - - - - - - 268 - {{17, 61}, {68, 17}} - - - - YES - - 67239424 - 71303168 - Realm: - - - - - - - - - 289 - {{376, 12}, {98, 32}} - - - - YES - - 67239424 - 134217728 - Continue - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 292 - {{18, 15}, {51, 27}} - - - YES - - 67239424 - 134217728 - - - - 1.000000e+01 - 16 - - - -2033434369 - 2 - - - Gear - - - - 400 - 75 - - - - {488, 201} - - - - - - {{-4, 0}, {488, 201}} - - - - YES - - 1 - - Select Identity - - - - - 2 - - - 256 - - YES - - - 268 - - YES - - YES - - - - - - - - - {{17, 122}, {62, 62}} - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - - - - 290 - {{87, 60}, {381, 22}} - - YES - - -1804468671 - 272630784 - - - - YES - - - - - - - 289 - {{376, 12}, {98, 32}} - - YES - - 67239424 - 134217728 - - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 289 - {{283, 12}, {93, 32}} - - YES - - 67239424 - 134217728 - Go Back - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 266 - {{84, 167}, {387, 17}} - - YES - - 67239424 - 272629760 - Please enter your Kerberos password - - - - - - - - - 274 - {{84, 90}, {387, 69}} - - YES - - 67239424 - 272629760 - Mail wants to connect to the account lxs@mit.edu - - - - - - - - - 292 - {{18, 16}, {51, 26}} - - YES - - 67239424 - 134217728 - - - - -2033958657 - 2 - - - - 400 - 75 - - - - {488, 201} - - Authentication Information - - - - - 3 - - - 256 - - YES - - - 289 - {{392, 12}, {82, 32}} - - YES - - 67239424 - 134217728 - Done - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - - 268 - - YES - - YES - - - - - - - - - {{17, 122}, {62, 62}} - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - - - - 266 - {{84, 167}, {387, 17}} - - YES - - 67239424 - 272629760 - Conclusion - - - - - - - - - 274 - {{84, 60}, {387, 99}} - - YES - - 67239424 - 272760832 - Congratulations! You have acquired Kerberos tickets for lxs@ATHENA.MIT.EDU. - - - - 3 - MSAwLjk3MDAwMDAzAA - - - - - - - 289 - {{305, 12}, {91, 32}} - - YES - - 67239424 - 134217728 - - - - -2038284033 - 1 - - - - - - 200 - 25 - - - - {488, 201} - - Result - - - - - - - 6 - YES - YES - - - {484, 199} - - - - {{0, 0}, {1920, 1178}} - {239.32, 129} - {3.40282e+38, 131} - - - - Menu - - YES - - - VGlja2V0IE9wdGlvbnPigKY - - 1048576 - 2147483647 - - - - - - Q2hhbmdlIFBhc3N3b3Jk4oCmA - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - About Kerberos... - - 1048576 - 2147483647 - - - - - + + KerberosAgentController @@ -1606,245 +517,11 @@ - content - - - - 280 - - - - contentArray: selection.cachesArray - - - - - - - contentArray - selection.cachesArray - - NSConditionallySetsEditable - - - 2 - - - 321 - - - - - - - - 323 - - - - contentArray: selection.credentialsArray - - - - - - - - selection.credentialsArray - - - - - 2 - - - 326 - - - - performClose: - - - - 300356 - - - - nextKeyView - - - - 300406 - - - - selectPreviousTabViewItem: - - - - 300407 - - - - - - - - 300408 - - - - selectNextTabViewItem: - - - - 300409 - - - - - - - - 300410 - - - - - - - - 300411 - - - - value: arrangedObjects.principalString - - - - - - - value - arrangedObjects.principalString - - YES - - YES - NSAllowsEditingMultipleValuesSelection - NSAlwaysPresentsApplicationModalAlerts - NSConditionallySetsEditable - NSConditionallySetsEnabled - NSContinuouslyUpdatesValue - NSCreatesSortDescriptor - NSMultipleValuesPlaceholder - NSNoSelectionPlaceholder - NSNotApplicablePlaceholder - NSNullPlaceholder - NSRaisesForNotApplicableKeys - NSValidatesImmediately - - - YES - - - - - - - - - - - - - - - 2 - - - 300413 - - - - value: arrangedObjects.shortTimeRemainingString - - - - - - - - arrangedObjects.shortTimeRemainingString - - YES - - YES - - - - - - - - - - - - - - - YES - - - - - - - - - - - - - - - 2 - - - 300415 - - - - popupMenu - - - - 300422 - - - - - - - - 300423 - - - - menu - - - - 300424 - - - - - - + delegate + + - 300425 + 300448 @@ -1881,7 +558,7 @@ - + MainMenu 19 @@ -2116,30 +793,6 @@ - - 262 - - - CacheCollectionController - - - 279 - - - - - - 310 - - - CachesController - - - 322 - - - CredentialsController - -3 @@ -2147,607 +800,9 @@ Application - 300335 - - - YES - - + 300447 + - - - - 300336 - - - YES - - - - - - - - - - - - - 300338 - - - YES - - - - - - 300339 - - - YES - - - - - - 300340 - - - YES - - - - - - - - - 300341 - - - YES - - - - - - 300342 - - - YES - - - - - - 300343 - - - - - 300344 - - - - - 300345 - - - - - 300346 - - - - - 300347 - - - - - 300348 - - - YES - - - - - - - 300349 - - - YES - - - - - - 300350 - - - YES - - - - - - 300351 - - - - - 300352 - - - - - 300353 - - - - - 300354 - - - - - 300357 - - - YES - - - - Window1 - - - 300358 - - - YES - - - - - - 300359 - - - YES - - - - - - - - 300360 - - - YES - - - - - - 300361 - - - YES - - - - - - 300362 - - - YES - - - - - - 300363 - - - YES - - - - - - - - - - - - 300364 - - - YES - - - - - - 300365 - - - YES - - - - - - 300366 - - - YES - - - - - - 300367 - - - YES - - - - - - 300368 - - - YES - - - - - - 300369 - - - YES - - - - - - 300370 - - - YES - - - - - - 300371 - - - - - 300372 - - - - - 300373 - - - - - 300374 - - - - - 300375 - - - - - 300376 - - - - - 300377 - - - - - 300378 - - - YES - - - - - - - - - - - - - 300379 - - - YES - - - - - - 300380 - - - YES - - - - - - 300381 - - - YES - - - - - - 300382 - - - YES - - - - - - 300383 - - - YES - - - - - - 300384 - - - YES - - - - - - 300385 - - - YES - - - - - - 300386 - - - YES - - - - - - 300387 - - - - - 300388 - - - - - 300389 - - - - - 300390 - - - - - 300391 - - - - - 300392 - - - - - 300393 - - - - - 300394 - - - - - 300395 - - - YES - - - - - - - - - - 300396 - - - YES - - - - - - 300397 - - - YES - - - - - - 300398 - - - YES - - - - - - 300399 - - - YES - - - - - - 300400 - - - YES - - - - - - 300401 - - - - - 300402 - - - - - 300403 - - - - - 300404 - - - - - 300405 - - - - - 300417 - - - YES - - - - - - - GearMenu - - - 300418 - - - - - 300419 - - - - - 300420 - - - - - 300421 - - - - - 300437 - - - YES - - - - - - 300438 - - - - - 300443 - - - YES - - - - - - 300444 - - - - - 300445 - - - YES - - - - - - 300446 - - @@ -2822,136 +877,11 @@ 24.IBPluginDependency 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect - 262.IBPluginDependency - 262.ImportedFromIB2 - 279.IBPluginDependency - 279.ImportedFromIB2 + 29.IBEditorWindowLastContentRect 29.IBPluginDependency 29.ImportedFromIB2 29.editorWindowContentRectSynchronizationRect - 300335.IBPluginDependency - 300335.IBWindowTemplateEditedContentRect - 300335.ImportedFromIB2 - 300335.NSWindowTemplate.visibleAtLaunch - 300335.editorWindowContentRectSynchronizationRect - 300335.windowTemplate.hasMaxSize - 300335.windowTemplate.hasMinSize - 300335.windowTemplate.maxSize - 300335.windowTemplate.minSize - 300336.IBPluginDependency - 300336.ImportedFromIB2 - 300338.IBPluginDependency - 300338.ImportedFromIB2 - 300339.IBPluginDependency - 300339.ImportedFromIB2 - 300340.IBPluginDependency - 300340.ImportedFromIB2 - 300341.IBPluginDependency - 300341.ImportedFromIB2 - 300342.IBPluginDependency - 300342.ImportedFromIB2 - 300345.IBShouldRemoveOnLegacySave - 300346.IBShouldRemoveOnLegacySave - 300347.IBShouldRemoveOnLegacySave - 300348.IBPluginDependency - 300348.ImportedFromIB2 - 300349.IBPluginDependency - 300349.ImportedFromIB2 - 300350.IBPluginDependency - 300350.ImportedFromIB2 - 300351.IBPluginDependency - 300352.IBPluginDependency - 300357.IBPluginDependency - 300357.IBWindowTemplateEditedContentRect - 300357.ImportedFromIB2 - 300357.NSWindowTemplate.visibleAtLaunch - 300357.editorWindowContentRectSynchronizationRect - 300357.windowTemplate.hasMaxSize - 300357.windowTemplate.hasMinSize - 300357.windowTemplate.maxSize - 300357.windowTemplate.minSize - 300358.IBPluginDependency - 300358.ImportedFromIB2 - 300359.IBPluginDependency - 300359.ImportedFromIB2 - 300360.IBPluginDependency - 300360.ImportedFromIB2 - 300361.IBPluginDependency - 300361.ImportedFromIB2 - 300362.IBPluginDependency - 300362.ImportedFromIB2 - 300363.IBPluginDependency - 300363.ImportedFromIB2 - 300364.CustomClassName - 300364.IBPluginDependency - 300364.ImportedFromIB2 - 300365.IBPluginDependency - 300365.ImportedFromIB2 - 300366.IBPluginDependency - 300366.ImportedFromIB2 - 300367.IBPluginDependency - 300367.ImportedFromIB2 - 300368.IBPluginDependency - 300368.ImportedFromIB2 - 300369.CustomClassName - 300369.IBPluginDependency - 300369.ImportedFromIB2 - 300370.IBPluginDependency - 300370.ImportedFromIB2 - 300378.IBPluginDependency - 300378.ImportedFromIB2 - 300379.CustomClassName - 300379.IBPluginDependency - 300379.ImportedFromIB2 - 300380.IBPluginDependency - 300380.ImportedFromIB2 - 300381.IBPluginDependency - 300381.ImportedFromIB2 - 300382.IBPluginDependency - 300382.ImportedFromIB2 - 300383.IBPluginDependency - 300383.ImportedFromIB2 - 300384.IBPluginDependency - 300384.ImportedFromIB2 - 300385.IBPluginDependency - 300385.ImportedFromIB2 - 300386.IBPluginDependency - 300386.ImportedFromIB2 - 300395.IBPluginDependency - 300395.ImportedFromIB2 - 300396.IBPluginDependency - 300396.ImportedFromIB2 - 300397.IBPluginDependency - 300397.ImportedFromIB2 - 300398.IBPluginDependency - 300398.ImportedFromIB2 - 300399.IBPluginDependency - 300399.ImportedFromIB2 - 300400.IBPluginDependency - 300400.ImportedFromIB2 - 300417.IBPluginDependency - 300417.ImportedFromIB2 - 300417.editorWindowContentRectSynchronizationRect - 300418.IBPluginDependency - 300418.ImportedFromIB2 - 300419.IBPluginDependency - 300419.ImportedFromIB2 - 300420.IBPluginDependency - 300420.ImportedFromIB2 - 300421.IBPluginDependency - 300421.ImportedFromIB2 - 300437.IBPluginDependency - 300438.IBPluginDependency - 300443.IBAttributePlaceholdersKey - 300443.IBPluginDependency - 300443.ImportedFromIB2 - 300445.IBAttributePlaceholdersKey - 300445.IBPluginDependency - 300445.ImportedFromIB2 - 310.IBPluginDependency - 310.ImportedFromIB2 - 322.IBPluginDependency - 322.ImportedFromIB2 + 300447.IBPluginDependency 5.IBPluginDependency 5.ImportedFromIB2 56.IBPluginDependency @@ -2964,226 +894,87 @@ YES - - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{1137, 580}, {211, 23}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{1022, 430}, {253, 173}} - - - - - - - - - - - - - - - - - - - - - - - {{1066, 510}, {197, 93}} - - - - - - - {{884, 603}, {314, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - {{719, 105}, {419, 465}} - - - {{719, 105}, {419, 465}} - - - {3.40282e+38, 3.40282e+38} - {213, 107} - - - - - - - - - - - - - - - - - - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - {{932, 664}, {484, 199}} - - - - - - {3.40282e+38, 109} - {239.32, 107} - - - - - - - - - - - - - PopupButton - - - - - - - - - - - NSSecureTextField - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - - {{444, 717}, {203, 73}} - + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{1066, 510}, {197, 93}} + {{492, 1079}, {314, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{884, 603}, {314, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - ToolTip - - - - Create an account - - com.apple.InterfaceBuilder.CocoaPlugin - - ToolTip - - - - Remove an account - - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - - - - - {{896, 420}, {240, 183}} - - + com.apple.InterfaceBuilder.CocoaPlugin + @@ -3206,677 +997,31 @@ - 300446 + 300448 YES FirstResponder - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - + NSObject - IBUserSource - + IBUserSource + - KerberosCacheCollection - NSObject - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - - - - - - - - KerberosCacheCollection - - - YES - - YES - - - YES - - - - YES - - YES - - - YES - - + KerberosAgentController + NSObject IBProjectSource - ../../../Common/Headers/KerberosCacheCollection.h - - - - PopupButton - NSButton - - YES - - YES - - - YES - - - - - NSMenu - - - IBUserSource - + ../Sources/kim/agent/mac/KerberosAgentController.h 0 - ../../../Projects/KerberosIdentityManagement.xcodeproj + ../../../../../../Projects/Kerberos5.xcodeproj 3 - - YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA -AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDKAALAAwAMQA1ADkAQABD -AEQASgBkAGUAZgBpAGwACwB5AH0AkgCWAJ8AqgC6AMMAxADFAMYAxwDIAMkAzQDOANgA5gDrAOwA7QDw -APMA+QD6AQMBEAERARkBGgEcASUBJgEnASwBLgEzATQBNwE7AT4BRwFIAVEBWwFcAWEBYgFlAWoBawFs -AXQBdQF9AX4BjwGRAAsBsgALAbMBtwDiAckB0AHUAdcB2gHjAegB6QHsAfAB9QH2AfkB+gH9AgACAwIE -AgsCDAIWAhcCKgIrAi0CMAIzAj8CMgJAAkECTQJQAlQCVQJYAlkCWwJcAmICawJsAm0CcAJ3AngCfQKH -ApACmQKaAp4CqAE9AqkCqgKyAhYCuQLBAsMCygLLAtMC1ALWAt0C3gLlAuYC7QLuAvUC9gL7AwQDBQJY -Aw4DDwMWAxcDHAMkAysDLAM0AzUDNwNAApkDSQNNAt0DVANbA1wDYwNkA2wDbQNwA3cDeAOAAlgDggOD -A4UACwOGA4cDiAOJA4wDlwOYA5kDmwOdAAsDpAOvA7kAxQPCA8MDyAPQA9ED2QPaA+8D9wQFBAkEGQQa -BCEEKgQrBC4ENQQ2BDkEPgRIBE4ETwRRBFYEVwRhBGIEbARzBHQEeQR6BIMEhQSGBIkEkwSUBJUEmASh -BKIEpgSnBKgEqwSzBLQEvAS9BL4ExgTHBM8E0ATRBNoE2wTjBOQE7ATtBPcE+wT8BQAFAQUDBQsFDAUV -BRkFGgUeBR8FIQALA4YFIgUjBSQFTAVTBVsFXwVgBWEFYwVlBWkFbAVtBXEFdgV9BX4FhQWUBZUFmQWa -BZ4FnwWiBakFqgW1BbwFvQW/BcAFxAXLBdAF0QXSBdMF1gXaBeEF5QXmBecF6AXsBfMF9AX1BfoGAQYG -BgcGCAYNBg4GEgYaBhsGHAYdBiIGMgY3BjgGOQY6BjwGPwZJBlAGUQZSBlMGVAZWBdIGWwZgBmQGawZv -BnAGcQZyBncGeAZ9BoQGhQaGBocGjAaQBpcGmAaZBp4GnwakBqUGqQawBrEGsgazBrcGvga/BsAGwQbF -BswGzQbOBtMG2gbbBtwG4AbnBugG6QbqBu8G9gb3BvgG/QcEBwUHBgcHBwsHEgcTBxQHFQcaBx4HJQcm -BycHKActBzEHOAc5BzoHOwdAB0wHTQdOB08HVgDlB1gHWwdeB2YHZwdoB2kHhQeGB4cHiAeJB4oHiweM -B40HjgePB1YBWwCOB5EHmQeaB5sHoQepB6oHqwfHB84HzwfQB9MH2AfZCFQIXghjCGQIZQhnAOwIawh5 -CIIIiQiKCIsIlAidCGQIngijCKUIqAipCLIIuwi8CL0IxAhkCM0I1ghkCNcI4wjsCPUIZAj2CPgJAAkJ -CQoJCwA4CQ4JEAmLCgcKgwqECoUKhgqHCogKiQqKCosKjAqNCo4KjwqQCpEKkgqTCpQKlQqWCpcKmAqZ -CpoKmwqcCp0KngqfCqAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KsAqxCrIAawqzCrQKtQq2 -CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrU -CtUK1grXCtgK2QraCtsK3ArdCt4K3wrgCuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8Qry -CvMK9Ar1CvYK9wr4Cv4LBAulDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxa -DFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgGLDG8McAxxDHIMcwx0DHUMdgx3 -DHgMeQx6DHsMfAx9DH4MfwyADIEMggyDDIQMhQyGDIcMiAyJDIoMiwyMDI0MjgyPDJAMkQySDJMMlAyV -DJYMlwyYDJkMmgybDJwMnQyeDJ8MoAyhDKIMowykDKUMpgynDKgMqQyqDKsMrAytDK4MrwywDLEMsgyz -DLQMtQy2DLcMuAy5DLoMuwy8DL0Mvgy/DMAMwQzCDMMMxAzFDMYMxwzIDMkMygzLDMwBpgzNDM4MzwzQ -DNEM0gzTDNQM1QzWDNcM2AzZDNoM2wzcDN0M3gzfDOAM4QziDOUM6AzrVSRudWxs3xASAA0ADgAPABAA -EQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4A -LwAwVk5TUm9vdFYkY2xhc3NdTlNPYmplY3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNz -aWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25uZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0Ns -YXNzZXNLZXlzWk5TT2lkc0tleXNdTlNOYW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3Rv -cnNdTlNGb250TWFuYWdlcl8QEE5TVmlzaWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0Fj -Y2Vzc2liaWxpdHlPaWRzS2V5c1lOU05leHRPaWRcTlNPaWRzVmFsdWVzgAKBAyeBAd2BAoOBAyaBAR6B -AgqABoECgoEChIECC4EDJIAAgAeBAgmBAyUSAASVoYEChdIADgAyADMANFtOU0NsYXNzTmFtZYAFgAPS -AA4ANgA3ADhZTlMuc3RyaW5ngARdTlNBcHBsaWNhdGlvbtIAOgA7ADwAPVgkY2xhc3Nlc1okY2xhc3Nu -YW1lowA9AD4AP18QD05TTXV0YWJsZVN0cmluZ1hOU1N0cmluZ1hOU09iamVjdNIAOgA7AEEAQqIAQgA/ -Xk5TQ3VzdG9tT2JqZWN0XxAQSUJDb2NvYUZyYW1ld29ya9IADgBFAEYAR1pOUy5vYmplY3RzgByiAEgA -SYAIgMHdAEsADgBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAY1xO -U1dpbmRvd1ZpZXdcTlNTY3JlZW5SZWN0XxATTlNGcmFtZUF1dG9zYXZlTmFtZV1OU1dpbmRvd1RpdGxl -WU5TV1RGbGFnc11OU1dpbmRvd0NsYXNzXE5TV2luZG93UmVjdFlOU01heFNpemVfEA9OU1dpbmRvd0Jh -Y2tpbmdfEBFOU1dpbmRvd1N0eWxlTWFza1lOU01pblNpemVbTlNWaWV3Q2xhc3OADYDAgL2AO4AKEnB4 -AACAC4AJgL8QAhANgL6ADF8QGHt7Mzc4LCAyNDd9LCB7NDg0LCAxOTl9fV8QGEF1dGhlbnRpY2F0ZSB0 -byBLZXJiZXJvc9IADgA2ADcAaIAEWE5TV2luZG930gAOADYANwBrgARUVmlld9cAbQAOAG4AbwBwAGgA -cQByAHMAdAB1AHYAcgB4XxAPTlNOZXh0UmVzcG9uZGVyWk5TU3Vidmlld3NYTlN2RmxhZ3NbTlNGcmFt -ZVNpemVbTlNTdXBlcnZpZXeADoBzgA8RAQCAu4AOgLzSAA4ARQB6AHuAV6EAfIAQ3QBtAA4AfgB/AIAA -gQBuAG8AaACCAHEAgwCEAFcAhgCHAIgAiQCKAIsAjAByAI4AVwCOAJFeTlNUYWJWaWV3SXRlbXNZTlNU -dkZsYWdzV05TRnJhbWVWTlNGb250XxARTlNEcmF3c0JhY2tncm91bmRfEBZOU0FsbG93VHJ1bmNhdGVk -TGFiZWxzXxAVTlNTZWxlY3RlZFRhYlZpZXdJdGVtgA2AuoB1EAaAdIAqgBERARKADgmADQmAdtIADgBF -AHoAlIBXoQCVgBLYAG0ADgBuAG8AcABoAHEAlwB8AHMAmgB1AJsAcgB8AJ5dTlNOZXh0S2V5Vmlld4AQ -gHOAE4BygA6AEIAU0gAOAEUAegChgFeoAJ4AowCkAKUApgCnAKgAqYAUgB6AN4AngESAOYBigGnbAG0A -DgCAAKsArACtAG8ArgBoAHEAlwCVALAAsQCOALMAtAC1AI4AcgCVAKNaTlNFZGl0YWJsZVZOU0NlbGxb -TlNEcmFnVHlwZXNZTlNFbmFibGVkgBKAJYAdCYAfgBURAQwJgA6AEoAe0gAOAEUARgC8gBymAL0AvgC/ -AMAAwQDCgBaAF4AYgBmAGoAbXxAZQXBwbGUgUERGIHBhc3RlYm9hcmQgdHlwZV8QGUFwcGxlIFBORyBw -YXN0ZWJvYXJkIHR5cGVfEDFOZVhUIEVuY2Fwc3VsYXRlZCBQb3N0U2NyaXB0IHYxLjIgcGFzdGVib2Fy -ZCB0eXBlXxAVTlNGaWxlbmFtZXNQYm9hcmRUeXBlXxAeTmVYVCBUSUZGIHY0LjAgcGFzdGVib2FyZCB0 -eXBlXxAaQXBwbGUgUElDVCBwYXN0ZWJvYXJkIHR5cGXSADoAOwDKAMujAMsAzAA/XE5TTXV0YWJsZVNl -dFVOU1NldF8QFXt7MjAsIDExOX0sIHs2MiwgNjJ9fdkAbQAOAIAArABvAK4AaABxAJcAlQDQANEA0gDT -AI4AcgCVAKWAEoA2gCaAKBEBCgmADoASgCfYANkADgDaANsA3ADdAN4A3wDgAOEA4gDjAOIA4gDkAOVb -TlNDZWxsRmxhZ3NXTlNTdHlsZVpOU0NvbnRlbnRzV05TQWxpZ25XTlNTY2FsZVxOU0NlbGxGbGFnczJa -TlNBbmltYXRlcxIAAf4AgCQQAIAgEgIAAAAI0wAOADIA5wDoAOkA6l5OU1Jlc291cmNlTmFtZYAjgCGA -IldOU0ltYWdlXUtlcmJlcm9zQWdlbnTSADoAOwDuAO+iAO8AP18QEE5TQ3VzdG9tUmVzb3VyY2XSADoA -OwDxAPKjAPIArAA/W05TSW1hZ2VDZWxs0gA6ADsA9AD1pQD1APYA9wD4AD9bTlNJbWFnZVZpZXdZTlND -b250cm9sVk5TVmlld1tOU1Jlc3BvbmRlcl8QFnt7ODcsIDExOX0sIHszODcsIDUxfX3ZAG0ADgCAAKwA -bwCuAGgAcQCXAJUA0AD9AP4AtQCOAHIAlQCkgBKANoBBgEIJgA6AEoA32ADZAA4BBADbAQUBBgDeAQcB -CAEJAQoBCwCKAKMBDgEPXxARTlNCYWNrZ3JvdW5kQ29sb3JZTlNTdXBwb3J0XU5TQ29udHJvbFZpZXdb -TlNUZXh0Q29sb3ISBAH+AIA1gC2AKYAqgB4SEEAAAIAyXxAjUGxlYXNlIGVudGVyIHlvdXIgS2VyYmVy -b3MgaWRlbnRpdHnUAA4BEgETARQBFQEWARcBGFZOU1NpemVWTlNOYW1lWE5TZkZsYWdzgCwjQCoAAAAA -AACAKxEEFFxMdWNpZGFHcmFuZGXSADoAOwEbAIGiAIEAP9UADgEdAR4BHwEgASEBIgCIASMBJFdOU0Nv -bG9yXE5TQ29sb3JTcGFjZVtOU0NvbG9yTmFtZV1OU0NhdGFsb2dOYW1lgDGAMIAvgC5WU3lzdGVtXGNv -bnRyb2xDb2xvctMADgEeASgBIQEqAStXTlNXaGl0ZYAxEANLMC42NjY2NjY2OQDSADoAOwEtAR2iAR0A -P9UADgEdAR4BHwEgASEBMACIATEBJIAxgDSAM4AuXxAQY29udHJvbFRleHRDb2xvctMADgEeASgBIQEq -ATaAMUIwANIAOgA7ATgBOaQBOQE6AKwAP18QD05TVGV4dEZpZWxkQ2VsbFxOU0FjdGlvbkNlbGzSADoA -OwE8AT2lAT0A9gD3APgAP1tOU1RleHRGaWVsZNkAbQAOAIAArABvAK4AaABxAJcAlQDQAUEBQgDTAI4A -cgCVAKeAEoA2gDiAOgmADoASgDlfEBV7ezkwLCA4OX0sIHszNzgsIDIyfX3ZAG0ADgCAAKwAbwCuAGgA -cQCXAJUA0AFLAUwAtQCOAHIAlQCmgBKANoBfgGAJgA6AEoBE2QDZAA4BBADbAQUBBgDeAIIBBwFSAQkB -VABaAIoApAFYAI4BWhP/////lHH+QYA1gDyAO4AqgDcSEEAEAAmAP1DVAA4BHQEeAR8BIAEhAV4AiAFf -ASSAMYA+gD2ALl8QE3RleHRCYWNrZ3JvdW5kQ29sb3LTAA4BHgEoASEBKgFkgDFCMQDVAA4BHQEeAR8B -IAEhATAAiAFoASSAMYA0gECALll0ZXh0Q29sb3JfEBR7ezE3LCA5NH0sIHs2OCwgMTd9fdgA2QAOAQQA -2wEFAQYA3gEHAQgBCQEKAW8AigClAXIBD4A1gC2AQ4AqgCcSBEAAAIAyVU5hbWU62ABtAA4AgACsAG8A -rgBoAHEAlQF3AXgBeQDTAI4AcgCVgBKAXoBFgEYJgA6AEl8QFXt7OTAsIDU3fSwgezM4MSwgMjZ9fd0B -fwDZAA4BBADbAQUBBgDeAIIBgAGBAYIBBwCmAYQBhQFUAYcAigCmAVgAjgGLAYwAjgEPWk5TRGVsZWdh -dGVfEBJOU1Zpc2libGVJdGVtQ291bnRbTlNUYWJsZVZpZXdfEBVOU0hhc1ZlcnRpY2FsU2Nyb2xsZXKA -RBIUcf5AgF2APIBHgCqARAkQBYBICYAy0gAOADYANwFbgATfEBYAbQF/AZIAfwGTAA4BBAGUAZUBlgGX -AZgAbwBwAK4AaAGZAZoBmwBxAZwBnQGeAXkBeQGhAOIBogGjAI4BpQGmAacBeQCMAakAjgGrAawBrQGu -AZ4BsAGxWE5TVGFyZ2V0XxAfTlNEcmFnZ2luZ1NvdXJjZU1hc2tGb3JOb25Mb2NhbF8QEk5TQWxsb3dz -VHlwZVNlbGVjdF8QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlNDb2x1bW5BdXRvcmVzaXppbmdT -dHlsZV8QGE5TSW50ZXJjZWxsU3BhY2luZ0hlaWdodFxOU0RhdGFTb3VyY2VYTlNBY3Rpb25bTlNHcmlk -Q29sb3JfEBxOU0RyYWdnaW5nU291cmNlTWFza0ZvckxvY2FsXk5TVGFibGVDb2x1bW5zW05TUm93SGVp -Z2h0gEmARoBGE//////SQIAAgFyAVAkjQAgAAAAAAAAQASNAAAAAAAAAAIBGgEoJgEuAW4BYEA+ASYBM -I0AzAAAAAAAAV3sxNSwgMH3SAA4ARQB6AbWAV6EBtoBN2gG4AA4BuQG6AbsBvAG9Ab4BvwGBAI4BwQHC -AcMBxAHFASoBxgHHAYxeTlNJc1Jlc2l6ZWFibGVcTlNIZWFkZXJDZWxsXE5TSWRlbnRpZmllcldOU1dp -ZHRoWk5TRGF0YUNlbGxeTlNSZXNpemluZ01hc2taTlNNaW5XaWR0aFpOU01heFdpZHRoCYBWgE+ATiNA -KAAAAAAAAIBTI0AkAAAAAAAAI0CPQAAAAAAAgEjXANkADgEEANsBBQDeAQcBygHLAcwBhwHOAOIBXhIE -gf4AgFKAUYBHgFCAPtQADgESARMBFAEVAcQBFwHTgCyAKxAQ0wAOAR4BKAEhASoB1oAxSzAuMzMzMzMy -OTkA0gA6ADsB2AHZpQHZATkBOgCsAD9fEBFOU1RhYmxlSGVhZGVyQ2VsbNgA2QAOAQQBBQEGAN4AggEH -AdsBCQGjAIoBjAHgAI4BDxIUMf5AgDWAVIAqgEgRBAAJgDLVAA4BHQEeAR8BIAEhASIAiAHmASSAMYAw -gFWALl8QFmNvbnRyb2xCYWNrZ3JvdW5kQ29sb3LSADoAOwHqAeuiAesAP11OU1RhYmxlQ29sdW1u0gA6 -ADsB7QHuowHuAe8AP15OU011dGFibGVBcnJheVdOU0FycmF51QAOAR0BHgEfASABIQHyAIgB8wEkgDGA -WoBZgC5ZZ3JpZENvbG9y0wAOAR4BKAEhASoB+IAxRDAuNQBfEBB0YWJsZVZpZXdBY3Rpb2460gA6ADsB -+wH8pgH8AYEA9gD3APgAP18QEE5TQ29tYm9UYWJsZVZpZXfSADoAOwH+Af+lAf8BOQE6AKwAP15OU0Nv -bWJvQm94Q2VsbNIAOgA7AgECAqYCAgE9APYA9wD4AD9aTlNDb21ib0JveF8QFHt7MTcsIDYxfSwgezY4 -LCAxN3192ADZAA4BBADbAQUBBgDeAQcBCAEJAQoCBwCKAKcBcgEPgDWALYBhgCqAOYAyVlJlYWxtOtkA -bQAOAIAArABvAK4AaABxAJcAlQIOAg8CEAIRAI4AcgCVAHyAEoBogGOAZBEBIQmADoASgBBfEBV7ezM3 -NiwgMTJ9LCB7OTgsIDMyfX3dANkADgIYAhkCGgIbAhwA2wEFAQYCHQDeAh4BCAIfAFoCIQGmAIoCIwIk -AIoAqAInAigCKV8QE05TQWx0ZXJuYXRlQ29udGVudHNfEBJOU1BlcmlvZGljSW50ZXJ2YWxeTlNCdXR0 -b25GbGFnczJfEBBOU0FsdGVybmF0ZUltYWdlXxAPTlNLZXlFcXVpdmFsZW50XxAPTlNQZXJpb2RpY0Rl -bGF5XU5TQnV0dG9uRmxhZ3OAZ4A7EBmAKoBmgGWAKoBiEMgSCAAAABP/////hoJA/1hDb250aW51ZdIA -DgA2ADcBW4AE0gA6ADsCLgIvpAIvAToArAA/XE5TQnV0dG9uQ2VsbNIAOgA7AjECMqUCMgD2APcA+AA/ -WE5TQnV0dG9u2gBtAA4AgAI0AKwAbwCuAGgAMgBxAJUCNgI3AjgCOQI6AI4AcgI9AJVfEBNOU09yaWdp -bmFsQ2xhc3NOYW1lgBKAcYBsgGuAbREBJAmADoBqgBJbUG9wdXBCdXR0b25fEBR7ezE4LCAxNX0sIHs1 -MSwgMjd9fd0A2QAOAhgCQgIZAhoCHADbAQUBBgIdAN4CHgEIAh8AWgJFAkYAYABaAFoCSQCpAksCKAJM -XU5TTm9ybWFsSW1hZ2WAZ4A7gG8QS4A7gDuAboBpEQGQE/////+GzED/1AAOARIBEwEUARUBxgEXAdOA -LIAr0wAOADIA5wDoAOkCU4AjgCGAcFRHZWFy0gA6ADsCVgJXogJXAD9eTlNDbGFzc1N3YXBwZXJaezQ4 -OCwgMjAxfdIAOgA7AloA96MA9wD4AD9fEBV7ey00LCAwfSwgezQ4OCwgMjAxfX3SAA4ARQB6Al6AV6MA -kQJgAmGAdoB6gJ7WAA4BugD3AmMBHQJkAmUCZgCVAHwBCgJqWU5TVGFiVmlld1dOU0xhYmVsgHmAd4AS -gBCALYB4UTFfEA9TZWxlY3QgSWRlbnRpdHnSADoAOwJuAm+iAm8AP11OU1RhYlZpZXdJdGVt1gAOAboA -9wJjAR0CZAJlAnICcwB8AQoCdoB5gHuAfIAQgC2AnVEy1QBtAA4AbgBvAHAAKwBzAnsAdQJ8gACAc4B9 -gJzSAA4ARQB6An+AV6cCgAKBAoICgwKEAoUChoB+gIKAh4CLgJCAlICZ2QBtAA4AgACrAKwArQBvAK4A -cQJzALACigCOAowCjQC1AI4Cc4B8gCWAgAmAgYB/CYB80gAOAEUARgKSgBymAL0AvgC/AMAAwQDCgBaA -F4AYgBmAGoAbXxAVe3sxNywgMTIyfSwgezYyLCA2Mn192ADZAA4A2gDbANwA3QDeAN8A4ADhAOIA4wDi -AOIA5ADlgCSAIAjZAG0ADgCAAjQArABvAK4AMgBxAnMCNgKhAqICowKkAI4CpgJzgHyAcYCFgISAhhEB -IgmAg4B8XxARTlNTZWN1cmVUZXh0RmllbGRfEBV7ezg3LCA2MH0sIHszODEsIDIyfX3ZANkADgEEANsB -BQEGAN4AggEHAVIBCQFUAFoAigKBAVgAjgFagDWAPIA7gCqAggmAP9cAbQAOAIAArABvAK4AcQJzAg4C -tQK2AhEAjgJzgHyAaICIgIkJgHzdANkADgIYAhkCGgIbAhwA2wEFAQYCHQDeAh4BCAIfAFoCIQGmAIoC -vQIkAIoCggInAigCKYBngDuAKoCKgGWAKoCH0gAOADYANwFbgATXAG0ADgCAAKwAbwCuAHECcwIOAsYC -xwIRAI4Cc4B8gGiAjICNCYB8XxAVe3syODMsIDEyfSwgezkzLCAzMn193QDZAA4CGAIZAhoCGwIcANsB -BQEGAh0A3gIeAQgCHwBaAiEBpgCKAs8C0ACKAoMCJwIoAimAZ4A7gCqAj4COgCqAi1dHbyBCYWNr0gAO -ADYANwFbgATXAG0ADgCAAKwAbwCuAHECcwDQAtkC2gDTAI4Cc4B8gDaAkYCSCYB8XxAWe3s4NCwgMTY3 -fSwgezM4NywgMTd9fdgA2QAOAQQA2wEFAQYA3gEHAQgBCQEKAuEAigKEAQ4BD4A1gC2Ak4AqgJCAMl8Q -I1BsZWFzZSBlbnRlciB5b3VyIEtlcmJlcm9zIHBhc3N3b3Jk1wBtAA4AgACsAG8ArgBxAnMA0ALpAuoA -jACOAnOAfIA2gJWAlgmAfF8QFXt7ODQsIDkwfSwgezM4NywgNjl9fdgA2QAOAQQA2wEFAQYA3gEHAQgB -CQEKAvEC8gKFAQ4BD4A1gC2Al4CYgJSAMl8QME1haWwgd2FudHMgdG8gY29ubmVjdCB0byB0aGUgYWNj -b3VudCBseHNAbWl0LmVkddQADgESARMBFAEVAvgBFwL6gCwjQCYAAAAAAACAKxEMHNkAbQAOAIACNACs -AG8ArgAyAHECcwI2Av4COAMAAjoAjgI9AnOAfIBxgJqAa4CbCYBqgHxfEBR7ezE4LCAxNn0sIHs1MSwg -MjZ9fd0A2QAOAhgCQgIZAhoCHADbAQUBBgIdAN4CHgEIAh8AWgJFAkYAYABaAFoCSQKGAksCKAMNgGeA -O4BvgDuAO4BugJkT/////4bEQP9fEBpBdXRoZW50aWNhdGlvbiBJbmZvcm1hdGlvbtYADgG6APcCYwEd -AmQCZQMRAxIAfAEKAxWAeYCfgKCAEIAtgLlRM9UAbQAOAG4AbwBwACsAcwMaAHUDG4AAgHOAoYC40gAO -AEUAegMegFelAx8DIAMhAyIDI4CigKeAq4CvgLTXAG0ADgCAAKwAbwCuAHEDEgIOAycDKAIRAI4DEoCg -gGiAo4CkCYCgXxAVe3szOTIsIDEyfSwgezgyLCAzMn193QDZAA4CGAIZAhoCGwIcANsBBQEGAh0A3gIe -AQgCHwBaAiEBpgCKAzADMQCKAx8CJwIoAimAZ4A7gCqApoClgCqAolREb25l0gAOADYANwFbgATZAG0A -DgCAAKsArACtAG8ArgBxAxIAsAM6AI4DPAM9ALUAjgMSgKCAJYCpCYCqgKgJgKDSAA4ARQBGA0KAHKYA -vQC+AL8AwADBAMKAFoAXgBiAGYAagBvYANkADgDaANsA3ADdAN4A3wDgAOEA4gDjAOIA4gDkAOWAJIAg -CNcAbQAOAIAArABvAK4AcQMSANADUANRANMAjgMSgKCANoCsgK0JgKDYANkADgEEANsBBQEGAN4BBwEI -AQkBCgNXAIoDIQEOAQ+ANYAtgK6AKoCrgDJaQ29uY2x1c2lvbtcAbQAOAIAArABvAK4AcQMSANADXwNg -AIwAjgMSgKCANoCwgLEJgKBfEBV7ezg0LCA2MH0sIHszODcsIDk5fX3YANkADgEEANsBBQEGAN4BBwEI -AQkDZgNnAvIDIgNqAQ+ANYCzgLKAmICvEhBCAACAMl8QS0NvbmdyYXR1bGF0aW9ucyEgWW91IGhhdmUg -YWNxdWlyZWQgS2VyYmVyb3MgdGlja2V0cyBmb3IgbHhzQEFUSEVOQS5NSVQuRURVLtMADgEeASgBIQEq -A2+AMU0xIDAuOTcwMDAwMDMA1wBtAA4AgACsAG8ArgBxAxICDgNzA3QCEQCOAxKAoIBogLWAtgmAoF8Q -FXt7MzA1LCAxMn0sIHs5MSwgMzJ9fd0A2QAOAhgCGQIaAhsCHADbAQUBBgIdAN4CHgEIAh8AWgIhAaYA -igN8AtAAigMjAicCKAIpgGeAO4AqgLeAjoAqgLTSAA4ANgA3AVuABFZSZXN1bHTSADoAOwOEAmOkAmMA -9wD4AD9aezQ4NCwgMTk5fV8QFnt7MCwgMH0sIHsxOTIwLCAxMTc4fX1dezIzOS4zMiwgMTI5fV8QEnsz -LjQwMjgyZSszOCwgMTMxfdIAOgA7A4oDi6IDiwA/XxAQTlNXaW5kb3dUZW1wbGF0Zd0ASwAOAEwATQBO -AE8AUABRAFIAUwBUAFUAVgONAFgDjwBaA5EAXAOSA5MDlABgAGEDlQOWgMaAwIEBG4A7gMOAxIDCgQEd -gQEcgMVfEBh7ezI3OSwgMzYzfSwgezQxOSwgNDY1fX1fEBpDaG9vc2UgYSBLZXJiZXJvcyBJZGVudGl0 -edIADgA2ADcAaIAE0gAOADYANwBrgATXAG0ADgBuAG8AcABoAHEDngBzA6AAdQOhA54Do4DHgHOAyIEB -GYDHgQEa0gAOAEUAegOmgFeoA6cDqAOpA6oDqwOsA60DroDJgM6A0oD7gQEAgQEFgQEJgQER2gBtAA4A -gACrAKwArQBvAK4AaABxA40AsAOyAI4DtAO1ALUAjgOeA42AxoAlgMwJgM2AygmAx4DG0gAOAEUARgO7 -gBymAL0AvgO+AMAAwQDCgBaAF4DLgBmAGoAbXxAVe3sxNywgMzg2fSwgezYyLCA2Mn192ADZAA4A2gDb -ANwA3QDeAN8DxADhAOIA4wDiAOIA5ADlEiAB/gCAJIAgCNgAbQAOAIAArABvAK4AaABxA40A0APLA8wA -0wCOA54DjYDGgDaAz4DQCYDHgMZfEBZ7ezg0LCAzNzd9LCB7MzE4LCAyOX192ADZAA4BBADbAQUBBgDe -AQcBCAEJAQoD1ALyA6gD1wEPgDWALYDRgJiAzhIAQgAAgDJfECVDaGVja2luZyBtYWlsIGZvciBhY2Nv -dW50IGx4c0BtaXQuZWR13gBtA9sADgCAA9wD3QPeAG4D3wBvAGgAcQPgA+EDjQPjA+QD5QPmA+cD6APp -A+oAjAOeA40D7QPuW05TSFNjcm9sbGVyWE5Tc0ZsYWdzXE5TQ29ybmVyVmlld18QEE5TSGVhZGVyQ2xp -cFZpZXdcTlNTY3JvbGxBbXRzW05TVlNjcm9sbGVyXU5TQ29udGVudFZpZXeAxoD1gPqA+RECMoDcgNmA -008QEEEgAABBIAAAQZgAAEGYAACAx4DGgPGA1NIADgBFAHoD8YBXpQPuA+0D4wPoA+eA1IDxgPWA2YDc -2gBtAA4AgAP4AG4AbwP5AGgD+gBxA6kD/AP9A/4D/wQABAEDngGjA6lZTlNjdkZsYWdzWU5TRG9jVmll -d1lOU0JHQ29sb3KA0oDwgO8QBIDVEQkAgNaAx4BUgNLSAA4ARQB6BAeAV6EEAYDW3xAUAG0BkwAOAH8E -CgEEAZQD3QGVAZYBlwBvAHAArgBoAZoBmwBxAZwBnQPuAOIEDAQNBA4BXgCOA+cBpQGLAacAdQQSAI4D -ngGtAa4D7gQXBBhcTlNIZWFkZXJWaWV3gNSA7hJCwAAAgNiAPgmA3IDXCYDHgFiA1IDfI0AxAAAAAAAA -WnszODAsIDI5MX3XAG0ADgBvAHAAaABxAYED6AQcAHUEHQOeA+gEAYDZgNuA2oDHgNmA1toAbQAOAIAD -+ABuAG8D+QBoA/oAcQOpA/wEJAP+BCUEAAQOA54BowOpgNKA8ID4gPeA2IDHgFSA0ll7MzgwLCAxN33S -ADoAOwQsBC2kBC0A9wD4AD9fEBFOU1RhYmxlSGVhZGVyVmlld9YAbQAOAIAAbwBoAHEDqQQwBDEEMgOe -A6mA0oDegN0T/////4AAAQCAx4DSXxAUe3stMjYsIDB9LCB7MTYsIDE3fX3SADoAOwQ3BDikBDgA9wD4 -AD9dX05TQ29ybmVyVmlld9IADgBFAHoEO4BXogQ8BD2A4IDo2gG4AA4BuQG7AbwBvQG+Ab8EPwGBAI4B -wQRCBEMERAEqBEUBxwCOBAFcTlNJc0VkaXRhYmxlCYBWgOEjQHEflgAAAACA5iNAYr8sAAAAAAmA1tcA -2QAOAQQA2wEFAN4BBwHKAcsESgRLAvIA4gRNgFKA44DigJiA5FhJZGVudGl0edMADgEeASgBIQEqAdaA -MdUADgEdAR4BHwEgASEBMACIBFQBJIAxgDSA5YAuXxAPaGVhZGVyVGV4dENvbG9y2QDZAA4BBADbAQUB -BgDeAIIBBwRYAQkBCgRbAIoEAQReAI4BDxJUIf5AgDWALYDngCqA1hJQQAQACYAyWVRleHQgQ2VsbNoB -uAAOAbkBuwG8Ab0BvgG/BD8BgQCOAcEEZQRmBGcBKgRoBGkAjgQBCYBWgOkjQFkUEAAAAACA7SNAWQAA -AAAAACNAYsAAAAAAAAmA1tcA2QAOAQQA2wEFAN4BBwEIAcsEbgRvAvIEcQRNgFKA64DqgJgSBAAAAIDk -XlRpbWUgUmVtYWluaW5n1QAOAR0BHgEfASABIQFeAIgEdwEkgDGAPoDsgC5baGVhZGVyQ29sb3LYANkA -DgEEANsBBQEGAN4BBwR7AQkBCgRbAIoEAQSBAQ8SRAH+QIA1gC2A54AqgNYSREAEAIAy0gA6ADsEhAGB -pQGBAPYA9wD4AD9fEBV7ezEsIDE3fSwgezM4MCwgMjkxfX3SADoAOwSHBIikBIgA9wD4AD9aTlNDbGlw -Vmlld9kAbQGSAA4AgABvAGgBmQBxBIoDqQOpBI0EjgQyA54EkAOpBJJZTlNQZXJjZW50gNKA0oD0gPKA -x4DzgNIjP+79TiAAAABfEBZ7ey0zMCwgMTd9LCB7MTUsIDI4NX19XF9kb1Njcm9sbGVyOtIAOgA7BJYE -l6UElwD2APcA+AA/Wk5TU2Nyb2xsZXLaAG0BkgAOAIAD3ABvAGgBmQBxBIoDqQOpBI0EnAGmBDIDngSQ -A6kEoIDSgNKA9ID2gMeA84DSIz/s7jJgAAAAXxAVe3sxLCAtMzB9LCB7MzYyLCAxNX190gAOAEUAegSk -gFehBA6A2F8QE3t7MSwgMH0sIHszODAsIDE3fX1fEBZ7ezE3LCA2MH0sIHszODIsIDMwOX190gA6ADsE -qQSqpASqAPcA+AA/XE5TU2Nyb2xsVmlld9gAbQAOAIAArABvAK4AaABxA40CDgSuBK8CEQCOA54DjYDG -gGiA/ID9CYDHgMZfEBV7ezMyMCwgMTJ9LCB7ODcsIDMyfX3dANkADgIYAhkCGgIbAhwA2wEFAQYCHQDe -Ah4BCAIfAFoCIQGmAIoEuAS5AIoDqgInAigCKYBngDuAKoD/gP6AKoD7VkNob29zZVEN2ABtAA4AgACs -AG8ArgBoAHEDjQIOBMEEwgIRAI4DngONgMaAaIEBAYEBAgmAx4DGXxAVe3syMzgsIDEyfSwgezgyLCAz -Mn193QDZAA4CGAIZAhoCGwIcANsBBQEGAh0A3gIeAQgCHwBaAiEBpgCKBMsEzACKA6sCJwIoAimAZ4A7 -gCqBAQSBAQOAKoEBAFZDYW5jZWxRG9gAbQAOAIAArABvAK4AaABxA40A0ATUBNUE1gCOA54DjYDGgDaB -AQaBAQcRAQ4JgMeAxl8QFnt7ODQsIDQxNH0sIHszMTgsIDIxfX3YANkADgEEANsBBQEGAN4BBwEIAQkB -CgTeAIoDrAThAQ+ANYAtgQEIgCqBAQUSAEAAAIAyXxAxTWFpbCByZXF1aXJlcyB0aGF0IHlvdSBjaG9v -c2UgYSBLZXJiZXJvcyBJZGVudGl0edgAbQAOAIAArABvAK4AaABxA40CDgTnBOgCOgCOA54DjYDGgGiB -AQqBAQsJgMeAxl8QFHt7MTcsIDMwfSwgezIzLCAyMn193gDZAA4CGAJCAhkCGgIbAhwA2wEFAQYCHQDe -Ah4BCAIfAFoE8AIhAIgE8QTyAFoC8gOtAicCKAT2gGeAO4EBDIEBDoEBEIA7gJiBAQkSCERA/9MADgAy -AOcA6ADpBPqAI4AhgQENU0FkZNMADgAyAOcA6ADpBP+AI4AhgQEPW0FkZF9QcmVzc2Vk0gAOADYANwFb -gATYAG0ADgCAAKwAbwCuAGgAcQONAg4FBgUHAjoAjgOeA42AxoBogQESgQETCYDHgMZfEBR7ezM5LCAz -MH0sIHsyMywgMjJ9fd4A2QAOAhgCQgIZAhoCGwIcANsBBQEGAh0A3gIeAQgCHwBaBQ8CIQCIBRAFEQBa -AvIDrgInAigE9oBngDuBARSBARaBARiAO4CYgQER0wAOADIA5wDoAOkFGIAjgCGBARVWUmVtb3Zl0wAO -ADIA5wDoAOkFHYAjgCGBARdeUmVtb3ZlX1ByZXNzZWTSAA4ANgA3AVuABFp7NDE5LCA0NjV9WnsyMTMs -IDEyOX1fEBp7My40MDI4MmUrMzgsIDMuNDAyODJlKzM4fdIADgBFAHoFJoBXrxAlBScFKAUpBSoFKwUs -BS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVK -BUuBAR+BASqBATyBAUOBAUmBAU2BAVKBAVSBAVmBAWiBAWqBAWuBAXGBAXOBAXiBAXmBAX2BAX+BAYGB -AYaBAYuBAY+BAZOBAZiBAZyBAaGBAaaBAaeBAayBAa2BAbKBAbOBAbyBAc+BAdOBAdeBAdvUAA4FTQVO -AmQFTwVQBVEFUl1OU0Rlc3RpbmF0aW9uWE5TU291cmNlgQEpgQEngQEggQEo1AAOBVQFVQVWBVcFWAVZ -BVpfEA9fTlNNYW5hZ2VkUHJveHlfEBFOU09iamVjdENsYXNzTmFtZV5OU0RlY2xhcmVkS2V5c4EBJoEB -JIEBI4EBIdIADgBFAHoFXYBXoQVegQEiW2NhY2hlc0FycmF5XxAXS2VyYmVyb3NDYWNoZUNvbGxlY3Rp -b27RAA4FYoEBJdIAOgA7BWQFVKIFVAA/0gA6ADsFZgVnowVnBWgAP18QEk5TT2JqZWN0Q29udHJvbGxl -clxOU0NvbnRyb2xsZXLSAA4AMgAzBVmABYEBI1djb250ZW500gA6ADsFbgVvowVvBXAAP18QFE5TTmli -T3V0bGV0Q29ubmVjdG9yXk5TTmliQ29ubmVjdG9y1AAOBU0FTgJkBU8FcwKGBXWBASmBASuAmYEBO9QA -DgV3ARMFeAV5BXoAWgV8V05TVGl0bGVbTlNNZW51SXRlbXOBATqBASyAO4EBLVRNZW510gAOAEUAegWA -gFekBYEFggWDBYSBAS6BATWBATeBATjYAA4FdwWGBYcFiAWJBYoFiwWMBY0FjgBaBZAFkQWSBXNfEBFO -U0tleUVxdWl2TW9kTWFza1pOU0tleUVxdWl2XU5TTW5lbW9uaWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJ -bWFnZVZOU01lbnWBATSBAS8SABAAAIA7En////+BATCBATKBAStvEA8AVABpAGMAawBlAHQAIABPAHAA -dABpAG8AbgBzICbTAA4AMgDnAOgA6QWYgCOAIYEBMV8QD05TTWVudUNoZWNrbWFya9MADgAyAOcA6ADp -BZ2AI4AhgQEzXxAQTlNNZW51TWl4ZWRTdGF0ZdIAOgA7BaAFoaIFoQA/Wk5TTWVudUl0ZW3YAA4FdwWG -BYcFiAWJBYoFiwWMBaQFjgBaBZAFkQWSBXOBATSBATaAO4EBMIEBMoEBK28QEABDAGgAYQBuAGcAZQAg -AFAAYQBzAHMAdwBvAHIAZCAm2gAOBXcFhgWrBYcFrAWIBYkFigWLBYwAWgWOAI4AWgCOBZAFkQWSBXNd -TlNJc1NlcGFyYXRvclxOU0lzRGlzYWJsZWSBATSAOwmAOwmBATCBATKBASvYAA4FdwWGBYcFiAWJBYoF -iwWMBbcFjgBaBZAFkQWSBXOBATSBATmAO4EBMIEBMoEBK18QEUFib3V0IEtlcmJlcm9zLi4u0gA6ADsF -vgWLogWLAD9UbWVuddMADgVOAmQFwQXCBcOBAUKBAT2BAUHYAA4FdwWGBYcFiAWJBYoFiwWMBcYFjgXH -BZAFkQWSBcqBATSBAT+BAUCBATCBATKBAT7UAA4FdwETBXgFeQXNBc4Fz4EBOoECAYECBIECAlVDbG9z -ZVF3XXBlcmZvcm1DbG9zZTrSADoAOwXUBdWjBdUFcAA/XxAVTlNOaWJDb250cm9sQ29ubmVjdG9y0wAO -BU4CZAXBBdgF2YEBQoEBRIEBSNgADgV3BYYFhwWIBYkFigWLBYwF3AWOBd0FkAWRBZIF4IEBNIEBRoEB -R4EBMIEBMoEBRdMADgV3BXgFeQXjBeSBATqBAfqBAfxaU2VsZWN0IEFsbFFhWnNlbGVjdEFsbDrTAA4F -TgJkBcEF6gXrgQFCgQFKgQFM2AAOBXcFhgWHBYgFiQWKBYsFjAXuBY4AWgWQBZEFkgXKgQE0gQFLgDuB -ATCBATKBAT5UWm9vbVxwZXJmb3JtWm9vbTrUAA4FTQVOAmQFwQAfBfgF+YEBQoACgQFOgQFR1wAOBXcF -hwWIBYkFigWLBYwF/ABaBZAFkQWSBgCBATSBAVCAO4EBMIEBMoEBT9QADgV3ARMFeAV5BgMGBAYFgQE6 -gQHkgQH0gQHlXxATQWJvdXQgS2VyYmVyb3NBZ2VudF8QHW9yZGVyRnJvbnRTdGFuZGFyZEFib3V0UGFu -ZWw61AAOBU0FTgJkBU8FcwCpBgyBASmBASuAaYEBU1lwb3B1cE1lbnXTAA4FTgJkBcEGEAYRgQFCgQFV -gQFY2AAOBXcFhgWHBYgFiQWKBYsFjAYUBhUGFgWQBZEFkgXggQE0gQFWEgAYAACBAVeBATCBATKBAUVf -EBVQYXN0ZSBhbmQgTWF0Y2ggU3R5bGVRVl8QEXBhc3RlQXNQbGFpblRleHQ61AAOBU0FTgJkBU8GHwYg -BVKBASmBAWGBAVqBASjaBiMADgYkBVQAqwVVBVYGJQYmBicAjgYpAI4GKwCOBi0GLgCOAI4Ajl8QGk5T -RmlsdGVyUmVzdHJpY3RzSW5zZXJ0aW9uXxAUTlNQcmVzZXJ2ZXNTZWxlY3Rpb25fECJOU0NsZWFyc0Zp -bHRlclByZWRpY2F0ZU9uSW5zZXJ0aW9uXxAYTlNTZWxlY3RzSW5zZXJ0ZWRPYmplY3RzXxAWTlNBdm9p -ZHNFbXB0eVNlbGVjdGlvbgmBAWAJgQFfCYEBXoEBWwkJCdIADgBFAHoGNIBXogY1BjaBAVyBAV1fEBZz -ZXJ2aWNlUHJpbmNpcGFsU3RyaW5nXxAYc2hvcnRUaW1lUmVtYWluaW5nU3RyaW5nXxASS2VyYmVyb3ND -cmVkZW50aWFs0QAOBWKBASXSADoAOwY9Bj6kBj4FZwVoAD9fEBFOU0FycmF5Q29udHJvbGxlctkGIwAO -BiQFVAVVBVYGJQYmBicAjgYpAI4GQwZEBkUAjgCOAI4JgQFgCYEBZ4EBZoEBYgkJCdIADgBFAHoGS4BX -pAZMBk0GNgZPgQFjgQFkgQFdgQFlXxAQY3JlZGVudGlhbHNBcnJheV8QD3ByaW5jaXBhbFN0cmluZ18Q -E3RpbWVSZW1haW5pbmdTdHJpbmddS2VyYmVyb3NDYWNoZdEADgVigQEl1AAOBU0FTgJkBcEASQTCBlqB -AUKAwYEBAoEBadQADgVNBU4CZAVPBXMAqQV1gQEpgQErgGmBATvTAA4FTgJkBcEGYgZjgQFCgQFsgQFw -2AAOBXcFhgWHBYgFiQWKBYsFjAZmBY4GZwWQBZEFkgZqgQE0gQFugQFvgQEwgQEygQFt0wAOBXcFeAV5 -Bm0GboEBOoEB4oEB418QEktlcmJlcm9zQWdlbnQgSGVscFE/WXNob3dIZWxwOtQADgVNBU4CZAVPAKQA -pgZ2gQEpgDeARIEBcltuZXh0S2V5Vmlld9QADgVNBU4CZAXBAB8GewZ8gQFCgAKBAXSBAXfYAA4FdwWG -BYcFiAWJBYoFiwWMBn8GFQaABZAFkQWSBgCBATSBAXWBAXaBATCBATKBAU9bSGlkZSBPdGhlcnNRaF8Q -FmhpZGVPdGhlckFwcGxpY2F0aW9uczrUAA4FTQVOAmQFTwCmAKQGdoEBKYBEgDeBAXLTAA4FTgJkBcEG -jgaPgQFCgQF6gQF82AAOBXcFhgWHBYgFiQWKBYsFjAaSBY4AWgWQBZEFkgXKgQE0gQF7gDuBATCBATKB -AT5fEBJCcmluZyBBbGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrUAA4FTQVOAmQFwQB8AyMGnYEB -QoAQgLSBAX5fEBpzZWxlY3RQcmV2aW91c1RhYlZpZXdJdGVtOtQADgVNBU4CZAXBAHwAqAajgQFCgBCA -YoEBgF8QFnNlbGVjdE5leHRUYWJWaWV3SXRlbTrTAA4FTgJkBcEGpwaogQFCgQGCgQGF2AAOBXcFhgWH -BYgFiQWKBYsFjAarBY4GrAWQBZEFkgXggQE0gQGDgQGEgQEwgQEygQFFVVBhc3RlUXZWcGFzdGU60wAO -BU4CZAXBBrUGtoEBQoEBh4EBitgADgV3BYYFhwWIBYkFigWLBYwGuQWOBroFkAWRBZIF4IEBNIEBiIEB -iYEBMIEBMoEBRVRDb3B5UWNVY29weTrTAA4FTgJkBcEGwwbEgQFCgQGMgQGO2AAOBXcFhgWHBYgFiQWK -BYsFjAbHBY4AWgWQBZEFkgXggQE0gQGNgDuBATCBATKBAUVWRGVsZXRlV2RlbGV0ZTrUAA4FTQVOAmQF -wQAfBtEG0oEBQoACgQGQgQGS2AAOBXcFhgWHBYgFiQWKBYsFjAbVBY4GgAWQBZEFkgYAgQE0gQGRgQF2 -gQEwgQEygQFPXxASSGlkZSBLZXJiZXJvc0FnZW50VWhpZGU60wAOBU4CZAXBBt4G34EBQoEBlIEBl9gA -DgV3BYYFhwWIBYkFigWLBYwG4gWOBuMFkAWRBZIF4IEBNIEBlYEBloEBMIEBMoEBRVNDdXRReFRjdXQ6 -1AAOBU0FTgJkBcEAHwbtBu6BAUKAAoEBmYEBm9gADgV3BYYFhwWIBYkFigWLBYwG8QWOAFoFkAWRBZIG -AIEBNIEBmoA7gQEwgQEygQFPWFNob3cgQWxsXxAWdW5oaWRlQWxsQXBwbGljYXRpb25zOtQADgVNBU4C -ZAXBAB8G+wb8gQFCgAKBAZ2BAaDYAA4FdwWGBYcFiAWJBYoFiwWMBv8FjgcABZAFkQWSBgCBATSBAZ6B -AZ+BATCBATKBAU9fEBJRdWl0IEtlcmJlcm9zQWdlbnRRcVp0ZXJtaW5hdGU60wAOBU4CZAXBBwkHCoEB -QoEBooEBpdgADgV3BYYFhwWIBYkFigWLBYwHDQWOBw4FkAWRBZIF4IEBNIEBo4EBpIEBMIEBMoEBRVRV -bmRvUXpVdW5kbzrUAA4FTQVOAmQFTwVzAoYGDIEBKYEBK4CZgQFT0wAOBU4CZAXBBxwHHYEBQoEBqIEB -q9gADgV3BYYFhwWIBYkFigWLBYwHIAWOByEFkAWRBZIF4IEBNIEBqYEBqoEBMIEBMoEBRVRSZWRvUVpV -cmVkbzrUAA4FTQVOAmQFwQB8AoIGo4EBQoAQgIeBAYDTAA4FTgJkBcEHLwcwgQFCgQGugQGx2AAOBXcF -hgWHBYgFiQWKBYsFjAczBY4HNAWQBZEFkgXKgQE0gQGvgQGwgQEwgQEygQE+WE1pbmltaXplUW1fEBNw -ZXJmb3JtTWluaWF0dXJpemU61AAOBU0FTgJkBcEAfAKDBp2BAUKAEICLgQF+2AAOBU0HQQdCBU4CZAdD -B0QHRQVRB0cHSAYfB0oHSwBgWU5TS2V5UGF0aFlOU0JpbmRpbmdZTlNPcHRpb25zXxAcTlNOaWJCaW5k -aW5nQ29ubmVjdG9yVmVyc2lvboEBu4EBIIEBtoEBtYEBYYEBtIEBt18QI2NvbnRlbnRBcnJheTogc2Vs -ZWN0aW9uLmNhY2hlc0FycmF5XGNvbnRlbnRBcnJheV8QFXNlbGVjdGlvbi5jYWNoZXNBcnJhedMADgdQ -AEUHUQdSB1RXTlMua2V5c4EBuqEHU4EBuKEHVYEBuV8QG05TQ29uZGl0aW9uYWxseVNldHNFZGl0YWJs -ZQjSADoAOwdZB1qiB1oAP1xOU0RpY3Rpb25hcnnSADoAOwdcB12jB10FcAA/XxAVTlNOaWJCaW5kaW5n -Q29ubmVjdG9y2AAOBU0HQQdCBU4CZAdDB0QHRQYfB2EHYgQ9B2QHZQBggQG7gQFhgQG/gQG+gOiBAb2B -AcBfEC92YWx1ZTogYXJyYW5nZWRPYmplY3RzLnNob3J0VGltZVJlbWFpbmluZ1N0cmluZ1V2YWx1ZV8Q -KGFycmFuZ2VkT2JqZWN0cy5zaG9ydFRpbWVSZW1haW5pbmdTdHJpbmfTAA4HUABFB1EHawd4gQG6rAds -B20HbgdvB3AHcQdyB3MHdAd1B3YHd4EBwYEBwoEBw4EBxIEBxYEBxoEBx4EByIEByYEByoEBy4EBzKwH -VQdVB1UHVQd9B30HVQdVB30HfQdVB4SBAbmBAbmBAbmBAbmBAc2BAc2BAbmBAbmBAc2BAc2BAbmBAc5f -EBpOU0NvbmRpdGlvbmFsbHlTZXRzRW5hYmxlZF8QHE5TUmFpc2VzRm9yTm90QXBwbGljYWJsZUtleXNf -EBZOU1ZhbGlkYXRlc0ltbWVkaWF0ZWx5XxAmTlNBbHdheXNQcmVzZW50c0FwcGxpY2F0aW9uTW9kYWxB -bGVydHNfEBtOU011bHRpcGxlVmFsdWVzUGxhY2Vob2xkZXJfEBFOU051bGxQbGFjZWhvbGRlcl8QGk5T -Q29udGludW91c2x5VXBkYXRlc1ZhbHVlXxAXTlNDcmVhdGVzU29ydERlc2NyaXB0b3JfEBpOU05vdEFw -cGxpY2FibGVQbGFjZWhvbGRlcl8QGE5TTm9TZWxlY3Rpb25QbGFjZWhvbGRlcl8QJk5TQWxsb3dzRWRp -dGluZ011bHRpcGxlVmFsdWVzU2VsZWN0aW9uCdgADgVNB0EHQgVOAmQHQwdEB0UGHweUB0gGIAeXB5gA -YIEBu4EBYYEB0YEBtYEBWoEB0IEB0l8QKGNvbnRlbnRBcnJheTogc2VsZWN0aW9uLmNyZWRlbnRpYWxz -QXJyYXlfEBpzZWxlY3Rpb24uY3JlZGVudGlhbHNBcnJhedMADgdQAEUHUQedB5+BAbqhB1OBAbihB1WB -AbnYAA4FTQdBB0IFTgJkB0MHRAdFBh8HpAdiBDwHpweoAGCBAbuBAWGBAdWBAb6A4IEB1IEB1l8QJnZh -bHVlOiBhcnJhbmdlZE9iamVjdHMucHJpbmNpcGFsU3RyaW5nXxAfYXJyYW5nZWRPYmplY3RzLnByaW5j -aXBhbFN0cmluZ9MADgdQAEUHUQetB7qBAbqsB2wHbQduB28HcAdxB3IHcwd0B3UHdgd3gQHBgQHCgQHD -gQHEgQHFgQHGgQHHgQHIgQHJgQHKgQHLgQHMrAdVB1UHVQdVB30HfQdVB1UHfQd9B1UHhIEBuYEBuYEB -uYEBuYEBzYEBzYEBuYEBuYEBzYEBzYEBuYEBztQADgVNB8gHyQfKA60HzAfNWE5TTWFya2VyVk5TRmls -ZYEB2oEBCYEB2YEB2F8QEE5TVG9vbFRpcEhlbHBLZXlfEBFDcmVhdGUgYW4gYWNjb3VudNIAOgA7B9EH -0qIH0gA/XxARTlNJQkhlbHBDb25uZWN0b3LUAA4FTQfIB8kHygOuB9YHzYEB2oEBEYEB3IEB2F8QEVJl -bW92ZSBhbiBhY2NvdW500gAOAEUH2gfbgQIIrxB4BYIE6AfeBfgGAAZqBtEEAQKCAuoF6gLHB+gH6QOp -B+sAVwK2AJEChgQ8AoEGpwWDA2AGIAOuAUwDIAaOB/oHHAD+B/0GtQTCCAADrQbeAKkC2gREA6wDKAMh -AKgAngYQCAwDIwCVBNUAswBJAUIIEwPtCBUF4AbtA6oFBwKFBXMDqAWBBVEFygNRBcICowXYAKMDdAbD -BGcCjACnBwkDPAQOAXkApQKDAmAD4wgyBK8DEgONBh8G+wMiCDkDqwZ7AjkDzAg+AKYGYgcvBD0DHwIQ -AnMASAKEA6cDtAB8CEsCYQVQAKQA0gKAAwAIUgWEgQE1gQELgQHegQFOgQFPgQFtgQGQgNaAh4CWgQFK -gI2BAeuBAe6A0oEB34ANgImAdoCZgOCAgoEBgoEBN4CxgQFagQERgGCAp4EBeoECA4EBqIBCgQHzgQGH -gQECgQHygQEJgQGUgGmAkoDmgQEFgKSAq4BigBSBAVWBAeaAtIASgQEHgB+AwYA6gQH5gPGBAfeBAUWB -AZmA+4EBE4CUgQErgM6BAS6BASCBAT6ArYEBPYCGgQFEgB6AtoEBjIDtgIGAOYEBooCqgNiARoAngIuA -eoD1gQH9gP2AoIDGgQFhgQGdgK+BAeqBAQCBAXSAbYDQgQHngESBAWyBAa6A6ICigGSAfIAIgJCAyYDN -gBCBAf6AnoEBJ4A3gCiAfoCbgQIGgQE42gAOCFUFdwWGBYcFiAWJBYoFiwGZBYwGaghYBY4AWgWQBZEF -kgfrCF1ZTlNTdWJtZW51gQE0gQFtgQHggDuBATCBATKBAd+BAeHUAA4FdwETBXgFeQhgCGEIYoEBOoEB -9YECBYEB9lRIZWxwXnN1Ym1lbnVBY3Rpb2460gAOADYANwhjgATSAA4ARQB6CGmAV6EGYoEBbNIADgBF -AHoIbYBXqwX4CAwIPgg5B+gIAAbRBnsG7Qf9BvuBAU6BAeaBAeeBAeqBAeuBAfKBAZCBAXSBAZmBAfOB -AZ3aAA4FdwWGBasFhwWsBYgFiQWKBYsFjABaBY4AjgBaAI4FkAWRBZIGAIEBNIA7CYA7CYEBMIEBMoEB -T9gADgV3BYYFhwWIBYkFigWLBYwIhAWOCIUFkAWRBZIGAIEBNIEB6IEB6YEBMIEBMoEBT2wAUAByAGUA -ZgBlAHIAZQBuAGMAZQBzICZRLNoADgV3BYYFqwWHBawFiAWJBYoFiwWMAFoFjgCOAFoAjgWQBZEFkgYA -gQE0gDsJgDsJgQEwgQEygQFP2gAOCFUFdwWGBYcFiAWJBYoFiwGZBYwH6QiXBY4AWgWQBZEFkgYACJyB -ATSBAe6BAeyAO4EBMIEBMoEBT4EB7VhTZXJ2aWNlc9QADgV3ARMFeAV5CKAIoQiigQE6gQHvgQHxgQHw -0gAOADYANwidgATSAA4ARQB6CKeAV6BfEA9fTlNTZXJ2aWNlc01lbnXaAA4FdwWGBasFhwWsBYgFiQWK -BYsFjABaBY4AjgBaAI4FkAWRBZIGAIEBNIA7CYA7CYEBMIEBMoEBT9oADgV3BYYFqwWHBawFiAWJBYoF -iwWMAFoFjgCOAFoAjgWQBZEFkgYAgQE0gDsJgDsJgQEwgQEygQFPXF9OU0FwcGxlTWVudVhNYWluTWVu -ddIADgBFAHoIv4BXpAgVCBMISwfegQH3gQH5gQH+gQHe2gAOCFUFdwWGBYcFiAWJBYoFiwGZBYwGAAYD -BY4AWgWQBZEFkgfrCMyBATSBAU+BAeSAO4EBMIEBMoEB34EB+NoADghVBXcFhgWHBYgFiQWKBYsBmQWM -BeAF4wWOAFoFkAWRBZIH6wjVgQE0gQFFgQH6gDuBATCBATKBAd+BAftURWRpdNIADgBFAHoI2YBXqQcJ -BxwIMgbeBrUGpwYQBsMF2IEBooEBqIEB/YEBlIEBh4EBgoEBVYEBjIEBRNoADgV3BYYFqwWHBawFiAWJ -BYoFiwWMAFoFjgCOAFoAjgWQBZEFkgXggQE0gDsJgDsJgQEwgQEygQFF2gAOCFUFdwWGBYcFiAWJBYoF -iwGZBYwFygjvBY4AWgWQBZEFkgfrCPSBATSBAT6BAf+AO4EBMIEBMoEB34ECAFZXaW5kb3fSAA4ANgA3 -CPWABNIADgBFAHoI+oBXpQXCBy8F6gf6Bo6BAT2BAa6BAUqBAgOBAXraAA4FdwWGBasFhwWsBYgFiQWK -BYsFjABaBY4AjgBaAI4FkAWRBZIFyoEBNIA7CYA7CYEBMIEBMoEBPl5fTlNXaW5kb3dzTWVudVtfTlNN -YWluTWVuddIADgAyADMJDYAFgQIH0gA6ADsJDwHvogHvAD/SAA4ARQfaCRKBAgivEHgFcwOtB+sGAAgV -B94GAAOpAnMChQXKAoMGAAfoA40AHwBIAoIAfAJzBAECcwXgBXMDIgAfA40ApwMSBcoFygXgAKUGAAXg -A6sGAAONBeAAlQKEBDwDjQMfAxIAlQCVBeAGAAMSAJEDrACeAB8ApAfrA6kH6wgTBgADjQOuAnMAHwON -BXMAHwhLAyEFygKBBeAAlQMjBeAEPQKAAJUF4AMgA6kApgCVAnMAfAOpBeADqgJhAEkAHwYAAxIGAAON -BgAAqQOoBgAAlQZqBcoEAQMSAKgCYAAfAnMDjQOnAFcH6wB8AB8AlQCjAnMChgAfBXOBASuBAQmBAd+B -AU+BAfeBAd6BAU+A0oB8gJSBAT6Ai4EBT4EB64DGgAKACICHgBCAfIDWgHyBAUWBASuAr4ACgMaAOYCg -gQE+gQE+gQFFgCeBAU+BAUWBAQCBAU+AxoEBRYASgJCA4IDGgKKAoIASgBKBAUWBAU+AoIB2gQEFgBSA -AoA3gQHfgNKBAd+BAfmBAU+AxoEBEYB8gAKAxoEBK4ACgQH+gKuBAT6AgoEBRYASgLSBAUWA6IB+gBKB -AUWAp4DSgESAEoB8gBCA0oEBRYD7gJ6AwYACgQFPgKCBAU+AxoEBT4BpgM6BAU+AEoEBbYEBPoDWgKCA -YoB6gAKAfIDGgMmADYEB34AQgAKAEoAegHyAmYACgQEr0gAOAEUH2gmNgQIIrxB5BYIE6AfeBfgGagYA -BtEEAQKCAuoF6gLHB+gH6QOpB+sAVwK2AJEChgQ8AoEGpwWDA2AGIAOuAUwDIAaOB/oHHAD+B/0GtQTC -A60IAAbeAKkC2gOsBEQAqACeAyEDKAYQCAwAlQMjBNUAswBJA+0IEwFCCBUF4AbtA6oFBwKFBXMFgQOo -BVEFygNRBcICowXYAKMDdAbDBGcCjACnBwkDPAQOAKUCgwF5AmAD4wgyBK8DEgYfA40G+wMiCDkDqwZ7 -AjkDzAg+AKYGYgcvAB8EPQJzAoQASAMfAhADpwB8A7QISwJhBVAApADSAoADAAhSBYSBATWBAQuBAd6B -AU6BAW2BAU+BAZCA1oCHgJaBAUqAjYEB64EB7oDSgQHfgA2AiYB2gJmA4ICCgQGCgQE3gLGBAVqBARGA -YICngQF6gQIDgQGogEKBAfOBAYeBAQKBAQmBAfKBAZSAaYCSgQEFgOaAYoAUgKuApIEBVYEB5oASgLSB -AQeAH4DBgPGBAfmAOoEB94EBRYEBmYD7gQETgJSBASuBAS6AzoEBIIEBPoCtgQE9gIaBAUSAHoC2gQGM -gO2AgYA5gQGigKqA2IAngIuARoB6gPWBAf2A/YCggQFhgMaBAZ2Ar4EB6oEBAIEBdIBtgNCBAeeARIEB -bIEBroACgOiAfICQgAiAooBkgMmAEIDNgQH+gJ6BASeAN4AogH6Am4ECBoEBONIADgBFB9oKCYECCK8Q -eQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAhgChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYK -JwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4I7wpACkEKQgpDCkQK -RQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIK -YwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewVZCn0Kfgp/CoAK -gQqCgQIMgQINgQIOgQIPgQIQgQIRgQISgQITgQIUgQIVgQIWgQIXgQIYgQIZgQIagQH1gQIbgQIcgQId -gQIegQIfgQIggQIhgQIigQIjgQIkgQIlgQImgQIngQIogQIpgQIqgQIrgQIsgQItgQIugQIvgQIwgQIx -gQIygQIzgQI0gQI1gQI2gQI3gQI4gQI5gQI6gQI7gQI8gQI9gQI+gQI/gQH/gQJAgQJBgQJCgQJDgQJE -gQJFgQJGgQJHgQJIgQJJgQJKgQJLgQJMgQJNgQJOgQJPgQJQgQJRgQJSgQJTgQJUgQJVgQJWgQJXgQJY -gQJZgQJagQJbgQJcgQJdgQJegQJfgQJggQJhgQJigQJjgQJkgQJlgQJmgQJngQJogQJpgQJqgQJrgQJs -gQJtgQJugQJvgQJwgQJxgQJygQJzgQJ0gQJ1gQJ2gQJ3gQJ4gQJ5gQJ6gQJ7gQEjgQJ8gQJ9gQJ+gQJ/ -gQKAgQKBbxAcAE0AZQBuAHUAIABJAHQAZQBtACAAKABDAGgAYQBuAGcAZQAgAFAAYQBzAHMAdwBvAHIA -ZCAmAClfEBFCdXR0b24gQ2VsbCAoQWRkKV8QEE1lbnUgSXRlbSAoSGVscClfEB9NZW51IEl0ZW0gKEFi -b3V0IEtlcmJlcm9zQWdlbnQpW01lbnUgKEhlbHApXxAUTWVudSAoS2VyYmVyb3NBZ2VudClfEB5NZW51 -IEl0ZW0gKEhpZGUgS2VyYmVyb3NBZ2VudClfECVUYWJsZSBWaWV3IChJZGVudGl0eSwgVGltZSBSZW1h -aW5pbmcpXxAYUHVzaCBCdXR0b24gKENvbnRpbnVlKS0xXxBCVGV4dCBGaWVsZCBDZWxsIChNYWlsIHdh -bnRzIHRvIGNvbm5lY3QgdG8gdGhlIGFjY291bnQgbHhzQG1pdC5lZHUpXxAQTWVudSBJdGVtIChab29t -KV8QFUJ1dHRvbiBDZWxsIChHbyBCYWNrKV8QFE1lbnUgSXRlbSAoU2VydmljZXMpXxAPTWVudSAoU2Vy -dmljZXMpW1Njcm9sbCBWaWV3XkNvbnRlbnQgVmlldy0xXxAYQnV0dG9uIENlbGwgKENvbnRpbnVlKS0x -XxAfVGFiIFZpZXcgSXRlbSAoU2VsZWN0IElkZW50aXR5KV8QFVBvcHVwIEJ1dHRvbiAoR2VhciktMV8Q -F1RhYmxlIENvbHVtbiAoSWRlbnRpdHkpXxARU2VjdXJlIFRleHQgRmllbGRfEBFNZW51IEl0ZW0gKFBh -c3RlKVlTZXBhcmF0b3JfEF1UZXh0IEZpZWxkIENlbGwgKENvbmdyYXR1bGF0aW9ucyEgWW91IGhhdmUg -YWNxdWlyZWQgS2VyYmVyb3MgdGlja2V0cyBmb3IgbHhzQEFUSEVOQS5NSVQuRURVLilfEBVDcmVkZW50 -aWFsc0NvbnRyb2xsZXJfEBZTcXVhcmUgQnV0dG9uIChSZW1vdmUpXxAYVGV4dCBGaWVsZCBDZWxsIChS -ZWFsbTopXxAcSW1hZ2UgVmlldyAoS2VyYmVyb3NBZ2VudCktM18QHk1lbnUgSXRlbSAoQnJpbmcgQWxs -IHRvIEZyb250KVtTZXBhcmF0b3ItNl8QEE1lbnUgSXRlbSAoUmVkbylfEBdUZXh0IEZpZWxkIENlbGwg -KE5hbWU6KVtTZXBhcmF0b3ItMl8QEE1lbnUgSXRlbSAoQ29weSlfEBRCdXR0b24gQ2VsbCAoQ2FuY2Vs -KV8QE1NxdWFyZSBCdXR0b24gKEFkZClbU2VwYXJhdG9yLTNfEA9NZW51IEl0ZW0gKEN1dClfEBNQb3B1 -cCBCdXR0b24gKEdlYXIpXxA1VGV4dCBGaWVsZCBDZWxsIChQbGVhc2UgZW50ZXIgeW91ciBLZXJiZXJv -cyBwYXNzd29yZClfED9TdGF0aWMgVGV4dCAoTWFpbCByZXF1aXJlcyB0aGF0IHlvdSBjaG9vc2UgYSBL -ZXJiZXJvcyBJZGVudGl0eSlfEBtUZXh0IEZpZWxkIENlbGwgKFRleHQgQ2VsbClfEBZQdXNoIEJ1dHRv -biAoQ29udGludWUpXxAcSW1hZ2UgVmlldyAoS2VyYmVyb3NBZ2VudCktMV8QGFN0YXRpYyBUZXh0IChD -b25jbHVzaW9uKV8QEkJ1dHRvbiBDZWxsIChEb25lKV8QIU1lbnUgSXRlbSAoUGFzdGUgYW5kIE1hdGNo -IFN0eWxlKVtTZXBhcmF0b3ItNF8QF1B1c2ggQnV0dG9uIChHbyBCYWNrKS0xXxBDVGV4dCBGaWVsZCBD -ZWxsIChNYWlsIHJlcXVpcmVzIHRoYXQgeW91IGNob29zZSBhIEtlcmJlcm9zIElkZW50aXR5KV8QHElt -YWdlIENlbGwgKEtlcmJlcm9zQWdlbnQpLTFfEBFWZXJ0aWNhbCBTY3JvbGxlcl8QEE1lbnUgSXRlbSAo -RWRpdClfEA9UZXh0IEZpZWxkIENlbGxfEBlNZW51IEl0ZW0gKEtlcmJlcm9zQWdlbnQpW01lbnUgKEVk -aXQpXxAUTWVudSBJdGVtIChTaG93IEFsbClfEBRQdXNoIEJ1dHRvbiAoQ2hvb3NlKV8QFEJ1dHRvbiBD -ZWxsIChSZW1vdmUpXxA+U3RhdGljIFRleHQgKE1haWwgd2FudHMgdG8gY29ubmVjdCB0byB0aGUgYWNj -b3VudCBseHNAbWl0LmVkdSlYR2Vhck1lbnVvEBsATQBlAG4AdQAgAEkAdABlAG0AIAAoAFQAaQBjAGsA -ZQB0ACAATwBwAHQAaQBvAG4AcyAmAClfEDNTdGF0aWMgVGV4dCAoQ2hlY2tpbmcgbWFpbCBmb3IgYWNj -b3VudCBseHNAbWl0LmVkdSlfEBlDYWNoZUNvbGxlY3Rpb25Db250cm9sbGVyXU1lbnUgKFdpbmRvdylf -EBxUZXh0IEZpZWxkIENlbGwgKENvbmNsdXNpb24pXxARTWVudSBJdGVtIChDbG9zZSlfEBFUZXh0IEZp -ZWxkIENlbGwtMV8QFk1lbnUgSXRlbSAoU2VsZWN0IEFsbClfEDFTdGF0aWMgVGV4dCAoUGxlYXNlIGVu -dGVyIHlvdXIgS2VyYmVyb3MgaWRlbnRpdHkpXxAXQnV0dG9uIENlbGwgKEdvIEJhY2spLTFfEBJNZW51 -IEl0ZW0gKERlbGV0ZSlfEB1UZXh0IEZpZWxkIENlbGwgKFRleHQgQ2VsbCktMV8QHEltYWdlIENlbGwg -KEtlcmJlcm9zQWdlbnQpLTJfEBRTdGF0aWMgVGV4dCAoUmVhbG06KV8QEE1lbnUgSXRlbSAoVW5kbylf -EBxJbWFnZSBDZWxsIChLZXJiZXJvc0FnZW50KS0zXxARVGFibGUgSGVhZGVyIFZpZXdfEBNTdGF0aWMg -VGV4dCAoTmFtZTopXxAVUHVzaCBCdXR0b24gKEdvIEJhY2spXkNvbWJvIEJveCBDZWxsXxAqVGFiIFZp -ZXcgSXRlbSAoQXV0aGVudGljYXRpb24gSW5mb3JtYXRpb24pXxATSG9yaXpvbnRhbCBTY3JvbGxlcltT -ZXBhcmF0b3ItMV8QFEJ1dHRvbiBDZWxsIChDaG9vc2UpVlZpZXctMl8QEENhY2hlc0NvbnRyb2xsZXJc -Q29udGVudCBWaWV3XxAeTWVudSBJdGVtIChRdWl0IEtlcmJlcm9zQWdlbnQpXxBZU3RhdGljIFRleHQg -KENvbmdyYXR1bGF0aW9ucyEgWW91IGhhdmUgYWNxdWlyZWQgS2VyYmVyb3MgdGlja2V0cyBmb3IgbHhz -QEFUSEVOQS5NSVQuRURVLilbU2VwYXJhdG9yLTVfEBRQdXNoIEJ1dHRvbiAoQ2FuY2VsKV8QF01lbnUg -SXRlbSAoSGlkZSBPdGhlcnMpXxASQnV0dG9uIENlbGwgKEdlYXIpXxA3VGV4dCBGaWVsZCBDZWxsIChD -aGVja2luZyBtYWlsIGZvciBhY2NvdW50IGx4c0BtaXQuZWR1KW8QGABNAGUAbgB1ACAASQB0AGUAbQAg -ACgAUAByAGUAZgBlAHIAZQBuAGMAZQBzICYAKVlDb21ibyBCb3hfEB5NZW51IEl0ZW0gKEtlcmJlcm9z -QWdlbnQgSGVscClfEBRNZW51IEl0ZW0gKE1pbmltaXplKVxGaWxlJ3MgT3duZXJfEB1UYWJsZSBDb2x1 -bW4gKFRpbWUgUmVtYWluaW5nKVZWaWV3LTFfEDFTdGF0aWMgVGV4dCAoUGxlYXNlIGVudGVyIHlvdXIg -S2VyYmVyb3MgcGFzc3dvcmQpV1dpbmRvdzFfEBJQdXNoIEJ1dHRvbiAoRG9uZSlfEBZCdXR0b24gQ2Vs -bCAoQ29udGludWUpXxAaSW1hZ2UgVmlldyAoS2VyYmVyb3NBZ2VudClfEEhObyBTaGFkb3cgVGFiIFZp -ZXcgKFNlbGVjdCBJZGVudGl0eSwgQXV0aGVudGljYXRpb24gSW5mb3JtYXRpb24sIFJlc3VsdClfEBpJ -bWFnZSBDZWxsIChLZXJiZXJvc0FnZW50KV8QEk1lbnUgSXRlbSAoV2luZG93KV8QFlRhYiBWaWV3IEl0 -ZW0gKFJlc3VsdClaVGV4dCBGaWVsZF8QNVRleHQgRmllbGQgQ2VsbCAoUGxlYXNlIGVudGVyIHlvdXIg -S2VyYmVyb3MgaWRlbnRpdHkpXxAcSW1hZ2UgVmlldyAoS2VyYmVyb3NBZ2VudCktMl8QFEJ1dHRvbiBD -ZWxsIChHZWFyKS0xW0FwcGxpY2F0aW9uXxAdTWVudSBJdGVtIChBYm91dCBLZXJiZXJvcy4uLinSAA4A -RQfaCvqBAgijAoYCgQCpgJmAgoBp0gAOAEUH2gsAgQIIowI9AqYCPYBqgIOAatIADgBFB9oLBoECCK8Q -ngWCBOgFPQfeBUUF+AYABmoG0QQBAoIC6gXqAscH6AVGB+kFLQVLBT8DqQfrBUoAVwK2BUAAkQKGBDwC -gQUyBqcFgwNgBiADrgFMAyAFNwUuBTkGjgVDB/oHHAD+BTYH/Qa1BMIIAAOtBt4AqQLaBTEERAOsAygD -IQCoAJ4FMAU8BUkFOwYQCAwDIwCVBNUFJwCzBTgASQFCCBMD7QgVBeAG7QOqBQcChQVzA6gFgQVRBcoD -UQVEBcICowXYAKMDdAUrBsMFKQRnAowFMwU+AKcHCQM8BA4BeQClAoMCYAPjBSwIMgSvBS8DEgU0A40G -Hwb7AyIIOQUqBUgDqwZ7AjkDzAg+AKYFQgVHBTUGYgcvAB8EPQMfAhAASAJzAoQFQQOnA7QAfAU6CEsC -YQVQAKQA0gKAAwAIUgUoBYSBATWBAQuBAZOBAd6BAbKBAU6BAU+BAW2BAZCA1oCHgJaBAUqAjYEB64EB -s4EB7oEBUoEB24EBnIDSgQHfgQHXgA2AiYEBoYB2gJmA4ICCgQFrgQGCgQE3gLGBAVqBARGAYICngQF9 -gQFUgQGBgQF6gQGsgQIDgQGogEKBAXmBAfOBAYeBAQKBAfKBAQmBAZSAaYCSgQFqgOaBAQWApICrgGKA -FIEBaIEBj4EB04EBi4EBVYEB5oC0gBKBAQeBAR+AH4EBf4DBgDqBAfmA8YEB94EBRYEBmYD7gQETgJSB -ASuAzoEBLoEBIIEBPoCtgQGtgQE9gIaBAUSAHoC2gQFJgQGMgQE8gO2AgYEBcYEBmIA5gQGigKqA2IBG -gCeAi4B6gPWBAU2BAf2A/YEBWYCggQFzgMaBAWGBAZ2Ar4EB6oEBQ4EBz4EBAIEBdIBtgNCBAeeARIEB -p4EBvIEBeIEBbIEBroACgOiAooBkgAiAfICQgQGmgMmAzYAQgQGGgQH+gJ6BASeAN4AogH6Am4ECBoEB -KoEBONIADgBFB9oLp4ECCK8QnguoC6kLqgurC6wLrQuuC68LsAuxC7ILswu0C7ULtgu3C7gLuQu6C7sL -vAu9C74LvwvAC8ELwgvDC8QLxQvGC8cLyAvJC8oLywvMC80LzgvPC9AL0QvSC9ML1AvVC9YL1wvYC9kL -2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvwC/EL8gvzC/QL9Qv2C/cL -+Av5C/oL+wv8C/0L/gv/DAAMAQwCDAMMBAwFDAYMBwwIDAkMCgwLDAwMDQwODA8MEAwRDBIMEwwUDBUM -FgwXDBgMGQwaDBsMHAwdDB4MHwwgDCEMIgwjDCQMJQwmDCcMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMM -NAw1DDYMNww4DDkMOgw7DDwMPQw+DD8MQAxBDEIMQwxEDEWBAoaBAoeBAoiBAomBAoqBAouBAoyBAo2B -Ao6BAo+BApCBApGBApKBApOBApSBApWBApaBApeBApiBApmBApqBApuBApyBAp2BAp6BAp+BAqCBAqGB -AqKBAqOBAqSBAqWBAqaBAqeBAqiBAqmBAqqBAquBAqyBAq2BAq6BAq+BArCBArGBArKBArOBArSBArWB -AraBAreBAriBArmBArqBAruBAryBAr2BAr6BAr+BAsCBAsGBAsKBAsOBAsSBAsWBAsaBAseBAsiBAsmB -AsqBAsuBAsyBAs2BAs6BAs+BAtCBAtGBAtKBAtOBAtSBAtWBAtaBAteBAtiBAtmBAtqBAtuBAtyBAt2B -At6BAt+BAuCBAuGBAuKBAuOBAuSBAuWBAuaBAueBAuiBAumBAuqBAuuBAuyBAu2BAu6BAu+BAvCBAvGB -AvKBAvOBAvSBAvWBAvaBAveBAviBAvmBAvqBAvuBAvyBAv2BAv6BAv+BAwCBAwGBAwKBAwOBAwSBAwWB -AwaBAweBAwiBAwmBAwqBAwuBAwyBAw2BAw6BAw+BAxCBAxGBAxKBAxOBAxSBAxWBAxaBAxeBAxiBAxmB -AxqBAxuBAxyBAx2BAx6BAx+BAyCBAyGBAyKBAyMSAASVgxIABJWcEK8QZxIABJV7EDoQORBqEIYSAASV -PBIABJVQEgAElVgQyxIABJVWEIMRAUEQghIABJWGEgAElaAQixIABJU0EB0SAASVnxIABJVGEgAElVUQ -tBIABJVJEgAElUwSAASVPhIABJVREHoQqxIABJWEEgAElXQRAUISAASVnRIABJVoEgAElW8SAASVdxDT -ELASAASVehDpEK0SAASVZhAnEJUQnRIABJVCEJASAASVmxCgEgAElVsSAASVVxIABJWJEgAElT8SAASV -lRIABJVxEgAElW4SAASVXBIABJViEgAElUQQmBIABJV9EMkQ0hDKEgAElWwSAASVWhIABJWWEQEYEgAE -lWMSAASVeRIABJUvEgAElWUQoxIABJU7EDgQqRCWEgAElTMSAASVnhIABJVNEgAElYESAASVNRIABJWC -EQEGEBgSAASVcxDrEBcSAASVVBCsEgAElWESAASVdRDMEKQQ9hIABJVAEgAElVMSAASVdhCZEgAElV0Q -nhIABJVyEgAElTkSAASVZxIABJVfEgAElU8SAASVShIABJU6EI4QnBIABJVBEQFDEgAElWsQkhIABJUw -EQE2EIgSAASVbRCPELMRAUYSAASVMhCREgAElWoSAASVOBCBEgAElV4QshIABJV/EgAElXgQbxDqEgAE -lT0SAASVcBIABJVpEgAElUUSAASVSxIABJVOEgAElYcSAASVNhIABJU3EgAElUcQtRATEgAElUgRARcS -AASVYBIABJVkEgAElVISAASVWRP//////////RIABJWIEgAElYXSAA4ARQB6DOSAV6DSAA4ARQfaDOeB -Agig0gAOAEUH2gzqgQIIoNIAOgA7DOwM7aIM7QA/Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8A -RABSAFQAZga6BsAHCwcSBxkHJwc5B1UHYwdvB3sHiQeUB6IHvgfMB98H8QgLCBUIIggkCCcIKggtCDAI -Mwg2CDgIOwg+CEEIRAhGCEgISwhOCFMIVghfCGsIbQhvCHgIggiECJIImwikCK8ItgjICNEI2gjjCOgI -9wkKCRMJHgkgCSUJJwkpCV4Jawl4CY4JnAmmCbQJwQnLCd0J8Qn7CgcKCQoLCg0KDwoRChYKGAoaChwK -HgogCiIKJAo/CloKYwplCm4Kdwp5Cn4KmwqtCrgKwQrNCtkK2wrdCt8K4grkCuYK6ArxCvMK9gr4Cy0L -PAtGC04LVQtpC4ILmgucC54LoAuiC6QLpguoC6sLrQuuC7ALsQuzC7wLvgvBC8ML5AvyC/QL9gv4C/oL -/Av+DAAMCQwLDBwMHgwgDCIMJAwmDCgMKgwsDFkMZAxrDHcMgQyDDIUMhwyIDIoMjAyPDJAMkgyUDJYM -nwyhDK4MsAyyDLQMtgy4DLoM1gzyDSYNPg1fDXwNhQ2MDZkNnw23DdwN3g3gDeIN5A3nDegN6g3sDe4O -Dw4bDiMOLg42Dj4OSw5WDlsOXQ5fDmEOZg5nDnQOgw6FDocOiQ6RDp8OqA6tDsAOyQ7QDtwO5Q7wDvwP -Bg8NDxkPMg9XD1kPWw9dD18PYA9iD2QPZg+HD5sPpQ+zD78PxA/GD8gPyg/MD84P0w/VD/sQDBATEBoQ -IxAlEC4QMBAzEEAQSRBOEGMQaxB4EIQQkhCUEJYQmBCaEKEQrhC7EMMQxRDHENMQ3BDhEPYQ+BD6EPwQ -/hERER4RIBEjESwRNRFHEVQRXRFoEXQRmRGbEZ0RnxGhEaIRpBGmEagRwBHlEecR6RHrEe0R7hHwEfIR -9BIZEiISJBImEigSKhIsEjESMhI0EjUSShJMEk4SUBJSEmgSdRJ3EnoSjxKREpMSlRKXEqESuBLZEtsS -3RLfEuES4xLoEuoS8BMRExMTFRMXExkTGhMcEx4TNhNrE3YTixOXE68TsRO2E7gTuhO8E74TwBPBE8MT -xRPGE8gT0RPTFC4UNxRZFG4UiBSkFL8UzBTVFOEVABUPFRsVHRUfFSEVKhUsFS4VLxU4FToVQxVFFUcV -SBVKFUwVThVQFVIVVBVdFWUVbhVwFXMVdRWeFa0VuhXHFc8V2hXpFfQV/xYAFgIWBBYGFg8WERYaFiMW -JRZCFkcWSRZLFk0WTxZRFmIWZBZmFmgWdRZ3FoMWjBaXFqsWzBbRFtMW1RbXFtkW3BbdFt8W9Bb2FvgW -+hb8FxUXHhcjFzEXOhdBF1AXWBdtF28XcRdzF3UXfxeMF44XkxemF68XvBfPF9gX4xfyF/sYCBgTGCoY -SxhNGE8YURhTGFUYVxheGIMYhRiHGIkYixiOGI8YkRiTGJUYrRjiGPgZDRkcGS8ZQRlTGWEZYxllGWcZ -aRlrGW0ZbxlxGXMZeBmBGYoZkxmVGZ4Zpxm0Gb0ZyBnRGfoaEBoSGhQaFhoYGhoaHRoeGiAaIhokGjAa -Rxp8GooajBqOGpAakhqUGpYamBqaGp0aphq3GrkauxrIGsoazBrOGtMa3BrhGvAa+xsEGwsbIxssGy4b -NRs3GzkbOxtUG14bZhtoG2obbBtuG3Abcht0G4YbjxuUG6Ibuxu9G78bwRvDG8UbxxvJG94b4BviG+Qb -5hvvG/EcABwCHAQcBhwIHAocDBwOHDMcNRw3HDkcOhw8HD4cPxxBHEocTBxZHFscXRxfHGEcYxxlHH0c -nhygHKIcoxzIHMoczBzOHNAc0hzVHNYc2BzaHO4dBh0rHS0dLx0xHTMdNR02HTgdVR1XHVkdWx1dHV4d -YB2VHZcdmR2bHZ0dnx2hHaMdrB2uHcsdzR3PHdEd0x3UHdYd7h4jHiUeJx4pHiseLR4vHjEeOR5CHkQe -YR5jHmUeZx5pHmoebB6FHqYeqB6qHqwerh6wHrIe2B71Hvce+R77Hv0e/h8AHxgfOR87Hz0fPx9BH0Mf -RR94H4kfix+UH5YfmR++H8Afwh/EH8YfyB/JH8sfzR/kIBkgGyAdIB8gISAjICUgJyAwIE0gZiBoIGog -bCBuIHAgciB0IIkgiyCNII8gkSCaIJwgpyCpIKsgrSCvILEgziDQINIg1CDWINcg2SDxISYhKCEqISwh -LiEwITIhNCE5IUIhRCFpIWshbSFvIXAhciF0IXUhdyGAIYIhjyGRIZMhlSGXIZkhmyG8Ib4hwCHBId4h -4CHiIeQh5iHnIekiCiIMIg4iECISIhQiFiIhIj4iQCJCIkQiRiJHIkkiYSKCIoQihiKIIooijCKRIpMi -4SLuIvAi/iMbIx0jHyMhIyMjJCMmIz4jcyN1I3cjeSN7I30jfyOBI4ojjCOTI5wjpSOwI8kj1yPsI/Uj -+iQNJEIkRCRGJEkkSyRNJE8kUSRUJFckWSR0JJEkmiScJKUkpyTEJMYkyCTKJM0kzyTSJNsk3STuJPAk -8iT0JPYk+ST8JP8lAiUrJS0lLyUxJTIlNCU2JTclOSU7JUQlRiVTJVUlVyVZJVslXSVfJXclmCWdJZ8l -oSWiJcMlxSXHJcklyyXMJc4l0CXpJgomDCYOJhAmEiYUJhkmGyZDJnwmiCaRJp4msSa+Jsom2CbaJtwm -3ibgJuMm5SbnJukm/Cb+JwAnAicEJw0nDycaJxwnHicgJyInJCdNJ1cnYSdrJ20nbydxJ3MndSd4J3on -fCd+J4AniSeLJ44nkCfjJ/An8if0J/kn+yf9J/4oACgCKAMoBSgHKAkoCygUKB8oPCg+KEAoQihEKEYo -SChxKHModSh3KHkoeyh9KH8ogSiLKJQonSixKMoozCjOKNAo2SjbKN0o9Cj9KQYpFCkdKR8pJCkmKSgp -USleKV8pYSljKWwpbil3KXgpeimXKZkpmymdKZ8poSmqKbcpuSnOKdAp0inUKdYp6CoNKhIqFCoWKhgq -GiocKiEqIiokKi4qVypYKloqXCplKmcqcCp5KnoqfCqZKpsqnSqfKqEqpiqoKrcqzCrOKtAq0irUKuAr -ASsGKwgrCisMKw4rECsVKxcrICsrK0MrTCtVK2ArhSuPK5ErkyuVK5crmSubK50rpiu/K8wr1SvgK+ss -FCwWLBgsGiwcLB4sICwiLCssQyxMLE4sUSxTLGksgiyLLJQsoSzCLMQsxizILMosyyzNLM8s5y0cLR4t -IC0iLSQtJi0oLSotMS0zLVQtVi1YLVstXi1fLWEtYy17LbAtsi20LbYtuS28Lb4twS3ILcot6y3tLe8t -8i31Lfgt+S37Lf0uFi43LjkuOy4+LkAuQy5ILkoufi6fLqEuoy6mLqkuqi6sLq4uxS7+LwAvAi8FLwgv -Cy8NLw8vEi8XLyQvJi8oLysvLy88Lz4vQC9DL08vWC9aL3svfS9/L4IvhS+GL4gvii+hL9ov3C/eL+Ev -5C/nL+kv6y/uL/sv/S//MAIwCTAWMBgwGjAdMCwwNTA3MEIwTTBqMHMwdTDCMMUwyDDLMM4w0TDUMNcw -2jDdMOAw4zDmMOkw7DDvMPIw9TD4MPsw/jEBMQQxBzEKMQ0xEDETMRYxGTEcMR8xIjElMSgxKzEuMTEx -QjFQMVkxXDFfMWIxZTF2MYgxnDGrMa4xsTG0MbcxwDHCMcUxyDHUMe4x8zH2Mf8yBDINMhQyKTI2Mj8y -QTJEMkwyVTJcMnMygjKTMpYymTKbMp4yrzK3MsMyxjLJMssyzjLTMtwy3jLnMuoy7TLwMvMzFDMoMzMz -QTNLM1gzXzNiM2UzajNsM3EzdDN3M3ozmzOoM6ozrDOvM8EzzjPQM9Iz1TPoM/Ez9jQBNCI0JTQoNCo0 -LTQwNDM0VjR/NI00mjSdNJ80oDSiNKM0pjSpNKw0zTTQNNM01TTYNNs03jTyNPs1ADUFNRI1FTUYNRs1 -PDU/NUI1RTVINUs1TjVfNWI1ZTVoNWs1cTVzNYE1ijWRNak1tjW5Nbw1vzXgNeM15jXpNew17zXyNf82 -AjYFNgg2EzYVNiA2LTYwNjM2NjZXNlo2XTZfNmI2ZTZoNm02ejaLNo42kDaTNpY2sza2Nrk2uza+NsE2 -xDbVNtg22zbeNuE29zcXNyg3KzcuNzA3Mzc9N0o3TTdQN1M3dDd3N3o3fzeCN4U3iDeLN6M3pTe5N8o3 -zTfQN9M31jf/OBw4MzhYOHM4jDiNOJA4kTiUOJU4mDibOJw4nTieOKc4qTiuOLE4tDjNOOg4/TkCOQU5 -DjkXOSs5UDlROVQ5VTlYOVs5XjlfOWA5YTlqOWw5dTl4OXs5fjmBOZQ5pjm8Oco5zznSOeM55jnoOes5 -7jn/OgI6BToHOgo6FzoaOh06IDpBOkQ6RzpKOk06UDpTOmA6YzpmOmk6fjqAOoo6mzqeOqA6ojqlOrE6 -wjrFOsc6yjrNOu468Tr0Ovc6+jr9OwA7DDsOOyc7ODs7Oz07PztCO087UjtVO1g7eTt8O387gTuEO4c7 -ijufO7E7wjvFO8c7yTvMO+k7+jv9O/88ATwEPB08KjwtPDA8MzxUPFc8WjxdPGA8YzxmPGw8bjx1PII8 -hTyIPIs8rDyvPLI8tTy4PLs8vjzDPMU8yzzYPNs83jzhPQI9BT0IPQo9DT0QPRM9Gj0iPTM9Nj04PTs9 -Pj1fPWI9ZT1oPWs9bj1xPYY9jD2ZPZw9nz2iPcM9xj3JPcw9zz3SPdU92T3bPeA98T30PfY9+T38Ph0+ -ID4jPiU+KD4rPi4+Nz5QPmE+ZD5mPmk+bD6NPpA+kz6WPpk+nD6fPrQ+tj7BPs4+0T7UPtc++D77Pv4/ -AT8EPwc/Cj8PPxE/Fz8oPys/Lj8wPzM/QD9DP0Y/ST9qP20/cD9zP3Y/eT98P4E/gz+JP5o/nT+fP6E/ -pD+xP7Q/tz+6P9s/3j/hP+Q/5z/qP+0/9j/4QA5AH0AiQCRAJkApQEpAVEBeQGhAh0CKQI1AkECTQJZA -mUCcQMJAz0DnQPRA/ED/QQJBBUEIQQtBKUEqQTNBOEFFQU5BVUFtQY5BkUGUQZdBmkGcQZ9BokHUQdpC -BUISQhVCLkIxQjRCN0I6Qj1CQEJDQkZCSUJMQk9CUkJrQm5CcUJ0QndCekJ9QoBCg0KGQolCjEKPQqxC -y0LkQw1DK0M/Q1xDdkOTQ65D10PYQ/lD/EP/RAJEBUQIRAtEDkQ5RFZEY0RmRGlEbERvRHJEk0SWRJlE -nESfRKFEpESnRNBE8kT/RQJFG0UeRSFFJEUnRSpFLUUwRTNFNkU5RTxFP0VYRVtFXkVhRWRFZ0VqRW1F -cEVzRXZFeUV8RY1FlkWdRaBFo0WmRalFvEXQRdlF3kXyRgNGBkYJRgxGD0YjRixGL0ciRyVHKEcrRy5H -MUc0RzdHOUc7Rz1HQEdCR0VHSEdKR01HT0dRR1NHVUdXR1lHXEdfR2FHZEdnR2lHa0duR3FHdEd2R3lH -fEd/R4JHhUeIR4pHjEeOR5FHk0eVR5dHmUecR59HoUejR6ZHqEeqR6xHr0exR7RHt0e6R7xHv0fBR8RH -xkfJR8xHz0fRR9RH1kfZR9tH3UfgR+JH5EfmR+lH60ftR+9H8UfzR/VH90f6R/xH/kgASANIBkgISAtI -DkgRSBNIFUgYSBpIHUggSCJIJEgmSChIKkgsSC5IMEgySDVIN0g6SDxIPkhASEJIRUhISHFIe0h+SIFI -hEiGSIlIjEiPSJJIo0imSKlIrEivSLRIw0jMSM5I10jZSNxI30joSOpJAUkESQdJCkkNSRBJE0kWSRlJ -HEkfSSJJS0lOSVBJUUlTSVRJV0laSV1JfkmBSYRJh0mKSY1JkEmpSatJ1EnXSdlJ2kncSd1J4EnjSeZK -D0oSShVKGEoaSh1KIEojSiZKL0pASkNKRkpJSkxKVUpXSmBKYkpjSnVKnkqhSqNKpEqmSqdKqkqtSrBK -2UrcSt5K30rhSuJK5UroSutK+EsBSwpLDEsVSxhLG0seSyFLSktNS1BLU0tVS1hLW0teS2FLikuNS5BL -k0uVS5hLm0ueS6FLpkuvS7FLxEvHS8pLzUvQS9NL1kvZS9xL30wITAtMDUwOTBBMEUwUTBdMGkxDTEZM -SUxMTE5MUUxUTFdMWkxhTGpMbEx1THdMgkyFTIhMi0yOTJFMuky9TL9MwEzCTMNMxkzJTMxM20znTPBM -8kz1TP5NA00MTQ9OAk4FTghOC04OThFOFE4XThlOG04dTiBOIk4lTihOKk4sTi5OME4yTjRONk44TjtO -Pk5ATkJORE5GTkhOS05OTlFOU05WTllOXE5fTmFOZE5mTmhOak5sTm5OcE5yTnROd056TnxOfk6BToNO -hU6HTopOjE6PTpJOlU6XTppOnE6eTqBOo06lTqhOqk6tTq9Osk60TrZOuU67Tr1Ov07CTsROxk7ITspO -zE7OTtBO007VTtdO2U7bTt5O4E7jTuVO6E7qTuxO707xTvRO9075TvtO/U7/TwFPA08FTwdPCU8MTw5P -EE8STxRPFk8YTxpPHU8mTylQHlAhUCRQJ1AqUC1QMFAzUDVQN1A5UDxQPlBBUERQRlBJUEtQTVBPUFFQ -U1BVUFhQW1BdUGBQY1BlUGdQalBtUHBQclB1UHhQe1B+UIFQhFCGUIhQi1CNUI9QkVCTUJVQmFCbUJ1Q -n1CiUKRQplCoUKtQrVCwULNQtlC4ULtQvVDAUMNQxVDIUMtQzVDQUNJQ1VDXUNlQ3FDeUOBQ4lDlUOdQ -6VDrUO1Q71DxUPNQ9lD4UPpQ/VD/UQJRBFEHUQpRDVEPURFRFFEWURlRHFEeUSBRIlEkUSZRKFEqUSxR -LlEwUTNRNVE4UTpRPFE+UUBRQ1FGUU9RUlJHUkpSTVJQUlNSVlJZUlxSX1JiUmVSaFJrUm5ScVJ0UndS -elJ9UoBSg1KGUolSjFKPUpJSlVKYUptSnlKhUqRSp1KqUq1SsFKzUrZSuVK8Ur9SwlLFUshSy1LOUtFS -1FLXUtpS3VLgUuNS5lLpUuxS71LyUvVS+FL7Uv5TAVMEUwdTClMNUxBTE1MWUxlTHFMfUyJTJVMoUytT -LlMxUzRTN1M6Uz1TQFNDU0ZTSVNMU09TUlNVU1hTW1NeU2FTZFNnU2pTbVNwU3NTdlN5U3xTf1OCU4VT -iFOLU45TkVOUU5dTmlOdU6BTo1OmU6lTrFOvU7JT7VQBVBRUNlRCVFlUelSiVL1VAlUVVS1VRFVWVWJV -cVWMVa5VxlXgVfRWCFYSVnJWilajVr5W3Vb+VwpXHVc3V0NXVldtV4NXj1ehV7dX71gxWE9YaFiHWKJY -t1jbWOdZAVlHWWZZelmNWZ9Zu1nHWd5Z9VoMWk1aVlqPWsVa4VrvWw5bIls2W09bg1udW7Jb0lvxXAhc -G1w6XE5cZFx8XItcuFzOXNpc8Vz4XQtdGF05XZVdoV24XdJd514hXlReXl5/XpZeo17DXspe/l8GXxtf -NF9RX5xfuV/OX+df8mAqYElgYGBsYIxglWCYYJ9goWCjYKVgrmCxYLhgumC8YL5gx2DKYgliDGIPYhJi -FWIYYhtiHmIhYiRiJmIoYipiLWIvYjJiNWI4YjtiPmJBYkNiRmJJYktiTWJQYlJiVGJWYlhiW2JeYmFi -Y2JmYmlia2JtYnBic2J2YnlifGJ/YoJihGKHYopijWKQYpNilmKZYptinWKgYqJipWKnYqliq2KtYrBi -s2K2YrlivGK/YsFiw2LGYsliy2LOYtBi0mLVYtdi2mLdYuBi4mLlYudi6mLsYu9i8mL1Yvdi+mL9Yv9j -AmMEYwZjCWMMYw9jEWMTYxZjGWMbYx5jIGMiYyRjJmMoYypjLGMvYzJjNGM3YzljPGM+Y0FjRGNGY0lj -TGNPY1JjVWNXY1ljXGNeY2FjZGNnY2pjbWNvY3Fjc2N1Y3djeWN7Y35jgGOCY4Rjh2OKY4xjj2ORY5Nj -lWOXY5pjnWOgY6ljrGTrZO5k8WT0ZPdk+mT9ZQBlA2UGZQllDGUPZRJlFWUYZRtlHmUhZSRlJ2UqZS1l -MGUzZTZlOWU8ZT9lQmVFZUhlS2VOZVFlVGVXZVplXWVgZWNlZmVpZWxlb2VyZXVleGV7ZX5lgWWEZYdl -imWNZZBlk2WWZZllnGWfZaJlpWWoZatlrmWxZbRlt2W6Zb1lwGXDZcZlyWXMZc9l0mXVZdhl22XeZeFl -5GXnZepl7WXwZfNl9mX5Zfxl/2YCZgVmCGYLZg5mEWYUZhdmGmYdZiBmI2YmZilmLGYvZjJmNWY4Zjtm -PmZBZkRmR2ZKZk1mUGZTZlZmWWZcZl9mYmZlZmhma2ZuZnFmdGZ3ZnpmfWaAZoNmhmaJZoxmj2aSZpVm -mGabZp5moWakZqdmqmatZrBms2a2ZrlmvGa/ZsJmxWbKZs9m0WbTZthm2mbcZt5m4GblZupm72bxZvZm -+Gb7Zv1nAmcHZwlnDmcQZxVnGmcfZyFnJmcrZzBnNWc3ZzlnPmdDZ0ZnS2dQZ1VnWmdcZ15nY2dlZ2dn -bGduZ3Bncmd3Z3lnfmeAZ4VnimePZ5RnmWeeZ6NnqGetZ7JntGe5Z7tnvWe/Z8RnyWfOZ9Fn1mfbZ+Bn -5WfnZ+xn7mfwZ/Jn92f8aAFoBmgLaBBoE2gVaBpoHGgeaCNoJWgqaC9oMWgzaDVoOmg/aERoRmhLaE1o -UmhXaFxoYWhmaGtocGhyaHRoeWh8aIFog2iIaItojWiSaJRolmiZaJ5ooGilaKporGixaLNouGi9aL9o -wWjGaMto0GjVaNpo32jkaOlo7mjzaPVo92j8aP9pBGkJaQ5pE2kcaSFpJmkvaTFpMmk7aT5pP2lIaUtp -TGlVaVoAAAAAAAACAgAAAAAAAAzuAAAAAAAAAAAAAAAAAABpaQ - diff --git a/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib new file mode 100644 index 000000000..b6c1751f5 --- /dev/null +++ b/src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib @@ -0,0 +1,1042 @@ + + + + 1050 + 9E17 + 670 + 949.33 + 352.00 + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + SelectIdentityController + + + FirstResponder + + + NSApplication + + + 13 + 2 + {{279, 513}, {491, 315}} + 1886913536 + Select a Kerberos Identity + + NSWindow + + + View + + {600, 600} + {419, 298} + + + 256 + + YES + + + 266 + {{101, 264}, {373, 17}} + + YES + + 67239424 + 272629760 + %@ requires you select a Kerberos identity + + LucidaGrande + 1.300000e+01 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 266 + {{101, 219}, {373, 37}} + + YES + + 67239424 + 272629760 + %@ + + LucidaGrande + 1.100000e+01 + 3100 + + + + + + + + + 274 + + YES + + + 2304 + + YES + + + 256 + {449, 133} + + YES + + + 256 + {449, 17} + + + + + + -2147483392 + {{-26, 0}, {16, 17}} + + + + YES + + 3.429741e+02 + 1.499741e+02 + 1.000000e+03 + + 75628032 + 0 + Identity + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 1411513920 + 272761856 + Text Cell + + + + + + 3 + YES + YES + + + + 1.003135e+02 + 1.000000e+02 + 1.500000e+02 + + 67239424 + 67108864 + Time Remaining + + + 6 + System + headerColor + + 3 + MQA + + + + + + 1140981312 + 71435264 + Text Cell + + + + + + 3 + YES + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 6 + System + gridColor + + 3 + MC41AA + + + 1.700000e+01 + 1119879168 + 5 + 15 + 0 + YES + + + {{1, 17}, {449, 133}} + + + + + 6 + System + controlBackgroundColor + + + 4 + + + + -2147483392 + {{-30, 17}, {15, 285}} + + + _doScroller: + 9.684210e-01 + + + + -2147483392 + {{-100, -100}, {362, 15}} + + 1 + + _doScroller: + 9.040768e-01 + + + + 2304 + + YES + + + {{1, 0}, {449, 17}} + + + + + 4 + + + + {{20, 60}, {451, 151}} + + + 530 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 289 + {{390, 12}, {87, 32}} + + YES + + 67239424 + 134217728 + Select + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 289 + {{308, 12}, {82, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 292 + {{42, 30}, {22, 22}} + + YES + + 67239424 + 134217728 + + + + -2042347265 + 134 + + NSImage + Remove + + + NSImage + Remove_Pressed + + + + 400 + 75 + + + + + 292 + {{20, 30}, {23, 22}} + + YES + + 67239424 + 134217728 + + + + -2042347265 + 134 + + NSImage + Add + + + NSImage + Add_Pressed + + + + 400 + 75 + + + + + 268 + {{20, 231}, {64, 64}} + + BadgedImageView + + + {491, 315} + + {{0, 0}, {1920, 1178}} + {419, 320} + {600, 622} + + + + YES + servicePrincipalString + shortTimeRemainingString + + KerberosCredential + YES + + YES + YES + YES + YES + YES + + + + YES + credentialsArray + principalString + shortTimeRemainingString + + KerberosCache + + YES + YES + YES + YES + YES + + + KerberosCacheCollection + + + + YES + cachesArray + + KerberosCacheCollection + + + + + + YES + + + content + + + + 300042 + + + + content + + + + 300043 + + + + content + + + + 300044 + + + + identityTableColumn + + + + 300157 + + + + kerberosIconImageView + + + + 300158 + + + + timeRemainingTableColumn + + + + 300159 + + + + removeIdentityButton + + + + 300161 + + + + headerTextField + + + + 300163 + + + + explanationTextField + + + + 300164 + + + + cancelButton + + + + 300165 + + + + addIdentityButton + + + + 300166 + + + + selectIdentityButton + + + + 300167 + + + + select: + + + + 300168 + + + + cancel: + + + + 300169 + + + + remove: + + + + 300170 + + + + add: + + + + 300171 + + + + identityTableView + + + + 300172 + + + + delegate + + + + 300174 + + + + window + + + + 300181 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + 5 + + + YES + + + + Select a Kerberos Identity + + + 6 + + + YES + + + + + + + + + + + + + 8 + + + YES + + + + + + 9 + + + YES + + + + + + + + + 10 + + + YES + + + + + + + 11 + + + YES + + + + + + 18 + + + YES + + + + + + 15 + + + YES + + + + + + 16 + + + YES + + + + + + 100008 + + + + + 100015 + + + + + 100016 + + + + + 100009 + + + + + 200009 + + + + + 300009 + + + + + -3 + + + Application + + + 300018 + + + + + 300019 + + + YES + + + + + 300021 + + + CredentialsController + + + 300022 + + + CachesController + + + 300023 + + + KerberosCacheCollection + + + 300024 + + + CacheCollectionController + + + 300118 + + + YES + + + + + + 300119 + + + + + 300152 + + + YES + + + + + + 300153 + + + + + 300154 + + + YES + + + + + + 300155 + + + + + 300156 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + 10.IBPluginDependency + 10.ImportedFromIB2 + 100009.IBShouldRemoveOnLegacySave + 11.IBPluginDependency + 11.ImportedFromIB2 + 15.IBPluginDependency + 15.ImportedFromIB2 + 16.IBPluginDependency + 16.ImportedFromIB2 + 18.IBPluginDependency + 18.ImportedFromIB2 + 200009.IBShouldRemoveOnLegacySave + 300009.IBShouldRemoveOnLegacySave + 300018.IBPluginDependency + 300019.IBPluginDependency + 300021.IBPluginDependency + 300021.ImportedFromIB2 + 300022.IBPluginDependency + 300022.ImportedFromIB2 + 300023.IBPluginDependency + 300023.ImportedFromIB2 + 300024.IBPluginDependency + 300024.ImportedFromIB2 + 300118.IBPluginDependency + 300118.ImportedFromIB2 + 300152.IBPluginDependency + 300153.IBPluginDependency + 300154.IBPluginDependency + 300155.IBPluginDependency + 300156.IBPluginDependency + 5.IBEditorWindowLastContentRect + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 5.ImportedFromIB2 + 5.NSWindowTemplate.visibleAtLaunch + 5.editorWindowContentRectSynchronizationRect + 5.windowTemplate.hasMaxSize + 5.windowTemplate.hasMinSize + 5.windowTemplate.maxSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + 8.IBPluginDependency + 8.ImportedFromIB2 + 9.IBPluginDependency + 9.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{778, 710}, {491, 315}} + com.apple.InterfaceBuilder.CocoaPlugin + {{778, 710}, {491, 315}} + + + {{503, 256}, {419, 465}} + + + {600, 600} + {419, 298} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 300182 + + + + YES + + BadgedImageView + NSView + + IBProjectSource + ../Sources/kim/agent/mac/BadgedImageView.h + + + + FirstResponder + NSObject + + IBUserSource + + + + + KerberosCacheCollection + NSObject + + IBProjectSource + ../../../Common/Headers/KerberosCacheCollection.h + + + + SelectIdentityController + NSWindowController + + YES + + YES + add: + cancel: + remove: + select: + + + YES + id + id + id + id + + + + YES + + YES + addIdentityButton + cancelButton + explanationTextField + headerTextField + identityTableColumn + identityTableView + kerberosIconImageView + removeIdentityButton + selectIdentityButton + timeRemainingTableColumn + + + YES + NSButton + NSButton + NSTextField + NSTextField + NSTableColumn + NSTableView + BadgedImageView + NSButton + NSButton + NSTableColumn + + + + IBProjectSource + ../Sources/kim/agent/mac/SelectIdentityController.h + + + + + 0 + ../../../../../../Projects/Kerberos5.xcodeproj + 3 + + diff --git a/src/kim/lib/kim.exports b/src/kim/lib/kim.exports index eda734965..4a90fd499 100644 --- a/src/kim/lib/kim.exports +++ b/src/kim/lib/kim.exports @@ -138,6 +138,7 @@ kim_ccache_get_type kim_ccache_get_display_name kim_ccache_get_client_identity kim_ccache_get_valid_credential +kim_ccache_get_state kim_ccache_get_start_time kim_ccache_get_expiration_time kim_ccache_get_renewal_expiration_time diff --git a/src/kim/lib/kim_ccache.c b/src/kim/lib/kim_ccache.c index 916d5b772..a3949229a 100644 --- a/src/kim/lib/kim_ccache.c +++ b/src/kim/lib/kim_ccache.c @@ -631,25 +631,26 @@ kim_error kim_ccache_get_client_identity (kim_ccache in_ccache, /* ------------------------------------------------------------------------ */ -kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache, - kim_credential *out_credential) +static kim_error kim_ccache_get_dominant_credential (kim_ccache in_ccache, + kim_credential_state *out_state, + kim_boolean *out_is_tgt, + kim_credential *out_credential) { kim_error err = KIM_NO_ERROR; kim_credential_iterator iterator = NULL; kim_boolean out_of_credentials = FALSE; kim_boolean found_valid_tgt = FALSE; - kim_boolean found_invalid_tgt = FALSE; - kim_credential_state invalid_tgt_state = kim_credentials_state_valid; - kim_credential valid_credential = NULL; + kim_boolean dominant_is_tgt = FALSE; + kim_credential_state dominant_state = kim_credentials_state_valid; + kim_credential dominant_credential = NULL; - if (!err && !in_ccache ) { err = param_error (1, "in_ccache", "NULL"); } - if (!err && !out_credential) { err = param_error (2, "out_credential", "NULL"); } + if (!err && !in_ccache) { err = param_error (1, "in_ccache", "NULL"); } if (!err) { err = kim_credential_iterator_create (&iterator, in_ccache); } - while (!err && !found_valid_tgt && !out_of_credentials) { + while (!err && !out_of_credentials && !found_valid_tgt) { kim_credential credential = NULL; err = kim_credential_iterator_next (iterator, &credential); @@ -658,46 +659,57 @@ kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache, out_of_credentials = TRUE; } else if (!err) { - kim_identity service_identity = NULL; kim_credential_state state = kim_credentials_state_valid; kim_boolean is_tgt = FALSE; - err = kim_credential_get_service_identity (credential, - &service_identity); + err = kim_credential_get_state (credential, &state); if (!err) { - err = kim_credential_get_state (credential, &state); + kim_identity service_identity = NULL; + + err = kim_credential_get_service_identity (credential, + &service_identity); + + if (!err) { + err = kim_identity_is_tgt_service (service_identity, &is_tgt); + } + + kim_identity_free (&service_identity); } if (!err) { - err = kim_identity_is_tgt_service (service_identity, &is_tgt); - } - - if (!err) { - if (state == kim_credentials_state_valid) { - kim_credential_free (&valid_credential); + /* There are three cases where we replace: + * 1) We don't have a dominant yet + * 2) This is a tgt and dominant isn't + * 3) Both are tgts but this is valid and dominant isn't */ + + if ((!dominant_credential) /* 1 */ || + (is_tgt && !dominant_is_tgt) /* 2 */ || + (is_tgt && dominant_is_tgt && /* 3 */ + state == kim_credentials_state_valid && + dominant_state != kim_credentials_state_valid)) { + /* replace */ + kim_credential_free (&dominant_credential); - valid_credential = credential; - credential = NULL; + dominant_credential = credential; + credential = NULL; /* take ownership */ - if (is_tgt) { - found_valid_tgt = TRUE; - } - } else { - if (is_tgt && !found_invalid_tgt) { - found_invalid_tgt = TRUE; - invalid_tgt_state = state; - } + dominant_is_tgt = is_tgt; + dominant_state = state; + } + + if (dominant_is_tgt && + dominant_state == kim_credentials_state_valid) { + /* Since we will never replace a valid tgt, stop here */ + found_valid_tgt = TRUE; } } - - kim_identity_free (&service_identity); } kim_credential_free (&credential); - } + } - if (!err && (!valid_credential || found_invalid_tgt)) { + if (!err && !dominant_credential) { kim_identity identity = NULL; kim_string identity_string = NULL; @@ -708,27 +720,83 @@ kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache, &identity_string); } - if (!err && found_invalid_tgt) { - switch (invalid_tgt_state) { - case kim_credentials_state_expired: - err = kim_error_create_from_code (KIM_CREDENTIALS_EXPIRED_ECODE, - identity_string); - break; - case kim_credentials_state_not_yet_valid: - case kim_credentials_state_needs_validation: - err = kim_error_create_from_code (KIM_NEEDS_VALIDATION_ECODE, - identity_string); - break; - case kim_credentials_state_address_mismatch: - err = kim_error_create_from_code (KIM_BAD_IP_ADDRESS_ECODE, - identity_string); - break; - } - } - - if (!err && !valid_credential) { + if (!err) { err = kim_error_create_from_code (KIM_NO_CREDENTIALS_ECODE, identity_string); + } + + kim_string_free (&identity_string); + kim_identity_free (&identity); + } + + if (!err) { + if (out_is_tgt) { + *out_is_tgt = dominant_is_tgt; + } + + if (out_state) { + *out_state = dominant_state; + } + + if (out_credential) { + *out_credential = dominant_credential; + dominant_credential = NULL; /* take ownership */ + } + } + + kim_credential_free (&dominant_credential); + kim_credential_iterator_free (&iterator); + + return check_error (err); +} + +/* ------------------------------------------------------------------------ */ + +kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache, + kim_credential *out_credential) +{ + kim_error err = KIM_NO_ERROR; + kim_boolean is_tgt = FALSE; + kim_credential_state state = kim_credentials_state_valid; + kim_credential credential = NULL; + + if (!err && !in_ccache ) { err = param_error (1, "in_ccache", "NULL"); } + if (!err && !out_credential) { err = param_error (2, "out_credential", "NULL"); } + + if (!err) { + err = kim_ccache_get_dominant_credential (in_ccache, + &state, &is_tgt, &credential); + } + + if (!err && state != kim_credentials_state_valid) { + kim_identity identity = NULL; + kim_string identity_string = NULL; + + err = kim_ccache_get_client_identity (in_ccache, &identity); + + if (!err) { + err = kim_identity_get_display_string (identity, + &identity_string); + } + + if (!err) { + if (state == kim_credentials_state_expired) { + err = kim_error_create_from_code (KIM_CREDENTIALS_EXPIRED_ECODE, + identity_string); + + } else if (state == kim_credentials_state_not_yet_valid || + state == kim_credentials_state_needs_validation) { + err = kim_error_create_from_code (KIM_NEEDS_VALIDATION_ECODE, + identity_string); + + } else if (state == kim_credentials_state_address_mismatch) { + err = kim_error_create_from_code (KIM_BAD_IP_ADDRESS_ECODE, + identity_string); + } else { + /* just default to this */ + err = kim_error_create_from_code (KIM_NEEDS_VALIDATION_ECODE, + identity_string); + } } kim_string_free (&identity_string); @@ -736,18 +804,35 @@ kim_error kim_ccache_get_valid_credential (kim_ccache in_ccache, } if (!err) { - *out_credential = valid_credential; - valid_credential = NULL; + *out_credential = credential; + credential = NULL; /* take ownership */ } - kim_credential_free (&valid_credential); - kim_credential_iterator_free (&iterator); + kim_credential_free (&credential); return check_error (err); } /* ------------------------------------------------------------------------ */ +kim_error kim_ccache_get_state (kim_ccache in_ccache, + kim_credential_state *out_state) +{ + kim_error err = KIM_NO_ERROR; + + if (!err && !in_ccache) { err = param_error (1, "in_ccache", "NULL"); } + if (!err && !out_state) { err = param_error (2, "out_state", "NULL"); } + + if (!err) { + err = kim_ccache_get_dominant_credential (in_ccache, + out_state, NULL, NULL); + } + + return check_error (err); +} + +/* ------------------------------------------------------------------------ */ + kim_error kim_ccache_get_start_time (kim_ccache in_ccache, kim_time *out_start_time) { @@ -758,7 +843,8 @@ kim_error kim_ccache_get_start_time (kim_ccache in_ccache, if (!err && !out_start_time) { err = param_error (2, "out_start_time", "NULL"); } if (!err) { - err = kim_ccache_get_valid_credential (in_ccache, &credential); + err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL, + &credential); } if (!err) { @@ -782,7 +868,8 @@ kim_error kim_ccache_get_expiration_time (kim_ccache in_ccache, if (!err && !out_expiration_time) { err = param_error (2, "out_expiration_time", "NULL"); } if (!err) { - err = kim_ccache_get_valid_credential (in_ccache, &credential); + err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL, + &credential); } if (!err) { @@ -807,7 +894,8 @@ kim_error kim_ccache_get_renewal_expiration_time (kim_ccache in_ccache, if (!err && !out_renewal_expiration_time) { err = param_error (2, "out_renewal_expiration_time", "NULL"); } if (!err) { - err = kim_ccache_get_valid_credential (in_ccache, &credential); + err = kim_ccache_get_dominant_credential (in_ccache, NULL, NULL, + &credential); } if (!err) { diff --git a/src/kim/lib/kim_credential.c b/src/kim/lib/kim_credential.c index 882fd4c72..40302e7b0 100644 --- a/src/kim/lib/kim_credential.c +++ b/src/kim/lib/kim_credential.c @@ -204,6 +204,8 @@ kim_error kim_credential_create_new (kim_credential *out_credential, credential = NULL; } + kim_credential_free (&credential); + return check_error (err); } diff --git a/src/kim/lib/kim_error.c b/src/kim/lib/kim_error.c index 890f044c1..265c02f79 100644 --- a/src/kim/lib/kim_error.c +++ b/src/kim/lib/kim_error.c @@ -246,15 +246,21 @@ kim_string kim_error_get_display_string (kim_error in_error) /* ------------------------------------------------------------------------ */ -void kim_error_free (kim_error *io_error) +kim_error_code kim_error_free (kim_error *io_error) { + kim_error_code code = 0; + if (io_error && *io_error) { + code = (*io_error)->code; + if (kim_error_is_builtin (*io_error)) { kim_string_free (&(*io_error)->message); free (*io_error); *io_error = KIM_NO_ERROR; } } + + return code; } #pragma mark -- Debugging Functions -- -- 2.26.2