• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqtwindows誰得cocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

BathyScapheのTitleRulerAppearanceを手軽に変更するツール


Commit MetaInfo

Revision2d161cc6a1f865d476ff74ebf17d4de1a731cabc (tree)
Zeit2008-08-14 08:43:41
Autormasakih <masakih@user...>
Commitermasakih

Log Message

initial import.

git-svn-id: svn+ssh://macmini/usr/local/svnrepos/BSTRAEditor/BSTRAEditor@2 f892931e-c658-45bd-90f1-b3d0def27f12

Ändern Zusammenfassung

Diff

--- /dev/null
+++ b/BSCSTitleRulerImitation.h
@@ -0,0 +1,56 @@
1+//
2+// BSCSTitleRulerImitation.h
3+// IconSetComposer
4+//
5+// Created by Hori,Masaki on 08/03/05.
6+// Copyright 2008 Hori,Masaki. All rights reserved.
7+//
8+
9+#import <Cocoa/Cocoa.h>
10+
11+@class BSTitleRulerAppearance;
12+
13+typedef enum _BSTitleRulerModeType {
14+ BSTitleRulerShowTitleOnlyMode = 0, // スレッドタイトルバーのみ
15+ BSTitleRulerShowInfoOnlyMode = 1, // 「dat 落ちと判定されました。」のみ
16+ BSTitleRulerShowTitleAndInfoMode = 2, // スレッドタイトルバー、その下に「dat 落ちと判定されました。」
17+} BSTitleRulerModeType;
18+
19+
20+@interface BSCSTitleRulerImitation : NSView
21+{
22+ BSTitleRulerAppearance *m_appearance;
23+
24+ NSString *m_titleStr;
25+ NSString *m_infoStr;
26+
27+ BSTitleRulerModeType _currentMode;
28+
29+ // addtional variables.
30+ NSControlTint representControlTint;
31+ int representActiveState; // 0: Inactive. 1: Active.
32+}
33+
34+- (BSTitleRulerAppearance *)appearance;
35+- (void)setAppearance:(BSTitleRulerAppearance *)appearance;
36+
37+- (NSString *)titleStr;
38+- (void)setTitleStr:(NSString *)aString;
39+- (void)setTitleStrWithoutNeedingDisplay:(NSString *)aString;
40+
41+- (NSString *)infoStr;
42+- (void)setInfoStr:(NSString *)aString;
43+- (void)setInfoStrWithoutNeedingDisplay:(NSString *)aString;
44+
45+- (BSTitleRulerModeType)currentMode;
46+- (void)setCurrentMode:(BSTitleRulerModeType)newType;
47+
48+// addtional methods.
49+- (NSControlTint)representControlTint;
50+- (void)setRepresentControlTint:(NSControlTint)newTint;
51+
52+// 0: Inactive. 1: Active.
53+- (int)representActiveState;
54+- (void)setRepresentActiveState:(int)newState;
55+
56+@end
--- /dev/null
+++ b/BSCSTitleRulerImitation.m
@@ -0,0 +1,272 @@
1+//
2+// BSCSTitleRulerImitation.m
3+// IconSetComposer
4+//
5+// Created by Hori,Masaki on 08/03/05.
6+// Copyright 2008 Hori,Masaki. All rights reserved.
7+//
8+
9+#import "BSCSTitleRulerImitation.h"
10+
11+#import "BSTitleRulerAppearance.h"
12+#import "NSWorkspace-Extensions.h"
13+#import "NSBezierPath_AMShading.h"
14+
15+
16+
17+@implementation BSCSTitleRulerImitation
18+
19+#define THICKNESS_FOR_TITLE 22.0
20+#define THICKNESS_FOR_INFO 36.0
21+#define TITLE_FONT_SIZE 12.0
22+#define INFO_FONT_SIZE 13.0
23+
24+#pragma mark Accessors
25+- (BSTitleRulerAppearance *)appearance
26+{
27+ return m_appearance;
28+}
29+
30+- (void)setAppearance:(BSTitleRulerAppearance *)appearance
31+{
32+ [appearance retain];
33+ [m_appearance release];
34+ m_appearance = appearance;
35+ [self setNeedsDisplay:YES];
36+}
37+
38+- (NSString *)titleStr
39+{
40+ return m_titleStr;
41+}
42+
43+- (void)setTitleStr:(NSString *)aString
44+{
45+ [self setTitleStrWithoutNeedingDisplay:aString];
46+ [self setNeedsDisplay:YES];
47+}
48+
49+- (void)setTitleStrWithoutNeedingDisplay:(NSString *)aString
50+{
51+ [aString retain];
52+ [m_titleStr release];
53+ m_titleStr = aString;
54+}
55+
56+- (NSString *)infoStr
57+{
58+ return m_infoStr;
59+}
60+
61+- (void)setInfoStr:(NSString *)aString
62+{
63+ [self setInfoStrWithoutNeedingDisplay:aString];
64+ [self setNeedsDisplay:YES];
65+}
66+
67+- (void)setInfoStrWithoutNeedingDisplay:(NSString *)aString
68+{
69+ [aString retain];
70+ [m_infoStr release];
71+ m_infoStr = aString;
72+}
73+
74+- (BSTitleRulerModeType)currentMode
75+{
76+ return _currentMode;
77+}
78+
79+- (void)setCurrentMode:(BSTitleRulerModeType)newType
80+{
81+ float newThickness;
82+ _currentMode = newType;
83+
84+ switch(newType) {
85+ case BSTitleRulerShowTitleOnlyMode:
86+ newThickness = THICKNESS_FOR_TITLE;
87+ break;
88+ case BSTitleRulerShowInfoOnlyMode:
89+ newThickness = THICKNESS_FOR_INFO;
90+ break;
91+ case BSTitleRulerShowTitleAndInfoMode:
92+ newThickness = (THICKNESS_FOR_TITLE + THICKNESS_FOR_INFO);
93+ break;
94+ default:
95+ newThickness = THICKNESS_FOR_TITLE;
96+ break;
97+ }
98+
99+// [self setRuleThickness:newThickness];
100+}
101+// addtional methods.
102+- (NSControlTint)representControlTint
103+{
104+ return representControlTint;
105+}
106+- (void)setRepresentControlTint:(NSControlTint)newTint
107+{
108+ representControlTint = newTint;
109+ // [self setNeedsDisplay:YES];
110+}
111+
112+// 0: Inactive. 1: Active.
113+- (int)representActiveState
114+{
115+ return representActiveState;
116+}
117+- (void)setRepresentActiveState:(int)newState
118+{
119+ representActiveState = newState;
120+ // [self setNeedsDisplay:YES];
121+}
122+
123+#pragma mark Private Utilities
124+- (NSDictionary *)attrTemplateForTitle
125+{
126+ /*static*/ NSDictionary *tmp = nil;
127+ if (!tmp) {
128+ NSColor *color_;
129+
130+ color_ = [[self appearance] textColor];
131+
132+ tmp = [[NSDictionary alloc] initWithObjectsAndKeys:
133+ [NSFont boldSystemFontOfSize:TITLE_FONT_SIZE], NSFontAttributeName,
134+ color_, NSForegroundColorAttributeName,
135+ nil];
136+ }
137+// return tmp;
138+ return [tmp autorelease];
139+}
140+
141+- (NSDictionary *)attrTemplateForInfo
142+{
143+ /*static*/ NSDictionary *tmp2 = nil;
144+ if (!tmp2) {
145+ NSColor *color_;
146+
147+ color_ = [[self appearance] infoColor];
148+
149+ tmp2 = [[NSDictionary alloc] initWithObjectsAndKeys:
150+ [NSFont systemFontOfSize:INFO_FONT_SIZE], NSFontAttributeName,
151+ color_, NSForegroundColorAttributeName,
152+ nil];
153+ }
154+// return tmp2;
155+ return [tmp2 autorelease];
156+}
157+
158+- (NSAttributedString *)titleForDrawing
159+{
160+ return [[[NSAttributedString alloc] initWithString:[self titleStr] attributes:[self attrTemplateForTitle]] autorelease];
161+}
162+
163+- (NSAttributedString *)infoForDrawing
164+{
165+ return [[[NSAttributedString alloc] initWithString:[self infoStr] attributes:[self attrTemplateForInfo]] autorelease];
166+}
167+
168+- (NSArray *)activeColors
169+{
170+ BSTitleRulerAppearance *appearance = [self appearance];
171+ return ([self representControlTint] == NSGraphiteControlTint) ? [appearance activeGraphiteColors] : [appearance activeBlueColors];
172+}
173+
174+#pragma mark Setup & Cleanup
175+- (id)initWithFrame:(NSRect)frame
176+{
177+ if (self = [super initWithFrame:frame]) {
178+ // BSTitleRulerView Properties
179+ [self setCurrentMode:BSTitleRulerShowTitleOnlyMode];
180+// [self setAppearance:appearance];
181+ }
182+ return self;
183+}
184+
185+- (void)dealloc
186+{
187+ [m_titleStr release];
188+ [m_infoStr release];
189+ [m_appearance release];
190+
191+ [super dealloc];
192+}
193+
194+#pragma mark Drawing
195+- (void)drawTitleBarInRect:(NSRect)aRect
196+{
197+ NSArray *colors_;
198+ NSColor *gradientStartColor, *gradientEndColor;
199+
200+ BSTitleRulerAppearance *appearance = [self appearance];
201+
202+ colors_ = [self representActiveState] ? [self activeColors] : [appearance inactiveColors];
203+
204+ gradientStartColor = [colors_ objectAtIndex:0];
205+ gradientEndColor = [colors_ objectAtIndex:1];
206+
207+ [[NSBezierPath bezierPathWithRect:aRect] linearGradientFillWithStartColor:gradientStartColor endColor:gradientEndColor];
208+
209+ if ([appearance drawsCarvedText]) {
210+ // このへん、暫定的
211+ NSMutableAttributedString *foo = [[self titleForDrawing] mutableCopy];
212+ NSRange range = NSMakeRange(0,[foo length]);
213+ [foo removeAttribute:NSForegroundColorAttributeName range:range];
214+ [foo addAttributes:[NSDictionary dictionaryWithObject:[NSColor grayColor] forKey:NSForegroundColorAttributeName] range:range];
215+ [foo drawInRect:NSInsetRect(aRect, 5.0, 3.0)];
216+ [foo release];
217+ }
218+
219+ [[self titleForDrawing] drawInRect:NSInsetRect(aRect, 5.0, 2.0)];
220+}
221+
222+- (BOOL)isOpaque
223+{
224+ return YES;
225+}
226+
227+- (void)drawInfoBarInRect:(NSRect)aRect
228+{
229+ NSRect iconRect;
230+ NSImage *icon_ = [[NSWorkspace sharedWorkspace] systemIconForType:kAlertNoteIcon];
231+ [icon_ setSize:NSMakeSize(32, 32)];
232+ [icon_ setFlipped:[self isFlipped]];
233+
234+ [[[self appearance] infoBackgroundColor] set];
235+ NSRectFill(aRect);
236+
237+ iconRect = NSMakeRect(NSMinX(aRect)+5.0, NSMinY(aRect)+2.0, 32, 32);
238+
239+ [icon_ drawInRect:iconRect fromRect:NSMakeRect(0,0,32,32) operation:NSCompositeSourceOver fraction:1.0];
240+
241+ aRect = NSInsetRect(aRect, 5.0, 7.0);
242+ aRect.origin.x += 36.0;
243+ [[self infoForDrawing] drawInRect:NSInsetRect(aRect, 5.0, 2.0)];
244+}
245+
246+- (void)drawRect:(NSRect)aRect
247+{
248+ switch ([self currentMode]) {
249+ case BSTitleRulerShowTitleOnlyMode:
250+ [self drawTitleBarInRect:aRect];
251+ break;
252+ case BSTitleRulerShowInfoOnlyMode:
253+ [self drawInfoBarInRect:aRect];
254+ break;
255+ case BSTitleRulerShowTitleAndInfoMode:
256+ {
257+ NSRect titleRect, infoRect;
258+ NSDivideRect(aRect, &infoRect, &titleRect, THICKNESS_FOR_INFO, NSMaxYEdge);
259+ [self drawTitleBarInRect:titleRect];
260+ [self drawInfoBarInRect:infoRect];
261+ }
262+ break;
263+ }
264+}
265+
266+// additional methods.
267+- (BOOL)isFlipped
268+{
269+ return YES;
270+}
271+@end
272+
--- /dev/null
+++ b/BSTRADocument.h
@@ -0,0 +1,27 @@
1+//
2+// MyDocument.h
3+// BSTRAEditor
4+//
5+// Created by Hori,Masaki on 08/03/11.
6+// Copyright Hori,Masaki 2008 . All rights reserved.
7+//
8+
9+
10+#import <Cocoa/Cocoa.h>
11+
12+#import "BSTitleRulerAppearance.h"
13+#import "BSCSTitleRulerImitation.h"
14+
15+@interface BSTRADocument : NSDocument
16+{
17+ BSTitleRulerAppearance *appearance;
18+
19+ IBOutlet BSCSTitleRulerImitation* blueActiveView;
20+ IBOutlet BSCSTitleRulerImitation* graphiteActiveView;
21+ IBOutlet BSCSTitleRulerImitation* inactiveView;
22+ IBOutlet BSCSTitleRulerImitation* infoView;
23+}
24+
25+- (IBAction)saveToBSSupportFolder:(id)sender;
26+
27+@end
--- /dev/null
+++ b/BSTRADocument.m
@@ -0,0 +1,390 @@
1+//
2+// MyDocument.m
3+// BSTRAEditor
4+//
5+// Created by Hori,Masaki on 08/03/11.
6+// Copyright Hori,Masaki 2008 . All rights reserved.
7+//
8+
9+#import "BSTRADocument.h"
10+
11+@interface BSTRADocument (Addition)
12+- (void)setAppearance:(BSTitleRulerAppearance *)newAppearance;
13+- (BSTitleRulerAppearance *)appearance;
14+- (NSString *)bathyScapheSupportFolder;
15+@end
16+
17+@implementation BSTRADocument
18+
19+- (id)init
20+{
21+ self = [super init];
22+ if (self) {
23+
24+ NSBundle *b = [NSBundle mainBundle];
25+ id archiPath = [b pathForResource:@"BSTitleRulerAppearance" ofType:@"plist"];
26+
27+ id a = [[NSKeyedUnarchiver unarchiveObjectWithFile:archiPath] retain];
28+ if(!a) {
29+ NSLog(@"OIASDFHJJKLSHGFIUORWHEG(UPIOJDSKXCBNKASJLCK");
30+ }
31+ [self setAppearance:a];
32+ }
33+ return self;
34+}
35+
36+- (void)dealloc
37+{
38+ [self setAppearance:nil];
39+
40+ [super dealloc];
41+}
42+
43+- (NSString *)windowNibName
44+{
45+ // Override returning the nib file name of the document
46+ // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead.
47+ return @"BSTRADocument";
48+}
49+
50+- (void)windowControllerDidLoadNib:(NSWindowController *) aController
51+{
52+ [super windowControllerDidLoadNib:aController];
53+ // Add any code here that needs to be executed once the windowController has loaded the document's window.
54+ NSString *title = NSLocalizedString(@"Title.", @"Title.");
55+ NSString *information = NSLocalizedString(@"Information.", @"Information.");
56+
57+ [blueActiveView setAppearance:appearance];
58+ [blueActiveView setTitleStrWithoutNeedingDisplay:title];
59+ [blueActiveView setInfoStrWithoutNeedingDisplay:information];
60+ [blueActiveView setCurrentMode:BSTitleRulerShowTitleOnlyMode];
61+ [blueActiveView setRepresentControlTint:NSBlueControlTint];
62+ [blueActiveView setRepresentActiveState:1];
63+
64+ [graphiteActiveView setAppearance:appearance];
65+ [graphiteActiveView setTitleStrWithoutNeedingDisplay:title];
66+ [graphiteActiveView setInfoStrWithoutNeedingDisplay:information];
67+ [graphiteActiveView setCurrentMode:BSTitleRulerShowTitleOnlyMode];
68+ [graphiteActiveView setRepresentControlTint:NSGraphiteControlTint];
69+ [graphiteActiveView setRepresentActiveState:1];
70+
71+ [inactiveView setAppearance:appearance];
72+ [inactiveView setTitleStrWithoutNeedingDisplay:title];
73+ [inactiveView setInfoStrWithoutNeedingDisplay:information];
74+ [inactiveView setCurrentMode:BSTitleRulerShowTitleOnlyMode];
75+ [inactiveView setRepresentControlTint:NSBlueControlTint];
76+ [inactiveView setRepresentActiveState:0];
77+
78+ [infoView setAppearance:appearance];
79+ [infoView setTitleStrWithoutNeedingDisplay:title];
80+ [infoView setInfoStrWithoutNeedingDisplay:information];
81+ [infoView setCurrentMode:BSTitleRulerShowInfoOnlyMode];
82+ [infoView setRepresentControlTint:NSBlueControlTint];
83+ [infoView setRepresentActiveState:1];
84+}
85+
86+- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
87+{
88+ return [NSKeyedArchiver archivedDataWithRootObject:appearance];
89+}
90+
91+- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
92+{
93+ id a = nil;
94+ @try {
95+ a = [NSKeyedUnarchiver unarchiveObjectWithData:data];
96+ }
97+ @catch(NSException *ex) {
98+
99+ if (outError != NULL) {
100+ *outError = [NSError errorWithDomain:@"BSTRAEditor" code:10 userInfo:NULL];
101+ }
102+ return NO;
103+ }
104+ if(!a) {
105+ if (outError != NULL) {
106+ *outError = [NSError errorWithDomain:@"BSTRAEditor" code:20 userInfo:NULL];
107+ }
108+ return NO;
109+ }
110+
111+ if(![a isMemberOfClass:[BSTitleRulerAppearance class]]) {
112+ if (outError != NULL && *outError != nil) {
113+ *outError = [NSError errorWithDomain:@"BSTRAEditor" code:30 userInfo:NULL];
114+ }
115+ return NO;
116+ }
117+
118+ [self setAppearance:a];
119+
120+ return YES;
121+}
122+
123+#pragma mark For Panther
124+- (NSData *)dataRepresentationOfType:(NSString *)type
125+{
126+ return [self dataOfType:type error:NULL];
127+}
128+- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)type
129+{
130+ return [self readFromData:data ofType:type error:NULL];
131+}
132+
133+#pragma mark Actions
134+- (IBAction)saveToBSSupportFolder:(id)sender
135+{
136+ NSString *fileName = [self bathyScapheSupportFolder];
137+
138+ fileName = [fileName stringByAppendingPathComponent:@"BSTitleRulerAppearance.plist"];
139+
140+ NSFileManager *fm = [NSFileManager defaultManager];
141+ BOOL isDir;
142+ NSString *information;
143+ NSString *message;
144+ NSAlert *alert;
145+ if([fm fileExistsAtPath:fileName isDirectory:&isDir]) {
146+ information = NSLocalizedString(@"Message002", @"Message002");
147+ message = NSLocalizedString(@"Message001", @"Message001");
148+
149+ message = [NSString stringWithFormat:message, fileName];
150+ alert = [NSAlert alertWithMessageText:message
151+ defaultButton:NSLocalizedString(@"Cancel", @"Cancel")
152+ alternateButton:NSLocalizedString(@"Replace", @"Replace")
153+ otherButton:nil
154+ informativeTextWithFormat:information];
155+ int ret = [alert runModal];
156+ if(ret == NSAlertDefaultReturn) {
157+ return;
158+ }
159+
160+ if(ret == NSAlertAlternateReturn && isDir) {
161+ if(![fm removeFileAtPath:fileName handler:nil]) {
162+// information = NSLocalizedString(@"Message003", @"Message003");
163+// alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Message004", @"Message004")
164+// defaultButton:NSLocalizedString(@"OK", @"OK")
165+// alternateButton:nil
166+// otherButton:nil
167+// informativeTextWithFormat:information];
168+// [alert setAlertStyle:NSCriticalAlertStyle];
169+// [alert runModal];
170+//
171+// return;
172+ }
173+ }
174+ }
175+
176+ if(![NSKeyedArchiver archiveRootObject:[self appearance] toFile:fileName]) {
177+ information = NSLocalizedString(@"Message005", @"Message005");
178+ message = NSLocalizedString(@"Message006", @"Message006");
179+
180+ information = [NSString stringWithFormat:information, fileName];
181+ message = [NSString stringWithFormat:message, fileName];
182+ alert = [NSAlert alertWithMessageText:message
183+ defaultButton:NSLocalizedString(@"OK", @"OK")
184+ alternateButton:nil
185+ otherButton:nil
186+ informativeTextWithFormat:information];
187+ [alert setAlertStyle:NSCriticalAlertStyle];
188+ [alert runModal];
189+
190+ return;
191+ }
192+}
193+
194+@end
195+
196+@implementation BSTRADocument (Addition)
197+NSString *resolveAlias(NSString *path)
198+{
199+ NSString *newPath = nil;
200+
201+ FSRef ref;
202+ char *newPathCString;
203+ Boolean isDir, wasAliased;
204+ OSStatus err;
205+
206+ err = FSPathMakeRef( (UInt8 *)[path fileSystemRepresentation], &ref, NULL );
207+ if( err == dirNFErr ) {
208+ NSString *lastPath = [path lastPathComponent];
209+ NSString *parent = [path stringByDeletingLastPathComponent];
210+ NSString *f;
211+
212+ if( [@"/" isEqualTo:parent] ) return nil;
213+
214+ parent = resolveAlias( parent );
215+ if( !parent ) return nil;
216+
217+ f = [parent stringByAppendingPathComponent:lastPath];
218+
219+ err = FSPathMakeRef( (UInt8 *)[f fileSystemRepresentation], &ref, NULL );
220+ }
221+ if( err != noErr ) {
222+ return nil;
223+ }
224+
225+ err = FSResolveAliasFile( &ref, TRUE, &isDir, &wasAliased );
226+ if( err != noErr ) {
227+ return nil;
228+ }
229+
230+ newPathCString = (char *)malloc( sizeof(unichar) * 1024 );
231+ if( !newPathCString ) {
232+ return nil;
233+ }
234+
235+ err = FSRefMakePath( &ref, (UInt8 *)newPathCString, sizeof(unichar) * 1024 );
236+ if( err != noErr ) {
237+ goto final;
238+ }
239+
240+ newPath = [NSString stringWithUTF8String:newPathCString];
241+
242+final:
243+ free( (char *)newPathCString );
244+
245+ return newPath;
246+}
247+- (NSString *)bathyScapheSupportFolder
248+{
249+ static NSString *result = nil;
250+
251+ if( !result ) {
252+ NSArray *dirs = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, YES );
253+ NSString *tmp;
254+
255+ if( !dirs || [dirs count] == 0 ) return NSHomeDirectory();
256+
257+ result = [dirs objectAtIndex:0];
258+ result = [result stringByAppendingPathComponent:@"Application Support"];
259+ result = [result stringByAppendingPathComponent:@"BathyScaphe"];
260+ tmp = resolveAlias( result );
261+ if( tmp ) result = tmp;
262+ [result retain];
263+ }
264+
265+ return result;
266+}
267+- (void)setAppearance:(BSTitleRulerAppearance *)newAppearance
268+{
269+ if(appearance == newAppearance) return;
270+
271+ const NSString *paths[] = {
272+ @"activeBlueStartColor",
273+ @"activeBlueEndColor",
274+ @"activeGraphiteStartColor",
275+ @"activeGraphiteEndColor",
276+ @"inactiveStartColor",
277+ @"inactiveEndColor",
278+ @"textColor",
279+ @"infoColor",
280+ @"infoBackgroundColor",
281+ @"drawsCarvedText",
282+ nil
283+ };
284+
285+ NSString **p = paths;
286+ while(*p) {
287+ [appearance removeObserver:self forKeyPath:*p++];
288+ }
289+ [appearance autorelease];
290+
291+ appearance = [newAppearance retain];
292+
293+ p = paths;
294+ while(*p) {
295+ [appearance addObserver:self
296+ forKeyPath:*p++
297+ options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
298+ context:NULL];
299+ }
300+}
301+- (BSTitleRulerAppearance *)appearance
302+{
303+ return appearance;
304+}
305+
306+- (SEL)selForKey:(NSString *)key
307+{
308+ if([key isEqualToString:@"activeBlueStartColor"]) {
309+ return @selector(setActiveBlueStartColor:);
310+ }
311+ if([key isEqualToString:@"activeBlueEndColor"]) {
312+ return @selector(setActiveBlueEndColor:);
313+ }
314+ if([key isEqualToString:@"activeGraphiteStartColor"]) {
315+ return @selector(setActiveGraphiteStartColor:);
316+ }
317+ if([key isEqualToString:@"activeGraphiteEndColor"]) {
318+ return @selector(setActiveGraphiteEndColor:);
319+ }
320+ if([key isEqualToString:@"inactiveStartColor"]) {
321+ return @selector(setInactiveStartColor:);
322+ }
323+ if([key isEqualToString:@"inactiveEndColor"]) {
324+ return @selector(setInactiveEndColor:);
325+ }
326+ if([key isEqualToString:@"textColor"]) {
327+ return @selector(setTextColor:);
328+ }
329+ if([key isEqualToString:@"infoColor"]) {
330+ return @selector(setInfoColor:);
331+ }
332+ if([key isEqualToString:@"infoBackgroundColor"]) {
333+ return @selector(setInfoBackgroundColor:);
334+ }
335+
336+ return NULL;
337+}
338+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
339+{
340+ if([[change objectForKey:NSKeyValueChangeKindKey] intValue] != NSKeyValueChangeSetting) return;
341+ id old, new;
342+ old = [change objectForKey:NSKeyValueChangeOldKey];
343+ new = [change objectForKey:NSKeyValueChangeNewKey];
344+ if([old isEqual:new]) return;
345+
346+ [self updateChangeCount:NSChangeDone];
347+ NSUndoManager *undo = [self undoManager];
348+ SEL sel = [self selForKey:keyPath];
349+ [undo beginUndoGrouping];
350+ if(old && sel) {
351+ [undo registerUndoWithTarget:appearance
352+ selector:sel
353+ object:old];
354+ [[undo prepareWithInvocationTarget:self] updateChangeCount:NSChangeUndone];
355+ }
356+ if([keyPath isEqual:@"drawsCarvedText"]) {
357+ [[undo prepareWithInvocationTarget:appearance] setDrawsCarvedText:[old boolValue]];
358+ [[undo prepareWithInvocationTarget:self] updateChangeCount:NSChangeUndone];
359+ }
360+ [undo registerUndoWithTarget:self
361+ selector:@selector(displayItemForKey:)
362+ object:keyPath];
363+ [undo endUndoGrouping];
364+}
365+- (void)displayItemForKey:(NSString *)key
366+{
367+ if([key hasPrefix:@"activeBlue"]) {
368+ [blueActiveView setNeedsDisplay:YES];
369+ } else if([key hasPrefix:@"activeGraphite"]) {
370+ [graphiteActiveView setNeedsDisplay:YES];
371+ } else if([key hasPrefix:@"inactive"]) {
372+ [inactiveView setNeedsDisplay:YES];
373+ } else if([key hasPrefix:@"infoBack"]) {
374+ [infoView setNeedsDisplay:YES];
375+ } else { // Maybe text color or carved.
376+ [blueActiveView setNeedsDisplay:YES];
377+ [graphiteActiveView setNeedsDisplay:YES];
378+ [inactiveView setNeedsDisplay:YES];
379+ [infoView setNeedsDisplay:YES];
380+ }
381+}
382+- (void)setValue:(id)value forKeyPath:(NSString *)keyPath
383+{
384+ if([keyPath hasPrefix:@"appearance."]) {
385+ [self displayItemForKey:[keyPath substringFromIndex:[@"appearance." length]]];
386+ }
387+
388+ [super setValue:value forKeyPath:keyPath];
389+}
390+@end
Binary files /dev/null and b/BSTRAEditor.icns differ
--- /dev/null
+++ b/BSTRAEditor.xcodeproj/project.pbxproj
@@ -0,0 +1,490 @@
1+// !$*UTF8*$!
2+{
3+ archiveVersion = 1;
4+ classes = {
5+ };
6+ objectVersion = 44;
7+ objects = {
8+
9+/* Begin PBXAggregateTarget section */
10+ F43441780D86C91B00F9416E /* MakeLocalize */ = {
11+ isa = PBXAggregateTarget;
12+ buildConfigurationList = F434417E0D86C93200F9416E /* Build configuration list for PBXAggregateTarget "MakeLocalize" */;
13+ buildPhases = (
14+ F43441770D86C91B00F9416E /* ShellScript */,
15+ );
16+ dependencies = (
17+ );
18+ name = MakeLocalize;
19+ productName = MakeLocalize;
20+ };
21+/* End PBXAggregateTarget section */
22+
23+/* Begin PBXBuildFile section */
24+ 8D15AC2D0486D014006FF6A4 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */; };
25+ 8D15AC2E0486D014006FF6A4 /* BSTRADocument.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B4FDCFA73011CA2CEA /* BSTRADocument.nib */; };
26+ 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; };
27+ 8D15AC310486D014006FF6A4 /* BSTRADocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* BSTRADocument.m */; settings = {ATTRIBUTES = (); }; };
28+ 8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
29+ 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; };
30+ F479A5F10D860C6C00A414C2 /* NSBezierPath_AMShading.m in Sources */ = {isa = PBXBuildFile; fileRef = F479A5EF0D860C6C00A414C2 /* NSBezierPath_AMShading.m */; };
31+ F479A5FD0D860D7C00A414C2 /* BSTitleRulerAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = F479A5FC0D860D7C00A414C2 /* BSTitleRulerAppearance.m */; };
32+ F479A6030D860DBB00A414C2 /* BSCSTitleRulerImitation.m in Sources */ = {isa = PBXBuildFile; fileRef = F479A6020D860DBB00A414C2 /* BSCSTitleRulerImitation.m */; };
33+ F479A6080D860E0C00A414C2 /* NSWorkspace-Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = F479A6070D860E0C00A414C2 /* NSWorkspace-Extensions.m */; };
34+ F479A7710D861A8300A414C2 /* NSAppleEventDescriptor-Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = F479A7700D861A8300A414C2 /* NSAppleEventDescriptor-Extensions.m */; };
35+ F479A7A60D861C1900A414C2 /* BSTitleRulerAppearance.plist in Resources */ = {isa = PBXBuildFile; fileRef = F479A7A50D861C1900A414C2 /* BSTitleRulerAppearance.plist */; };
36+ F479A8230D86302E00A414C2 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F479A8220D86302E00A414C2 /* Localizable.strings */; };
37+ F479A91F0D8654E300A414C2 /* BSTRAEditor.icns in Resources */ = {isa = PBXBuildFile; fileRef = F479A91E0D8654E300A414C2 /* BSTRAEditor.icns */; };
38+/* End PBXBuildFile section */
39+
40+/* Begin PBXContainerItemProxy section */
41+ F434417F0D86C94100F9416E /* PBXContainerItemProxy */ = {
42+ isa = PBXContainerItemProxy;
43+ containerPortal = 2A37F4A9FDCFA73011CA2CEA /* Project object */;
44+ proxyType = 1;
45+ remoteGlobalIDString = F43441780D86C91B00F9416E;
46+ remoteInfo = MakeLocalize;
47+ };
48+/* End PBXContainerItemProxy section */
49+
50+/* Begin PBXFileReference section */
51+ 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
52+ 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
53+ 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
54+ 2A37F4ACFDCFA73011CA2CEA /* BSTRADocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSTRADocument.m; sourceTree = "<group>"; };
55+ 2A37F4AEFDCFA73011CA2CEA /* BSTRADocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSTRADocument.h; sourceTree = "<group>"; };
56+ 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
57+ 2A37F4B5FDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/BSTRADocument.nib; sourceTree = "<group>"; };
58+ 2A37F4B7FDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
59+ 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
60+ 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
61+ 32DBCF750370BD2300C91783 /* BSTRAEditor_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSTRAEditor_Prefix.pch; sourceTree = "<group>"; };
62+ 8D15AC360486D014006FF6A4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
63+ 8D15AC370486D014006FF6A4 /* BSTRAEditor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BSTRAEditor.app; sourceTree = BUILT_PRODUCTS_DIR; };
64+ F434415B0D86B89D00F9416E /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = English; path = English.lproj/Makefile; sourceTree = "<group>"; };
65+ F434415D0D86B8AC00F9416E /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = English; path = English.lproj/Localizable.strings.sed; sourceTree = "<group>"; };
66+ F434415E0D86B8C900F9416E /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
67+ F43441610D86B96500F9416E /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Japanese; path = Japanese.lproj/Makefile; sourceTree = "<group>"; };
68+ F43441710D86C85900F9416E /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = text; name = Japanese; path = Japanese.lproj/Localizable.strings.sed; sourceTree = "<group>"; };
69+ F479A5EC0D860C4C00A414C2 /* BSTitleRulerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSTitleRulerView.h; sourceTree = "<group>"; };
70+ F479A5ED0D860C4C00A414C2 /* BSTitleRulerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSTitleRulerView.m; sourceTree = "<group>"; };
71+ F479A5EF0D860C6C00A414C2 /* NSBezierPath_AMShading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSBezierPath_AMShading.m; sourceTree = "<group>"; };
72+ F479A5F00D860C6C00A414C2 /* NSBezierPath_AMShading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSBezierPath_AMShading.h; sourceTree = "<group>"; };
73+ F479A5FB0D860D7C00A414C2 /* BSTitleRulerAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSTitleRulerAppearance.h; sourceTree = "<group>"; };
74+ F479A5FC0D860D7C00A414C2 /* BSTitleRulerAppearance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSTitleRulerAppearance.m; sourceTree = "<group>"; };
75+ F479A6010D860DBB00A414C2 /* BSCSTitleRulerImitation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSCSTitleRulerImitation.h; sourceTree = "<group>"; };
76+ F479A6020D860DBB00A414C2 /* BSCSTitleRulerImitation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSCSTitleRulerImitation.m; sourceTree = "<group>"; };
77+ F479A6060D860E0C00A414C2 /* NSWorkspace-Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSWorkspace-Extensions.h"; sourceTree = "<group>"; };
78+ F479A6070D860E0C00A414C2 /* NSWorkspace-Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSWorkspace-Extensions.m"; sourceTree = "<group>"; };
79+ F479A76F0D861A8300A414C2 /* NSAppleEventDescriptor-Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAppleEventDescriptor-Extensions.h"; sourceTree = "<group>"; };
80+ F479A7700D861A8300A414C2 /* NSAppleEventDescriptor-Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSAppleEventDescriptor-Extensions.m"; sourceTree = "<group>"; };
81+ F479A7A50D861C1900A414C2 /* BSTitleRulerAppearance.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = BSTitleRulerAppearance.plist; sourceTree = "<group>"; };
82+ F479A8160D862FA100A414C2 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
83+ F479A8240D86303600A414C2 /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Japanese; path = Japanese.lproj/Localizable.strings; sourceTree = "<group>"; };
84+ F479A91E0D8654E300A414C2 /* BSTRAEditor.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = BSTRAEditor.icns; sourceTree = "<group>"; };
85+ F479A92C0D8655EE00A414C2 /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Japanese; path = Japanese.lproj/InfoPlist.strings; sourceTree = "<group>"; };
86+ F479A94A0D865A9000A414C2 /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Japanese; path = Japanese.lproj/MainMenu.nib; sourceTree = "<group>"; };
87+ F479A9520D8665B400A414C2 /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Japanese; path = Japanese.lproj/BSTRADocument.nib; sourceTree = "<group>"; };
88+/* End PBXFileReference section */
89+
90+/* Begin PBXFrameworksBuildPhase section */
91+ 8D15AC330486D014006FF6A4 /* Frameworks */ = {
92+ isa = PBXFrameworksBuildPhase;
93+ buildActionMask = 2147483647;
94+ files = (
95+ 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */,
96+ );
97+ runOnlyForDeploymentPostprocessing = 0;
98+ };
99+/* End PBXFrameworksBuildPhase section */
100+
101+/* Begin PBXGroup section */
102+ 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = {
103+ isa = PBXGroup;
104+ children = (
105+ 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */,
106+ );
107+ name = "Linked Frameworks";
108+ sourceTree = "<group>";
109+ };
110+ 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = {
111+ isa = PBXGroup;
112+ children = (
113+ 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */,
114+ 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */,
115+ 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */,
116+ );
117+ name = "Other Frameworks";
118+ sourceTree = "<group>";
119+ };
120+ 19C28FB0FE9D524F11CA2CBB /* Products */ = {
121+ isa = PBXGroup;
122+ children = (
123+ 8D15AC370486D014006FF6A4 /* BSTRAEditor.app */,
124+ );
125+ name = Products;
126+ sourceTree = "<group>";
127+ };
128+ 2A37F4AAFDCFA73011CA2CEA /* BSTRAEditor */ = {
129+ isa = PBXGroup;
130+ children = (
131+ F479A6090D860E1200A414C2 /* Extension */,
132+ F479A5EB0D860B5200A414C2 /* External Classes */,
133+ 2A37F4ABFDCFA73011CA2CEA /* Classes */,
134+ 2A37F4AFFDCFA73011CA2CEA /* Other Sources */,
135+ 2A37F4B8FDCFA73011CA2CEA /* Resources */,
136+ 2A37F4C3FDCFA73011CA2CEA /* Frameworks */,
137+ 19C28FB0FE9D524F11CA2CBB /* Products */,
138+ );
139+ name = BSTRAEditor;
140+ sourceTree = "<group>";
141+ };
142+ 2A37F4ABFDCFA73011CA2CEA /* Classes */ = {
143+ isa = PBXGroup;
144+ children = (
145+ F479A6010D860DBB00A414C2 /* BSCSTitleRulerImitation.h */,
146+ F479A6020D860DBB00A414C2 /* BSCSTitleRulerImitation.m */,
147+ 2A37F4AEFDCFA73011CA2CEA /* BSTRADocument.h */,
148+ 2A37F4ACFDCFA73011CA2CEA /* BSTRADocument.m */,
149+ );
150+ name = Classes;
151+ sourceTree = "<group>";
152+ };
153+ 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = {
154+ isa = PBXGroup;
155+ children = (
156+ 32DBCF750370BD2300C91783 /* BSTRAEditor_Prefix.pch */,
157+ 2A37F4B0FDCFA73011CA2CEA /* main.m */,
158+ );
159+ name = "Other Sources";
160+ sourceTree = "<group>";
161+ };
162+ 2A37F4B8FDCFA73011CA2CEA /* Resources */ = {
163+ isa = PBXGroup;
164+ children = (
165+ F434415E0D86B8C900F9416E /* Makefile */,
166+ F434415C0D86B8AC00F9416E /* Localizable.strings.sed */,
167+ F434415A0D86B89D00F9416E /* Makefile */,
168+ F479A91E0D8654E300A414C2 /* BSTRAEditor.icns */,
169+ F479A7A50D861C1900A414C2 /* BSTitleRulerAppearance.plist */,
170+ 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */,
171+ 2A37F4B4FDCFA73011CA2CEA /* BSTRADocument.nib */,
172+ 8D15AC360486D014006FF6A4 /* Info.plist */,
173+ 089C165FFE840EACC02AAC07 /* InfoPlist.strings */,
174+ F479A8220D86302E00A414C2 /* Localizable.strings */,
175+ );
176+ name = Resources;
177+ sourceTree = "<group>";
178+ };
179+ 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = {
180+ isa = PBXGroup;
181+ children = (
182+ 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */,
183+ 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */,
184+ );
185+ name = Frameworks;
186+ sourceTree = "<group>";
187+ };
188+ F479A5EB0D860B5200A414C2 /* External Classes */ = {
189+ isa = PBXGroup;
190+ children = (
191+ F479A5FB0D860D7C00A414C2 /* BSTitleRulerAppearance.h */,
192+ F479A5FC0D860D7C00A414C2 /* BSTitleRulerAppearance.m */,
193+ F479A5F00D860C6C00A414C2 /* NSBezierPath_AMShading.h */,
194+ F479A5EF0D860C6C00A414C2 /* NSBezierPath_AMShading.m */,
195+ F479A5EC0D860C4C00A414C2 /* BSTitleRulerView.h */,
196+ F479A5ED0D860C4C00A414C2 /* BSTitleRulerView.m */,
197+ );
198+ name = "External Classes";
199+ sourceTree = "<group>";
200+ };
201+ F479A6090D860E1200A414C2 /* Extension */ = {
202+ isa = PBXGroup;
203+ children = (
204+ F479A6060D860E0C00A414C2 /* NSWorkspace-Extensions.h */,
205+ F479A6070D860E0C00A414C2 /* NSWorkspace-Extensions.m */,
206+ F479A76F0D861A8300A414C2 /* NSAppleEventDescriptor-Extensions.h */,
207+ F479A7700D861A8300A414C2 /* NSAppleEventDescriptor-Extensions.m */,
208+ );
209+ name = Extension;
210+ sourceTree = "<group>";
211+ };
212+/* End PBXGroup section */
213+
214+/* Begin PBXNativeTarget section */
215+ 8D15AC270486D014006FF6A4 /* BSTRAEditor */ = {
216+ isa = PBXNativeTarget;
217+ buildConfigurationList = C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "BSTRAEditor" */;
218+ buildPhases = (
219+ 8D15AC2B0486D014006FF6A4 /* Resources */,
220+ 8D15AC300486D014006FF6A4 /* Sources */,
221+ 8D15AC330486D014006FF6A4 /* Frameworks */,
222+ );
223+ buildRules = (
224+ );
225+ dependencies = (
226+ F43441800D86C94100F9416E /* PBXTargetDependency */,
227+ );
228+ name = BSTRAEditor;
229+ productInstallPath = "$(HOME)/Applications";
230+ productName = BSTRAEditor;
231+ productReference = 8D15AC370486D014006FF6A4 /* BSTRAEditor.app */;
232+ productType = "com.apple.product-type.application";
233+ };
234+/* End PBXNativeTarget section */
235+
236+/* Begin PBXProject section */
237+ 2A37F4A9FDCFA73011CA2CEA /* Project object */ = {
238+ isa = PBXProject;
239+ buildConfigurationList = C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "BSTRAEditor" */;
240+ compatibilityVersion = "Xcode 3.0";
241+ hasScannedForEncodings = 1;
242+ knownRegions = (
243+ English,
244+ Japanese,
245+ French,
246+ German,
247+ "",
248+ );
249+ mainGroup = 2A37F4AAFDCFA73011CA2CEA /* BSTRAEditor */;
250+ projectDirPath = "";
251+ projectRoot = "";
252+ targets = (
253+ 8D15AC270486D014006FF6A4 /* BSTRAEditor */,
254+ F43441780D86C91B00F9416E /* MakeLocalize */,
255+ );
256+ };
257+/* End PBXProject section */
258+
259+/* Begin PBXResourcesBuildPhase section */
260+ 8D15AC2B0486D014006FF6A4 /* Resources */ = {
261+ isa = PBXResourcesBuildPhase;
262+ buildActionMask = 2147483647;
263+ files = (
264+ 8D15AC2D0486D014006FF6A4 /* MainMenu.nib in Resources */,
265+ 8D15AC2E0486D014006FF6A4 /* BSTRADocument.nib in Resources */,
266+ 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */,
267+ F479A7A60D861C1900A414C2 /* BSTitleRulerAppearance.plist in Resources */,
268+ F479A8230D86302E00A414C2 /* Localizable.strings in Resources */,
269+ F479A91F0D8654E300A414C2 /* BSTRAEditor.icns in Resources */,
270+ );
271+ runOnlyForDeploymentPostprocessing = 0;
272+ };
273+/* End PBXResourcesBuildPhase section */
274+
275+/* Begin PBXShellScriptBuildPhase section */
276+ F43441770D86C91B00F9416E /* ShellScript */ = {
277+ isa = PBXShellScriptBuildPhase;
278+ buildActionMask = 2147483647;
279+ files = (
280+ );
281+ inputPaths = (
282+ );
283+ outputPaths = (
284+ );
285+ runOnlyForDeploymentPostprocessing = 0;
286+ shellPath = /bin/sh;
287+ shellScript = "# shell script goes here\nmake Localizable";
288+ };
289+/* End PBXShellScriptBuildPhase section */
290+
291+/* Begin PBXSourcesBuildPhase section */
292+ 8D15AC300486D014006FF6A4 /* Sources */ = {
293+ isa = PBXSourcesBuildPhase;
294+ buildActionMask = 2147483647;
295+ files = (
296+ 8D15AC310486D014006FF6A4 /* BSTRADocument.m in Sources */,
297+ 8D15AC320486D014006FF6A4 /* main.m in Sources */,
298+ F479A5F10D860C6C00A414C2 /* NSBezierPath_AMShading.m in Sources */,
299+ F479A5FD0D860D7C00A414C2 /* BSTitleRulerAppearance.m in Sources */,
300+ F479A6030D860DBB00A414C2 /* BSCSTitleRulerImitation.m in Sources */,
301+ F479A6080D860E0C00A414C2 /* NSWorkspace-Extensions.m in Sources */,
302+ F479A7710D861A8300A414C2 /* NSAppleEventDescriptor-Extensions.m in Sources */,
303+ );
304+ runOnlyForDeploymentPostprocessing = 0;
305+ };
306+/* End PBXSourcesBuildPhase section */
307+
308+/* Begin PBXTargetDependency section */
309+ F43441800D86C94100F9416E /* PBXTargetDependency */ = {
310+ isa = PBXTargetDependency;
311+ target = F43441780D86C91B00F9416E /* MakeLocalize */;
312+ targetProxy = F434417F0D86C94100F9416E /* PBXContainerItemProxy */;
313+ };
314+/* End PBXTargetDependency section */
315+
316+/* Begin PBXVariantGroup section */
317+ 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = {
318+ isa = PBXVariantGroup;
319+ children = (
320+ 089C1660FE840EACC02AAC07 /* English */,
321+ F479A92C0D8655EE00A414C2 /* Japanese */,
322+ );
323+ name = InfoPlist.strings;
324+ sourceTree = "<group>";
325+ };
326+ 2A37F4B4FDCFA73011CA2CEA /* BSTRADocument.nib */ = {
327+ isa = PBXVariantGroup;
328+ children = (
329+ 2A37F4B5FDCFA73011CA2CEA /* English */,
330+ F479A9520D8665B400A414C2 /* Japanese */,
331+ );
332+ name = BSTRADocument.nib;
333+ sourceTree = "<group>";
334+ };
335+ 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */ = {
336+ isa = PBXVariantGroup;
337+ children = (
338+ 2A37F4B7FDCFA73011CA2CEA /* English */,
339+ F479A94A0D865A9000A414C2 /* Japanese */,
340+ );
341+ name = MainMenu.nib;
342+ sourceTree = "<group>";
343+ };
344+ F434415A0D86B89D00F9416E /* Makefile */ = {
345+ isa = PBXVariantGroup;
346+ children = (
347+ F434415B0D86B89D00F9416E /* English */,
348+ F43441610D86B96500F9416E /* Japanese */,
349+ );
350+ name = Makefile;
351+ sourceTree = "<group>";
352+ };
353+ F434415C0D86B8AC00F9416E /* Localizable.strings.sed */ = {
354+ isa = PBXVariantGroup;
355+ children = (
356+ F434415D0D86B8AC00F9416E /* English */,
357+ F43441710D86C85900F9416E /* Japanese */,
358+ );
359+ name = Localizable.strings.sed;
360+ sourceTree = "<group>";
361+ };
362+ F479A8220D86302E00A414C2 /* Localizable.strings */ = {
363+ isa = PBXVariantGroup;
364+ children = (
365+ F479A8160D862FA100A414C2 /* English */,
366+ F479A8240D86303600A414C2 /* Japanese */,
367+ );
368+ name = Localizable.strings;
369+ sourceTree = "<group>";
370+ };
371+/* End PBXVariantGroup section */
372+
373+/* Begin XCBuildConfiguration section */
374+ C05733C808A9546B00998B17 /* Debug */ = {
375+ isa = XCBuildConfiguration;
376+ buildSettings = {
377+ COPY_PHASE_STRIP = NO;
378+ GCC_DYNAMIC_NO_PIC = NO;
379+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
380+ GCC_MODEL_TUNING = G4;
381+ GCC_OPTIMIZATION_LEVEL = 0;
382+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
383+ GCC_PREFIX_HEADER = BSTRAEditor_Prefix.pch;
384+ INFOPLIST_FILE = Info.plist;
385+ INSTALL_PATH = "$(HOME)/Applications";
386+ MACOSX_DEPLOYMENT_TARGET = 10.4;
387+ "MACOSX_DEPLOYMENT_TARGET[arch=ppc]" = 10.3;
388+ PRODUCT_NAME = BSTRAEditor;
389+ WRAPPER_EXTENSION = app;
390+ ZERO_LINK = YES;
391+ };
392+ name = Debug;
393+ };
394+ C05733C908A9546B00998B17 /* Release */ = {
395+ isa = XCBuildConfiguration;
396+ buildSettings = {
397+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
398+ GCC_MODEL_TUNING = G4;
399+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
400+ GCC_PREFIX_HEADER = BSTRAEditor_Prefix.pch;
401+ INFOPLIST_FILE = Info.plist;
402+ INSTALL_PATH = "$(HOME)/Applications";
403+ MACOSX_DEPLOYMENT_TARGET = 10.4;
404+ "MACOSX_DEPLOYMENT_TARGET[arch=ppc]" = 10.3;
405+ PRODUCT_NAME = BSTRAEditor;
406+ WRAPPER_EXTENSION = app;
407+ };
408+ name = Release;
409+ };
410+ C05733CC08A9546B00998B17 /* Debug */ = {
411+ isa = XCBuildConfiguration;
412+ buildSettings = {
413+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
414+ GCC_WARN_UNUSED_VARIABLE = YES;
415+ PREBINDING = NO;
416+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
417+ "SDKROOT[arch=ppc]" = /Developer/SDKs/MacOSX10.3.9.sdk;
418+ };
419+ name = Debug;
420+ };
421+ C05733CD08A9546B00998B17 /* Release */ = {
422+ isa = XCBuildConfiguration;
423+ buildSettings = {
424+ ARCHS = (
425+ ppc,
426+ i386,
427+ );
428+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
429+ GCC_WARN_UNUSED_VARIABLE = YES;
430+ PREBINDING = NO;
431+ SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
432+ "SDKROOT[arch=ppc]" = /Developer/SDKs/MacOSX10.3.9.sdk;
433+ };
434+ name = Release;
435+ };
436+ F43441790D86C91C00F9416E /* Debug */ = {
437+ isa = XCBuildConfiguration;
438+ buildSettings = {
439+ COPY_PHASE_STRIP = NO;
440+ GCC_DYNAMIC_NO_PIC = NO;
441+ GCC_OPTIMIZATION_LEVEL = 0;
442+ PRODUCT_NAME = MakeLocalize;
443+ };
444+ name = Debug;
445+ };
446+ F434417A0D86C91C00F9416E /* Release */ = {
447+ isa = XCBuildConfiguration;
448+ buildSettings = {
449+ COPY_PHASE_STRIP = YES;
450+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
451+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
452+ PRODUCT_NAME = MakeLocalize;
453+ ZERO_LINK = NO;
454+ };
455+ name = Release;
456+ };
457+/* End XCBuildConfiguration section */
458+
459+/* Begin XCConfigurationList section */
460+ C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "BSTRAEditor" */ = {
461+ isa = XCConfigurationList;
462+ buildConfigurations = (
463+ C05733C808A9546B00998B17 /* Debug */,
464+ C05733C908A9546B00998B17 /* Release */,
465+ );
466+ defaultConfigurationIsVisible = 0;
467+ defaultConfigurationName = Release;
468+ };
469+ C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "BSTRAEditor" */ = {
470+ isa = XCConfigurationList;
471+ buildConfigurations = (
472+ C05733CC08A9546B00998B17 /* Debug */,
473+ C05733CD08A9546B00998B17 /* Release */,
474+ );
475+ defaultConfigurationIsVisible = 0;
476+ defaultConfigurationName = Release;
477+ };
478+ F434417E0D86C93200F9416E /* Build configuration list for PBXAggregateTarget "MakeLocalize" */ = {
479+ isa = XCConfigurationList;
480+ buildConfigurations = (
481+ F43441790D86C91C00F9416E /* Debug */,
482+ F434417A0D86C91C00F9416E /* Release */,
483+ );
484+ defaultConfigurationIsVisible = 0;
485+ defaultConfigurationName = Release;
486+ };
487+/* End XCConfigurationList section */
488+ };
489+ rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */;
490+}
--- /dev/null
+++ b/BSTRAEditor_Prefix.pch
@@ -0,0 +1,7 @@
1+//
2+// Prefix header for all source files of the 'BSTRAEditor' target in the 'BSTRAEditor' project
3+//
4+
5+#ifdef __OBJC__
6+ #import <Cocoa/Cocoa.h>
7+#endif
--- /dev/null
+++ b/BSTitleRulerAppearance.h
@@ -0,0 +1,56 @@
1+//
2+// BSTitleRulerAppearance.h
3+// SGAppKit (BathyScaphe)
4+//
5+// Created by Tsutomu Sawada on 07/08/25.
6+// Copyright 2007-2008 BathyScaphe Project. All rights reserved.
7+// encoding="UTF-8"
8+//
9+
10+#import <Cocoa/Cocoa.h>
11+
12+
13+@interface BSTitleRulerAppearance : NSObject<NSCoding> {
14+ NSArray *m_activeBlueColors;
15+ NSArray *m_activeGraphiteColors;
16+ NSArray *m_inactiveColors;
17+
18+ NSColor *m_infoBgColor;
19+ NSColor *m_infoTextColor;
20+ NSColor *m_textColor;
21+
22+ BOOL m_drawsCarvedText;
23+}
24+
25+- (NSArray *)activeBlueColors;
26+- (void)setActiveBlueColors:(NSArray *)colorsArray;
27+- (NSArray *)activeGraphiteColors;
28+- (void)setActiveGraphiteColors:(NSArray *)colorsArray;
29+- (NSArray *)inactiveColors;
30+- (void)setInactiveColors:(NSArray *)colorsArray;
31+
32+#pragma mark -
33+- (NSColor *)activeBlueStartColor;
34+- (void)setActiveBlueStartColor:(NSColor *)color;
35+- (NSColor *)activeBlueEndColor;
36+- (void)setActiveBlueEndColor:(NSColor *)color;
37+- (NSColor *)activeGraphiteStartColor;
38+- (void)setActiveGraphiteStartColor:(NSColor *)color;
39+- (NSColor *)activeGraphiteEndColor;
40+- (void)setActiveGraphiteEndColor:(NSColor *)color;
41+- (NSColor *)inactiveStartColor;
42+- (void)setInactiveStartColor:(NSColor *)color;
43+- (NSColor *)inactiveEndColor;
44+- (void)setInactiveEndColor:(NSColor *)color;
45+
46+#pragma mark -
47+- (NSColor *)infoColor;
48+- (void)setInfoColor:(NSColor *)color;
49+- (NSColor *)infoBackgroundColor;
50+- (void)setInfoBackgroundColor:(NSColor *)color;
51+- (NSColor *)textColor;
52+- (void)setTextColor:(NSColor *)color;
53+
54+- (BOOL)drawsCarvedText;
55+- (void)setDrawsCarvedText:(BOOL)flag;
56+@end
--- /dev/null
+++ b/BSTitleRulerAppearance.m
@@ -0,0 +1,235 @@
1+//
2+// BSTitleRulerAppearance.m
3+// SGAppKit (BathyScaphe)
4+//
5+// Created by Tsutomu Sawada on 07/08/25.
6+// Copyright 2007-2008 BathyScaphe Project. All rights reserved.
7+// encoding="UTF-8"
8+//
9+
10+#import "BSTitleRulerAppearance.h"
11+
12+
13+@implementation BSTitleRulerAppearance
14+- (void)dealloc
15+{
16+ [self setTextColor:nil];
17+ [self setInfoColor:nil];
18+ [self setInfoBackgroundColor:nil];
19+
20+ [self setInactiveColors:nil];
21+ [self setActiveGraphiteColors:nil];
22+ [self setActiveBlueColors:nil];
23+
24+ [super dealloc];
25+}
26+
27+- (NSArray *)activeBlueColors
28+{
29+ return m_activeBlueColors;
30+}
31+
32+- (void)setActiveBlueColors:(NSArray *)colorsArray
33+{
34+ [colorsArray retain];
35+ [m_activeBlueColors release];
36+ m_activeBlueColors = colorsArray;
37+}
38+
39+- (NSArray *)activeGraphiteColors
40+{
41+ return m_activeGraphiteColors;
42+}
43+
44+- (void)setActiveGraphiteColors:(NSArray *)colorsArray
45+{
46+ [colorsArray retain];
47+ [m_activeGraphiteColors release];
48+ m_activeGraphiteColors = colorsArray;
49+}
50+
51+- (NSArray *)inactiveColors
52+{
53+ return m_inactiveColors;
54+}
55+
56+- (void)setInactiveColors:(NSArray *)colorsArray
57+{
58+ [colorsArray retain];
59+ [m_inactiveColors release];
60+ m_inactiveColors = colorsArray;
61+}
62+
63+#pragma mark -
64+- (NSColor *)activeBlueStartColor
65+{
66+ return [[self activeBlueColors] objectAtIndex:0];
67+}
68+
69+- (void)setActiveBlueStartColor:(NSColor *)color
70+{
71+ NSAssert(color, @"color is nil!");
72+ if(color == [[self activeBlueColors] objectAtIndex:0]) return;
73+
74+ NSColor *anotherColor = [[self activeBlueColors] objectAtIndex:1];
75+ NSArray *newArray = [NSArray arrayWithObjects:color, anotherColor, nil];
76+ [self setActiveBlueColors:newArray];
77+}
78+
79+- (NSColor *)activeBlueEndColor
80+{
81+ return [[self activeBlueColors] objectAtIndex:1];
82+}
83+
84+- (void)setActiveBlueEndColor:(NSColor *)color
85+{
86+ NSAssert(color, @"color is nil!");
87+ if(color == [[self activeBlueColors] objectAtIndex:1]) return;
88+
89+ NSColor *anotherColor = [[self activeBlueColors] objectAtIndex:0];
90+ NSArray *newArray = [NSArray arrayWithObjects:anotherColor, color, nil];
91+ [self setActiveBlueColors:newArray];
92+}
93+
94+- (NSColor *)activeGraphiteStartColor
95+{
96+ return [[self activeGraphiteColors] objectAtIndex:0];
97+}
98+
99+- (void)setActiveGraphiteStartColor:(NSColor *)color
100+{
101+ NSAssert(color, @"color is nil!");
102+ if(color == [[self activeGraphiteColors] objectAtIndex:0]) return;
103+
104+ NSColor *anotherColor = [[self activeGraphiteColors] objectAtIndex:1];
105+ NSArray *newArray = [NSArray arrayWithObjects:color, anotherColor, nil];
106+ [self setActiveGraphiteColors:newArray];
107+}
108+
109+- (NSColor *)activeGraphiteEndColor
110+{
111+ return [[self activeGraphiteColors] objectAtIndex:1];
112+}
113+
114+- (void)setActiveGraphiteEndColor:(NSColor *)color
115+{
116+ NSAssert(color, @"color is nil!");
117+ if(color == [[self activeGraphiteColors] objectAtIndex:1]) return;
118+
119+ NSColor *anotherColor = [[self activeGraphiteColors] objectAtIndex:0];
120+ NSArray *newArray = [NSArray arrayWithObjects:anotherColor, color, nil];
121+ [self setActiveGraphiteColors:newArray];
122+}
123+
124+- (NSColor *)inactiveStartColor
125+{
126+ return [[self inactiveColors] objectAtIndex:0];
127+}
128+
129+- (void)setInactiveStartColor:(NSColor *)color
130+{
131+ NSAssert(color, @"color is nil!");
132+ if(color == [[self inactiveColors] objectAtIndex:0]) return;
133+
134+ NSColor *anotherColor = [[self inactiveColors] objectAtIndex:1];
135+ NSArray *newArray = [NSArray arrayWithObjects:color, anotherColor, nil];
136+ [self setInactiveColors:newArray];
137+}
138+
139+- (NSColor *)inactiveEndColor
140+{
141+ return [[self inactiveColors] objectAtIndex:1];
142+}
143+
144+- (void)setInactiveEndColor:(NSColor *)color
145+{
146+ NSAssert(color, @"color is nil!");
147+ if(color == [[self inactiveColors] objectAtIndex:1]) return;
148+
149+ NSColor *anotherColor = [[self inactiveColors] objectAtIndex:0];
150+ NSArray *newArray = [NSArray arrayWithObjects:anotherColor, color, nil];
151+ [self setInactiveColors:newArray];
152+}
153+
154+#pragma mark -
155+- (NSColor *)infoColor
156+{
157+ return m_infoTextColor;
158+}
159+
160+- (void)setInfoColor:(NSColor *)color
161+{
162+ if(color == m_infoTextColor) return;
163+
164+ [color retain];
165+ [m_infoTextColor release];
166+ m_infoTextColor = color;
167+}
168+
169+- (NSColor *)infoBackgroundColor
170+{
171+ return m_infoBgColor;
172+}
173+
174+- (void)setInfoBackgroundColor:(NSColor *)color
175+{
176+ if(color == m_infoBgColor) return;
177+
178+ [color retain];
179+ [m_infoBgColor release];
180+ m_infoBgColor = color;
181+}
182+
183+- (NSColor *)textColor
184+{
185+ return m_textColor;
186+}
187+
188+- (void)setTextColor:(NSColor *)color
189+{
190+ if(color == m_textColor) return;
191+
192+ [color retain];
193+ [m_textColor release];
194+ m_textColor = color;
195+}
196+
197+- (BOOL)drawsCarvedText
198+{
199+ return m_drawsCarvedText;
200+}
201+
202+- (void)setDrawsCarvedText:(BOOL)flag
203+{
204+ m_drawsCarvedText = flag;
205+}
206+
207+- (id)initWithCoder:(NSCoder *)coder
208+{
209+ if (self = [super init]) {
210+ if ([coder allowsKeyedCoding]) {
211+ [self setActiveBlueColors:[coder decodeObjectForKey:@"blue"]];
212+ [self setActiveGraphiteColors:[coder decodeObjectForKey:@"graphite"]];
213+ [self setInactiveColors:[coder decodeObjectForKey:@"inactive"]];
214+ [self setInfoColor:[coder decodeObjectForKey:@"info"]];
215+ [self setInfoBackgroundColor:[coder decodeObjectForKey:@"info_bg"]];
216+ [self setTextColor:[coder decodeObjectForKey:@"text"]];
217+ [self setDrawsCarvedText:[coder decodeBoolForKey:@"carved"]];
218+ }
219+ }
220+ return self;
221+}
222+
223+- (void)encodeWithCoder:(NSCoder *)coder
224+{
225+ if ([coder allowsKeyedCoding]) {
226+ [coder encodeBool:[self drawsCarvedText] forKey:@"carved"];
227+ [coder encodeObject:[self textColor] forKey:@"text"];
228+ [coder encodeObject:[self infoBackgroundColor] forKey:@"info_bg"];
229+ [coder encodeObject:[self infoColor] forKey:@"info"];
230+ [coder encodeObject:[self inactiveColors] forKey: @"inactive"];
231+ [coder encodeObject:[self activeGraphiteColors] forKey: @"graphite"];
232+ [coder encodeObject:[self activeBlueColors] forKey: @"blue"];
233+ }
234+}
235+@end
Binary files /dev/null and b/BSTitleRulerAppearance.plist differ
--- /dev/null
+++ b/BSTitleRulerView.h
@@ -0,0 +1,50 @@
1+//
2+// BSTitleRulerView.h
3+// SGAppKit (BathyScaphe)
4+//
5+// Created by Tsutomu Sawada on 05/09/22.
6+// Copyright 2005-2007 BathyScaphe Project. All rights reserved.
7+// encoding="UTF-8"
8+//
9+
10+#import <Cocoa/Cocoa.h>
11+
12+@class BSTitleRulerAppearance;
13+
14+typedef enum _BSTitleRulerModeType {
15+ BSTitleRulerShowTitleOnlyMode = 0, // スレッドタイトルバーのみ
16+ BSTitleRulerShowInfoOnlyMode = 1, // 「dat 落ちと判定されました。」のみ
17+ BSTitleRulerShowTitleAndInfoMode = 2, // スレッドタイトルバー、その下に「dat 落ちと判定されました。」
18+} BSTitleRulerModeType;
19+
20+@interface BSTitleRulerView : NSRulerView {
21+ @private
22+ BSTitleRulerAppearance *m_appearance;
23+
24+ NSString *m_titleStr;
25+ NSString *m_infoStr;
26+ NSString *m_pathStr;
27+
28+ BSTitleRulerModeType _currentMode;
29+}
30+
31+// Designated initializer. Available in Twincam Angel/SGAppKit 1.7.1 and later.
32+- (id)initWithScrollView:(NSScrollView *)aScrollView appearance:(BSTitleRulerAppearance *)appearance;
33+
34+- (BSTitleRulerAppearance *)appearance;
35+- (void)setAppearance:(BSTitleRulerAppearance *)appearance;
36+
37+- (NSString *)titleStr;
38+- (void)setTitleStr:(NSString *)aString;
39+- (void)setTitleStrWithoutNeedingDisplay:(NSString *)aString;
40+
41+- (NSString *)infoStr;
42+- (void)setInfoStr:(NSString *)aString;
43+- (void)setInfoStrWithoutNeedingDisplay:(NSString *)aString;
44+
45+- (NSString *)pathStr;
46+- (void)setPathStr:(NSString *)aString;
47+
48+- (BSTitleRulerModeType)currentMode;
49+- (void)setCurrentMode:(BSTitleRulerModeType)newType;
50+@end
--- /dev/null
+++ b/BSTitleRulerView.m
@@ -0,0 +1,350 @@
1+//
2+// BSTitleRulerView.m
3+// SGAppKit (BathyScaphe)
4+//
5+// Created by Tsutomu Sawada on 05/09/22.
6+// Copyright 2005-2007 BathyScaphe Project. All rights reserved.
7+// encoding="UTF-8"
8+//
9+
10+#import "BSTitleRulerView.h"
11+#import <SGAppKit/NSWorkspace-SGExtensions.h>
12+#import <SGAppKit/BSTitleRulerAppearance.h>
13+#import <SGAppKit/NSBezierPath_AMShading.h>
14+
15+#define THICKNESS_FOR_TITLE 22.0
16+#define THICKNESS_FOR_INFO 36.0
17+#define TITLE_FONT_SIZE 12.0
18+#define INFO_FONT_SIZE 13.0
19+
20+@implementation BSTitleRulerView
21+
22+#pragma mark Accessors
23+- (BSTitleRulerAppearance *)appearance
24+{
25+ return m_appearance;
26+}
27+
28+- (void)setAppearance:(BSTitleRulerAppearance *)appearance
29+{
30+ [appearance retain];
31+ [m_appearance release];
32+ m_appearance = appearance;
33+}
34+
35+- (NSString *)titleStr
36+{
37+ return m_titleStr;
38+}
39+
40+- (void)setTitleStr:(NSString *)aString
41+{
42+ [self setTitleStrWithoutNeedingDisplay:aString];
43+ [self setNeedsDisplay:YES];
44+}
45+
46+- (void)setTitleStrWithoutNeedingDisplay:(NSString *)aString
47+{
48+ [aString retain];
49+ [m_titleStr release];
50+ m_titleStr = aString;
51+}
52+
53+- (NSString *)infoStr
54+{
55+ return m_infoStr;
56+}
57+
58+- (void)setInfoStr:(NSString *)aString
59+{
60+ [self setInfoStrWithoutNeedingDisplay:aString];
61+ [self setNeedsDisplay:YES];
62+}
63+
64+- (void)setInfoStrWithoutNeedingDisplay:(NSString *)aString
65+{
66+ [aString retain];
67+ [m_infoStr release];
68+ m_infoStr = aString;
69+}
70+
71+- (NSString *)pathStr
72+{
73+ return m_pathStr;
74+}
75+
76+- (void)setPathStr:(NSString *)aString
77+{
78+ [aString retain];
79+ [m_pathStr release];
80+ m_pathStr = aString;
81+}
82+
83+- (BSTitleRulerModeType)currentMode
84+{
85+ return _currentMode;
86+}
87+
88+- (void)setCurrentMode:(BSTitleRulerModeType)newType
89+{
90+ float newThickness;
91+ _currentMode = newType;
92+
93+ switch(newType) {
94+ case BSTitleRulerShowTitleOnlyMode:
95+ newThickness = THICKNESS_FOR_TITLE;
96+ break;
97+ case BSTitleRulerShowInfoOnlyMode:
98+ newThickness = THICKNESS_FOR_INFO;
99+ break;
100+ case BSTitleRulerShowTitleAndInfoMode:
101+ newThickness = (THICKNESS_FOR_TITLE + THICKNESS_FOR_INFO);
102+ break;
103+ default:
104+ newThickness = THICKNESS_FOR_TITLE;
105+ break;
106+ }
107+
108+ [self setRuleThickness:newThickness];
109+}
110+
111+#pragma mark Private Utilities
112+- (NSDictionary *)attrTemplateForTitle
113+{
114+ static NSDictionary *tmp = nil;
115+ if (!tmp) {
116+ NSColor *color_;
117+
118+ color_ = [[self appearance] textColor];
119+
120+ tmp = [[NSDictionary alloc] initWithObjectsAndKeys:
121+ [NSFont boldSystemFontOfSize:TITLE_FONT_SIZE], NSFontAttributeName,
122+ color_, NSForegroundColorAttributeName,
123+ nil];
124+ }
125+ return tmp;
126+}
127+
128+- (NSDictionary *)attrTemplateForInfo
129+{
130+ static NSDictionary *tmp2 = nil;
131+ if (!tmp2) {
132+ NSColor *color_;
133+
134+ color_ = [[self appearance] infoColor];
135+
136+ tmp2 = [[NSDictionary alloc] initWithObjectsAndKeys:
137+ [NSFont systemFontOfSize:INFO_FONT_SIZE], NSFontAttributeName,
138+ color_, NSForegroundColorAttributeName,
139+ nil];
140+ }
141+ return tmp2;
142+}
143+
144+- (NSAttributedString *)titleForDrawing
145+{
146+ return [[[NSAttributedString alloc] initWithString:[self titleStr] attributes:[self attrTemplateForTitle]] autorelease];
147+}
148+
149+- (NSAttributedString *)infoForDrawing
150+{
151+ return [[[NSAttributedString alloc] initWithString:[self infoStr] attributes:[self attrTemplateForInfo]] autorelease];
152+}
153+
154+- (NSArray *)activeColors
155+{
156+ BSTitleRulerAppearance *appearance = [self appearance];
157+ return ([NSColor currentControlTint] == NSGraphiteControlTint) ? [appearance activeGraphiteColors] : [appearance activeBlueColors];
158+}
159+
160+#pragma mark Setup & Cleanup
161+- (id)initWithScrollView:(NSScrollView *)aScrollView appearance:(BSTitleRulerAppearance *)appearance
162+{
163+ if (self = [super initWithScrollView:aScrollView orientation:NSHorizontalRuler]) {
164+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
165+ // Original NSRulerView Properties
166+ [self setMarkers:nil];
167+ [self setReservedThicknessForMarkers:0.0];
168+
169+ // Notifications
170+ [nc addObserver:self
171+ selector:@selector(mainWinOrSystemColorsDidChange:)
172+ name:NSSystemColorsDidChangeNotification
173+ object:nil];
174+
175+ [nc addObserver:self
176+ selector:@selector(mainWinOrSystemColorsDidChange:)
177+ name:NSWindowDidBecomeMainNotification
178+ object:[self window]];
179+
180+ [nc addObserver:self
181+ selector:@selector(mainWinOrSystemColorsDidChange:)
182+ name:NSWindowDidResignMainNotification
183+ object:[self window]];
184+
185+ // BSTitleRulerView Properties
186+ [self setCurrentMode:BSTitleRulerShowTitleOnlyMode];
187+ [self setAppearance:appearance];
188+ }
189+ return self;
190+}
191+
192+- (void)dealloc
193+{
194+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
195+
196+ [nc removeObserver:self
197+ name:NSSystemColorsDidChangeNotification
198+ object:nil];
199+
200+ [nc removeObserver:self
201+ name:NSWindowDidBecomeMainNotification
202+ object:[self window]];
203+
204+ [nc removeObserver:self
205+ name:NSWindowDidResignMainNotification
206+ object:[self window]];
207+
208+ [m_titleStr release];
209+ [m_infoStr release];
210+ [m_pathStr release];
211+ [m_appearance release];
212+
213+ [super dealloc];
214+}
215+
216+#pragma mark Drawing
217+- (void)drawTitleBarInRect:(NSRect)aRect
218+{
219+ NSArray *colors_;
220+ NSColor *gradientStartColor, *gradientEndColor;
221+
222+ BSTitleRulerAppearance *appearance = [self appearance];
223+
224+ colors_ = [[self window] isMainWindow] ? [self activeColors] : [appearance inactiveColors];
225+
226+ gradientStartColor = [colors_ objectAtIndex:0];
227+ gradientEndColor = [colors_ objectAtIndex:1];
228+
229+ [[NSBezierPath bezierPathWithRect:aRect] linearGradientFillWithStartColor:gradientStartColor endColor:gradientEndColor];
230+
231+ if ([appearance drawsCarvedText]) {
232+ // このへん、暫定的
233+ NSMutableAttributedString *foo = [[self titleForDrawing] mutableCopy];
234+ NSRange range = NSMakeRange(0,[foo length]);
235+ [foo removeAttribute:NSForegroundColorAttributeName range:range];
236+ [foo addAttributes:[NSDictionary dictionaryWithObject:[NSColor grayColor] forKey:NSForegroundColorAttributeName] range:range];
237+ [foo drawInRect:NSInsetRect(aRect, 5.0, 3.0)];
238+ [foo release];
239+ }
240+
241+ [[self titleForDrawing] drawInRect:NSInsetRect(aRect, 5.0, 2.0)];
242+}
243+
244+- (BOOL)isOpaque
245+{
246+ return YES;
247+}
248+
249+- (void)drawInfoBarInRect:(NSRect)aRect
250+{
251+ NSRect iconRect;
252+ NSImage *icon_ = [[NSWorkspace sharedWorkspace] systemIconForType:kAlertNoteIcon];
253+ [icon_ setSize:NSMakeSize(32, 32)];
254+ [icon_ setFlipped:[self isFlipped]];
255+
256+ [[[self appearance] infoBackgroundColor] set];
257+ NSRectFill(aRect);
258+
259+ iconRect = NSMakeRect(NSMinX(aRect)+5.0, NSMinY(aRect)+2.0, 32, 32);
260+
261+ [icon_ drawInRect:iconRect fromRect:NSMakeRect(0,0,32,32) operation:NSCompositeSourceOver fraction:1.0];
262+
263+ aRect = NSInsetRect(aRect, 5.0, 7.0);
264+ aRect.origin.x += 36.0;
265+ [[self infoForDrawing] drawInRect:NSInsetRect(aRect, 5.0, 2.0)];
266+}
267+
268+- (void)drawRect:(NSRect)aRect
269+{
270+ switch ([self currentMode]) {
271+ case BSTitleRulerShowTitleOnlyMode:
272+ [self drawTitleBarInRect:aRect];
273+ break;
274+ case BSTitleRulerShowInfoOnlyMode:
275+ [self drawInfoBarInRect:aRect];
276+ break;
277+ case BSTitleRulerShowTitleAndInfoMode:
278+ {
279+ NSRect titleRect, infoRect;
280+ NSDivideRect(aRect, &infoRect, &titleRect, THICKNESS_FOR_INFO, NSMaxYEdge);
281+ [self drawTitleBarInRect:titleRect];
282+ [self drawInfoBarInRect:infoRect];
283+ }
284+ break;
285+ }
286+}
287+
288+#pragma mark Path Popup Menu Support
289+- (IBAction)revealPathComponent:(id)sender
290+{
291+ NSString *path = [sender representedObject];
292+ if (path) [[NSWorkspace sharedWorkspace] selectFile:path inFileViewerRootedAtPath:[path stringByDeletingLastPathComponent]];
293+}
294+
295+static NSMenu *createPathMenu(NSString *fullPath)
296+{
297+ NSFileManager *fm = [NSFileManager defaultManager];
298+ NSWorkspace *ws = [NSWorkspace sharedWorkspace];
299+ NSMenu *menu = [[NSMenu alloc] initWithTitle:@"Path"];
300+ NSMenuItem *menuItem;
301+ NSImage *img;
302+ NSSize size16 = NSMakeSize(16,16);
303+ SEL mySel = @selector(revealPathComponent:);
304+
305+ menuItem = [[NSMenuItem alloc] initWithTitle:[fm displayNameAtPath:fullPath] action:mySel keyEquivalent:@""];
306+ img = [ws iconForFile:fullPath];
307+ [img setSize:size16];
308+ [menuItem setImage:img];
309+ [menu addItem:menuItem];
310+ [menuItem release];
311+
312+ NSString *bar = fullPath;
313+ NSString *foo;
314+
315+ while (![bar isEqualToString:@"/"]) {
316+ foo = [bar stringByDeletingLastPathComponent];
317+ menuItem = [[NSMenuItem alloc] initWithTitle:[fm displayNameAtPath:foo] action:mySel keyEquivalent:@""];
318+ img = [ws iconForFile:foo];
319+ [img setSize:size16];
320+ [menuItem setRepresentedObject:bar];
321+ [menuItem setImage:img];
322+ [menu addItem:menuItem];
323+ [menuItem release];
324+ bar = foo;
325+ }
326+ return [menu autorelease];
327+}
328+
329+- (void)mouseDown:(NSEvent *)theEvent
330+{
331+ unsigned int flag = [theEvent modifierFlags];
332+ if ([self pathStr] && (flag & NSCommandKeyMask)) {
333+ [NSMenu popUpContextMenu:createPathMenu([self pathStr]) withEvent:theEvent forView:self];
334+ }
335+}
336+
337+- (NSMenu *)menuForEvent:(NSEvent *)theEvent
338+{
339+ if ([self pathStr]) {
340+ return createPathMenu([self pathStr]);
341+ }
342+ return [super menuForEvent:theEvent];
343+}
344+
345+#pragma mark Notifications
346+- (void)mainWinOrSystemColorsDidChange:(NSNotification *)theNotification
347+{
348+ [self setNeedsDisplay:YES];
349+}
350+@end
--- /dev/null
+++ b/English.lproj/BSTRADocument.nib/classes.nib
@@ -0,0 +1,43 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>IBClasses</key>
6+ <array>
7+ <dict>
8+ <key>ACTIONS</key>
9+ <dict>
10+ <key>saveToBSSupportFolder</key>
11+ <string>id</string>
12+ </dict>
13+ <key>CLASS</key>
14+ <string>BSTRADocument</string>
15+ <key>LANGUAGE</key>
16+ <string>ObjC</string>
17+ <key>OUTLETS</key>
18+ <dict>
19+ <key>blueActiveView</key>
20+ <string>BSCSTitleRulerImitation</string>
21+ <key>graphiteActiveView</key>
22+ <string>BSCSTitleRulerImitation</string>
23+ <key>inactiveView</key>
24+ <string>BSCSTitleRulerImitation</string>
25+ <key>infoView</key>
26+ <string>BSCSTitleRulerImitation</string>
27+ </dict>
28+ <key>SUPERCLASS</key>
29+ <string>NSDocument</string>
30+ </dict>
31+ <dict>
32+ <key>CLASS</key>
33+ <string>BSCSTitleRulerImitation</string>
34+ <key>LANGUAGE</key>
35+ <string>ObjC</string>
36+ <key>SUPERCLASS</key>
37+ <string>NSView</string>
38+ </dict>
39+ </array>
40+ <key>IBVersion</key>
41+ <string>1</string>
42+</dict>
43+</plist>
--- /dev/null
+++ b/English.lproj/BSTRADocument.nib/info.nib
@@ -0,0 +1,20 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>IBFramework Version</key>
6+ <string>629</string>
7+ <key>IBLastKnownRelativeProjectPath</key>
8+ <string>../../BSTRAEditor.xcodeproj</string>
9+ <key>IBOldestOS</key>
10+ <integer>5</integer>
11+ <key>IBOpenObjects</key>
12+ <array>
13+ <integer>6</integer>
14+ </array>
15+ <key>IBSystem Version</key>
16+ <string>9C31</string>
17+ <key>targetFramework</key>
18+ <string>IBCocoaFramework</string>
19+</dict>
20+</plist>
Binary files /dev/null and b/English.lproj/BSTRADocument.nib/keyedobjects.nib differ
--- /dev/null
+++ b/English.lproj/InfoPlist.strings
@@ -0,0 +1,12 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>CFBundleGetInfoString</key>
6+ <string>BSTRAEditor 1.0</string>
7+ <key>CFBundleName</key>
8+ <string>BSTREditor</string>
9+ <key>NSHumanReadableCopyright</key>
10+ <string>© Hori,Masaki, 2008</string>
11+</dict>
12+</plist>
Binary files /dev/null and b/English.lproj/Localizable.strings differ
--- /dev/null
+++ b/English.lproj/Localizable.strings.sed
@@ -0,0 +1,4 @@
1+s/"Message001";/"“%@” already exists. Do you want to replace it?";/
2+s/"Message002";/"A file or folder with the same name already exists. Replacing it will overwrite its current contents.";/
3+s/"Message005";/"“%@” can’t save file.";/
4+s/"Message006";/"“%@” can’t save file.";/
--- /dev/null
+++ b/English.lproj/MainMenu.nib/designable.nib
@@ -0,0 +1,1499 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.01">
3+ <data>
4+ <int key="IBDocument.SystemTarget">1050</int>
5+ <string key="IBDocument.SystemVersion">9C31</string>
6+ <string key="IBDocument.InterfaceBuilderVersion">629</string>
7+ <string key="IBDocument.AppKitVersion">949.26</string>
8+ <string key="IBDocument.HIToolboxVersion">352.00</string>
9+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
10+ <bool key="EncodedWithXMLCoder">YES</bool>
11+ <integer value="81"/>
12+ </object>
13+ <object class="NSArray" key="IBDocument.PluginDependencies">
14+ <bool key="EncodedWithXMLCoder">YES</bool>
15+ <string id="27138665">com.apple.InterfaceBuilderKit</string>
16+ <string id="449545859">com.apple.InterfaceBuilder.CocoaPlugin</string>
17+ </object>
18+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
19+ <bool key="EncodedWithXMLCoder">YES</bool>
20+ <object class="NSCustomObject" id="1021">
21+ <string key="NSClassName" id="1019991699">NSApplication</string>
22+ </object>
23+ <object class="NSCustomObject" id="1014">
24+ <string key="NSClassName" id="477722881">FirstResponder</string>
25+ </object>
26+ <object class="NSCustomObject" id="1050">
27+ <reference key="NSClassName" ref="1019991699"/>
28+ </object>
29+ <object class="NSMenu" id="649796088">
30+ <string key="NSTitle">AMainMenu</string>
31+ <object class="NSMutableArray" key="NSMenuItems">
32+ <bool key="EncodedWithXMLCoder">YES</bool>
33+ <object class="NSMenuItem" id="694149608">
34+ <reference key="NSMenu" ref="649796088"/>
35+ <string key="NSTitle" id="572409665">BSTRAEditor</string>
36+ <string key="NSKeyEquiv" id="1003"/>
37+ <int key="NSKeyEquivModMask">1048576</int>
38+ <int key="NSMnemonicLoc">2147483647</int>
39+ <object class="NSCustomResource" key="NSOnImage" id="718549873">
40+ <string key="NSClassName" id="392360222">NSImage</string>
41+ <string key="NSResourceName">NSMenuCheckmark</string>
42+ </object>
43+ <object class="NSCustomResource" key="NSMixedImage" id="521811616">
44+ <reference key="NSClassName" ref="392360222"/>
45+ <string key="NSResourceName">NSMenuMixedState</string>
46+ </object>
47+ <string key="NSAction">submenuAction:</string>
48+ <object class="NSMenu" key="NSSubmenu" id="110575045">
49+ <reference key="NSTitle" ref="572409665"/>
50+ <object class="NSMutableArray" key="NSMenuItems">
51+ <bool key="EncodedWithXMLCoder">YES</bool>
52+ <object class="NSMenuItem" id="238522557">
53+ <reference key="NSMenu" ref="110575045"/>
54+ <string key="NSTitle">About BSTRAEditor</string>
55+ <reference key="NSKeyEquiv" ref="1003"/>
56+ <int key="NSMnemonicLoc">2147483647</int>
57+ <reference key="NSOnImage" ref="718549873"/>
58+ <reference key="NSMixedImage" ref="521811616"/>
59+ </object>
60+ <object class="NSMenuItem" id="304266470">
61+ <reference key="NSMenu" ref="110575045"/>
62+ <bool key="NSIsDisabled">YES</bool>
63+ <bool key="NSIsSeparator">YES</bool>
64+ <reference key="NSTitle" ref="1003"/>
65+ <reference key="NSKeyEquiv" ref="1003"/>
66+ <int key="NSKeyEquivModMask">1048576</int>
67+ <int key="NSMnemonicLoc">2147483647</int>
68+ <reference key="NSOnImage" ref="718549873"/>
69+ <reference key="NSMixedImage" ref="521811616"/>
70+ </object>
71+ <object class="NSMenuItem" id="609285721">
72+ <reference key="NSMenu" ref="110575045"/>
73+ <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string>
74+ <string key="NSKeyEquiv">,</string>
75+ <int key="NSKeyEquivModMask">1048576</int>
76+ <int key="NSMnemonicLoc">2147483647</int>
77+ <reference key="NSOnImage" ref="718549873"/>
78+ <reference key="NSMixedImage" ref="521811616"/>
79+ </object>
80+ <object class="NSMenuItem" id="481834944">
81+ <reference key="NSMenu" ref="110575045"/>
82+ <bool key="NSIsDisabled">YES</bool>
83+ <bool key="NSIsSeparator">YES</bool>
84+ <reference key="NSTitle" ref="1003"/>
85+ <reference key="NSKeyEquiv" ref="1003"/>
86+ <int key="NSKeyEquivModMask">1048576</int>
87+ <int key="NSMnemonicLoc">2147483647</int>
88+ <reference key="NSOnImage" ref="718549873"/>
89+ <reference key="NSMixedImage" ref="521811616"/>
90+ </object>
91+ <object class="NSMenuItem" id="1046388886">
92+ <reference key="NSMenu" ref="110575045"/>
93+ <string key="NSTitle" id="820637461">Services</string>
94+ <reference key="NSKeyEquiv" ref="1003"/>
95+ <int key="NSKeyEquivModMask">1048576</int>
96+ <int key="NSMnemonicLoc">2147483647</int>
97+ <reference key="NSOnImage" ref="718549873"/>
98+ <reference key="NSMixedImage" ref="521811616"/>
99+ <string key="NSAction">submenuAction:</string>
100+ <object class="NSMenu" key="NSSubmenu" id="752062318">
101+ <reference key="NSTitle" ref="820637461"/>
102+ <object class="NSMutableArray" key="NSMenuItems">
103+ <bool key="EncodedWithXMLCoder">YES</bool>
104+ </object>
105+ <string key="NSName">_NSServicesMenu</string>
106+ </object>
107+ </object>
108+ <object class="NSMenuItem" id="646227648">
109+ <reference key="NSMenu" ref="110575045"/>
110+ <bool key="NSIsDisabled">YES</bool>
111+ <bool key="NSIsSeparator">YES</bool>
112+ <reference key="NSTitle" ref="1003"/>
113+ <reference key="NSKeyEquiv" ref="1003"/>
114+ <int key="NSKeyEquivModMask">1048576</int>
115+ <int key="NSMnemonicLoc">2147483647</int>
116+ <reference key="NSOnImage" ref="718549873"/>
117+ <reference key="NSMixedImage" ref="521811616"/>
118+ </object>
119+ <object class="NSMenuItem" id="755159360">
120+ <reference key="NSMenu" ref="110575045"/>
121+ <string key="NSTitle">Hide BSTRAEditor</string>
122+ <string key="NSKeyEquiv" id="457995140">h</string>
123+ <int key="NSKeyEquivModMask">1048576</int>
124+ <int key="NSMnemonicLoc">2147483647</int>
125+ <reference key="NSOnImage" ref="718549873"/>
126+ <reference key="NSMixedImage" ref="521811616"/>
127+ </object>
128+ <object class="NSMenuItem" id="342932134">
129+ <reference key="NSMenu" ref="110575045"/>
130+ <string key="NSTitle">Hide Others</string>
131+ <reference key="NSKeyEquiv" ref="457995140"/>
132+ <int key="NSKeyEquivModMask">1572864</int>
133+ <int key="NSMnemonicLoc">2147483647</int>
134+ <reference key="NSOnImage" ref="718549873"/>
135+ <reference key="NSMixedImage" ref="521811616"/>
136+ </object>
137+ <object class="NSMenuItem" id="908899353">
138+ <reference key="NSMenu" ref="110575045"/>
139+ <string key="NSTitle">Show All</string>
140+ <reference key="NSKeyEquiv" ref="1003"/>
141+ <int key="NSKeyEquivModMask">1048576</int>
142+ <int key="NSMnemonicLoc">2147483647</int>
143+ <reference key="NSOnImage" ref="718549873"/>
144+ <reference key="NSMixedImage" ref="521811616"/>
145+ </object>
146+ <object class="NSMenuItem" id="1056857174">
147+ <reference key="NSMenu" ref="110575045"/>
148+ <bool key="NSIsDisabled">YES</bool>
149+ <bool key="NSIsSeparator">YES</bool>
150+ <reference key="NSTitle" ref="1003"/>
151+ <reference key="NSKeyEquiv" ref="1003"/>
152+ <int key="NSKeyEquivModMask">1048576</int>
153+ <int key="NSMnemonicLoc">2147483647</int>
154+ <reference key="NSOnImage" ref="718549873"/>
155+ <reference key="NSMixedImage" ref="521811616"/>
156+ </object>
157+ <object class="NSMenuItem" id="632727374">
158+ <reference key="NSMenu" ref="110575045"/>
159+ <string key="NSTitle">Quit BSTRAEditor</string>
160+ <string key="NSKeyEquiv">q</string>
161+ <int key="NSKeyEquivModMask">1048576</int>
162+ <int key="NSMnemonicLoc">2147483647</int>
163+ <reference key="NSOnImage" ref="718549873"/>
164+ <reference key="NSMixedImage" ref="521811616"/>
165+ </object>
166+ </object>
167+ <string key="NSName">_NSAppleMenu</string>
168+ </object>
169+ </object>
170+ <object class="NSMenuItem" id="379814623">
171+ <reference key="NSMenu" ref="649796088"/>
172+ <string key="NSTitle" id="652289631">File</string>
173+ <reference key="NSKeyEquiv" ref="1003"/>
174+ <int key="NSKeyEquivModMask">1048576</int>
175+ <int key="NSMnemonicLoc">2147483647</int>
176+ <reference key="NSOnImage" ref="718549873"/>
177+ <reference key="NSMixedImage" ref="521811616"/>
178+ <string key="NSAction">submenuAction:</string>
179+ <object class="NSMenu" key="NSSubmenu" id="720053764">
180+ <reference key="NSTitle" ref="652289631"/>
181+ <object class="NSMutableArray" key="NSMenuItems">
182+ <bool key="EncodedWithXMLCoder">YES</bool>
183+ <object class="NSMenuItem" id="705341025">
184+ <reference key="NSMenu" ref="720053764"/>
185+ <string key="NSTitle">New</string>
186+ <string key="NSKeyEquiv">n</string>
187+ <int key="NSKeyEquivModMask">1048576</int>
188+ <int key="NSMnemonicLoc">2147483647</int>
189+ <reference key="NSOnImage" ref="718549873"/>
190+ <reference key="NSMixedImage" ref="521811616"/>
191+ </object>
192+ <object class="NSMenuItem" id="722745758">
193+ <reference key="NSMenu" ref="720053764"/>
194+ <string type="base64-UTF8" key="NSTitle">T3BlbuKApg</string>
195+ <string key="NSKeyEquiv">o</string>
196+ <int key="NSKeyEquivModMask">1048576</int>
197+ <int key="NSMnemonicLoc">2147483647</int>
198+ <reference key="NSOnImage" ref="718549873"/>
199+ <reference key="NSMixedImage" ref="521811616"/>
200+ </object>
201+ <object class="NSMenuItem" id="1025936716">
202+ <reference key="NSMenu" ref="720053764"/>
203+ <string key="NSTitle" id="854088371">Open Recent</string>
204+ <reference key="NSKeyEquiv" ref="1003"/>
205+ <int key="NSKeyEquivModMask">1048576</int>
206+ <int key="NSMnemonicLoc">2147483647</int>
207+ <reference key="NSOnImage" ref="718549873"/>
208+ <reference key="NSMixedImage" ref="521811616"/>
209+ <string key="NSAction">submenuAction:</string>
210+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
211+ <reference key="NSTitle" ref="854088371"/>
212+ <object class="NSMutableArray" key="NSMenuItems">
213+ <bool key="EncodedWithXMLCoder">YES</bool>
214+ <object class="NSMenuItem" id="759406840">
215+ <reference key="NSMenu" ref="1065607017"/>
216+ <string key="NSTitle">Clear Menu</string>
217+ <reference key="NSKeyEquiv" ref="1003"/>
218+ <int key="NSKeyEquivModMask">1048576</int>
219+ <int key="NSMnemonicLoc">2147483647</int>
220+ <reference key="NSOnImage" ref="718549873"/>
221+ <reference key="NSMixedImage" ref="521811616"/>
222+ </object>
223+ </object>
224+ <string key="NSName">_NSRecentDocumentsMenu</string>
225+ </object>
226+ </object>
227+ <object class="NSMenuItem" id="425164168">
228+ <reference key="NSMenu" ref="720053764"/>
229+ <bool key="NSIsDisabled">YES</bool>
230+ <bool key="NSIsSeparator">YES</bool>
231+ <reference key="NSTitle" ref="1003"/>
232+ <reference key="NSKeyEquiv" ref="1003"/>
233+ <int key="NSKeyEquivModMask">1048576</int>
234+ <int key="NSMnemonicLoc">2147483647</int>
235+ <reference key="NSOnImage" ref="718549873"/>
236+ <reference key="NSMixedImage" ref="521811616"/>
237+ </object>
238+ <object class="NSMenuItem" id="776162233">
239+ <reference key="NSMenu" ref="720053764"/>
240+ <string key="NSTitle">Close</string>
241+ <string key="NSKeyEquiv">w</string>
242+ <int key="NSKeyEquivModMask">1048576</int>
243+ <int key="NSMnemonicLoc">2147483647</int>
244+ <reference key="NSOnImage" ref="718549873"/>
245+ <reference key="NSMixedImage" ref="521811616"/>
246+ </object>
247+ <object class="NSMenuItem" id="1023925487">
248+ <reference key="NSMenu" ref="720053764"/>
249+ <string key="NSTitle">Save</string>
250+ <string key="NSKeyEquiv" id="1041476791">s</string>
251+ <int key="NSKeyEquivModMask">1048576</int>
252+ <int key="NSMnemonicLoc">2147483647</int>
253+ <reference key="NSOnImage" ref="718549873"/>
254+ <reference key="NSMixedImage" ref="521811616"/>
255+ </object>
256+ <object class="NSMenuItem" id="197378741">
257+ <reference key="NSMenu" ref="720053764"/>
258+ <bool key="NSIsAlternate">YES</bool>
259+ <string key="NSTitle">Save to BS Support</string>
260+ <reference key="NSKeyEquiv" ref="1041476791"/>
261+ <int key="NSKeyEquivModMask">1573160</int>
262+ <int key="NSMnemonicLoc">2147483647</int>
263+ <reference key="NSOnImage" ref="718549873"/>
264+ <reference key="NSMixedImage" ref="521811616"/>
265+ </object>
266+ <object class="NSMenuItem" id="117038363">
267+ <reference key="NSMenu" ref="720053764"/>
268+ <string type="base64-UTF8" key="NSTitle">U2F2ZSBBc+KApg</string>
269+ <string key="NSKeyEquiv">S</string>
270+ <int key="NSKeyEquivModMask">1179648</int>
271+ <int key="NSMnemonicLoc">2147483647</int>
272+ <reference key="NSOnImage" ref="718549873"/>
273+ <reference key="NSMixedImage" ref="521811616"/>
274+ </object>
275+ <object class="NSMenuItem" id="579971712">
276+ <reference key="NSMenu" ref="720053764"/>
277+ <string key="NSTitle">Revert to Saved</string>
278+ <reference key="NSKeyEquiv" ref="1003"/>
279+ <int key="NSMnemonicLoc">2147483647</int>
280+ <reference key="NSOnImage" ref="718549873"/>
281+ <reference key="NSMixedImage" ref="521811616"/>
282+ </object>
283+ <object class="NSMenuItem" id="1010469920">
284+ <reference key="NSMenu" ref="720053764"/>
285+ <bool key="NSIsDisabled">YES</bool>
286+ <bool key="NSIsSeparator">YES</bool>
287+ <reference key="NSTitle" ref="1003"/>
288+ <reference key="NSKeyEquiv" ref="1003"/>
289+ <int key="NSKeyEquivModMask">1048576</int>
290+ <int key="NSMnemonicLoc">2147483647</int>
291+ <reference key="NSOnImage" ref="718549873"/>
292+ <reference key="NSMixedImage" ref="521811616"/>
293+ </object>
294+ <object class="NSMenuItem" id="294629803">
295+ <reference key="NSMenu" ref="720053764"/>
296+ <string key="NSTitle">Page Setup...</string>
297+ <string key="NSKeyEquiv">P</string>
298+ <int key="NSKeyEquivModMask">1179648</int>
299+ <int key="NSMnemonicLoc">2147483647</int>
300+ <reference key="NSOnImage" ref="718549873"/>
301+ <reference key="NSMixedImage" ref="521811616"/>
302+ <reference key="NSToolTip" ref="1003"/>
303+ </object>
304+ <object class="NSMenuItem" id="49223823">
305+ <reference key="NSMenu" ref="720053764"/>
306+ <string type="base64-UTF8" key="NSTitle">UHJpbnTigKY</string>
307+ <string key="NSKeyEquiv">p</string>
308+ <int key="NSKeyEquivModMask">1048576</int>
309+ <int key="NSMnemonicLoc">2147483647</int>
310+ <reference key="NSOnImage" ref="718549873"/>
311+ <reference key="NSMixedImage" ref="521811616"/>
312+ </object>
313+ </object>
314+ </object>
315+ </object>
316+ <object class="NSMenuItem" id="952259628">
317+ <reference key="NSMenu" ref="649796088"/>
318+ <string key="NSTitle" id="135051188">Edit</string>
319+ <reference key="NSKeyEquiv" ref="1003"/>
320+ <int key="NSKeyEquivModMask">1048576</int>
321+ <int key="NSMnemonicLoc">2147483647</int>
322+ <reference key="NSOnImage" ref="718549873"/>
323+ <reference key="NSMixedImage" ref="521811616"/>
324+ <string key="NSAction">submenuAction:</string>
325+ <object class="NSMenu" key="NSSubmenu" id="789758025">
326+ <reference key="NSTitle" ref="135051188"/>
327+ <object class="NSMutableArray" key="NSMenuItems">
328+ <bool key="EncodedWithXMLCoder">YES</bool>
329+ <object class="NSMenuItem" id="1058277027">
330+ <reference key="NSMenu" ref="789758025"/>
331+ <string key="NSTitle">Undo</string>
332+ <string key="NSKeyEquiv">z</string>
333+ <int key="NSKeyEquivModMask">1048576</int>
334+ <int key="NSMnemonicLoc">2147483647</int>
335+ <reference key="NSOnImage" ref="718549873"/>
336+ <reference key="NSMixedImage" ref="521811616"/>
337+ </object>
338+ <object class="NSMenuItem" id="790794224">
339+ <reference key="NSMenu" ref="789758025"/>
340+ <string key="NSTitle">Redo</string>
341+ <string key="NSKeyEquiv">Z</string>
342+ <int key="NSKeyEquivModMask">1179648</int>
343+ <int key="NSMnemonicLoc">2147483647</int>
344+ <reference key="NSOnImage" ref="718549873"/>
345+ <reference key="NSMixedImage" ref="521811616"/>
346+ </object>
347+ <object class="NSMenuItem" id="1040322652">
348+ <reference key="NSMenu" ref="789758025"/>
349+ <bool key="NSIsDisabled">YES</bool>
350+ <bool key="NSIsSeparator">YES</bool>
351+ <reference key="NSTitle" ref="1003"/>
352+ <reference key="NSKeyEquiv" ref="1003"/>
353+ <int key="NSKeyEquivModMask">1048576</int>
354+ <int key="NSMnemonicLoc">2147483647</int>
355+ <reference key="NSOnImage" ref="718549873"/>
356+ <reference key="NSMixedImage" ref="521811616"/>
357+ </object>
358+ <object class="NSMenuItem" id="296257095">
359+ <reference key="NSMenu" ref="789758025"/>
360+ <string key="NSTitle">Cut</string>
361+ <string key="NSKeyEquiv">x</string>
362+ <int key="NSKeyEquivModMask">1048576</int>
363+ <int key="NSMnemonicLoc">2147483647</int>
364+ <reference key="NSOnImage" ref="718549873"/>
365+ <reference key="NSMixedImage" ref="521811616"/>
366+ </object>
367+ <object class="NSMenuItem" id="860595796">
368+ <reference key="NSMenu" ref="789758025"/>
369+ <string key="NSTitle">Copy</string>
370+ <string key="NSKeyEquiv">c</string>
371+ <int key="NSKeyEquivModMask">1048576</int>
372+ <int key="NSMnemonicLoc">2147483647</int>
373+ <reference key="NSOnImage" ref="718549873"/>
374+ <reference key="NSMixedImage" ref="521811616"/>
375+ </object>
376+ <object class="NSMenuItem" id="29853731">
377+ <reference key="NSMenu" ref="789758025"/>
378+ <string key="NSTitle">Paste</string>
379+ <string key="NSKeyEquiv">v</string>
380+ <int key="NSKeyEquivModMask">1048576</int>
381+ <int key="NSMnemonicLoc">2147483647</int>
382+ <reference key="NSOnImage" ref="718549873"/>
383+ <reference key="NSMixedImage" ref="521811616"/>
384+ </object>
385+ </object>
386+ </object>
387+ </object>
388+ <object class="NSMenuItem" id="713487014">
389+ <reference key="NSMenu" ref="649796088"/>
390+ <string key="NSTitle" id="899301513">Window</string>
391+ <reference key="NSKeyEquiv" ref="1003"/>
392+ <int key="NSKeyEquivModMask">1048576</int>
393+ <int key="NSMnemonicLoc">2147483647</int>
394+ <reference key="NSOnImage" ref="718549873"/>
395+ <reference key="NSMixedImage" ref="521811616"/>
396+ <string key="NSAction">submenuAction:</string>
397+ <object class="NSMenu" key="NSSubmenu" id="835318025">
398+ <reference key="NSTitle" ref="899301513"/>
399+ <object class="NSMutableArray" key="NSMenuItems">
400+ <bool key="EncodedWithXMLCoder">YES</bool>
401+ <object class="NSMenuItem" id="1011231497">
402+ <reference key="NSMenu" ref="835318025"/>
403+ <string key="NSTitle">Minimize</string>
404+ <string key="NSKeyEquiv">m</string>
405+ <int key="NSKeyEquivModMask">1048576</int>
406+ <int key="NSMnemonicLoc">2147483647</int>
407+ <reference key="NSOnImage" ref="718549873"/>
408+ <reference key="NSMixedImage" ref="521811616"/>
409+ </object>
410+ <object class="NSMenuItem" id="575023229">
411+ <reference key="NSMenu" ref="835318025"/>
412+ <string key="NSTitle">Zoom</string>
413+ <reference key="NSKeyEquiv" ref="1003"/>
414+ <int key="NSKeyEquivModMask">1048576</int>
415+ <int key="NSMnemonicLoc">2147483647</int>
416+ <reference key="NSOnImage" ref="718549873"/>
417+ <reference key="NSMixedImage" ref="521811616"/>
418+ </object>
419+ <object class="NSMenuItem" id="299356726">
420+ <reference key="NSMenu" ref="835318025"/>
421+ <bool key="NSIsDisabled">YES</bool>
422+ <bool key="NSIsSeparator">YES</bool>
423+ <reference key="NSTitle" ref="1003"/>
424+ <reference key="NSKeyEquiv" ref="1003"/>
425+ <int key="NSKeyEquivModMask">1048576</int>
426+ <int key="NSMnemonicLoc">2147483647</int>
427+ <reference key="NSOnImage" ref="718549873"/>
428+ <reference key="NSMixedImage" ref="521811616"/>
429+ </object>
430+ <object class="NSMenuItem" id="625202149">
431+ <reference key="NSMenu" ref="835318025"/>
432+ <string key="NSTitle">Bring All to Front</string>
433+ <reference key="NSKeyEquiv" ref="1003"/>
434+ <int key="NSKeyEquivModMask">1048576</int>
435+ <int key="NSMnemonicLoc">2147483647</int>
436+ <reference key="NSOnImage" ref="718549873"/>
437+ <reference key="NSMixedImage" ref="521811616"/>
438+ </object>
439+ </object>
440+ <string key="NSName">_NSWindowsMenu</string>
441+ </object>
442+ </object>
443+ <object class="NSMenuItem" id="391199113">
444+ <reference key="NSMenu" ref="649796088"/>
445+ <string key="NSTitle" id="194923554">Help</string>
446+ <reference key="NSKeyEquiv" ref="1003"/>
447+ <int key="NSKeyEquivModMask">1048576</int>
448+ <int key="NSMnemonicLoc">2147483647</int>
449+ <reference key="NSOnImage" ref="718549873"/>
450+ <reference key="NSMixedImage" ref="521811616"/>
451+ <string key="NSAction">submenuAction:</string>
452+ <object class="NSMenu" key="NSSubmenu" id="374024848">
453+ <reference key="NSTitle" ref="194923554"/>
454+ <object class="NSMutableArray" key="NSMenuItems">
455+ <bool key="EncodedWithXMLCoder">YES</bool>
456+ <object class="NSMenuItem" id="238773614">
457+ <reference key="NSMenu" ref="374024848"/>
458+ <string key="NSTitle">BSTRAEditor Help</string>
459+ <string key="NSKeyEquiv">?</string>
460+ <int key="NSKeyEquivModMask">1048576</int>
461+ <int key="NSMnemonicLoc">2147483647</int>
462+ <reference key="NSOnImage" ref="718549873"/>
463+ <reference key="NSMixedImage" ref="521811616"/>
464+ </object>
465+ </object>
466+ </object>
467+ </object>
468+ </object>
469+ <string key="NSName">_NSMainMenu</string>
470+ </object>
471+ </object>
472+ <object class="IBObjectContainer" key="IBDocument.Objects">
473+ <object class="NSMutableArray" key="connectionRecords">
474+ <bool key="EncodedWithXMLCoder">YES</bool>
475+ <object class="IBConnectionRecord">
476+ <object class="IBActionConnection" key="connection">
477+ <string key="label">performMiniaturize:</string>
478+ <reference key="source" ref="1014"/>
479+ <reference key="destination" ref="1011231497"/>
480+ </object>
481+ <int key="connectionID">37</int>
482+ </object>
483+ <object class="IBConnectionRecord">
484+ <object class="IBActionConnection" key="connection">
485+ <string key="label">arrangeInFront:</string>
486+ <reference key="source" ref="1014"/>
487+ <reference key="destination" ref="625202149"/>
488+ </object>
489+ <int key="connectionID">39</int>
490+ </object>
491+ <object class="IBConnectionRecord">
492+ <object class="IBActionConnection" key="connection">
493+ <string key="label">runPageLayout:</string>
494+ <reference key="source" ref="1014"/>
495+ <reference key="destination" ref="294629803"/>
496+ </object>
497+ <int key="connectionID">87</int>
498+ </object>
499+ <object class="IBConnectionRecord">
500+ <object class="IBActionConnection" key="connection">
501+ <string key="label">clearRecentDocuments:</string>
502+ <reference key="source" ref="1014"/>
503+ <reference key="destination" ref="759406840"/>
504+ </object>
505+ <int key="connectionID">127</int>
506+ </object>
507+ <object class="IBConnectionRecord">
508+ <object class="IBActionConnection" key="connection">
509+ <string key="label">orderFrontStandardAboutPanel:</string>
510+ <reference key="source" ref="1021"/>
511+ <reference key="destination" ref="238522557"/>
512+ </object>
513+ <int key="connectionID">142</int>
514+ </object>
515+ <object class="IBConnectionRecord">
516+ <object class="IBActionConnection" key="connection">
517+ <string key="label">performClose:</string>
518+ <reference key="source" ref="1014"/>
519+ <reference key="destination" ref="776162233"/>
520+ </object>
521+ <int key="connectionID">193</int>
522+ </object>
523+ <object class="IBConnectionRecord">
524+ <object class="IBActionConnection" key="connection">
525+ <string key="label">undo:</string>
526+ <reference key="source" ref="1014"/>
527+ <reference key="destination" ref="1058277027"/>
528+ </object>
529+ <int key="connectionID">223</int>
530+ </object>
531+ <object class="IBConnectionRecord">
532+ <object class="IBActionConnection" key="connection">
533+ <string key="label">copy:</string>
534+ <reference key="source" ref="1014"/>
535+ <reference key="destination" ref="860595796"/>
536+ </object>
537+ <int key="connectionID">224</int>
538+ </object>
539+ <object class="IBConnectionRecord">
540+ <object class="IBActionConnection" key="connection">
541+ <string key="label">paste:</string>
542+ <reference key="source" ref="1014"/>
543+ <reference key="destination" ref="29853731"/>
544+ </object>
545+ <int key="connectionID">226</int>
546+ </object>
547+ <object class="IBConnectionRecord">
548+ <object class="IBActionConnection" key="connection">
549+ <string key="label">cut:</string>
550+ <reference key="source" ref="1014"/>
551+ <reference key="destination" ref="296257095"/>
552+ </object>
553+ <int key="connectionID">228</int>
554+ </object>
555+ <object class="IBConnectionRecord">
556+ <object class="IBActionConnection" key="connection">
557+ <string key="label">redo:</string>
558+ <reference key="source" ref="1014"/>
559+ <reference key="destination" ref="790794224"/>
560+ </object>
561+ <int key="connectionID">231</int>
562+ </object>
563+ <object class="IBConnectionRecord">
564+ <object class="IBActionConnection" key="connection">
565+ <string key="label">performZoom:</string>
566+ <reference key="source" ref="1014"/>
567+ <reference key="destination" ref="575023229"/>
568+ </object>
569+ <int key="connectionID">240</int>
570+ </object>
571+ <object class="IBConnectionRecord">
572+ <object class="IBActionConnection" key="connection">
573+ <string key="label">showHelp:</string>
574+ <reference key="source" ref="1014"/>
575+ <reference key="destination" ref="238773614"/>
576+ </object>
577+ <int key="connectionID">360</int>
578+ </object>
579+ <object class="IBConnectionRecord">
580+ <object class="IBActionConnection" key="connection">
581+ <string key="label">saveDocument:</string>
582+ <reference key="source" ref="1014"/>
583+ <reference key="destination" ref="1023925487"/>
584+ </object>
585+ <int key="connectionID">362</int>
586+ </object>
587+ <object class="IBConnectionRecord">
588+ <object class="IBActionConnection" key="connection">
589+ <string key="label">saveDocumentAs:</string>
590+ <reference key="source" ref="1014"/>
591+ <reference key="destination" ref="117038363"/>
592+ </object>
593+ <int key="connectionID">363</int>
594+ </object>
595+ <object class="IBConnectionRecord">
596+ <object class="IBActionConnection" key="connection">
597+ <string key="label">revertDocumentToSaved:</string>
598+ <reference key="source" ref="1014"/>
599+ <reference key="destination" ref="579971712"/>
600+ </object>
601+ <int key="connectionID">364</int>
602+ </object>
603+ <object class="IBConnectionRecord">
604+ <object class="IBActionConnection" key="connection">
605+ <string key="label">hide:</string>
606+ <reference key="source" ref="1014"/>
607+ <reference key="destination" ref="755159360"/>
608+ </object>
609+ <int key="connectionID">367</int>
610+ </object>
611+ <object class="IBConnectionRecord">
612+ <object class="IBActionConnection" key="connection">
613+ <string key="label">hideOtherApplications:</string>
614+ <reference key="source" ref="1014"/>
615+ <reference key="destination" ref="342932134"/>
616+ </object>
617+ <int key="connectionID">368</int>
618+ </object>
619+ <object class="IBConnectionRecord">
620+ <object class="IBActionConnection" key="connection">
621+ <string key="label">terminate:</string>
622+ <reference key="source" ref="1014"/>
623+ <reference key="destination" ref="632727374"/>
624+ </object>
625+ <int key="connectionID">369</int>
626+ </object>
627+ <object class="IBConnectionRecord">
628+ <object class="IBActionConnection" key="connection">
629+ <string key="label">unhideAllApplications:</string>
630+ <reference key="source" ref="1014"/>
631+ <reference key="destination" ref="908899353"/>
632+ </object>
633+ <int key="connectionID">370</int>
634+ </object>
635+ <object class="IBConnectionRecord">
636+ <object class="IBActionConnection" key="connection">
637+ <string key="label">newDocument:</string>
638+ <reference key="source" ref="1014"/>
639+ <reference key="destination" ref="705341025"/>
640+ </object>
641+ <int key="connectionID">371</int>
642+ </object>
643+ <object class="IBConnectionRecord">
644+ <object class="IBActionConnection" key="connection">
645+ <string key="label">openDocument:</string>
646+ <reference key="source" ref="1014"/>
647+ <reference key="destination" ref="722745758"/>
648+ </object>
649+ <int key="connectionID">372</int>
650+ </object>
651+ <object class="IBConnectionRecord">
652+ <object class="IBActionConnection" key="connection">
653+ <string key="label">printDocument:</string>
654+ <reference key="source" ref="1014"/>
655+ <reference key="destination" ref="49223823"/>
656+ </object>
657+ <int key="connectionID">373</int>
658+ </object>
659+ <object class="IBConnectionRecord">
660+ <object class="IBActionConnection" key="connection">
661+ <string key="label" id="982528796">saveToBSSupportFolder:</string>
662+ <reference key="source" ref="1014"/>
663+ <reference key="destination" ref="197378741"/>
664+ </object>
665+ <int key="connectionID">375</int>
666+ </object>
667+ </object>
668+ <object class="IBMutableOrderedSet" key="objectRecords">
669+ <object class="NSArray" key="orderedObjects">
670+ <bool key="EncodedWithXMLCoder">YES</bool>
671+ <object class="IBObjectRecord">
672+ <int key="objectID">0</int>
673+ <object class="NSArray" key="object" id="1049">
674+ <bool key="EncodedWithXMLCoder">YES</bool>
675+ </object>
676+ <reference key="children" ref="1048"/>
677+ <nil key="parent"/>
678+ </object>
679+ <object class="IBObjectRecord">
680+ <int key="objectID">-2</int>
681+ <reference key="object" ref="1021"/>
682+ <reference key="parent" ref="1049"/>
683+ <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
684+ </object>
685+ <object class="IBObjectRecord">
686+ <int key="objectID">-1</int>
687+ <reference key="object" ref="1014"/>
688+ <reference key="parent" ref="1049"/>
689+ <string key="objectName">First Responder</string>
690+ </object>
691+ <object class="IBObjectRecord">
692+ <int key="objectID">-3</int>
693+ <reference key="object" ref="1050"/>
694+ <reference key="parent" ref="1049"/>
695+ <string key="objectName">Application</string>
696+ </object>
697+ <object class="IBObjectRecord">
698+ <int key="objectID">29</int>
699+ <reference key="object" ref="649796088"/>
700+ <object class="NSMutableArray" key="children">
701+ <bool key="EncodedWithXMLCoder">YES</bool>
702+ <reference ref="713487014"/>
703+ <reference ref="694149608"/>
704+ <reference ref="391199113"/>
705+ <reference ref="952259628"/>
706+ <reference ref="379814623"/>
707+ </object>
708+ <reference key="parent" ref="1049"/>
709+ <string key="objectName">MainMenu</string>
710+ </object>
711+ <object class="IBObjectRecord">
712+ <int key="objectID">19</int>
713+ <reference key="object" ref="713487014"/>
714+ <object class="NSMutableArray" key="children">
715+ <bool key="EncodedWithXMLCoder">YES</bool>
716+ <reference ref="835318025"/>
717+ </object>
718+ <reference key="parent" ref="649796088"/>
719+ </object>
720+ <object class="IBObjectRecord">
721+ <int key="objectID">56</int>
722+ <reference key="object" ref="694149608"/>
723+ <object class="NSMutableArray" key="children">
724+ <bool key="EncodedWithXMLCoder">YES</bool>
725+ <reference ref="110575045"/>
726+ </object>
727+ <reference key="parent" ref="649796088"/>
728+ </object>
729+ <object class="IBObjectRecord">
730+ <int key="objectID">103</int>
731+ <reference key="object" ref="391199113"/>
732+ <object class="NSMutableArray" key="children">
733+ <bool key="EncodedWithXMLCoder">YES</bool>
734+ <reference ref="374024848"/>
735+ </object>
736+ <reference key="parent" ref="649796088"/>
737+ <string key="objectName" id="78802696">1</string>
738+ </object>
739+ <object class="IBObjectRecord">
740+ <int key="objectID">217</int>
741+ <reference key="object" ref="952259628"/>
742+ <object class="NSMutableArray" key="children">
743+ <bool key="EncodedWithXMLCoder">YES</bool>
744+ <reference ref="789758025"/>
745+ </object>
746+ <reference key="parent" ref="649796088"/>
747+ </object>
748+ <object class="IBObjectRecord">
749+ <int key="objectID">83</int>
750+ <reference key="object" ref="379814623"/>
751+ <object class="NSMutableArray" key="children">
752+ <bool key="EncodedWithXMLCoder">YES</bool>
753+ <reference ref="720053764"/>
754+ </object>
755+ <reference key="parent" ref="649796088"/>
756+ </object>
757+ <object class="IBObjectRecord">
758+ <int key="objectID">81</int>
759+ <reference key="object" ref="720053764"/>
760+ <object class="NSMutableArray" key="children">
761+ <bool key="EncodedWithXMLCoder">YES</bool>
762+ <reference ref="1023925487"/>
763+ <reference ref="117038363"/>
764+ <reference ref="49223823"/>
765+ <reference ref="722745758"/>
766+ <reference ref="705341025"/>
767+ <reference ref="1025936716"/>
768+ <reference ref="294629803"/>
769+ <reference ref="776162233"/>
770+ <reference ref="425164168"/>
771+ <reference ref="579971712"/>
772+ <reference ref="1010469920"/>
773+ <reference ref="197378741"/>
774+ </object>
775+ <reference key="parent" ref="379814623"/>
776+ </object>
777+ <object class="IBObjectRecord">
778+ <int key="objectID">75</int>
779+ <reference key="object" ref="1023925487"/>
780+ <reference key="parent" ref="720053764"/>
781+ <string key="objectName">3</string>
782+ </object>
783+ <object class="IBObjectRecord">
784+ <int key="objectID">80</int>
785+ <reference key="object" ref="117038363"/>
786+ <reference key="parent" ref="720053764"/>
787+ <string key="objectName">8</string>
788+ </object>
789+ <object class="IBObjectRecord">
790+ <int key="objectID">78</int>
791+ <reference key="object" ref="49223823"/>
792+ <reference key="parent" ref="720053764"/>
793+ <string key="objectName">6</string>
794+ </object>
795+ <object class="IBObjectRecord">
796+ <int key="objectID">72</int>
797+ <reference key="object" ref="722745758"/>
798+ <reference key="parent" ref="720053764"/>
799+ </object>
800+ <object class="IBObjectRecord">
801+ <int key="objectID">82</int>
802+ <reference key="object" ref="705341025"/>
803+ <reference key="parent" ref="720053764"/>
804+ <string key="objectName">9</string>
805+ </object>
806+ <object class="IBObjectRecord">
807+ <int key="objectID">124</int>
808+ <reference key="object" ref="1025936716"/>
809+ <object class="NSMutableArray" key="children">
810+ <bool key="EncodedWithXMLCoder">YES</bool>
811+ <reference ref="1065607017"/>
812+ </object>
813+ <reference key="parent" ref="720053764"/>
814+ </object>
815+ <object class="IBObjectRecord">
816+ <int key="objectID">77</int>
817+ <reference key="object" ref="294629803"/>
818+ <reference key="parent" ref="720053764"/>
819+ <string key="objectName">5</string>
820+ </object>
821+ <object class="IBObjectRecord">
822+ <int key="objectID">73</int>
823+ <reference key="object" ref="776162233"/>
824+ <reference key="parent" ref="720053764"/>
825+ <reference key="objectName" ref="78802696"/>
826+ </object>
827+ <object class="IBObjectRecord">
828+ <int key="objectID">79</int>
829+ <reference key="object" ref="425164168"/>
830+ <reference key="parent" ref="720053764"/>
831+ <string key="objectName">7</string>
832+ </object>
833+ <object class="IBObjectRecord">
834+ <int key="objectID">112</int>
835+ <reference key="object" ref="579971712"/>
836+ <reference key="parent" ref="720053764"/>
837+ <string key="objectName">10</string>
838+ </object>
839+ <object class="IBObjectRecord">
840+ <int key="objectID">74</int>
841+ <reference key="object" ref="1010469920"/>
842+ <reference key="parent" ref="720053764"/>
843+ <string key="objectName" id="272334373">2</string>
844+ </object>
845+ <object class="IBObjectRecord">
846+ <int key="objectID">125</int>
847+ <reference key="object" ref="1065607017"/>
848+ <object class="NSMutableArray" key="children">
849+ <bool key="EncodedWithXMLCoder">YES</bool>
850+ <reference ref="759406840"/>
851+ </object>
852+ <reference key="parent" ref="1025936716"/>
853+ </object>
854+ <object class="IBObjectRecord">
855+ <int key="objectID">126</int>
856+ <reference key="object" ref="759406840"/>
857+ <reference key="parent" ref="1065607017"/>
858+ </object>
859+ <object class="IBObjectRecord">
860+ <int key="objectID">205</int>
861+ <reference key="object" ref="789758025"/>
862+ <object class="NSMutableArray" key="children">
863+ <bool key="EncodedWithXMLCoder">YES</bool>
864+ <reference ref="1058277027"/>
865+ <reference ref="296257095"/>
866+ <reference ref="29853731"/>
867+ <reference ref="860595796"/>
868+ <reference ref="1040322652"/>
869+ <reference ref="790794224"/>
870+ </object>
871+ <reference key="parent" ref="952259628"/>
872+ </object>
873+ <object class="IBObjectRecord">
874+ <int key="objectID">207</int>
875+ <reference key="object" ref="1058277027"/>
876+ <reference key="parent" ref="789758025"/>
877+ </object>
878+ <object class="IBObjectRecord">
879+ <int key="objectID">199</int>
880+ <reference key="object" ref="296257095"/>
881+ <reference key="parent" ref="789758025"/>
882+ </object>
883+ <object class="IBObjectRecord">
884+ <int key="objectID">203</int>
885+ <reference key="object" ref="29853731"/>
886+ <reference key="parent" ref="789758025"/>
887+ </object>
888+ <object class="IBObjectRecord">
889+ <int key="objectID">197</int>
890+ <reference key="object" ref="860595796"/>
891+ <reference key="parent" ref="789758025"/>
892+ </object>
893+ <object class="IBObjectRecord">
894+ <int key="objectID">206</int>
895+ <reference key="object" ref="1040322652"/>
896+ <reference key="parent" ref="789758025"/>
897+ </object>
898+ <object class="IBObjectRecord">
899+ <int key="objectID">215</int>
900+ <reference key="object" ref="790794224"/>
901+ <reference key="parent" ref="789758025"/>
902+ </object>
903+ <object class="IBObjectRecord">
904+ <int key="objectID">106</int>
905+ <reference key="object" ref="374024848"/>
906+ <object class="NSMutableArray" key="children">
907+ <bool key="EncodedWithXMLCoder">YES</bool>
908+ <reference ref="238773614"/>
909+ </object>
910+ <reference key="parent" ref="391199113"/>
911+ <reference key="objectName" ref="272334373"/>
912+ </object>
913+ <object class="IBObjectRecord">
914+ <int key="objectID">111</int>
915+ <reference key="object" ref="238773614"/>
916+ <reference key="parent" ref="374024848"/>
917+ </object>
918+ <object class="IBObjectRecord">
919+ <int key="objectID">57</int>
920+ <reference key="object" ref="110575045"/>
921+ <object class="NSMutableArray" key="children">
922+ <bool key="EncodedWithXMLCoder">YES</bool>
923+ <reference ref="755159360"/>
924+ <reference ref="908899353"/>
925+ <reference ref="632727374"/>
926+ <reference ref="646227648"/>
927+ <reference ref="609285721"/>
928+ <reference ref="481834944"/>
929+ <reference ref="304266470"/>
930+ <reference ref="1046388886"/>
931+ <reference ref="1056857174"/>
932+ <reference ref="342932134"/>
933+ <reference ref="238522557"/>
934+ </object>
935+ <reference key="parent" ref="694149608"/>
936+ </object>
937+ <object class="IBObjectRecord">
938+ <int key="objectID">58</int>
939+ <reference key="object" ref="238522557"/>
940+ <reference key="parent" ref="110575045"/>
941+ </object>
942+ <object class="IBObjectRecord">
943+ <int key="objectID">134</int>
944+ <reference key="object" ref="755159360"/>
945+ <reference key="parent" ref="110575045"/>
946+ </object>
947+ <object class="IBObjectRecord">
948+ <int key="objectID">150</int>
949+ <reference key="object" ref="908899353"/>
950+ <reference key="parent" ref="110575045"/>
951+ </object>
952+ <object class="IBObjectRecord">
953+ <int key="objectID">136</int>
954+ <reference key="object" ref="632727374"/>
955+ <reference key="parent" ref="110575045"/>
956+ <string key="objectName">1111</string>
957+ </object>
958+ <object class="IBObjectRecord">
959+ <int key="objectID">144</int>
960+ <reference key="object" ref="646227648"/>
961+ <reference key="parent" ref="110575045"/>
962+ </object>
963+ <object class="IBObjectRecord">
964+ <int key="objectID">129</int>
965+ <reference key="object" ref="609285721"/>
966+ <reference key="parent" ref="110575045"/>
967+ <string key="objectName">121</string>
968+ </object>
969+ <object class="IBObjectRecord">
970+ <int key="objectID">143</int>
971+ <reference key="object" ref="481834944"/>
972+ <reference key="parent" ref="110575045"/>
973+ </object>
974+ <object class="IBObjectRecord">
975+ <int key="objectID">236</int>
976+ <reference key="object" ref="304266470"/>
977+ <reference key="parent" ref="110575045"/>
978+ </object>
979+ <object class="IBObjectRecord">
980+ <int key="objectID">131</int>
981+ <reference key="object" ref="1046388886"/>
982+ <object class="NSMutableArray" key="children">
983+ <bool key="EncodedWithXMLCoder">YES</bool>
984+ <reference ref="752062318"/>
985+ </object>
986+ <reference key="parent" ref="110575045"/>
987+ </object>
988+ <object class="IBObjectRecord">
989+ <int key="objectID">149</int>
990+ <reference key="object" ref="1056857174"/>
991+ <reference key="parent" ref="110575045"/>
992+ </object>
993+ <object class="IBObjectRecord">
994+ <int key="objectID">145</int>
995+ <reference key="object" ref="342932134"/>
996+ <reference key="parent" ref="110575045"/>
997+ </object>
998+ <object class="IBObjectRecord">
999+ <int key="objectID">130</int>
1000+ <reference key="object" ref="752062318"/>
1001+ <reference key="parent" ref="1046388886"/>
1002+ </object>
1003+ <object class="IBObjectRecord">
1004+ <int key="objectID">24</int>
1005+ <reference key="object" ref="835318025"/>
1006+ <object class="NSMutableArray" key="children">
1007+ <bool key="EncodedWithXMLCoder">YES</bool>
1008+ <reference ref="299356726"/>
1009+ <reference ref="625202149"/>
1010+ <reference ref="575023229"/>
1011+ <reference ref="1011231497"/>
1012+ </object>
1013+ <reference key="parent" ref="713487014"/>
1014+ </object>
1015+ <object class="IBObjectRecord">
1016+ <int key="objectID">92</int>
1017+ <reference key="object" ref="299356726"/>
1018+ <reference key="parent" ref="835318025"/>
1019+ </object>
1020+ <object class="IBObjectRecord">
1021+ <int key="objectID">5</int>
1022+ <reference key="object" ref="625202149"/>
1023+ <reference key="parent" ref="835318025"/>
1024+ </object>
1025+ <object class="IBObjectRecord">
1026+ <int key="objectID">239</int>
1027+ <reference key="object" ref="575023229"/>
1028+ <reference key="parent" ref="835318025"/>
1029+ </object>
1030+ <object class="IBObjectRecord">
1031+ <int key="objectID">23</int>
1032+ <reference key="object" ref="1011231497"/>
1033+ <reference key="parent" ref="835318025"/>
1034+ </object>
1035+ <object class="IBObjectRecord">
1036+ <int key="objectID">374</int>
1037+ <reference key="object" ref="197378741"/>
1038+ <reference key="parent" ref="720053764"/>
1039+ </object>
1040+ </object>
1041+ </object>
1042+ <object class="NSMutableDictionary" key="flattenedProperties">
1043+ <bool key="EncodedWithXMLCoder">YES</bool>
1044+ <object class="NSMutableArray" key="dict.sortedKeys">
1045+ <bool key="EncodedWithXMLCoder">YES</bool>
1046+ <string>-1.IBPluginDependency</string>
1047+ <string>-2.IBPluginDependency</string>
1048+ <string>-3.IBPluginDependency</string>
1049+ <string>103.IBPluginDependency</string>
1050+ <string>103.ImportedFromIB2</string>
1051+ <string>106.IBPluginDependency</string>
1052+ <string>106.ImportedFromIB2</string>
1053+ <string>106.editorWindowContentRectSynchronizationRect</string>
1054+ <string>111.IBPluginDependency</string>
1055+ <string>111.ImportedFromIB2</string>
1056+ <string>112.IBPluginDependency</string>
1057+ <string>112.ImportedFromIB2</string>
1058+ <string>124.IBPluginDependency</string>
1059+ <string>124.ImportedFromIB2</string>
1060+ <string>125.IBPluginDependency</string>
1061+ <string>125.ImportedFromIB2</string>
1062+ <string>125.editorWindowContentRectSynchronizationRect</string>
1063+ <string>126.IBPluginDependency</string>
1064+ <string>126.ImportedFromIB2</string>
1065+ <string>129.IBPluginDependency</string>
1066+ <string>129.ImportedFromIB2</string>
1067+ <string>130.IBPluginDependency</string>
1068+ <string>130.ImportedFromIB2</string>
1069+ <string>130.editorWindowContentRectSynchronizationRect</string>
1070+ <string>131.IBPluginDependency</string>
1071+ <string>131.ImportedFromIB2</string>
1072+ <string>134.IBPluginDependency</string>
1073+ <string>134.ImportedFromIB2</string>
1074+ <string>136.IBPluginDependency</string>
1075+ <string>136.ImportedFromIB2</string>
1076+ <string>143.IBPluginDependency</string>
1077+ <string>143.ImportedFromIB2</string>
1078+ <string>144.IBPluginDependency</string>
1079+ <string>144.ImportedFromIB2</string>
1080+ <string>145.IBPluginDependency</string>
1081+ <string>145.ImportedFromIB2</string>
1082+ <string>149.IBPluginDependency</string>
1083+ <string>149.ImportedFromIB2</string>
1084+ <string>150.IBPluginDependency</string>
1085+ <string>150.ImportedFromIB2</string>
1086+ <string>19.IBPluginDependency</string>
1087+ <string>19.ImportedFromIB2</string>
1088+ <string>197.IBPluginDependency</string>
1089+ <string>197.ImportedFromIB2</string>
1090+ <string>199.IBPluginDependency</string>
1091+ <string>199.ImportedFromIB2</string>
1092+ <string>203.IBPluginDependency</string>
1093+ <string>203.ImportedFromIB2</string>
1094+ <string>205.IBPluginDependency</string>
1095+ <string>205.ImportedFromIB2</string>
1096+ <string>205.editorWindowContentRectSynchronizationRect</string>
1097+ <string>206.IBPluginDependency</string>
1098+ <string>206.ImportedFromIB2</string>
1099+ <string>207.IBPluginDependency</string>
1100+ <string>207.ImportedFromIB2</string>
1101+ <string>215.IBPluginDependency</string>
1102+ <string>215.ImportedFromIB2</string>
1103+ <string>217.IBPluginDependency</string>
1104+ <string>217.ImportedFromIB2</string>
1105+ <string>23.IBPluginDependency</string>
1106+ <string>23.ImportedFromIB2</string>
1107+ <string>236.IBPluginDependency</string>
1108+ <string>236.ImportedFromIB2</string>
1109+ <string>239.IBPluginDependency</string>
1110+ <string>239.ImportedFromIB2</string>
1111+ <string>24.IBPluginDependency</string>
1112+ <string>24.ImportedFromIB2</string>
1113+ <string>24.editorWindowContentRectSynchronizationRect</string>
1114+ <string>29.IBPluginDependency</string>
1115+ <string>29.ImportedFromIB2</string>
1116+ <string>29.WindowOrigin</string>
1117+ <string>29.editorWindowContentRectSynchronizationRect</string>
1118+ <string>374.IBPluginDependency</string>
1119+ <string>5.IBPluginDependency</string>
1120+ <string>5.ImportedFromIB2</string>
1121+ <string>56.IBPluginDependency</string>
1122+ <string>56.ImportedFromIB2</string>
1123+ <string>57.IBPluginDependency</string>
1124+ <string>57.ImportedFromIB2</string>
1125+ <string>57.editorWindowContentRectSynchronizationRect</string>
1126+ <string>58.IBPluginDependency</string>
1127+ <string>58.ImportedFromIB2</string>
1128+ <string>72.IBPluginDependency</string>
1129+ <string>72.ImportedFromIB2</string>
1130+ <string>73.IBPluginDependency</string>
1131+ <string>73.ImportedFromIB2</string>
1132+ <string>74.IBPluginDependency</string>
1133+ <string>74.ImportedFromIB2</string>
1134+ <string>75.IBPluginDependency</string>
1135+ <string>75.ImportedFromIB2</string>
1136+ <string>77.IBPluginDependency</string>
1137+ <string>77.ImportedFromIB2</string>
1138+ <string>78.IBPluginDependency</string>
1139+ <string>78.ImportedFromIB2</string>
1140+ <string>79.IBPluginDependency</string>
1141+ <string>79.ImportedFromIB2</string>
1142+ <string>80.IBPluginDependency</string>
1143+ <string>80.ImportedFromIB2</string>
1144+ <string>81.IBPluginDependency</string>
1145+ <string>81.ImportedFromIB2</string>
1146+ <string>81.editorWindowContentRectSynchronizationRect</string>
1147+ <string>82.IBPluginDependency</string>
1148+ <string>82.ImportedFromIB2</string>
1149+ <string>83.IBPluginDependency</string>
1150+ <string>83.ImportedFromIB2</string>
1151+ <string>92.IBPluginDependency</string>
1152+ <string>92.ImportedFromIB2</string>
1153+ </object>
1154+ <object class="NSMutableArray" key="dict.values">
1155+ <bool key="EncodedWithXMLCoder">YES</bool>
1156+ <reference ref="449545859"/>
1157+ <reference ref="27138665"/>
1158+ <reference ref="27138665"/>
1159+ <reference ref="449545859"/>
1160+ <integer value="1" id="9"/>
1161+ <reference ref="449545859"/>
1162+ <reference ref="9"/>
1163+ <string>{{288, 767}, {193, 23}}</string>
1164+ <reference ref="449545859"/>
1165+ <reference ref="9"/>
1166+ <reference ref="449545859"/>
1167+ <reference ref="9"/>
1168+ <reference ref="449545859"/>
1169+ <reference ref="9"/>
1170+ <reference ref="449545859"/>
1171+ <reference ref="9"/>
1172+ <string>{{522, 812}, {146, 23}}</string>
1173+ <reference ref="449545859"/>
1174+ <reference ref="9"/>
1175+ <reference ref="449545859"/>
1176+ <reference ref="9"/>
1177+ <reference ref="449545859"/>
1178+ <reference ref="9"/>
1179+ <string>{{436, 809}, {64, 6}}</string>
1180+ <reference ref="449545859"/>
1181+ <reference ref="9"/>
1182+ <reference ref="449545859"/>
1183+ <reference ref="9"/>
1184+ <reference ref="449545859"/>
1185+ <reference ref="9"/>
1186+ <reference ref="449545859"/>
1187+ <reference ref="9"/>
1188+ <reference ref="449545859"/>
1189+ <reference ref="9"/>
1190+ <reference ref="449545859"/>
1191+ <reference ref="9"/>
1192+ <reference ref="449545859"/>
1193+ <reference ref="9"/>
1194+ <reference ref="449545859"/>
1195+ <reference ref="9"/>
1196+ <reference ref="449545859"/>
1197+ <reference ref="9"/>
1198+ <reference ref="449545859"/>
1199+ <reference ref="9"/>
1200+ <reference ref="449545859"/>
1201+ <reference ref="9"/>
1202+ <reference ref="449545859"/>
1203+ <reference ref="9"/>
1204+ <reference ref="449545859"/>
1205+ <reference ref="9"/>
1206+ <string>{{173, 677}, {128, 113}}</string>
1207+ <reference ref="449545859"/>
1208+ <reference ref="9"/>
1209+ <reference ref="449545859"/>
1210+ <reference ref="9"/>
1211+ <reference ref="449545859"/>
1212+ <reference ref="9"/>
1213+ <reference ref="449545859"/>
1214+ <reference ref="9"/>
1215+ <reference ref="449545859"/>
1216+ <reference ref="9"/>
1217+ <reference ref="449545859"/>
1218+ <reference ref="9"/>
1219+ <reference ref="449545859"/>
1220+ <reference ref="9"/>
1221+ <reference ref="449545859"/>
1222+ <reference ref="9"/>
1223+ <string>{{217, 717}, {197, 73}}</string>
1224+ <reference ref="449545859"/>
1225+ <reference ref="9"/>
1226+ <string>{74, 862}</string>
1227+ <string>{{11, 788}, {338, 20}}</string>
1228+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1229+ <reference ref="449545859"/>
1230+ <reference ref="9"/>
1231+ <reference ref="449545859"/>
1232+ <reference ref="9"/>
1233+ <reference ref="449545859"/>
1234+ <reference ref="9"/>
1235+ <string>{{23, 605}, {222, 183}}</string>
1236+ <reference ref="449545859"/>
1237+ <reference ref="9"/>
1238+ <reference ref="449545859"/>
1239+ <reference ref="9"/>
1240+ <reference ref="449545859"/>
1241+ <reference ref="9"/>
1242+ <reference ref="449545859"/>
1243+ <reference ref="9"/>
1244+ <reference ref="449545859"/>
1245+ <reference ref="9"/>
1246+ <reference ref="449545859"/>
1247+ <reference ref="9"/>
1248+ <reference ref="449545859"/>
1249+ <reference ref="9"/>
1250+ <reference ref="449545859"/>
1251+ <reference ref="9"/>
1252+ <reference ref="449545859"/>
1253+ <reference ref="9"/>
1254+ <reference ref="449545859"/>
1255+ <reference ref="9"/>
1256+ <string>{{131, 565}, {221, 223}}</string>
1257+ <reference ref="449545859"/>
1258+ <reference ref="9"/>
1259+ <reference ref="449545859"/>
1260+ <reference ref="9"/>
1261+ <reference ref="449545859"/>
1262+ <reference ref="9"/>
1263+ </object>
1264+ </object>
1265+ <object class="NSMutableDictionary" key="unlocalizedProperties">
1266+ <bool key="EncodedWithXMLCoder">YES</bool>
1267+ <object class="NSArray" key="dict.sortedKeys">
1268+ <bool key="EncodedWithXMLCoder">YES</bool>
1269+ </object>
1270+ <object class="NSMutableArray" key="dict.values">
1271+ <bool key="EncodedWithXMLCoder">YES</bool>
1272+ </object>
1273+ </object>
1274+ <nil key="activeLocalization"/>
1275+ <object class="NSMutableDictionary" key="localizations">
1276+ <bool key="EncodedWithXMLCoder">YES</bool>
1277+ <object class="NSArray" key="dict.sortedKeys">
1278+ <bool key="EncodedWithXMLCoder">YES</bool>
1279+ </object>
1280+ <object class="NSMutableArray" key="dict.values">
1281+ <bool key="EncodedWithXMLCoder">YES</bool>
1282+ </object>
1283+ </object>
1284+ <nil key="sourceID"/>
1285+ <int key="maxID">375</int>
1286+ </object>
1287+ <object class="IBClassDescriber" key="IBDocument.Classes">
1288+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
1289+ <bool key="EncodedWithXMLCoder">YES</bool>
1290+ <object class="IBPartialClassDescription">
1291+ <reference key="className" ref="477722881"/>
1292+ <nil key="superclassName"/>
1293+ <object class="NSMutableDictionary" key="actions">
1294+ <reference key="NS.key.0" ref="982528796"/>
1295+ <string key="NS.object.0">id</string>
1296+ </object>
1297+ <object class="NSMutableDictionary" key="outlets">
1298+ <bool key="EncodedWithXMLCoder">YES</bool>
1299+ <object class="NSArray" key="dict.sortedKeys">
1300+ <bool key="EncodedWithXMLCoder">YES</bool>
1301+ </object>
1302+ <object class="NSMutableArray" key="dict.values">
1303+ <bool key="EncodedWithXMLCoder">YES</bool>
1304+ </object>
1305+ </object>
1306+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
1307+ <string key="majorKey">IBUserSource</string>
1308+ <string key="minorKey"/>
1309+ </object>
1310+ </object>
1311+ </object>
1312+ </object>
1313+ <int key="IBDocument.localizationMode">0</int>
1314+ <string key="IBDocument.LastKnownRelativeProjectPath">../../BSTRAEditor.xcodeproj</string>
1315+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
1316+ <object class="NSMutableData" key="IBDocument.RunnableNib">
1317+ <bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
1318+AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEBRAALAAwAMQA1ADYAPAA9
1319+AEEARQBgAGgAdgB9AH4AfwCEAIUAhgCJAI0AjgCRAJIAlgCaAKMApwCoAKkAqgCuALUAtgC3ALgAvADD
1320+AMQAxQDGAMoA0QDSANMA1wDeAN8A4ADhAOUA7ADwAPEA8gDzAPcA/gD/AQABAQEFAQwBDQEOAQ8BEwEa
1321+AR4BHwEgASEBJQEsATEBMgEzATcBPgE/AUABQQFFAUwBTQFOAU8BUwFaAVsBXAFgAWgBaQFqAWsBbwF5
1322+AXoBewF/AYYBiwGMAY0BkQGYAZkBmgGbAZ8BqAGpAaoBqwGvAbcBuAG5Ab0BxAHFAcYBxwHLAdIB0wHU
1323+AdUB2QHgAeEB4gHmAe0B7gHvAfAB9AIoAjMCNAI1AjoCPQI+AkACQQJFAk4CNAJTAlwCNAJdAmwCdQI0
1324+AnYCegJ7AoYCjwKYAqECqAKpAqoCswI0ArQCvQLGAs8CNALQAtcC4ALhAuQC7QL2AjQC9wMFAw4DDwMQ
1325+AxgDGQMbA08DhAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APR
1326+A9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPuA/EEPgSL
1327+BIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASp
1328+BKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTH
1329+BMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTYBNsE3lUkbnVsbN8QEgANAA4ADwAQABEAEgATABQA
1330+FQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jv
1331+b3RWJGNsYXNzXU5TT2JqZWN0c0tleXNfEA9OU0NsYXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlP
1332+aWRzVmFsdWVzXU5TQ29ubmVjdGlvbnNbTlNOYW1lc0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5
1333+c1pOU09pZHNLZXlzXU5TTmFtZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9u
1334+dE1hbmFnZXJfEBBOU1Zpc2libGVXaW5kb3dzXxAPTlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmls
1335+aXR5T2lkc0tleXNZTlNOZXh0T2lkXE5TT2lkc1ZhbHVlc4ACgQFDgImA84EBQoAIgL6ABYDygPSAv4EB
1336+QIAAgAaAvYEBQREBeYD10gAOADIAMwA0W05TQ2xhc3NOYW1lgASAA11OU0FwcGxpY2F0aW9u0gA3ADgA
1337+OQA6WCRjbGFzc2VzWiRjbGFzc25hbWWiADoAO15OU0N1c3RvbU9iamVjdFhOU09iamVjdF8QEElCQ29j
1338+b2FGcmFtZXdvcmvSAA4APgA/AEBaTlMub2JqZWN0c4AHoNIANwA4AEIAQ6MAQwBEADtcTlNNdXRhYmxl
1339+U2V0VU5TU2V00gAOAD4ARgBHgIivEBgASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkA
1340+WgBbAFwAXQBeAF+ACYAXgB2AIoAngCuAMIA2gDuAQIBGgEuAUIBVgFmAXoBigGeAbIBxgHWAeoB/gIPU
1341+AA4AYQBiAGMAZAAfAGYAZ11OU0Rlc3RpbmF0aW9uWE5TU291cmNlV05TTGFiZWyAFoACgAqAFdcADgBp
1342+AGoAawBsAG0AbgBvAHAAcQByAHMAdAB1V05TVGl0bGVaTlNLZXlFcXVpdl1OU01uZW1vbmljTG9jWU5T
1343+T25JbWFnZVxOU01peGVkSW1hZ2VWTlNNZW51gBSADIANEn////+ADoASgAvUAA4AaQB3AHgAeQB6AHsA
1344+fFZOU05hbWVbTlNNZW51SXRlbXOAkIC0gLiAtl8QEUFib3V0IEJTVFJBRWRpdG9yUNMADgAyAIAAgQCC
1345+AINeTlNSZXNvdXJjZU5hbWWAEYAPgBBXTlNJbWFnZV8QD05TTWVudUNoZWNrbWFya9IANwA4AIcAiKIA
1346+iAA7XxAQTlNDdXN0b21SZXNvdXJjZdMADgAyAIAAgQCCAIyAEYAPgBNfEBBOU01lbnVNaXhlZFN0YXRl
1347+0gA3ADgAjwCQogCQADtaTlNNZW51SXRlbV8QHW9yZGVyRnJvbnRTdGFuZGFyZEFib3V0UGFuZWw60gA3
1348+ADgAkwCUowCUAJUAO18QFU5TTmliQ29udHJvbENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctMADgBiAGMA
1349+ZACYAJmAFoAYgBzYAA4AaQCbAGoAawBsAG0AbgBvAJ0AngCfAHIAcwB0AKJfEBFOU0tleUVxdWl2TW9k
1350+TWFza4AUgBoSABAAAIAbgA6AEoAZ0wAOAGkAeAB5AKUApoCQgJeAmVNOZXdRblxuZXdEb2N1bWVudDrT
1351+AA4AYgBjAGQArACtgBaAHoAh2AAOAGkAmwBqAGsAbABtAG4AbwCwAJ4AsQByAHMAdACigBSAH4AggA6A
1352+EoAZVUNsb3NlUXddcGVyZm9ybUNsb3NlOtMADgBiAGMAZAC6ALuAFoAjgCbYAA4AaQCbAGoAawBsAG0A
1353+bgBvAL4AngC/AHIAcwB0AHWAFIAkgCWADoASgAtfEBBIaWRlIEJTVFJBRWRpdG9yUWhVaGlkZTrTAA4A
1354+YgBjAGQAyADJgBaAKIAq1wAOAGkAagBrAGwAbQBuAG8AzABxAHIAcwB0AKKAFIApgA2ADoASgBlfEA9S
1355+ZXZlcnQgdG8gU2F2ZWRfEBZyZXZlcnREb2N1bWVudFRvU2F2ZWQ60wAOAGIAYwBkANUA1oAWgCyAL9gA
1356+DgBpAJsAagBrAGwAbQBuAG8A2QCeANoAcgBzAHQAooAUgC2ALoAOgBKAGVRTYXZlUXNdc2F2ZURvY3Vt
1357+ZW50OtMADgBiAGMAZADjAOSAFoAxgDXYAA4AaQCbAGoAawBsAG0AbgBvAOcAngDoAHIAcwB0AOuAFIAz
1358+gDSADoASgDLTAA4AaQB4AHkA7gDvgJCAkYCSXxAQQlNUUkFFZGl0b3IgSGVscFE/WXNob3dIZWxwOtMA
1359+DgBiAGMAZAD1APaAFoA3gDrYAA4AaQCbAGoAawBsAG0AbgBvAPkAngD6AHIAcwB0AKKAFIA4gDmADoAS
1360+gBllAE8AcABlAG4gJlFvXW9wZW5Eb2N1bWVudDrTAA4AYgBjAGQBAwEEgBaAPIA/2AAOAGkAmwBqAGsA
1361+bABtAG4AbwEHAJ4BCAByAHMAdAB1gBSAPYA+gA6AEoALXxAQUXVpdCBCU1RSQUVkaXRvclFxWnRlcm1p
1362+bmF0ZTrTAA4AYgBjAGQBEQESgBaAQYBF2AAOAGkAmwBqAGsAbABtAG4AbwEVAJ4BFgByAHMAdAEZgBSA
1363+Q4BEgA6AEoBC0wAOAGkAeAB5ARwBHYCQgKeAqVNDdXRReFRjdXQ60wAOAGIAYwBkASMBJIAWgEeAStgA
1364+DgBpAJsAagBrAGwAbQBuAG8BJwCeAHEAcgBzAHQBK4AUgEmADYAOgBKASNQADgBpAHcAeAB5AS4BLwEw
1365+gJCArICwgK5UWm9vbVxwZXJmb3JtWm9vbTrTAA4AYgBjAGQBNQE2gBaATIBP2AAOAGkAmwBqAGsAbABt
1366+AG4AbwE5AJ4BOgByAHMAdAErgBSATYBOgA6AEoBIWE1pbmltaXplUW1fEBNwZXJmb3JtTWluaWF0dXJp
1367+emU60wAOAGIAYwBkAUMBRIAWgFGAVNgADgBpAJsAagBrAGwAbQBuAG8BRwCeAUgAcgBzAHQBGYAUgFKA
1368+U4AOgBKAQlVQYXN0ZVF2VnBhc3RlOtMADgBiAGMAZAFRAVKAFoBWgFjYAA4AaQCbAGoAawBsAG0AbgBv
1369+AVUAngBxAHIAcwB0AHWAFIBXgA2ADoASgAtYU2hvdyBBbGxfEBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM6
1370+0wAOAGIAYwBkAV4BX4AWgFqAXdgADgBpAJsAagBrAGwAbQBuAG8BYgFjAWQAcgBzAHQAooAUgFsSABIA
1371+AIBcgA6AEoAZaABTAGEAdgBlACAAQQBzICZRU18QD3NhdmVEb2N1bWVudEFzOtMADgBiAGMAZAFtAW6A
1372+FoBfgGHZAA4BcABpAGoAmwBrAGwAbQBuAG8BcgFzANoBdQByAHMAdACiXU5TSXNBbHRlcm5hdGWAFAmA
1373+YIAuEgAYASiADoASgBlfEBJTYXZlIHRvIEJTIFN1cHBvcnRfEBZzYXZlVG9CU1N1cHBvcnRGb2xkZXI6
1374+0wAOAGIAYwBkAX0BfoAWgGOAZtgADgBpAJsAagBrAGwAbQBuAG8BgQCeAHEAcgBzAHQBhYAUgGWADYAO
1375+gBKAZNQADgBpAHcAeAB5AYgBiQGKgJCAm4CegJ1aQ2xlYXIgTWVudV8QFWNsZWFyUmVjZW50RG9jdW1l
1376+bnRzOtMADgBiAGMAZAGPAZCAFoBogGvYAA4AaQCbAGoAawBsAG0AbgBvAZMAngGUAHIAcwB0AKKAFIBp
1377+gGqADoASgBlmAFAAcgBpAG4AdCAmUXBecHJpbnREb2N1bWVudDrTAA4AYgBjAGQBnQGegBaAbYBw2QAO
1378+AaAAaQCbAGoAawBsAG0AbgBvAHEBowFjAaQAcgBzAHQAollOU1Rvb2xUaXCAFIANgG6Ab4AOgBKAGV1Q
1379+YWdlIFNldHVwLi4uUVBecnVuUGFnZUxheW91dDrTAA4AYgBjAGQBrQGugBaAcoB02AAOAGkAmwBqAGsA
1380+bABtAG4AbwGxAbIAvwByAHMAdAB1gBSAcxIAGAAAgCWADoASgAtbSGlkZSBPdGhlcnNfEBZoaWRlT3Ro
1381+ZXJBcHBsaWNhdGlvbnM60wAOAGIAYwBkAbsBvIAWgHaAedgADgBpAJsAagBrAGwAbQBuAG8BvwCeAcAA
1382+cgBzAHQBGYAUgHeAeIAOgBKAQlRDb3B5UWNVY29weTrTAA4AYgBjAGQByQHKgBaAe4B+2AAOAGkAmwBq
1383+AGsAbABtAG4AbwHNAWMBzgByAHMAdAEZgBSAfIB9gA6AEoBCVFJlZG9RWlVyZWRvOtMADgBiAGMAZAHX
1384+AdiAFoCAgILYAA4AaQCbAGoAawBsAG0AbgBvAdsAngBxAHIAcwB0ASuAFICBgA2ADoASgEhfEBJCcmlu
1385+ZyBBbGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrTAA4AYgBjAGQB5AHlgBaAhICH2AAOAGkAmwBq
1386+AGsAbABtAG4AbwHoAJ4B6QByAHMAdAEZgBSAhYCGgA6AEoBCVFVuZG9RelV1bmRvOtIANwA4AfEB8qMB
1387+8gHzADteTlNNdXRhYmxlQXJyYXlXTlNBcnJhedIADgA+AfUB9oC8rxAxAbsB+ABmAOsB+wH8AJgB/gH/
1388+AQMBNQHkAMgCBAIFAgYCBwIIAVECCgDjAgwBGQD1AKwB1wGtAhICEwFtAckCFgFeALoBhQIaAhsCHADV
1389+AUMAogB1ARECIgGPASMBfQGdASuAdoCKgAqAMoCTgJaAGIChgJ+APIBMgISAKICggKKAo4CmgKuAVoCx
1390+gDGAmoBCgDeAHoCAgHKAqoCygF+Ae4CNgFqAI4BkgLOAr4C3gCyAUYAZgAuAQYCUgGiAR4BjgG2ASNoA
1391+DgIpAGkAmwBqAGsAbABtAG4CKgBvAhYCLQCeAHEAcgBzAHQAdQIyWU5TU3VibWVudVhOU0FjdGlvboAU
1392+gI2Ai4ANgA6AEoALgIxYU2VydmljZXNec3VibWVudUFjdGlvbjrUAA4AaQB3AHgAeQItAjgCOYCQgIuA
1393+j4CO0gAOAD4ARgI8gIigXxAPX05TU2VydmljZXNNZW510gA3ADgCPwBuogBuADtUSGVscNIADgA+AEYC
1394+Q4CIoQDjgDHaAA4CKQBpAJsAagBrAGwAbQBuAioAbwDrAO4AngBxAHIAcwB0AiICTYAUgDKAkYANgA6A
1395+EoCUgJXUAA4AaQB3AHgAeQJQAlECUoCQgLmAu4C62gAOAikAaQCbAGoAawBsAG0AbgIqAG8AogClAJ4A
1396+cQByAHMAdAIiAluAFIAZgJeADYAOgBKAlICYVEZpbGXSAA4APgBGAl+AiKwAmAD1AgwB/wCsANUBbQFe
1397+AMgCBAGdAY+AGIA3gJqAn4AegCyAX4BagCiAoIBtgGjaAA4CKQBpAJsAagBrAGwAbQBuAioAbwGFAYgA
1398+ngBxAHIAcwB0AKICdIAUgGSAm4ANgA6AEoAZgJxbT3BlbiBSZWNlbnTSAA4APgBGAniAiKEBfYBjXxAW
1399+X05TUmVjZW50RG9jdW1lbnRzTWVuddoADgBpAJsCfABqAn0AawBsAG0AbgBvAHEAngFyAHEBcgByAHMA
1400+dACiXU5TSXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVkgBSADQmADQmADoASgBnaAA4AaQCbAnwAagJ9AGsA
1401+bABtAG4AbwBxAJ4BcgBxAXIAcgBzAHQAooAUgA0JgA0JgA6AEoAZ2gAOAGkAmwJ8AGoCfQBrAGwAbQBu
1402+AG8AcQCeAXIAcQFyAHIAcwB0AHWAFIANCYANCYAOgBKAC9oADgBpAJsCfABqAn0AawBsAG0AbgBvAHEA
1403+ngFyAHEBcgByAHMAdAB1gBSADQmADQmADoASgAvYAA4AaQCbAGoAawBsAG0AbgBvAqMAngKkAHIAcwB0
1404+AHWAFICkgKWADoASgAtsAFAAcgBlAGYAZQByAGUAbgBjAGUAcyAmUSzaAA4CKQBpAJsAagBrAGwAbQBu
1405+AioAbwEZARwAngBxAHIAcwB0AiICsoAUgEKAp4ANgA6AEoCUgKhURWRpdNIADgA+AEYCtoCIpgHkAckC
1406+EgERAbsBQ4CEgHuAqoBBgHaAUdoADgBpAJsCfABqAn0AawBsAG0AbgBvAHEAngFyAHEBcgByAHMAdAEZ
1407+gBSADQmADQmADoASgELaAA4CKQBpAJsAagBrAGwAbQBuAioAbwErAS4AngBxAHIAcwB0AiICzoAUgEiA
1408+rIANgA6AEoCUgK1WV2luZG930gAOAD4ARgLSgIikATUBIwIbAdeATIBHgK+AgNoADgBpAJsCfABqAn0A
1409+awBsAG0AbgBvAHEAngFyAHEBcgByAHMAdAErgBSADQmADQmADoASgEheX05TV2luZG93c01lbnXSAA4A
1410+MgAzADSABIAD2gAOAGkAmwJ8AGoCfQBrAGwAbQBuAG8AcQCeAXIAcQFyAHIAcwB0AHWAFIANCYANCYAO
1411+gBKAC9oADgIpAGkAmwBqAGsAbABtAG4CKgBvAHUAegCeAHEAcgBzAHQCIgL1gBSAC4C0gA2ADoASgJSA
1412+tVtCU1RSQUVkaXRvctIADgA+AEYC+YCIqwBmAgUCBgITAfgCHAC6Aa0BUQH+AQOACoCigKOAsoCKgLeA
1413+I4BygFaAoYA82gAOAGkAmwJ8AGoCfQBrAGwAbQBuAG8AcQCeAXIAcQFyAHIAcwB0AHWAFIANCYANCYAO
1414+gBKAC1xfTlNBcHBsZU1lbnVZQU1haW5NZW510gAOAD4ARgMSgIilAhoB/AIHAggB+4CzgJaApoCrgJNb
1415+X05TTWFpbk1lbnXSADcAOAMaAfOiAfMAO9IADgA+AfUDHYC8rxAxARkAdQB1AfsCIgIiAKIAdQCiAHUB
1416+KwEZAKIAogB1AHUCIgIiAHUAHwDrAKICBwCiAKIBKwB1ARkAdQCiARkB+ACiAHUCDAIiASsAdQCiARkB
1417+/AIaARkAHwCiASsBhQCiAgiAQoALgAuAk4CUgJSAGYALgBmAC4BIgEKAGYAZgAuAC4CUgJSAC4ACgDKA
1418+GYCmgBmAGYBIgAuAQoALgBmAQoCKgBmAC4CagJSASIALgBmAQoCWgLOAQoACgBmASIBkgBmAq9IADgA+
1419+AfUDUYC8rxAyAbsB+ABmAOsB+wH8AJgB/gH/AMgB5AE1AQMCBAIFAgYCBwIIAB8BUQIKAKwA4wEZAgwA
1420+9QHXAa0CEgITAW0BXgHJAhYAugGFAhoCGwIcANUAogFDAHUBEQIiAY8BIwF9AZ0BK4B2gIqACoAygJOA
1421+loAYgKGAn4AogISATIA8gKCAooCjgKaAq4ACgFaAsYAegDGAQoCagDeAgIBygKqAsoBfgFqAe4CNgCOA
1422+ZICzgK+At4AsgBmAUYALgEGAlIBogEeAY4BtgEjSAA4APgH1A4aAvK8QMgOHA4gDiQOKA4sDjAONA44D
1423+jwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wD
1424+rQOuA68DsAOxA7IDswO0A7UDtgO3A7iAwIDBgMKAw4DEgMWAxoDHgMiAyYDKgMuAzIDNgM6Az4DQgNGA
1425+0oDTgNSA1YDWgNeA2IDZgNqA24DcgN2A3oDfgOCA4YDigOOA5IDlgOaA54DogOmA6oDrgOyA7YDugO+A
1426+8IDxXxAQTWVudSBJdGVtIChDb3B5KV8QFE1lbnUgSXRlbSAoU2VydmljZXMpXxAdTWVudSBJdGVtIChB
1427+Ym91dCBCU1RSQUVkaXRvcilRMlExXxAQTWVudSBJdGVtIChGaWxlKVE5W1NlcGFyYXRvci0yUTdSMTBf
1428+EBBNZW51IEl0ZW0gKFVuZG8pXxAUTWVudSBJdGVtIChNaW5pbWl6ZSlUMTExMVMyLTFbU2VwYXJhdG9y
1429+LTNTMTIxXxAQTWVudSBJdGVtIChFZGl0KV8QEk1lbnUgSXRlbSAoV2luZG93KVxGaWxlJ3MgT3duZXJf
1430+EBRNZW51IEl0ZW0gKFNob3cgQWxsKVtBcHBsaWNhdGlvblMxLTFfEBxNZW51IEl0ZW0gKEJTVFJBRWRp
1431+dG9yIEhlbHApW01lbnUgKEVkaXQpXxAXTWVudSBJdGVtIChPcGVuIFJlY2VudClvEBEATQBlAG4AdQAg
1432+AEkAdABlAG0AIAAoAE8AcABlAG4gJgApXxAeTWVudSBJdGVtIChCcmluZyBBbGwgdG8gRnJvbnQpXxAX
1433+TWVudSBJdGVtIChIaWRlIE90aGVycylZU2VwYXJhdG9yW1NlcGFyYXRvci00XxAeTWVudSBJdGVtIChT
1434+YXZlIHRvIEJTIFN1cHBvcnQpUThfEBBNZW51IEl0ZW0gKFJlZG8pXxAPTWVudSAoU2VydmljZXMpXxAc
1435+TWVudSBJdGVtIChIaWRlIEJTVFJBRWRpdG9yKV8QEk1lbnUgKE9wZW4gUmVjZW50KV8QF01lbnUgSXRl
1436+bSAoQlNUUkFFZGl0b3IpW1NlcGFyYXRvci0xW1NlcGFyYXRvci01UTNbTWVudSAoRmlsZSlfEBFNZW51
1437+IEl0ZW0gKFBhc3RlKV8QEk1lbnUgKEJTVFJBRWRpdG9yKV8QD01lbnUgSXRlbSAoQ3V0KVhNYWluTWVu
1438+dVE2XxAQTWVudSBJdGVtIChab29tKV8QFk1lbnUgSXRlbSAoQ2xlYXIgTWVudSlRNV1NZW51IChXaW5k
1439+b3cp0gAOAD4B9QPtgLyg0gAOAD4B9QPwgLyg0gAOAD4B9QPzgLyvEEoAWAG7AFcASwH4AGYASADrAfsB
1440+/ABPAJgAUgH+Af8ATAEDATUB5ADIAFUCBABRAgUATQIGAFwATgAfAggBUQIHAFsCCgDjAgwBGQD1AKwB
1441+1wBZAa0CEgITAW0ASQHJAhYBXgC6AFYBhQIaAF8CGwIcANUBQwCiAF4AdQBUAFMBEQIiAY8BIwBaAEoB
1442+fQBdAZ0BKwBQgGKAdoBegCKAioAKgAmAMoCTgJaANoAYgEaAoYCfgCeAPIBMgISAKIBVgKCAQICigCuA
1443+o4B1gDCAAoCrgFaApoBxgLGAMYCagEKAN4AegICAZ4BygKqAsoBfgBeAe4CNgFqAI4BZgGSAs4CDgK+A
1444+t4AsgFGAGYB/gAuAUIBLgEGAlIBogEeAbIAdgGOAeoBtgEiAO9IADgA+AfUEQIC8rxBKBEEEQgRDBEQE
1445+RQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIE
1446+YwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAE
1447+gQSCBIMEhASFBIYEhwSIBIkEioD2gPeA+ID5gPqA+4D8gP2A/oD/gQEAgQEBgQECgQEDgQEEgQEFgQEG
1448+gQEHgQEIgQEJgQEKgQELgQEMgQENgQEOgQEPgQEQgQERgQESgQETgQEUgQEVgQEWgQEXgQEYgQEZgQEa
1449+gQEbgQEcgQEdgQEegQEfgQEggQEhgQEigQEjgQEkgQElgQEmgQEngQEogQEpgQEqgQErgQEsgQEtgQEu
1450+gQEvgQEwgQExgQEygQEzgQE0gQE1gQE2gQE3gQE4gQE5gQE6gQE7gQE8gQE9gQE+gQE/EH8QxREBdxEB
1451+bxCDEDoQjhBqEGcQUxEBdBBSEPAQlRBPEQFsEIgQFxDPEHARAXIQShDkEOwRAWoQgRDgEQFoEQF4EBMQ
1452+lhDZEQFwE//////////9EG8QfBDNEEgQSRAFEQF1EJEQzhCPEQF2EQFzENcQghBQEIYRAWsQfRA4EN8Q
1453+XBCQEEsQyxBRECcQORDiECUQxxAdEE4Q7xBXEMEQfhDnEE0QGBEBcdIADgA+AEYE14CIoNIADgA+AfUE
1454+2oC8oNIADgA+AfUE3YC8oNIANwA4BN8E4KIE4AA7Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8A
1455+RABSAFQAZgLyAvgDQwNKA1EDXwNxA40DmwOnA7MDwQPMA9oD9gQEBBcEKQRDBE0EWgRcBF8EYQRjBGYE
1456+aARqBGwEbgRwBHIEdQR3BHkEewR+BIEEgwSMBJgEmgScBKoEswS8BMcEzATbBOQE9wUABQsFDQUOBRcF
1457+HgUrBTEFOgU8BW8FcQVzBXUFdwV5BXsFfQV/BYEFgwWFBYcFiQWLBY0FjwWRBZMFlQWXBZkFmwWdBZ8F
1458+sAW+BccFzwXRBdMF1QXXBfQF/AYHBhUGHwYsBjMGNQY3BjkGPgZABkIGRAZVBlwGaAZqBmwGbgZwBoQG
1459+hQaSBqEGowalBqcGrwbBBsoGzwbiBu8G8QbzBvUHCAcRBxYHIQdBB0oHUQdpB3gHhQeHB4kHiwesB8AH
1460+wgfEB8kHywfNB88H0QfeB+AH4gfkB+gH6gf3CAQIBggICAoIKwgtCC8IMQgzCDUINwg9CD8ITQhaCFwI
1461+XghgCIEIgwiFCIcIiQiLCI0IoAiiCKgItQi3CLkIuwjYCNoI3AjeCOAI4gjkCPYJDwkcCR4JIAkiCUMJ
1462+RQlHCUkJSwlNCU8JVAlWCWQJcQlzCXUJdwmYCZoJnAmeCaAJogmkCbEJswm1CbcJygnMCdYJ4wnlCecJ
1463+6QoKCgwKDgoQChIKFAoWCiEKIwoxCj4KQApCCkQKZQpnCmkKawptCm8KcQqECoYKkQqeCqAKogqkCsUK
1464+xwrJCssKzQrPCtEK3grgCuIK5AroCuoK7wr8Cv4LAAsCCyMLJQsnCykLKwstCy8LQAtCC0QLRgtIC00L
1465+WgtnC2kLawttC44LkAuSC5QLlguYC5oLowulC7sLyAvKC8wLzgvvC/EL8wv1C/cL+Qv7DAEMAwwKDBcM
1466+GQwbDB0MPgxADEIMRAxGDEgMSgxTDGwMeQx7DH0MfwygDKIMpAypDKsMrQyvDLEMwgzEDNYM4wzlDOcM
1467+6Q0ODRwNHg0fDSENIw0oDSoNLA0uDUMNXA1pDWsNbQ1vDZANkg2UDZYNmA2aDZwNrQ2vDbENsw21DcAN
1468+2A3lDecN6Q3rDgwODg4QDhIOFA4WDhgOJQ4nDjYOQw5FDkcOSQ5uDngOeg58Dn4OgA6CDoQOhg6UDpYO
1469+pQ6yDrQOtg64DtkO2w7dDuIO5A7mDugO6g72Dw8PHA8eDyAPIg9DD0UPRw9JD0sPTQ9PD1QPVg9cD2kP
1470+aw9tD28PkA+SD5QPlg+YD5oPnA+hD6MPqQ+2D7gPug+8D90P3w/hD+MP5Q/nD+kP/hAQEB0QHxAhECMQ
1471+RBBGEEgQShBMEE4QUBBVEFcQXRBmEG0QfBCEEI0QjxD0EPYQ+BD6EPwQ/hEAEQIRBBEGEQgRChEMEQ4R
1472+EBESERQRFhEYERoRHBEeESARIhEkESYRKBEqESwRLhEwETIRNBE2ETgROhE8ET4RQBFCEUQRRhFIEUoR
1473+TBFOEVARUhFUEVYRfxGJEZIRlBGWEZgRmhGcEZ4RoBGiEasRuhHLEc0RzxHREdMR3BHeEd8R8RH6Ef8S
1474+BBINEg8SEhIUEj0SPxJBEkMSRRJHEkkSSxJNEl4SYBJiEmQSZhKPEpESkxKVEpcSmRKbEp0SnxKkEq0S
1475+rxLIEsoSzBLOEtAS0hLUEtYS2BLaEtwS3hLgEwkTCxMNEw8TERMTExUTFxMZEyUTLhMwEzMTNRNOE3cT
1476+hROSE5QTlhOXE5kTmhOcE54ToBPJE8sTzRPOE9AT0RPTE9UT1xQAFAIUBBQFFAcUCBQKFAwUDhQ3FDkU
1477+OxQ8FD4UPxRBFEMURRRmFGgUahRsFG4UcBRyFIsUjRS2FLgUuhS8FL4UwBTCFMQUxhTLFNQU1hTjFOUU
1478+5xTpFOsU7RTvFRgVGhUcFR0VHxUgFSIVJBUmFU8VURVTFVUVVxVZFVsVXRVfFWYVbxVxFXoVfBV+FYAV
1479+ghWrFa0VrxWwFbIVsxW1FbcVuRXIFdEV0xXVFf4WABYCFgMWBRYGFggWChYMFjUWNxY5FjsWPRY/FkEW
1480+QxZFFlEWWhZcFnMWdRZ3FnkWexZ9Fn8WgRaDFoUWhxaJFrIWtBa2FrcWuRa6FrwWvhbAFs0W1xbgFuIW
1481+7RbvFvEW8xb1FvcXAxcMFxEXGhccF4EXgxeFF4cXiReLF40XjxeRF5MXlReXF5kXmxedF58XoRejF6UX
1482+pxepF6sXrRevF7EXsxe1F7cXuRe7F70XvxfBF8MXxRfHF8kXyxfNF88X0RfTF9UX1xfZF9sX3RffF+EX
1483+4xfsF+4YVRhXGFkYWxhdGF8YYRhjGGUYZxhpGGsYbRhvGHEYcxh1GHcYeRh7GH0YfxiBGIMYhRiHGIkY
1484+ixiNGI8YkRiTGJUYlxiZGJsYnRifGKEYoxilGKcYqRirGK0YrxixGLMYtRi3GLkYwhjEGSsZLRkvGTEZ
1485+Mxk1GTcZORk7GT0ZPxlBGUMZRRlHGUkZSxlNGU8ZURlTGVUZVxlZGVsZXRlfGWEZYxllGWcZaRlrGW0Z
1486+bxlxGXMZdRl3GXkZexl9GX8ZgRmDGYUZhxmJGYsZjRmPGaIZuRnZGdsZ3RnwGfIZ/hoAGgMaFhotGjIa
1487+NhpCGkYaWRpuGnsakhqeGqIawRrNGucbDBstG0cbURtdG34bgBuTG6UbxBvZG/Mb/xwLHA0cGRwtHEIc
1488+VBxdHF8cchyLHI0cmxykHKYcpxywHLIcsxy8HL4dVR1XHVkdWx1dHV8dYR1jHWUdZx1pHWsdbR1vHXEd
1489+cx11HXcdeR17HX0dfx2BHYMdhR2HHYkdix2NHY8dkR2THZUdlx2ZHZsdnR2fHaEdox2lHacdqR2rHa0d
1490+rx2xHbMdtR23Hbkdux29Hb8dwR3DHcUdxx3JHcsdzR3PHdEd0x3VHdcd2R3bHd0d3x3hHeMd5R3nHekd
1491+8h30HosejR6PHpEekx6VHpcemR6bHp0enx6iHqUeqB6rHq4esR60Hrceuh69HsAewx7GHskezB7PHtIe
1492+1R7YHtse3h7hHuQe5x7qHu0e8B7zHvYe+R78Hv8fAh8FHwgfCx8OHxEfFB8XHxofHR8gHyMfJh8pHywf
1493+Lx8yHzUfOB87Hz4fQR9EH0cfSh9NH1AfUx9WH1kfXB9fH2EfYx9mH2kfax9tH28fcR9zH3UfeB96H3wf
1494+fh+AH4MfhR+HH4kfix+OH5Afkh+UH5cfmR+bH54foR+jH6Ufpx+qH7MftR+3H7kfux+9H78fwh/EH8Yf
1495+yB/LH84f0B/SH9Qf1h/ZH9sf3R/fH+Ef4x/lH+cf6R/rH+0f7x/xH/Mf9R/3H/kf+x/9H/8gASADIAUg
1496+CCARIBMgFCAdIB8gICApICsgLCA1IDoAAAAAAAACAgAAAAAAAAThAAAAAAAAAAAAAAAAAAAgSQ</bytes>
1497+ </object>
1498+ </data>
1499+</archive>
Binary files /dev/null and b/English.lproj/MainMenu.nib/keyedobjects.nib differ
--- /dev/null
+++ b/English.lproj/Makefile
@@ -0,0 +1,17 @@
1+
2+RM=/bin/rm
3+SED=/usr/local/bin/sed
4+ICONV=/usr/bin/iconv
5+
6+Loaclize_template=Localizable.strings.sed
7+temp_file=l.text
8+working_enc=utf-8
9+
10+Localizable: Localizable.strings
11+ ${ICONV} -f utf-16 -t ${working_enc} $< | ${SED} -f ${Loaclize_template} > ${temp_file}
12+ ${ICONV} -f ${working_enc} -t utf-16 ${temp_file} > $<
13+ ${RM} ${temp_file}
14+
15+checkLocalizable:
16+ plutil Localizable.strings
17+
--- /dev/null
+++ b/Info.plist
@@ -0,0 +1,55 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>CFBundleDevelopmentRegion</key>
6+ <string>English</string>
7+ <key>CFBundleDisplayName</key>
8+ <string>${EXECUTABLE_NAME}</string>
9+ <key>CFBundleDocumentTypes</key>
10+ <array>
11+ <dict>
12+ <key>CFBundleTypeExtensions</key>
13+ <array>
14+ <string>plist</string>
15+ </array>
16+ <key>CFBundleTypeIconFile</key>
17+ <string></string>
18+ <key>CFBundleTypeName</key>
19+ <string>DocumentType</string>
20+ <key>CFBundleTypeOSTypes</key>
21+ <array>
22+ <string>????</string>
23+ </array>
24+ <key>CFBundleTypeRole</key>
25+ <string>Editor</string>
26+ <key>NSDocumentClass</key>
27+ <string>BSTRADocument</string>
28+ </dict>
29+ </array>
30+ <key>CFBundleExecutable</key>
31+ <string>${EXECUTABLE_NAME}</string>
32+ <key>CFBundleIconFile</key>
33+ <string>BSTRAEditor</string>
34+ <key>CFBundleIdentifier</key>
35+ <string>com.masakih.BSTRAEditor</string>
36+ <key>CFBundleInfoDictionaryVersion</key>
37+ <string>6.0</string>
38+ <key>CFBundleName</key>
39+ <string>${EXECUTABLE_NAME}</string>
40+ <key>CFBundlePackageType</key>
41+ <string>APPL</string>
42+ <key>CFBundleShortVersionString</key>
43+ <string>1.0</string>
44+ <key>CFBundleSignature</key>
45+ <string>????</string>
46+ <key>CFBundleVersion</key>
47+ <string>1</string>
48+ <key>LSHasLocalizedDisplayName</key>
49+ <true/>
50+ <key>NSMainNibFile</key>
51+ <string>MainMenu</string>
52+ <key>NSPrincipalClass</key>
53+ <string>NSApplication</string>
54+</dict>
55+</plist>
--- /dev/null
+++ b/Japanese.lproj/BSTRADocument.nib/classes.nib
@@ -0,0 +1,43 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>IBClasses</key>
6+ <array>
7+ <dict>
8+ <key>ACTIONS</key>
9+ <dict>
10+ <key>saveToBSSupportFolder</key>
11+ <string>id</string>
12+ </dict>
13+ <key>CLASS</key>
14+ <string>BSTRADocument</string>
15+ <key>LANGUAGE</key>
16+ <string>ObjC</string>
17+ <key>OUTLETS</key>
18+ <dict>
19+ <key>blueActiveView</key>
20+ <string>BSCSTitleRulerImitation</string>
21+ <key>graphiteActiveView</key>
22+ <string>BSCSTitleRulerImitation</string>
23+ <key>inactiveView</key>
24+ <string>BSCSTitleRulerImitation</string>
25+ <key>infoView</key>
26+ <string>BSCSTitleRulerImitation</string>
27+ </dict>
28+ <key>SUPERCLASS</key>
29+ <string>NSDocument</string>
30+ </dict>
31+ <dict>
32+ <key>CLASS</key>
33+ <string>BSCSTitleRulerImitation</string>
34+ <key>LANGUAGE</key>
35+ <string>ObjC</string>
36+ <key>SUPERCLASS</key>
37+ <string>NSView</string>
38+ </dict>
39+ </array>
40+ <key>IBVersion</key>
41+ <string>1</string>
42+</dict>
43+</plist>
--- /dev/null
+++ b/Japanese.lproj/BSTRADocument.nib/info.nib
@@ -0,0 +1,20 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>IBFramework Version</key>
6+ <string>629</string>
7+ <key>IBLastKnownRelativeProjectPath</key>
8+ <string>../../BSTRAEditor.xcodeproj</string>
9+ <key>IBOldestOS</key>
10+ <integer>5</integer>
11+ <key>IBOpenObjects</key>
12+ <array>
13+ <integer>6</integer>
14+ </array>
15+ <key>IBSystem Version</key>
16+ <string>9C31</string>
17+ <key>targetFramework</key>
18+ <string>IBCocoaFramework</string>
19+</dict>
20+</plist>
Binary files /dev/null and b/Japanese.lproj/BSTRADocument.nib/keyedobjects.nib differ
--- /dev/null
+++ b/Japanese.lproj/InfoPlist.strings
@@ -0,0 +1,14 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>CFBundleDisplayName</key>
6+ <string>色を変える</string>
7+ <key>CFBundleGetInfoString</key>
8+ <string>色を変える 1.0</string>
9+ <key>CFBundleName</key>
10+ <string>色を変える</string>
11+ <key>NSHumanReadableCopyright</key>
12+ <string>© Hori,Masaki, 2008</string>
13+</dict>
14+</plist>
Binary files /dev/null and b/Japanese.lproj/Localizable.strings differ
--- /dev/null
+++ b/Japanese.lproj/Localizable.strings.sed
@@ -0,0 +1,8 @@
1+s/"Message001";/"“%@”はすでに存在します。置き換えてもよろしいですか?";/
2+s/"Message002";/"同じ名前のファイルまたはフォルダがすでに存在します。これを置き換えると現在の内容が上書きされます。";/
3+s/"Message005";/"“%@” の保存に失敗しました。";/
4+s/"Message006";/"“%@” の保存に失敗しました。";/
5+s/"Information.";/"BathyScaphe によって dat 落ちと判断されました。";/
6+s/"Title.";/"OSX専用2chブラウザ -BathyScaphe- 潜航深度 27m ";/
7+s/"Replace";/"置き換える";/
8+s/"Cancel";/"キャンセル";/
--- /dev/null
+++ b/Japanese.lproj/MainMenu.nib/designable.nib
@@ -0,0 +1,1506 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.01">
3+ <data>
4+ <int key="IBDocument.SystemTarget">1050</int>
5+ <string key="IBDocument.SystemVersion">9C31</string>
6+ <string key="IBDocument.InterfaceBuilderVersion">629</string>
7+ <string key="IBDocument.AppKitVersion">949.26</string>
8+ <string key="IBDocument.HIToolboxVersion">352.00</string>
9+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
10+ <bool key="EncodedWithXMLCoder">YES</bool>
11+ <integer value="81"/>
12+ </object>
13+ <object class="NSArray" key="IBDocument.PluginDependencies">
14+ <bool key="EncodedWithXMLCoder">YES</bool>
15+ <string id="27138665">com.apple.InterfaceBuilderKit</string>
16+ <string id="449545859">com.apple.InterfaceBuilder.CocoaPlugin</string>
17+ </object>
18+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
19+ <bool key="EncodedWithXMLCoder">YES</bool>
20+ <object class="NSCustomObject" id="1021">
21+ <string key="NSClassName" id="1019991699">NSApplication</string>
22+ </object>
23+ <object class="NSCustomObject" id="1014">
24+ <string key="NSClassName" id="742916659">FirstResponder</string>
25+ </object>
26+ <object class="NSCustomObject" id="1050">
27+ <reference key="NSClassName" ref="1019991699"/>
28+ </object>
29+ <object class="NSMenu" id="649796088">
30+ <string key="NSTitle">AMainMenu</string>
31+ <object class="NSMutableArray" key="NSMenuItems">
32+ <bool key="EncodedWithXMLCoder">YES</bool>
33+ <object class="NSMenuItem" id="694149608">
34+ <reference key="NSMenu" ref="649796088"/>
35+ <string type="base64-UTF8" key="NSTitle" id="117901344">6Imy44KS5aSJ44GI44KLA</string>
36+ <string key="NSKeyEquiv" id="1003"/>
37+ <int key="NSKeyEquivModMask">1048576</int>
38+ <int key="NSMnemonicLoc">2147483647</int>
39+ <object class="NSCustomResource" key="NSOnImage" id="94012877">
40+ <string key="NSClassName" id="370035618">NSImage</string>
41+ <string key="NSResourceName">NSMenuCheckmark</string>
42+ </object>
43+ <object class="NSCustomResource" key="NSMixedImage" id="282230191">
44+ <reference key="NSClassName" ref="370035618"/>
45+ <string key="NSResourceName">NSMenuMixedState</string>
46+ </object>
47+ <string key="NSAction">submenuAction:</string>
48+ <object class="NSMenu" key="NSSubmenu" id="110575045">
49+ <reference key="NSTitle" ref="117901344"/>
50+ <object class="NSMutableArray" key="NSMenuItems">
51+ <bool key="EncodedWithXMLCoder">YES</bool>
52+ <object class="NSMenuItem" id="238522557">
53+ <reference key="NSMenu" ref="110575045"/>
54+ <string type="base64-UTF8" key="NSTitle">6Imy44KS5aSJ44GI44KL44Gr44Gk44GE44GmA</string>
55+ <reference key="NSKeyEquiv" ref="1003"/>
56+ <int key="NSMnemonicLoc">2147483647</int>
57+ <reference key="NSOnImage" ref="94012877"/>
58+ <reference key="NSMixedImage" ref="282230191"/>
59+ </object>
60+ <object class="NSMenuItem" id="304266470">
61+ <reference key="NSMenu" ref="110575045"/>
62+ <bool key="NSIsDisabled">YES</bool>
63+ <bool key="NSIsSeparator">YES</bool>
64+ <reference key="NSTitle" ref="1003"/>
65+ <reference key="NSKeyEquiv" ref="1003"/>
66+ <int key="NSKeyEquivModMask">1048576</int>
67+ <int key="NSMnemonicLoc">2147483647</int>
68+ <reference key="NSOnImage" ref="94012877"/>
69+ <reference key="NSMixedImage" ref="282230191"/>
70+ </object>
71+ <object class="NSMenuItem" id="609285721">
72+ <reference key="NSMenu" ref="110575045"/>
73+ <string type="base64-UTF8" key="NSTitle">55Kw5aKD6Kit5a6aLi4uA</string>
74+ <string key="NSKeyEquiv">,</string>
75+ <int key="NSKeyEquivModMask">1048576</int>
76+ <int key="NSMnemonicLoc">2147483647</int>
77+ <reference key="NSOnImage" ref="94012877"/>
78+ <reference key="NSMixedImage" ref="282230191"/>
79+ </object>
80+ <object class="NSMenuItem" id="481834944">
81+ <reference key="NSMenu" ref="110575045"/>
82+ <bool key="NSIsDisabled">YES</bool>
83+ <bool key="NSIsSeparator">YES</bool>
84+ <reference key="NSTitle" ref="1003"/>
85+ <reference key="NSKeyEquiv" ref="1003"/>
86+ <int key="NSKeyEquivModMask">1048576</int>
87+ <int key="NSMnemonicLoc">2147483647</int>
88+ <reference key="NSOnImage" ref="94012877"/>
89+ <reference key="NSMixedImage" ref="282230191"/>
90+ </object>
91+ <object class="NSMenuItem" id="1046388886">
92+ <reference key="NSMenu" ref="110575045"/>
93+ <string type="base64-UTF8" key="NSTitle" id="218903295">44K144O844OT44K5A</string>
94+ <reference key="NSKeyEquiv" ref="1003"/>
95+ <int key="NSKeyEquivModMask">1048576</int>
96+ <int key="NSMnemonicLoc">2147483647</int>
97+ <reference key="NSOnImage" ref="94012877"/>
98+ <reference key="NSMixedImage" ref="282230191"/>
99+ <string key="NSAction">submenuAction:</string>
100+ <object class="NSMenu" key="NSSubmenu" id="752062318">
101+ <reference key="NSTitle" ref="218903295"/>
102+ <object class="NSMutableArray" key="NSMenuItems">
103+ <bool key="EncodedWithXMLCoder">YES</bool>
104+ </object>
105+ <string key="NSName">_NSServicesMenu</string>
106+ </object>
107+ </object>
108+ <object class="NSMenuItem" id="646227648">
109+ <reference key="NSMenu" ref="110575045"/>
110+ <bool key="NSIsDisabled">YES</bool>
111+ <bool key="NSIsSeparator">YES</bool>
112+ <reference key="NSTitle" ref="1003"/>
113+ <reference key="NSKeyEquiv" ref="1003"/>
114+ <int key="NSKeyEquivModMask">1048576</int>
115+ <int key="NSMnemonicLoc">2147483647</int>
116+ <reference key="NSOnImage" ref="94012877"/>
117+ <reference key="NSMixedImage" ref="282230191"/>
118+ </object>
119+ <object class="NSMenuItem" id="755159360">
120+ <reference key="NSMenu" ref="110575045"/>
121+ <string type="base64-UTF8" key="NSTitle">6Imy44KS5aSJ44GI44KL44KS6Zqg44GZA</string>
122+ <string key="NSKeyEquiv" id="457995140">h</string>
123+ <int key="NSKeyEquivModMask">1048576</int>
124+ <int key="NSMnemonicLoc">2147483647</int>
125+ <reference key="NSOnImage" ref="94012877"/>
126+ <reference key="NSMixedImage" ref="282230191"/>
127+ </object>
128+ <object class="NSMenuItem" id="342932134">
129+ <reference key="NSMenu" ref="110575045"/>
130+ <string type="base64-UTF8" key="NSTitle">44G744GL44KS6Zqg44GZA</string>
131+ <reference key="NSKeyEquiv" ref="457995140"/>
132+ <int key="NSKeyEquivModMask">1572864</int>
133+ <int key="NSMnemonicLoc">2147483647</int>
134+ <reference key="NSOnImage" ref="94012877"/>
135+ <reference key="NSMixedImage" ref="282230191"/>
136+ </object>
137+ <object class="NSMenuItem" id="908899353">
138+ <reference key="NSMenu" ref="110575045"/>
139+ <string type="base64-UTF8" key="NSTitle">44GZ44G544Gm44KS6KGo56S6A</string>
140+ <reference key="NSKeyEquiv" ref="1003"/>
141+ <int key="NSKeyEquivModMask">1048576</int>
142+ <int key="NSMnemonicLoc">2147483647</int>
143+ <reference key="NSOnImage" ref="94012877"/>
144+ <reference key="NSMixedImage" ref="282230191"/>
145+ </object>
146+ <object class="NSMenuItem" id="1056857174">
147+ <reference key="NSMenu" ref="110575045"/>
148+ <bool key="NSIsDisabled">YES</bool>
149+ <bool key="NSIsSeparator">YES</bool>
150+ <reference key="NSTitle" ref="1003"/>
151+ <reference key="NSKeyEquiv" ref="1003"/>
152+ <int key="NSKeyEquivModMask">1048576</int>
153+ <int key="NSMnemonicLoc">2147483647</int>
154+ <reference key="NSOnImage" ref="94012877"/>
155+ <reference key="NSMixedImage" ref="282230191"/>
156+ </object>
157+ <object class="NSMenuItem" id="632727374">
158+ <reference key="NSMenu" ref="110575045"/>
159+ <string type="base64-UTF8" key="NSTitle">6Imy44KS5aSJ44GI44KL44KS57WC5LqGA</string>
160+ <string key="NSKeyEquiv">q</string>
161+ <int key="NSKeyEquivModMask">1048576</int>
162+ <int key="NSMnemonicLoc">2147483647</int>
163+ <reference key="NSOnImage" ref="94012877"/>
164+ <reference key="NSMixedImage" ref="282230191"/>
165+ </object>
166+ </object>
167+ <string key="NSName">_NSAppleMenu</string>
168+ </object>
169+ </object>
170+ <object class="NSMenuItem" id="379814623">
171+ <reference key="NSMenu" ref="649796088"/>
172+ <string type="base64-UTF8" key="NSTitle" id="341890252">44OV44Kh44Kk44OrA</string>
173+ <reference key="NSKeyEquiv" ref="1003"/>
174+ <int key="NSKeyEquivModMask">1048576</int>
175+ <int key="NSMnemonicLoc">2147483647</int>
176+ <reference key="NSOnImage" ref="94012877"/>
177+ <reference key="NSMixedImage" ref="282230191"/>
178+ <string key="NSAction">submenuAction:</string>
179+ <object class="NSMenu" key="NSSubmenu" id="720053764">
180+ <reference key="NSTitle" ref="341890252"/>
181+ <object class="NSMutableArray" key="NSMenuItems">
182+ <bool key="EncodedWithXMLCoder">YES</bool>
183+ <object class="NSMenuItem" id="705341025">
184+ <reference key="NSMenu" ref="720053764"/>
185+ <string type="base64-UTF8" key="NSTitle">5paw6KaPA</string>
186+ <string key="NSKeyEquiv">n</string>
187+ <int key="NSKeyEquivModMask">1048576</int>
188+ <int key="NSMnemonicLoc">2147483647</int>
189+ <reference key="NSOnImage" ref="94012877"/>
190+ <reference key="NSMixedImage" ref="282230191"/>
191+ </object>
192+ <object class="NSMenuItem" id="722745758">
193+ <reference key="NSMenu" ref="720053764"/>
194+ <string type="base64-UTF8" key="NSTitle">6ZaL44GPLi4uA</string>
195+ <string key="NSKeyEquiv">o</string>
196+ <int key="NSKeyEquivModMask">1048576</int>
197+ <int key="NSMnemonicLoc">2147483647</int>
198+ <reference key="NSOnImage" ref="94012877"/>
199+ <reference key="NSMixedImage" ref="282230191"/>
200+ </object>
201+ <object class="NSMenuItem" id="1025936716">
202+ <reference key="NSMenu" ref="720053764"/>
203+ <string type="base64-UTF8" key="NSTitle" id="439664630">5pyA6L+R5L2/44Gj44Gf6aCF55uu44KS6ZaL44GPA</string>
204+ <reference key="NSKeyEquiv" ref="1003"/>
205+ <int key="NSKeyEquivModMask">1048576</int>
206+ <int key="NSMnemonicLoc">2147483647</int>
207+ <reference key="NSOnImage" ref="94012877"/>
208+ <reference key="NSMixedImage" ref="282230191"/>
209+ <string key="NSAction">submenuAction:</string>
210+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
211+ <reference key="NSTitle" ref="439664630"/>
212+ <object class="NSMutableArray" key="NSMenuItems">
213+ <bool key="EncodedWithXMLCoder">YES</bool>
214+ <object class="NSMenuItem" id="759406840">
215+ <reference key="NSMenu" ref="1065607017"/>
216+ <string type="base64-UTF8" key="NSTitle">44Oh44OL44Ol44O844KS5raI5Y67A</string>
217+ <reference key="NSKeyEquiv" ref="1003"/>
218+ <int key="NSKeyEquivModMask">1048576</int>
219+ <int key="NSMnemonicLoc">2147483647</int>
220+ <reference key="NSOnImage" ref="94012877"/>
221+ <reference key="NSMixedImage" ref="282230191"/>
222+ </object>
223+ </object>
224+ <string key="NSName">_NSRecentDocumentsMenu</string>
225+ </object>
226+ </object>
227+ <object class="NSMenuItem" id="425164168">
228+ <reference key="NSMenu" ref="720053764"/>
229+ <bool key="NSIsDisabled">YES</bool>
230+ <bool key="NSIsSeparator">YES</bool>
231+ <reference key="NSTitle" ref="1003"/>
232+ <reference key="NSKeyEquiv" ref="1003"/>
233+ <int key="NSKeyEquivModMask">1048576</int>
234+ <int key="NSMnemonicLoc">2147483647</int>
235+ <reference key="NSOnImage" ref="94012877"/>
236+ <reference key="NSMixedImage" ref="282230191"/>
237+ </object>
238+ <object class="NSMenuItem" id="776162233">
239+ <reference key="NSMenu" ref="720053764"/>
240+ <string type="base64-UTF8" key="NSTitle">6ZaJ44GY44KLA</string>
241+ <string key="NSKeyEquiv">w</string>
242+ <int key="NSKeyEquivModMask">1048576</int>
243+ <int key="NSMnemonicLoc">2147483647</int>
244+ <reference key="NSOnImage" ref="94012877"/>
245+ <reference key="NSMixedImage" ref="282230191"/>
246+ </object>
247+ <object class="NSMenuItem" id="1023925487">
248+ <reference key="NSMenu" ref="720053764"/>
249+ <string type="base64-UTF8" key="NSTitle">5L+d5a2YA</string>
250+ <string key="NSKeyEquiv" id="440736175">s</string>
251+ <int key="NSKeyEquivModMask">1048576</int>
252+ <int key="NSMnemonicLoc">2147483647</int>
253+ <reference key="NSOnImage" ref="94012877"/>
254+ <reference key="NSMixedImage" ref="282230191"/>
255+ </object>
256+ <object class="NSMenuItem" id="143968558">
257+ <reference key="NSMenu" ref="720053764"/>
258+ <bool key="NSIsAlternate">YES</bool>
259+ <string type="base64-UTF8" key="NSTitle">QlPjgrXjg53jg7zjg4jjg5Xjgqnjg6vjg4Djgavkv53lrZg</string>
260+ <reference key="NSKeyEquiv" ref="440736175"/>
261+ <int key="NSKeyEquivModMask">1572864</int>
262+ <int key="NSMnemonicLoc">2147483647</int>
263+ <reference key="NSOnImage" ref="94012877"/>
264+ <reference key="NSMixedImage" ref="282230191"/>
265+ </object>
266+ <object class="NSMenuItem" id="117038363">
267+ <reference key="NSMenu" ref="720053764"/>
268+ <string type="base64-UTF8" key="NSTitle">5Yil5ZCN44Gn5L+d5a2YLi4uA</string>
269+ <string key="NSKeyEquiv">S</string>
270+ <int key="NSKeyEquivModMask">1179648</int>
271+ <int key="NSMnemonicLoc">2147483647</int>
272+ <reference key="NSOnImage" ref="94012877"/>
273+ <reference key="NSMixedImage" ref="282230191"/>
274+ </object>
275+ <object class="NSMenuItem" id="579971712">
276+ <reference key="NSMenu" ref="720053764"/>
277+ <string type="base64-UTF8" key="NSTitle">5pyA5b6M44Gr5L+d5a2Y44GX44Gf54q25oWL44Gr5oi744GZA</string>
278+ <reference key="NSKeyEquiv" ref="1003"/>
279+ <int key="NSMnemonicLoc">2147483647</int>
280+ <reference key="NSOnImage" ref="94012877"/>
281+ <reference key="NSMixedImage" ref="282230191"/>
282+ </object>
283+ <object class="NSMenuItem" id="1010469920">
284+ <reference key="NSMenu" ref="720053764"/>
285+ <bool key="NSIsDisabled">YES</bool>
286+ <bool key="NSIsSeparator">YES</bool>
287+ <reference key="NSTitle" ref="1003"/>
288+ <reference key="NSKeyEquiv" ref="1003"/>
289+ <int key="NSKeyEquivModMask">1048576</int>
290+ <int key="NSMnemonicLoc">2147483647</int>
291+ <reference key="NSOnImage" ref="94012877"/>
292+ <reference key="NSMixedImage" ref="282230191"/>
293+ </object>
294+ <object class="NSMenuItem" id="294629803">
295+ <reference key="NSMenu" ref="720053764"/>
296+ <string type="base64-UTF8" key="NSTitle">44Oa44O844K46Kit5a6aLi4uA</string>
297+ <string key="NSKeyEquiv">P</string>
298+ <int key="NSKeyEquivModMask">1179648</int>
299+ <int key="NSMnemonicLoc">2147483647</int>
300+ <reference key="NSOnImage" ref="94012877"/>
301+ <reference key="NSMixedImage" ref="282230191"/>
302+ <reference key="NSToolTip" ref="1003"/>
303+ </object>
304+ <object class="NSMenuItem" id="49223823">
305+ <reference key="NSMenu" ref="720053764"/>
306+ <string type="base64-UTF8" key="NSTitle">44OX44Oq44Oz44OILi4uA</string>
307+ <string key="NSKeyEquiv">p</string>
308+ <int key="NSKeyEquivModMask">1048576</int>
309+ <int key="NSMnemonicLoc">2147483647</int>
310+ <reference key="NSOnImage" ref="94012877"/>
311+ <reference key="NSMixedImage" ref="282230191"/>
312+ </object>
313+ </object>
314+ </object>
315+ </object>
316+ <object class="NSMenuItem" id="952259628">
317+ <reference key="NSMenu" ref="649796088"/>
318+ <string type="base64-UTF8" key="NSTitle" id="218262024">57eo6ZuGA</string>
319+ <reference key="NSKeyEquiv" ref="1003"/>
320+ <int key="NSKeyEquivModMask">1048576</int>
321+ <int key="NSMnemonicLoc">2147483647</int>
322+ <reference key="NSOnImage" ref="94012877"/>
323+ <reference key="NSMixedImage" ref="282230191"/>
324+ <string key="NSAction">submenuAction:</string>
325+ <object class="NSMenu" key="NSSubmenu" id="789758025">
326+ <reference key="NSTitle" ref="218262024"/>
327+ <object class="NSMutableArray" key="NSMenuItems">
328+ <bool key="EncodedWithXMLCoder">YES</bool>
329+ <object class="NSMenuItem" id="1058277027">
330+ <reference key="NSMenu" ref="789758025"/>
331+ <string type="base64-UTF8" key="NSTitle">5Y+W44KK5raI44GZA</string>
332+ <string key="NSKeyEquiv">z</string>
333+ <int key="NSKeyEquivModMask">1048576</int>
334+ <int key="NSMnemonicLoc">2147483647</int>
335+ <reference key="NSOnImage" ref="94012877"/>
336+ <reference key="NSMixedImage" ref="282230191"/>
337+ </object>
338+ <object class="NSMenuItem" id="790794224">
339+ <reference key="NSMenu" ref="789758025"/>
340+ <string type="base64-UTF8" key="NSTitle">44KE44KK55u044GZA</string>
341+ <string key="NSKeyEquiv">Z</string>
342+ <int key="NSKeyEquivModMask">1179648</int>
343+ <int key="NSMnemonicLoc">2147483647</int>
344+ <reference key="NSOnImage" ref="94012877"/>
345+ <reference key="NSMixedImage" ref="282230191"/>
346+ </object>
347+ <object class="NSMenuItem" id="1040322652">
348+ <reference key="NSMenu" ref="789758025"/>
349+ <bool key="NSIsDisabled">YES</bool>
350+ <bool key="NSIsSeparator">YES</bool>
351+ <reference key="NSTitle" ref="1003"/>
352+ <reference key="NSKeyEquiv" ref="1003"/>
353+ <int key="NSKeyEquivModMask">1048576</int>
354+ <int key="NSMnemonicLoc">2147483647</int>
355+ <reference key="NSOnImage" ref="94012877"/>
356+ <reference key="NSMixedImage" ref="282230191"/>
357+ </object>
358+ <object class="NSMenuItem" id="296257095">
359+ <reference key="NSMenu" ref="789758025"/>
360+ <string type="base64-UTF8" key="NSTitle">44Kr44OD44OIA</string>
361+ <string key="NSKeyEquiv">x</string>
362+ <int key="NSKeyEquivModMask">1048576</int>
363+ <int key="NSMnemonicLoc">2147483647</int>
364+ <reference key="NSOnImage" ref="94012877"/>
365+ <reference key="NSMixedImage" ref="282230191"/>
366+ </object>
367+ <object class="NSMenuItem" id="860595796">
368+ <reference key="NSMenu" ref="789758025"/>
369+ <string type="base64-UTF8" key="NSTitle">44Kz44OU44O8A</string>
370+ <string key="NSKeyEquiv">c</string>
371+ <int key="NSKeyEquivModMask">1048576</int>
372+ <int key="NSMnemonicLoc">2147483647</int>
373+ <reference key="NSOnImage" ref="94012877"/>
374+ <reference key="NSMixedImage" ref="282230191"/>
375+ </object>
376+ <object class="NSMenuItem" id="29853731">
377+ <reference key="NSMenu" ref="789758025"/>
378+ <string type="base64-UTF8" key="NSTitle">44Oa44O844K544OIA</string>
379+ <string key="NSKeyEquiv">v</string>
380+ <int key="NSKeyEquivModMask">1048576</int>
381+ <int key="NSMnemonicLoc">2147483647</int>
382+ <reference key="NSOnImage" ref="94012877"/>
383+ <reference key="NSMixedImage" ref="282230191"/>
384+ </object>
385+ </object>
386+ </object>
387+ </object>
388+ <object class="NSMenuItem" id="713487014">
389+ <reference key="NSMenu" ref="649796088"/>
390+ <string type="base64-UTF8" key="NSTitle" id="736692043">44Km44Kk44Oz44OJ44KmA</string>
391+ <reference key="NSKeyEquiv" ref="1003"/>
392+ <int key="NSKeyEquivModMask">1048576</int>
393+ <int key="NSMnemonicLoc">2147483647</int>
394+ <reference key="NSOnImage" ref="94012877"/>
395+ <reference key="NSMixedImage" ref="282230191"/>
396+ <string key="NSAction">submenuAction:</string>
397+ <object class="NSMenu" key="NSSubmenu" id="835318025">
398+ <reference key="NSTitle" ref="736692043"/>
399+ <object class="NSMutableArray" key="NSMenuItems">
400+ <bool key="EncodedWithXMLCoder">YES</bool>
401+ <object class="NSMenuItem" id="1011231497">
402+ <reference key="NSMenu" ref="835318025"/>
403+ <string type="base64-UTF8" key="NSTitle">44GX44G+44GGA</string>
404+ <string key="NSKeyEquiv">m</string>
405+ <int key="NSKeyEquivModMask">1048576</int>
406+ <int key="NSMnemonicLoc">2147483647</int>
407+ <reference key="NSOnImage" ref="94012877"/>
408+ <reference key="NSMixedImage" ref="282230191"/>
409+ </object>
410+ <object class="NSMenuItem" id="575023229">
411+ <reference key="NSMenu" ref="835318025"/>
412+ <string type="base64-UTF8" key="NSTitle">5ouh5aSn77yP57iu5bCPA</string>
413+ <reference key="NSKeyEquiv" ref="1003"/>
414+ <int key="NSKeyEquivModMask">1048576</int>
415+ <int key="NSMnemonicLoc">2147483647</int>
416+ <reference key="NSOnImage" ref="94012877"/>
417+ <reference key="NSMixedImage" ref="282230191"/>
418+ </object>
419+ <object class="NSMenuItem" id="299356726">
420+ <reference key="NSMenu" ref="835318025"/>
421+ <bool key="NSIsDisabled">YES</bool>
422+ <bool key="NSIsSeparator">YES</bool>
423+ <reference key="NSTitle" ref="1003"/>
424+ <reference key="NSKeyEquiv" ref="1003"/>
425+ <int key="NSKeyEquivModMask">1048576</int>
426+ <int key="NSMnemonicLoc">2147483647</int>
427+ <reference key="NSOnImage" ref="94012877"/>
428+ <reference key="NSMixedImage" ref="282230191"/>
429+ </object>
430+ <object class="NSMenuItem" id="625202149">
431+ <reference key="NSMenu" ref="835318025"/>
432+ <string type="base64-UTF8" key="NSTitle">44GZ44G544Gm44KS5omL5YmN44Gr56e75YuVA</string>
433+ <reference key="NSKeyEquiv" ref="1003"/>
434+ <int key="NSKeyEquivModMask">1048576</int>
435+ <int key="NSMnemonicLoc">2147483647</int>
436+ <reference key="NSOnImage" ref="94012877"/>
437+ <reference key="NSMixedImage" ref="282230191"/>
438+ </object>
439+ </object>
440+ <string key="NSName">_NSWindowsMenu</string>
441+ </object>
442+ </object>
443+ <object class="NSMenuItem" id="391199113">
444+ <reference key="NSMenu" ref="649796088"/>
445+ <string type="base64-UTF8" key="NSTitle" id="574165549">44OY44Or44OXA</string>
446+ <reference key="NSKeyEquiv" ref="1003"/>
447+ <int key="NSKeyEquivModMask">1048576</int>
448+ <int key="NSMnemonicLoc">2147483647</int>
449+ <reference key="NSOnImage" ref="94012877"/>
450+ <reference key="NSMixedImage" ref="282230191"/>
451+ <string key="NSAction">submenuAction:</string>
452+ <object class="NSMenu" key="NSSubmenu" id="374024848">
453+ <reference key="NSTitle" ref="574165549"/>
454+ <object class="NSMutableArray" key="NSMenuItems">
455+ <bool key="EncodedWithXMLCoder">YES</bool>
456+ <object class="NSMenuItem" id="238773614">
457+ <reference key="NSMenu" ref="374024848"/>
458+ <string type="base64-UTF8" key="NSTitle">6Imy44KS5aSJ44GI44KL44OY44Or44OXA</string>
459+ <string key="NSKeyEquiv">?</string>
460+ <int key="NSKeyEquivModMask">1048576</int>
461+ <int key="NSMnemonicLoc">2147483647</int>
462+ <reference key="NSOnImage" ref="94012877"/>
463+ <reference key="NSMixedImage" ref="282230191"/>
464+ </object>
465+ </object>
466+ </object>
467+ </object>
468+ </object>
469+ <string key="NSName">_NSMainMenu</string>
470+ </object>
471+ </object>
472+ <object class="IBObjectContainer" key="IBDocument.Objects">
473+ <object class="NSMutableArray" key="connectionRecords">
474+ <bool key="EncodedWithXMLCoder">YES</bool>
475+ <object class="IBConnectionRecord">
476+ <object class="IBActionConnection" key="connection">
477+ <string key="label">performMiniaturize:</string>
478+ <reference key="source" ref="1014"/>
479+ <reference key="destination" ref="1011231497"/>
480+ </object>
481+ <int key="connectionID">37</int>
482+ </object>
483+ <object class="IBConnectionRecord">
484+ <object class="IBActionConnection" key="connection">
485+ <string key="label">arrangeInFront:</string>
486+ <reference key="source" ref="1014"/>
487+ <reference key="destination" ref="625202149"/>
488+ </object>
489+ <int key="connectionID">39</int>
490+ </object>
491+ <object class="IBConnectionRecord">
492+ <object class="IBActionConnection" key="connection">
493+ <string key="label">runPageLayout:</string>
494+ <reference key="source" ref="1014"/>
495+ <reference key="destination" ref="294629803"/>
496+ </object>
497+ <int key="connectionID">87</int>
498+ </object>
499+ <object class="IBConnectionRecord">
500+ <object class="IBActionConnection" key="connection">
501+ <string key="label">clearRecentDocuments:</string>
502+ <reference key="source" ref="1014"/>
503+ <reference key="destination" ref="759406840"/>
504+ </object>
505+ <int key="connectionID">127</int>
506+ </object>
507+ <object class="IBConnectionRecord">
508+ <object class="IBActionConnection" key="connection">
509+ <string key="label">orderFrontStandardAboutPanel:</string>
510+ <reference key="source" ref="1021"/>
511+ <reference key="destination" ref="238522557"/>
512+ </object>
513+ <int key="connectionID">142</int>
514+ </object>
515+ <object class="IBConnectionRecord">
516+ <object class="IBActionConnection" key="connection">
517+ <string key="label">performClose:</string>
518+ <reference key="source" ref="1014"/>
519+ <reference key="destination" ref="776162233"/>
520+ </object>
521+ <int key="connectionID">193</int>
522+ </object>
523+ <object class="IBConnectionRecord">
524+ <object class="IBActionConnection" key="connection">
525+ <string key="label">undo:</string>
526+ <reference key="source" ref="1014"/>
527+ <reference key="destination" ref="1058277027"/>
528+ </object>
529+ <int key="connectionID">223</int>
530+ </object>
531+ <object class="IBConnectionRecord">
532+ <object class="IBActionConnection" key="connection">
533+ <string key="label">copy:</string>
534+ <reference key="source" ref="1014"/>
535+ <reference key="destination" ref="860595796"/>
536+ </object>
537+ <int key="connectionID">224</int>
538+ </object>
539+ <object class="IBConnectionRecord">
540+ <object class="IBActionConnection" key="connection">
541+ <string key="label">paste:</string>
542+ <reference key="source" ref="1014"/>
543+ <reference key="destination" ref="29853731"/>
544+ </object>
545+ <int key="connectionID">226</int>
546+ </object>
547+ <object class="IBConnectionRecord">
548+ <object class="IBActionConnection" key="connection">
549+ <string key="label">cut:</string>
550+ <reference key="source" ref="1014"/>
551+ <reference key="destination" ref="296257095"/>
552+ </object>
553+ <int key="connectionID">228</int>
554+ </object>
555+ <object class="IBConnectionRecord">
556+ <object class="IBActionConnection" key="connection">
557+ <string key="label">redo:</string>
558+ <reference key="source" ref="1014"/>
559+ <reference key="destination" ref="790794224"/>
560+ </object>
561+ <int key="connectionID">231</int>
562+ </object>
563+ <object class="IBConnectionRecord">
564+ <object class="IBActionConnection" key="connection">
565+ <string key="label">performZoom:</string>
566+ <reference key="source" ref="1014"/>
567+ <reference key="destination" ref="575023229"/>
568+ </object>
569+ <int key="connectionID">240</int>
570+ </object>
571+ <object class="IBConnectionRecord">
572+ <object class="IBActionConnection" key="connection">
573+ <string key="label">showHelp:</string>
574+ <reference key="source" ref="1014"/>
575+ <reference key="destination" ref="238773614"/>
576+ </object>
577+ <int key="connectionID">360</int>
578+ </object>
579+ <object class="IBConnectionRecord">
580+ <object class="IBActionConnection" key="connection">
581+ <string key="label">saveDocument:</string>
582+ <reference key="source" ref="1014"/>
583+ <reference key="destination" ref="1023925487"/>
584+ </object>
585+ <int key="connectionID">362</int>
586+ </object>
587+ <object class="IBConnectionRecord">
588+ <object class="IBActionConnection" key="connection">
589+ <string key="label">saveDocumentAs:</string>
590+ <reference key="source" ref="1014"/>
591+ <reference key="destination" ref="117038363"/>
592+ </object>
593+ <int key="connectionID">363</int>
594+ </object>
595+ <object class="IBConnectionRecord">
596+ <object class="IBActionConnection" key="connection">
597+ <string key="label">revertDocumentToSaved:</string>
598+ <reference key="source" ref="1014"/>
599+ <reference key="destination" ref="579971712"/>
600+ </object>
601+ <int key="connectionID">364</int>
602+ </object>
603+ <object class="IBConnectionRecord">
604+ <object class="IBActionConnection" key="connection">
605+ <string key="label">hide:</string>
606+ <reference key="source" ref="1014"/>
607+ <reference key="destination" ref="755159360"/>
608+ </object>
609+ <int key="connectionID">367</int>
610+ </object>
611+ <object class="IBConnectionRecord">
612+ <object class="IBActionConnection" key="connection">
613+ <string key="label">hideOtherApplications:</string>
614+ <reference key="source" ref="1014"/>
615+ <reference key="destination" ref="342932134"/>
616+ </object>
617+ <int key="connectionID">368</int>
618+ </object>
619+ <object class="IBConnectionRecord">
620+ <object class="IBActionConnection" key="connection">
621+ <string key="label">terminate:</string>
622+ <reference key="source" ref="1014"/>
623+ <reference key="destination" ref="632727374"/>
624+ </object>
625+ <int key="connectionID">369</int>
626+ </object>
627+ <object class="IBConnectionRecord">
628+ <object class="IBActionConnection" key="connection">
629+ <string key="label">unhideAllApplications:</string>
630+ <reference key="source" ref="1014"/>
631+ <reference key="destination" ref="908899353"/>
632+ </object>
633+ <int key="connectionID">370</int>
634+ </object>
635+ <object class="IBConnectionRecord">
636+ <object class="IBActionConnection" key="connection">
637+ <string key="label">newDocument:</string>
638+ <reference key="source" ref="1014"/>
639+ <reference key="destination" ref="705341025"/>
640+ </object>
641+ <int key="connectionID">371</int>
642+ </object>
643+ <object class="IBConnectionRecord">
644+ <object class="IBActionConnection" key="connection">
645+ <string key="label">openDocument:</string>
646+ <reference key="source" ref="1014"/>
647+ <reference key="destination" ref="722745758"/>
648+ </object>
649+ <int key="connectionID">372</int>
650+ </object>
651+ <object class="IBConnectionRecord">
652+ <object class="IBActionConnection" key="connection">
653+ <string key="label">printDocument:</string>
654+ <reference key="source" ref="1014"/>
655+ <reference key="destination" ref="49223823"/>
656+ </object>
657+ <int key="connectionID">373</int>
658+ </object>
659+ <object class="IBConnectionRecord">
660+ <object class="IBActionConnection" key="connection">
661+ <string key="label" id="1008918551">saveToBSSupportFolder:</string>
662+ <reference key="source" ref="1014"/>
663+ <reference key="destination" ref="143968558"/>
664+ </object>
665+ <int key="connectionID">375</int>
666+ </object>
667+ </object>
668+ <object class="IBMutableOrderedSet" key="objectRecords">
669+ <object class="NSArray" key="orderedObjects">
670+ <bool key="EncodedWithXMLCoder">YES</bool>
671+ <object class="IBObjectRecord">
672+ <int key="objectID">0</int>
673+ <object class="NSArray" key="object" id="1049">
674+ <bool key="EncodedWithXMLCoder">YES</bool>
675+ </object>
676+ <reference key="children" ref="1048"/>
677+ <nil key="parent"/>
678+ </object>
679+ <object class="IBObjectRecord">
680+ <int key="objectID">-2</int>
681+ <reference key="object" ref="1021"/>
682+ <reference key="parent" ref="1049"/>
683+ <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
684+ </object>
685+ <object class="IBObjectRecord">
686+ <int key="objectID">-1</int>
687+ <reference key="object" ref="1014"/>
688+ <reference key="parent" ref="1049"/>
689+ <string key="objectName">First Responder</string>
690+ </object>
691+ <object class="IBObjectRecord">
692+ <int key="objectID">-3</int>
693+ <reference key="object" ref="1050"/>
694+ <reference key="parent" ref="1049"/>
695+ <string key="objectName">Application</string>
696+ </object>
697+ <object class="IBObjectRecord">
698+ <int key="objectID">29</int>
699+ <reference key="object" ref="649796088"/>
700+ <object class="NSMutableArray" key="children">
701+ <bool key="EncodedWithXMLCoder">YES</bool>
702+ <reference ref="713487014"/>
703+ <reference ref="694149608"/>
704+ <reference ref="391199113"/>
705+ <reference ref="952259628"/>
706+ <reference ref="379814623"/>
707+ </object>
708+ <reference key="parent" ref="1049"/>
709+ <string key="objectName">MainMenu</string>
710+ </object>
711+ <object class="IBObjectRecord">
712+ <int key="objectID">19</int>
713+ <reference key="object" ref="713487014"/>
714+ <object class="NSMutableArray" key="children">
715+ <bool key="EncodedWithXMLCoder">YES</bool>
716+ <reference ref="835318025"/>
717+ </object>
718+ <reference key="parent" ref="649796088"/>
719+ </object>
720+ <object class="IBObjectRecord">
721+ <int key="objectID">56</int>
722+ <reference key="object" ref="694149608"/>
723+ <object class="NSMutableArray" key="children">
724+ <bool key="EncodedWithXMLCoder">YES</bool>
725+ <reference ref="110575045"/>
726+ </object>
727+ <reference key="parent" ref="649796088"/>
728+ </object>
729+ <object class="IBObjectRecord">
730+ <int key="objectID">103</int>
731+ <reference key="object" ref="391199113"/>
732+ <object class="NSMutableArray" key="children">
733+ <bool key="EncodedWithXMLCoder">YES</bool>
734+ <reference ref="374024848"/>
735+ </object>
736+ <reference key="parent" ref="649796088"/>
737+ <string key="objectName" id="78802696">1</string>
738+ </object>
739+ <object class="IBObjectRecord">
740+ <int key="objectID">217</int>
741+ <reference key="object" ref="952259628"/>
742+ <object class="NSMutableArray" key="children">
743+ <bool key="EncodedWithXMLCoder">YES</bool>
744+ <reference ref="789758025"/>
745+ </object>
746+ <reference key="parent" ref="649796088"/>
747+ </object>
748+ <object class="IBObjectRecord">
749+ <int key="objectID">83</int>
750+ <reference key="object" ref="379814623"/>
751+ <object class="NSMutableArray" key="children">
752+ <bool key="EncodedWithXMLCoder">YES</bool>
753+ <reference ref="720053764"/>
754+ </object>
755+ <reference key="parent" ref="649796088"/>
756+ </object>
757+ <object class="IBObjectRecord">
758+ <int key="objectID">81</int>
759+ <reference key="object" ref="720053764"/>
760+ <object class="NSMutableArray" key="children">
761+ <bool key="EncodedWithXMLCoder">YES</bool>
762+ <reference ref="1023925487"/>
763+ <reference ref="117038363"/>
764+ <reference ref="49223823"/>
765+ <reference ref="722745758"/>
766+ <reference ref="705341025"/>
767+ <reference ref="1025936716"/>
768+ <reference ref="294629803"/>
769+ <reference ref="776162233"/>
770+ <reference ref="425164168"/>
771+ <reference ref="579971712"/>
772+ <reference ref="1010469920"/>
773+ <reference ref="143968558"/>
774+ </object>
775+ <reference key="parent" ref="379814623"/>
776+ </object>
777+ <object class="IBObjectRecord">
778+ <int key="objectID">75</int>
779+ <reference key="object" ref="1023925487"/>
780+ <reference key="parent" ref="720053764"/>
781+ <string key="objectName">3</string>
782+ </object>
783+ <object class="IBObjectRecord">
784+ <int key="objectID">80</int>
785+ <reference key="object" ref="117038363"/>
786+ <reference key="parent" ref="720053764"/>
787+ <string key="objectName">8</string>
788+ </object>
789+ <object class="IBObjectRecord">
790+ <int key="objectID">78</int>
791+ <reference key="object" ref="49223823"/>
792+ <reference key="parent" ref="720053764"/>
793+ <string key="objectName">6</string>
794+ </object>
795+ <object class="IBObjectRecord">
796+ <int key="objectID">72</int>
797+ <reference key="object" ref="722745758"/>
798+ <reference key="parent" ref="720053764"/>
799+ </object>
800+ <object class="IBObjectRecord">
801+ <int key="objectID">82</int>
802+ <reference key="object" ref="705341025"/>
803+ <reference key="parent" ref="720053764"/>
804+ <string key="objectName">9</string>
805+ </object>
806+ <object class="IBObjectRecord">
807+ <int key="objectID">124</int>
808+ <reference key="object" ref="1025936716"/>
809+ <object class="NSMutableArray" key="children">
810+ <bool key="EncodedWithXMLCoder">YES</bool>
811+ <reference ref="1065607017"/>
812+ </object>
813+ <reference key="parent" ref="720053764"/>
814+ </object>
815+ <object class="IBObjectRecord">
816+ <int key="objectID">77</int>
817+ <reference key="object" ref="294629803"/>
818+ <reference key="parent" ref="720053764"/>
819+ <string key="objectName">5</string>
820+ </object>
821+ <object class="IBObjectRecord">
822+ <int key="objectID">73</int>
823+ <reference key="object" ref="776162233"/>
824+ <reference key="parent" ref="720053764"/>
825+ <reference key="objectName" ref="78802696"/>
826+ </object>
827+ <object class="IBObjectRecord">
828+ <int key="objectID">79</int>
829+ <reference key="object" ref="425164168"/>
830+ <reference key="parent" ref="720053764"/>
831+ <string key="objectName">7</string>
832+ </object>
833+ <object class="IBObjectRecord">
834+ <int key="objectID">112</int>
835+ <reference key="object" ref="579971712"/>
836+ <reference key="parent" ref="720053764"/>
837+ <string key="objectName">10</string>
838+ </object>
839+ <object class="IBObjectRecord">
840+ <int key="objectID">74</int>
841+ <reference key="object" ref="1010469920"/>
842+ <reference key="parent" ref="720053764"/>
843+ <string key="objectName" id="272334373">2</string>
844+ </object>
845+ <object class="IBObjectRecord">
846+ <int key="objectID">125</int>
847+ <reference key="object" ref="1065607017"/>
848+ <object class="NSMutableArray" key="children">
849+ <bool key="EncodedWithXMLCoder">YES</bool>
850+ <reference ref="759406840"/>
851+ </object>
852+ <reference key="parent" ref="1025936716"/>
853+ </object>
854+ <object class="IBObjectRecord">
855+ <int key="objectID">126</int>
856+ <reference key="object" ref="759406840"/>
857+ <reference key="parent" ref="1065607017"/>
858+ </object>
859+ <object class="IBObjectRecord">
860+ <int key="objectID">205</int>
861+ <reference key="object" ref="789758025"/>
862+ <object class="NSMutableArray" key="children">
863+ <bool key="EncodedWithXMLCoder">YES</bool>
864+ <reference ref="1058277027"/>
865+ <reference ref="296257095"/>
866+ <reference ref="29853731"/>
867+ <reference ref="860595796"/>
868+ <reference ref="1040322652"/>
869+ <reference ref="790794224"/>
870+ </object>
871+ <reference key="parent" ref="952259628"/>
872+ </object>
873+ <object class="IBObjectRecord">
874+ <int key="objectID">207</int>
875+ <reference key="object" ref="1058277027"/>
876+ <reference key="parent" ref="789758025"/>
877+ </object>
878+ <object class="IBObjectRecord">
879+ <int key="objectID">199</int>
880+ <reference key="object" ref="296257095"/>
881+ <reference key="parent" ref="789758025"/>
882+ </object>
883+ <object class="IBObjectRecord">
884+ <int key="objectID">203</int>
885+ <reference key="object" ref="29853731"/>
886+ <reference key="parent" ref="789758025"/>
887+ </object>
888+ <object class="IBObjectRecord">
889+ <int key="objectID">197</int>
890+ <reference key="object" ref="860595796"/>
891+ <reference key="parent" ref="789758025"/>
892+ </object>
893+ <object class="IBObjectRecord">
894+ <int key="objectID">206</int>
895+ <reference key="object" ref="1040322652"/>
896+ <reference key="parent" ref="789758025"/>
897+ </object>
898+ <object class="IBObjectRecord">
899+ <int key="objectID">215</int>
900+ <reference key="object" ref="790794224"/>
901+ <reference key="parent" ref="789758025"/>
902+ </object>
903+ <object class="IBObjectRecord">
904+ <int key="objectID">106</int>
905+ <reference key="object" ref="374024848"/>
906+ <object class="NSMutableArray" key="children">
907+ <bool key="EncodedWithXMLCoder">YES</bool>
908+ <reference ref="238773614"/>
909+ </object>
910+ <reference key="parent" ref="391199113"/>
911+ <reference key="objectName" ref="272334373"/>
912+ </object>
913+ <object class="IBObjectRecord">
914+ <int key="objectID">111</int>
915+ <reference key="object" ref="238773614"/>
916+ <reference key="parent" ref="374024848"/>
917+ </object>
918+ <object class="IBObjectRecord">
919+ <int key="objectID">57</int>
920+ <reference key="object" ref="110575045"/>
921+ <object class="NSMutableArray" key="children">
922+ <bool key="EncodedWithXMLCoder">YES</bool>
923+ <reference ref="755159360"/>
924+ <reference ref="908899353"/>
925+ <reference ref="632727374"/>
926+ <reference ref="646227648"/>
927+ <reference ref="609285721"/>
928+ <reference ref="481834944"/>
929+ <reference ref="304266470"/>
930+ <reference ref="1046388886"/>
931+ <reference ref="1056857174"/>
932+ <reference ref="342932134"/>
933+ <reference ref="238522557"/>
934+ </object>
935+ <reference key="parent" ref="694149608"/>
936+ </object>
937+ <object class="IBObjectRecord">
938+ <int key="objectID">58</int>
939+ <reference key="object" ref="238522557"/>
940+ <reference key="parent" ref="110575045"/>
941+ </object>
942+ <object class="IBObjectRecord">
943+ <int key="objectID">134</int>
944+ <reference key="object" ref="755159360"/>
945+ <reference key="parent" ref="110575045"/>
946+ </object>
947+ <object class="IBObjectRecord">
948+ <int key="objectID">150</int>
949+ <reference key="object" ref="908899353"/>
950+ <reference key="parent" ref="110575045"/>
951+ </object>
952+ <object class="IBObjectRecord">
953+ <int key="objectID">136</int>
954+ <reference key="object" ref="632727374"/>
955+ <reference key="parent" ref="110575045"/>
956+ <string key="objectName">1111</string>
957+ </object>
958+ <object class="IBObjectRecord">
959+ <int key="objectID">144</int>
960+ <reference key="object" ref="646227648"/>
961+ <reference key="parent" ref="110575045"/>
962+ </object>
963+ <object class="IBObjectRecord">
964+ <int key="objectID">129</int>
965+ <reference key="object" ref="609285721"/>
966+ <reference key="parent" ref="110575045"/>
967+ <string key="objectName">121</string>
968+ </object>
969+ <object class="IBObjectRecord">
970+ <int key="objectID">143</int>
971+ <reference key="object" ref="481834944"/>
972+ <reference key="parent" ref="110575045"/>
973+ </object>
974+ <object class="IBObjectRecord">
975+ <int key="objectID">236</int>
976+ <reference key="object" ref="304266470"/>
977+ <reference key="parent" ref="110575045"/>
978+ </object>
979+ <object class="IBObjectRecord">
980+ <int key="objectID">131</int>
981+ <reference key="object" ref="1046388886"/>
982+ <object class="NSMutableArray" key="children">
983+ <bool key="EncodedWithXMLCoder">YES</bool>
984+ <reference ref="752062318"/>
985+ </object>
986+ <reference key="parent" ref="110575045"/>
987+ </object>
988+ <object class="IBObjectRecord">
989+ <int key="objectID">149</int>
990+ <reference key="object" ref="1056857174"/>
991+ <reference key="parent" ref="110575045"/>
992+ </object>
993+ <object class="IBObjectRecord">
994+ <int key="objectID">145</int>
995+ <reference key="object" ref="342932134"/>
996+ <reference key="parent" ref="110575045"/>
997+ </object>
998+ <object class="IBObjectRecord">
999+ <int key="objectID">130</int>
1000+ <reference key="object" ref="752062318"/>
1001+ <reference key="parent" ref="1046388886"/>
1002+ </object>
1003+ <object class="IBObjectRecord">
1004+ <int key="objectID">24</int>
1005+ <reference key="object" ref="835318025"/>
1006+ <object class="NSMutableArray" key="children">
1007+ <bool key="EncodedWithXMLCoder">YES</bool>
1008+ <reference ref="299356726"/>
1009+ <reference ref="625202149"/>
1010+ <reference ref="575023229"/>
1011+ <reference ref="1011231497"/>
1012+ </object>
1013+ <reference key="parent" ref="713487014"/>
1014+ </object>
1015+ <object class="IBObjectRecord">
1016+ <int key="objectID">92</int>
1017+ <reference key="object" ref="299356726"/>
1018+ <reference key="parent" ref="835318025"/>
1019+ </object>
1020+ <object class="IBObjectRecord">
1021+ <int key="objectID">5</int>
1022+ <reference key="object" ref="625202149"/>
1023+ <reference key="parent" ref="835318025"/>
1024+ </object>
1025+ <object class="IBObjectRecord">
1026+ <int key="objectID">239</int>
1027+ <reference key="object" ref="575023229"/>
1028+ <reference key="parent" ref="835318025"/>
1029+ </object>
1030+ <object class="IBObjectRecord">
1031+ <int key="objectID">23</int>
1032+ <reference key="object" ref="1011231497"/>
1033+ <reference key="parent" ref="835318025"/>
1034+ </object>
1035+ <object class="IBObjectRecord">
1036+ <int key="objectID">374</int>
1037+ <reference key="object" ref="143968558"/>
1038+ <reference key="parent" ref="720053764"/>
1039+ </object>
1040+ </object>
1041+ </object>
1042+ <object class="NSMutableDictionary" key="flattenedProperties">
1043+ <bool key="EncodedWithXMLCoder">YES</bool>
1044+ <object class="NSMutableArray" key="dict.sortedKeys">
1045+ <bool key="EncodedWithXMLCoder">YES</bool>
1046+ <string>-1.IBPluginDependency</string>
1047+ <string>-2.IBPluginDependency</string>
1048+ <string>-3.IBPluginDependency</string>
1049+ <string>103.IBPluginDependency</string>
1050+ <string>103.ImportedFromIB2</string>
1051+ <string>106.IBPluginDependency</string>
1052+ <string>106.ImportedFromIB2</string>
1053+ <string>106.editorWindowContentRectSynchronizationRect</string>
1054+ <string>111.IBPluginDependency</string>
1055+ <string>111.ImportedFromIB2</string>
1056+ <string>112.IBPluginDependency</string>
1057+ <string>112.ImportedFromIB2</string>
1058+ <string>124.IBPluginDependency</string>
1059+ <string>124.ImportedFromIB2</string>
1060+ <string>125.IBPluginDependency</string>
1061+ <string>125.ImportedFromIB2</string>
1062+ <string>125.editorWindowContentRectSynchronizationRect</string>
1063+ <string>126.IBPluginDependency</string>
1064+ <string>126.ImportedFromIB2</string>
1065+ <string>129.IBPluginDependency</string>
1066+ <string>129.ImportedFromIB2</string>
1067+ <string>130.IBPluginDependency</string>
1068+ <string>130.ImportedFromIB2</string>
1069+ <string>130.editorWindowContentRectSynchronizationRect</string>
1070+ <string>131.IBPluginDependency</string>
1071+ <string>131.ImportedFromIB2</string>
1072+ <string>134.IBPluginDependency</string>
1073+ <string>134.ImportedFromIB2</string>
1074+ <string>136.IBPluginDependency</string>
1075+ <string>136.ImportedFromIB2</string>
1076+ <string>143.IBPluginDependency</string>
1077+ <string>143.ImportedFromIB2</string>
1078+ <string>144.IBPluginDependency</string>
1079+ <string>144.ImportedFromIB2</string>
1080+ <string>145.IBPluginDependency</string>
1081+ <string>145.ImportedFromIB2</string>
1082+ <string>149.IBPluginDependency</string>
1083+ <string>149.ImportedFromIB2</string>
1084+ <string>150.IBPluginDependency</string>
1085+ <string>150.ImportedFromIB2</string>
1086+ <string>19.IBPluginDependency</string>
1087+ <string>19.ImportedFromIB2</string>
1088+ <string>197.IBPluginDependency</string>
1089+ <string>197.ImportedFromIB2</string>
1090+ <string>199.IBPluginDependency</string>
1091+ <string>199.ImportedFromIB2</string>
1092+ <string>203.IBPluginDependency</string>
1093+ <string>203.ImportedFromIB2</string>
1094+ <string>205.IBPluginDependency</string>
1095+ <string>205.ImportedFromIB2</string>
1096+ <string>205.editorWindowContentRectSynchronizationRect</string>
1097+ <string>206.IBPluginDependency</string>
1098+ <string>206.ImportedFromIB2</string>
1099+ <string>207.IBPluginDependency</string>
1100+ <string>207.ImportedFromIB2</string>
1101+ <string>215.IBPluginDependency</string>
1102+ <string>215.ImportedFromIB2</string>
1103+ <string>217.IBPluginDependency</string>
1104+ <string>217.ImportedFromIB2</string>
1105+ <string>23.IBPluginDependency</string>
1106+ <string>23.ImportedFromIB2</string>
1107+ <string>236.IBPluginDependency</string>
1108+ <string>236.ImportedFromIB2</string>
1109+ <string>239.IBPluginDependency</string>
1110+ <string>239.ImportedFromIB2</string>
1111+ <string>24.IBPluginDependency</string>
1112+ <string>24.ImportedFromIB2</string>
1113+ <string>24.editorWindowContentRectSynchronizationRect</string>
1114+ <string>29.IBPluginDependency</string>
1115+ <string>29.ImportedFromIB2</string>
1116+ <string>29.WindowOrigin</string>
1117+ <string>29.editorWindowContentRectSynchronizationRect</string>
1118+ <string>374.IBPluginDependency</string>
1119+ <string>5.IBPluginDependency</string>
1120+ <string>5.ImportedFromIB2</string>
1121+ <string>56.IBPluginDependency</string>
1122+ <string>56.ImportedFromIB2</string>
1123+ <string>57.IBPluginDependency</string>
1124+ <string>57.ImportedFromIB2</string>
1125+ <string>57.editorWindowContentRectSynchronizationRect</string>
1126+ <string>58.IBPluginDependency</string>
1127+ <string>58.ImportedFromIB2</string>
1128+ <string>72.IBPluginDependency</string>
1129+ <string>72.ImportedFromIB2</string>
1130+ <string>73.IBPluginDependency</string>
1131+ <string>73.ImportedFromIB2</string>
1132+ <string>74.IBPluginDependency</string>
1133+ <string>74.ImportedFromIB2</string>
1134+ <string>75.IBPluginDependency</string>
1135+ <string>75.ImportedFromIB2</string>
1136+ <string>77.IBPluginDependency</string>
1137+ <string>77.ImportedFromIB2</string>
1138+ <string>78.IBPluginDependency</string>
1139+ <string>78.ImportedFromIB2</string>
1140+ <string>79.IBPluginDependency</string>
1141+ <string>79.ImportedFromIB2</string>
1142+ <string>80.IBPluginDependency</string>
1143+ <string>80.ImportedFromIB2</string>
1144+ <string>81.IBPluginDependency</string>
1145+ <string>81.ImportedFromIB2</string>
1146+ <string>81.editorWindowContentRectSynchronizationRect</string>
1147+ <string>82.IBPluginDependency</string>
1148+ <string>82.ImportedFromIB2</string>
1149+ <string>83.IBPluginDependency</string>
1150+ <string>83.ImportedFromIB2</string>
1151+ <string>92.IBPluginDependency</string>
1152+ <string>92.ImportedFromIB2</string>
1153+ </object>
1154+ <object class="NSMutableArray" key="dict.values">
1155+ <bool key="EncodedWithXMLCoder">YES</bool>
1156+ <reference ref="449545859"/>
1157+ <reference ref="27138665"/>
1158+ <reference ref="27138665"/>
1159+ <reference ref="449545859"/>
1160+ <integer value="1" id="9"/>
1161+ <reference ref="449545859"/>
1162+ <reference ref="9"/>
1163+ <string>{{288, 767}, {193, 23}}</string>
1164+ <reference ref="449545859"/>
1165+ <reference ref="9"/>
1166+ <reference ref="449545859"/>
1167+ <reference ref="9"/>
1168+ <reference ref="449545859"/>
1169+ <reference ref="9"/>
1170+ <reference ref="449545859"/>
1171+ <reference ref="9"/>
1172+ <string>{{522, 812}, {146, 23}}</string>
1173+ <reference ref="449545859"/>
1174+ <reference ref="9"/>
1175+ <reference ref="449545859"/>
1176+ <reference ref="9"/>
1177+ <reference ref="449545859"/>
1178+ <reference ref="9"/>
1179+ <string>{{436, 809}, {64, 6}}</string>
1180+ <reference ref="449545859"/>
1181+ <reference ref="9"/>
1182+ <reference ref="449545859"/>
1183+ <reference ref="9"/>
1184+ <reference ref="449545859"/>
1185+ <reference ref="9"/>
1186+ <reference ref="449545859"/>
1187+ <reference ref="9"/>
1188+ <reference ref="449545859"/>
1189+ <reference ref="9"/>
1190+ <reference ref="449545859"/>
1191+ <reference ref="9"/>
1192+ <reference ref="449545859"/>
1193+ <reference ref="9"/>
1194+ <reference ref="449545859"/>
1195+ <reference ref="9"/>
1196+ <reference ref="449545859"/>
1197+ <reference ref="9"/>
1198+ <reference ref="449545859"/>
1199+ <reference ref="9"/>
1200+ <reference ref="449545859"/>
1201+ <reference ref="9"/>
1202+ <reference ref="449545859"/>
1203+ <reference ref="9"/>
1204+ <reference ref="449545859"/>
1205+ <reference ref="9"/>
1206+ <string>{{173, 677}, {128, 113}}</string>
1207+ <reference ref="449545859"/>
1208+ <reference ref="9"/>
1209+ <reference ref="449545859"/>
1210+ <reference ref="9"/>
1211+ <reference ref="449545859"/>
1212+ <reference ref="9"/>
1213+ <reference ref="449545859"/>
1214+ <reference ref="9"/>
1215+ <reference ref="449545859"/>
1216+ <reference ref="9"/>
1217+ <reference ref="449545859"/>
1218+ <reference ref="9"/>
1219+ <reference ref="449545859"/>
1220+ <reference ref="9"/>
1221+ <reference ref="449545859"/>
1222+ <reference ref="9"/>
1223+ <string>{{217, 717}, {197, 73}}</string>
1224+ <reference ref="449545859"/>
1225+ <reference ref="9"/>
1226+ <string>{74, 862}</string>
1227+ <string>{{11, 788}, {380, 20}}</string>
1228+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1229+ <reference ref="449545859"/>
1230+ <reference ref="9"/>
1231+ <reference ref="449545859"/>
1232+ <reference ref="9"/>
1233+ <reference ref="449545859"/>
1234+ <reference ref="9"/>
1235+ <string>{{23, 605}, {222, 183}}</string>
1236+ <reference ref="449545859"/>
1237+ <reference ref="9"/>
1238+ <reference ref="449545859"/>
1239+ <reference ref="9"/>
1240+ <reference ref="449545859"/>
1241+ <reference ref="9"/>
1242+ <reference ref="449545859"/>
1243+ <reference ref="9"/>
1244+ <reference ref="449545859"/>
1245+ <reference ref="9"/>
1246+ <reference ref="449545859"/>
1247+ <reference ref="9"/>
1248+ <reference ref="449545859"/>
1249+ <reference ref="9"/>
1250+ <reference ref="449545859"/>
1251+ <reference ref="9"/>
1252+ <reference ref="449545859"/>
1253+ <reference ref="9"/>
1254+ <reference ref="449545859"/>
1255+ <reference ref="9"/>
1256+ <string>{{111, 565}, {264, 223}}</string>
1257+ <reference ref="449545859"/>
1258+ <reference ref="9"/>
1259+ <reference ref="449545859"/>
1260+ <reference ref="9"/>
1261+ <reference ref="449545859"/>
1262+ <reference ref="9"/>
1263+ </object>
1264+ </object>
1265+ <object class="NSMutableDictionary" key="unlocalizedProperties">
1266+ <bool key="EncodedWithXMLCoder">YES</bool>
1267+ <object class="NSArray" key="dict.sortedKeys">
1268+ <bool key="EncodedWithXMLCoder">YES</bool>
1269+ </object>
1270+ <object class="NSMutableArray" key="dict.values">
1271+ <bool key="EncodedWithXMLCoder">YES</bool>
1272+ </object>
1273+ </object>
1274+ <nil key="activeLocalization"/>
1275+ <object class="NSMutableDictionary" key="localizations">
1276+ <bool key="EncodedWithXMLCoder">YES</bool>
1277+ <object class="NSArray" key="dict.sortedKeys">
1278+ <bool key="EncodedWithXMLCoder">YES</bool>
1279+ </object>
1280+ <object class="NSMutableArray" key="dict.values">
1281+ <bool key="EncodedWithXMLCoder">YES</bool>
1282+ </object>
1283+ </object>
1284+ <nil key="sourceID"/>
1285+ <int key="maxID">375</int>
1286+ </object>
1287+ <object class="IBClassDescriber" key="IBDocument.Classes">
1288+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
1289+ <bool key="EncodedWithXMLCoder">YES</bool>
1290+ <object class="IBPartialClassDescription">
1291+ <reference key="className" ref="742916659"/>
1292+ <nil key="superclassName"/>
1293+ <object class="NSMutableDictionary" key="actions">
1294+ <reference key="NS.key.0" ref="1008918551"/>
1295+ <string key="NS.object.0">id</string>
1296+ </object>
1297+ <object class="NSMutableDictionary" key="outlets">
1298+ <bool key="EncodedWithXMLCoder">YES</bool>
1299+ <object class="NSArray" key="dict.sortedKeys">
1300+ <bool key="EncodedWithXMLCoder">YES</bool>
1301+ </object>
1302+ <object class="NSMutableArray" key="dict.values">
1303+ <bool key="EncodedWithXMLCoder">YES</bool>
1304+ </object>
1305+ </object>
1306+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
1307+ <string key="majorKey">IBUserSource</string>
1308+ <string key="minorKey"/>
1309+ </object>
1310+ </object>
1311+ </object>
1312+ </object>
1313+ <int key="IBDocument.localizationMode">0</int>
1314+ <string key="IBDocument.LastKnownRelativeProjectPath">../../BSTRAEditor.xcodeproj</string>
1315+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
1316+ <object class="NSMutableData" key="IBDocument.RunnableNib">
1317+ <bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
1318+AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEBRAALAAwAMQA1ADYAPAA9
1319+AEEARQBgAGYAdgB7AHwAfQCCAIMAhACHAIsAjACPAJAAlACYAKAApAClAKYApwCrALIAswC0ALUAuQDA
1320+AMEAwgDDAMkA0ADWANcA2ADZAN0A5gDnAOgA6QDtAPQA9QD2APcA+wECAQMBBAEFAQkBEAERARIBEwEX
1321+AR4BIgEjASQBJQEpATABMQEyATYBPQE+AT8BQAFEAUsBUAFRAVIBVgFeAV8BYAFkAWsBbAFtAW4BcgF5
1322+AXoBewF8AYABhwGIAYkBjQGUAZUBlgGXAZsBogGnAagBqQGtAbQBtQG2AbcBuwHCAcMBxAHFAckB0gHT
1323+AdQB2AHfAeAB4QHiAeYB7QHuAe8B8wInAjICMwI0AjgCOQI7AkACQQJEAkUCSAJJAk0CVgJbAjMCXAJl
1324+AnACcQKAAokCkgKTAqECqgKxArICswK8AjMCxQLOAtcC2ALhAuoCMwLrAvIC8wIzAvwC/QMFAjMDDgIz
1325+AxcDGAMaA04DgwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQ
1326+A9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPtA/AEPQSK
1327+BIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSo
1328+BKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTG
1329+BMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATXBNoE3VUkbnVsbN8QEgANAA4ADwAQABEAEgATABQA
1330+FQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jv
1331+b3RWJGNsYXNzXU5TT2JqZWN0c0tleXNfEA9OU0NsYXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlP
1332+aWRzVmFsdWVzXU5TQ29ubmVjdGlvbnNbTlNOYW1lc0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5
1333+c1pOU09pZHNLZXlzXU5TTmFtZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9u
1334+dE1hbmFnZXJfEBBOU1Zpc2libGVXaW5kb3dzXxAPTlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmls
1335+aXR5T2lkc0tleXNZTlNOZXh0T2lkXE5TT2lkc1ZhbHVlc4ACgQFDgImA84EBQoAIgL6ABYDygPSAv4EB
1336+QIAAgAaAvYEBQREBeYD10gAOADIAMwA0W05TQ2xhc3NOYW1lgASAA11OU0FwcGxpY2F0aW9u0gA3ADgA
1337+OQA6WCRjbGFzc2VzWiRjbGFzc25hbWWiADoAO15OU0N1c3RvbU9iamVjdFhOU09iamVjdF8QEElCQ29j
1338+b2FGcmFtZXdvcmvSAA4APgA/AEBaTlMub2JqZWN0c4AHoNIANwA4AEIAQ6MAQwBEADtcTlNNdXRhYmxl
1339+U2V0VU5TU2V00gAOAD4ARgBHgIivEBgASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkA
1340+WgBbAFwAXQBeAF+ACYAXgB2AIoAngC2AMoA3gDyAQYBHgEuAUIBVgFmAXoBjgGeAbIBxgHaAe4B/gITT
1341+AA4AYQBiAGMAZABlWE5TU291cmNlV05TTGFiZWyAFoAKgBXYAA4AZwBoAGkAagBrAGwAbQBuAG8AcABx
1342+AHIAcwB0AHVXTlNUaXRsZV8QEU5TS2V5RXF1aXZNb2RNYXNrWk5TS2V5RXF1aXZdTlNNbmVtb25pY0xv
1343+Y1lOU09uSW1hZ2VcTlNNaXhlZEltYWdlVk5TTWVudYAUgAwSABAAAIANEn////+ADoASgAvTAA4AZwB3
1344+AHgAeQB6W05TTWVudUl0ZW1zgI+AnYCeYmWwiY9RbtMADgAyAH4AfwCAAIFeTlNSZXNvdXJjZU5hbWWA
1345+EYAPgBBXTlNJbWFnZV8QD05TTWVudUNoZWNrbWFya9IANwA4AIUAhqIAhgA7XxAQTlNDdXN0b21SZXNv
1346+dXJjZdMADgAyAH4AfwCAAIqAEYAPgBNfEBBOU01lbnVNaXhlZFN0YXRl0gA3ADgAjQCOogCOADtaTlNN
1347+ZW51SXRlbVxuZXdEb2N1bWVudDrSADcAOACRAJKjAJIAkwA7XxAVTlNOaWJDb250cm9sQ29ubmVjdG9y
1348+Xk5TTmliQ29ubmVjdG9y0wAOAGEAYgBjAJYAl4AWgBiAHNgADgBnAGgAaQBqAGsAbABtAG4AmgCbAJwA
1349+cgBzAHQAn4AUgBoSABIAAIAbgA6AEoAZ0wAOAGcAdwB4AKIAo4CPgJmAm2QwhDCKdvQwWVFaVXJlZG86
1350+0wAOAGEAYgBjAKkAqoAWgB6AIdgADgBnAGgAaQBqAGsAbABtAG4ArQBwAK4AcgBzAHQAdYAUgB+AIIAO
1351+gBKAC2JP3VtYUXNdc2F2ZURvY3VtZW50OtMADgBhAGIAYwC3ALiAFoAjgCbYAA4AZwBoAGkAagBrAGwA
1352+bQBuALsAcAC8AHIAcwB0AHWAFIAkgCWADoASgAtjlYkwWDCLUXddcGVyZm9ybUNsb3NlOtQADgDEAGEA
1353+YgBjAB8AxwDIXU5TRGVzdGluYXRpb26AFoACgCiALNcADgBnAGkAagBrAGwAbQBuAMsAzAByAHMAdADP
1354+gBSAKoArgA6AEoAp1AAOAGcA0QB3AHgA0wDUANVWTlNOYW1lgI+AoYCsgKJpgnIwklkJMEgwizBrMGQw
1355+RDBmUF8QHW9yZGVyRnJvbnRTdGFuZGFyZEFib3V0UGFuZWw60wAOAGEAYgBjANsA3IAWgC6AMdkADgDe
1356+AGcAaABpAGoAawBsAG0AbgDMAOEAmwDiAHIAcwB0AHVZTlNUb29sVGlwgBSAK4AvgDCADoASgAtoMNow
1357+/DC4ii1bmgAuAC4ALlFQXnJ1blBhZ2VMYXlvdXQ60wAOAGEAYgBjAOsA7IAWgDOANtgADgBnAGgAaQBq
1358+AGsAbABtAG4A7wBwAPAAcgBzAHQAdYAUgDSANYAOgBKAC2WVizBPAC4ALgAuUW9db3BlbkRvY3VtZW50
1359+OtMADgBhAGIAYwD5APqAFoA4gDvYAA4AZwBoAGkAagBrAGwAbQBuAP0AcAD+AHIAcwB0AM+AFIA5gDqA
1360+DoASgClognIwklkJMEgwizCSlqAwWVFoVWhpZGU60wAOAGEAYgBjAQcBCIAWgD2AQNgADgBnAGgAaQBq
1361+AGsAbABtAG4BCwBwAQwAcgBzAHQAn4AUgD6AP4AOgBKAGWMwszDUMPxRY1Vjb3B5OtMADgBhAGIAYwEV
1362+ARaAFoBCgEbYAA4AZwBoAGkAagBrAGwAbQBuARkAcAEaAHIAcwB0AR2AFIBEgEWADoASgEPTAA4AZwB3
1363+AHgBIAEhgI+AlYCWaIJyMJJZCTBIMIsw2DDrMNdRP1lzaG93SGVscDrTAA4AYQBiAGMBJwEogBaASIBK
1364+2AAOAGcAaABpAGoAawBsAG0AbgErAHAAzAByAHMAdADPgBSASYArgA6AEoApZjBZMHkwZjCSiGh5Ol8Q
1365+FnVuaGlkZUFsbEFwcGxpY2F0aW9uczrTAA4AYQBiAGMBNAE1gBaATIBP2AAOAGcAaABpAGoAawBsAG0A
1366+bgE4AHABOQByAHMAdADPgBSATYBOgA6AEoApaIJyMJJZCTBIMIswkn1CToZRcVp0ZXJtaW5hdGU60wAO
1367+AGEAYgBjAUIBQ4AWgFGAVNgADgBnAGgAaQBqAGsAbABtAG4BRgBwAMwAcgBzAHQBSoAUgFOAK4AOgBKA
1368+UtQADgBnANEAdwB4AU0BTgFPgI+Ar4CygLFpMFkweTBmMJJiS1JNMGt5+1LVXxAPYXJyYW5nZUluRnJv
1369+bnQ60wAOAGEAYgBjAVQBVYAWgFaAWNgADgBnAGgAaQBqAGsAbABtAG4BWAFZAP4AcgBzAHQAz4AUgFcS
1370+ABgAAIA6gA6AEoApZTB7MEswkpagMFlfEBZoaWRlT3RoZXJBcHBsaWNhdGlvbnM60wAOAGEAYgBjAWIB
1371+Y4AWgFqAXdgADgBnAGgAaQBqAGsAbABtAG4BZgCbAWcAcgBzAHQAdYAUgFuAXIAOgBKAC2hSJVQNMGdP
1372+3VtYAC4ALgAuUVNfEA9zYXZlRG9jdW1lbnRBczrTAA4AYQBiAGMBcAFxgBaAX4Bi2AAOAGcAaABpAGoA
1373+awBsAG0AbgF0AHABdQByAHMAdACfgBSAYIBhgA6AEoAZYzCrMMMwyFF4VGN1dDrTAA4AYQBiAGMBfgF/
1374+gBaAZIBm2AAOAGcAaABpAGoAawBsAG0AbgGCAHAAzAByAHMAdAFKgBSAZYArgA6AEoBSZWLhWSf/D34u
1375+XA9ccGVyZm9ybVpvb2060wAOAGEAYgBjAYsBjIAWgGiAa9gADgBnAGgAaQBqAGsAbABtAG4BjwBwAZAA
1376+cgBzAHQAn4AUgGmAaoAOgBKAGWRT1jCKbYgwWVF6VXVuZG860wAOAGEAYgBjAZkBmoAWgG2AcNgADgBn
1377+AGgAaQBqAGsAbABtAG4BnQBwAMwAcgBzAHQBoYAUgG+AK4AOgBKAbtQADgBnANEAdwB4AaQBpQGmgI+A
1378+i4COgI1nMOEwyzDlMPwwkm2IU7tfEBVjbGVhclJlY2VudERvY3VtZW50czrTAA4AYQBiAGMBqwGsgBaA
1379+coB12AAOAGcAaABpAGoAawBsAG0AbgGvAHABsAByAHMAdACfgBSAc4B0gA6AEoAZZDDaMPwwuTDIUXZW
1380+cGFzdGU60wAOAGEAYgBjAbkBuoAWgHeAetgADgBnAGgAaQBqAGsAbABtAG4BvQBwAb4AcgBzAHQBSoAU
1381+gHiAeYAOgBKAUmMwVzB+MEZRbV8QE3BlcmZvcm1NaW5pYXR1cml6ZTrTAA4AYQBiAGMBxwHIgBaAfIB+
1382+2QAOAcoAZwBpAGgAagBrAGwAbQBuAcwBzQCuAVkAcgBzAHQAdV1OU0lzQWx0ZXJuYXRlgBQJgH2AIIAO
1383+gBKAC20AQgBTMLUw3TD8MMgw1TCpMOswwDBrT91bWF8QFnNhdmVUb0JTU3VwcG9ydEZvbGRlcjrTAA4A
1384+YQBiAGMB1gHXgBaAgICD2AAOAGcAaABpAGoAawBsAG0AbgHaAHAB2wByAHMAdAB1gBSAgYCCgA6AEoAL
1385+ZzDXMOow8zDIAC4ALgAuUXBecHJpbnREb2N1bWVudDrTAA4AYQBiAGMB5AHlgBaAhYCH1wAOAGcAaQBq
1386+AGsAbABtAG4B6ADMAHIAcwB0AHWAFICGgCuADoASgAtsZwBfjDBrT91bWDBXMF9ytmFLMGtiOzBZXxAW
1387+cmV2ZXJ0RG9jdW1lbnRUb1NhdmVkOtIANwA4AfAB8aMB8QHyADteTlNNdXRhYmxlQXJyYXlXTlNBcnJh
1388+edIADgA+AfQB9YC8rxAxAfYB9wHkAfkBuQCWAMcBHQH+AHUBFQHWAGQBmQDPALcCBgHHAggCCQE0AQcA
1389+2wINAg4A6wIQAhEBJwITAWIBoQFCAPkCGAGrAhoBfgFKAh0CHgFUAiACIQFwAKkCJACfAYuAioCQgIWA
1390+lIB3gBiAKIBDgJeAC4BCgICACoBtgCmAI4CtgHyAroCfgEyAPYAugLOAoIAzgJiAnIBIgKqAWoBugFGA
1391+OIC3gHKAuYBkgFKAp4CjgFaAq4CogF+AHoCkgBmAaNoADgIoAGcAaABpAGoAawBsAG0CKQBuAaEBpABw
1392+AMwAcgBzAHQAdQIxWU5TU3VibWVudVhOU0FjdGlvboAUgG6Ai4ArgA6AEoALgIxqZwCP0U9/MGMwX5gF
1393+du4wkpWLME9ec3VibWVudUFjdGlvbjrSAA4APgBGAjaAiKEBmYBtXxAWX05TUmVjZW50RG9jdW1lbnRz
1394+TWVuddIANwA4AjoAbaIAbQA71AAOAGcA0QB3AHgCPQI+Aj+Aj4CRgJOAkmQwtTD8MNMwudIADgA+AEYC
1395+Q4CIoF8QD19OU1NlcnZpY2VzTWVuddIADgAyADMANIAEgANjMNgw6zDX0gAOAD4ARgJLgIihARWAQtoA
1396+DgIoAGcAaABpAGoAawBsAG0CKQBuAJ8AogBwAMwAcgBzAHQCEAJVgBSAGYCZgCuADoASgJiAmtQADgBn
1397+ANEAdwB4AlgCWQJagI+AtYC7gLZifeiWxtIADgA+AEYCXoCIpgGLAJYCEQFwAQcBq4BogBiAnIBfgD2A
1398+ctoADgBnAGgCZgBpAmcAagBrAGwAbQBuAMwAcAHMAMwBzAByAHMAdACfXU5TSXNTZXBhcmF0b3JcTlNJ
1399+c0Rpc2FibGVkgBSAKwmAKwmADoASgBlkMNUwoTCkMOvSAA4APgBGAnOAiKwAZADrAfYCCQC3AKkBxwFi
1400+AeQCDgDbAdaACoAzgIqAn4AjgB6AfIBagIWAoIAugIDaAA4AZwBoAmYAaQJnAGoAawBsAG0AbgDMAHAB
1401+zADMAcwAcgBzAHQAdYAUgCsJgCsJgA6AEoAL2gAOAGcAaAJmAGkCZwBqAGsAbABtAG4AzABwAcwAzAHM
1402+AHIAcwB0AHWAFIArCYArCYAOgBKAC2WCcjCSWQkwSDCL0gAOAD4ARgKVgIirAMcCHgIkAh0CIQITAPkB
1403+VAEnAiABNIAogKOApICngKiAqoA4gFaASICrgEzaAA4AZwBoAmYAaQJnAGoAawBsAG0AbgDMAHABzADM
1404+AcwAcgBzAHQAz4AUgCsJgCsJgA6AEoAp2AAOAGcAaABpAGoAawBsAG0AbgKsAHACrQByAHMAdADPgBSA
1405+pYCmgA6AEoApZ3SwWIOKLVuaAC4ALgAuUSzaAA4AZwBoAmYAaQJnAGoAawBsAG0AbgDMAHABzADMAcwA
1406+cgBzAHQAz4AUgCsJgCsJgA6AEoAp2gAOAigAZwBoAGkAagBrAGwAbQIpAG4B9wI9AHAAzAByAHMAdADP
1407+AsSAFICQgJGAK4AOgBKAKYCp2gAOAGcAaAJmAGkCZwBqAGsAbABtAG4AzABwAcwAzAHMAHIAcwB0AM+A
1408+FIArCYArCYAOgBKAKdoADgBnAGgCZgBpAmcAagBrAGwAbQBuAMwAcAHMAMwBzAByAHMAdADPgBSAKwmA
1409+KwmADoASgClcX05TQXBwbGVNZW512gAOAGcAaAJmAGkCZwBqAGsAbABtAG4AzABwAcwAzAHMAHIAcwB0
1410+AUqAFIArCYArCYAOgBKAUtoADgIoAGcAaABpAGoAawBsAG0CKQBuAUoBTQBwAMwAcgBzAHQCEALpgBSA
1411+UoCvgCuADoASgJiAsGUwpjCkMPMwyTCm0gAOAD4ARgLtgIikAbkBfgIGAUKAd4BkgK2AUV5fTlNXaW5k
1412+b3dzTWVuddoADgIoAGcAaABpAGoAawBsAG0CKQBuAM8A0wBwAMwAcgBzAHQCEAL7gBSAKYChgCuADoAS
1413+gJiAtFlBTWFpbk1lbnXSAA4APgBGAv+AiKUCDQIYAf4CCAIagLOAt4CXgK6AudoADgIoAGcAaABpAGoA
1414+awBsAG0CKQBuAHUAeQBwAMwAcgBzAHQCEAMNgBSAC4CdgCuADoASgJiAuNoADgIoAGcAaABpAGoAawBs
1415+AG0CKQBuAR0BIABwAMwAcgBzAHQCEAMWgBSAQ4CVgCuADoASgJiAultfTlNNYWluTWVuddIANwA4AxkB
1416+8qIB8gA70gAOAD4B9AMcgLyvEDEAdQIhAHUAHwFKAJ8AzwIaAhACGAEdAHUAdQGhAg0AdQFKAHUCEAB1
1417+AM8AnwB1AhAAdQB1AB8AnwDPAM8AdQH2AUoAzwIQAJ8CEAFKAggAzwDPAM8AzwDPAJ8AdQDPAf4An4AL
1418+gKiAC4ACgFKAGYApgLmAmIC3gEOAC4ALgG6As4ALgFKAC4CYgAuAKYAZgAuAmIALgAuAAoAZgCmAKYAL
1419+gIqAUoApgJiAGYCYgFKAroApgCmAKYApgCmAGYALgCmAl4AZ0gAOAD4B9ANQgLyvEDIB9gH3AeQB+QG5
1420+AJYAxwH+AR0AdQHWARUAZAGZAM8AtwIGAccCCAIJATQBBwDbAg0CDgDrAhACEQEnAhMBYgGhAUIA+QIY
1421+AasCGgF+AB8BSgIdAh4BVAIgAiEBcACpAJ8CJAGLgIqAkICFgJSAd4AYgCiAl4BDgAuAgIBCgAqAbYAp
1422+gCOArYB8gK6An4BMgD2ALoCzgKCAM4CYgJyASICqgFqAboBRgDiAt4BygLmAZIACgFKAp4CjgFaAq4Co
1423+gF+AHoAZgKSAaNIADgA+AfQDhYC8rxAyA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOX
1424+A5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1
1425+A7YDt4DAgMGAwoDDgMSAxYDGgMeAyIDJgMqAy4DMgM2AzoDPgNCA0YDSgNOA1IDVgNaA14DYgNmA2oDb
1426+gNyA3YDegN+A4IDhgOKA44DkgOWA5oDngOiA6YDqgOuA7IDtgO6A74DwgPFvEBYATQBlAG4AdQAgAEkA
1427+dABlAG0AIAAoZwCP0U9/MGMwX5gFdu4wkpWLME8AKWsATQBlAG4AdQAgACgwtTD8MNMwuQApUjEwW0Fw
1428+cGxpY2F0aW9ubxAPAE0AZQBuAHUAIABJAHQAZQBtACAAKDBXMH4wRgApbxAQAE0AZQBuAHUAIABJAHQA
1429+ZQBtACAAKDCEMIp29DBZAClvEBUATQBlAG4AdQAgAEkAdABlAG0AIAAognIwklkJMEgwizBrMGQwRDBm
1430+ACluAE0AZQBuAHUAIABJAHQAZQBtACAAKH3olsYAKVEyawBNAGUAbgB1ACAAKDDVMKEwpDDrAClRNm8Q
1431+FABNAGUAbgB1ACAASQB0AGUAbQAgACiCcjCSWQkwSDCLMNgw6zDXAClROW8QEwBNAGUAbgB1ACAASQB0
1432+AGUAbQAgACgw4TDLMOUw/DCSbYhTuwApbABNAGUAbgB1ACAAKIJyMJJZCTBIMIsAKVMxLTFbU2VwYXJh
1433+dG9yLTFvEBkATQBlAG4AdQAgAEkAdABlAG0AIAAoAEIAUzC1MN0w/DDIMNUwqTDrMMAwa0/dW1gAKW8Q
1434+EQBNAGUAbgB1ACAASQB0AGUAbQAgACgwpjCkMPMwyTCmAClRN1QxMTExbxAPAE0AZQBuAHUAIABJAHQA
1435+ZQBtACAAKDCzMNQw/AApUTVvEBEATQBlAG4AdQAgAEkAdABlAG0AIAAognIwklkJMEgwiwApUzItMW8Q
1436+EQBNAGUAbgB1ACAASQB0AGUAbQAgACiVizBPAC4ALgAuAClYTWFpbk1lbnVZU2VwYXJhdG9ybxASAE0A
1437+ZQBuAHUAIABJAHQAZQBtACAAKDBZMHkwZjCSiGh5OgApW1NlcGFyYXRvci0yUThvEBEATQBlAG4AdQAg
1438+AChnAI/RT38wYzBfmAV27jCSlYswTwApbxAVAE0AZQBuAHUAIABJAHQAZQBtACAAKDBZMHkwZjCSYktS
1439+TTBreftS1QApbxAUAE0AZQBuAHUAIABJAHQAZQBtACAAKIJyMJJZCTBIMIswkpagMFkAKW8QEABNAGUA
1440+bgB1ACAASQB0AGUAbQAgACgw1TChMKQw6wApbxAQAE0AZQBuAHUAIABJAHQAZQBtACAAKDDaMPwwuTDI
1441+AClRMW8QEQBNAGUAbgB1ACAASQB0AGUAbQAgAChi4Vkn/w9+LlwPAClcRmlsZSdzIE93bmVybABNAGUA
1442+bgB1ACAAKDCmMKQw8zDJMKYAKVtTZXBhcmF0b3ItM1tTZXBhcmF0b3ItNG8QEQBNAGUAbgB1ACAASQB0
1443+AGUAbQAgACgwezBLMJKWoDBZAClbU2VwYXJhdG9yLTVvEBAATQBlAG4AdQAgAEkAdABlAG0AIAAoMLUw
1444+/DDTMLkAKW8QDwBNAGUAbgB1ACAASQB0AGUAbQAgACgwqzDDMMgAKVEzaQBNAGUAbgB1ACAAKH3olsYA
1445+KVMxMjFvEBAATQBlAG4AdQAgAEkAdABlAG0AIAAoU9Ywim2IMFkAKdIADgA+AfQD7IC8oNIADgA+AfQD
1446+74C8oNIADgA+AfQD8oC8rxBKAFMB9gH3AFkB5ABdAfkBuQCWAMcAUQBXAR0B/gBMAE0AdQEVAdYAZAGZ
1447+AM8AXwBWALcATwIGAccAUABSAggCCQE0AEoAVQBaAQcAWADbAg0CDgDrAhACEQEnAhMBYgGhAUIA+QIY
1448+AasATgBIAF4CGgF+AB8BSgIdAh4BVAIgAEkAWwBcAiEASwFwAKkCJACfAYsAVIBLgIqAkIBngIWAe4CU
1449+gHeAGIAogEGAXoBDgJeAJ4AtgAuAQoCAgAqAbYApgISAWYAjgDeArYB8gDyAR4CugJ+ATIAdgFWAbIA9
1450+gGOALoCzgKCAM4CYgJyASICqgFqAboBRgDiAt4BygDKACYB/gLmAZIACgFKAp4CjgFaAq4AXgHGAdoCo
1451+gCKAX4AegKSAGYBogFDSAA4APgH0BD+AvK8QSgRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRP
1452+BFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARt
1453+BG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBImA9oD3
1454+gPiA+YD6gPuA/ID9gP6A/4EBAIEBAYEBAoEBA4EBBIEBBYEBBoEBB4EBCIEBCYEBCoEBC4EBDIEBDYEB
1455+DoEBD4EBEIEBEYEBEoEBE4EBFIEBFYEBFoEBF4EBGIEBGYEBGoEBG4EBHIEBHYEBHoEBH4EBIIEBIYEB
1456+IoEBI4EBJIEBJYEBJoEBJ4EBKIEBKYEBKoEBK4EBLIEBLYEBLoEBL4EBMIEBMYEBMoEBM4EBNIEBNYEB
1457+NoEBN4EBOIEBOYEBOoEBO4EBPIEBPYEBPoEBPxEBcRB8EIIQ3xBwEQF3E//////////9EBcQ1xA6EQFo
1458+EOQQahDZEI4QVxBREG8QThBSEH4QOREBbBEBaxBJEQFvEFwRAXYQ4BEBchATEE8QiBEBahEBcBB/EMUQ
1459+8BBNEDgQShBIEB0QzhCWEJAQUBB9EAUQhhBTEMsRAXQRAXMRAXUQZxDvEQF4EBgQjxDsEJEQlRDnEOIQ
1460+JRCDEMEQxxBLEIEQzRDPECfSAA4APgBGBNaAiKDSAA4APgH0BNmAvKDSAA4APgH0BNyAvKDSADcAOATe
1461+BN+iBN8AO15OU0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/AEQAUgBUAGYC8gL4A0MDSgNRA18DcQON
1462+A5sDpwOzA8EDzAPaA/YEBAQXBCkEQwRNBFoEXARfBGEEYwRmBGgEagRsBG4EcARyBHUEdwR5BHsEfgSB
1463+BIMEjASYBJoEnASqBLMEvATHBMwE2wTkBPcFAAULBQ0FDgUXBR4FKwUxBToFPAVvBXEFcwV1BXcFeQV7
1464+BX0FfwWBBYMFhQWHBYkFiwWNBY8FkQWTBZUFlwWZBZsFnQWfBawFtQW9Bb8FwQXDBeQF7AYABgsGGQYj
1465+BjAGNwY5BjsGQAZCBkcGSQZLBk0GWgZmBmgGagZsBnEGcwaABo8GkQaTBpUGnQavBrgGvQbQBt0G3wbh
1466+BuMG9gb/BwQHDwccByUHLAdEB1MHYAdiB2QHZgeHB4kHiweQB5IHlAeWB5gHpQenB6kHqwe0B7YHvAfJ
1467+B8sHzQfPB/AH8gf0B/YH+Af6B/wIAQgDCBEIHgggCCIIJAhFCEcISQhLCE0ITwhRCFgIWghoCHkIhwiJ
1468+CIsIjQiPCKwIrgiwCLIItAi2CLgIyQjQCNII1AjWCNgI6wjsCQwJGQkbCR0JHwlECU4JUAlSCVQJVglY
1469+CVoJXAltCW8JfgmLCY0JjwmRCbIJtAm2CbgJugm8Cb4JyQnLCdkJ5gnoCeoJ7AoNCg8KEQoTChUKFwoZ
1470+CioKLAoyCj8KQQpDCkUKZgpoCmoKbApuCnAKcgp5CnsKgQqOCpAKkgqUCrUKtwq5CrsKvQq/CsEKzgrQ
1471+CtIK1ArlCucK8Qr+CwALAgsECyULJwspCysLLQsvCzELPgtXC2QLZgtoC2oLiwuNC48LkQuTC5ULlwuo
1472+C6oLtQvCC8QLxgvIC+kL6wvtC+8L8QvzC/UMBgwIDAoMDAwODCEMMwxADEIMRAxGDGcMaQxrDHAMcgx0
1473+DHYMeAyDDJwMqQyrDK0MrwzQDNIM1AzWDNgM2gzcDO0M7w0BDQ4NEA0SDRQNNQ03DTkNOw09DT8NQQ1I
1474+DUoNTw1cDV4NYA1iDYMNhQ2HDYkNiw2NDY8Nmg2nDbQNtg24DboN2w3dDd8N4Q3jDeUN5w3wDfIN+A4F
1475+DgcOCQ4LDiwOLg4wDjIONA42DjgOSQ5LDk0OTw5RDmAOeA6FDocOiQ6LDqwOrg6wDrIOtA62DrgOwQ7D
1476+DsoO1w7ZDtsO3Q7+DwAPAg8EDwYPCA8KDxEPEw8pDzYPOA86DzwPYQ9vD3EPcg90D3YPeA96D3wPlw+w
1477+D70Pvw/BD8MP5A/mD+gP6g/sD+4P8A//EAEQEBAdEB8QIRAjEEAQQhBEEEYQSBBKEEwQZRB+EIcQjhCd
1478+EKUQrhCwERURFxEZERsRHREfESERIxElEScRKRErES0RLxExETMRNRE3ETkROxE9ET8RQRFDEUURRxFJ
1479+EUsRTRFPEVERUxFVEVcRWRFbEV0RXxFhEWMRZRFnEWkRaxFtEW8RcRFzEXURdxGgEaoRsxG1EbcRuRG7
1480+Eb0RvxHBEcMR2BHnEfAR8hH1EfcSEBIZEh4SLxIxEjMSNRI3EkASSRJLEkwSXhJnEmkSaxJyEnsSfRKA
1481+EoISqxKtEq8SsRKzErUStxK5ErsSzBLOEtAS0hLUEtkS4hLkEvES8xL1EvcS+RL7Ev0TJhM0E0ETQxNF
1482+E0YTSBNJE0sTTRNPE1gTYRNjE3wTfhOAE4IThBOGE4gTihOME44TkBOSE5QTvRO/E8ETwhPEE8UTxxPJ
1483+E8sT9BP2E/gT+RP7E/wT/hQAFAIUDRQWFBgULxQxFDMUNRQ3FDkUOxQ9FD8UQRRDFEUUbhRwFHIUcxR1
1484+FHYUeBR6FHwUnRSfFKEUoxSlFKcUqRS4FLoU4xTlFOcU6BTqFOsU7RTvFPEVGhUcFR4VIBUiFSQVJhUo
1485+FSoVUxVVFVcVWBVaFVsVXRVfFWEVihWMFY4VjxWRFZIVlBWWFZgVpRXOFdAV0hXTFdUV1hXYFdoV3BYF
1486+FgcWCRYLFg0WDxYRFhMWFRYgFikWKxY0FjYWOBY6FjwWSxZ0FnYWeBZ6FnwWfhaAFoIWhBaOFpcWmRak
1487+FqYWqBaqFqwWrhbXFtkW2xbdFt8W4RbjFuUW5xcQFxIXFBcWFxgXGhccFx4XIBcsFzUXOhdDF0UXqhes
1488+F64XsBeyF7QXthe4F7oXvBe+F8AXwhfEF8YXyBfKF8wXzhfQF9IX1BfWF9gX2hfcF94X4BfiF+QX5hfo
1489+F+oX7BfuF/AX8hf0F/YX+Bf6F/wX/hgAGAIYBBgGGAgYChgMGBUYFxh+GIAYghiEGIYYiBiKGIwYjhiQ
1490+GJIYlBiWGJgYmhicGJ4YoBiiGKQYphioGKoYrBiuGLAYshi0GLYYuBi6GLwYvhjAGMIYxBjGGMgYyhjM
1491+GM4Y0BjSGNQY1hjYGNoY3BjeGOAY4hjrGO0ZVBlWGVgZWhlcGV4ZYBliGWQZZhloGWoZbBluGXAZchl0
1492+GXYZeBl6GXwZfhmAGYIZhBmGGYgZihmMGY4ZkBmSGZQZlhmYGZoZnBmeGaAZohmkGaYZqBmqGawZrhmw
1493+GbIZtBm2GbgZ5xn+GgEaDRouGlEafhqbGp0atBq2GuEa4xsMGyUbKRs1G2objxuRG5Ybtxu5G94b4hwH
1494+HBAcGhxBHE0cTxx0HKEczBzvHRIdFB05HUYdXx1rHXcdnB2oHcsd7B3uHgEeBR4oHjEeMx40Hj0ePx5A
1495+HkkeSx7iHuQe5h7oHuoe7B7uHvAe8h70HvYe+B76Hvwe/h8AHwIfBB8GHwgfCh8MHw4fEB8SHxQfFh8Y
1496+HxofHB8eHyAfIh8kHyYfKB8qHywfLh8wHzIfNB82HzgfOh88Hz4fQB9CH0QfRh9IH0ofTB9OH1AfUh9U
1497+H1YfWB9aH1wfXh9gH2IfZB9mH2gfah9sH24fcB9yH3Qfdh9/H4EgGCAaIBwgHiAgICIgJCAmICggKiAs
1498+IC8gMiA1IDggOyA+IEEgRCBHIEogTSBQIFMgViBZIFwgXyBiIGUgaCBrIG4gcSB0IHcgeiB9IIAggyCG
1499+IIkgjCCPIJIglSCYIJsgniChIKQgpyCqIK0gsCCzILYguSC8IL8gwiDFIMggyyDOINEg1CDXINog3SDg
1500+IOMg5iDpIOwg7yDxIPMg9SD3IPohAyEFIQchCSEMIQ4hECESIRQhFiEYIRohHCEeISAhIiElISghKiEt
1501+IS8hMiE0ITchOSE7IT0hQCFDIUUhRyFJIUshTSFPIVEhUyFVIVchWSFbIV0hXyFhIWMhZSFoIWshbiFw
1502+IXIhdSF3IXkheyF9IX8hgSGDIYUhhyGJIYshjSGPIZEhkyGVIZ4hoCGhIaohrCGtIbYhuCG5IcIhxwAA
1503+AAAAAAICAAAAAAAABOAAAAAAAAAAAAAAAAAAACHWA</bytes>
1504+ </object>
1505+ </data>
1506+</archive>
Binary files /dev/null and b/Japanese.lproj/MainMenu.nib/keyedobjects.nib differ
--- /dev/null
+++ b/Japanese.lproj/Makefile
@@ -0,0 +1,17 @@
1+
2+RM=/bin/rm
3+SED=/usr/local/bin/sed
4+ICONV=/usr/bin/iconv
5+
6+Loaclize_template=Localizable.strings.sed
7+temp_file=l.text
8+working_enc=utf-8
9+
10+Localizable: Localizable.strings
11+ ${ICONV} -f utf-16 -t ${working_enc} $< | ${SED} -f ${Loaclize_template} > ${temp_file}
12+ ${ICONV} -f ${working_enc} -t utf-16 ${temp_file} > $<
13+ ${RM} ${temp_file}
14+
15+checkLocalizable:
16+ plutil Localizable.strings
17+
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,59 @@
1+
2+PRODUCT_NAME=BSTREditor
3+PRODUCT_EXTENSION=app
4+BUILD_PATH=./build
5+DEPLOYMENT=Release
6+APP_BUNDLE=$(PRODUCT_NAME).$(PRODUCT_EXTENSION)
7+APP=$(BUILD_PATH)/$(DEPLOYMENT)/$(APP_BUNDLE)
8+APP_NAME=$(BUILD_PATH)/$(DEPLOYMENT)/$(PRODUCT_NAME)
9+INFO_PLIST=Info.plist
10+
11+URL_BSTREditor = svn+ssh://macmini/usr/local/svnrepos/BSTREditor
12+HEAD = $(URL_BSTREditor)/BSTREditor
13+TAGS_DIR = $(URL_BSTREditor)/tags
14+
15+VER_CMD=grep -A1 'CFBundleShortVersionString' $(INFO_PLIST) | tail -1 | tr -d "'\t</string>"
16+VERSION=$(shell $(VER_CMD))
17+
18+all:
19+ @echo do nothig.
20+ @echo use target tagging
21+
22+tagging:
23+ @echo "Tagging the $(VERSION) (x) release of BSTREditor project."
24+ export LC_ALL=C; \
25+ REV=`svn info | awk '/Last Changed Rev/ {print $$4}'` ; \
26+ echo svn copy $(HEAD) $(TAGS_DIR)/release-$(VERSION).$${REV}
27+
28+Localizable: BSTRADocument.m
29+ genstrings -o English.lproj $<
30+ (cd English.lproj; ${MAKE} $@;)
31+ genstrings -o Japanese.lproj $<
32+ (cd Japanese.lproj; ${MAKE} $@;)
33+
34+checkLocalizable:
35+ (cd English.lproj; ${MAKE} $@;)
36+ (cd Japanese.lproj; ${MAKE} $@;)
37+
38+release: updateRevision
39+ xcodebuild -configuration $(DEPLOYMENT)
40+ $(MAKE) restorInfoPlist
41+
42+package: release
43+ export LC_ALL=C; \
44+ REV=`svn info | awk '/Last Changed Rev/ {print $$4}'`; \
45+ ditto -ck -rsrc --keepParent $(APP) $(APP_NAME)-$(VERSION)-$${REV}.zip
46+
47+updateRevision: update_svn
48+ if [ ! -f $(INFO_PLIST).bak ] ; then cp $(INFO_PLIST) $(INFO_PLIST).bak ; fi ; \
49+ export LC_ALL=C; \
50+ REV=`svn info | awk '/Last Changed Rev/ {print $$4}'` ; \
51+ sed -e "s/%%%%REVISION%%%%/$${REV}/" $(INFO_PLIST) > $(INFO_PLIST).r ; \
52+ mv -f $(INFO_PLIST).r $(INFO_PLIST) ; \
53+
54+restorInfoPlist:
55+ if [ -f $(INFO_PLIST).bak ] ; then cp -f $(INFO_PLIST).bak $(INFO_PLIST) ; fi
56+
57+update_svn:
58+ svn up
59+
--- /dev/null
+++ b/NSAppleEventDescriptor-Extensions.h
@@ -0,0 +1,31 @@
1+//
2+// NSAppleEventDescriptor-Extensions.h
3+//
4+// Created by Hori,Masaki on 06/01/25.
5+// Copyright 2006 __MyCompanyName__. All rights reserved.
6+//
7+
8+#import <Foundation/NSAppleEventDescriptor.h>
9+
10+@interface NSAppleEventDescriptor(HMCocoaExtention)
11+
12++ (id)descriptorWithFloat:(float)aFloat;
13+
14++ (id)targetDescriptorWithApplicationIdentifier:(NSString *)identifier;
15++ (id)targetDescriptorWithAppName:(NSString *)appName;
16+
17++ (id)objectSpecifierWithDesiredClass:(DescType)desiredClass
18+ container:(NSAppleEventDescriptor *)container
19+ keyForm:(DescType)keyForm
20+ keyData:(NSAppleEventDescriptor *)keyData;
21+
22+// throw HMAEDescriptorSendingNotAppleEventException, if reciever descriptorType is not typeAppleEvent.
23+// reply can be NULL.
24+- (OSStatus)sendAppleEventWithMode:(AESendMode)mode
25+ timeOutInTicks:(long)timeOut
26+ reply:(NSAppleEventDescriptor **)reply;
27+
28+@end
29+
30+
31+extern NSString *HMAEDescriptorSendingNotAppleEventException;
--- /dev/null
+++ b/NSAppleEventDescriptor-Extensions.m
@@ -0,0 +1,97 @@
1+//
2+// NSAppleEventDescriptor-Extensions.m
3+//
4+// Created by Hori,Masaki on 06/01/25.
5+// Copyright 2006 __MyCompanyName__. All rights reserved.
6+//
7+
8+#import "NSAppleEventDescriptor-Extensions.h"
9+
10+NSString *HMAEDescriptorSendingNotAppleEventException = @"HMAEDescriptorSendingNotAppleEventException";
11+static NSString *HMAEDesNotAEExceptionResonFormat = @"Should be call to instance of NSAppleEventDescriptor descriptorType are typeAppleEvent."
12+ @"But self is %@.";
13+
14+@implementation NSAppleEventDescriptor(HMCocoaExtention)
15+
16++ (id)descriptorWithFloat:(float)aFloat
17+{
18+ return [NSAppleEventDescriptor descriptorWithDescriptorType:typeShortFloat
19+ bytes:&aFloat
20+ length:sizeof(aFloat)];
21+}
22+
23++ (id)targetDescriptorWithApplicationIdentifier:(NSString *)identifier
24+{
25+ const char *bundleIdentifierStr;
26+
27+ bundleIdentifierStr = [identifier UTF8String];
28+
29+ return [NSAppleEventDescriptor descriptorWithDescriptorType:typeApplicationBundleID
30+ bytes:bundleIdentifierStr
31+ length:strlen(bundleIdentifierStr)];
32+}
33++ (id)targetDescriptorWithAppName:(NSString *)appName
34+{
35+ NSString *path;
36+ NSBundle *bundle;
37+ NSString *bundleIdentifier;
38+
39+ path = [[NSWorkspace sharedWorkspace] fullPathForApplication:appName];
40+ bundle = [NSBundle bundleWithPath:path];
41+ bundleIdentifier = [bundle bundleIdentifier];
42+
43+ return [self targetDescriptorWithApplicationIdentifier:bundleIdentifier];
44+}
45+
46++(id)objectSpecifierWithDesiredClass:(DescType)desiredClass
47+ container:(NSAppleEventDescriptor *)container
48+ keyForm:(DescType)keyForm
49+ keyData:(NSAppleEventDescriptor *)keyData
50+{
51+ AEDesc objectSpecifier;
52+
53+ OSStatus err;
54+
55+ if(!keyData) return nil;
56+ if(!container) {
57+ container = [NSAppleEventDescriptor nullDescriptor];
58+ }
59+
60+
61+ err = CreateObjSpecifier( desiredClass,
62+ (AEDesc *)[container aeDesc],
63+ keyForm,
64+ (AEDesc *)[keyData aeDesc],
65+ NO,
66+ &objectSpecifier );
67+
68+ if( err != noErr ) return nil;
69+
70+ return [[[[self class] alloc] initWithAEDescNoCopy:&objectSpecifier] autorelease];
71+}
72+
73+
74+#pragma mark## Instance Method ##
75+- (OSStatus)sendAppleEventWithMode:(AESendMode)mode
76+ timeOutInTicks:(long)timeOut
77+ reply:(NSAppleEventDescriptor **)outReply
78+{
79+ AppleEvent reply;
80+ OSStatus err;
81+
82+ if([self descriptorType] != typeAppleEvent) {
83+ [NSException raise:HMAEDescriptorSendingNotAppleEventException
84+ format:HMAEDesNotAEExceptionResonFormat, self];
85+ }
86+
87+ err = AESendMessage([self aeDesc], &reply, mode, timeOut);
88+ if(err != noErr) return err;
89+
90+ if(outReply && ((mode & kAEWaitReply) == kAEWaitReply)) {
91+ *outReply = [[[[self class] allocWithZone:[self zone]] initWithAEDescNoCopy:&reply] autorelease];
92+ }
93+
94+ return err;
95+}
96+
97+@end
--- /dev/null
+++ b/NSBezierPath_AMShading.h
@@ -0,0 +1,27 @@
1+//
2+// NSBezierPath_AMShading.h
3+// ShadingTest
4+//
5+// Created by Andreas on 2005-06-01.
6+// Copyright 2005 Andreas Mayer. All rights reserved.
7+//
8+// based on http://www.cocoadev.com/index.pl?GradientFill
9+
10+// 2005-12-05 Andreas Mayer
11+// - for some reason the method for drawing a vertical shading was called customHorizontalFillWith...
12+// fixed this. It's -customVerticalFillWithCallbacks:firstColor:secondColor: now.
13+
14+
15+#import <Cocoa/Cocoa.h>
16+
17+
18+@interface NSBezierPath (AMShading)
19+
20+- (void)customVerticalFillWithCallbacks:(CGFunctionCallbacks)functionCallbacks firstColor:(NSColor *)firstColor secondColor:(NSColor *)secondColor;
21+
22+- (void)linearGradientFillWithStartColor:(NSColor *)startColor endColor:(NSColor *)endColor;
23+
24+- (void)bilinearGradientFillWithOuterColor:(NSColor *)outerColor innerColor:(NSColor *)innerColor;
25+
26+
27+@end
--- /dev/null
+++ b/NSBezierPath_AMShading.m
@@ -0,0 +1,169 @@
1+//
2+// NSBezierPath_AMShading.m
3+// ShadingTest
4+//
5+// Created by Andreas on 2005-06-01.
6+// Copyright 2005 Andreas Mayer. All rights reserved.
7+//
8+
9+#import "NSBezierPath_AMShading.h"
10+
11+
12+@implementation NSBezierPath (AMShading)
13+
14+static void linearShadedColor(void *info, const float *in, float *out)
15+{
16+ float *colors = info;
17+ *out++ = colors[0] + *in * colors[8];
18+ *out++ = colors[1] + *in * colors[9];
19+ *out++ = colors[2] + *in * colors[10];
20+ *out++ = colors[3] + *in * colors[11];
21+}
22+
23+static void bilinearShadedColor(void *info, const float *in, float *out)
24+{
25+ float *colors = info;
26+ float factor = (*in)*2.0;
27+ if (*in > 0.5) {
28+ factor = 2-factor;
29+ }
30+ *out++ = colors[0] + factor * colors[8];
31+ *out++ = colors[1] + factor * colors[9];
32+ *out++ = colors[2] + factor * colors[10];
33+ *out++ = colors[3] + factor * colors[11];
34+}
35+
36+- (void)linearGradientFillWithStartColor:(NSColor *)startColor endColor:(NSColor *)endColor
37+{
38+ /*
39+ CGColorSpaceRef colorspace;
40+ CGShadingRef shading;
41+ CGPoint startPoint = {0, 0};
42+ CGPoint endPoint = {0, 0};
43+ CGFunctionRef function;
44+ float colors[12]; // pointer to color values
45+
46+ // get my context
47+ CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
48+
49+ NSColor *deviceDependentStartColor = [startColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
50+ NSColor *deviceDependentEndColor = [endColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
51+
52+ // set up colors for gradient
53+ colors[0] = [deviceDependentStartColor redComponent];
54+ colors[1] = [deviceDependentStartColor greenComponent];
55+ colors[2] = [deviceDependentStartColor blueComponent];
56+ colors[3] = [deviceDependentStartColor alphaComponent];
57+
58+ colors[4] = [deviceDependentEndColor redComponent];
59+ colors[5] = [deviceDependentEndColor greenComponent];
60+ colors[6] = [deviceDependentEndColor blueComponent];
61+ colors[7] = [deviceDependentEndColor alphaComponent];
62+
63+ // difference between start and end color for each color components
64+ colors[8] = (colors[4]-colors[0]);
65+ colors[9] = (colors[5]-colors[1]);
66+ colors[10] = (colors[6]-colors[2]);
67+ colors[11] = (colors[7]-colors[3]);
68+
69+ // draw gradient
70+ colorspace = CGColorSpaceCreateDeviceRGB();
71+
72+ size_t components = 1 + CGColorSpaceGetNumberOfComponents(colorspace);
73+ static const float domain[2] = {0.0, 1.0};
74+ static const float range[10] = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
75+ static const CGFunctionCallbacks callbacks = {0, &shadedColor, NULL};
76+
77+ // Create a CGFunctionRef that describes a function taking 1 input and kChannelsPerColor outputs.
78+ function = CGFunctionCreate(colors, 1, domain, components, range, &callbacks);
79+
80+ startPoint.x=0;
81+ startPoint.y=[self bounds].origin.y;
82+ endPoint.x=0;
83+ endPoint.y=NSMaxY([self bounds]);
84+
85+ shading = CGShadingCreateAxial(colorspace, startPoint, endPoint, function, NO, NO);
86+
87+ CGContextSaveGState(currentContext);
88+ [self addClip];
89+ CGContextDrawShading(currentContext, shading);
90+ CGContextRestoreGState(currentContext);
91+
92+ CGShadingRelease(shading);
93+ CGFunctionRelease(function);
94+ CGColorSpaceRelease(colorspace);
95+ */
96+
97+ static const CGFunctionCallbacks callbacks = {0, &linearShadedColor, NULL};
98+
99+ [self customVerticalFillWithCallbacks:callbacks firstColor:startColor secondColor:endColor];
100+};
101+
102+- (void)bilinearGradientFillWithOuterColor:(NSColor *)outerColor innerColor:(NSColor *)innerColor
103+{
104+ static const CGFunctionCallbacks callbacks = {0, &bilinearShadedColor, NULL};
105+
106+ [self customVerticalFillWithCallbacks:callbacks firstColor:innerColor secondColor:outerColor];
107+}
108+
109+- (void)customVerticalFillWithCallbacks:(CGFunctionCallbacks)functionCallbacks firstColor:(NSColor *)firstColor secondColor:(NSColor *)secondColor
110+{
111+ CGColorSpaceRef colorspace;
112+ CGShadingRef shading;
113+ CGPoint startPoint = {0, 0};
114+ CGPoint endPoint = {0, 0};
115+ CGFunctionRef function;
116+ float colors[12]; // pointer to color values
117+
118+ // get my context
119+ CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
120+
121+ NSColor *deviceDependentFirstColor = [firstColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
122+ NSColor *deviceDependentSecondColor = [secondColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
123+
124+ // set up colors for gradient
125+ colors[0] = [deviceDependentFirstColor redComponent];
126+ colors[1] = [deviceDependentFirstColor greenComponent];
127+ colors[2] = [deviceDependentFirstColor blueComponent];
128+ colors[3] = [deviceDependentFirstColor alphaComponent];
129+
130+ colors[4] = [deviceDependentSecondColor redComponent];
131+ colors[5] = [deviceDependentSecondColor greenComponent];
132+ colors[6] = [deviceDependentSecondColor blueComponent];
133+ colors[7] = [deviceDependentSecondColor alphaComponent];
134+
135+ // difference between start and end color for each color components
136+ colors[8] = (colors[4]-colors[0]);
137+ colors[9] = (colors[5]-colors[1]);
138+ colors[10] = (colors[6]-colors[2]);
139+ colors[11] = (colors[7]-colors[3]);
140+
141+ // draw gradient
142+ colorspace = CGColorSpaceCreateDeviceRGB();
143+ size_t components = 1 + CGColorSpaceGetNumberOfComponents(colorspace);
144+ static const float domain[2] = {0.0, 1.0};
145+ static const float range[10] = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1};
146+ //static const CGFunctionCallbacks callbacks = {0, &bilinearShadedColor, NULL};
147+
148+ // Create a CGFunctionRef that describes a function taking 1 input and kChannelsPerColor outputs.
149+ function = CGFunctionCreate(colors, 1, domain, components, range, &functionCallbacks);
150+
151+ startPoint.x=0;
152+ startPoint.y=[self bounds].origin.y;
153+ endPoint.x=0;
154+ endPoint.y=NSMaxY([self bounds]);
155+
156+ shading = CGShadingCreateAxial(colorspace, startPoint, endPoint, function, NO, NO);
157+
158+ CGContextSaveGState(currentContext);
159+ [self addClip];
160+ CGContextDrawShading(currentContext, shading);
161+ CGContextRestoreGState(currentContext);
162+
163+ CGShadingRelease(shading);
164+ CGFunctionRelease(function);
165+ CGColorSpaceRelease(colorspace);
166+}
167+
168+
169+@end
--- /dev/null
+++ b/NSWorkspace-Extensions.h
@@ -0,0 +1,15 @@
1+//
2+// NSWorkspace-Extensions.h
3+// IconSetComposer
4+//
5+// Created by Hori,Masaki on 06/01/25.
6+// Copyright 2006 __MyCompanyName__. All rights reserved.
7+//
8+
9+#import <Cocoa/Cocoa.h>
10+
11+
12+@interface NSWorkspace(HMCocoaExtention)
13+-(BOOL)quitApplication:(NSString *)appName;
14+- (NSImage *)systemIconForType:(OSType)iconType;
15+@end
--- /dev/null
+++ b/NSWorkspace-Extensions.m
@@ -0,0 +1,82 @@
1+//
2+// NSWorkspace-Extensions.m
3+// IconSetComposer
4+//
5+// Created by Hori,Masaki on 06/01/25.
6+// Copyright 2006 __MyCompanyName__. All rights reserved.
7+//
8+
9+#import "NSWorkspace-Extensions.h"
10+
11+#import "NSAppleEventDescriptor-Extensions.h"
12+
13+@implementation NSWorkspace(HMCocoaExtention)
14+-(BOOL)quitApplication:(NSString *)appName
15+{
16+ NSAppleEventDescriptor *targetDesc;
17+ NSAppleEventDescriptor *appleEvent;
18+ AppleEvent reply;
19+ NSAppleEventDescriptor *replyDesc;
20+ NSAppleEventDescriptor *anser;
21+ OSStatus err;
22+
23+ targetDesc = [NSAppleEventDescriptor targetDescriptorWithAppName:appName];
24+ if(!targetDesc) return NO;
25+
26+ appleEvent = [NSAppleEventDescriptor appleEventWithEventClass:kCoreEventClass
27+ eventID:kAEQuitApplication
28+ targetDescriptor:targetDesc
29+ returnID:kAutoGenerateReturnID
30+ transactionID:kAnyTransactionID];
31+ if(!appleEvent) return NO;
32+
33+ err = AESendMessage( [appleEvent aeDesc], &reply, kAECanInteract + kAEWaitReply , kAEDefaultTimeout );
34+ if( err == procNotFound) {
35+ AEDisposeDesc(&reply);
36+ return YES;
37+ }
38+ if(err != noErr) return err;
39+
40+ replyDesc = [[[NSAppleEventDescriptor allocWithZone:[self zone]] initWithAEDescNoCopy:&reply] autorelease];
41+ anser = [replyDesc paramDescriptorForKeyword:keyErrorNumber];
42+ err = (OSStatus)[[anser stringValue] floatValue];
43+ if(err != noErr) {
44+ anser = [replyDesc paramDescriptorForKeyword:keyErrorString];
45+ if(anser) NSLog(@"Target returned error. (%@)",[anser stringValue]);
46+ }
47+ return err == noErr;
48+}
49+
50+//Import from BathyScaphe.
51+#pragma mark Icon Services Wrapper
52+- (NSImage *)systemIconForType:(OSType)iconType
53+{
54+ IconRef iconRef;
55+ IconFamilyHandle iconFamily;
56+ OSErr result;
57+
58+ result = GetIconRef(kOnSystemDisk, kSystemIconsCreator, iconType, &iconRef);
59+
60+ if (result != noErr) {
61+ return nil;
62+ }
63+
64+ result = IconRefToIconFamily(iconRef, kSelectorAllAvailableData, &iconFamily);
65+
66+ if (result != noErr || !iconFamily) {
67+ return nil;
68+ }
69+
70+ ReleaseIconRef(iconRef);
71+
72+ NSData *iconData;
73+ NSImage *iconImage = nil;
74+
75+ iconData = [NSData dataWithBytes:*iconFamily length:GetHandleSize((Handle)iconFamily)];
76+ iconImage = [[[NSImage alloc] initWithData:iconData] autorelease];
77+
78+ DisposeHandle((Handle)iconFamily);
79+
80+ return iconImage;
81+}
82+@end
Binary files /dev/null and b/icon.org differ
Binary files /dev/null and b/icon.tiff differ
--- /dev/null
+++ b/main.m
@@ -0,0 +1,14 @@
1+//
2+// main.m
3+// BSTRAEditor
4+//
5+// Created by Hori,Masaki on 08/03/11.
6+// Copyright Hori,Masaki 2008 . All rights reserved.
7+//
8+
9+#import <Cocoa/Cocoa.h>
10+
11+int main(int argc, char *argv[])
12+{
13+ return NSApplicationMain(argc, (const char **) argv);
14+}