summaryrefslogtreecommitdiffabout
path: root/pumpkin
Unidiff
Diffstat (limited to 'pumpkin') (more/less context) (ignore whitespace changes)
-rw-r--r--pumpkin/ARequest.h47
-rw-r--r--pumpkin/ARequest.m184
-rw-r--r--pumpkin/ARequest.xib1790
-rw-r--r--pumpkin/ConfirmRequest.h38
-rw-r--r--pumpkin/ConfirmRequest.m57
-rw-r--r--pumpkin/ConfirmRequest.xib695
-rw-r--r--pumpkin/Credits.rtf17
-rw-r--r--pumpkin/DaemonListener.h15
-rw-r--r--pumpkin/DaemonListener.m111
-rw-r--r--pumpkin/IPFormatter.h6
-rw-r--r--pumpkin/IPFormatter.m21
-rw-r--r--pumpkin/IPTransformer.h6
-rw-r--r--pumpkin/IPTransformer.m21
-rw-r--r--pumpkin/NSPortNumberTransformer.h5
-rw-r--r--pumpkin/NSPortNumberTransformer.m22
-rw-r--r--pumpkin/NumberTransformer.h6
-rw-r--r--pumpkin/NumberTransformer.m19
-rw-r--r--pumpkin/PumpKIN.h49
-rw-r--r--pumpkin/PumpKIN.m301
-rw-r--r--pumpkin/PumpKIN.xib4251
-rw-r--r--pumpkin/ReceiveXFer.h8
-rw-r--r--pumpkin/ReceiveXFer.m168
-rw-r--r--pumpkin/SendXFer.h16
-rw-r--r--pumpkin/SendXFer.m156
-rw-r--r--pumpkin/StringsAttached.h11
-rw-r--r--pumpkin/StringsAttached.m19
-rw-r--r--pumpkin/TFTPPacket.h87
-rw-r--r--pumpkin/TFTPPacket.m203
-rw-r--r--pumpkin/XFer.h68
-rw-r--r--pumpkin/XFer.m205
-rw-r--r--pumpkin/XFersViewDatasource.h11
-rw-r--r--pumpkin/XFersViewDatasource.m24
-rw-r--r--pumpkin/abort.icnsbin0 -> 8393 bytes
-rw-r--r--pumpkin/en.lproj/InfoPlist.strings2
-rw-r--r--pumpkin/get.icnsbin0 -> 8016 bytes
-rw-r--r--pumpkin/klever-background.pngbin0 -> 2175 bytes
-rw-r--r--pumpkin/main.m6
-rw-r--r--pumpkin/pumpkin-Info.plist38
-rw-r--r--pumpkin/pumpkin-Prefix.pch7
-rw-r--r--pumpkin/pumpkin-defaults.plist28
-rw-r--r--pumpkin/put.icnsbin0 -> 8136 bytes
41 files changed, 8718 insertions, 0 deletions
diff --git a/pumpkin/ARequest.h b/pumpkin/ARequest.h
new file mode 100644
index 0000000..232dcf8
--- a/dev/null
+++ b/pumpkin/ARequest.h
@@ -0,0 +1,47 @@
1#import <Cocoa/Cocoa.h>
2
3@interface ARequest : NSWindowController {
4 BOOL requestIsGet;
5
6 CFHostRef cfhost;
7
8 NSString *localFile;
9 NSString *remoteHost;
10 NSNumber *remotePort;
11 NSString *remoteFile;
12 NSString *xferType;
13 NSNumber *blockSize;
14 NSNumber *timeout;
15
16 NSTextField *remoteHostBox;
17 BOOL doTouchMe;
18 NSString *statusLabel;
19 NSString *errorLabel;
20}
21
22@property BOOL requestIsGet;
23@property BOOL doTouchMe;
24@property (copy) NSString *statusLabel;
25@property (copy) NSString *errorLabel;
26
27@property (copy) NSString *localFile;
28@property (copy) NSString *remoteHost;
29@property (copy) NSNumber *remotePort;
30@property (copy) NSString *remoteFile;
31@property (copy) NSString *xferType;
32@property (copy) NSNumber *blockSize;
33@property (copy) NSNumber *timeout;
34
35@property (assign) IBOutlet NSTextField *remoteHostBox;
36
37- (IBAction)startXfer:(id)sender;
38- (IBAction)pickFile:(id)sender;
39
40-(void)hostCallbackWithHost:(CFHostRef)h info:(CFHostInfoType)hi andError:(const CFStreamError*)e;
41
42+(void)getFile;
43+(void)putFile;
44
45-(ARequest*)initWithGet:(BOOL)gr;
46
47@end
diff --git a/pumpkin/ARequest.m b/pumpkin/ARequest.m
new file mode 100644
index 0000000..439366e
--- a/dev/null
+++ b/pumpkin/ARequest.m
@@ -0,0 +1,184 @@
1
2#import "pumpkin.h"
3#import "ARequest.h"
4#import "ReceiveXFer.h"
5#import "SendXFer.h"
6
7static void cbHost(CFHostRef h,CFHostInfoType hi,const CFStreamError *e,void *i) {
8 [(ARequest*)i hostCallbackWithHost:h info:hi andError:e];
9}
10
11
12@implementation ARequest
13@synthesize requestIsGet;
14@synthesize doTouchMe;
15@synthesize statusLabel;
16@synthesize errorLabel;
17
18@synthesize localFile;
19@synthesize remoteHost;
20@synthesize remotePort;
21@synthesize remoteFile;
22@synthesize xferType;
23@synthesize blockSize;
24@synthesize timeout;
25
26@synthesize remoteHostBox;
27
28-(void)unhost {
29 if(!cfhost) return;
30 CFHostCancelInfoResolution(cfhost, kCFHostAddresses);
31 CFHostUnscheduleFromRunLoop(cfhost, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
32 CFRelease(cfhost);
33 cfhost = nil;
34}
35-(void)loadDefaults {
36 id d = [NSUserDefaultsController.sharedUserDefaultsController values];
37 self.remotePort = [d valueForKey:@"remotePort"];
38 self.blockSize = [d valueForKey:@"blockSize"];
39 self.xferType = [d valueForKey:@"xferType"];
40 self.remoteHost = [d valueForKey:@"remoteHost"];
41 self.timeout = [d valueForKey:@"timeout"];
42
43 self.localFile = [[d valueForKey:@"tftpRoot"] stringByAppendingString:@"/"];
44}
45-(void)saveDefaults {
46 NSUserDefaultsController *dc = [NSUserDefaultsController sharedUserDefaultsController];
47 id d = dc.values;
48 [d setValue:self.remotePort forKey:@"remotePort"];
49 [d setValue:self.remoteHost forKey:@"remoteHost"];
50 [d setValue:self.blockSize forKey:@"blockSize"];
51 [d setValue:self.xferType forKey:@"xferType"];
52 [d setValue:self.timeout forKey:@"timeout"];
53 [dc save:self];
54}
55
56
57- (IBAction)startXfer:(id)sender {
58 if(!(cfhost = CFHostCreateWithName(kCFAllocatorDefault, (CFStringRef)remoteHost))) {
59 self.errorLabel = @"failed to even try to resolve.";
60 return;
61 }
62 struct CFHostClientContext hc;
63 hc.version=0; hc.info=self; hc.retain=0;hc.release=0;
64 hc.copyDescription=0;
65 CFHostSetClient(cfhost, cbHost, &hc);
66 CFHostScheduleWithRunLoop(cfhost, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
67 CFStreamError e;
68 if(!CFHostStartInfoResolution(cfhost, kCFHostAddresses, &e)) {
69 self.errorLabel = @"failed to start host resolution.";
70 [self unhost];
71 return;
72 }
73 self.statusLabel = @"resolving remote host…";
74 self.doTouchMe = NO;
75}
76
77-(void)hostCallbackWithHost:(CFHostRef)h info:(CFHostInfoType)hi andError:(const CFStreamError *)e {
78 NSString *el = nil;
79 CFArrayRef aa = nil;
80 __block struct sockaddr_in peer;
81 do {
82 if(e && (e->domain || e->error)) {
83 el=@"failed to resolve remote address"; break;
84 }
85 Boolean hbr;
86 aa = CFHostGetAddressing(cfhost, &hbr);
87 if(!(hbr && aa && CFArrayGetCount(aa))) {
88 el=@"failed to find remote address"; break;
89 }
90 peer.sin_addr.s_addr=INADDR_NONE; [(NSArray*)aa enumerateObjectsUsingBlock:^(NSData *o,NSUInteger i,BOOL *s) {
91 const struct sockaddr_in *sin = o.bytes;
92 if(sin->sin_family!=AF_INET) return;
93 memmove(&peer,sin,sizeof(peer));
94 *s = YES;
95 }];
96 if(peer.sin_addr.s_addr==INADDR_NONE) {
97 el=@"found no ipv4 address"; break;
98 }
99 peer.sin_port = htons([remotePort unsignedIntValue]);
100 }while(false);
101 [self unhost];
102 if(el) {
103 self.errorLabel = el; self.doTouchMe = YES; return;
104 }
105 [self saveDefaults];
106 [[[requestIsGet?ReceiveXFer.class:SendXFer.class alloc]
107 initWithLocalFile:localFile peerAddress:&peer remoteFile:remoteFile xferType:xferType blockSize:blockSize.unsignedIntValue andTimeout:timeout.intValue]
108 autorelease];
109 [self.window performClose:nil];
110}
111
112- (IBAction)pickFile:(id)sender {
113 NSSavePanel *p = nil;
114 if(requestIsGet) {
115 p = [NSSavePanel savePanel];
116 p.canCreateDirectories = YES;
117 }else{
118 NSOpenPanel *pp = [NSOpenPanel openPanel];
119 pp.canChooseDirectories = NO;
120 pp.canChooseFiles = YES;
121 pp.allowsMultipleSelection = NO;
122 p = pp;
123 }
124 p.prompt = @"Pick the local file";
125 if([p runModal]!=NSFileHandlingPanelOKButton) return;
126 self.localFile = p.URL.path;
127}
128
129- (ARequest*) initWithGet:(BOOL)gr {
130 if(!(self = [super initWithWindowNibName:@"ARequest"])) return self;
131 self.doTouchMe = YES;
132 cfhost = nil;
133 requestIsGet = gr;
134 if(requestIsGet) {
135 self.window.title = @"Get file from remote TFTP server";
136 self.window.initialFirstResponder = remoteHostBox;
137 }else{
138 self.window.title = @"Put file to remote TFTP server";
139 }
140 [self loadDefaults];
141 [self addObserver:self forKeyPath:@"localFile" options:0 context:0];
142 [self addObserver:self forKeyPath:@"remoteFile" options:0 context:0];
143 return [self retain];
144}
145-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
146 if(requestIsGet) {
147 if([keyPath isEqualToString:@"remoteFile"]) {
148 if(self.remoteFile.length) {
149 self.localFile= [([self.localFile hasSuffix:@"/"]
150 ?self.localFile
151 :[self.localFile stringByDeletingLastPathComponent])
152 stringByAppendingPathComponent:self.remoteFile.lastPathComponent];
153 }else
154 self.localFile=[[self.localFile stringByDeletingLastPathComponent] stringByAppendingString:@"/"];
155 }
156 }else{
157 if([keyPath isEqualToString:@"localFile"]) {
158 self.remoteFile=[self.localFile hasSuffix:@"/"]
159 ?@"":self.localFile.lastPathComponent;
160 }
161 }
162}
163
164+ (ARequest*) aRequestWithGet:(BOOL)gr {
165 return [[[ARequest alloc] initWithGet:gr] autorelease];
166}
167
168static void popMeUp(BOOL g) {
169 [[ARequest aRequestWithGet:g].window makeKeyAndOrderFront:nil];
170}
171+ (void)getFile { popMeUp(YES); }
172+ (void)putFile { popMeUp(NO); }
173
174- (void)windowDidLoad {
175}
176
177- (void)windowWillClose:(NSNotification*)n {
178 [self unhost];
179 [self removeObserver:self forKeyPath:@"localFile" context:0];
180 [self removeObserver:self forKeyPath:@"remoteFile" context:0];
181 [self release];
182}
183
184@end
diff --git a/pumpkin/ARequest.xib b/pumpkin/ARequest.xib
new file mode 100644
index 0000000..5a85dcf
--- a/dev/null
+++ b/pumpkin/ARequest.xib
@@ -0,0 +1,1790 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
3 <data>
4 <int key="IBDocument.SystemTarget">1080</int>
5 <string key="IBDocument.SystemVersion">12C60</string>
6 <string key="IBDocument.InterfaceBuilderVersion">2844</string>
7 <string key="IBDocument.AppKitVersion">1187.34</string>
8 <string key="IBDocument.HIToolboxVersion">625.00</string>
9 <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
10 <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
11 <string key="NS.object.0">2844</string>
12 </object>
13 <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
14 <bool key="EncodedWithXMLCoder">YES</bool>
15 <string>NSButton</string>
16 <string>NSButtonCell</string>
17 <string>NSComboBox</string>
18 <string>NSComboBoxCell</string>
19 <string>NSCustomObject</string>
20 <string>NSProgressIndicator</string>
21 <string>NSTextField</string>
22 <string>NSTextFieldCell</string>
23 <string>NSUserDefaultsController</string>
24 <string>NSView</string>
25 <string>NSWindowTemplate</string>
26 </object>
27 <object class="NSArray" key="IBDocument.PluginDependencies">
28 <bool key="EncodedWithXMLCoder">YES</bool>
29 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
30 </object>
31 <object class="NSMutableDictionary" key="IBDocument.Metadata">
32 <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
33 <integer value="1" key="NS.object.0"/>
34 </object>
35 <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
36 <bool key="EncodedWithXMLCoder">YES</bool>
37 <object class="NSCustomObject" id="1001">
38 <string key="NSClassName">ARequest</string>
39 </object>
40 <object class="NSCustomObject" id="1003">
41 <string key="NSClassName">FirstResponder</string>
42 </object>
43 <object class="NSCustomObject" id="1004">
44 <string key="NSClassName">NSApplication</string>
45 </object>
46 <object class="NSWindowTemplate" id="265268434">
47 <int key="NSWindowStyleMask">3</int>
48 <int key="NSWindowBacking">2</int>
49 <string key="NSWindowRect">{{131, 159}, {553, 185}}</string>
50 <int key="NSWTFlags">611845120</int>
51 <string key="NSWindowTitle">PumpKIN request</string>
52 <string key="NSWindowClass">NSWindow</string>
53 <nil key="NSViewClass"/>
54 <nil key="NSUserInterfaceItemIdentifier"/>
55 <object class="NSView" key="NSWindowView" id="537034939">
56 <reference key="NSNextResponder"/>
57 <int key="NSvFlags">256</int>
58 <object class="NSMutableArray" key="NSSubviews">
59 <bool key="EncodedWithXMLCoder">YES</bool>
60 <object class="NSTextField" id="983573643">
61 <reference key="NSNextResponder" ref="537034939"/>
62 <int key="NSvFlags">268</int>
63 <string key="NSFrame">{{45, 145}, {65, 17}}</string>
64 <reference key="NSSuperview" ref="537034939"/>
65 <reference key="NSWindow"/>
66 <reference key="NSNextKeyView" ref="392834772"/>
67 <string key="NSReuseIdentifierKey">_NS:3936</string>
68 <bool key="NSEnabled">YES</bool>
69 <object class="NSTextFieldCell" key="NSCell" id="85931455">
70 <int key="NSCellFlags">68157504</int>
71 <int key="NSCellFlags2">272630784</int>
72 <string key="NSContents">Local file:</string>
73 <object class="NSFont" key="NSSupport" id="870520972">
74 <string key="NSName">LucidaGrande</string>
75 <double key="NSSize">13</double>
76 <int key="NSfFlags">1044</int>
77 </object>
78 <string key="NSCellIdentifier">_NS:3936</string>
79 <reference key="NSControlView" ref="983573643"/>
80 <object class="NSColor" key="NSBackgroundColor" id="462322918">
81 <int key="NSColorSpace">6</int>
82 <string key="NSCatalogName">System</string>
83 <string key="NSColorName">controlColor</string>
84 <object class="NSColor" key="NSColor" id="51768974">
85 <int key="NSColorSpace">3</int>
86 <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
87 </object>
88 </object>
89 <object class="NSColor" key="NSTextColor" id="374908237">
90 <int key="NSColorSpace">6</int>
91 <string key="NSCatalogName">System</string>
92 <string key="NSColorName">controlTextColor</string>
93 <object class="NSColor" key="NSColor" id="1058998983">
94 <int key="NSColorSpace">3</int>
95 <bytes key="NSWhite">MAA</bytes>
96 </object>
97 </object>
98 </object>
99 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
100 </object>
101 <object class="NSTextField" id="392834772">
102 <reference key="NSNextResponder" ref="537034939"/>
103 <int key="NSvFlags">270</int>
104 <string key="NSFrame">{{115, 143}, {349, 22}}</string>
105 <reference key="NSSuperview" ref="537034939"/>
106 <reference key="NSWindow"/>
107 <reference key="NSNextKeyView" ref="176529531"/>
108 <string key="NSReuseIdentifierKey">_NS:248</string>
109 <bool key="NSEnabled">YES</bool>
110 <object class="NSTextFieldCell" key="NSCell" id="47222242">
111 <int key="NSCellFlags">-1804599231</int>
112 <int key="NSCellFlags2">272630784</int>
113 <string key="NSContents"/>
114 <reference key="NSSupport" ref="870520972"/>
115 <string key="NSCellIdentifier">_NS:248</string>
116 <reference key="NSControlView" ref="392834772"/>
117 <bool key="NSDrawsBackground">YES</bool>
118 <object class="NSColor" key="NSBackgroundColor" id="970286794">
119 <int key="NSColorSpace">6</int>
120 <string key="NSCatalogName">System</string>
121 <string key="NSColorName">textBackgroundColor</string>
122 <object class="NSColor" key="NSColor" id="232866438">
123 <int key="NSColorSpace">3</int>
124 <bytes key="NSWhite">MQA</bytes>
125 </object>
126 </object>
127 <object class="NSColor" key="NSTextColor" id="95498365">
128 <int key="NSColorSpace">6</int>
129 <string key="NSCatalogName">System</string>
130 <string key="NSColorName">textColor</string>
131 <reference key="NSColor" ref="1058998983"/>
132 </object>
133 </object>
134 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
135 </object>
136 <object class="NSButton" id="176529531">
137 <reference key="NSNextResponder" ref="537034939"/>
138 <int key="NSvFlags">265</int>
139 <string key="NSFrame">{{472, 144}, {56, 19}}</string>
140 <reference key="NSSuperview" ref="537034939"/>
141 <reference key="NSWindow"/>
142 <reference key="NSNextKeyView" ref="712275833"/>
143 <string key="NSReuseIdentifierKey">_NS:1491</string>
144 <bool key="NSEnabled">YES</bool>
145 <object class="NSButtonCell" key="NSCell" id="827794247">
146 <int key="NSCellFlags">67108864</int>
147 <int key="NSCellFlags2">134217728</int>
148 <string key="NSContents">Browse</string>
149 <object class="NSFont" key="NSSupport">
150 <string key="NSName">LucidaGrande</string>
151 <double key="NSSize">12</double>
152 <int key="NSfFlags">4883</int>
153 </object>
154 <string key="NSCellIdentifier">_NS:1491</string>
155 <reference key="NSControlView" ref="176529531"/>
156 <int key="NSButtonFlags">-2033434624</int>
157 <int key="NSButtonFlags2">164</int>
158 <string key="NSAlternateContents"/>
159 <string key="NSKeyEquivalent"/>
160 <int key="NSPeriodicDelay">400</int>
161 <int key="NSPeriodicInterval">75</int>
162 </object>
163 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
164 </object>
165 <object class="NSTextField" id="712275833">
166 <reference key="NSNextResponder" ref="537034939"/>
167 <int key="NSvFlags">268</int>
168 <string key="NSFrame">{{22, 115}, {88, 17}}</string>
169 <reference key="NSSuperview" ref="537034939"/>
170 <reference key="NSWindow"/>
171 <reference key="NSNextKeyView" ref="23478474"/>
172 <string key="NSReuseIdentifierKey">_NS:3936</string>
173 <bool key="NSEnabled">YES</bool>
174 <object class="NSTextFieldCell" key="NSCell" id="931249278">
175 <int key="NSCellFlags">68157504</int>
176 <int key="NSCellFlags2">272630784</int>
177 <string key="NSContents">Remote host:</string>
178 <reference key="NSSupport" ref="870520972"/>
179 <string key="NSCellIdentifier">_NS:3936</string>
180 <reference key="NSControlView" ref="712275833"/>
181 <reference key="NSBackgroundColor" ref="462322918"/>
182 <reference key="NSTextColor" ref="374908237"/>
183 </object>
184 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
185 </object>
186 <object class="NSTextField" id="23478474">
187 <reference key="NSNextResponder" ref="537034939"/>
188 <int key="NSvFlags">268</int>
189 <string key="NSFrame">{{115, 113}, {146, 22}}</string>
190 <reference key="NSSuperview" ref="537034939"/>
191 <reference key="NSWindow"/>
192 <reference key="NSNextKeyView" ref="525390780"/>
193 <string key="NSReuseIdentifierKey">_NS:248</string>
194 <bool key="NSEnabled">YES</bool>
195 <object class="NSTextFieldCell" key="NSCell" id="241562469">
196 <int key="NSCellFlags">-1804599231</int>
197 <int key="NSCellFlags2">272630784</int>
198 <string key="NSContents"/>
199 <reference key="NSSupport" ref="870520972"/>
200 <string key="NSCellIdentifier">_NS:248</string>
201 <reference key="NSControlView" ref="23478474"/>
202 <bool key="NSDrawsBackground">YES</bool>
203 <reference key="NSBackgroundColor" ref="970286794"/>
204 <reference key="NSTextColor" ref="95498365"/>
205 </object>
206 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
207 </object>
208 <object class="NSTextField" id="525390780">
209 <reference key="NSNextResponder" ref="537034939"/>
210 <int key="NSvFlags">268</int>
211 <string key="NSFrame">{{266, 116}, {35, 17}}</string>
212 <reference key="NSSuperview" ref="537034939"/>
213 <reference key="NSWindow"/>
214 <reference key="NSNextKeyView" ref="471811034"/>
215 <string key="NSReuseIdentifierKey">_NS:3936</string>
216 <bool key="NSEnabled">YES</bool>
217 <object class="NSTextFieldCell" key="NSCell" id="637728381">
218 <int key="NSCellFlags">68157504</int>
219 <int key="NSCellFlags2">272630784</int>
220 <string key="NSContents">port:</string>
221 <reference key="NSSupport" ref="870520972"/>
222 <string key="NSCellIdentifier">_NS:3936</string>
223 <reference key="NSControlView" ref="525390780"/>
224 <reference key="NSBackgroundColor" ref="462322918"/>
225 <reference key="NSTextColor" ref="374908237"/>
226 </object>
227 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
228 </object>
229 <object class="NSTextField" id="471811034">
230 <reference key="NSNextResponder" ref="537034939"/>
231 <int key="NSvFlags">268</int>
232 <string key="NSFrame">{{306, 113}, {71, 22}}</string>
233 <reference key="NSSuperview" ref="537034939"/>
234 <reference key="NSWindow"/>
235 <reference key="NSNextKeyView" ref="656785083"/>
236 <string key="NSReuseIdentifierKey">_NS:248</string>
237 <bool key="NSEnabled">YES</bool>
238 <object class="NSTextFieldCell" key="NSCell" id="35095251">
239 <int key="NSCellFlags">-1804599231</int>
240 <int key="NSCellFlags2">272630784</int>
241 <string key="NSContents"/>
242 <reference key="NSSupport" ref="870520972"/>
243 <string key="NSCellIdentifier">_NS:248</string>
244 <reference key="NSControlView" ref="471811034"/>
245 <bool key="NSDrawsBackground">YES</bool>
246 <reference key="NSBackgroundColor" ref="970286794"/>
247 <reference key="NSTextColor" ref="95498365"/>
248 </object>
249 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
250 </object>
251 <object class="NSTextField" id="656785083">
252 <reference key="NSNextResponder" ref="537034939"/>
253 <int key="NSvFlags">268</int>
254 <string key="NSFrame">{{380, 115}, {28, 17}}</string>
255 <reference key="NSSuperview" ref="537034939"/>
256 <reference key="NSWindow"/>
257 <reference key="NSNextKeyView" ref="685519878"/>
258 <string key="NSReuseIdentifierKey">_NS:3936</string>
259 <bool key="NSEnabled">YES</bool>
260 <object class="NSTextFieldCell" key="NSCell" id="114681340">
261 <int key="NSCellFlags">68157504</int>
262 <int key="NSCellFlags2">272630784</int>
263 <string key="NSContents">file:</string>
264 <reference key="NSSupport" ref="870520972"/>
265 <string key="NSCellIdentifier">_NS:3936</string>
266 <reference key="NSControlView" ref="656785083"/>
267 <reference key="NSBackgroundColor" ref="462322918"/>
268 <reference key="NSTextColor" ref="374908237"/>
269 </object>
270 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
271 </object>
272 <object class="NSTextField" id="685519878">
273 <reference key="NSNextResponder" ref="537034939"/>
274 <int key="NSvFlags">268</int>
275 <string key="NSFrame">{{413, 113}, {120, 22}}</string>
276 <reference key="NSSuperview" ref="537034939"/>
277 <reference key="NSWindow"/>
278 <reference key="NSNextKeyView" ref="1027449834"/>
279 <string key="NSReuseIdentifierKey">_NS:248</string>
280 <bool key="NSEnabled">YES</bool>
281 <object class="NSTextFieldCell" key="NSCell" id="983145747">
282 <int key="NSCellFlags">-1804599231</int>
283 <int key="NSCellFlags2">272630784</int>
284 <string key="NSContents"/>
285 <reference key="NSSupport" ref="870520972"/>
286 <string key="NSCellIdentifier">_NS:248</string>
287 <reference key="NSControlView" ref="685519878"/>
288 <bool key="NSDrawsBackground">YES</bool>
289 <reference key="NSBackgroundColor" ref="970286794"/>
290 <reference key="NSTextColor" ref="95498365"/>
291 </object>
292 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
293 </object>
294 <object class="NSTextField" id="1027449834">
295 <reference key="NSNextResponder" ref="537034939"/>
296 <int key="NSvFlags">268</int>
297 <string key="NSFrame">{{17, 83}, {93, 17}}</string>
298 <reference key="NSSuperview" ref="537034939"/>
299 <reference key="NSWindow"/>
300 <reference key="NSNextKeyView" ref="1029217440"/>
301 <string key="NSReuseIdentifierKey">_NS:3936</string>
302 <bool key="NSEnabled">YES</bool>
303 <object class="NSTextFieldCell" key="NSCell" id="977543267">
304 <int key="NSCellFlags">68157504</int>
305 <int key="NSCellFlags2">272630784</int>
306 <string key="NSContents">Transfer type:</string>
307 <reference key="NSSupport" ref="870520972"/>
308 <string key="NSCellIdentifier">_NS:3936</string>
309 <reference key="NSControlView" ref="1027449834"/>
310 <reference key="NSBackgroundColor" ref="462322918"/>
311 <reference key="NSTextColor" ref="374908237"/>
312 </object>
313 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
314 </object>
315 <object class="NSComboBox" id="1029217440">
316 <reference key="NSNextResponder" ref="537034939"/>
317 <int key="NSvFlags">268</int>
318 <string key="NSFrame">{{115, 79}, {99, 26}}</string>
319 <reference key="NSSuperview" ref="537034939"/>
320 <reference key="NSWindow"/>
321 <reference key="NSNextKeyView" ref="213673854"/>
322 <string key="NSReuseIdentifierKey">_NS:66</string>
323 <bool key="NSEnabled">YES</bool>
324 <object class="NSComboBoxCell" key="NSCell" id="567568844">
325 <int key="NSCellFlags">342884416</int>
326 <int key="NSCellFlags2">272630784</int>
327 <string key="NSContents"/>
328 <reference key="NSSupport" ref="870520972"/>
329 <string key="NSCellIdentifier">_NS:66</string>
330 <reference key="NSControlView" ref="1029217440"/>
331 <bool key="NSDrawsBackground">YES</bool>
332 <reference key="NSBackgroundColor" ref="970286794"/>
333 <reference key="NSTextColor" ref="374908237"/>
334 <int key="NSVisibleItemCount">2</int>
335 <bool key="NSHasVerticalScroller">YES</bool>
336 <bool key="NSCompletes">YES</bool>
337 <object class="NSMutableArray" key="NSPopUpListData">
338 <bool key="EncodedWithXMLCoder">YES</bool>
339 <string>octet</string>
340 <string>netascii</string>
341 </object>
342 <reference key="NSDelegate" ref="1029217440"/>
343 <object class="NSComboTableView" key="NSTableView" id="681272190">
344 <reference key="NSNextResponder"/>
345 <int key="NSvFlags">274</int>
346 <string key="NSFrameSize">{13, 42}</string>
347 <reference key="NSSuperview"/>
348 <reference key="NSWindow"/>
349 <string key="NSReuseIdentifierKey">_NS:108</string>
350 <bool key="NSEnabled">YES</bool>
351 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
352 <bool key="NSControlAllowsExpansionToolTips">YES</bool>
353 <object class="NSMutableArray" key="NSTableColumns">
354 <bool key="EncodedWithXMLCoder">YES</bool>
355 <object class="NSTableColumn">
356 <double key="NSWidth">10</double>
357 <double key="NSMinWidth">10</double>
358 <double key="NSMaxWidth">1000</double>
359 <object class="NSTableHeaderCell" key="NSHeaderCell">
360 <int key="NSCellFlags">75497472</int>
361 <int key="NSCellFlags2">0</int>
362 <string key="NSContents"/>
363 <object class="NSFont" key="NSSupport" id="110565960">
364 <string key="NSName">LucidaGrande</string>
365 <double key="NSSize">12</double>
366 <int key="NSfFlags">16</int>
367 </object>
368 <object class="NSColor" key="NSBackgroundColor">
369 <int key="NSColorSpace">3</int>
370 <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
371 </object>
372 <reference key="NSTextColor" ref="232866438"/>
373 </object>
374 <object class="NSTextFieldCell" key="NSDataCell">
375 <int key="NSCellFlags">338690112</int>
376 <int key="NSCellFlags2">1024</int>
377 <reference key="NSSupport" ref="870520972"/>
378 <reference key="NSControlView" ref="681272190"/>
379 <bool key="NSDrawsBackground">YES</bool>
380 <object class="NSColor" key="NSBackgroundColor" id="240142953">
381 <int key="NSColorSpace">6</int>
382 <string key="NSCatalogName">System</string>
383 <string key="NSColorName">controlBackgroundColor</string>
384 <reference key="NSColor" ref="51768974"/>
385 </object>
386 <reference key="NSTextColor" ref="374908237"/>
387 </object>
388 <int key="NSResizingMask">3</int>
389 <bool key="NSIsResizeable">YES</bool>
390 <reference key="NSTableView" ref="681272190"/>
391 </object>
392 </object>
393 <double key="NSIntercellSpacingWidth">3</double>
394 <double key="NSIntercellSpacingHeight">2</double>
395 <reference key="NSBackgroundColor" ref="240142953"/>
396 <object class="NSColor" key="NSGridColor" id="524577992">
397 <int key="NSColorSpace">6</int>
398 <string key="NSCatalogName">System</string>
399 <string key="NSColorName">gridColor</string>
400 <object class="NSColor" key="NSColor">
401 <int key="NSColorSpace">3</int>
402 <bytes key="NSWhite">MC41AA</bytes>
403 </object>
404 </object>
405 <double key="NSRowHeight">19</double>
406 <string key="NSAction">tableViewAction:</string>
407 <int key="NSTvFlags">-765427712</int>
408 <reference key="NSDelegate" ref="567568844"/>
409 <reference key="NSDataSource" ref="567568844"/>
410 <reference key="NSTarget" ref="567568844"/>
411 <int key="NSColumnAutoresizingStyle">1</int>
412 <int key="NSDraggingSourceMaskForLocal">15</int>
413 <int key="NSDraggingSourceMaskForNonLocal">0</int>
414 <bool key="NSAllowsTypeSelect">YES</bool>
415 <int key="NSTableViewDraggingDestinationStyle">0</int>
416 <int key="NSTableViewGroupRowStyle">1</int>
417 </object>
418 </object>
419 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
420 </object>
421 <object class="NSTextField" id="291839274">
422 <reference key="NSNextResponder" ref="537034939"/>
423 <int key="NSvFlags">268</int>
424 <string key="NSFrame">{{39, 53}, {71, 17}}</string>
425 <reference key="NSSuperview" ref="537034939"/>
426 <reference key="NSWindow"/>
427 <reference key="NSNextKeyView" ref="183069999"/>
428 <string key="NSReuseIdentifierKey">_NS:3936</string>
429 <bool key="NSEnabled">YES</bool>
430 <object class="NSTextFieldCell" key="NSCell" id="61967082">
431 <int key="NSCellFlags">68157504</int>
432 <int key="NSCellFlags2">272630784</int>
433 <string key="NSContents">Block size:</string>
434 <reference key="NSSupport" ref="870520972"/>
435 <string key="NSCellIdentifier">_NS:3936</string>
436 <reference key="NSControlView" ref="291839274"/>
437 <reference key="NSBackgroundColor" ref="462322918"/>
438 <reference key="NSTextColor" ref="374908237"/>
439 </object>
440 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
441 </object>
442 <object class="NSComboBox" id="183069999">
443 <reference key="NSNextResponder" ref="537034939"/>
444 <int key="NSvFlags">268</int>
445 <string key="NSFrame">{{115, 49}, {99, 26}}</string>
446 <reference key="NSSuperview" ref="537034939"/>
447 <reference key="NSWindow"/>
448 <reference key="NSNextKeyView" ref="1053800845"/>
449 <string key="NSReuseIdentifierKey">_NS:66</string>
450 <bool key="NSEnabled">YES</bool>
451 <object class="NSComboBoxCell" key="NSCell" id="418627588">
452 <int key="NSCellFlags">342884416</int>
453 <int key="NSCellFlags2">272630784</int>
454 <string key="NSContents"/>
455 <reference key="NSSupport" ref="870520972"/>
456 <string key="NSCellIdentifier">_NS:66</string>
457 <reference key="NSControlView" ref="183069999"/>
458 <bool key="NSDrawsBackground">YES</bool>
459 <reference key="NSBackgroundColor" ref="970286794"/>
460 <reference key="NSTextColor" ref="374908237"/>
461 <int key="NSVisibleItemCount">5</int>
462 <bool key="NSHasVerticalScroller">YES</bool>
463 <object class="NSMutableArray" key="NSPopUpListData">
464 <bool key="EncodedWithXMLCoder">YES</bool>
465 <string>512</string>
466 <string>1024</string>
467 <string>2048</string>
468 <string>4096</string>
469 </object>
470 <reference key="NSDelegate" ref="183069999"/>
471 <object class="NSComboTableView" key="NSTableView" id="597366878">
472 <reference key="NSNextResponder"/>
473 <int key="NSvFlags">274</int>
474 <string key="NSFrameSize">{13, 84}</string>
475 <reference key="NSSuperview"/>
476 <reference key="NSWindow"/>
477 <string key="NSReuseIdentifierKey">_NS:108</string>
478 <bool key="NSEnabled">YES</bool>
479 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
480 <bool key="NSControlAllowsExpansionToolTips">YES</bool>
481 <object class="NSMutableArray" key="NSTableColumns">
482 <bool key="EncodedWithXMLCoder">YES</bool>
483 <object class="NSTableColumn">
484 <double key="NSWidth">10</double>
485 <double key="NSMinWidth">10</double>
486 <double key="NSMaxWidth">1000</double>
487 <object class="NSTableHeaderCell" key="NSHeaderCell">
488 <int key="NSCellFlags">75497472</int>
489 <int key="NSCellFlags2">0</int>
490 <string key="NSContents"/>
491 <reference key="NSSupport" ref="110565960"/>
492 <object class="NSColor" key="NSBackgroundColor">
493 <int key="NSColorSpace">3</int>
494 <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
495 </object>
496 <reference key="NSTextColor" ref="232866438"/>
497 </object>
498 <object class="NSTextFieldCell" key="NSDataCell">
499 <int key="NSCellFlags">338690112</int>
500 <int key="NSCellFlags2">1024</int>
501 <reference key="NSSupport" ref="870520972"/>
502 <reference key="NSControlView" ref="597366878"/>
503 <bool key="NSDrawsBackground">YES</bool>
504 <reference key="NSBackgroundColor" ref="240142953"/>
505 <reference key="NSTextColor" ref="374908237"/>
506 </object>
507 <int key="NSResizingMask">3</int>
508 <bool key="NSIsResizeable">YES</bool>
509 <reference key="NSTableView" ref="597366878"/>
510 </object>
511 </object>
512 <double key="NSIntercellSpacingWidth">3</double>
513 <double key="NSIntercellSpacingHeight">2</double>
514 <reference key="NSBackgroundColor" ref="240142953"/>
515 <reference key="NSGridColor" ref="524577992"/>
516 <double key="NSRowHeight">19</double>
517 <string key="NSAction">tableViewAction:</string>
518 <int key="NSTvFlags">-765427712</int>
519 <reference key="NSDelegate" ref="418627588"/>
520 <reference key="NSDataSource" ref="418627588"/>
521 <reference key="NSTarget" ref="418627588"/>
522 <int key="NSColumnAutoresizingStyle">1</int>
523 <int key="NSDraggingSourceMaskForLocal">15</int>
524 <int key="NSDraggingSourceMaskForNonLocal">0</int>
525 <bool key="NSAllowsTypeSelect">YES</bool>
526 <int key="NSTableViewDraggingDestinationStyle">0</int>
527 <int key="NSTableViewGroupRowStyle">1</int>
528 </object>
529 </object>
530 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
531 </object>
532 <object class="NSTextField" id="138314969">
533 <reference key="NSNextResponder" ref="537034939"/>
534 <int key="NSvFlags">268</int>
535 <string key="NSFrame">{{49, 23}, {61, 17}}</string>
536 <reference key="NSSuperview" ref="537034939"/>
537 <reference key="NSWindow"/>
538 <reference key="NSNextKeyView" ref="720108113"/>
539 <string key="NSReuseIdentifierKey">_NS:3936</string>
540 <bool key="NSEnabled">YES</bool>
541 <object class="NSTextFieldCell" key="NSCell" id="849261570">
542 <int key="NSCellFlags">68157504</int>
543 <int key="NSCellFlags2">272630784</int>
544 <string key="NSContents">Timeout:</string>
545 <reference key="NSSupport" ref="870520972"/>
546 <string key="NSCellIdentifier">_NS:3936</string>
547 <reference key="NSControlView" ref="138314969"/>
548 <reference key="NSBackgroundColor" ref="462322918"/>
549 <reference key="NSTextColor" ref="374908237"/>
550 </object>
551 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
552 </object>
553 <object class="NSTextField" id="720108113">
554 <reference key="NSNextResponder" ref="537034939"/>
555 <int key="NSvFlags">268</int>
556 <string key="NSFrame">{{115, 20}, {96, 22}}</string>
557 <reference key="NSSuperview" ref="537034939"/>
558 <reference key="NSWindow"/>
559 <string key="NSReuseIdentifierKey">_NS:248</string>
560 <bool key="NSEnabled">YES</bool>
561 <object class="NSTextFieldCell" key="NSCell" id="966502450">
562 <int key="NSCellFlags">-1804599231</int>
563 <int key="NSCellFlags2">272630784</int>
564 <string key="NSContents"/>
565 <reference key="NSSupport" ref="870520972"/>
566 <string key="NSCellIdentifier">_NS:248</string>
567 <reference key="NSControlView" ref="720108113"/>
568 <bool key="NSDrawsBackground">YES</bool>
569 <reference key="NSBackgroundColor" ref="970286794"/>
570 <reference key="NSTextColor" ref="95498365"/>
571 </object>
572 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
573 </object>
574 <object class="NSButton" id="1053800845">
575 <reference key="NSNextResponder" ref="537034939"/>
576 <int key="NSvFlags">268</int>
577 <string key="NSFrame">{{238, 45}, {178, 32}}</string>
578 <reference key="NSSuperview" ref="537034939"/>
579 <reference key="NSWindow"/>
580 <reference key="NSNextKeyView" ref="1061611931"/>
581 <string key="NSReuseIdentifierKey">_NS:161</string>
582 <bool key="NSEnabled">YES</bool>
583 <object class="NSButtonCell" key="NSCell" id="673387987">
584 <int key="NSCellFlags">67108864</int>
585 <int key="NSCellFlags2">134217728</int>
586 <string key="NSContents">I've changed my mind</string>
587 <reference key="NSSupport" ref="870520972"/>
588 <string key="NSCellIdentifier">_NS:161</string>
589 <reference key="NSControlView" ref="1053800845"/>
590 <int key="NSButtonFlags">-2038284288</int>
591 <int key="NSButtonFlags2">129</int>
592 <string key="NSAlternateContents"/>
593 <string key="NSKeyEquivalent"/>
594 <int key="NSPeriodicDelay">200</int>
595 <int key="NSPeriodicInterval">25</int>
596 </object>
597 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
598 </object>
599 <object class="NSButton" id="1061611931">
600 <reference key="NSNextResponder" ref="537034939"/>
601 <int key="NSvFlags">268</int>
602 <string key="NSFrame">{{416, 45}, {123, 32}}</string>
603 <reference key="NSSuperview" ref="537034939"/>
604 <reference key="NSWindow"/>
605 <reference key="NSNextKeyView" ref="138314969"/>
606 <string key="NSReuseIdentifierKey">_NS:161</string>
607 <bool key="NSEnabled">YES</bool>
608 <object class="NSButtonCell" key="NSCell" id="608238510">
609 <int key="NSCellFlags">67108864</int>
610 <int key="NSCellFlags2">134217728</int>
611 <string key="NSContents">Start transfer</string>
612 <reference key="NSSupport" ref="870520972"/>
613 <string key="NSCellIdentifier">_NS:161</string>
614 <reference key="NSControlView" ref="1061611931"/>
615 <int key="NSButtonFlags">-2038284288</int>
616 <int key="NSButtonFlags2">129</int>
617 <reference key="NSAlternateImage" ref="870520972"/>
618 <string key="NSAlternateContents"/>
619 <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
620 <int key="NSPeriodicDelay">200</int>
621 <int key="NSPeriodicInterval">25</int>
622 </object>
623 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
624 </object>
625 <object class="NSProgressIndicator" id="53446878">
626 <reference key="NSNextResponder" ref="537034939"/>
627 <int key="NSvFlags">1292</int>
628 <string key="NSFrame">{{244, 83}, {16, 16}}</string>
629 <reference key="NSSuperview" ref="537034939"/>
630 <reference key="NSWindow"/>
631 <reference key="NSNextKeyView" ref="727455678"/>
632 <string key="NSReuseIdentifierKey">_NS:3954</string>
633 <int key="NSpiFlags">28938</int>
634 <double key="NSMaxValue">100</double>
635 </object>
636 <object class="NSTextField" id="727455678">
637 <reference key="NSNextResponder" ref="537034939"/>
638 <int key="NSvFlags">268</int>
639 <string key="NSFrame">{{263, 83}, {273, 17}}</string>
640 <reference key="NSSuperview" ref="537034939"/>
641 <reference key="NSWindow"/>
642 <reference key="NSNextKeyView" ref="291839274"/>
643 <string key="NSReuseIdentifierKey">_NS:3936</string>
644 <bool key="NSEnabled">YES</bool>
645 <object class="NSTextFieldCell" key="NSCell" id="873681103">
646 <int key="NSCellFlags">68157504</int>
647 <int key="NSCellFlags2">272630784</int>
648 <string key="NSContents">status…</string>
649 <reference key="NSSupport" ref="870520972"/>
650 <string key="NSCellIdentifier">_NS:3936</string>
651 <reference key="NSControlView" ref="727455678"/>
652 <reference key="NSBackgroundColor" ref="462322918"/>
653 <reference key="NSTextColor" ref="374908237"/>
654 </object>
655 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
656 </object>
657 <object class="NSTextField" id="213673854">
658 <reference key="NSNextResponder" ref="537034939"/>
659 <int key="NSvFlags">268</int>
660 <string key="NSFrame">{{241, 83}, {295, 17}}</string>
661 <reference key="NSSuperview" ref="537034939"/>
662 <reference key="NSWindow"/>
663 <reference key="NSNextKeyView" ref="53446878"/>
664 <string key="NSReuseIdentifierKey">_NS:3936</string>
665 <bool key="NSEnabled">YES</bool>
666 <object class="NSTextFieldCell" key="NSCell" id="468926987">
667 <int key="NSCellFlags">68157504</int>
668 <int key="NSCellFlags2">272630784</int>
669 <string key="NSContents"/>
670 <reference key="NSSupport" ref="870520972"/>
671 <string key="NSCellIdentifier">_NS:3936</string>
672 <reference key="NSControlView" ref="213673854"/>
673 <reference key="NSBackgroundColor" ref="462322918"/>
674 <object class="NSColor" key="NSTextColor">
675 <int key="NSColorSpace">1</int>
676 <bytes key="NSRGB">MSAwIDAAA</bytes>
677 </object>
678 </object>
679 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
680 </object>
681 </object>
682 <string key="NSFrameSize">{553, 185}</string>
683 <reference key="NSSuperview"/>
684 <reference key="NSWindow"/>
685 <reference key="NSNextKeyView" ref="983573643"/>
686 <string key="NSReuseIdentifierKey">_NS:2818</string>
687 </object>
688 <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
689 <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
690 <bool key="NSWindowIsRestorable">YES</bool>
691 </object>
692 <object class="NSUserDefaultsController" id="431450128">
693 <bool key="NSSharedInstance">YES</bool>
694 </object>
695 </object>
696 <object class="IBObjectContainer" key="IBDocument.Objects">
697 <object class="NSMutableArray" key="connectionRecords">
698 <bool key="EncodedWithXMLCoder">YES</bool>
699 <object class="IBConnectionRecord">
700 <object class="IBOutletConnection" key="connection">
701 <string key="label">window</string>
702 <reference key="source" ref="1001"/>
703 <reference key="destination" ref="265268434"/>
704 </object>
705 <int key="connectionID">29</int>
706 </object>
707 <object class="IBConnectionRecord">
708 <object class="IBOutletConnection" key="connection">
709 <string key="label">blockSizeBox</string>
710 <reference key="source" ref="1001"/>
711 <reference key="destination" ref="183069999"/>
712 </object>
713 <int key="connectionID">60</int>
714 </object>
715 <object class="IBConnectionRecord">
716 <object class="IBOutletConnection" key="connection">
717 <string key="label">remoteHostBox</string>
718 <reference key="source" ref="1001"/>
719 <reference key="destination" ref="712275833"/>
720 </object>
721 <int key="connectionID">129</int>
722 </object>
723 <object class="IBConnectionRecord">
724 <object class="IBActionConnection" key="connection">
725 <string key="label">startXfer:</string>
726 <reference key="source" ref="1001"/>
727 <reference key="destination" ref="1061611931"/>
728 </object>
729 <int key="connectionID">130</int>
730 </object>
731 <object class="IBConnectionRecord">
732 <object class="IBActionConnection" key="connection">
733 <string key="label">pickFile:</string>
734 <reference key="source" ref="1001"/>
735 <reference key="destination" ref="176529531"/>
736 </object>
737 <int key="connectionID">131</int>
738 </object>
739 <object class="IBConnectionRecord">
740 <object class="IBActionConnection" key="connection">
741 <string key="label">performClose:</string>
742 <reference key="source" ref="265268434"/>
743 <reference key="destination" ref="1053800845"/>
744 </object>
745 <int key="connectionID">35</int>
746 </object>
747 <object class="IBConnectionRecord">
748 <object class="IBOutletConnection" key="connection">
749 <string key="label">initialFirstResponder</string>
750 <reference key="source" ref="265268434"/>
751 <reference key="destination" ref="392834772"/>
752 </object>
753 <int key="connectionID">62</int>
754 </object>
755 <object class="IBConnectionRecord">
756 <object class="IBOutletConnection" key="connection">
757 <string key="label">delegate</string>
758 <reference key="source" ref="265268434"/>
759 <reference key="destination" ref="1001"/>
760 </object>
761 <int key="connectionID">128</int>
762 </object>
763 <object class="IBConnectionRecord">
764 <object class="IBBindingConnection" key="connection">
765 <string key="label">enabled: self.doTouchMe</string>
766 <reference key="source" ref="1053800845"/>
767 <reference key="destination" ref="1001"/>
768 <object class="NSNibBindingConnector" key="connector">
769 <reference key="NSSource" ref="1053800845"/>
770 <reference key="NSDestination" ref="1001"/>
771 <string key="NSLabel">enabled: self.doTouchMe</string>
772 <string key="NSBinding">enabled</string>
773 <string key="NSKeyPath">self.doTouchMe</string>
774 <int key="NSNibBindingConnectorVersion">2</int>
775 </object>
776 </object>
777 <int key="connectionID">80</int>
778 </object>
779 <object class="IBConnectionRecord">
780 <object class="IBBindingConnection" key="connection">
781 <string key="label">enabled: self.doTouchMe</string>
782 <reference key="source" ref="1061611931"/>
783 <reference key="destination" ref="1001"/>
784 <object class="NSNibBindingConnector" key="connector">
785 <reference key="NSSource" ref="1061611931"/>
786 <reference key="NSDestination" ref="1001"/>
787 <string key="NSLabel">enabled: self.doTouchMe</string>
788 <string key="NSBinding">enabled</string>
789 <string key="NSKeyPath">self.doTouchMe</string>
790 <int key="NSNibBindingConnectorVersion">2</int>
791 </object>
792 </object>
793 <int key="connectionID">82</int>
794 </object>
795 <object class="IBConnectionRecord">
796 <object class="IBBindingConnection" key="connection">
797 <string key="label">value: self.blockSize</string>
798 <reference key="source" ref="183069999"/>
799 <reference key="destination" ref="1001"/>
800 <object class="NSNibBindingConnector" key="connector">
801 <reference key="NSSource" ref="183069999"/>
802 <reference key="NSDestination" ref="1001"/>
803 <string key="NSLabel">value: self.blockSize</string>
804 <string key="NSBinding">value</string>
805 <string key="NSKeyPath">self.blockSize</string>
806 <object class="NSDictionary" key="NSOptions">
807 <bool key="EncodedWithXMLCoder">YES</bool>
808 <object class="NSArray" key="dict.sortedKeys">
809 <bool key="EncodedWithXMLCoder">YES</bool>
810 <string>NSContinuouslyUpdatesValue</string>
811 <string>NSValueTransformerName</string>
812 </object>
813 <object class="NSArray" key="dict.values">
814 <bool key="EncodedWithXMLCoder">YES</bool>
815 <boolean value="YES"/>
816 <string>NumberTransformer</string>
817 </object>
818 </object>
819 <int key="NSNibBindingConnectorVersion">2</int>
820 </object>
821 </object>
822 <int key="connectionID">56</int>
823 </object>
824 <object class="IBConnectionRecord">
825 <object class="IBBindingConnection" key="connection">
826 <string key="label">enabled: self.doTouchMe</string>
827 <reference key="source" ref="183069999"/>
828 <reference key="destination" ref="1001"/>
829 <object class="NSNibBindingConnector" key="connector">
830 <reference key="NSSource" ref="183069999"/>
831 <reference key="NSDestination" ref="1001"/>
832 <string key="NSLabel">enabled: self.doTouchMe</string>
833 <string key="NSBinding">enabled</string>
834 <string key="NSKeyPath">self.doTouchMe</string>
835 <int key="NSNibBindingConnectorVersion">2</int>
836 </object>
837 </object>
838 <int key="connectionID">77</int>
839 </object>
840 <object class="IBConnectionRecord">
841 <object class="IBBindingConnection" key="connection">
842 <string key="label">value: self.xferType</string>
843 <reference key="source" ref="1029217440"/>
844 <reference key="destination" ref="1001"/>
845 <object class="NSNibBindingConnector" key="connector">
846 <reference key="NSSource" ref="1029217440"/>
847 <reference key="NSDestination" ref="1001"/>
848 <string key="NSLabel">value: self.xferType</string>
849 <string key="NSBinding">value</string>
850 <string key="NSKeyPath">self.xferType</string>
851 <object class="NSDictionary" key="NSOptions">
852 <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
853 <boolean value="YES" key="NS.object.0"/>
854 </object>
855 <int key="NSNibBindingConnectorVersion">2</int>
856 </object>
857 </object>
858 <int key="connectionID">52</int>
859 </object>
860 <object class="IBConnectionRecord">
861 <object class="IBBindingConnection" key="connection">
862 <string key="label">enabled: self.doTouchMe</string>
863 <reference key="source" ref="1029217440"/>
864 <reference key="destination" ref="1001"/>
865 <object class="NSNibBindingConnector" key="connector">
866 <reference key="NSSource" ref="1029217440"/>
867 <reference key="NSDestination" ref="1001"/>
868 <string key="NSLabel">enabled: self.doTouchMe</string>
869 <string key="NSBinding">enabled</string>
870 <string key="NSKeyPath">self.doTouchMe</string>
871 <int key="NSNibBindingConnectorVersion">2</int>
872 </object>
873 </object>
874 <int key="connectionID">75</int>
875 </object>
876 <object class="IBConnectionRecord">
877 <object class="IBBindingConnection" key="connection">
878 <string key="label">value: self.remoteFile</string>
879 <reference key="source" ref="685519878"/>
880 <reference key="destination" ref="1001"/>
881 <object class="NSNibBindingConnector" key="connector">
882 <reference key="NSSource" ref="685519878"/>
883 <reference key="NSDestination" ref="1001"/>
884 <string key="NSLabel">value: self.remoteFile</string>
885 <string key="NSBinding">value</string>
886 <string key="NSKeyPath">self.remoteFile</string>
887 <object class="NSDictionary" key="NSOptions">
888 <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
889 <boolean value="YES" key="NS.object.0"/>
890 </object>
891 <int key="NSNibBindingConnectorVersion">2</int>
892 </object>
893 </object>
894 <int key="connectionID">49</int>
895 </object>
896 <object class="IBConnectionRecord">
897 <object class="IBBindingConnection" key="connection">
898 <string key="label">value: self.localFile</string>
899 <reference key="source" ref="392834772"/>
900 <reference key="destination" ref="1001"/>
901 <object class="NSNibBindingConnector" key="connector">
902 <reference key="NSSource" ref="392834772"/>
903 <reference key="NSDestination" ref="1001"/>
904 <string key="NSLabel">value: self.localFile</string>
905 <string key="NSBinding">value</string>
906 <string key="NSKeyPath">self.localFile</string>
907 <object class="NSDictionary" key="NSOptions">
908 <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
909 <boolean value="YES" key="NS.object.0"/>
910 </object>
911 <int key="NSNibBindingConnectorVersion">2</int>
912 </object>
913 </object>
914 <int key="connectionID">43</int>
915 </object>
916 <object class="IBConnectionRecord">
917 <object class="IBBindingConnection" key="connection">
918 <string key="label">enabled: self.doTouchMe</string>
919 <reference key="source" ref="392834772"/>
920 <reference key="destination" ref="1001"/>
921 <object class="NSNibBindingConnector" key="connector">
922 <reference key="NSSource" ref="392834772"/>
923 <reference key="NSDestination" ref="1001"/>
924 <string key="NSLabel">enabled: self.doTouchMe</string>
925 <string key="NSBinding">enabled</string>
926 <string key="NSKeyPath">self.doTouchMe</string>
927 <int key="NSNibBindingConnectorVersion">2</int>
928 </object>
929 </object>
930 <int key="connectionID">70</int>
931 </object>
932 <object class="IBConnectionRecord">
933 <object class="IBBindingConnection" key="connection">
934 <string key="label">enabled: self.doTouchMe</string>
935 <reference key="source" ref="176529531"/>
936 <reference key="destination" ref="1001"/>
937 <object class="NSNibBindingConnector" key="connector">
938 <reference key="NSSource" ref="176529531"/>
939 <reference key="NSDestination" ref="1001"/>
940 <string key="NSLabel">enabled: self.doTouchMe</string>
941 <string key="NSBinding">enabled</string>
942 <string key="NSKeyPath">self.doTouchMe</string>
943 <int key="NSNibBindingConnectorVersion">2</int>
944 </object>
945 </object>
946 <int key="connectionID">73</int>
947 </object>
948 <object class="IBConnectionRecord">
949 <object class="IBBindingConnection" key="connection">
950 <string key="label">value: self.remoteHost</string>
951 <reference key="source" ref="23478474"/>
952 <reference key="destination" ref="1001"/>
953 <object class="NSNibBindingConnector" key="connector">
954 <reference key="NSSource" ref="23478474"/>
955 <reference key="NSDestination" ref="1001"/>
956 <string key="NSLabel">value: self.remoteHost</string>
957 <string key="NSBinding">value</string>
958 <string key="NSKeyPath">self.remoteHost</string>
959 <object class="NSDictionary" key="NSOptions">
960 <string key="NS.key.0">NSContinuouslyUpdatesValue</string>
961 <boolean value="YES" key="NS.object.0"/>
962 </object>
963 <int key="NSNibBindingConnectorVersion">2</int>
964 </object>
965 </object>
966 <int key="connectionID">46</int>
967 </object>
968 <object class="IBConnectionRecord">
969 <object class="IBBindingConnection" key="connection">
970 <string key="label">enabled: self.doTouchMe</string>
971 <reference key="source" ref="23478474"/>
972 <reference key="destination" ref="1001"/>
973 <object class="NSNibBindingConnector" key="connector">
974 <reference key="NSSource" ref="23478474"/>
975 <reference key="NSDestination" ref="1001"/>
976 <string key="NSLabel">enabled: self.doTouchMe</string>
977 <string key="NSBinding">enabled</string>
978 <string key="NSKeyPath">self.doTouchMe</string>
979 <int key="NSNibBindingConnectorVersion">2</int>
980 </object>
981 </object>
982 <int key="connectionID">85</int>
983 </object>
984 <object class="IBConnectionRecord">
985 <object class="IBBindingConnection" key="connection">
986 <string key="label">enabled: self.doTouchMe</string>
987 <reference key="source" ref="471811034"/>
988 <reference key="destination" ref="1001"/>
989 <object class="NSNibBindingConnector" key="connector">
990 <reference key="NSSource" ref="471811034"/>
991 <reference key="NSDestination" ref="1001"/>
992 <string key="NSLabel">enabled: self.doTouchMe</string>
993 <string key="NSBinding">enabled</string>
994 <string key="NSKeyPath">self.doTouchMe</string>
995 <int key="NSNibBindingConnectorVersion">2</int>
996 </object>
997 </object>
998 <int key="connectionID">87</int>
999 </object>
1000 <object class="IBConnectionRecord">
1001 <object class="IBBindingConnection" key="connection">
1002 <string key="label">value: self.remotePort</string>
1003 <reference key="source" ref="471811034"/>
1004 <reference key="destination" ref="1001"/>
1005 <object class="NSNibBindingConnector" key="connector">
1006 <reference key="NSSource" ref="471811034"/>
1007 <reference key="NSDestination" ref="1001"/>
1008 <string key="NSLabel">value: self.remotePort</string>
1009 <string key="NSBinding">value</string>
1010 <string key="NSKeyPath">self.remotePort</string>
1011 <object class="NSDictionary" key="NSOptions">
1012 <string key="NS.key.0">NSValueTransformerName</string>
1013 <string key="NS.object.0">NumberTransformer</string>
1014 </object>
1015 <int key="NSNibBindingConnectorVersion">2</int>
1016 </object>
1017 </object>
1018 <int key="connectionID">111</int>
1019 </object>
1020 <object class="IBConnectionRecord">
1021 <object class="IBBindingConnection" key="connection">
1022 <string key="label">animate: self.doTouchMe</string>
1023 <reference key="source" ref="53446878"/>
1024 <reference key="destination" ref="1001"/>
1025 <object class="NSNibBindingConnector" key="connector">
1026 <reference key="NSSource" ref="53446878"/>
1027 <reference key="NSDestination" ref="1001"/>
1028 <string key="NSLabel">animate: self.doTouchMe</string>
1029 <string key="NSBinding">animate</string>
1030 <string key="NSKeyPath">self.doTouchMe</string>
1031 <object class="NSDictionary" key="NSOptions">
1032 <string key="NS.key.0">NSValueTransformerName</string>
1033 <string key="NS.object.0">NSNegateBoolean</string>
1034 </object>
1035 <int key="NSNibBindingConnectorVersion">2</int>
1036 </object>
1037 </object>
1038 <int key="connectionID">94</int>
1039 </object>
1040 <object class="IBConnectionRecord">
1041 <object class="IBBindingConnection" key="connection">
1042 <string key="label">hidden: self.doTouchMe</string>
1043 <reference key="source" ref="53446878"/>
1044 <reference key="destination" ref="1001"/>
1045 <object class="NSNibBindingConnector" key="connector">
1046 <reference key="NSSource" ref="53446878"/>
1047 <reference key="NSDestination" ref="1001"/>
1048 <string key="NSLabel">hidden: self.doTouchMe</string>
1049 <string key="NSBinding">hidden</string>
1050 <string key="NSKeyPath">self.doTouchMe</string>
1051 <int key="NSNibBindingConnectorVersion">2</int>
1052 </object>
1053 </object>
1054 <int key="connectionID">95</int>
1055 </object>
1056 <object class="IBConnectionRecord">
1057 <object class="IBBindingConnection" key="connection">
1058 <string key="label">value: self.statusLabel</string>
1059 <reference key="source" ref="727455678"/>
1060 <reference key="destination" ref="1001"/>
1061 <object class="NSNibBindingConnector" key="connector">
1062 <reference key="NSSource" ref="727455678"/>
1063 <reference key="NSDestination" ref="1001"/>
1064 <string key="NSLabel">value: self.statusLabel</string>
1065 <string key="NSBinding">value</string>
1066 <string key="NSKeyPath">self.statusLabel</string>
1067 <int key="NSNibBindingConnectorVersion">2</int>
1068 </object>
1069 </object>
1070 <int key="connectionID">104</int>
1071 </object>
1072 <object class="IBConnectionRecord">
1073 <object class="IBBindingConnection" key="connection">
1074 <string key="label">enabled: self.doTouchMe</string>
1075 <reference key="source" ref="727455678"/>
1076 <reference key="destination" ref="1001"/>
1077 <object class="NSNibBindingConnector" key="connector">
1078 <reference key="NSSource" ref="727455678"/>
1079 <reference key="NSDestination" ref="1001"/>
1080 <string key="NSLabel">enabled: self.doTouchMe</string>
1081 <string key="NSBinding">enabled</string>
1082 <string key="NSKeyPath">self.doTouchMe</string>
1083 <int key="NSNibBindingConnectorVersion">2</int>
1084 </object>
1085 </object>
1086 <int key="connectionID">138</int>
1087 </object>
1088 <object class="IBConnectionRecord">
1089 <object class="IBBindingConnection" key="connection">
1090 <string key="label">hidden: self.doTouchMe</string>
1091 <reference key="source" ref="727455678"/>
1092 <reference key="destination" ref="1001"/>
1093 <object class="NSNibBindingConnector" key="connector">
1094 <reference key="NSSource" ref="727455678"/>
1095 <reference key="NSDestination" ref="1001"/>
1096 <string key="NSLabel">hidden: self.doTouchMe</string>
1097 <string key="NSBinding">hidden</string>
1098 <string key="NSKeyPath">self.doTouchMe</string>
1099 <int key="NSNibBindingConnectorVersion">2</int>
1100 </object>
1101 </object>
1102 <int key="connectionID">140</int>
1103 </object>
1104 <object class="IBConnectionRecord">
1105 <object class="IBBindingConnection" key="connection">
1106 <string key="label">value: self.errorLabel</string>
1107 <reference key="source" ref="213673854"/>
1108 <reference key="destination" ref="1001"/>
1109 <object class="NSNibBindingConnector" key="connector">
1110 <reference key="NSSource" ref="213673854"/>
1111 <reference key="NSDestination" ref="1001"/>
1112 <string key="NSLabel">value: self.errorLabel</string>
1113 <string key="NSBinding">value</string>
1114 <string key="NSKeyPath">self.errorLabel</string>
1115 <int key="NSNibBindingConnectorVersion">2</int>
1116 </object>
1117 </object>
1118 <int key="connectionID">115</int>
1119 </object>
1120 <object class="IBConnectionRecord">
1121 <object class="IBBindingConnection" key="connection">
1122 <string key="label">hidden: self.doTouchMe</string>
1123 <reference key="source" ref="213673854"/>
1124 <reference key="destination" ref="1001"/>
1125 <object class="NSNibBindingConnector" key="connector">
1126 <reference key="NSSource" ref="213673854"/>
1127 <reference key="NSDestination" ref="1001"/>
1128 <string key="NSLabel">hidden: self.doTouchMe</string>
1129 <string key="NSBinding">hidden</string>
1130 <string key="NSKeyPath">self.doTouchMe</string>
1131 <object class="NSDictionary" key="NSOptions">
1132 <string key="NS.key.0">NSValueTransformerName</string>
1133 <string key="NS.object.0">NSNegateBoolean</string>
1134 </object>
1135 <int key="NSNibBindingConnectorVersion">2</int>
1136 </object>
1137 </object>
1138 <int key="connectionID">118</int>
1139 </object>
1140 <object class="IBConnectionRecord">
1141 <object class="IBBindingConnection" key="connection">
1142 <string key="label">value: self.timeout</string>
1143 <reference key="source" ref="720108113"/>
1144 <reference key="destination" ref="1001"/>
1145 <object class="NSNibBindingConnector" key="connector">
1146 <reference key="NSSource" ref="720108113"/>
1147 <reference key="NSDestination" ref="1001"/>
1148 <string key="NSLabel">value: self.timeout</string>
1149 <string key="NSBinding">value</string>
1150 <string key="NSKeyPath">self.timeout</string>
1151 <object class="NSDictionary" key="NSOptions">
1152 <string key="NS.key.0">NSValueTransformerName</string>
1153 <string key="NS.object.0">NumberTransformer</string>
1154 </object>
1155 <int key="NSNibBindingConnectorVersion">2</int>
1156 </object>
1157 </object>
1158 <int key="connectionID">127</int>
1159 </object>
1160 </object>
1161 <object class="IBMutableOrderedSet" key="objectRecords">
1162 <object class="NSArray" key="orderedObjects">
1163 <bool key="EncodedWithXMLCoder">YES</bool>
1164 <object class="IBObjectRecord">
1165 <int key="objectID">0</int>
1166 <object class="NSArray" key="object" id="0">
1167 <bool key="EncodedWithXMLCoder">YES</bool>
1168 </object>
1169 <reference key="children" ref="1000"/>
1170 <nil key="parent"/>
1171 </object>
1172 <object class="IBObjectRecord">
1173 <int key="objectID">-2</int>
1174 <reference key="object" ref="1001"/>
1175 <reference key="parent" ref="0"/>
1176 <string key="objectName">File's Owner</string>
1177 </object>
1178 <object class="IBObjectRecord">
1179 <int key="objectID">-1</int>
1180 <reference key="object" ref="1003"/>
1181 <reference key="parent" ref="0"/>
1182 <string key="objectName">First Responder</string>
1183 </object>
1184 <object class="IBObjectRecord">
1185 <int key="objectID">-3</int>
1186 <reference key="object" ref="1004"/>
1187 <reference key="parent" ref="0"/>
1188 <string key="objectName">Application</string>
1189 </object>
1190 <object class="IBObjectRecord">
1191 <int key="objectID">3</int>
1192 <reference key="object" ref="265268434"/>
1193 <object class="NSMutableArray" key="children">
1194 <bool key="EncodedWithXMLCoder">YES</bool>
1195 <reference ref="537034939"/>
1196 </object>
1197 <reference key="parent" ref="0"/>
1198 <string key="objectName">Window - Request dialog</string>
1199 </object>
1200 <object class="IBObjectRecord">
1201 <int key="objectID">4</int>
1202 <reference key="object" ref="537034939"/>
1203 <object class="NSMutableArray" key="children">
1204 <bool key="EncodedWithXMLCoder">YES</bool>
1205 <reference ref="1053800845"/>
1206 <reference ref="183069999"/>
1207 <reference ref="1029217440"/>
1208 <reference ref="1027449834"/>
1209 <reference ref="291839274"/>
1210 <reference ref="685519878"/>
1211 <reference ref="712275833"/>
1212 <reference ref="983573643"/>
1213 <reference ref="1061611931"/>
1214 <reference ref="53446878"/>
1215 <reference ref="727455678"/>
1216 <reference ref="213673854"/>
1217 <reference ref="392834772"/>
1218 <reference ref="23478474"/>
1219 <reference ref="525390780"/>
1220 <reference ref="471811034"/>
1221 <reference ref="656785083"/>
1222 <reference ref="138314969"/>
1223 <reference ref="720108113"/>
1224 <reference ref="176529531"/>
1225 </object>
1226 <reference key="parent" ref="265268434"/>
1227 </object>
1228 <object class="IBObjectRecord">
1229 <int key="objectID">5</int>
1230 <reference key="object" ref="1053800845"/>
1231 <object class="NSMutableArray" key="children">
1232 <bool key="EncodedWithXMLCoder">YES</bool>
1233 <reference ref="673387987"/>
1234 </object>
1235 <reference key="parent" ref="537034939"/>
1236 <string key="objectName">Push Button - no</string>
1237 </object>
1238 <object class="IBObjectRecord">
1239 <int key="objectID">6</int>
1240 <reference key="object" ref="1061611931"/>
1241 <object class="NSMutableArray" key="children">
1242 <bool key="EncodedWithXMLCoder">YES</bool>
1243 <reference ref="608238510"/>
1244 </object>
1245 <reference key="parent" ref="537034939"/>
1246 <string key="objectName">Push Button - go</string>
1247 </object>
1248 <object class="IBObjectRecord">
1249 <int key="objectID">7</int>
1250 <reference key="object" ref="183069999"/>
1251 <object class="NSMutableArray" key="children">
1252 <bool key="EncodedWithXMLCoder">YES</bool>
1253 <reference ref="418627588"/>
1254 </object>
1255 <reference key="parent" ref="537034939"/>
1256 <string key="objectName">Combo Box - block size</string>
1257 </object>
1258 <object class="IBObjectRecord">
1259 <int key="objectID">8</int>
1260 <reference key="object" ref="1029217440"/>
1261 <object class="NSMutableArray" key="children">
1262 <bool key="EncodedWithXMLCoder">YES</bool>
1263 <reference ref="567568844"/>
1264 </object>
1265 <reference key="parent" ref="537034939"/>
1266 <string key="objectName">Combo Box - xfer type</string>
1267 </object>
1268 <object class="IBObjectRecord">
1269 <int key="objectID">9</int>
1270 <reference key="object" ref="1027449834"/>
1271 <object class="NSMutableArray" key="children">
1272 <bool key="EncodedWithXMLCoder">YES</bool>
1273 <reference ref="977543267"/>
1274 </object>
1275 <reference key="parent" ref="537034939"/>
1276 </object>
1277 <object class="IBObjectRecord">
1278 <int key="objectID">10</int>
1279 <reference key="object" ref="291839274"/>
1280 <object class="NSMutableArray" key="children">
1281 <bool key="EncodedWithXMLCoder">YES</bool>
1282 <reference ref="61967082"/>
1283 </object>
1284 <reference key="parent" ref="537034939"/>
1285 </object>
1286 <object class="IBObjectRecord">
1287 <int key="objectID">11</int>
1288 <reference key="object" ref="685519878"/>
1289 <object class="NSMutableArray" key="children">
1290 <bool key="EncodedWithXMLCoder">YES</bool>
1291 <reference ref="983145747"/>
1292 </object>
1293 <reference key="parent" ref="537034939"/>
1294 <string key="objectName">Text Field - remote file</string>
1295 </object>
1296 <object class="IBObjectRecord">
1297 <int key="objectID">12</int>
1298 <reference key="object" ref="712275833"/>
1299 <object class="NSMutableArray" key="children">
1300 <bool key="EncodedWithXMLCoder">YES</bool>
1301 <reference ref="931249278"/>
1302 </object>
1303 <reference key="parent" ref="537034939"/>
1304 </object>
1305 <object class="IBObjectRecord">
1306 <int key="objectID">13</int>
1307 <reference key="object" ref="392834772"/>
1308 <object class="NSMutableArray" key="children">
1309 <bool key="EncodedWithXMLCoder">YES</bool>
1310 <reference ref="47222242"/>
1311 </object>
1312 <reference key="parent" ref="537034939"/>
1313 <string key="objectName">Text Field - local file</string>
1314 </object>
1315 <object class="IBObjectRecord">
1316 <int key="objectID">14</int>
1317 <reference key="object" ref="983573643"/>
1318 <object class="NSMutableArray" key="children">
1319 <bool key="EncodedWithXMLCoder">YES</bool>
1320 <reference ref="85931455"/>
1321 </object>
1322 <reference key="parent" ref="537034939"/>
1323 </object>
1324 <object class="IBObjectRecord">
1325 <int key="objectID">15</int>
1326 <reference key="object" ref="176529531"/>
1327 <object class="NSMutableArray" key="children">
1328 <bool key="EncodedWithXMLCoder">YES</bool>
1329 <reference ref="827794247"/>
1330 </object>
1331 <reference key="parent" ref="537034939"/>
1332 </object>
1333 <object class="IBObjectRecord">
1334 <int key="objectID">16</int>
1335 <reference key="object" ref="827794247"/>
1336 <reference key="parent" ref="176529531"/>
1337 </object>
1338 <object class="IBObjectRecord">
1339 <int key="objectID">17</int>
1340 <reference key="object" ref="85931455"/>
1341 <reference key="parent" ref="983573643"/>
1342 </object>
1343 <object class="IBObjectRecord">
1344 <int key="objectID">18</int>
1345 <reference key="object" ref="47222242"/>
1346 <reference key="parent" ref="392834772"/>
1347 </object>
1348 <object class="IBObjectRecord">
1349 <int key="objectID">19</int>
1350 <reference key="object" ref="931249278"/>
1351 <reference key="parent" ref="712275833"/>
1352 </object>
1353 <object class="IBObjectRecord">
1354 <int key="objectID">20</int>
1355 <reference key="object" ref="983145747"/>
1356 <reference key="parent" ref="685519878"/>
1357 </object>
1358 <object class="IBObjectRecord">
1359 <int key="objectID">21</int>
1360 <reference key="object" ref="61967082"/>
1361 <reference key="parent" ref="291839274"/>
1362 </object>
1363 <object class="IBObjectRecord">
1364 <int key="objectID">22</int>
1365 <reference key="object" ref="977543267"/>
1366 <reference key="parent" ref="1027449834"/>
1367 </object>
1368 <object class="IBObjectRecord">
1369 <int key="objectID">23</int>
1370 <reference key="object" ref="567568844"/>
1371 <reference key="parent" ref="1029217440"/>
1372 </object>
1373 <object class="IBObjectRecord">
1374 <int key="objectID">24</int>
1375 <reference key="object" ref="418627588"/>
1376 <reference key="parent" ref="183069999"/>
1377 </object>
1378 <object class="IBObjectRecord">
1379 <int key="objectID">25</int>
1380 <reference key="object" ref="608238510"/>
1381 <reference key="parent" ref="1061611931"/>
1382 </object>
1383 <object class="IBObjectRecord">
1384 <int key="objectID">26</int>
1385 <reference key="object" ref="673387987"/>
1386 <reference key="parent" ref="1053800845"/>
1387 </object>
1388 <object class="IBObjectRecord">
1389 <int key="objectID">30</int>
1390 <reference key="object" ref="23478474"/>
1391 <object class="NSMutableArray" key="children">
1392 <bool key="EncodedWithXMLCoder">YES</bool>
1393 <reference ref="241562469"/>
1394 </object>
1395 <reference key="parent" ref="537034939"/>
1396 <string key="objectName">Text Field - remote host</string>
1397 </object>
1398 <object class="IBObjectRecord">
1399 <int key="objectID">31</int>
1400 <reference key="object" ref="241562469"/>
1401 <reference key="parent" ref="23478474"/>
1402 </object>
1403 <object class="IBObjectRecord">
1404 <int key="objectID">32</int>
1405 <reference key="object" ref="656785083"/>
1406 <object class="NSMutableArray" key="children">
1407 <bool key="EncodedWithXMLCoder">YES</bool>
1408 <reference ref="114681340"/>
1409 </object>
1410 <reference key="parent" ref="537034939"/>
1411 </object>
1412 <object class="IBObjectRecord">
1413 <int key="objectID">33</int>
1414 <reference key="object" ref="114681340"/>
1415 <reference key="parent" ref="656785083"/>
1416 </object>
1417 <object class="IBObjectRecord">
1418 <int key="objectID">37</int>
1419 <reference key="object" ref="431450128"/>
1420 <reference key="parent" ref="0"/>
1421 </object>
1422 <object class="IBObjectRecord">
1423 <int key="objectID">63</int>
1424 <reference key="object" ref="525390780"/>
1425 <object class="NSMutableArray" key="children">
1426 <bool key="EncodedWithXMLCoder">YES</bool>
1427 <reference ref="637728381"/>
1428 </object>
1429 <reference key="parent" ref="537034939"/>
1430 </object>
1431 <object class="IBObjectRecord">
1432 <int key="objectID">64</int>
1433 <reference key="object" ref="637728381"/>
1434 <reference key="parent" ref="525390780"/>
1435 </object>
1436 <object class="IBObjectRecord">
1437 <int key="objectID">65</int>
1438 <reference key="object" ref="471811034"/>
1439 <object class="NSMutableArray" key="children">
1440 <bool key="EncodedWithXMLCoder">YES</bool>
1441 <reference ref="35095251"/>
1442 </object>
1443 <reference key="parent" ref="537034939"/>
1444 <string key="objectName">Text Field - remote port</string>
1445 </object>
1446 <object class="IBObjectRecord">
1447 <int key="objectID">66</int>
1448 <reference key="object" ref="35095251"/>
1449 <reference key="parent" ref="471811034"/>
1450 </object>
1451 <object class="IBObjectRecord">
1452 <int key="objectID">88</int>
1453 <reference key="object" ref="53446878"/>
1454 <reference key="parent" ref="537034939"/>
1455 <string key="objectName">progress indicator</string>
1456 </object>
1457 <object class="IBObjectRecord">
1458 <int key="objectID">89</int>
1459 <reference key="object" ref="727455678"/>
1460 <object class="NSMutableArray" key="children">
1461 <bool key="EncodedWithXMLCoder">YES</bool>
1462 <reference ref="873681103"/>
1463 </object>
1464 <reference key="parent" ref="537034939"/>
1465 </object>
1466 <object class="IBObjectRecord">
1467 <int key="objectID">90</int>
1468 <reference key="object" ref="873681103"/>
1469 <reference key="parent" ref="727455678"/>
1470 </object>
1471 <object class="IBObjectRecord">
1472 <int key="objectID">112</int>
1473 <reference key="object" ref="213673854"/>
1474 <object class="NSMutableArray" key="children">
1475 <bool key="EncodedWithXMLCoder">YES</bool>
1476 <reference ref="468926987"/>
1477 </object>
1478 <reference key="parent" ref="537034939"/>
1479 <string key="objectName">Static Text - error</string>
1480 </object>
1481 <object class="IBObjectRecord">
1482 <int key="objectID">113</int>
1483 <reference key="object" ref="468926987"/>
1484 <reference key="parent" ref="213673854"/>
1485 </object>
1486 <object class="IBObjectRecord">
1487 <int key="objectID">121</int>
1488 <reference key="object" ref="138314969"/>
1489 <object class="NSMutableArray" key="children">
1490 <bool key="EncodedWithXMLCoder">YES</bool>
1491 <reference ref="849261570"/>
1492 </object>
1493 <reference key="parent" ref="537034939"/>
1494 </object>
1495 <object class="IBObjectRecord">
1496 <int key="objectID">122</int>
1497 <reference key="object" ref="849261570"/>
1498 <reference key="parent" ref="138314969"/>
1499 </object>
1500 <object class="IBObjectRecord">
1501 <int key="objectID">123</int>
1502 <reference key="object" ref="720108113"/>
1503 <object class="NSMutableArray" key="children">
1504 <bool key="EncodedWithXMLCoder">YES</bool>
1505 <reference ref="966502450"/>
1506 </object>
1507 <reference key="parent" ref="537034939"/>
1508 <string key="objectName">Text Field - timeout</string>
1509 </object>
1510 <object class="IBObjectRecord">
1511 <int key="objectID">124</int>
1512 <reference key="object" ref="966502450"/>
1513 <reference key="parent" ref="720108113"/>
1514 </object>
1515 </object>
1516 </object>
1517 <object class="NSMutableDictionary" key="flattenedProperties">
1518 <bool key="EncodedWithXMLCoder">YES</bool>
1519 <object class="NSArray" key="dict.sortedKeys">
1520 <bool key="EncodedWithXMLCoder">YES</bool>
1521 <string>-1.IBPluginDependency</string>
1522 <string>-2.IBPluginDependency</string>
1523 <string>-3.IBPluginDependency</string>
1524 <string>10.IBPluginDependency</string>
1525 <string>11.IBAttributePlaceholdersKey</string>
1526 <string>11.IBPluginDependency</string>
1527 <string>112.IBPluginDependency</string>
1528 <string>113.IBPluginDependency</string>
1529 <string>12.IBPluginDependency</string>
1530 <string>121.IBPluginDependency</string>
1531 <string>122.IBPluginDependency</string>
1532 <string>123.IBAttributePlaceholdersKey</string>
1533 <string>123.IBPluginDependency</string>
1534 <string>124.IBPluginDependency</string>
1535 <string>13.IBAttributePlaceholdersKey</string>
1536 <string>13.IBPluginDependency</string>
1537 <string>14.IBPluginDependency</string>
1538 <string>15.IBPluginDependency</string>
1539 <string>16.IBPluginDependency</string>
1540 <string>17.IBPluginDependency</string>
1541 <string>18.IBPluginDependency</string>
1542 <string>19.IBPluginDependency</string>
1543 <string>20.IBPluginDependency</string>
1544 <string>21.IBPluginDependency</string>
1545 <string>22.IBPluginDependency</string>
1546 <string>23.IBAttributePlaceholdersKey</string>
1547 <string>23.IBComboBoxObjectValuesKey.objectValues</string>
1548 <string>23.IBPluginDependency</string>
1549 <string>24.IBComboBoxObjectValuesKey.objectValues</string>
1550 <string>24.IBPluginDependency</string>
1551 <string>25.IBPluginDependency</string>
1552 <string>26.IBPluginDependency</string>
1553 <string>3.IBPluginDependency</string>
1554 <string>3.NSWindowTemplate.visibleAtLaunch</string>
1555 <string>30.IBAttributePlaceholdersKey</string>
1556 <string>30.IBPluginDependency</string>
1557 <string>31.IBPluginDependency</string>
1558 <string>32.IBPluginDependency</string>
1559 <string>33.IBPluginDependency</string>
1560 <string>37.IBPluginDependency</string>
1561 <string>4.IBPluginDependency</string>
1562 <string>4.IBUserGuides</string>
1563 <string>5.IBPluginDependency</string>
1564 <string>6.IBAttributePlaceholdersKey</string>
1565 <string>6.IBPluginDependency</string>
1566 <string>63.IBPluginDependency</string>
1567 <string>64.IBPluginDependency</string>
1568 <string>65.IBAttributePlaceholdersKey</string>
1569 <string>65.IBPluginDependency</string>
1570 <string>66.IBPluginDependency</string>
1571 <string>7.IBAttributePlaceholdersKey</string>
1572 <string>7.IBPluginDependency</string>
1573 <string>8.IBAttributePlaceholdersKey</string>
1574 <string>8.IBPluginDependency</string>
1575 <string>88.IBPluginDependency</string>
1576 <string>89.IBPluginDependency</string>
1577 <string>9.IBPluginDependency</string>
1578 <string>90.IBPluginDependency</string>
1579 </object>
1580 <object class="NSArray" key="dict.values">
1581 <bool key="EncodedWithXMLCoder">YES</bool>
1582 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1583 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1584 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1585 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1586 <object class="NSMutableDictionary">
1587 <string key="NS.key.0">ToolTip</string>
1588 <object class="IBToolTipAttribute" key="NS.object.0">
1589 <string key="name">ToolTip</string>
1590 <reference key="object" ref="685519878"/>
1591 <string key="toolTip">Remote file name (possibly with path relative to tftp root directory).</string>
1592 </object>
1593 </object>
1594 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1595 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1596 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1597 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1598 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1599 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1600 <object class="NSMutableDictionary">
1601 <string key="NS.key.0">ToolTip</string>
1602 <object class="IBToolTipAttribute" key="NS.object.0">
1603 <string key="name">ToolTip</string>
1604 <reference key="object" ref="720108113"/>
1605 <string key="toolTip">Retransmission timeout in seconds.</string>
1606 </object>
1607 </object>
1608 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1609 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1610 <object class="NSMutableDictionary">
1611 <string key="NS.key.0">ToolTip</string>
1612 <object class="IBToolTipAttribute" key="NS.object.0">
1613 <string key="name">ToolTip</string>
1614 <reference key="object" ref="392834772"/>
1615 <string key="toolTip">Local full file name with path.</string>
1616 </object>
1617 </object>
1618 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1619 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1620 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1621 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1622 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1623 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1624 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1625 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1626 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1627 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1628 <object class="NSMutableDictionary">
1629 <bool key="EncodedWithXMLCoder">YES</bool>
1630 <reference key="dict.sortedKeys" ref="0"/>
1631 <reference key="dict.values" ref="0"/>
1632 </object>
1633 <object class="NSArray">
1634 <bool key="EncodedWithXMLCoder">YES</bool>
1635 <string>octet</string>
1636 <string>netascii</string>
1637 </object>
1638 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1639 <object class="NSArray">
1640 <bool key="EncodedWithXMLCoder">YES</bool>
1641 <string>512</string>
1642 <string>1024</string>
1643 <string>2048</string>
1644 <string>4096</string>
1645 </object>
1646 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1647 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1648 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1649 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1650 <boolean value="NO"/>
1651 <object class="NSMutableDictionary">
1652 <string key="NS.key.0">ToolTip</string>
1653 <object class="IBToolTipAttribute" key="NS.object.0">
1654 <string key="name">ToolTip</string>
1655 <reference key="object" ref="23478474"/>
1656 <string key="toolTip">Remote host name or IP address.</string>
1657 </object>
1658 </object>
1659 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1660 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1661 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1662 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1663 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1664 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1665 <object class="NSMutableArray">
1666 <bool key="EncodedWithXMLCoder">YES</bool>
1667 </object>
1668 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1669 <object class="NSMutableDictionary">
1670 <bool key="EncodedWithXMLCoder">YES</bool>
1671 <reference key="dict.sortedKeys" ref="0"/>
1672 <reference key="dict.values" ref="0"/>
1673 </object>
1674 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1675 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1676 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1677 <object class="NSMutableDictionary">
1678 <string key="NS.key.0">ToolTip</string>
1679 <object class="IBToolTipAttribute" key="NS.object.0">
1680 <string key="name">ToolTip</string>
1681 <reference key="object" ref="471811034"/>
1682 <string key="toolTip">Remote UDP port.</string>
1683 </object>
1684 </object>
1685 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1686 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1687 <object class="NSMutableDictionary">
1688 <string key="NS.key.0">ToolTip</string>
1689 <object class="IBToolTipAttribute" key="NS.object.0">
1690 <string key="name">ToolTip</string>
1691 <reference key="object" ref="183069999"/>
1692 <string key="toolTip">Transmission block size in bytes.</string>
1693 </object>
1694 </object>
1695 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1696 <object class="NSMutableDictionary">
1697 <string key="NS.key.0">ToolTip</string>
1698 <object class="IBToolTipAttribute" key="NS.object.0">
1699 <string key="name">ToolTip</string>
1700 <reference key="object" ref="1029217440"/>
1701 <string key="toolTip">TFTP transfer type. Typically 'octet' or 'netascii'. Isn't really taken into account by PumpKIN.</string>
1702 </object>
1703 </object>
1704 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1705 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1706 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1707 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1708 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
1709 </object>
1710 </object>
1711 <object class="NSMutableDictionary" key="unlocalizedProperties">
1712 <bool key="EncodedWithXMLCoder">YES</bool>
1713 <reference key="dict.sortedKeys" ref="0"/>
1714 <reference key="dict.values" ref="0"/>
1715 </object>
1716 <nil key="activeLocalization"/>
1717 <object class="NSMutableDictionary" key="localizations">
1718 <bool key="EncodedWithXMLCoder">YES</bool>
1719 <reference key="dict.sortedKeys" ref="0"/>
1720 <reference key="dict.values" ref="0"/>
1721 </object>
1722 <nil key="sourceID"/>
1723 <int key="maxID">140</int>
1724 </object>
1725 <object class="IBClassDescriber" key="IBDocument.Classes">
1726 <object class="NSMutableArray" key="referencedPartialClassDescriptions">
1727 <bool key="EncodedWithXMLCoder">YES</bool>
1728 <object class="IBPartialClassDescription">
1729 <string key="className">ARequest</string>
1730 <string key="superclassName">NSWindowController</string>
1731 <object class="NSMutableDictionary" key="actions">
1732 <bool key="EncodedWithXMLCoder">YES</bool>
1733 <object class="NSArray" key="dict.sortedKeys">
1734 <bool key="EncodedWithXMLCoder">YES</bool>
1735 <string>pickFile:</string>
1736 <string>startXfer:</string>
1737 </object>
1738 <object class="NSArray" key="dict.values">
1739 <bool key="EncodedWithXMLCoder">YES</bool>
1740 <string>id</string>
1741 <string>id</string>
1742 </object>
1743 </object>
1744 <object class="NSMutableDictionary" key="actionInfosByName">
1745 <bool key="EncodedWithXMLCoder">YES</bool>
1746 <object class="NSArray" key="dict.sortedKeys">
1747 <bool key="EncodedWithXMLCoder">YES</bool>
1748 <string>pickFile:</string>
1749 <string>startXfer:</string>
1750 </object>
1751 <object class="NSArray" key="dict.values">
1752 <bool key="EncodedWithXMLCoder">YES</bool>
1753 <object class="IBActionInfo">
1754 <string key="name">pickFile:</string>
1755 <string key="candidateClassName">id</string>
1756 </object>
1757 <object class="IBActionInfo">
1758 <string key="name">startXfer:</string>
1759 <string key="candidateClassName">id</string>
1760 </object>
1761 </object>
1762 </object>
1763 <object class="NSMutableDictionary" key="outlets">
1764 <string key="NS.key.0">remoteHostBox</string>
1765 <string key="NS.object.0">NSTextField</string>
1766 </object>
1767 <object class="NSMutableDictionary" key="toOneOutletInfosByName">
1768 <string key="NS.key.0">remoteHostBox</string>
1769 <object class="IBToOneOutletInfo" key="NS.object.0">
1770 <string key="name">remoteHostBox</string>
1771 <string key="candidateClassName">NSTextField</string>
1772 </object>
1773 </object>
1774 <object class="IBClassDescriptionSource" key="sourceIdentifier">
1775 <string key="majorKey">IBProjectSource</string>
1776 <string key="minorKey">./Classes/ARequest.h</string>
1777 </object>
1778 </object>
1779 </object>
1780 </object>
1781 <int key="IBDocument.localizationMode">0</int>
1782 <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
1783 <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
1784 <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
1785 <integer value="3000" key="NS.object.0"/>
1786 </object>
1787 <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
1788 <int key="IBDocument.defaultPropertyAccessControl">3</int>
1789 </data>
1790</archive>
diff --git a/pumpkin/ConfirmRequest.h b/pumpkin/ConfirmRequest.h
new file mode 100644
index 0000000..5db6f2e
--- a/dev/null
+++ b/pumpkin/ConfirmRequest.h
@@ -0,0 +1,38 @@
1
2#import <Cocoa/Cocoa.h>
3#import "TFTPPacket.h"
4#import "XFer.h"
5
6enum RequestVerdict {
7 verdictDeny = 0,
8 verdictAllow, verdictRename,
9 verdictDefault = verdictDeny
10};
11
12@interface ConfirmRequest : NSWindowController {
13 XFer *xfer;
14 NSString *remoteHost;
15 NSString *remoteAction;
16 NSString *fileName;
17 BOOL fileExists;
18 BOOL isWriteRequest;
19 NSTimer *timeout;
20}
21
22@property (copy) NSString *remoteHost;
23@property (copy) NSString *remoteAction;
24@property (copy) NSString *fileName;
25@property BOOL fileExists;
26@property BOOL isWriteRequest;
27
28@property (assign) IBOutlet NSButton *allowButton;
29@property (assign) IBOutlet NSButton *denyButton;
30@property (assign) IBOutlet NSButton *renameButton;
31
32- (IBAction)letItBe:(id)sender;
33- (IBAction)deny:(id)sender;
34- (IBAction)rename:(id)sender;
35
36+ (void) confirmationWithXfer:(XFer*)x;
37
38@end
diff --git a/pumpkin/ConfirmRequest.m b/pumpkin/ConfirmRequest.m
new file mode 100644
index 0000000..73dfcc1
--- a/dev/null
+++ b/pumpkin/ConfirmRequest.m
@@ -0,0 +1,57 @@
1
2#import "ConfirmRequest.h"
3#import "StringsAttached.h"
4
5@implementation ConfirmRequest
6@synthesize remoteHost;
7@synthesize remoteAction;
8@synthesize fileName;
9@synthesize fileExists;
10@synthesize isWriteRequest;
11
12-(void)sentence:(int)v {
13 [timeout invalidate], [timeout release], timeout=nil;
14 [xfer goOnWithVerdict:v];
15 [self.window performClose:nil];
16 [[[NSUserDefaultsController sharedUserDefaultsController] values]
17 setValue:@(v) forKey:isWriteRequest?@"WRQ.lastSentence":@"RRQ.lastSentence"];
18 [self release];
19}
20
21- (IBAction)letItBe:(id)sender { [self sentence:verdictAllow]; }
22- (IBAction)deny:(id)sender { [self sentence:verdictDeny]; }
23- (IBAction)rename:(id)sender { [self sentence:verdictRename]; }
24- (void)timeout { [self sentence:verdictDefault]; }
25
26- (ConfirmRequest*) initWithXfer:(XFer *)x {
27 enum TFTPOp op = x.initialPacket.op;
28 NSAssert(op==tftpOpRRQ || op==tftpOpWRQ,@"Invalid request to confirm");
29 if(!(self=[super initWithWindowNibName:@"ConfirmRequest"])) return self;
30 isWriteRequest = op==tftpOpWRQ;
31 remoteHost = [[NSString stringWithHostAddress:x.peer] retain];
32 remoteAction = isWriteRequest?@"tries to send you":@"requests the file";
33 fileName = x.xferFilename;
34 fileExists = [[NSFileManager defaultManager] fileExistsAtPath:x.localFile];
35 xfer = [x retain];
36 switch([[[[NSUserDefaultsController sharedUserDefaultsController] values] valueForKey:isWriteRequest?@"WRQ.lastSentence":@"RRQ.lastSentence"] intValue]) {
37 case verdictAllow: self.window.initialFirstResponder = self.allowButton; break;
38 case verdictDeny: self.window.initialFirstResponder = self.denyButton; break;
39 case verdictRename: self.window.initialFirstResponder = self.renameButton; break;
40 }
41 [self.window makeKeyAndOrderFront:nil];
42 timeout = [[NSTimer scheduledTimerWithTimeInterval:[[[[NSUserDefaultsController sharedUserDefaultsController] values] valueForKey:@"confirmationTimeout"] intValue] target:self selector:@selector(timeout) userInfo:nil repeats:NO] retain];
43 return self;
44}
45
46- (void) dealloc {
47 if(timeout) [timeout invalidate], [timeout release];
48 if(remoteHost) [remoteHost release];
49 if(xfer) [xfer release];
50 [super dealloc];
51}
52
53+ (void) confirmationWithXfer:(XFer *)x {
54 [[self alloc] initWithXfer:x];
55}
56
57@end
diff --git a/pumpkin/ConfirmRequest.xib b/pumpkin/ConfirmRequest.xib
new file mode 100644
index 0000000..86d0030
--- a/dev/null
+++ b/pumpkin/ConfirmRequest.xib
@@ -0,0 +1,695 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
3 <data>
4 <int key="IBDocument.SystemTarget">1080</int>
5 <string key="IBDocument.SystemVersion">12C60</string>
6 <string key="IBDocument.InterfaceBuilderVersion">2844</string>
7 <string key="IBDocument.AppKitVersion">1187.34</string>
8 <string key="IBDocument.HIToolboxVersion">625.00</string>
9 <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
10 <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
11 <string key="NS.object.0">2844</string>
12 </object>
13 <array key="IBDocument.IntegratedClassDependencies">
14 <string>NSButton</string>
15 <string>NSButtonCell</string>
16 <string>NSCustomObject</string>
17 <string>NSTextField</string>
18 <string>NSTextFieldCell</string>
19 <string>NSUserDefaultsController</string>
20 <string>NSView</string>
21 <string>NSWindowTemplate</string>
22 </array>
23 <array key="IBDocument.PluginDependencies">
24 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
25 </array>
26 <object class="NSMutableDictionary" key="IBDocument.Metadata">
27 <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
28 <integer value="1" key="NS.object.0"/>
29 </object>
30 <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
31 <object class="NSCustomObject" id="1001">
32 <string key="NSClassName">ConfirmRequest</string>
33 </object>
34 <object class="NSCustomObject" id="1003">
35 <string key="NSClassName">FirstResponder</string>
36 </object>
37 <object class="NSCustomObject" id="1004">
38 <string key="NSClassName">NSApplication</string>
39 </object>
40 <object class="NSWindowTemplate" id="1005">
41 <int key="NSWindowStyleMask">11</int>
42 <int key="NSWindowBacking">2</int>
43 <string key="NSWindowRect">{{578, 340}, {276, 203}}</string>
44 <int key="NSWTFlags">544735232</int>
45 <string key="NSWindowTitle">Incoming request</string>
46 <string key="NSWindowClass">NSWindow</string>
47 <nil key="NSViewClass"/>
48 <nil key="NSUserInterfaceItemIdentifier"/>
49 <string key="NSWindowContentMaxSize">{276, 203}</string>
50 <string key="NSWindowContentMinSize">{276, 203}</string>
51 <object class="NSView" key="NSWindowView" id="1006">
52 <reference key="NSNextResponder"/>
53 <int key="NSvFlags">256</int>
54 <array class="NSMutableArray" key="NSSubviews">
55 <object class="NSTextField" id="1043014274">
56 <reference key="NSNextResponder" ref="1006"/>
57 <int key="NSvFlags">268</int>
58 <string key="NSFrame">{{17, 166}, {60, 17}}</string>
59 <reference key="NSSuperview" ref="1006"/>
60 <reference key="NSNextKeyView" ref="493109509"/>
61 <string key="NSReuseIdentifierKey">_NS:3936</string>
62 <bool key="NSEnabled">YES</bool>
63 <object class="NSTextFieldCell" key="NSCell" id="751681516">
64 <int key="NSCellFlags">68157504</int>
65 <int key="NSCellFlags2">272630784</int>
66 <string key="NSContents">The host</string>
67 <object class="NSFont" key="NSSupport" id="480005309">
68 <string key="NSName">LucidaGrande</string>
69 <double key="NSSize">13</double>
70 <int key="NSfFlags">1044</int>
71 </object>
72 <string key="NSCellIdentifier">_NS:3936</string>
73 <reference key="NSControlView" ref="1043014274"/>
74 <object class="NSColor" key="NSBackgroundColor" id="566729528">
75 <int key="NSColorSpace">6</int>
76 <string key="NSCatalogName">System</string>
77 <string key="NSColorName">controlColor</string>
78 <object class="NSColor" key="NSColor">
79 <int key="NSColorSpace">3</int>
80 <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
81 </object>
82 </object>
83 <object class="NSColor" key="NSTextColor" id="737623876">
84 <int key="NSColorSpace">6</int>
85 <string key="NSCatalogName">System</string>
86 <string key="NSColorName">controlTextColor</string>
87 <object class="NSColor" key="NSColor">
88 <int key="NSColorSpace">3</int>
89 <bytes key="NSWhite">MAA</bytes>
90 </object>
91 </object>
92 </object>
93 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
94 </object>
95 <object class="NSTextField" id="493109509">
96 <reference key="NSNextResponder" ref="1006"/>
97 <int key="NSvFlags">268</int>
98 <string key="NSFrame">{{79, 166}, {117, 17}}</string>
99 <reference key="NSSuperview" ref="1006"/>
100 <reference key="NSNextKeyView" ref="442301359"/>
101 <string key="NSReuseIdentifierKey">_NS:3936</string>
102 <bool key="NSEnabled">YES</bool>
103 <object class="NSTextFieldCell" key="NSCell" id="808816111">
104 <int key="NSCellFlags">68157504</int>
105 <int key="NSCellFlags2">272630784</int>
106 <string key="NSContents">255.255.255.255</string>
107 <object class="NSFont" key="NSSupport" id="373119259">
108 <string key="NSName">LucidaGrande-Bold</string>
109 <double key="NSSize">13</double>
110 <int key="NSfFlags">2072</int>
111 </object>
112 <string key="NSCellIdentifier">_NS:3936</string>
113 <reference key="NSControlView" ref="493109509"/>
114 <bool key="NSDrawsBackground">YES</bool>
115 <reference key="NSBackgroundColor" ref="566729528"/>
116 <reference key="NSTextColor" ref="737623876"/>
117 </object>
118 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
119 </object>
120 <object class="NSTextField" id="442301359">
121 <reference key="NSNextResponder" ref="1006"/>
122 <int key="NSvFlags">268</int>
123 <string key="NSFrame">{{17, 141}, {134, 17}}</string>
124 <reference key="NSSuperview" ref="1006"/>
125 <reference key="NSNextKeyView" ref="826265339"/>
126 <string key="NSReuseIdentifierKey">_NS:3936</string>
127 <bool key="NSEnabled">YES</bool>
128 <object class="NSTextFieldCell" key="NSCell" id="570503156">
129 <int key="NSCellFlags">68157504</int>
130 <int key="NSCellFlags2">272630784</int>
131 <string key="NSContents">is requesting the file</string>
132 <reference key="NSSupport" ref="480005309"/>
133 <string key="NSCellIdentifier">_NS:3936</string>
134 <reference key="NSControlView" ref="442301359"/>
135 <reference key="NSBackgroundColor" ref="566729528"/>
136 <reference key="NSTextColor" ref="737623876"/>
137 </object>
138 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
139 </object>
140 <object class="NSTextField" id="826265339">
141 <reference key="NSNextResponder" ref="1006"/>
142 <int key="NSvFlags">266</int>
143 <string key="NSFrame">{{17, 116}, {242, 17}}</string>
144 <reference key="NSSuperview" ref="1006"/>
145 <reference key="NSNextKeyView" ref="204620803"/>
146 <string key="NSReuseIdentifierKey">_NS:3936</string>
147 <bool key="NSEnabled">YES</bool>
148 <object class="NSTextFieldCell" key="NSCell" id="64476756">
149 <int key="NSCellFlags">68157504</int>
150 <int key="NSCellFlags2">138413056</int>
151 <string key="NSContents">tftp.bin</string>
152 <reference key="NSSupport" ref="373119259"/>
153 <string key="NSCellIdentifier">_NS:3936</string>
154 <reference key="NSControlView" ref="826265339"/>
155 <reference key="NSBackgroundColor" ref="566729528"/>
156 <reference key="NSTextColor" ref="737623876"/>
157 </object>
158 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
159 </object>
160 <object class="NSTextField" id="204620803">
161 <reference key="NSNextResponder" ref="1006"/>
162 <int key="NSvFlags">268</int>
163 <string key="NSFrame">{{17, 97}, {69, 11}}</string>
164 <reference key="NSSuperview" ref="1006"/>
165 <reference key="NSNextKeyView" ref="95446448"/>
166 <string key="NSReuseIdentifierKey">_NS:3936</string>
167 <bool key="NSEnabled">YES</bool>
168 <object class="NSTextFieldCell" key="NSCell" id="957466536">
169 <int key="NSCellFlags">68157504</int>
170 <int key="NSCellFlags2">272630784</int>
171 <string key="NSContents">(the file exists)</string>
172 <object class="NSFont" key="NSSupport">
173 <string key="NSName">LucidaGrande</string>
174 <double key="NSSize">9</double>
175 <int key="NSfFlags">3614</int>
176 </object>
177 <string key="NSCellIdentifier">_NS:3936</string>
178 <reference key="NSControlView" ref="204620803"/>
179 <reference key="NSBackgroundColor" ref="566729528"/>
180 <reference key="NSTextColor" ref="737623876"/>
181 </object>
182 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
183 </object>
184 <object class="NSTextField" id="95446448">
185 <reference key="NSNextResponder" ref="1006"/>
186 <int key="NSvFlags">268</int>
187 <string key="NSFrame">{{96, 72}, {103, 17}}</string>
188 <reference key="NSSuperview" ref="1006"/>
189 <reference key="NSNextKeyView" ref="454803690"/>
190 <string key="NSReuseIdentifierKey">_NS:3936</string>
191 <bool key="NSEnabled">YES</bool>
192 <object class="NSTextFieldCell" key="NSCell" id="330029717">
193 <int key="NSCellFlags">68157504</int>
194 <int key="NSCellFlags2">138413056</int>
195 <string key="NSContents">do you want to</string>
196 <reference key="NSSupport" ref="480005309"/>
197 <string key="NSCellIdentifier">_NS:3936</string>
198 <reference key="NSControlView" ref="95446448"/>
199 <reference key="NSBackgroundColor" ref="566729528"/>
200 <reference key="NSTextColor" ref="737623876"/>
201 </object>
202 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
203 </object>
204 <object class="NSButton" id="454803690">
205 <reference key="NSNextResponder" ref="1006"/>
206 <int key="NSvFlags">266</int>
207 <string key="NSFrame">{{20, 45}, {109, 19}}</string>
208 <reference key="NSSuperview" ref="1006"/>
209 <reference key="NSNextKeyView" ref="173020989"/>
210 <string key="NSReuseIdentifierKey">_NS:1534</string>
211 <bool key="NSEnabled">YES</bool>
212 <object class="NSButtonCell" key="NSCell" id="239767303">
213 <int key="NSCellFlags">-2080374784</int>
214 <int key="NSCellFlags2">134217728</int>
215 <string key="NSContents">let it be</string>
216 <object class="NSFont" key="NSSupport" id="609726753">
217 <string key="NSName">LucidaGrande</string>
218 <double key="NSSize">12</double>
219 <int key="NSfFlags">16</int>
220 </object>
221 <string key="NSCellIdentifier">_NS:1534</string>
222 <reference key="NSControlView" ref="454803690"/>
223 <int key="NSButtonFlags">-2038153216</int>
224 <int key="NSButtonFlags2">164</int>
225 <string key="NSAlternateContents"/>
226 <string key="NSKeyEquivalent"/>
227 <int key="NSPeriodicDelay">400</int>
228 <int key="NSPeriodicInterval">75</int>
229 </object>
230 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
231 </object>
232 <object class="NSButton" id="173020989">
233 <reference key="NSNextResponder" ref="1006"/>
234 <int key="NSvFlags">266</int>
235 <string key="NSFrame">{{146, 45}, {110, 19}}</string>
236 <reference key="NSSuperview" ref="1006"/>
237 <reference key="NSNextKeyView" ref="17265301"/>
238 <string key="NSReuseIdentifierKey">_NS:1534</string>
239 <bool key="NSEnabled">YES</bool>
240 <object class="NSButtonCell" key="NSCell" id="50310263">
241 <int key="NSCellFlags">-2080374784</int>
242 <int key="NSCellFlags2">134217728</int>
243 <string key="NSContents">deny access</string>
244 <reference key="NSSupport" ref="609726753"/>
245 <string key="NSCellIdentifier">_NS:1534</string>
246 <reference key="NSControlView" ref="173020989"/>
247 <int key="NSButtonFlags">-2038153216</int>
248 <int key="NSButtonFlags2">164</int>
249 <string key="NSAlternateContents"/>
250 <string key="NSKeyEquivalent"/>
251 <int key="NSPeriodicDelay">400</int>
252 <int key="NSPeriodicInterval">75</int>
253 </object>
254 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
255 </object>
256 <object class="NSButton" id="17265301">
257 <reference key="NSNextResponder" ref="1006"/>
258 <int key="NSvFlags">266</int>
259 <string key="NSFrame">{{20, 19}, {236, 19}}</string>
260 <reference key="NSSuperview" ref="1006"/>
261 <string key="NSReuseIdentifierKey">_NS:1534</string>
262 <bool key="NSEnabled">YES</bool>
263 <object class="NSButtonCell" key="NSCell" id="577909785">
264 <int key="NSCellFlags">-2080374784</int>
265 <int key="NSCellFlags2">134217728</int>
266 <string key="NSContents">save under different name</string>
267 <reference key="NSSupport" ref="609726753"/>
268 <string key="NSCellIdentifier">_NS:1534</string>
269 <reference key="NSControlView" ref="17265301"/>
270 <int key="NSButtonFlags">-2038153216</int>
271 <int key="NSButtonFlags2">164</int>
272 <string key="NSAlternateContents"/>
273 <string key="NSKeyEquivalent"/>
274 <int key="NSPeriodicDelay">400</int>
275 <int key="NSPeriodicInterval">75</int>
276 </object>
277 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
278 </object>
279 </array>
280 <string key="NSFrameSize">{276, 203}</string>
281 <reference key="NSSuperview"/>
282 <reference key="NSNextKeyView" ref="1043014274"/>
283 </object>
284 <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
285 <string key="NSMinSize">{276, 225}</string>
286 <string key="NSMaxSize">{276, 225}</string>
287 <bool key="NSWindowIsRestorable">YES</bool>
288 </object>
289 <object class="NSUserDefaultsController" id="896102830">
290 <bool key="NSSharedInstance">YES</bool>
291 </object>
292 </array>
293 <object class="IBObjectContainer" key="IBDocument.Objects">
294 <array class="NSMutableArray" key="connectionRecords">
295 <object class="IBConnectionRecord">
296 <object class="IBOutletConnection" key="connection">
297 <string key="label">window</string>
298 <reference key="source" ref="1001"/>
299 <reference key="destination" ref="1005"/>
300 </object>
301 <int key="connectionID">37</int>
302 </object>
303 <object class="IBConnectionRecord">
304 <object class="IBActionConnection" key="connection">
305 <string key="label">rename:</string>
306 <reference key="source" ref="1001"/>
307 <reference key="destination" ref="17265301"/>
308 </object>
309 <int key="connectionID">40</int>
310 </object>
311 <object class="IBConnectionRecord">
312 <object class="IBActionConnection" key="connection">
313 <string key="label">deny:</string>
314 <reference key="source" ref="1001"/>
315 <reference key="destination" ref="173020989"/>
316 </object>
317 <int key="connectionID">46</int>
318 </object>
319 <object class="IBConnectionRecord">
320 <object class="IBActionConnection" key="connection">
321 <string key="label">letItBe:</string>
322 <reference key="source" ref="1001"/>
323 <reference key="destination" ref="454803690"/>
324 </object>
325 <int key="connectionID">47</int>
326 </object>
327 <object class="IBConnectionRecord">
328 <object class="IBOutletConnection" key="connection">
329 <string key="label">allowButton</string>
330 <reference key="source" ref="1001"/>
331 <reference key="destination" ref="454803690"/>
332 </object>
333 <int key="connectionID">48</int>
334 </object>
335 <object class="IBConnectionRecord">
336 <object class="IBOutletConnection" key="connection">
337 <string key="label">denyButton</string>
338 <reference key="source" ref="1001"/>
339 <reference key="destination" ref="173020989"/>
340 </object>
341 <int key="connectionID">49</int>
342 </object>
343 <object class="IBConnectionRecord">
344 <object class="IBOutletConnection" key="connection">
345 <string key="label">renameButton</string>
346 <reference key="source" ref="1001"/>
347 <reference key="destination" ref="17265301"/>
348 </object>
349 <int key="connectionID">50</int>
350 </object>
351 <object class="IBConnectionRecord">
352 <object class="IBOutletConnection" key="connection">
353 <string key="label">delegate</string>
354 <reference key="source" ref="1005"/>
355 <reference key="destination" ref="1001"/>
356 </object>
357 <int key="connectionID">36</int>
358 </object>
359 <object class="IBConnectionRecord">
360 <object class="IBBindingConnection" key="connection">
361 <string key="label">value: self.remoteHost</string>
362 <reference key="source" ref="493109509"/>
363 <reference key="destination" ref="1001"/>
364 <object class="NSNibBindingConnector" key="connector">
365 <reference key="NSSource" ref="493109509"/>
366 <reference key="NSDestination" ref="1001"/>
367 <string key="NSLabel">value: self.remoteHost</string>
368 <string key="NSBinding">value</string>
369 <string key="NSKeyPath">self.remoteHost</string>
370 <int key="NSNibBindingConnectorVersion">2</int>
371 </object>
372 </object>
373 <int key="connectionID">28</int>
374 </object>
375 <object class="IBConnectionRecord">
376 <object class="IBBindingConnection" key="connection">
377 <string key="label">value: self.remoteAction</string>
378 <reference key="source" ref="442301359"/>
379 <reference key="destination" ref="1001"/>
380 <object class="NSNibBindingConnector" key="connector">
381 <reference key="NSSource" ref="442301359"/>
382 <reference key="NSDestination" ref="1001"/>
383 <string key="NSLabel">value: self.remoteAction</string>
384 <string key="NSBinding">value</string>
385 <string key="NSKeyPath">self.remoteAction</string>
386 <int key="NSNibBindingConnectorVersion">2</int>
387 </object>
388 </object>
389 <int key="connectionID">30</int>
390 </object>
391 <object class="IBConnectionRecord">
392 <object class="IBBindingConnection" key="connection">
393 <string key="label">value: self.fileName</string>
394 <reference key="source" ref="826265339"/>
395 <reference key="destination" ref="1001"/>
396 <object class="NSNibBindingConnector" key="connector">
397 <reference key="NSSource" ref="826265339"/>
398 <reference key="NSDestination" ref="1001"/>
399 <string key="NSLabel">value: self.fileName</string>
400 <string key="NSBinding">value</string>
401 <string key="NSKeyPath">self.fileName</string>
402 <int key="NSNibBindingConnectorVersion">2</int>
403 </object>
404 </object>
405 <int key="connectionID">32</int>
406 </object>
407 <object class="IBConnectionRecord">
408 <object class="IBBindingConnection" key="connection">
409 <string key="label">hidden: self.fileExists</string>
410 <reference key="source" ref="204620803"/>
411 <reference key="destination" ref="1001"/>
412 <object class="NSNibBindingConnector" key="connector">
413 <reference key="NSSource" ref="204620803"/>
414 <reference key="NSDestination" ref="1001"/>
415 <string key="NSLabel">hidden: self.fileExists</string>
416 <string key="NSBinding">hidden</string>
417 <string key="NSKeyPath">self.fileExists</string>
418 <object class="NSDictionary" key="NSOptions">
419 <string key="NS.key.0">NSValueTransformerName</string>
420 <string key="NS.object.0">NSNegateBoolean</string>
421 </object>
422 <int key="NSNibBindingConnectorVersion">2</int>
423 </object>
424 </object>
425 <int key="connectionID">35</int>
426 </object>
427 <object class="IBConnectionRecord">
428 <object class="IBBindingConnection" key="connection">
429 <string key="label">hidden: self.writeRequest</string>
430 <reference key="source" ref="17265301"/>
431 <reference key="destination" ref="1001"/>
432 <object class="NSNibBindingConnector" key="connector">
433 <reference key="NSSource" ref="17265301"/>
434 <reference key="NSDestination" ref="1001"/>
435 <string key="NSLabel">hidden: self.writeRequest</string>
436 <string key="NSBinding">hidden</string>
437 <string key="NSKeyPath">self.writeRequest</string>
438 <object class="NSDictionary" key="NSOptions">
439 <string key="NS.key.0">NSValueTransformerName</string>
440 <string key="NS.object.0">NSNegateBoolean</string>
441 </object>
442 <int key="NSNibBindingConnectorVersion">2</int>
443 </object>
444 </object>
445 <int key="connectionID">45</int>
446 </object>
447 </array>
448 <object class="IBMutableOrderedSet" key="objectRecords">
449 <array key="orderedObjects">
450 <object class="IBObjectRecord">
451 <int key="objectID">0</int>
452 <array key="object" id="0"/>
453 <reference key="children" ref="1000"/>
454 <nil key="parent"/>
455 </object>
456 <object class="IBObjectRecord">
457 <int key="objectID">-2</int>
458 <reference key="object" ref="1001"/>
459 <reference key="parent" ref="0"/>
460 <string key="objectName">File's Owner</string>
461 </object>
462 <object class="IBObjectRecord">
463 <int key="objectID">-1</int>
464 <reference key="object" ref="1003"/>
465 <reference key="parent" ref="0"/>
466 <string key="objectName">First Responder</string>
467 </object>
468 <object class="IBObjectRecord">
469 <int key="objectID">-3</int>
470 <reference key="object" ref="1004"/>
471 <reference key="parent" ref="0"/>
472 <string key="objectName">Application</string>
473 </object>
474 <object class="IBObjectRecord">
475 <int key="objectID">1</int>
476 <reference key="object" ref="1005"/>
477 <array class="NSMutableArray" key="children">
478 <reference ref="1006"/>
479 </array>
480 <reference key="parent" ref="0"/>
481 </object>
482 <object class="IBObjectRecord">
483 <int key="objectID">2</int>
484 <reference key="object" ref="1006"/>
485 <array class="NSMutableArray" key="children">
486 <reference ref="1043014274"/>
487 <reference ref="493109509"/>
488 <reference ref="442301359"/>
489 <reference ref="204620803"/>
490 <reference ref="454803690"/>
491 <reference ref="173020989"/>
492 <reference ref="17265301"/>
493 <reference ref="826265339"/>
494 <reference ref="95446448"/>
495 </array>
496 <reference key="parent" ref="1005"/>
497 </object>
498 <object class="IBObjectRecord">
499 <int key="objectID">3</int>
500 <reference key="object" ref="1043014274"/>
501 <array class="NSMutableArray" key="children">
502 <reference ref="751681516"/>
503 </array>
504 <reference key="parent" ref="1006"/>
505 </object>
506 <object class="IBObjectRecord">
507 <int key="objectID">4</int>
508 <reference key="object" ref="751681516"/>
509 <reference key="parent" ref="1043014274"/>
510 </object>
511 <object class="IBObjectRecord">
512 <int key="objectID">5</int>
513 <reference key="object" ref="493109509"/>
514 <array class="NSMutableArray" key="children">
515 <reference ref="808816111"/>
516 </array>
517 <reference key="parent" ref="1006"/>
518 </object>
519 <object class="IBObjectRecord">
520 <int key="objectID">6</int>
521 <reference key="object" ref="808816111"/>
522 <reference key="parent" ref="493109509"/>
523 </object>
524 <object class="IBObjectRecord">
525 <int key="objectID">7</int>
526 <reference key="object" ref="442301359"/>
527 <array class="NSMutableArray" key="children">
528 <reference ref="570503156"/>
529 </array>
530 <reference key="parent" ref="1006"/>
531 </object>
532 <object class="IBObjectRecord">
533 <int key="objectID">8</int>
534 <reference key="object" ref="570503156"/>
535 <reference key="parent" ref="442301359"/>
536 </object>
537 <object class="IBObjectRecord">
538 <int key="objectID">9</int>
539 <reference key="object" ref="826265339"/>
540 <array class="NSMutableArray" key="children">
541 <reference ref="64476756"/>
542 </array>
543 <reference key="parent" ref="1006"/>
544 </object>
545 <object class="IBObjectRecord">
546 <int key="objectID">10</int>
547 <reference key="object" ref="64476756"/>
548 <reference key="parent" ref="826265339"/>
549 </object>
550 <object class="IBObjectRecord">
551 <int key="objectID">11</int>
552 <reference key="object" ref="204620803"/>
553 <array class="NSMutableArray" key="children">
554 <reference ref="957466536"/>
555 </array>
556 <reference key="parent" ref="1006"/>
557 </object>
558 <object class="IBObjectRecord">
559 <int key="objectID">12</int>
560 <reference key="object" ref="957466536"/>
561 <reference key="parent" ref="204620803"/>
562 </object>
563 <object class="IBObjectRecord">
564 <int key="objectID">13</int>
565 <reference key="object" ref="454803690"/>
566 <array class="NSMutableArray" key="children">
567 <reference ref="239767303"/>
568 </array>
569 <reference key="parent" ref="1006"/>
570 <string key="objectName">Button - allow</string>
571 </object>
572 <object class="IBObjectRecord">
573 <int key="objectID">14</int>
574 <reference key="object" ref="239767303"/>
575 <reference key="parent" ref="454803690"/>
576 </object>
577 <object class="IBObjectRecord">
578 <int key="objectID">15</int>
579 <reference key="object" ref="95446448"/>
580 <array class="NSMutableArray" key="children">
581 <reference ref="330029717"/>
582 </array>
583 <reference key="parent" ref="1006"/>
584 </object>
585 <object class="IBObjectRecord">
586 <int key="objectID">16</int>
587 <reference key="object" ref="330029717"/>
588 <reference key="parent" ref="95446448"/>
589 </object>
590 <object class="IBObjectRecord">
591 <int key="objectID">19</int>
592 <reference key="object" ref="173020989"/>
593 <array class="NSMutableArray" key="children">
594 <reference ref="50310263"/>
595 </array>
596 <reference key="parent" ref="1006"/>
597 <string key="objectName">Button - deny</string>
598 </object>
599 <object class="IBObjectRecord">
600 <int key="objectID">20</int>
601 <reference key="object" ref="50310263"/>
602 <reference key="parent" ref="173020989"/>
603 </object>
604 <object class="IBObjectRecord">
605 <int key="objectID">21</int>
606 <reference key="object" ref="17265301"/>
607 <array class="NSMutableArray" key="children">
608 <reference ref="577909785"/>
609 </array>
610 <reference key="parent" ref="1006"/>
611 <string key="objectName">Button - rename</string>
612 </object>
613 <object class="IBObjectRecord">
614 <int key="objectID">22</int>
615 <reference key="object" ref="577909785"/>
616 <reference key="parent" ref="17265301"/>
617 </object>
618 <object class="IBObjectRecord">
619 <int key="objectID">25</int>
620 <reference key="object" ref="896102830"/>
621 <reference key="parent" ref="0"/>
622 </object>
623 </array>
624 </object>
625 <dictionary class="NSMutableDictionary" key="flattenedProperties">
626 <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
627 <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
628 <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
629 <boolean value="YES" key="1.IBNSWindowAutoPositionCentersHorizontal"/>
630 <boolean value="YES" key="1.IBNSWindowAutoPositionCentersVertical"/>
631 <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
632 <string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
633 <boolean value="NO" key="1.NSWindowTemplate.visibleAtLaunch"/>
634 <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
635 <string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
636 <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
637 <object class="NSMutableDictionary" key="13.IBAttributePlaceholdersKey">
638 <string key="NS.key.0">ToolTip</string>
639 <object class="IBToolTipAttribute" key="NS.object.0">
640 <string key="name">ToolTip</string>
641 <reference key="object" ref="454803690"/>
642 <string key="toolTip">Allow transfer.</string>
643 </object>
644 </object>
645 <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
646 <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
647 <string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
648 <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
649 <object class="NSMutableDictionary" key="19.IBAttributePlaceholdersKey">
650 <string key="NS.key.0">ToolTip</string>
651 <object class="IBToolTipAttribute" key="NS.object.0">
652 <string key="name">ToolTip</string>
653 <reference key="object" ref="173020989"/>
654 <string key="toolTip">Send back the rejection.</string>
655 </object>
656 </object>
657 <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
658 <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
659 <string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
660 <object class="NSMutableDictionary" key="21.IBAttributePlaceholdersKey">
661 <string key="NS.key.0">ToolTip</string>
662 <object class="IBToolTipAttribute" key="NS.object.0">
663 <string key="name">ToolTip</string>
664 <reference key="object" ref="17265301"/>
665 <string key="toolTip">Automatically rename file before saving.</string>
666 </object>
667 </object>
668 <string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
669 <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
670 <string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
671 <string key="3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
672 <string key="4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
673 <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
674 <string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
675 <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
676 <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
677 <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
678 </dictionary>
679 <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
680 <nil key="activeLocalization"/>
681 <dictionary class="NSMutableDictionary" key="localizations"/>
682 <nil key="sourceID"/>
683 <int key="maxID">50</int>
684 </object>
685 <object class="IBClassDescriber" key="IBDocument.Classes"/>
686 <int key="IBDocument.localizationMode">0</int>
687 <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
688 <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
689 <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
690 <real value="4000" key="NS.object.0"/>
691 </object>
692 <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
693 <int key="IBDocument.defaultPropertyAccessControl">3</int>
694 </data>
695</archive>
diff --git a/pumpkin/Credits.rtf b/pumpkin/Credits.rtf
new file mode 100644
index 0000000..3855c1a
--- a/dev/null
+++ b/pumpkin/Credits.rtf
@@ -0,0 +1,17 @@
1{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340
2{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
3{\colortbl;\red255\green255\blue255;}
4\paperw11900\paperh16840\vieww9600\viewh8400\viewkind0
5\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
6
7\f0\b\fs24 \cf0 \'a9 2012 Klever Group (http://www.klever.net/)\
8\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
9
10\b0 \cf0 \
11Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\
12\
13The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\
14\
15\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
16
17\b \cf0 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.} \ No newline at end of file
diff --git a/pumpkin/DaemonListener.h b/pumpkin/DaemonListener.h
new file mode 100644
index 0000000..1bb6f2a
--- a/dev/null
+++ b/pumpkin/DaemonListener.h
@@ -0,0 +1,15 @@
1
2#import <Cocoa/Cocoa.h>
3#include <netinet/in.h>
4
5@class PumpKIN;
6@interface DaemonListener : NSObject {
7 CFSocketRef sockie;
8 PumpKIN *pumpkin;
9 CFRunLoopSourceRef runloopSource;
10}
11
12+(DaemonListener*)listenerWithDefaults;
13-(void)callbackWithType:(CFSocketCallBackType)t addr:(CFDataRef)a data:(const void *)d;
14
15@end
diff --git a/pumpkin/DaemonListener.m b/pumpkin/DaemonListener.m
new file mode 100644
index 0000000..ab14296
--- a/dev/null
+++ b/pumpkin/DaemonListener.m
@@ -0,0 +1,111 @@
1#import "DaemonListener.h"
2#import "TFTPPacket.h"
3#import "SendXFer.h"
4#import "ReceiveXFer.h"
5#import "StringsAttached.h"
6
7#include <sys/socket.h>
8#include <arpa/inet.h>
9#include <sys/stat.h>
10
11static void cbListener(CFSocketRef sockie,CFSocketCallBackType cbt,CFDataRef cba,
12 const void *cbd,void *i) {
13 [(DaemonListener*)i callbackWithType:cbt addr:cba data:cbd];
14}
15
16@implementation DaemonListener
17
18-(void)callbackWithType:(CFSocketCallBackType)t addr:(CFDataRef)a data:(const void *)d {
19 switch(t) {
20 case kCFSocketDataCallBack:
21 {
22 struct sockaddr_in *sin = (struct sockaddr_in*)CFDataGetBytePtr(a);
23 if([pumpkin hasPeer:sin]) {
24 [pumpkin log:@"I'm already processing the request from %@",[NSString stringWithSocketAddress:sin]];
25 return;
26 }
27 TFTPPacket *p = [TFTPPacket packetWithData:(NSData*)d];
28 switch([p op]) {
29 case tftpOpRRQ: [[[SendXFer alloc] initWithPeer:sin andPacket:p] autorelease]; break;
30 case tftpOpWRQ: [[[ReceiveXFer alloc] initWithPeer:sin andPacket:p] autorelease]; break;
31 default:
32 [pumpkin log:@"Invalid OP %d received from %@",p.op,[NSString stringWithSocketAddress:sin]];
33 break;
34 }
35 }
36 break;
37 default:
38 NSLog(@"unhandled callback: %lu",t);
39 break;
40 }
41}
42
43
44-(DaemonListener*)initWithAddress:(struct sockaddr_in*)sin {
45 if(!(self=[super init])) return self;
46
47 pumpkin = NSApplication.sharedApplication.delegate;
48
49 @try {
50 CFSocketContext ctx;
51 ctx.version = 0;
52 ctx.info = self;
53 ctx.retain = 0; ctx.release = 0;
54 ctx.copyDescription = 0;
55 sockie = CFSocketCreate(kCFAllocatorDefault,PF_INET,SOCK_DGRAM,IPPROTO_UDP,
56 kCFSocketReadCallBack|kCFSocketDataCallBack,
57 cbListener,&ctx);
58 if(ntohs(sin->sin_port)>1024) {
59 NSData *nsd = [NSData dataWithBytes:sin length:sizeof(*sin)];
60 if(CFSocketSetAddress(sockie, (CFDataRef)nsd))
61 [[NSException exceptionWithName:@"BindFailure"
62 reason:[NSString stringWithFormat:@"Binding failed, error code: %d", errno]
63 userInfo:@{@"errno": @errno}
64 ] raise];
65 }else{
66 const char *args[] = {
67 0,
68 [[NSString stringWithFormat:@"%d", CFSocketGetNative(sockie)] UTF8String],
69 [[NSString stringWithHostAddress:sin] UTF8String],
70 [[NSString stringWithPortNumber:sin] UTF8String],
71 NULL
72 };
73 [pumpkin runBiportal:args];
74 }
75 }@catch(NSException *e) {
76 if(sockie) {
77 CFSocketInvalidate(sockie);
78 CFRelease(sockie);
79 }
80 @throw;
81 }
82
83 runloopSource = CFSocketCreateRunLoopSource(kCFAllocatorDefault, sockie, 0);
84 CFRunLoopAddSource(CFRunLoopGetCurrent(),runloopSource, kCFRunLoopDefaultMode);
85 return self;
86}
87
88-(void)dealloc {
89 if(runloopSource) {
90 CFRunLoopRemoveSource(CFRunLoopGetCurrent(), runloopSource, kCFRunLoopDefaultMode);
91 CFRelease(runloopSource);
92 }
93 if(sockie) {
94 CFSocketInvalidate(sockie);
95 CFRelease(sockie);
96 }
97 [super dealloc];
98}
99
100+(DaemonListener*) listenerWithDefaults {
101 struct sockaddr_in sin;
102 memset(&sin,0,sizeof(sin));
103 sin.sin_len=sizeof(sin);
104 sin.sin_family=AF_INET;
105 id d = [[NSUserDefaultsController sharedUserDefaultsController] values];
106 sin.sin_port=htons([[d valueForKey:@"bindPort"] intValue]);
107 sin.sin_addr.s_addr=inet_addr([[d valueForKey:@"bindAddress"] UTF8String]);
108 return [[[DaemonListener alloc] initWithAddress:&sin] autorelease];
109}
110
111@end
diff --git a/pumpkin/IPFormatter.h b/pumpkin/IPFormatter.h
new file mode 100644
index 0000000..c98f3a0
--- a/dev/null
+++ b/pumpkin/IPFormatter.h
@@ -0,0 +1,6 @@
1
2#import <Foundation/Foundation.h>
3
4@interface IPFormatter : NSFormatter
5
6@end
diff --git a/pumpkin/IPFormatter.m b/pumpkin/IPFormatter.m
new file mode 100644
index 0000000..78a51b4
--- a/dev/null
+++ b/pumpkin/IPFormatter.m
@@ -0,0 +1,21 @@
1
2#import "IPFormatter.h"
3#include <arpa/inet.h>
4
5@implementation IPFormatter
6
7-(NSString *)stringForObjectValue:(id)obj {
8 if(![obj isKindOfClass:[NSString class]]) return nil;
9 return obj;
10}
11
12-(BOOL)getObjectValue:(id*)anObject forString:(NSString*)string errorDescription:(NSString**)error {
13 if(inet_addr(string.UTF8String)==INADDR_NONE) {
14 if(error) *error=@"Doesn't look like an IP address to me";
15 return NO;
16 }
17 *anObject = [NSString stringWithString:string];
18 return YES;
19}
20
21@end
diff --git a/pumpkin/IPTransformer.h b/pumpkin/IPTransformer.h
new file mode 100644
index 0000000..8c52c71
--- a/dev/null
+++ b/pumpkin/IPTransformer.h
@@ -0,0 +1,6 @@
1
2#import <Foundation/Foundation.h>
3
4@interface IPTransformer : NSValueTransformer
5
6@end
diff --git a/pumpkin/IPTransformer.m b/pumpkin/IPTransformer.m
new file mode 100644
index 0000000..2307b05
--- a/dev/null
+++ b/pumpkin/IPTransformer.m
@@ -0,0 +1,21 @@
1
2#import "IPTransformer.h"
3
4#include <arpa/inet.h>
5
6@implementation IPTransformer
7
8+(Class)transformedValueClass { return [NSString class]; }
9+(BOOL)allowsReverseTransformation { return YES; }
10-(id)transformedValue:(id)value {
11 if(value &&
12 [value respondsToSelector:@selector(UTF8String)]
13 && inet_addr([value UTF8String])!=INADDR_NONE )
14 return value;
15 return nil;
16}
17-(id)reverseTransformedValue:(id)value {
18 return [self transformedValue:value];
19}
20
21@end \ No newline at end of file
diff --git a/pumpkin/NSPortNumberTransformer.h b/pumpkin/NSPortNumberTransformer.h
new file mode 100644
index 0000000..c9afb6c
--- a/dev/null
+++ b/pumpkin/NSPortNumberTransformer.h
@@ -0,0 +1,5 @@
1#import <Foundation/Foundation.h>
2
3@interface NSPortNumberTransformer : NSValueTransformer
4
5@end
diff --git a/pumpkin/NSPortNumberTransformer.m b/pumpkin/NSPortNumberTransformer.m
new file mode 100644
index 0000000..e1a14a5
--- a/dev/null
+++ b/pumpkin/NSPortNumberTransformer.m
@@ -0,0 +1,22 @@
1#import "NSPortNumberTransformer.h"
2
3@implementation NSPortNumberTransformer
4
5+(Class)transformedValueClass { return [NSNumber class]; }
6+(BOOL)allowsReverseTransformation { return YES; }
7-(id)transformedValue:(id)value {
8 if(value==nil) return nil;
9 if(![value respondsToSelector:@selector(integerValue)]) return nil;
10 NSInteger rv = [value integerValue];
11 if(rv<1 || rv>32767) return nil;
12 return [NSString stringWithFormat:@"%u",rv];
13}
14-(id)reverseTransformedValue:(id)value {
15 if(value==nil) return nil;
16 if(![value respondsToSelector:@selector(integerValue)]) return nil;
17 NSInteger rv = [value integerValue];
18 if(rv<1 || rv>32767) return nil;
19 return [NSNumber numberWithInteger:rv];
20}
21
22@end
diff --git a/pumpkin/NumberTransformer.h b/pumpkin/NumberTransformer.h
new file mode 100644
index 0000000..373950e
--- a/dev/null
+++ b/pumpkin/NumberTransformer.h
@@ -0,0 +1,6 @@
1
2#import <Foundation/Foundation.h>
3
4@interface NumberTransformer : NSValueTransformer
5
6@end
diff --git a/pumpkin/NumberTransformer.m b/pumpkin/NumberTransformer.m
new file mode 100644
index 0000000..c02cd8b
--- a/dev/null
+++ b/pumpkin/NumberTransformer.m
@@ -0,0 +1,19 @@
1
2#import "NumberTransformer.h"
3
4@implementation NumberTransformer
5
6+(Class)transformedValueClass { return [NSNumber class]; }
7+(BOOL)allowsReverseTransformation { return YES; }
8-(id)transformedValue:(id)value {
9 if(value==nil) return nil;
10 if(![value respondsToSelector:@selector(integerValue)]) return nil;
11 return [NSString stringWithFormat:@"%lu",[value integerValue]];
12}
13-(id)reverseTransformedValue:(id)value {
14 if(value==nil) return nil;
15 if(![value respondsToSelector:@selector(integerValue)]) return nil;
16 return @([value integerValue]);
17}
18
19@end
diff --git a/pumpkin/PumpKIN.h b/pumpkin/PumpKIN.h
new file mode 100644
index 0000000..d582c94
--- a/dev/null
+++ b/pumpkin/PumpKIN.h
@@ -0,0 +1,49 @@
1#import <Cocoa/Cocoa.h>
2#import "DaemonListener.h"
3#include <netinet/in.h>
4#import "XFersViewDatasource.h"
5
6enum {
7 onRRQGive=0, onRRQPrompt, onRRQDeny,
8 onWRQTake=0, onWRQPromptIfExists, onWRQPrompt, onWRQDeny
9};
10
11@interface PumpKIN : NSObject <NSApplicationDelegate> {
12 NSWindow *window;
13 NSTextView *logger;
14 DaemonListener *listener;
15 NSWindow *preferencesWindow;
16 NSUserDefaultsController *theDefaults;
17 NSMutableArray *xfers;
18 NSTableView *xfersView;
19 XFersViewDatasource *xvDatasource;
20 NSToolbar *toolbar;
21}
22
23@property (assign) IBOutlet NSWindow *window;
24@property (assign) IBOutlet NSTextView *logger;
25- (IBAction)showPreferences:(id)sender;
26@property (assign) IBOutlet NSWindow *preferencesWindow;
27@property (assign) IBOutlet NSUserDefaultsController *theDefaults;
28- (IBAction)pickTFTPFolder:(id)sender;
29- (IBAction)pickLogFile:(id)sender;
30@property (assign) IBOutlet NSTableView *xfersView;
31@property (readonly) BOOL hasSelectedXfer;
32@property (assign) IBOutlet NSToolbar *toolbar;
33- (IBAction)abortXfer:(id)sender;
34- (IBAction)getFile:(id)sender;
35- (IBAction)putFile:(id)sender;
36
37+(void)initialize;
38
39-(void)log:(NSString*)fmt,...;
40-(void)registerXfer:(id)xfer;
41-(void)unregisterXfer:(id)xfer;
42-(void)updateXfers;
43-(BOOL)hasPeer:(struct sockaddr_in*)sin;
44
45-(void)tableViewSelectionDidChange:(NSNotification*)an;
46
47- (void)runBiportal:(char const**)arg;
48
49@end
diff --git a/pumpkin/PumpKIN.m b/pumpkin/PumpKIN.m
new file mode 100644
index 0000000..9a4623a
--- a/dev/null
+++ b/pumpkin/PumpKIN.m
@@ -0,0 +1,301 @@
1#include <stdarg.h>
2#include <sys/stat.h>
3
4#import "PumpKIN.h"
5#import "NumberTransformer.h"
6#import "IPTransformer.h"
7#import "XFer.h"
8#import "XFersViewDatasource.h"
9#import "ARequest.h"
10
11
12@implementation PumpKIN
13@synthesize toolbar;
14@synthesize preferencesWindow;
15@synthesize theDefaults;
16
17@synthesize window;
18@synthesize logger;
19@synthesize xfersView;
20
21-(void) updateListener {
22 if(listener) {
23 [listener release]; listener = nil;
24 }
25 if(![[theDefaults.values valueForKey:@"listen"] boolValue]) return;
26 @try {
27 listener = [[DaemonListener listenerWithDefaults] retain];
28 }
29 @catch (NSException *e) {
30 [self log:@"Error starting the server. %@: %@",e.name,e.reason];
31 NSAlert *a = [NSAlert alertWithMessageText:@"Failed to enable tftp server" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"Failed to enable tftp server.\n%@\n\n%@",e.name,e.reason];
32 a.alertStyle = NSWarningAlertStyle;
33 enum act_type {
34 actDont = 0,
35 actBindToAny = NSAlertThirdButtonReturn+1,
36 actRemoveTFTPD, actChangePort
37 };
38 id en;
39 if (e.userInfo && (en=(e.userInfo)[@"errno"])) {
40 switch([en intValue]) {
41 case EADDRINUSE:
42 {
43 int p = [[theDefaults.values valueForKey:@"bindPort"] intValue];
44 if(p==69) {
45 a.informativeText = @"The OS reports that the address is already in use.\n\n"
46 "It probably means, that some other programm is listening on the TFTP port."
47 " since Mac OS X comes with its own tftpd, it is the likeliest suspect."
48 " If you're going to use tftp server a lot, you may prefer to use that one."
49 " If you want to use PumpKIN, you can either use unprivileged port (but make sure"
50 " the client is aware of that and supports it) or unload Apple tftpd using"
51 " command 'launchctl remove com.apple.tftpd' (as root). I can try doing either for you.";
52 [a addButtonWithTitle:@"Change port to 6969"].tag = actChangePort;
53 [a addButtonWithTitle:@"Try to stop Apple's tftpd"].tag = actRemoveTFTPD;
54 }else if(p!=6969) {
55 a.informativeText = @"The OS reports that the address is already in use.\n\n"
56 "It probably means, that some other program is listening on the port."
57 " you can either try to find out who's using the port and shut it down or"
58 " change the port. Make sure to notify your peers of the change."
59 " I can help you with changing the port.";
60 [a addButtonWithTitle:@"Change port to 6969"].tag = actChangePort;
61 }else {
62 a.informativeText = @"The OS reports that the address is already in use.\n\n"
63 "It probably means that some other program is listening on the port."
64 "You should either change port to the one that is not used or find the"
65 " offending program and shut it down. Or go on without server.";
66 }
67 }
68 break;
69 case EADDRNOTAVAIL:
70 a.informativeText = @"The OS reports that the address is not available.\n\n"
71 "It probably means, that the IP address you specified is not configured on this machine.\n\n"
72 "You can either ignore the error and go on without TFTP server, fix the ip address, by entering the one"
73 " that is configured, or bind to the special '0.0.0.0' ip address which means listen to any"
74 " address configured. The latter you can do automatically with a single click below.";
75 [a addButtonWithTitle:@"Listen to any address"].tag = actBindToAny;
76 [a addButtonWithTitle:@"Try removing Apple's daemon"].tag = actRemoveTFTPD;
77 break;
78 }
79 };
80 [theDefaults.values setValue:@NO forKey:@"listen"];
81 switch([a runModal]) {
82 case actBindToAny:
83 [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(bindToAny) userInfo:nil repeats:NO];
84 break;
85 case actChangePort:
86 [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(bindTo6969) userInfo:nil repeats:NO];
87 break;
88 case actRemoveTFTPD:
89 {
90 @try {
91 char const *args[] = { 0,"-k",NULL };
92 [self runBiportal:args];
93 }@catch(NSException *e) {
94 [self log:@"Error trying to unload com.apple.tftpd. %@: %@",e.name,e.reason];
95 }
96 }
97 [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(bindAgain) userInfo:nil repeats:NO];
98 break;
99 }
100 }
101}
102
103-(void)bindAgain {
104 [theDefaults.values setValue:@YES forKey:@"listen"];
105}
106-(void)bindTo6969 {
107 [theDefaults.values setValue:@6969 forKey:@"bindPort"];
108 [self bindAgain];
109}
110-(void)bindToAny {
111 [theDefaults.values setValue:@"0.0.0.0" forKey:@"bindAddress"];
112 [self bindAgain];
113}
114
115- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
116 if( object==theDefaults && (
117 [keyPath isEqualToString:@"values.listen"]
118 || [keyPath isEqualToString:@"values.bindPort"]
119 || [keyPath isEqualToString:@"values.bindAddress"]) ) {
120 [self updateListener];
121 }
122}
123
124- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
125{
126 [theDefaults addObserver:self forKeyPath:@"values.listen" options:0 context:0];
127 [theDefaults addObserver:self forKeyPath:@"values.bindAddress" options:0 context:0];
128 [theDefaults addObserver:self forKeyPath:@"values.bindPort" options:0 context:0];
129
130 listener = nil;
131 [window.contentView setWantsLayer:true];
132 window.backgroundColor = [NSColor colorWithPatternImage:[NSImage imageNamed:@"klever-background.png"]];
133 xfersView.dataSource = (xvDatasource = [[XFersViewDatasource alloc] initWithXfers:xfers=[NSMutableArray arrayWithCapacity:4]]);
134 [self updateListener];
135 if(![[theDefaults values] valueForKey:@"tftpRoot"])
136 [self showPreferences:nil];
137}
138
139- (IBAction)showPreferences:(id)sender {
140 [preferencesWindow makeKeyAndOrderFront:preferencesWindow];
141}
142
143- (void)log:(NSString*)fmt,... {
144 va_list vl; va_start(vl, fmt);
145 NSString *s = [[[[NSString alloc] initWithFormat:fmt arguments:vl] autorelease] stringByAppendingString:@"\n"];
146 va_end(vl);
147 NSString *lf = [theDefaults.values valueForKey:@"logFile"];
148 if(lf && ![lf isEqualTo:@""]) {
149 NSFileHandle *l = [NSFileHandle fileHandleForWritingAtPath:lf];
150 if(!l) {
151 [[NSFileManager defaultManager] createFileAtPath:lf contents:nil attributes:nil];
152 l = [NSFileHandle fileHandleForWritingAtPath:lf];
153 }
154 if(!l) {
155 static NSString *bl = nil;
156 if(!(bl && [bl isEqualToString:lf])) {
157 [[logger textStorage] appendAttributedString:[[[NSAttributedString alloc] initWithString:
158 [NSString stringWithFormat:@"Failed to open/create '%@' log file\n",lf] ] autorelease]];
159 if(bl) [bl release];
160 bl = [NSString stringWithString:lf];
161 }
162 }else{
163 [l seekToEndOfFile];
164 [l writeData:[[NSString stringWithFormat:@"[%@] %@",[[NSDate date] description],s] dataUsingEncoding:NSUTF8StringEncoding]];
165 [l closeFile];
166 }
167 }
168 [[logger textStorage] appendAttributedString:[[[NSAttributedString alloc] initWithString:
169 s ] autorelease]];
170 [logger scrollToEndOfDocument:nil];
171}
172
173-(void)registerXfer:(id)xfer {
174 [xfers insertObject:xfer atIndex:0];
175 [self updateXfers];
176}
177-(void)unregisterXfer:(id)xfer {
178 [xfers removeObject:xfer];
179 [self updateXfers];
180}
181-(void)updateXfers {
182 [xfersView reloadData];
183}
184-(BOOL)hasPeer:(struct sockaddr_in*)sin {
185 return NSNotFound!=[xfers indexOfObjectPassingTest:^BOOL(XFer *x,NSUInteger i,BOOL *s) {
186 struct sockaddr_in *p = x.peer;
187 return p->sin_len==sin->sin_len && !memcmp(p, sin, p->sin_len);
188 }];
189}
190
191-(BOOL)hasSelectedXfer {
192 return [xfersView selectedRow]>=0;
193}
194
195-(void)tableViewSelectionDidChange:(NSNotification *)an {
196 [toolbar validateVisibleItems];
197}
198-(BOOL)validateToolbarItem:(NSToolbarItem *)theItem {
199 if([theItem.itemIdentifier isEqualToString:@"abort_xfer"])
200 return self.hasSelectedXfer;
201 return YES;
202}
203-(IBAction)abortXfer:(id)sender {
204 NSInteger r = [xfersView selectedRow];
205 NSAssert(r>=0,@"no selected row");
206 if(r<0) return;
207 XFer *x = xfers[r];
208 [self log:@"Aborting transfer of '%@' %@",x.xferFilename,x.xferPrefix];
209 [x abort];
210}
211
212- (IBAction)getFile:(id)sender {
213 [ARequest getFile];
214}
215- (IBAction)putFile:(id)sender {
216 [ARequest putFile];
217}
218
219- (IBAction)pickTFTPFolder:(id)sender {
220 NSOpenPanel *op = [NSOpenPanel openPanel];
221 op.canChooseDirectories = YES; op.canChooseFiles = NO;
222 op.canCreateDirectories = YES;
223 op.allowsMultipleSelection = NO;
224 op.prompt = @"Set TFTP root";
225 op.title = @"TFTP root";
226 op.nameFieldLabel = @"TFTP root:";
227 if([op runModal]!=NSFileHandlingPanelOKButton) return;
228 [[theDefaults values] setValue:op.URL.path forKey:@"tftpRoot"];
229}
230
231- (IBAction)pickLogFile:(id)sender {
232 NSSavePanel *op = [NSSavePanel savePanel];
233 op.canCreateDirectories = YES;
234 op.prompt = @"Set log file";
235 op.title = @"Log to";
236 op.nameFieldLabel = @"Log to";
237 if([op runModal]!=NSFileHandlingPanelOKButton) return;
238 [[theDefaults values] setValue:op.URL.path forKey:@"logFile"];
239
240}
241
242- (void)runBiportal:(char const**)args {
243 FILE *f=NULL;
244 AuthorizationRef a=nil;
245 @try {
246 NSString *bip=[[NSBundle mainBundle] pathForAuxiliaryExecutable:@"biportal"];
247 struct stat st;
248 if(stat(bip.UTF8String, &st)) [NSException raise:@"ToolFailure" format:@"Can't see my tool"];
249 if(st.st_uid || !(st.st_mode&S_ISUID)) {
250 OSStatus r = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &a);
251 if(r!=errAuthorizationSuccess)
252 [NSException raise:@"AuthFailure" format:@"failed to AuthorizationCreate(): %d",r];
253 AuthorizationItem ai = {kAuthorizationRightExecute,0,NULL,0};
254 AuthorizationRights ar = {1,&ai};
255 r = AuthorizationCopyRights(a, &ar, NULL, kAuthorizationFlagDefaults|kAuthorizationFlagInteractionAllowed|kAuthorizationFlagPreAuthorize|kAuthorizationFlagExtendRights, NULL);
256 if(r!=errAuthorizationSuccess)
257 [NSException raise:@"AuthFailure" format:@"failed to AuthorizationCopyRights(): %d",r];
258 const char *args[] = { NULL };
259#pragma GCC diagnostic push
260#pragma GCC diagnostic ignored "-Wdeprecated"
261 r = AuthorizationExecuteWithPrivileges(a,bip.UTF8String,
262 kAuthorizationFlagDefaults, (char*const*)args, &f);
263#pragma GCC diagnostic pop
264 if(r!=errAuthorizationSuccess)
265 [NSException raise:@"AuthFailure" format:@"failed to AuthorizationExecuteWithPrivileges(): %d",r];
266 int e;
267 int sr = fscanf(f, "%d", &e);
268 fclose(f),f=NULL;
269 if(sr!=1)
270 [NSException raise:@"ToolFailure" format:@"failed to setup tool"];
271 if(e)
272 [NSException raise:@"ToolFailure" format:@"failed to setup tool, error code: %d",e];
273 }
274 *args = bip.UTF8String;
275 pid_t p = fork();
276 if(p<0) [NSException raise:@"ToolFailure" format:@"failed to fork"];
277 if(!p) execv(*args,(char**)args), exit(errno);
278 int r, wp;
279 while((wp=waitpid(p,&r,0))<0 && errno==EINTR);
280 if(wp!=p) [NSException raise:@"ToolFailure" format:@"failed to wait for tool"];
281 if(!WIFEXITED(r)) [NSException raise:@"ToolFailure" format:@"tool failed"];
282 if(WEXITSTATUS(r)) {
283 [[NSException exceptionWithName:@"ToolFailure" reason:[NSString stringWithFormat:@"tool failed, error code: %d", WEXITSTATUS(r)] userInfo:@{@"errno": @WEXITSTATUS(r)}] raise];
284 }
285 }@finally {
286 if(f) fclose(f);
287 if(a) AuthorizationFree(a,kAuthorizationFlagDefaults);
288 }
289}
290
291+(void)initialize {
292 [[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:
293 [NSDictionary dictionaryWithContentsOfFile:
294 [[NSBundle mainBundle] pathForResource:@"pumpkin-defaults" ofType:@"plist"]
295 ]
296 ];
297 [NSValueTransformer setValueTransformer:[[[NumberTransformer alloc] init] autorelease] forName:@"PortNumberTransformer"];
298 [NSValueTransformer setValueTransformer:[[[IPTransformer alloc] init] autorelease] forName:@"IPAddressTransformer"];
299}
300
301@end
diff --git a/pumpkin/PumpKIN.xib b/pumpkin/PumpKIN.xib
new file mode 100644
index 0000000..8e76afe
--- a/dev/null
+++ b/pumpkin/PumpKIN.xib
@@ -0,0 +1,4251 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
3 <data>
4 <int key="IBDocument.SystemTarget">1080</int>
5 <string key="IBDocument.SystemVersion">12C60</string>
6 <string key="IBDocument.InterfaceBuilderVersion">2844</string>
7 <string key="IBDocument.AppKitVersion">1187.34</string>
8 <string key="IBDocument.HIToolboxVersion">625.00</string>
9 <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
10 <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
11 <string key="NS.object.0">2844</string>
12 </object>
13 <array key="IBDocument.IntegratedClassDependencies">
14 <string>IBCustomFormatter</string>
15 <string>NSBox</string>
16 <string>NSButton</string>
17 <string>NSButtonCell</string>
18 <string>NSCustomObject</string>
19 <string>NSCustomView</string>
20 <string>NSMatrix</string>
21 <string>NSMenu</string>
22 <string>NSMenuItem</string>
23 <string>NSNumberFormatter</string>
24 <string>NSScrollView</string>
25 <string>NSScroller</string>
26 <string>NSSplitView</string>
27 <string>NSTableColumn</string>
28 <string>NSTableHeaderView</string>
29 <string>NSTableView</string>
30 <string>NSTextField</string>
31 <string>NSTextFieldCell</string>
32 <string>NSTextView</string>
33 <string>NSToolbar</string>
34 <string>NSToolbarFlexibleSpaceItem</string>
35 <string>NSToolbarItem</string>
36 <string>NSToolbarSpaceItem</string>
37 <string>NSUserDefaultsController</string>
38 <string>NSView</string>
39 <string>NSWindowTemplate</string>
40 </array>
41 <array key="IBDocument.PluginDependencies">
42 <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
43 </array>
44 <object class="NSMutableDictionary" key="IBDocument.Metadata">
45 <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
46 <integer value="1" key="NS.object.0"/>
47 </object>
48 <array class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
49 <object class="NSCustomObject" id="1021">
50 <string key="NSClassName">NSApplication</string>
51 </object>
52 <object class="NSCustomObject" id="1014">
53 <string key="NSClassName">FirstResponder</string>
54 </object>
55 <object class="NSCustomObject" id="1050">
56 <string key="NSClassName">NSApplication</string>
57 </object>
58 <object class="NSMenu" id="649796088">
59 <string key="NSTitle">AMainMenu</string>
60 <array class="NSMutableArray" key="NSMenuItems">
61 <object class="NSMenuItem" id="694149608">
62 <reference key="NSMenu" ref="649796088"/>
63 <string key="NSTitle">PumpKIN</string>
64 <string key="NSKeyEquiv"/>
65 <int key="NSKeyEquivModMask">1048576</int>
66 <int key="NSMnemonicLoc">2147483647</int>
67 <object class="NSCustomResource" key="NSOnImage" id="35465992">
68 <string key="NSClassName">NSImage</string>
69 <string key="NSResourceName">NSMenuCheckmark</string>
70 </object>
71 <object class="NSCustomResource" key="NSMixedImage" id="502551668">
72 <string key="NSClassName">NSImage</string>
73 <string key="NSResourceName">NSMenuMixedState</string>
74 </object>
75 <string key="NSAction">submenuAction:</string>
76 <object class="NSMenu" key="NSSubmenu" id="110575045">
77 <string key="NSTitle">PumpKIN</string>
78 <array class="NSMutableArray" key="NSMenuItems">
79 <object class="NSMenuItem" id="238522557">
80 <reference key="NSMenu" ref="110575045"/>
81 <string key="NSTitle">About PumpKIN</string>
82 <string key="NSKeyEquiv"/>
83 <int key="NSMnemonicLoc">2147483647</int>
84 <reference key="NSOnImage" ref="35465992"/>
85 <reference key="NSMixedImage" ref="502551668"/>
86 </object>
87 <object class="NSMenuItem" id="304266470">
88 <reference key="NSMenu" ref="110575045"/>
89 <bool key="NSIsDisabled">YES</bool>
90 <bool key="NSIsSeparator">YES</bool>
91 <string key="NSTitle"/>
92 <string key="NSKeyEquiv"/>
93 <int key="NSKeyEquivModMask">1048576</int>
94 <int key="NSMnemonicLoc">2147483647</int>
95 <reference key="NSOnImage" ref="35465992"/>
96 <reference key="NSMixedImage" ref="502551668"/>
97 </object>
98 <object class="NSMenuItem" id="609285721">
99 <reference key="NSMenu" ref="110575045"/>
100 <string key="NSTitle">Preferences…</string>
101 <string key="NSKeyEquiv">,</string>
102 <int key="NSKeyEquivModMask">1048576</int>
103 <int key="NSMnemonicLoc">2147483647</int>
104 <reference key="NSOnImage" ref="35465992"/>
105 <reference key="NSMixedImage" ref="502551668"/>
106 </object>
107 <object class="NSMenuItem" id="481834944">
108 <reference key="NSMenu" ref="110575045"/>
109 <bool key="NSIsDisabled">YES</bool>
110 <bool key="NSIsSeparator">YES</bool>
111 <string key="NSTitle"/>
112 <string key="NSKeyEquiv"/>
113 <int key="NSKeyEquivModMask">1048576</int>
114 <int key="NSMnemonicLoc">2147483647</int>
115 <reference key="NSOnImage" ref="35465992"/>
116 <reference key="NSMixedImage" ref="502551668"/>
117 </object>
118 <object class="NSMenuItem" id="1046388886">
119 <reference key="NSMenu" ref="110575045"/>
120 <string key="NSTitle">Services</string>
121 <string key="NSKeyEquiv"/>
122 <int key="NSKeyEquivModMask">1048576</int>
123 <int key="NSMnemonicLoc">2147483647</int>
124 <reference key="NSOnImage" ref="35465992"/>
125 <reference key="NSMixedImage" ref="502551668"/>
126 <string key="NSAction">submenuAction:</string>
127 <object class="NSMenu" key="NSSubmenu" id="752062318">
128 <string key="NSTitle">Services</string>
129 <array class="NSMutableArray" key="NSMenuItems"/>
130 <string key="NSName">_NSServicesMenu</string>
131 </object>
132 </object>
133 <object class="NSMenuItem" id="646227648">
134 <reference key="NSMenu" ref="110575045"/>
135 <bool key="NSIsDisabled">YES</bool>
136 <bool key="NSIsSeparator">YES</bool>
137 <string key="NSTitle"/>
138 <string key="NSKeyEquiv"/>
139 <int key="NSKeyEquivModMask">1048576</int>
140 <int key="NSMnemonicLoc">2147483647</int>
141 <reference key="NSOnImage" ref="35465992"/>
142 <reference key="NSMixedImage" ref="502551668"/>
143 </object>
144 <object class="NSMenuItem" id="755159360">
145 <reference key="NSMenu" ref="110575045"/>
146 <string key="NSTitle">Hide PumpKIN</string>
147 <string key="NSKeyEquiv">h</string>
148 <int key="NSKeyEquivModMask">1048576</int>
149 <int key="NSMnemonicLoc">2147483647</int>
150 <reference key="NSOnImage" ref="35465992"/>
151 <reference key="NSMixedImage" ref="502551668"/>
152 </object>
153 <object class="NSMenuItem" id="342932134">
154 <reference key="NSMenu" ref="110575045"/>
155 <string key="NSTitle">Hide Others</string>
156 <string key="NSKeyEquiv">h</string>
157 <int key="NSKeyEquivModMask">1572864</int>
158 <int key="NSMnemonicLoc">2147483647</int>
159 <reference key="NSOnImage" ref="35465992"/>
160 <reference key="NSMixedImage" ref="502551668"/>
161 </object>
162 <object class="NSMenuItem" id="908899353">
163 <reference key="NSMenu" ref="110575045"/>
164 <string key="NSTitle">Show All</string>
165 <string key="NSKeyEquiv"/>
166 <int key="NSKeyEquivModMask">1048576</int>
167 <int key="NSMnemonicLoc">2147483647</int>
168 <reference key="NSOnImage" ref="35465992"/>
169 <reference key="NSMixedImage" ref="502551668"/>
170 </object>
171 <object class="NSMenuItem" id="1056857174">
172 <reference key="NSMenu" ref="110575045"/>
173 <bool key="NSIsDisabled">YES</bool>
174 <bool key="NSIsSeparator">YES</bool>
175 <string key="NSTitle"/>
176 <string key="NSKeyEquiv"/>
177 <int key="NSKeyEquivModMask">1048576</int>
178 <int key="NSMnemonicLoc">2147483647</int>
179 <reference key="NSOnImage" ref="35465992"/>
180 <reference key="NSMixedImage" ref="502551668"/>
181 </object>
182 <object class="NSMenuItem" id="632727374">
183 <reference key="NSMenu" ref="110575045"/>
184 <string key="NSTitle">Quit PumpKIN</string>
185 <string key="NSKeyEquiv">q</string>
186 <int key="NSKeyEquivModMask">1048576</int>
187 <int key="NSMnemonicLoc">2147483647</int>
188 <reference key="NSOnImage" ref="35465992"/>
189 <reference key="NSMixedImage" ref="502551668"/>
190 </object>
191 </array>
192 <string key="NSName">_NSAppleMenu</string>
193 </object>
194 </object>
195 <object class="NSMenuItem" id="379814623">
196 <reference key="NSMenu" ref="649796088"/>
197 <string key="NSTitle">XFer</string>
198 <string key="NSKeyEquiv"/>
199 <int key="NSKeyEquivModMask">1048576</int>
200 <int key="NSMnemonicLoc">2147483647</int>
201 <reference key="NSOnImage" ref="35465992"/>
202 <reference key="NSMixedImage" ref="502551668"/>
203 <string key="NSAction">submenuAction:</string>
204 <object class="NSMenu" key="NSSubmenu" id="720053764">
205 <string key="NSTitle">XFer</string>
206 <array class="NSMutableArray" key="NSMenuItems">
207 <object class="NSMenuItem" id="869342911">
208 <reference key="NSMenu" ref="720053764"/>
209 <string key="NSTitle">Get file</string>
210 <string key="NSKeyEquiv">g</string>
211 <int key="NSKeyEquivModMask">1048576</int>
212 <int key="NSMnemonicLoc">2147483647</int>
213 <reference key="NSOnImage" ref="35465992"/>
214 <reference key="NSMixedImage" ref="502551668"/>
215 </object>
216 <object class="NSMenuItem" id="684754710">
217 <reference key="NSMenu" ref="720053764"/>
218 <string key="NSTitle">Put file</string>
219 <string key="NSKeyEquiv">p</string>
220 <int key="NSKeyEquivModMask">1048576</int>
221 <int key="NSMnemonicLoc">2147483647</int>
222 <reference key="NSOnImage" ref="35465992"/>
223 <reference key="NSMixedImage" ref="502551668"/>
224 </object>
225 <object class="NSMenuItem" id="511451131">
226 <reference key="NSMenu" ref="720053764"/>
227 <bool key="NSIsDisabled">YES</bool>
228 <bool key="NSIsSeparator">YES</bool>
229 <string key="NSTitle"/>
230 <string key="NSKeyEquiv"/>
231 <int key="NSMnemonicLoc">2147483647</int>
232 <reference key="NSOnImage" ref="35465992"/>
233 <reference key="NSMixedImage" ref="502551668"/>
234 </object>
235 <object class="NSMenuItem" id="964116338">
236 <reference key="NSMenu" ref="720053764"/>
237 <string key="NSTitle">Abort xfer</string>
238 <string key="NSKeyEquiv"/>
239 <int key="NSMnemonicLoc">2147483647</int>
240 <reference key="NSOnImage" ref="35465992"/>
241 <reference key="NSMixedImage" ref="502551668"/>
242 </object>
243 </array>
244 </object>
245 </object>
246 <object class="NSMenuItem" id="952259628">
247 <reference key="NSMenu" ref="649796088"/>
248 <string key="NSTitle">Edit</string>
249 <string key="NSKeyEquiv"/>
250 <int key="NSKeyEquivModMask">1048576</int>
251 <int key="NSMnemonicLoc">2147483647</int>
252 <reference key="NSOnImage" ref="35465992"/>
253 <reference key="NSMixedImage" ref="502551668"/>
254 <string key="NSAction">submenuAction:</string>
255 <object class="NSMenu" key="NSSubmenu" id="789758025">
256 <string key="NSTitle">Edit</string>
257 <array class="NSMutableArray" key="NSMenuItems">
258 <object class="NSMenuItem" id="1058277027">
259 <reference key="NSMenu" ref="789758025"/>
260 <string key="NSTitle">Undo</string>
261 <string key="NSKeyEquiv">z</string>
262 <int key="NSKeyEquivModMask">1048576</int>
263 <int key="NSMnemonicLoc">2147483647</int>
264 <reference key="NSOnImage" ref="35465992"/>
265 <reference key="NSMixedImage" ref="502551668"/>
266 </object>
267 <object class="NSMenuItem" id="790794224">
268 <reference key="NSMenu" ref="789758025"/>
269 <string key="NSTitle">Redo</string>
270 <string key="NSKeyEquiv">Z</string>
271 <int key="NSKeyEquivModMask">1179648</int>
272 <int key="NSMnemonicLoc">2147483647</int>
273 <reference key="NSOnImage" ref="35465992"/>
274 <reference key="NSMixedImage" ref="502551668"/>
275 </object>
276 <object class="NSMenuItem" id="1040322652">
277 <reference key="NSMenu" ref="789758025"/>
278 <bool key="NSIsDisabled">YES</bool>
279 <bool key="NSIsSeparator">YES</bool>
280 <string key="NSTitle"/>
281 <string key="NSKeyEquiv"/>
282 <int key="NSKeyEquivModMask">1048576</int>
283 <int key="NSMnemonicLoc">2147483647</int>
284 <reference key="NSOnImage" ref="35465992"/>
285 <reference key="NSMixedImage" ref="502551668"/>
286 </object>
287 <object class="NSMenuItem" id="296257095">
288 <reference key="NSMenu" ref="789758025"/>
289 <string key="NSTitle">Cut</string>
290 <string key="NSKeyEquiv">x</string>
291 <int key="NSKeyEquivModMask">1048576</int>
292 <int key="NSMnemonicLoc">2147483647</int>
293 <reference key="NSOnImage" ref="35465992"/>
294 <reference key="NSMixedImage" ref="502551668"/>
295 </object>
296 <object class="NSMenuItem" id="860595796">
297 <reference key="NSMenu" ref="789758025"/>
298 <string key="NSTitle">Copy</string>
299 <string key="NSKeyEquiv">c</string>
300 <int key="NSKeyEquivModMask">1048576</int>
301 <int key="NSMnemonicLoc">2147483647</int>
302 <reference key="NSOnImage" ref="35465992"/>
303 <reference key="NSMixedImage" ref="502551668"/>
304 </object>
305 <object class="NSMenuItem" id="29853731">
306 <reference key="NSMenu" ref="789758025"/>
307 <string key="NSTitle">Paste</string>
308 <string key="NSKeyEquiv">v</string>
309 <int key="NSKeyEquivModMask">1048576</int>
310 <int key="NSMnemonicLoc">2147483647</int>
311 <reference key="NSOnImage" ref="35465992"/>
312 <reference key="NSMixedImage" ref="502551668"/>
313 </object>
314 <object class="NSMenuItem" id="82994268">
315 <reference key="NSMenu" ref="789758025"/>
316 <string key="NSTitle">Paste and Match Style</string>
317 <string key="NSKeyEquiv">V</string>
318 <int key="NSKeyEquivModMask">1572864</int>
319 <int key="NSMnemonicLoc">2147483647</int>
320 <reference key="NSOnImage" ref="35465992"/>
321 <reference key="NSMixedImage" ref="502551668"/>
322 </object>
323 <object class="NSMenuItem" id="437104165">
324 <reference key="NSMenu" ref="789758025"/>
325 <string key="NSTitle">Delete</string>
326 <string key="NSKeyEquiv"/>
327 <int key="NSKeyEquivModMask">1048576</int>
328 <int key="NSMnemonicLoc">2147483647</int>
329 <reference key="NSOnImage" ref="35465992"/>
330 <reference key="NSMixedImage" ref="502551668"/>
331 </object>
332 <object class="NSMenuItem" id="583158037">
333 <reference key="NSMenu" ref="789758025"/>
334 <string key="NSTitle">Select All</string>
335 <string key="NSKeyEquiv">a</string>
336 <int key="NSKeyEquivModMask">1048576</int>
337 <int key="NSMnemonicLoc">2147483647</int>
338 <reference key="NSOnImage" ref="35465992"/>
339 <reference key="NSMixedImage" ref="502551668"/>
340 </object>
341 <object class="NSMenuItem" id="212016141">
342 <reference key="NSMenu" ref="789758025"/>
343 <bool key="NSIsDisabled">YES</bool>
344 <bool key="NSIsSeparator">YES</bool>
345 <string key="NSTitle"/>
346 <string key="NSKeyEquiv"/>
347 <int key="NSKeyEquivModMask">1048576</int>
348 <int key="NSMnemonicLoc">2147483647</int>
349 <reference key="NSOnImage" ref="35465992"/>
350 <reference key="NSMixedImage" ref="502551668"/>
351 </object>
352 <object class="NSMenuItem" id="892235320">
353 <reference key="NSMenu" ref="789758025"/>
354 <string key="NSTitle">Find</string>
355 <string key="NSKeyEquiv"/>
356 <int key="NSKeyEquivModMask">1048576</int>
357 <int key="NSMnemonicLoc">2147483647</int>
358 <reference key="NSOnImage" ref="35465992"/>
359 <reference key="NSMixedImage" ref="502551668"/>
360 <string key="NSAction">submenuAction:</string>
361 <object class="NSMenu" key="NSSubmenu" id="963351320">
362 <string key="NSTitle">Find</string>
363 <array class="NSMutableArray" key="NSMenuItems">
364 <object class="NSMenuItem" id="447796847">
365 <reference key="NSMenu" ref="963351320"/>
366 <string key="NSTitle">Find…</string>
367 <string key="NSKeyEquiv">f</string>
368 <int key="NSKeyEquivModMask">1048576</int>
369 <int key="NSMnemonicLoc">2147483647</int>
370 <reference key="NSOnImage" ref="35465992"/>
371 <reference key="NSMixedImage" ref="502551668"/>
372 <int key="NSTag">1</int>
373 </object>
374 <object class="NSMenuItem" id="738670835">
375 <reference key="NSMenu" ref="963351320"/>
376 <string key="NSTitle">Find and Replace…</string>
377 <string key="NSKeyEquiv">f</string>
378 <int key="NSKeyEquivModMask">1572864</int>
379 <int key="NSMnemonicLoc">2147483647</int>
380 <reference key="NSOnImage" ref="35465992"/>
381 <reference key="NSMixedImage" ref="502551668"/>
382 <int key="NSTag">12</int>
383 </object>
384 <object class="NSMenuItem" id="326711663">
385 <reference key="NSMenu" ref="963351320"/>
386 <string key="NSTitle">Find Next</string>
387 <string key="NSKeyEquiv">g</string>
388 <int key="NSKeyEquivModMask">1048576</int>
389 <int key="NSMnemonicLoc">2147483647</int>
390 <reference key="NSOnImage" ref="35465992"/>
391 <reference key="NSMixedImage" ref="502551668"/>
392 <int key="NSTag">2</int>
393 </object>
394 <object class="NSMenuItem" id="270902937">
395 <reference key="NSMenu" ref="963351320"/>
396 <string key="NSTitle">Find Previous</string>
397 <string key="NSKeyEquiv">G</string>
398 <int key="NSKeyEquivModMask">1179648</int>
399 <int key="NSMnemonicLoc">2147483647</int>
400 <reference key="NSOnImage" ref="35465992"/>
401 <reference key="NSMixedImage" ref="502551668"/>
402 <int key="NSTag">3</int>
403 </object>
404 <object class="NSMenuItem" id="159080638">
405 <reference key="NSMenu" ref="963351320"/>
406 <string key="NSTitle">Use Selection for Find</string>
407 <string key="NSKeyEquiv">e</string>
408 <int key="NSKeyEquivModMask">1048576</int>
409 <int key="NSMnemonicLoc">2147483647</int>
410 <reference key="NSOnImage" ref="35465992"/>
411 <reference key="NSMixedImage" ref="502551668"/>
412 <int key="NSTag">7</int>
413 </object>
414 <object class="NSMenuItem" id="88285865">
415 <reference key="NSMenu" ref="963351320"/>
416 <string key="NSTitle">Jump to Selection</string>
417 <string key="NSKeyEquiv">j</string>
418 <int key="NSKeyEquivModMask">1048576</int>
419 <int key="NSMnemonicLoc">2147483647</int>
420 <reference key="NSOnImage" ref="35465992"/>
421 <reference key="NSMixedImage" ref="502551668"/>
422 </object>
423 </array>
424 </object>
425 </object>
426 <object class="NSMenuItem" id="972420730">
427 <reference key="NSMenu" ref="789758025"/>
428 <string key="NSTitle">Spelling and Grammar</string>
429 <string key="NSKeyEquiv"/>
430 <int key="NSKeyEquivModMask">1048576</int>
431 <int key="NSMnemonicLoc">2147483647</int>
432 <reference key="NSOnImage" ref="35465992"/>
433 <reference key="NSMixedImage" ref="502551668"/>
434 <string key="NSAction">submenuAction:</string>
435 <object class="NSMenu" key="NSSubmenu" id="769623530">
436 <string key="NSTitle">Spelling and Grammar</string>
437 <array class="NSMutableArray" key="NSMenuItems">
438 <object class="NSMenuItem" id="679648819">
439 <reference key="NSMenu" ref="769623530"/>
440 <string key="NSTitle">Show Spelling and Grammar</string>
441 <string key="NSKeyEquiv">:</string>
442 <int key="NSKeyEquivModMask">1048576</int>
443 <int key="NSMnemonicLoc">2147483647</int>
444 <reference key="NSOnImage" ref="35465992"/>
445 <reference key="NSMixedImage" ref="502551668"/>
446 </object>
447 <object class="NSMenuItem" id="96193923">
448 <reference key="NSMenu" ref="769623530"/>
449 <string key="NSTitle">Check Document Now</string>
450 <string key="NSKeyEquiv">;</string>
451 <int key="NSKeyEquivModMask">1048576</int>
452 <int key="NSMnemonicLoc">2147483647</int>
453 <reference key="NSOnImage" ref="35465992"/>
454 <reference key="NSMixedImage" ref="502551668"/>
455 </object>
456 <object class="NSMenuItem" id="859480356">
457 <reference key="NSMenu" ref="769623530"/>
458 <bool key="NSIsDisabled">YES</bool>
459 <bool key="NSIsSeparator">YES</bool>
460 <string key="NSTitle"/>
461 <string key="NSKeyEquiv"/>
462 <int key="NSMnemonicLoc">2147483647</int>
463 <reference key="NSOnImage" ref="35465992"/>
464 <reference key="NSMixedImage" ref="502551668"/>
465 </object>
466 <object class="NSMenuItem" id="948374510">
467 <reference key="NSMenu" ref="769623530"/>
468 <string key="NSTitle">Check Spelling While Typing</string>
469 <string key="NSKeyEquiv"/>
470 <int key="NSKeyEquivModMask">1048576</int>
471 <int key="NSMnemonicLoc">2147483647</int>
472 <reference key="NSOnImage" ref="35465992"/>
473 <reference key="NSMixedImage" ref="502551668"/>
474 </object>
475 <object class="NSMenuItem" id="967646866">
476 <reference key="NSMenu" ref="769623530"/>
477 <string key="NSTitle">Check Grammar With Spelling</string>
478 <string key="NSKeyEquiv"/>
479 <int key="NSKeyEquivModMask">1048576</int>
480 <int key="NSMnemonicLoc">2147483647</int>
481 <reference key="NSOnImage" ref="35465992"/>
482 <reference key="NSMixedImage" ref="502551668"/>
483 </object>
484 <object class="NSMenuItem" id="795346622">
485 <reference key="NSMenu" ref="769623530"/>
486 <string key="NSTitle">Correct Spelling Automatically</string>
487 <string key="NSKeyEquiv"/>
488 <int key="NSMnemonicLoc">2147483647</int>
489 <reference key="NSOnImage" ref="35465992"/>
490 <reference key="NSMixedImage" ref="502551668"/>
491 </object>
492 </array>
493 </object>
494 </object>
495 <object class="NSMenuItem" id="507821607">
496 <reference key="NSMenu" ref="789758025"/>
497 <string key="NSTitle">Substitutions</string>
498 <string key="NSKeyEquiv"/>
499 <int key="NSKeyEquivModMask">1048576</int>
500 <int key="NSMnemonicLoc">2147483647</int>
501 <reference key="NSOnImage" ref="35465992"/>
502 <reference key="NSMixedImage" ref="502551668"/>
503 <string key="NSAction">submenuAction:</string>
504 <object class="NSMenu" key="NSSubmenu" id="698887838">
505 <string key="NSTitle">Substitutions</string>
506 <array class="NSMutableArray" key="NSMenuItems">
507 <object class="NSMenuItem" id="65139061">
508 <reference key="NSMenu" ref="698887838"/>
509 <string key="NSTitle">Show Substitutions</string>
510 <string key="NSKeyEquiv"/>
511 <int key="NSMnemonicLoc">2147483647</int>
512 <reference key="NSOnImage" ref="35465992"/>
513 <reference key="NSMixedImage" ref="502551668"/>
514 </object>
515 <object class="NSMenuItem" id="19036812">
516 <reference key="NSMenu" ref="698887838"/>
517 <bool key="NSIsDisabled">YES</bool>
518 <bool key="NSIsSeparator">YES</bool>
519 <string key="NSTitle"/>
520 <string key="NSKeyEquiv"/>
521 <int key="NSMnemonicLoc">2147483647</int>
522 <reference key="NSOnImage" ref="35465992"/>
523 <reference key="NSMixedImage" ref="502551668"/>
524 </object>
525 <object class="NSMenuItem" id="605118523">
526 <reference key="NSMenu" ref="698887838"/>
527 <string key="NSTitle">Smart Copy/Paste</string>
528 <string key="NSKeyEquiv">f</string>
529 <int key="NSKeyEquivModMask">1048576</int>
530 <int key="NSMnemonicLoc">2147483647</int>
531 <reference key="NSOnImage" ref="35465992"/>
532 <reference key="NSMixedImage" ref="502551668"/>
533 <int key="NSTag">1</int>
534 </object>
535 <object class="NSMenuItem" id="197661976">
536 <reference key="NSMenu" ref="698887838"/>
537 <string key="NSTitle">Smart Quotes</string>
538 <string key="NSKeyEquiv">g</string>
539 <int key="NSKeyEquivModMask">1048576</int>
540 <int key="NSMnemonicLoc">2147483647</int>
541 <reference key="NSOnImage" ref="35465992"/>
542 <reference key="NSMixedImage" ref="502551668"/>
543 <int key="NSTag">2</int>
544 </object>
545 <object class="NSMenuItem" id="672708820">
546 <reference key="NSMenu" ref="698887838"/>
547 <string key="NSTitle">Smart Dashes</string>
548 <string key="NSKeyEquiv"/>
549 <int key="NSMnemonicLoc">2147483647</int>
550 <reference key="NSOnImage" ref="35465992"/>
551 <reference key="NSMixedImage" ref="502551668"/>
552 </object>
553 <object class="NSMenuItem" id="708854459">
554 <reference key="NSMenu" ref="698887838"/>
555 <string key="NSTitle">Smart Links</string>
556 <string key="NSKeyEquiv">G</string>
557 <int key="NSKeyEquivModMask">1179648</int>
558 <int key="NSMnemonicLoc">2147483647</int>
559 <reference key="NSOnImage" ref="35465992"/>
560 <reference key="NSMixedImage" ref="502551668"/>
561 <int key="NSTag">3</int>
562 </object>
563 <object class="NSMenuItem" id="537092702">
564 <reference key="NSMenu" ref="698887838"/>
565 <string key="NSTitle">Text Replacement</string>
566 <string key="NSKeyEquiv"/>
567 <int key="NSMnemonicLoc">2147483647</int>
568 <reference key="NSOnImage" ref="35465992"/>
569 <reference key="NSMixedImage" ref="502551668"/>
570 </object>
571 </array>
572 </object>
573 </object>
574 <object class="NSMenuItem" id="288088188">
575 <reference key="NSMenu" ref="789758025"/>
576 <string key="NSTitle">Transformations</string>
577 <string key="NSKeyEquiv"/>
578 <int key="NSMnemonicLoc">2147483647</int>
579 <reference key="NSOnImage" ref="35465992"/>
580 <reference key="NSMixedImage" ref="502551668"/>
581 <string key="NSAction">submenuAction:</string>
582 <object class="NSMenu" key="NSSubmenu" id="579392910">
583 <string key="NSTitle">Transformations</string>
584 <array class="NSMutableArray" key="NSMenuItems">
585 <object class="NSMenuItem" id="1060694897">
586 <reference key="NSMenu" ref="579392910"/>
587 <string key="NSTitle">Make Upper Case</string>
588 <string key="NSKeyEquiv"/>
589 <int key="NSMnemonicLoc">2147483647</int>
590 <reference key="NSOnImage" ref="35465992"/>
591 <reference key="NSMixedImage" ref="502551668"/>
592 </object>
593 <object class="NSMenuItem" id="879586729">
594 <reference key="NSMenu" ref="579392910"/>
595 <string key="NSTitle">Make Lower Case</string>
596 <string key="NSKeyEquiv"/>
597 <int key="NSMnemonicLoc">2147483647</int>
598 <reference key="NSOnImage" ref="35465992"/>
599 <reference key="NSMixedImage" ref="502551668"/>
600 </object>
601 <object class="NSMenuItem" id="56570060">
602 <reference key="NSMenu" ref="579392910"/>
603 <string key="NSTitle">Capitalize</string>
604 <string key="NSKeyEquiv"/>
605 <int key="NSMnemonicLoc">2147483647</int>
606 <reference key="NSOnImage" ref="35465992"/>
607 <reference key="NSMixedImage" ref="502551668"/>
608 </object>
609 </array>
610 </object>
611 </object>
612 <object class="NSMenuItem" id="676164635">
613 <reference key="NSMenu" ref="789758025"/>
614 <string key="NSTitle">Speech</string>
615 <string key="NSKeyEquiv"/>
616 <int key="NSKeyEquivModMask">1048576</int>
617 <int key="NSMnemonicLoc">2147483647</int>
618 <reference key="NSOnImage" ref="35465992"/>
619 <reference key="NSMixedImage" ref="502551668"/>
620 <string key="NSAction">submenuAction:</string>
621 <object class="NSMenu" key="NSSubmenu" id="785027613">
622 <string key="NSTitle">Speech</string>
623 <array class="NSMutableArray" key="NSMenuItems">
624 <object class="NSMenuItem" id="731782645">
625 <reference key="NSMenu" ref="785027613"/>
626 <string key="NSTitle">Start Speaking</string>
627 <string key="NSKeyEquiv"/>
628 <int key="NSKeyEquivModMask">1048576</int>
629 <int key="NSMnemonicLoc">2147483647</int>
630 <reference key="NSOnImage" ref="35465992"/>
631 <reference key="NSMixedImage" ref="502551668"/>
632 </object>
633 <object class="NSMenuItem" id="680220178">
634 <reference key="NSMenu" ref="785027613"/>
635 <string key="NSTitle">Stop Speaking</string>
636 <string key="NSKeyEquiv"/>
637 <int key="NSKeyEquivModMask">1048576</int>
638 <int key="NSMnemonicLoc">2147483647</int>
639 <reference key="NSOnImage" ref="35465992"/>
640 <reference key="NSMixedImage" ref="502551668"/>
641 </object>
642 </array>
643 </object>
644 </object>
645 </array>
646 </object>
647 </object>
648 <object class="NSMenuItem" id="586577488">
649 <reference key="NSMenu" ref="649796088"/>
650 <string key="NSTitle">View</string>
651 <string key="NSKeyEquiv"/>
652 <int key="NSKeyEquivModMask">1048576</int>
653 <int key="NSMnemonicLoc">2147483647</int>
654 <reference key="NSOnImage" ref="35465992"/>
655 <reference key="NSMixedImage" ref="502551668"/>
656 <string key="NSAction">submenuAction:</string>
657 <object class="NSMenu" key="NSSubmenu" id="466310130">
658 <string key="NSTitle">View</string>
659 <array class="NSMutableArray" key="NSMenuItems">
660 <object class="NSMenuItem" id="102151532">
661 <reference key="NSMenu" ref="466310130"/>
662 <string key="NSTitle">Show Toolbar</string>
663 <string key="NSKeyEquiv">t</string>
664 <int key="NSKeyEquivModMask">1572864</int>
665 <int key="NSMnemonicLoc">2147483647</int>
666 <reference key="NSOnImage" ref="35465992"/>
667 <reference key="NSMixedImage" ref="502551668"/>
668 </object>
669 <object class="NSMenuItem" id="237841660">
670 <reference key="NSMenu" ref="466310130"/>
671 <string key="NSTitle">Customize Toolbar…</string>
672 <string key="NSKeyEquiv"/>
673 <int key="NSKeyEquivModMask">1048576</int>
674 <int key="NSMnemonicLoc">2147483647</int>
675 <reference key="NSOnImage" ref="35465992"/>
676 <reference key="NSMixedImage" ref="502551668"/>
677 </object>
678 </array>
679 </object>
680 </object>
681 <object class="NSMenuItem" id="713487014">
682 <reference key="NSMenu" ref="649796088"/>
683 <string key="NSTitle">Window</string>
684 <string key="NSKeyEquiv"/>
685 <int key="NSKeyEquivModMask">1048576</int>
686 <int key="NSMnemonicLoc">2147483647</int>
687 <reference key="NSOnImage" ref="35465992"/>
688 <reference key="NSMixedImage" ref="502551668"/>
689 <string key="NSAction">submenuAction:</string>
690 <object class="NSMenu" key="NSSubmenu" id="835318025">
691 <string key="NSTitle">Window</string>
692 <array class="NSMutableArray" key="NSMenuItems">
693 <object class="NSMenuItem" id="1011231497">
694 <reference key="NSMenu" ref="835318025"/>
695 <string key="NSTitle">Minimize</string>
696 <string key="NSKeyEquiv">m</string>
697 <int key="NSKeyEquivModMask">1048576</int>
698 <int key="NSMnemonicLoc">2147483647</int>
699 <reference key="NSOnImage" ref="35465992"/>
700 <reference key="NSMixedImage" ref="502551668"/>
701 </object>
702 <object class="NSMenuItem" id="575023229">
703 <reference key="NSMenu" ref="835318025"/>
704 <string key="NSTitle">Zoom</string>
705 <string key="NSKeyEquiv"/>
706 <int key="NSKeyEquivModMask">1048576</int>
707 <int key="NSMnemonicLoc">2147483647</int>
708 <reference key="NSOnImage" ref="35465992"/>
709 <reference key="NSMixedImage" ref="502551668"/>
710 </object>
711 <object class="NSMenuItem" id="299356726">
712 <reference key="NSMenu" ref="835318025"/>
713 <bool key="NSIsDisabled">YES</bool>
714 <bool key="NSIsSeparator">YES</bool>
715 <string key="NSTitle"/>
716 <string key="NSKeyEquiv"/>
717 <int key="NSKeyEquivModMask">1048576</int>
718 <int key="NSMnemonicLoc">2147483647</int>
719 <reference key="NSOnImage" ref="35465992"/>
720 <reference key="NSMixedImage" ref="502551668"/>
721 </object>
722 <object class="NSMenuItem" id="625202149">
723 <reference key="NSMenu" ref="835318025"/>
724 <string key="NSTitle">Bring All to Front</string>
725 <string key="NSKeyEquiv"/>
726 <int key="NSKeyEquivModMask">1048576</int>
727 <int key="NSMnemonicLoc">2147483647</int>
728 <reference key="NSOnImage" ref="35465992"/>
729 <reference key="NSMixedImage" ref="502551668"/>
730 </object>
731 </array>
732 <string key="NSName">_NSWindowsMenu</string>
733 </object>
734 </object>
735 <object class="NSMenuItem" id="448692316">
736 <reference key="NSMenu" ref="649796088"/>
737 <bool key="NSIsHidden">YES</bool>
738 <string key="NSTitle">Help</string>
739 <string key="NSKeyEquiv"/>
740 <int key="NSMnemonicLoc">2147483647</int>
741 <reference key="NSOnImage" ref="35465992"/>
742 <reference key="NSMixedImage" ref="502551668"/>
743 <string key="NSAction">submenuAction:</string>
744 <object class="NSMenu" key="NSSubmenu" id="992780483">
745 <string key="NSTitle">Help</string>
746 <array class="NSMutableArray" key="NSMenuItems">
747 <object class="NSMenuItem" id="105068016">
748 <reference key="NSMenu" ref="992780483"/>
749 <string key="NSTitle">PumpKIN Help</string>
750 <string key="NSKeyEquiv">?</string>
751 <int key="NSKeyEquivModMask">1048576</int>
752 <int key="NSMnemonicLoc">2147483647</int>
753 <reference key="NSOnImage" ref="35465992"/>
754 <reference key="NSMixedImage" ref="502551668"/>
755 </object>
756 </array>
757 <string key="NSName">_NSHelpMenu</string>
758 </object>
759 </object>
760 </array>
761 <string key="NSName">_NSMainMenu</string>
762 </object>
763 <object class="NSWindowTemplate" id="972006081">
764 <int key="NSWindowStyleMask">15</int>
765 <int key="NSWindowBacking">2</int>
766 <string key="NSWindowRect">{{335, 390}, {600, 322}}</string>
767 <int key="NSWTFlags">1954021376</int>
768 <string key="NSWindowTitle">PumpKIN</string>
769 <string key="NSWindowClass">NSWindow</string>
770 <object class="NSToolbar" key="NSViewClass" id="185334702">
771 <object class="NSMutableString" key="NSToolbarIdentifier">
772 <characters key="NS.bytes">348FD175-E511-41B0-AC1C-205ED57FC50B</characters>
773 </object>
774 <nil key="NSToolbarDelegate"/>
775 <bool key="NSToolbarPrefersToBeShown">YES</bool>
776 <bool key="NSToolbarShowsBaselineSeparator">YES</bool>
777 <bool key="NSToolbarAllowsUserCustomization">YES</bool>
778 <bool key="NSToolbarAutosavesConfiguration">NO</bool>
779 <int key="NSToolbarDisplayMode">1</int>
780 <int key="NSToolbarSizeMode">2</int>
781 <dictionary class="NSMutableDictionary" key="NSToolbarIBIdentifiedItems">
782 <object class="NSToolbarItem" key="6D17B806-047D-4E35-9CBF-FA07113768DF" id="1051457108">
783 <object class="NSMutableString" key="NSToolbarItemIdentifier">
784 <characters key="NS.bytes">6D17B806-047D-4E35-9CBF-FA07113768DF</characters>
785 </object>
786 <string key="NSToolbarItemLabel">Abort xfer</string>
787 <string key="NSToolbarItemPaletteLabel">Abort xfer</string>
788 <string key="NSToolbarItemToolTip">Cancel transfer in progress.</string>
789 <nil key="NSToolbarItemView"/>
790 <object class="NSCustomResource" key="NSToolbarItemImage">
791 <string key="NSClassName">NSImage</string>
792 <string key="NSResourceName">abort</string>
793 </object>
794 <nil key="NSToolbarItemTarget"/>
795 <nil key="NSToolbarItemAction"/>
796 <string key="NSToolbarItemMinSize">{0, 0}</string>
797 <string key="NSToolbarItemMaxSize">{0, 0}</string>
798 <bool key="NSToolbarItemEnabled">YES</bool>
799 <bool key="NSToolbarItemAutovalidates">YES</bool>
800 <int key="NSToolbarItemTag">-1</int>
801 <bool key="NSToolbarIsUserRemovable">YES</bool>
802 <int key="NSToolbarItemVisibilityPriority">0</int>
803 </object>
804 <object class="NSToolbarItem" key="7587C7D2-FAE0-4AF7-9DDB-64F34C45BD11" id="163657319">
805 <object class="NSMutableString" key="NSToolbarItemIdentifier">
806 <characters key="NS.bytes">7587C7D2-FAE0-4AF7-9DDB-64F34C45BD11</characters>
807 </object>
808 <string key="NSToolbarItemLabel">Put file</string>
809 <string key="NSToolbarItemPaletteLabel">Put file</string>
810 <string key="NSToolbarItemToolTip">Initiate WRQ request.</string>
811 <nil key="NSToolbarItemView"/>
812 <object class="NSCustomResource" key="NSToolbarItemImage">
813 <string key="NSClassName">NSImage</string>
814 <string key="NSResourceName">put</string>
815 </object>
816 <nil key="NSToolbarItemTarget"/>
817 <nil key="NSToolbarItemAction"/>
818 <string key="NSToolbarItemMinSize">{0, 0}</string>
819 <string key="NSToolbarItemMaxSize">{0, 0}</string>
820 <bool key="NSToolbarItemEnabled">YES</bool>
821 <bool key="NSToolbarItemAutovalidates">YES</bool>
822 <int key="NSToolbarItemTag">-1</int>
823 <bool key="NSToolbarIsUserRemovable">YES</bool>
824 <int key="NSToolbarItemVisibilityPriority">0</int>
825 </object>
826 <object class="NSToolbarItem" key="FAB1C64D-0CC8-46A0-815A-6423AD586E28" id="210005870">
827 <object class="NSMutableString" key="NSToolbarItemIdentifier">
828 <characters key="NS.bytes">FAB1C64D-0CC8-46A0-815A-6423AD586E28</characters>
829 </object>
830 <string key="NSToolbarItemLabel">Get file</string>
831 <string key="NSToolbarItemPaletteLabel">Get file</string>
832 <string key="NSToolbarItemToolTip">Initiate RRQ request.</string>
833 <nil key="NSToolbarItemView"/>
834 <object class="NSCustomResource" key="NSToolbarItemImage">
835 <string key="NSClassName">NSImage</string>
836 <string key="NSResourceName">get</string>
837 </object>
838 <nil key="NSToolbarItemTarget"/>
839 <nil key="NSToolbarItemAction"/>
840 <string key="NSToolbarItemMinSize">{0, 0}</string>
841 <string key="NSToolbarItemMaxSize">{0, 0}</string>
842 <bool key="NSToolbarItemEnabled">YES</bool>
843 <bool key="NSToolbarItemAutovalidates">YES</bool>
844 <int key="NSToolbarItemTag">-1</int>
845 <bool key="NSToolbarIsUserRemovable">YES</bool>
846 <int key="NSToolbarItemVisibilityPriority">0</int>
847 </object>
848 <object class="NSToolbarFlexibleSpaceItem" key="NSToolbarFlexibleSpaceItem" id="106903695">
849 <string key="NSToolbarItemIdentifier">NSToolbarFlexibleSpaceItem</string>
850 <string key="NSToolbarItemLabel"/>
851 <string key="NSToolbarItemPaletteLabel">Flexible Space</string>
852 <nil key="NSToolbarItemToolTip"/>
853 <nil key="NSToolbarItemView"/>
854 <nil key="NSToolbarItemImage"/>
855 <nil key="NSToolbarItemTarget"/>
856 <nil key="NSToolbarItemAction"/>
857 <string key="NSToolbarItemMinSize">{1, 5}</string>
858 <string key="NSToolbarItemMaxSize">{20000, 32}</string>
859 <bool key="NSToolbarItemEnabled">YES</bool>
860 <bool key="NSToolbarItemAutovalidates">YES</bool>
861 <int key="NSToolbarItemTag">-1</int>
862 <bool key="NSToolbarIsUserRemovable">YES</bool>
863 <int key="NSToolbarItemVisibilityPriority">0</int>
864 <object class="NSMenuItem" key="NSToolbarItemMenuFormRepresentation">
865 <bool key="NSIsDisabled">YES</bool>
866 <bool key="NSIsSeparator">YES</bool>
867 <string key="NSTitle"/>
868 <string key="NSKeyEquiv"/>
869 <int key="NSKeyEquivModMask">1048576</int>
870 <int key="NSMnemonicLoc">2147483647</int>
871 <reference key="NSOnImage" ref="35465992"/>
872 <reference key="NSMixedImage" ref="502551668"/>
873 </object>
874 </object>
875 <object class="NSToolbarSpaceItem" key="NSToolbarSpaceItem" id="166245072">
876 <string key="NSToolbarItemIdentifier">NSToolbarSpaceItem</string>
877 <string key="NSToolbarItemLabel"/>
878 <string key="NSToolbarItemPaletteLabel">Space</string>
879 <nil key="NSToolbarItemToolTip"/>
880 <nil key="NSToolbarItemView"/>
881 <nil key="NSToolbarItemImage"/>
882 <nil key="NSToolbarItemTarget"/>
883 <nil key="NSToolbarItemAction"/>
884 <string key="NSToolbarItemMinSize">{32, 5}</string>
885 <string key="NSToolbarItemMaxSize">{32, 32}</string>
886 <bool key="NSToolbarItemEnabled">YES</bool>
887 <bool key="NSToolbarItemAutovalidates">YES</bool>
888 <int key="NSToolbarItemTag">-1</int>
889 <bool key="NSToolbarIsUserRemovable">YES</bool>
890 <int key="NSToolbarItemVisibilityPriority">0</int>
891 <object class="NSMenuItem" key="NSToolbarItemMenuFormRepresentation">
892 <bool key="NSIsDisabled">YES</bool>
893 <bool key="NSIsSeparator">YES</bool>
894 <string key="NSTitle"/>
895 <string key="NSKeyEquiv"/>
896 <int key="NSKeyEquivModMask">1048576</int>
897 <int key="NSMnemonicLoc">2147483647</int>
898 <reference key="NSOnImage" ref="35465992"/>
899 <reference key="NSMixedImage" ref="502551668"/>
900 </object>
901 </object>
902 </dictionary>
903 <array key="NSToolbarIBAllowedItems">
904 <reference ref="210005870"/>
905 <reference ref="163657319"/>
906 <reference ref="1051457108"/>
907 <reference ref="166245072"/>
908 <reference ref="106903695"/>
909 </array>
910 <array key="NSToolbarIBDefaultItems">
911 <reference ref="210005870"/>
912 <reference ref="163657319"/>
913 <reference ref="1051457108"/>
914 <reference ref="166245072"/>
915 <reference ref="106903695"/>
916 </array>
917 <array key="NSToolbarIBSelectableItems" id="0"/>
918 </object>
919 <nil key="NSUserInterfaceItemIdentifier"/>
920 <string key="NSWindowContentMinSize">{492, 200}</string>
921 <object class="NSView" key="NSWindowView" id="439893737">
922 <nil key="NSNextResponder"/>
923 <int key="NSvFlags">256</int>
924 <array class="NSMutableArray" key="NSSubviews">
925 <object class="NSSplitView" id="250587056">
926 <reference key="NSNextResponder" ref="439893737"/>
927 <int key="NSvFlags">274</int>
928 <array class="NSMutableArray" key="NSSubviews">
929 <object class="NSCustomView" id="328183451">
930 <reference key="NSNextResponder" ref="250587056"/>
931 <int key="NSvFlags">256</int>
932 <array class="NSMutableArray" key="NSSubviews">
933 <object class="NSScrollView" id="192988542">
934 <reference key="NSNextResponder" ref="328183451"/>
935 <int key="NSvFlags">274</int>
936 <array class="NSMutableArray" key="NSSubviews">
937 <object class="NSClipView" id="790409929">
938 <reference key="NSNextResponder" ref="192988542"/>
939 <int key="NSvFlags">2304</int>
940 <array class="NSMutableArray" key="NSSubviews">
941 <object class="NSTableView" id="45603544">
942 <reference key="NSNextResponder" ref="790409929"/>
943 <int key="NSvFlags">256</int>
944 <string key="NSFrameSize">{568, 115}</string>
945 <reference key="NSSuperview" ref="790409929"/>
946 <reference key="NSNextKeyView" ref="862834072"/>
947 <string key="NSReuseIdentifierKey">_NS:1197</string>
948 <bool key="NSEnabled">YES</bool>
949 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
950 <bool key="NSControlAllowsExpansionToolTips">YES</bool>
951 <object class="NSTableHeaderView" key="NSHeaderView" id="1022673745">
952 <reference key="NSNextResponder" ref="862834072"/>
953 <int key="NSvFlags">256</int>
954 <string key="NSFrameSize">{568, 17}</string>
955 <reference key="NSSuperview" ref="862834072"/>
956 <reference key="NSNextKeyView" ref="790409929"/>
957 <string key="NSReuseIdentifierKey">_NS:1199</string>
958 <reference key="NSTableView" ref="45603544"/>
959 </object>
960 <object class="_NSCornerView" key="NSCornerView">
961 <nil key="NSNextResponder"/>
962 <int key="NSvFlags">-2147483392</int>
963 <string key="NSFrame">{{224, 0}, {16, 17}}</string>
964 <string key="NSReuseIdentifierKey">_NS:1202</string>
965 </object>
966 <array class="NSMutableArray" key="NSTableColumns">
967 <object class="NSTableColumn" id="919343863">
968 <string key="NSIdentifier">fileName</string>
969 <double key="NSWidth">235</double>
970 <double key="NSMinWidth">40</double>
971 <double key="NSMaxWidth">1000</double>
972 <object class="NSTableHeaderCell" key="NSHeaderCell">
973 <int key="NSCellFlags">75497536</int>
974 <int key="NSCellFlags2">2048</int>
975 <string key="NSContents">file</string>
976 <object class="NSFont" key="NSSupport" id="26">
977 <string key="NSName">LucidaGrande</string>
978 <double key="NSSize">11</double>
979 <int key="NSfFlags">3100</int>
980 </object>
981 <object class="NSColor" key="NSBackgroundColor" id="1015974014">
982 <int key="NSColorSpace">3</int>
983 <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
984 </object>
985 <object class="NSColor" key="NSTextColor" id="778577558">
986 <int key="NSColorSpace">6</int>
987 <string key="NSCatalogName">System</string>
988 <string key="NSColorName">headerTextColor</string>
989 <object class="NSColor" key="NSColor" id="515582523">
990 <int key="NSColorSpace">3</int>
991 <bytes key="NSWhite">MAA</bytes>
992 </object>
993 </object>
994 </object>
995 <object class="NSTextFieldCell" key="NSDataCell" id="967877425">
996 <int key="NSCellFlags">337641536</int>
997 <int key="NSCellFlags2">2048</int>
998 <string key="NSContents">Text Cell</string>
999 <object class="NSFont" key="NSSupport" id="809233629">
1000 <string key="NSName">LucidaGrande</string>
1001 <double key="NSSize">13</double>
1002 <int key="NSfFlags">1044</int>
1003 </object>
1004 <reference key="NSControlView" ref="45603544"/>
1005 <object class="NSColor" key="NSBackgroundColor" id="933857092">
1006 <int key="NSColorSpace">6</int>
1007 <string key="NSCatalogName">System</string>
1008 <string key="NSColorName">controlBackgroundColor</string>
1009 <object class="NSColor" key="NSColor" id="591163410">
1010 <int key="NSColorSpace">3</int>
1011 <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
1012 </object>
1013 </object>
1014 <object class="NSColor" key="NSTextColor" id="210721017">
1015 <int key="NSColorSpace">6</int>
1016 <string key="NSCatalogName">System</string>
1017 <string key="NSColorName">controlTextColor</string>
1018 <reference key="NSColor" ref="515582523"/>
1019 </object>
1020 </object>
1021 <int key="NSResizingMask">3</int>
1022 <bool key="NSIsResizeable">YES</bool>
1023 <reference key="NSTableView" ref="45603544"/>
1024 </object>
1025 <object class="NSTableColumn" id="1044915056">
1026 <string key="NSIdentifier">xferType</string>
1027 <double key="NSWidth">40</double>
1028 <double key="NSMinWidth">40</double>
1029 <double key="NSMaxWidth">1000</double>
1030 <object class="NSTableHeaderCell" key="NSHeaderCell">
1031 <int key="NSCellFlags">75497536</int>
1032 <int key="NSCellFlags2">134219776</int>
1033 <string key="NSContents">type</string>
1034 <reference key="NSSupport" ref="26"/>
1035 <reference key="NSBackgroundColor" ref="1015974014"/>
1036 <reference key="NSTextColor" ref="778577558"/>
1037 </object>
1038 <object class="NSTextFieldCell" key="NSDataCell" id="1061781149">
1039 <int key="NSCellFlags">67108928</int>
1040 <int key="NSCellFlags2">2048</int>
1041 <string key="NSContents">Text Cell</string>
1042 <reference key="NSSupport" ref="809233629"/>
1043 <reference key="NSControlView" ref="45603544"/>
1044 <reference key="NSBackgroundColor" ref="933857092"/>
1045 <reference key="NSTextColor" ref="210721017"/>
1046 </object>
1047 <int key="NSResizingMask">3</int>
1048 <bool key="NSIsResizeable">YES</bool>
1049 <reference key="NSTableView" ref="45603544"/>
1050 <string key="NSHeaderToolTip">TFTP transfer type.</string>
1051 </object>
1052 <object class="NSTableColumn" id="431807415">
1053 <string key="NSIdentifier">peerAddress</string>
1054 <double key="NSWidth">150</double>
1055 <double key="NSMinWidth">10</double>
1056 <double key="NSMaxWidth">3.4028234663852886e+38</double>
1057 <object class="NSTableHeaderCell" key="NSHeaderCell">
1058 <int key="NSCellFlags">75497536</int>
1059 <int key="NSCellFlags2">134219776</int>
1060 <string key="NSContents">peer</string>
1061 <reference key="NSSupport" ref="26"/>
1062 <object class="NSColor" key="NSBackgroundColor" id="459346940">
1063 <int key="NSColorSpace">6</int>
1064 <string key="NSCatalogName">System</string>
1065 <string key="NSColorName">headerColor</string>
1066 <object class="NSColor" key="NSColor" id="771510757">
1067 <int key="NSColorSpace">3</int>
1068 <bytes key="NSWhite">MQA</bytes>
1069 </object>
1070 </object>
1071 <reference key="NSTextColor" ref="778577558"/>
1072 </object>
1073 <object class="NSTextFieldCell" key="NSDataCell" id="762484653">
1074 <int key="NSCellFlags">67108928</int>
1075 <int key="NSCellFlags2">2048</int>
1076 <string key="NSContents">Text Cell</string>
1077 <reference key="NSSupport" ref="809233629"/>
1078 <reference key="NSControlView" ref="45603544"/>
1079 <reference key="NSBackgroundColor" ref="933857092"/>
1080 <reference key="NSTextColor" ref="210721017"/>
1081 </object>
1082 <int key="NSResizingMask">3</int>
1083 <bool key="NSIsResizeable">YES</bool>
1084 <reference key="NSTableView" ref="45603544"/>
1085 <string key="NSHeaderToolTip">Peer address.</string>
1086 </object>
1087 <object class="NSTableColumn" id="644944854">
1088 <string key="NSIdentifier">ackBytes</string>
1089 <double key="NSWidth">64</double>
1090 <double key="NSMinWidth">10</double>
1091 <double key="NSMaxWidth">3.4028234663852886e+38</double>
1092 <object class="NSTableHeaderCell" key="NSHeaderCell">
1093 <int key="NSCellFlags">75497536</int>
1094 <int key="NSCellFlags2">134219776</int>
1095 <string key="NSContents">ACK</string>
1096 <reference key="NSSupport" ref="26"/>
1097 <reference key="NSBackgroundColor" ref="459346940"/>
1098 <reference key="NSTextColor" ref="778577558"/>
1099 </object>
1100 <object class="NSTextFieldCell" key="NSDataCell" id="730146075">
1101 <int key="NSCellFlags">67108928</int>
1102 <int key="NSCellFlags2">67110912</int>
1103 <string key="NSContents">Text Cell</string>
1104 <reference key="NSSupport" ref="809233629"/>
1105 <reference key="NSControlView" ref="45603544"/>
1106 <reference key="NSBackgroundColor" ref="933857092"/>
1107 <reference key="NSTextColor" ref="210721017"/>
1108 </object>
1109 <int key="NSResizingMask">3</int>
1110 <bool key="NSIsResizeable">YES</bool>
1111 <reference key="NSTableView" ref="45603544"/>
1112 <string key="NSHeaderToolTip">Acknowledged (transferred) portion size.</string>
1113 </object>
1114 <object class="NSTableColumn" id="780404863">
1115 <string key="NSIdentifier">xferSize</string>
1116 <double key="NSWidth">64</double>
1117 <double key="NSMinWidth">10</double>
1118 <double key="NSMaxWidth">3.4028234663852886e+38</double>
1119 <object class="NSTableHeaderCell" key="NSHeaderCell">
1120 <int key="NSCellFlags">75497536</int>
1121 <int key="NSCellFlags2">134219776</int>
1122 <string key="NSContents">size</string>
1123 <reference key="NSSupport" ref="26"/>
1124 <reference key="NSBackgroundColor" ref="459346940"/>
1125 <reference key="NSTextColor" ref="778577558"/>
1126 </object>
1127 <object class="NSTextFieldCell" key="NSDataCell" id="475925037">
1128 <int key="NSCellFlags">67108928</int>
1129 <int key="NSCellFlags2">67110912</int>
1130 <string key="NSContents">Text Cell</string>
1131 <reference key="NSSupport" ref="809233629"/>
1132 <reference key="NSControlView" ref="45603544"/>
1133 <reference key="NSBackgroundColor" ref="933857092"/>
1134 <reference key="NSTextColor" ref="210721017"/>
1135 </object>
1136 <int key="NSResizingMask">3</int>
1137 <bool key="NSIsResizeable">YES</bool>
1138 <reference key="NSTableView" ref="45603544"/>
1139 <string key="NSHeaderToolTip">Total file size.</string>
1140 </object>
1141 </array>
1142 <double key="NSIntercellSpacingWidth">3</double>
1143 <double key="NSIntercellSpacingHeight">2</double>
1144 <reference key="NSBackgroundColor" ref="771510757"/>
1145 <object class="NSColor" key="NSGridColor">
1146 <int key="NSColorSpace">6</int>
1147 <string key="NSCatalogName">System</string>
1148 <string key="NSColorName">gridColor</string>
1149 <object class="NSColor" key="NSColor" id="288383301">
1150 <int key="NSColorSpace">3</int>
1151 <bytes key="NSWhite">MC41AA</bytes>
1152 </object>
1153 </object>
1154 <double key="NSRowHeight">17</double>
1155 <int key="NSTvFlags">-750780416</int>
1156 <reference key="NSDelegate"/>
1157 <reference key="NSDataSource"/>
1158 <int key="NSColumnAutoresizingStyle">5</int>
1159 <int key="NSDraggingSourceMaskForLocal">15</int>
1160 <int key="NSDraggingSourceMaskForNonLocal">0</int>
1161 <bool key="NSAllowsTypeSelect">YES</bool>
1162 <int key="NSTableViewDraggingDestinationStyle">0</int>
1163 <int key="NSTableViewGroupRowStyle">1</int>
1164 </object>
1165 </array>
1166 <string key="NSFrame">{{1, 17}, {568, 115}}</string>
1167 <reference key="NSSuperview" ref="192988542"/>
1168 <reference key="NSNextKeyView" ref="45603544"/>
1169 <string key="NSReuseIdentifierKey">_NS:1195</string>
1170 <reference key="NSDocView" ref="45603544"/>
1171 <reference key="NSBGColor" ref="933857092"/>
1172 <int key="NScvFlags">4</int>
1173 </object>
1174 <object class="NSScroller" id="600095476">
1175 <reference key="NSNextResponder" ref="192988542"/>
1176 <int key="NSvFlags">-2147483392</int>
1177 <string key="NSFrame">{{224, 17}, {15, 102}}</string>
1178 <reference key="NSSuperview" ref="192988542"/>
1179 <reference key="NSNextKeyView" ref="427087625"/>
1180 <string key="NSReuseIdentifierKey">_NS:1214</string>
1181 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1182 <reference key="NSTarget" ref="192988542"/>
1183 <string key="NSAction">_doScroller:</string>
1184 <double key="NSCurValue">37</double>
1185 <double key="NSPercent">0.1947367936372757</double>
1186 </object>
1187 <object class="NSScroller" id="1046047013">
1188 <reference key="NSNextResponder" ref="192988542"/>
1189 <int key="NSvFlags">-2147483392</int>
1190 <string key="NSFrame">{{1, 118}, {568, 15}}</string>
1191 <reference key="NSSuperview" ref="192988542"/>
1192 <reference key="NSNextKeyView" ref="600095476"/>
1193 <string key="NSReuseIdentifierKey">_NS:1216</string>
1194 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1195 <int key="NSsFlags">1</int>
1196 <reference key="NSTarget" ref="192988542"/>
1197 <string key="NSAction">_doScroller:</string>
1198 <double key="NSPercent">0.99824253075571179</double>
1199 </object>
1200 <object class="NSClipView" id="862834072">
1201 <reference key="NSNextResponder" ref="192988542"/>
1202 <int key="NSvFlags">2304</int>
1203 <array class="NSMutableArray" key="NSSubviews">
1204 <reference ref="1022673745"/>
1205 </array>
1206 <string key="NSFrame">{{1, 0}, {568, 17}}</string>
1207 <reference key="NSSuperview" ref="192988542"/>
1208 <reference key="NSNextKeyView" ref="1022673745"/>
1209 <string key="NSReuseIdentifierKey">_NS:1200</string>
1210 <reference key="NSDocView" ref="1022673745"/>
1211 <reference key="NSBGColor" ref="933857092"/>
1212 <int key="NScvFlags">4</int>
1213 </object>
1214 </array>
1215 <string key="NSFrameSize">{570, 133}</string>
1216 <reference key="NSSuperview" ref="328183451"/>
1217 <reference key="NSNextKeyView" ref="790409929"/>
1218 <string key="NSReuseIdentifierKey">_NS:1193</string>
1219 <int key="NSsFlags">133682</int>
1220 <reference key="NSVScroller" ref="600095476"/>
1221 <reference key="NSHScroller" ref="1046047013"/>
1222 <reference key="NSContentView" ref="790409929"/>
1223 <reference key="NSHeaderClipView" ref="862834072"/>
1224 <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
1225 <double key="NSMinMagnification">0.25</double>
1226 <double key="NSMaxMagnification">4</double>
1227 <double key="NSMagnification">1</double>
1228 </object>
1229 </array>
1230 <string key="NSFrameSize">{570, 133}</string>
1231 <reference key="NSSuperview" ref="250587056"/>
1232 <reference key="NSNextKeyView" ref="192988542"/>
1233 <string key="NSReuseIdentifierKey">_NS:547</string>
1234 <string key="NSClassName">NSView</string>
1235 </object>
1236 <object class="NSCustomView" id="427087625">
1237 <reference key="NSNextResponder" ref="250587056"/>
1238 <int key="NSvFlags">256</int>
1239 <array class="NSMutableArray" key="NSSubviews">
1240 <object class="NSScrollView" id="356109671">
1241 <reference key="NSNextResponder" ref="427087625"/>
1242 <int key="NSvFlags">274</int>
1243 <array class="NSMutableArray" key="NSSubviews">
1244 <object class="NSClipView" id="105628437">
1245 <reference key="NSNextResponder" ref="356109671"/>
1246 <int key="NSvFlags">2304</int>
1247 <array class="NSMutableArray" key="NSSubviews">
1248 <object class="NSTextView" id="827877557">
1249 <reference key="NSNextResponder" ref="105628437"/>
1250 <int key="NSvFlags">2322</int>
1251 <string key="NSFrameSize">{568, 130}</string>
1252 <reference key="NSSuperview" ref="105628437"/>
1253 <reference key="NSNextKeyView" ref="4720790"/>
1254 <string key="NSReuseIdentifierKey">_NS:3760</string>
1255 <object class="NSTextContainer" key="NSTextContainer" id="398997119">
1256 <object class="NSLayoutManager" key="NSLayoutManager">
1257 <object class="NSTextStorage" key="NSTextStorage">
1258 <object class="NSMutableString" key="NSString">
1259 <characters key="NS.bytes"/>
1260 </object>
1261 <nil key="NSDelegate"/>
1262 </object>
1263 <array class="NSMutableArray" key="NSTextContainers">
1264 <reference ref="398997119"/>
1265 </array>
1266 <int key="NSLMFlags">38</int>
1267 <nil key="NSDelegate"/>
1268 </object>
1269 <reference key="NSTextView" ref="827877557"/>
1270 <double key="NSWidth">568</double>
1271 <int key="NSTCFlags">1</int>
1272 </object>
1273 <object class="NSTextViewSharedData" key="NSSharedData">
1274 <int key="NSFlags">67119877</int>
1275 <int key="NSTextCheckingTypes">0</int>
1276 <nil key="NSMarkedAttributes"/>
1277 <reference key="NSBackgroundColor" ref="771510757"/>
1278 <dictionary key="NSSelectedAttributes">
1279 <object class="NSColor" key="NSBackgroundColor">
1280 <int key="NSColorSpace">6</int>
1281 <string key="NSCatalogName">System</string>
1282 <string key="NSColorName">selectedTextBackgroundColor</string>
1283 <reference key="NSColor" ref="591163410"/>
1284 </object>
1285 <object class="NSColor" key="NSColor">
1286 <int key="NSColorSpace">6</int>
1287 <string key="NSCatalogName">System</string>
1288 <string key="NSColorName">selectedTextColor</string>
1289 <reference key="NSColor" ref="515582523"/>
1290 </object>
1291 </dictionary>
1292 <reference key="NSInsertionColor" ref="515582523"/>
1293 <dictionary key="NSLinkAttributes">
1294 <object class="NSColor" key="NSColor">
1295 <int key="NSColorSpace">1</int>
1296 <bytes key="NSRGB">MCAwIDEAA</bytes>
1297 </object>
1298 <object class="NSCursor" key="NSCursor">
1299 <string key="NSHotSpot">{8, -8}</string>
1300 <int key="NSCursorType">13</int>
1301 </object>
1302 <integer value="1" key="NSUnderline"/>
1303 </dictionary>
1304 <nil key="NSDefaultParagraphStyle"/>
1305 <nil key="NSTextFinder"/>
1306 <int key="NSPreferredTextFinderStyle">1</int>
1307 </object>
1308 <int key="NSTVFlags">6</int>
1309 <string key="NSMaxSize">{696, 10000000}</string>
1310 <nil key="NSDelegate"/>
1311 </object>
1312 </array>
1313 <string key="NSFrame">{{1, 1}, {568, 130}}</string>
1314 <reference key="NSSuperview" ref="356109671"/>
1315 <reference key="NSNextKeyView" ref="827877557"/>
1316 <string key="NSReuseIdentifierKey">_NS:3758</string>
1317 <reference key="NSDocView" ref="827877557"/>
1318 <reference key="NSBGColor" ref="771510757"/>
1319 <object class="NSCursor" key="NSCursor">
1320 <string key="NSHotSpot">{4, 5}</string>
1321 <object class="NSImage" key="NSImage">
1322 <int key="NSImageFlags">12582912</int>
1323 <array class="NSMutableArray" key="NSReps">
1324 <array>
1325 <integer value="0"/>
1326 <object class="NSBitmapImageRep">
1327 <object class="NSData" key="NSTIFFRepresentation">
1328 <bytes key="NS.bytes">TU0AKgAAAHCAFUqgBVKsAAAAwdVQUqwaEQeIRGJRGFlYqwWLQ+JxuOQpVRmEx2RROKwOQyOUQSPyaUym
1329SxqWyKXyeYxyZzWbSuJTScRCbz2Nz+gRKhUOfTqeUai0OSxiWTiBQSHSGFquGwekxyAgAAAOAQAAAwAA
1330AAEAEAAAAQEAAwAAAAEAEAAAAQIAAwAAAAIACAAIAQMAAwAAAAEABQAAAQYAAwAAAAEAAQAAAREABAAA
1331AAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAgAAARYAAwAAAAEAEAAAARcABAAAAAEAAABnARwAAwAA
1332AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
1333 </object>
1334 </object>
1335 </array>
1336 </array>
1337 <object class="NSColor" key="NSColor" id="785653565">
1338 <int key="NSColorSpace">3</int>
1339 <bytes key="NSWhite">MCAwAA</bytes>
1340 </object>
1341 </object>
1342 </object>
1343 <int key="NScvFlags">4</int>
1344 </object>
1345 <object class="NSScroller" id="275648235">
1346 <reference key="NSNextResponder" ref="356109671"/>
1347 <int key="NSvFlags">256</int>
1348 <string key="NSFrame">{{553, 1}, {16, 130}}</string>
1349 <reference key="NSSuperview" ref="356109671"/>
1350 <reference key="NSNextKeyView" ref="639837771"/>
1351 <string key="NSReuseIdentifierKey">_NS:3774</string>
1352 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1353 <reference key="NSTarget" ref="356109671"/>
1354 <string key="NSAction">_doScroller:</string>
1355 <double key="NSCurValue">1</double>
1356 <double key="NSPercent">0.85256409645080566</double>
1357 </object>
1358 <object class="NSScroller" id="4720790">
1359 <reference key="NSNextResponder" ref="356109671"/>
1360 <int key="NSvFlags">-2147483392</int>
1361 <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
1362 <reference key="NSSuperview" ref="356109671"/>
1363 <reference key="NSNextKeyView" ref="105628437"/>
1364 <string key="NSReuseIdentifierKey">_NS:3762</string>
1365 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1366 <int key="NSsFlags">1</int>
1367 <reference key="NSTarget" ref="356109671"/>
1368 <string key="NSAction">_doScroller:</string>
1369 <double key="NSCurValue">1</double>
1370 <double key="NSPercent">0.94565218687057495</double>
1371 </object>
1372 </array>
1373 <string key="NSFrameSize">{570, 132}</string>
1374 <reference key="NSSuperview" ref="427087625"/>
1375 <reference key="NSNextKeyView" ref="105628437"/>
1376 <string key="NSReuseIdentifierKey">_NS:148</string>
1377 <int key="NSsFlags">133138</int>
1378 <reference key="NSVScroller" ref="275648235"/>
1379 <reference key="NSHScroller" ref="4720790"/>
1380 <reference key="NSContentView" ref="105628437"/>
1381 <double key="NSMinMagnification">0.25</double>
1382 <double key="NSMaxMagnification">4</double>
1383 <double key="NSMagnification">1</double>
1384 </object>
1385 </array>
1386 <string key="NSFrame">{{0, 134}, {570, 132}}</string>
1387 <reference key="NSSuperview" ref="250587056"/>
1388 <reference key="NSNextKeyView" ref="356109671"/>
1389 <string key="NSReuseIdentifierKey">_NS:549</string>
1390 <string key="NSClassName">NSView</string>
1391 </object>
1392 </array>
1393 <string key="NSFrame">{{15, 41}, {570, 266}}</string>
1394 <reference key="NSSuperview" ref="439893737"/>
1395 <reference key="NSNextKeyView" ref="328183451"/>
1396 <string key="NSReuseIdentifierKey">_NS:545</string>
1397 <int key="NSDividerStyle">2</int>
1398 </object>
1399 <object class="NSBox" id="639837771">
1400 <reference key="NSNextResponder" ref="439893737"/>
1401 <int key="NSvFlags">33</int>
1402 <array class="NSMutableArray" key="NSSubviews">
1403 <object class="NSView" id="1002721778">
1404 <reference key="NSNextResponder" ref="639837771"/>
1405 <int key="NSvFlags">274</int>
1406 <array class="NSMutableArray" key="NSSubviews">
1407 <object class="NSButton" id="230958321">
1408 <reference key="NSNextResponder" ref="1002721778"/>
1409 <int key="NSvFlags">289</int>
1410 <string key="NSFrame">{{13, 0}, {174, 29}}</string>
1411 <reference key="NSSuperview" ref="1002721778"/>
1412 <reference key="NSNextKeyView" ref="419622798"/>
1413 <string key="NSReuseIdentifierKey">_NS:239</string>
1414 <bool key="NSEnabled">YES</bool>
1415 <object class="NSButtonCell" key="NSCell" id="441222556">
1416 <int key="NSCellFlags">-2080374784</int>
1417 <int key="NSCellFlags2">134217728</int>
1418 <string key="NSContents">Listen on the address</string>
1419 <reference key="NSSupport" ref="809233629"/>
1420 <string key="NSCellIdentifier">_NS:239</string>
1421 <reference key="NSControlView" ref="230958321"/>
1422 <int key="NSButtonFlags">1211912448</int>
1423 <int key="NSButtonFlags2">2</int>
1424 <object class="NSCustomResource" key="NSNormalImage">
1425 <string key="NSClassName">NSImage</string>
1426 <string key="NSResourceName">NSSwitch</string>
1427 </object>
1428 <object class="NSButtonImageSource" key="NSAlternateImage">
1429 <string key="NSImageName">NSSwitch</string>
1430 </object>
1431 <string key="NSAlternateContents"/>
1432 <string key="NSKeyEquivalent"/>
1433 <int key="NSPeriodicDelay">200</int>
1434 <int key="NSPeriodicInterval">25</int>
1435 </object>
1436 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1437 </object>
1438 <object class="NSTextField" id="419622798">
1439 <reference key="NSNextResponder" ref="1002721778"/>
1440 <int key="NSvFlags">289</int>
1441 <string key="NSFrame">{{201, 3}, {119, 22}}</string>
1442 <reference key="NSSuperview" ref="1002721778"/>
1443 <reference key="NSNextKeyView" ref="7620662"/>
1444 <string key="NSReuseIdentifierKey">_NS:248</string>
1445 <bool key="NSEnabled">YES</bool>
1446 <object class="NSTextFieldCell" key="NSCell" id="226701554">
1447 <int key="NSCellFlags">-1804599231</int>
1448 <int key="NSCellFlags2">138413056</int>
1449 <string key="NSContents">0.0.0.0</string>
1450 <reference key="NSSupport" ref="809233629"/>
1451 <string key="NSCellIdentifier">_NS:248</string>
1452 <reference key="NSControlView" ref="419622798"/>
1453 <bool key="NSDrawsBackground">YES</bool>
1454 <object class="NSColor" key="NSBackgroundColor" id="449937964">
1455 <int key="NSColorSpace">6</int>
1456 <string key="NSCatalogName">System</string>
1457 <string key="NSColorName">textBackgroundColor</string>
1458 <reference key="NSColor" ref="771510757"/>
1459 </object>
1460 <object class="NSColor" key="NSTextColor" id="53075377">
1461 <int key="NSColorSpace">6</int>
1462 <string key="NSCatalogName">System</string>
1463 <string key="NSColorName">textColor</string>
1464 <reference key="NSColor" ref="515582523"/>
1465 </object>
1466 </object>
1467 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1468 </object>
1469 <object class="NSTextField" id="7620662">
1470 <reference key="NSNextResponder" ref="1002721778"/>
1471 <int key="NSvFlags">289</int>
1472 <string key="NSFrame">{{325, 2}, {75, 22}}</string>
1473 <reference key="NSSuperview" ref="1002721778"/>
1474 <reference key="NSNextKeyView" ref="711665850"/>
1475 <string key="NSReuseIdentifierKey">_NS:3936</string>
1476 <bool key="NSEnabled">YES</bool>
1477 <object class="NSTextFieldCell" key="NSCell" id="31855702">
1478 <int key="NSCellFlags">68157504</int>
1479 <int key="NSCellFlags2">138413056</int>
1480 <string key="NSContents">and port</string>
1481 <reference key="NSSupport" ref="809233629"/>
1482 <string key="NSCellIdentifier">_NS:3936</string>
1483 <reference key="NSControlView" ref="7620662"/>
1484 <bool key="NSDrawsBackground">YES</bool>
1485 <object class="NSColor" key="NSBackgroundColor" id="175645791">
1486 <int key="NSColorSpace">6</int>
1487 <string key="NSCatalogName">System</string>
1488 <string key="NSColorName">controlColor</string>
1489 <reference key="NSColor" ref="591163410"/>
1490 </object>
1491 <reference key="NSTextColor" ref="210721017"/>
1492 </object>
1493 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1494 </object>
1495 <object class="NSTextField" id="711665850">
1496 <reference key="NSNextResponder" ref="1002721778"/>
1497 <int key="NSvFlags">289</int>
1498 <string key="NSFrame">{{405, 3}, {40, 22}}</string>
1499 <reference key="NSSuperview" ref="1002721778"/>
1500 <string key="NSReuseIdentifierKey">_NS:248</string>
1501 <bool key="NSEnabled">YES</bool>
1502 <object class="NSTextFieldCell" key="NSCell" id="771004923">
1503 <int key="NSCellFlags">-1804599231</int>
1504 <int key="NSCellFlags2">71304192</int>
1505 <string key="NSContents">69</string>
1506 <reference key="NSSupport" ref="809233629"/>
1507 <string key="NSCellIdentifier">_NS:248</string>
1508 <reference key="NSControlView" ref="711665850"/>
1509 <bool key="NSDrawsBackground">YES</bool>
1510 <reference key="NSBackgroundColor" ref="449937964"/>
1511 <reference key="NSTextColor" ref="53075377"/>
1512 </object>
1513 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1514 </object>
1515 </array>
1516 <string key="NSFrame">{{1, 1}, {460, 28}}</string>
1517 <reference key="NSSuperview" ref="639837771"/>
1518 <reference key="NSNextKeyView" ref="230958321"/>
1519 <string key="NSReuseIdentifierKey">_NS:11</string>
1520 </object>
1521 </array>
1522 <string key="NSFrame">{{123, 7}, {462, 30}}</string>
1523 <reference key="NSSuperview" ref="439893737"/>
1524 <reference key="NSNextKeyView" ref="1002721778"/>
1525 <string key="NSReuseIdentifierKey">_NS:9</string>
1526 <string key="NSOffsets">{0, 0}</string>
1527 <object class="NSTextFieldCell" key="NSTitleCell">
1528 <int key="NSCellFlags">67108864</int>
1529 <int key="NSCellFlags2">0</int>
1530 <string key="NSContents">Box</string>
1531 <reference key="NSSupport" ref="26"/>
1532 <reference key="NSBackgroundColor" ref="449937964"/>
1533 <object class="NSColor" key="NSTextColor">
1534 <int key="NSColorSpace">3</int>
1535 <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
1536 </object>
1537 </object>
1538 <reference key="NSContentView" ref="1002721778"/>
1539 <int key="NSBorderType">1</int>
1540 <int key="NSBoxType">4</int>
1541 <int key="NSTitlePosition">2</int>
1542 <bool key="NSTransparent">NO</bool>
1543 <double key="NSCornerRadius2">5</double>
1544 <object class="NSColor" key="NSFillColor2">
1545 <int key="NSColorSpace">6</int>
1546 <string key="NSCatalogName">System</string>
1547 <string key="NSColorName">windowBackgroundColor</string>
1548 <reference key="NSColor" ref="288383301"/>
1549 </object>
1550 </object>
1551 </array>
1552 <string key="NSFrameSize">{600, 322}</string>
1553 <reference key="NSNextKeyView" ref="250587056"/>
1554 </object>
1555 <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
1556 <string key="NSMinSize">{492, 269}</string>
1557 <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
1558 <bool key="NSWindowIsRestorable">YES</bool>
1559 </object>
1560 <object class="NSWindowTemplate" id="759947593">
1561 <int key="NSWindowStyleMask">3</int>
1562 <int key="NSWindowBacking">2</int>
1563 <string key="NSWindowRect">{{131, 159}, {603, 348}}</string>
1564 <int key="NSWTFlags">1685586944</int>
1565 <string key="NSWindowTitle">PumpKIN Preferences</string>
1566 <string key="NSWindowClass">NSWindow</string>
1567 <nil key="NSViewClass"/>
1568 <nil key="NSUserInterfaceItemIdentifier"/>
1569 <object class="NSView" key="NSWindowView" id="929656847">
1570 <nil key="NSNextResponder"/>
1571 <int key="NSvFlags">256</int>
1572 <array class="NSMutableArray" key="NSSubviews">
1573 <object class="NSBox" id="208819373">
1574 <reference key="NSNextResponder" ref="929656847"/>
1575 <int key="NSvFlags">12</int>
1576 <array class="NSMutableArray" key="NSSubviews">
1577 <object class="NSView" id="434868610">
1578 <reference key="NSNextResponder" ref="208819373"/>
1579 <int key="NSvFlags">274</int>
1580 <array class="NSMutableArray" key="NSSubviews">
1581 <object class="NSTextField" id="328098120">
1582 <reference key="NSNextResponder" ref="434868610"/>
1583 <int key="NSvFlags">268</int>
1584 <string key="NSFrame">{{18, 14}, {481, 22}}</string>
1585 <reference key="NSSuperview" ref="434868610"/>
1586 <reference key="NSNextKeyView" ref="240606174"/>
1587 <string key="NSReuseIdentifierKey">_NS:248</string>
1588 <bool key="NSEnabled">YES</bool>
1589 <object class="NSTextFieldCell" key="NSCell" id="151062802">
1590 <int key="NSCellFlags">-1804599231</int>
1591 <int key="NSCellFlags2">272630784</int>
1592 <string key="NSContents"/>
1593 <reference key="NSSupport" ref="809233629"/>
1594 <string key="NSCellIdentifier">_NS:248</string>
1595 <reference key="NSControlView" ref="328098120"/>
1596 <bool key="NSDrawsBackground">YES</bool>
1597 <reference key="NSBackgroundColor" ref="449937964"/>
1598 <reference key="NSTextColor" ref="53075377"/>
1599 </object>
1600 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1601 </object>
1602 <object class="NSButton" id="240606174">
1603 <reference key="NSNextResponder" ref="434868610"/>
1604 <int key="NSvFlags">268</int>
1605 <string key="NSFrame">{{507, 17}, {56, 19}}</string>
1606 <reference key="NSSuperview" ref="434868610"/>
1607 <reference key="NSNextKeyView" ref="233651545"/>
1608 <string key="NSReuseIdentifierKey">_NS:1491</string>
1609 <bool key="NSEnabled">YES</bool>
1610 <object class="NSButtonCell" key="NSCell" id="108023427">
1611 <int key="NSCellFlags">67108864</int>
1612 <int key="NSCellFlags2">134217728</int>
1613 <string key="NSContents">Browse</string>
1614 <object class="NSFont" key="NSSupport" id="752899677">
1615 <string key="NSName">LucidaGrande</string>
1616 <double key="NSSize">12</double>
1617 <int key="NSfFlags">16</int>
1618 </object>
1619 <string key="NSCellIdentifier">_NS:1491</string>
1620 <reference key="NSControlView" ref="240606174"/>
1621 <int key="NSButtonFlags">-2037104640</int>
1622 <int key="NSButtonFlags2">36</int>
1623 <object class="NSCustomResource" key="NSNormalImage">
1624 <string key="NSClassName">NSImage</string>
1625 <string key="NSResourceName">NSPathTemplate</string>
1626 </object>
1627 <string key="NSAlternateContents"/>
1628 <string key="NSKeyEquivalent"/>
1629 <int key="NSPeriodicDelay">400</int>
1630 <int key="NSPeriodicInterval">75</int>
1631 </object>
1632 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1633 </object>
1634 </array>
1635 <string key="NSFrame">{{1, 1}, {581, 46}}</string>
1636 <reference key="NSSuperview" ref="208819373"/>
1637 <reference key="NSNextKeyView" ref="328098120"/>
1638 <string key="NSReuseIdentifierKey">_NS:632</string>
1639 </object>
1640 </array>
1641 <string key="NSFrame">{{10, 266}, {583, 62}}</string>
1642 <reference key="NSSuperview" ref="929656847"/>
1643 <reference key="NSNextKeyView" ref="434868610"/>
1644 <string key="NSReuseIdentifierKey">_NS:630</string>
1645 <string key="NSOffsets">{0, 0}</string>
1646 <object class="NSTextFieldCell" key="NSTitleCell">
1647 <int key="NSCellFlags">67108864</int>
1648 <int key="NSCellFlags2">0</int>
1649 <string key="NSContents">TFTP filesystem root (download path)</string>
1650 <reference key="NSSupport" ref="26"/>
1651 <reference key="NSBackgroundColor" ref="449937964"/>
1652 <object class="NSColor" key="NSTextColor">
1653 <int key="NSColorSpace">3</int>
1654 <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
1655 </object>
1656 </object>
1657 <reference key="NSContentView" ref="434868610"/>
1658 <int key="NSBorderType">1</int>
1659 <int key="NSBoxType">0</int>
1660 <int key="NSTitlePosition">2</int>
1661 <bool key="NSTransparent">NO</bool>
1662 </object>
1663 <object class="NSBox" id="233651545">
1664 <reference key="NSNextResponder" ref="929656847"/>
1665 <int key="NSvFlags">12</int>
1666 <array class="NSMutableArray" key="NSSubviews">
1667 <object class="NSView" id="532822418">
1668 <reference key="NSNextResponder" ref="233651545"/>
1669 <int key="NSvFlags">274</int>
1670 <array class="NSMutableArray" key="NSSubviews">
1671 <object class="NSTextField" id="823695658">
1672 <reference key="NSNextResponder" ref="532822418"/>
1673 <int key="NSvFlags">268</int>
1674 <string key="NSFrame">{{18, 14}, {481, 22}}</string>
1675 <reference key="NSSuperview" ref="532822418"/>
1676 <reference key="NSNextKeyView" ref="379050521"/>
1677 <string key="NSReuseIdentifierKey">_NS:248</string>
1678 <bool key="NSEnabled">YES</bool>
1679 <object class="NSTextFieldCell" key="NSCell" id="424316336">
1680 <int key="NSCellFlags">-1804599231</int>
1681 <int key="NSCellFlags2">272630784</int>
1682 <string key="NSContents"/>
1683 <reference key="NSSupport" ref="809233629"/>
1684 <string key="NSCellIdentifier">_NS:248</string>
1685 <reference key="NSControlView" ref="823695658"/>
1686 <bool key="NSDrawsBackground">YES</bool>
1687 <reference key="NSBackgroundColor" ref="449937964"/>
1688 <reference key="NSTextColor" ref="53075377"/>
1689 </object>
1690 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1691 </object>
1692 <object class="NSButton" id="379050521">
1693 <reference key="NSNextResponder" ref="532822418"/>
1694 <int key="NSvFlags">268</int>
1695 <string key="NSFrame">{{507, 15}, {56, 19}}</string>
1696 <reference key="NSSuperview" ref="532822418"/>
1697 <reference key="NSNextKeyView" ref="197043543"/>
1698 <string key="NSReuseIdentifierKey">_NS:1491</string>
1699 <bool key="NSEnabled">YES</bool>
1700 <object class="NSButtonCell" key="NSCell" id="621926228">
1701 <int key="NSCellFlags">67108864</int>
1702 <int key="NSCellFlags2">134217728</int>
1703 <string key="NSContents">Browse</string>
1704 <reference key="NSSupport" ref="752899677"/>
1705 <string key="NSCellIdentifier">_NS:1491</string>
1706 <reference key="NSControlView" ref="379050521"/>
1707 <int key="NSButtonFlags">-2033434624</int>
1708 <int key="NSButtonFlags2">164</int>
1709 <string key="NSAlternateContents"/>
1710 <string key="NSKeyEquivalent"/>
1711 <int key="NSPeriodicDelay">400</int>
1712 <int key="NSPeriodicInterval">75</int>
1713 </object>
1714 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1715 </object>
1716 </array>
1717 <string key="NSFrame">{{1, 1}, {581, 46}}</string>
1718 <reference key="NSSuperview" ref="233651545"/>
1719 <reference key="NSNextKeyView" ref="823695658"/>
1720 <string key="NSReuseIdentifierKey">_NS:632</string>
1721 </object>
1722 </array>
1723 <string key="NSFrame">{{10, 200}, {583, 62}}</string>
1724 <reference key="NSSuperview" ref="929656847"/>
1725 <reference key="NSNextKeyView" ref="532822418"/>
1726 <string key="NSReuseIdentifierKey">_NS:630</string>
1727 <string key="NSOffsets">{0, 0}</string>
1728 <object class="NSTextFieldCell" key="NSTitleCell">
1729 <int key="NSCellFlags">67108864</int>
1730 <int key="NSCellFlags2">0</int>
1731 <string key="NSContents">Log file (leave empty to disable logging to file)</string>
1732 <reference key="NSSupport" ref="26"/>
1733 <reference key="NSBackgroundColor" ref="449937964"/>
1734 <object class="NSColor" key="NSTextColor">
1735 <int key="NSColorSpace">3</int>
1736 <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
1737 </object>
1738 </object>
1739 <reference key="NSContentView" ref="532822418"/>
1740 <int key="NSBorderType">1</int>
1741 <int key="NSBoxType">0</int>
1742 <int key="NSTitlePosition">2</int>
1743 <bool key="NSTransparent">NO</bool>
1744 </object>
1745 <object class="NSBox" id="197043543">
1746 <reference key="NSNextResponder" ref="929656847"/>
1747 <int key="NSvFlags">12</int>
1748 <array class="NSMutableArray" key="NSSubviews">
1749 <object class="NSView" id="202393739">
1750 <reference key="NSNextResponder" ref="197043543"/>
1751 <int key="NSvFlags">274</int>
1752 <array class="NSMutableArray" key="NSSubviews">
1753 <object class="NSMatrix" id="973753659">
1754 <reference key="NSNextResponder" ref="202393739"/>
1755 <int key="NSvFlags">268</int>
1756 <string key="NSFrame">{{18, 14}, {190, 58}}</string>
1757 <reference key="NSSuperview" ref="202393739"/>
1758 <reference key="NSNextKeyView" ref="866741769"/>
1759 <string key="NSReuseIdentifierKey">_NS:266</string>
1760 <bool key="NSEnabled">YES</bool>
1761 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1762 <int key="NSNumRows">3</int>
1763 <int key="NSNumCols">1</int>
1764 <array class="NSMutableArray" key="NSCells">
1765 <object class="NSButtonCell" id="529759421">
1766 <int key="NSCellFlags">-2080374784</int>
1767 <int key="NSCellFlags2">0</int>
1768 <string key="NSContents">Give all files</string>
1769 <reference key="NSSupport" ref="809233629"/>
1770 <reference key="NSControlView" ref="973753659"/>
1771 <int key="NSButtonFlags">1211912448</int>
1772 <int key="NSButtonFlags2">0</int>
1773 <object class="NSButtonImageSource" key="NSAlternateImage" id="914616927">
1774 <string key="NSImageName">NSRadioButton</string>
1775 </object>
1776 <int key="NSPeriodicDelay">400</int>
1777 <int key="NSPeriodicInterval">75</int>
1778 </object>
1779 <object class="NSButtonCell" id="859183946">
1780 <int key="NSCellFlags">67108864</int>
1781 <int key="NSCellFlags2">0</int>
1782 <string key="NSContents">Prompt before giving a file</string>
1783 <reference key="NSSupport" ref="809233629"/>
1784 <reference key="NSControlView" ref="973753659"/>
1785 <int key="NSTag">1</int>
1786 <int key="NSButtonFlags">1211912448</int>
1787 <int key="NSButtonFlags2">0</int>
1788 <reference key="NSAlternateImage" ref="914616927"/>
1789 <int key="NSPeriodicDelay">400</int>
1790 <int key="NSPeriodicInterval">75</int>
1791 </object>
1792 <object class="NSButtonCell" id="862531403">
1793 <int key="NSCellFlags">67108864</int>
1794 <int key="NSCellFlags2">0</int>
1795 <string key="NSContents">Deny all requests</string>
1796 <reference key="NSSupport" ref="809233629"/>
1797 <reference key="NSControlView" ref="973753659"/>
1798 <int key="NSTag">2</int>
1799 <int key="NSButtonFlags">1211912448</int>
1800 <int key="NSButtonFlags2">0</int>
1801 <reference key="NSAlternateImage" ref="914616927"/>
1802 <int key="NSPeriodicDelay">400</int>
1803 <int key="NSPeriodicInterval">75</int>
1804 </object>
1805 </array>
1806 <string key="NSCellSize">{190, 18}</string>
1807 <string key="NSIntercellSpacing">{4, 2}</string>
1808 <int key="NSMatrixFlags">1151868928</int>
1809 <string key="NSCellClass">NSActionCell</string>
1810 <object class="NSButtonCell" key="NSProtoCell" id="518920277">
1811 <int key="NSCellFlags">67108864</int>
1812 <int key="NSCellFlags2">0</int>
1813 <string key="NSContents">Radio</string>
1814 <reference key="NSSupport" ref="809233629"/>
1815 <int key="NSTag">-1</int>
1816 <int key="NSButtonFlags">1211912448</int>
1817 <int key="NSButtonFlags2">0</int>
1818 <object class="NSImage" key="NSNormalImage">
1819 <int key="NSImageFlags">549453824</int>
1820 <string key="NSSize">{18, 18}</string>
1821 <array class="NSMutableArray" key="NSReps">
1822 <array>
1823 <integer value="0"/>
1824 <object class="NSBitmapImageRep">
1825 <object class="NSData" key="NSTIFFRepresentation">
1826 <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
1827AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
1828IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
182929vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
1830dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
1831AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
1832AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
18330tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
18347e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
18355eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
18363t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
1837AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
1838AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
18396+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
1840/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
1841///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
1842YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
1843AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
1844AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
1845AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
1846AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1847AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
1848AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
1849AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
1850AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
1851 </object>
1852 </object>
1853 </array>
1854 </array>
1855 <reference key="NSColor" ref="785653565"/>
1856 </object>
1857 <reference key="NSAlternateImage" ref="914616927"/>
1858 <int key="NSPeriodicDelay">400</int>
1859 <int key="NSPeriodicInterval">75</int>
1860 </object>
1861 <reference key="NSSelectedCell" ref="529759421"/>
1862 <reference key="NSBackgroundColor" ref="175645791"/>
1863 <reference key="NSCellBackgroundColor" ref="771510757"/>
1864 <reference key="NSFont" ref="809233629"/>
1865 </object>
1866 </array>
1867 <string key="NSFrame">{{1, 1}, {581, 82}}</string>
1868 <reference key="NSSuperview" ref="197043543"/>
1869 <reference key="NSNextKeyView" ref="973753659"/>
1870 <string key="NSReuseIdentifierKey">_NS:632</string>
1871 </object>
1872 </array>
1873 <string key="NSFrame">{{10, 98}, {583, 98}}</string>
1874 <reference key="NSSuperview" ref="929656847"/>
1875 <reference key="NSNextKeyView" ref="202393739"/>
1876 <string key="NSReuseIdentifierKey">_NS:630</string>
1877 <string key="NSOffsets">{0, 0}</string>
1878 <object class="NSTextFieldCell" key="NSTitleCell">
1879 <int key="NSCellFlags">67108864</int>
1880 <int key="NSCellFlags2">0</int>
1881 <string key="NSContents">Read Request Behavior</string>
1882 <reference key="NSSupport" ref="26"/>
1883 <reference key="NSBackgroundColor" ref="449937964"/>
1884 <object class="NSColor" key="NSTextColor">
1885 <int key="NSColorSpace">3</int>
1886 <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
1887 </object>
1888 </object>
1889 <reference key="NSContentView" ref="202393739"/>
1890 <int key="NSBorderType">1</int>
1891 <int key="NSBoxType">0</int>
1892 <int key="NSTitlePosition">2</int>
1893 <bool key="NSTransparent">NO</bool>
1894 </object>
1895 <object class="NSBox" id="866741769">
1896 <reference key="NSNextResponder" ref="929656847"/>
1897 <int key="NSvFlags">12</int>
1898 <array class="NSMutableArray" key="NSSubviews">
1899 <object class="NSView" id="132072321">
1900 <reference key="NSNextResponder" ref="866741769"/>
1901 <int key="NSvFlags">274</int>
1902 <array class="NSMutableArray" key="NSSubviews">
1903 <object class="NSMatrix" id="82294173">
1904 <reference key="NSNextResponder" ref="132072321"/>
1905 <int key="NSvFlags">268</int>
1906 <string key="NSFrame">{{18, 14}, {526, 38}}</string>
1907 <reference key="NSSuperview" ref="132072321"/>
1908 <string key="NSReuseIdentifierKey">_NS:266</string>
1909 <bool key="NSEnabled">YES</bool>
1910 <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
1911 <int key="NSNumRows">2</int>
1912 <int key="NSNumCols">2</int>
1913 <array class="NSMutableArray" key="NSCells">
1914 <object class="NSButtonCell" id="708384367">
1915 <int key="NSCellFlags">-2080374784</int>
1916 <int key="NSCellFlags2">0</int>
1917 <string key="NSContents">Take all files</string>
1918 <reference key="NSSupport" ref="809233629"/>
1919 <reference key="NSControlView" ref="82294173"/>
1920 <int key="NSButtonFlags">1211912448</int>
1921 <int key="NSButtonFlags2">0</int>
1922 <reference key="NSAlternateImage" ref="914616927"/>
1923 <string key="NSAlternateContents"/>
1924 <string key="NSKeyEquivalent"/>
1925 <int key="NSPeriodicDelay">200</int>
1926 <int key="NSPeriodicInterval">25</int>
1927 </object>
1928 <object class="NSButtonCell" id="158682464">
1929 <int key="NSCellFlags">67108864</int>
1930 <int key="NSCellFlags2">0</int>
1931 <string key="NSContents">Prompt if file exists</string>
1932 <reference key="NSSupport" ref="809233629"/>
1933 <reference key="NSControlView" ref="82294173"/>
1934 <int key="NSTag">1</int>
1935 <int key="NSButtonFlags">1211912448</int>
1936 <int key="NSButtonFlags2">0</int>
1937 <reference key="NSAlternateImage" ref="914616927"/>
1938 <int key="NSPeriodicDelay">400</int>
1939 <int key="NSPeriodicInterval">75</int>
1940 </object>
1941 <object class="NSButtonCell" id="527645225">
1942 <int key="NSCellFlags">67108864</int>
1943 <int key="NSCellFlags2">0</int>
1944 <string key="NSContents">Always prompt before accepting a file</string>
1945 <reference key="NSSupport" ref="809233629"/>
1946 <reference key="NSControlView" ref="82294173"/>
1947 <int key="NSTag">2</int>
1948 <int key="NSButtonFlags">1211912448</int>
1949 <int key="NSButtonFlags2">0</int>
1950 <object class="NSImage" key="NSNormalImage">
1951 <int key="NSImageFlags">549453824</int>
1952 <string key="NSSize">{18, 18}</string>
1953 <array class="NSMutableArray" key="NSReps">
1954 <array>
1955 <integer value="0"/>
1956 <object class="NSBitmapImageRep">
1957 <object class="NSData" key="NSTIFFRepresentation">
1958 <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
1959AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
1960IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
196129vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
1962dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
1963AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
1964AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
19650tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
19667e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
19675eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
19683t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
1969AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
1970AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
19716+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
1972/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
1973///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
1974YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
1975AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
1976AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
1977AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
1978AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1979AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
1980AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
1981AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
1982AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
1983 </object>
1984 </object>
1985 </array>
1986 </array>
1987 <reference key="NSColor" ref="785653565"/>
1988 </object>
1989 <reference key="NSAlternateImage" ref="914616927"/>
1990 <int key="NSPeriodicDelay">400</int>
1991 <int key="NSPeriodicInterval">75</int>
1992 </object>
1993 <object class="NSButtonCell" id="310101904">
1994 <int key="NSCellFlags">67108864</int>
1995 <int key="NSCellFlags2">0</int>
1996 <string key="NSContents">Deny all requests</string>
1997 <reference key="NSSupport" ref="809233629"/>
1998 <reference key="NSControlView" ref="82294173"/>
1999 <int key="NSTag">3</int>
2000 <int key="NSButtonFlags">1211912448</int>
2001 <int key="NSButtonFlags2">0</int>
2002 <reference key="NSAlternateImage" ref="914616927"/>
2003 <int key="NSPeriodicDelay">400</int>
2004 <int key="NSPeriodicInterval">75</int>
2005 </object>
2006 </array>
2007 <string key="NSCellSize">{261, 18}</string>
2008 <string key="NSIntercellSpacing">{4, 2}</string>
2009 <int key="NSMatrixFlags">1151868928</int>
2010 <string key="NSCellClass">NSActionCell</string>
2011 <object class="NSButtonCell" key="NSProtoCell" id="672179877">
2012 <int key="NSCellFlags">67108864</int>
2013 <int key="NSCellFlags2">0</int>
2014 <string key="NSContents">Radio</string>
2015 <reference key="NSSupport" ref="809233629"/>
2016 <int key="NSTag">-1</int>
2017 <int key="NSButtonFlags">1211912448</int>
2018 <int key="NSButtonFlags2">0</int>
2019 <object class="NSImage" key="NSNormalImage">
2020 <int key="NSImageFlags">549453824</int>
2021 <string key="NSSize">{18, 18}</string>
2022 <array class="NSMutableArray" key="NSReps">
2023 <array>
2024 <integer value="0"/>
2025 <object class="NSBitmapImageRep">
2026 <object class="NSData" key="NSTIFFRepresentation">
2027 <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
2028AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
2029IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
203029vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
2031dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
2032AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
2033AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
20340tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
20357e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
20365eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
20373t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
2038AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
2039AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
20406+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
2041/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
2042///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
2043YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
2044AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
2045AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
2046AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
2047AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2048AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
2049AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
2050AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
2051AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
2052 </object>
2053 </object>
2054 </array>
2055 </array>
2056 <reference key="NSColor" ref="785653565"/>
2057 </object>
2058 <reference key="NSAlternateImage" ref="914616927"/>
2059 <int key="NSPeriodicDelay">400</int>
2060 <int key="NSPeriodicInterval">75</int>
2061 </object>
2062 <reference key="NSSelectedCell" ref="708384367"/>
2063 <reference key="NSBackgroundColor" ref="175645791"/>
2064 <reference key="NSCellBackgroundColor" ref="771510757"/>
2065 <reference key="NSFont" ref="809233629"/>
2066 </object>
2067 </array>
2068 <string key="NSFrame">{{1, 1}, {581, 62}}</string>
2069 <reference key="NSSuperview" ref="866741769"/>
2070 <reference key="NSNextKeyView" ref="82294173"/>
2071 <string key="NSReuseIdentifierKey">_NS:632</string>
2072 </object>
2073 </array>
2074 <string key="NSFrame">{{10, 16}, {583, 78}}</string>
2075 <reference key="NSSuperview" ref="929656847"/>
2076 <reference key="NSNextKeyView" ref="132072321"/>
2077 <string key="NSReuseIdentifierKey">_NS:630</string>
2078 <string key="NSOffsets">{0, 0}</string>
2079 <object class="NSTextFieldCell" key="NSTitleCell">
2080 <int key="NSCellFlags">67108864</int>
2081 <int key="NSCellFlags2">0</int>
2082 <string key="NSContents">Write Request Behavior</string>
2083 <reference key="NSSupport" ref="26"/>
2084 <reference key="NSBackgroundColor" ref="449937964"/>
2085 <object class="NSColor" key="NSTextColor">
2086 <int key="NSColorSpace">3</int>
2087 <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
2088 </object>
2089 </object>
2090 <reference key="NSContentView" ref="132072321"/>
2091 <int key="NSBorderType">1</int>
2092 <int key="NSBoxType">0</int>
2093 <int key="NSTitlePosition">2</int>
2094 <bool key="NSTransparent">NO</bool>
2095 </object>
2096 </array>
2097 <string key="NSFrameSize">{603, 348}</string>
2098 <reference key="NSNextKeyView" ref="208819373"/>
2099 <string key="NSReuseIdentifierKey">_NS:2818</string>
2100 </object>
2101 <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
2102 <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
2103 <bool key="NSWindowIsRestorable">YES</bool>
2104 </object>
2105 <object class="NSNumberFormatter" id="668310416">
2106 <dictionary class="NSMutableDictionary" key="NS.attributes">
2107 <boolean value="YES" key="allowsFloats"/>
2108 <integer value="1040" key="formatterBehavior"/>
2109 <object class="NSLocale" key="locale">
2110 <string key="NS.identifier"/>
2111 </object>
2112 <real value="32765" key="maximum"/>
2113 <real value="1" key="minimum"/>
2114 <string key="negativeInfinitySymbol">-∞</string>
2115 <string key="nilSymbol"/>
2116 <integer value="0" key="numberStyle"/>
2117 <string key="positiveInfinitySymbol">+∞</string>
2118 </dictionary>
2119 <string key="NS.positiveformat">#</string>
2120 <string key="NS.negativeformat">#</string>
2121 <nil key="NS.positiveattrs"/>
2122 <nil key="NS.negativeattrs"/>
2123 <nil key="NS.zero"/>
2124 <object class="NSAttributedString" key="NS.nil">
2125 <string key="NSString"/>
2126 </object>
2127 <object class="NSAttributedString" key="NS.nan">
2128 <string key="NSString">NaN</string>
2129 <dictionary key="NSAttributes"/>
2130 </object>
2131 <real value="1" key="NS.min"/>
2132 <real value="32765" key="NS.max"/>
2133 <object class="NSDecimalNumberHandler" key="NS.rounding">
2134 <int key="NS.roundingmode">3</int>
2135 <bool key="NS.raise.overflow">YES</bool>
2136 <bool key="NS.raise.underflow">YES</bool>
2137 <bool key="NS.raise.dividebyzero">YES</bool>
2138 </object>
2139 <string key="NS.decimal">.</string>
2140 <string key="NS.thousand">,</string>
2141 <bool key="NS.hasthousands">NO</bool>
2142 <bool key="NS.localized">NO</bool>
2143 <bool key="NS.allowsfloats">YES</bool>
2144 </object>
2145 <object class="IBCustomFormatter" id="1047776860"/>
2146 <object class="NSCustomObject" id="976324537">
2147 <string key="NSClassName">PumpKIN</string>
2148 </object>
2149 <object class="NSCustomObject" id="755631768">
2150 <string key="NSClassName">NSFontManager</string>
2151 </object>
2152 <object class="NSUserDefaultsController" id="228329665">
2153 <bool key="NSSharedInstance">YES</bool>
2154 </object>
2155 </array>
2156 <object class="IBObjectContainer" key="IBDocument.Objects">
2157 <array class="NSMutableArray" key="connectionRecords">
2158 <object class="IBConnectionRecord">
2159 <object class="IBActionConnection" key="connection">
2160 <string key="label">terminate:</string>
2161 <reference key="source" ref="1050"/>
2162 <reference key="destination" ref="632727374"/>
2163 </object>
2164 <int key="connectionID">449</int>
2165 </object>
2166 <object class="IBConnectionRecord">
2167 <object class="IBActionConnection" key="connection">
2168 <string key="label">orderFrontStandardAboutPanel:</string>
2169 <reference key="source" ref="1021"/>
2170 <reference key="destination" ref="238522557"/>
2171 </object>
2172 <int key="connectionID">142</int>
2173 </object>
2174 <object class="IBConnectionRecord">
2175 <object class="IBOutletConnection" key="connection">
2176 <string key="label">delegate</string>
2177 <reference key="source" ref="1021"/>
2178 <reference key="destination" ref="976324537"/>
2179 </object>
2180 <int key="connectionID">495</int>
2181 </object>
2182 <object class="IBConnectionRecord">
2183 <object class="IBActionConnection" key="connection">
2184 <string key="label">performMiniaturize:</string>
2185 <reference key="source" ref="1014"/>
2186 <reference key="destination" ref="1011231497"/>
2187 </object>
2188 <int key="connectionID">37</int>
2189 </object>
2190 <object class="IBConnectionRecord">
2191 <object class="IBActionConnection" key="connection">
2192 <string key="label">arrangeInFront:</string>
2193 <reference key="source" ref="1014"/>
2194 <reference key="destination" ref="625202149"/>
2195 </object>
2196 <int key="connectionID">39</int>
2197 </object>
2198 <object class="IBConnectionRecord">
2199 <object class="IBActionConnection" key="connection">
2200 <string key="label">toggleContinuousSpellChecking:</string>
2201 <reference key="source" ref="1014"/>
2202 <reference key="destination" ref="948374510"/>
2203 </object>
2204 <int key="connectionID">222</int>
2205 </object>
2206 <object class="IBConnectionRecord">
2207 <object class="IBActionConnection" key="connection">
2208 <string key="label">undo:</string>
2209 <reference key="source" ref="1014"/>
2210 <reference key="destination" ref="1058277027"/>
2211 </object>
2212 <int key="connectionID">223</int>
2213 </object>
2214 <object class="IBConnectionRecord">
2215 <object class="IBActionConnection" key="connection">
2216 <string key="label">copy:</string>
2217 <reference key="source" ref="1014"/>
2218 <reference key="destination" ref="860595796"/>
2219 </object>
2220 <int key="connectionID">224</int>
2221 </object>
2222 <object class="IBConnectionRecord">
2223 <object class="IBActionConnection" key="connection">
2224 <string key="label">checkSpelling:</string>
2225 <reference key="source" ref="1014"/>
2226 <reference key="destination" ref="96193923"/>
2227 </object>
2228 <int key="connectionID">225</int>
2229 </object>
2230 <object class="IBConnectionRecord">
2231 <object class="IBActionConnection" key="connection">
2232 <string key="label">paste:</string>
2233 <reference key="source" ref="1014"/>
2234 <reference key="destination" ref="29853731"/>
2235 </object>
2236 <int key="connectionID">226</int>
2237 </object>
2238 <object class="IBConnectionRecord">
2239 <object class="IBActionConnection" key="connection">
2240 <string key="label">stopSpeaking:</string>
2241 <reference key="source" ref="1014"/>
2242 <reference key="destination" ref="680220178"/>
2243 </object>
2244 <int key="connectionID">227</int>
2245 </object>
2246 <object class="IBConnectionRecord">
2247 <object class="IBActionConnection" key="connection">
2248 <string key="label">cut:</string>
2249 <reference key="source" ref="1014"/>
2250 <reference key="destination" ref="296257095"/>
2251 </object>
2252 <int key="connectionID">228</int>
2253 </object>
2254 <object class="IBConnectionRecord">
2255 <object class="IBActionConnection" key="connection">
2256 <string key="label">showGuessPanel:</string>
2257 <reference key="source" ref="1014"/>
2258 <reference key="destination" ref="679648819"/>
2259 </object>
2260 <int key="connectionID">230</int>
2261 </object>
2262 <object class="IBConnectionRecord">
2263 <object class="IBActionConnection" key="connection">
2264 <string key="label">redo:</string>
2265 <reference key="source" ref="1014"/>
2266 <reference key="destination" ref="790794224"/>
2267 </object>
2268 <int key="connectionID">231</int>
2269 </object>
2270 <object class="IBConnectionRecord">
2271 <object class="IBActionConnection" key="connection">
2272 <string key="label">selectAll:</string>
2273 <reference key="source" ref="1014"/>
2274 <reference key="destination" ref="583158037"/>
2275 </object>
2276 <int key="connectionID">232</int>
2277 </object>
2278 <object class="IBConnectionRecord">
2279 <object class="IBActionConnection" key="connection">
2280 <string key="label">startSpeaking:</string>
2281 <reference key="source" ref="1014"/>
2282 <reference key="destination" ref="731782645"/>
2283 </object>
2284 <int key="connectionID">233</int>
2285 </object>
2286 <object class="IBConnectionRecord">
2287 <object class="IBActionConnection" key="connection">
2288 <string key="label">delete:</string>
2289 <reference key="source" ref="1014"/>
2290 <reference key="destination" ref="437104165"/>
2291 </object>
2292 <int key="connectionID">235</int>
2293 </object>
2294 <object class="IBConnectionRecord">
2295 <object class="IBActionConnection" key="connection">
2296 <string key="label">performZoom:</string>
2297 <reference key="source" ref="1014"/>
2298 <reference key="destination" ref="575023229"/>
2299 </object>
2300 <int key="connectionID">240</int>
2301 </object>
2302 <object class="IBConnectionRecord">
2303 <object class="IBActionConnection" key="connection">
2304 <string key="label">performFindPanelAction:</string>
2305 <reference key="source" ref="1014"/>
2306 <reference key="destination" ref="447796847"/>
2307 </object>
2308 <int key="connectionID">241</int>
2309 </object>
2310 <object class="IBConnectionRecord">
2311 <object class="IBActionConnection" key="connection">
2312 <string key="label">centerSelectionInVisibleArea:</string>
2313 <reference key="source" ref="1014"/>
2314 <reference key="destination" ref="88285865"/>
2315 </object>
2316 <int key="connectionID">245</int>
2317 </object>
2318 <object class="IBConnectionRecord">
2319 <object class="IBActionConnection" key="connection">
2320 <string key="label">toggleGrammarChecking:</string>
2321 <reference key="source" ref="1014"/>
2322 <reference key="destination" ref="967646866"/>
2323 </object>
2324 <int key="connectionID">347</int>
2325 </object>
2326 <object class="IBConnectionRecord">
2327 <object class="IBActionConnection" key="connection">
2328 <string key="label">toggleSmartInsertDelete:</string>
2329 <reference key="source" ref="1014"/>
2330 <reference key="destination" ref="605118523"/>
2331 </object>
2332 <int key="connectionID">355</int>
2333 </object>
2334 <object class="IBConnectionRecord">
2335 <object class="IBActionConnection" key="connection">
2336 <string key="label">toggleAutomaticQuoteSubstitution:</string>
2337 <reference key="source" ref="1014"/>
2338 <reference key="destination" ref="197661976"/>
2339 </object>
2340 <int key="connectionID">356</int>
2341 </object>
2342 <object class="IBConnectionRecord">
2343 <object class="IBActionConnection" key="connection">
2344 <string key="label">toggleAutomaticLinkDetection:</string>
2345 <reference key="source" ref="1014"/>
2346 <reference key="destination" ref="708854459"/>
2347 </object>
2348 <int key="connectionID">357</int>
2349 </object>
2350 <object class="IBConnectionRecord">
2351 <object class="IBActionConnection" key="connection">
2352 <string key="label">runToolbarCustomizationPalette:</string>
2353 <reference key="source" ref="1014"/>
2354 <reference key="destination" ref="237841660"/>
2355 </object>
2356 <int key="connectionID">365</int>
2357 </object>
2358 <object class="IBConnectionRecord">
2359 <object class="IBActionConnection" key="connection">
2360 <string key="label">toggleToolbarShown:</string>
2361 <reference key="source" ref="1014"/>
2362 <reference key="destination" ref="102151532"/>
2363 </object>
2364 <int key="connectionID">366</int>
2365 </object>
2366 <object class="IBConnectionRecord">
2367 <object class="IBActionConnection" key="connection">
2368 <string key="label">hide:</string>
2369 <reference key="source" ref="1014"/>
2370 <reference key="destination" ref="755159360"/>
2371 </object>
2372 <int key="connectionID">367</int>
2373 </object>
2374 <object class="IBConnectionRecord">
2375 <object class="IBActionConnection" key="connection">
2376 <string key="label">hideOtherApplications:</string>
2377 <reference key="source" ref="1014"/>
2378 <reference key="destination" ref="342932134"/>
2379 </object>
2380 <int key="connectionID">368</int>
2381 </object>
2382 <object class="IBConnectionRecord">
2383 <object class="IBActionConnection" key="connection">
2384 <string key="label">unhideAllApplications:</string>
2385 <reference key="source" ref="1014"/>
2386 <reference key="destination" ref="908899353"/>
2387 </object>
2388 <int key="connectionID">370</int>
2389 </object>
2390 <object class="IBConnectionRecord">
2391 <object class="IBActionConnection" key="connection">
2392 <string key="label">toggleAutomaticSpellingCorrection:</string>
2393 <reference key="source" ref="1014"/>
2394 <reference key="destination" ref="795346622"/>
2395 </object>
2396 <int key="connectionID">456</int>
2397 </object>
2398 <object class="IBConnectionRecord">
2399 <object class="IBActionConnection" key="connection">
2400 <string key="label">orderFrontSubstitutionsPanel:</string>
2401 <reference key="source" ref="1014"/>
2402 <reference key="destination" ref="65139061"/>
2403 </object>
2404 <int key="connectionID">458</int>
2405 </object>
2406 <object class="IBConnectionRecord">
2407 <object class="IBActionConnection" key="connection">
2408 <string key="label">toggleAutomaticDashSubstitution:</string>
2409 <reference key="source" ref="1014"/>
2410 <reference key="destination" ref="672708820"/>
2411 </object>
2412 <int key="connectionID">461</int>
2413 </object>
2414 <object class="IBConnectionRecord">
2415 <object class="IBActionConnection" key="connection">
2416 <string key="label">toggleAutomaticTextReplacement:</string>
2417 <reference key="source" ref="1014"/>
2418 <reference key="destination" ref="537092702"/>
2419 </object>
2420 <int key="connectionID">463</int>
2421 </object>
2422 <object class="IBConnectionRecord">
2423 <object class="IBActionConnection" key="connection">
2424 <string key="label">uppercaseWord:</string>
2425 <reference key="source" ref="1014"/>
2426 <reference key="destination" ref="1060694897"/>
2427 </object>
2428 <int key="connectionID">464</int>
2429 </object>
2430 <object class="IBConnectionRecord">
2431 <object class="IBActionConnection" key="connection">
2432 <string key="label">capitalizeWord:</string>
2433 <reference key="source" ref="1014"/>
2434 <reference key="destination" ref="56570060"/>
2435 </object>
2436 <int key="connectionID">467</int>
2437 </object>
2438 <object class="IBConnectionRecord">
2439 <object class="IBActionConnection" key="connection">
2440 <string key="label">lowercaseWord:</string>
2441 <reference key="source" ref="1014"/>
2442 <reference key="destination" ref="879586729"/>
2443 </object>
2444 <int key="connectionID">468</int>
2445 </object>
2446 <object class="IBConnectionRecord">
2447 <object class="IBActionConnection" key="connection">
2448 <string key="label">pasteAsPlainText:</string>
2449 <reference key="source" ref="1014"/>
2450 <reference key="destination" ref="82994268"/>
2451 </object>
2452 <int key="connectionID">486</int>
2453 </object>
2454 <object class="IBConnectionRecord">
2455 <object class="IBActionConnection" key="connection">
2456 <string key="label">performFindPanelAction:</string>
2457 <reference key="source" ref="1014"/>
2458 <reference key="destination" ref="326711663"/>
2459 </object>
2460 <int key="connectionID">487</int>
2461 </object>
2462 <object class="IBConnectionRecord">
2463 <object class="IBActionConnection" key="connection">
2464 <string key="label">performFindPanelAction:</string>
2465 <reference key="source" ref="1014"/>
2466 <reference key="destination" ref="270902937"/>
2467 </object>
2468 <int key="connectionID">488</int>
2469 </object>
2470 <object class="IBConnectionRecord">
2471 <object class="IBActionConnection" key="connection">
2472 <string key="label">performFindPanelAction:</string>
2473 <reference key="source" ref="1014"/>
2474 <reference key="destination" ref="159080638"/>
2475 </object>
2476 <int key="connectionID">489</int>
2477 </object>
2478 <object class="IBConnectionRecord">
2479 <object class="IBActionConnection" key="connection">
2480 <string key="label">showHelp:</string>
2481 <reference key="source" ref="1014"/>
2482 <reference key="destination" ref="105068016"/>
2483 </object>
2484 <int key="connectionID">493</int>
2485 </object>
2486 <object class="IBConnectionRecord">
2487 <object class="IBActionConnection" key="connection">
2488 <string key="label">performFindPanelAction:</string>
2489 <reference key="source" ref="1014"/>
2490 <reference key="destination" ref="738670835"/>
2491 </object>
2492 <int key="connectionID">535</int>
2493 </object>
2494 <object class="IBConnectionRecord">
2495 <object class="IBOutletConnection" key="connection">
2496 <string key="label">window</string>
2497 <reference key="source" ref="976324537"/>
2498 <reference key="destination" ref="972006081"/>
2499 </object>
2500 <int key="connectionID">532</int>
2501 </object>
2502 <object class="IBConnectionRecord">
2503 <object class="IBOutletConnection" key="connection">
2504 <string key="label">logger</string>
2505 <reference key="source" ref="976324537"/>
2506 <reference key="destination" ref="827877557"/>
2507 </object>
2508 <int key="connectionID">572</int>
2509 </object>
2510 <object class="IBConnectionRecord">
2511 <object class="IBOutletConnection" key="connection">
2512 <string key="label">toolbar</string>
2513 <reference key="source" ref="976324537"/>
2514 <reference key="destination" ref="185334702"/>
2515 </object>
2516 <int key="connectionID">1020</int>
2517 </object>
2518 <object class="IBConnectionRecord">
2519 <object class="IBActionConnection" key="connection">
2520 <string key="label">abortXfer:</string>
2521 <reference key="source" ref="976324537"/>
2522 <reference key="destination" ref="964116338"/>
2523 </object>
2524 <int key="connectionID">1142</int>
2525 </object>
2526 <object class="IBConnectionRecord">
2527 <object class="IBActionConnection" key="connection">
2528 <string key="label">abortXfer:</string>
2529 <reference key="source" ref="976324537"/>
2530 <reference key="destination" ref="1051457108"/>
2531 </object>
2532 <int key="connectionID">1143</int>
2533 </object>
2534 <object class="IBConnectionRecord">
2535 <object class="IBActionConnection" key="connection">
2536 <string key="label">getFile:</string>
2537 <reference key="source" ref="976324537"/>
2538 <reference key="destination" ref="210005870"/>
2539 </object>
2540 <int key="connectionID">1144</int>
2541 </object>
2542 <object class="IBConnectionRecord">
2543 <object class="IBActionConnection" key="connection">
2544 <string key="label">putFile:</string>
2545 <reference key="source" ref="976324537"/>
2546 <reference key="destination" ref="163657319"/>
2547 </object>
2548 <int key="connectionID">1145</int>
2549 </object>
2550 <object class="IBConnectionRecord">
2551 <object class="IBActionConnection" key="connection">
2552 <string key="label">putFile:</string>
2553 <reference key="source" ref="976324537"/>
2554 <reference key="destination" ref="684754710"/>
2555 </object>
2556 <int key="connectionID">1146</int>
2557 </object>
2558 <object class="IBConnectionRecord">
2559 <object class="IBOutletConnection" key="connection">
2560 <string key="label">preferencesWindow</string>
2561 <reference key="source" ref="976324537"/>
2562 <reference key="destination" ref="759947593"/>
2563 </object>
2564 <int key="connectionID">1147</int>
2565 </object>
2566 <object class="IBConnectionRecord">
2567 <object class="IBOutletConnection" key="connection">
2568 <string key="label">theDefaults</string>
2569 <reference key="source" ref="976324537"/>
2570 <reference key="destination" ref="228329665"/>
2571 </object>
2572 <int key="connectionID">1148</int>
2573 </object>
2574 <object class="IBConnectionRecord">
2575 <object class="IBActionConnection" key="connection">
2576 <string key="label">showPreferences:</string>
2577 <reference key="source" ref="976324537"/>
2578 <reference key="destination" ref="609285721"/>
2579 </object>
2580 <int key="connectionID">1149</int>
2581 </object>
2582 <object class="IBConnectionRecord">
2583 <object class="IBActionConnection" key="connection">
2584 <string key="label">pickLogFile:</string>
2585 <reference key="source" ref="976324537"/>
2586 <reference key="destination" ref="379050521"/>
2587 </object>
2588 <int key="connectionID">1151</int>
2589 </object>
2590 <object class="IBConnectionRecord">
2591 <object class="IBOutletConnection" key="connection">
2592 <string key="label">xfersView</string>
2593 <reference key="source" ref="976324537"/>
2594 <reference key="destination" ref="45603544"/>
2595 </object>
2596 <int key="connectionID">1152</int>
2597 </object>
2598 <object class="IBConnectionRecord">
2599 <object class="IBActionConnection" key="connection">
2600 <string key="label">getFile:</string>
2601 <reference key="source" ref="976324537"/>
2602 <reference key="destination" ref="869342911"/>
2603 </object>
2604 <int key="connectionID">1154</int>
2605 </object>
2606 <object class="IBConnectionRecord">
2607 <object class="IBActionConnection" key="connection">
2608 <string key="label">pickTFTPFolder:</string>
2609 <reference key="source" ref="976324537"/>
2610 <reference key="destination" ref="108023427"/>
2611 </object>
2612 <int key="connectionID">1162</int>
2613 </object>
2614 <object class="IBConnectionRecord">
2615 <object class="IBOutletConnection" key="connection">
2616 <string key="label">delegate</string>
2617 <reference key="source" ref="45603544"/>
2618 <reference key="destination" ref="976324537"/>
2619 </object>
2620 <int key="connectionID">1019</int>
2621 </object>
2622 <object class="IBConnectionRecord">
2623 <object class="IBBindingConnection" key="connection">
2624 <string key="label">enabled: self.hasSelectedXfer</string>
2625 <reference key="source" ref="1051457108"/>
2626 <reference key="destination" ref="976324537"/>
2627 <object class="NSNibBindingConnector" key="connector">
2628 <reference key="NSSource" ref="1051457108"/>
2629 <reference key="NSDestination" ref="976324537"/>
2630 <string key="NSLabel">enabled: self.hasSelectedXfer</string>
2631 <string key="NSBinding">enabled</string>
2632 <string key="NSKeyPath">self.hasSelectedXfer</string>
2633 <int key="NSNibBindingConnectorVersion">2</int>
2634 </object>
2635 </object>
2636 <int key="connectionID">1023</int>
2637 </object>
2638 <object class="IBConnectionRecord">
2639 <object class="IBBindingConnection" key="connection">
2640 <string key="label">enabled: self.hasSelectedXfer</string>
2641 <reference key="source" ref="964116338"/>
2642 <reference key="destination" ref="976324537"/>
2643 <object class="NSNibBindingConnector" key="connector">
2644 <reference key="NSSource" ref="964116338"/>
2645 <reference key="NSDestination" ref="976324537"/>
2646 <string key="NSLabel">enabled: self.hasSelectedXfer</string>
2647 <string key="NSBinding">enabled</string>
2648 <string key="NSKeyPath">self.hasSelectedXfer</string>
2649 <int key="NSNibBindingConnectorVersion">2</int>
2650 </object>
2651 </object>
2652 <int key="connectionID">1027</int>
2653 </object>
2654 <object class="IBConnectionRecord">
2655 <object class="IBOutletConnection" key="connection">
2656 <string key="label">formatter</string>
2657 <reference key="source" ref="419622798"/>
2658 <reference key="destination" ref="1047776860"/>
2659 </object>
2660 <int key="connectionID">1103</int>
2661 </object>
2662 <object class="IBConnectionRecord">
2663 <object class="IBBindingConnection" key="connection">
2664 <string key="label">value: values.bindAddress</string>
2665 <reference key="source" ref="419622798"/>
2666 <reference key="destination" ref="228329665"/>
2667 <object class="NSNibBindingConnector" key="connector">
2668 <reference key="NSSource" ref="419622798"/>
2669 <reference key="NSDestination" ref="228329665"/>
2670 <string key="NSLabel">value: values.bindAddress</string>
2671 <string key="NSBinding">value</string>
2672 <string key="NSKeyPath">values.bindAddress</string>
2673 <dictionary key="NSOptions">
2674 <boolean value="YES" key="NSValidatesImmediately"/>
2675 <string key="NSValueTransformerName">IPTransformer</string>
2676 </dictionary>
2677 <int key="NSNibBindingConnectorVersion">2</int>
2678 </object>
2679 </object>
2680 <int key="connectionID">1164</int>
2681 </object>
2682 <object class="IBConnectionRecord">
2683 <object class="IBOutletConnection" key="connection">
2684 <string key="label">formatter</string>
2685 <reference key="source" ref="711665850"/>
2686 <reference key="destination" ref="668310416"/>
2687 </object>
2688 <int key="connectionID">1097</int>
2689 </object>
2690 <object class="IBConnectionRecord">
2691 <object class="IBBindingConnection" key="connection">
2692 <string key="label">value: values.bindPort</string>
2693 <reference key="source" ref="711665850"/>
2694 <reference key="destination" ref="228329665"/>
2695 <object class="NSNibBindingConnector" key="connector">
2696 <reference key="NSSource" ref="711665850"/>
2697 <reference key="NSDestination" ref="228329665"/>
2698 <string key="NSLabel">value: values.bindPort</string>
2699 <string key="NSBinding">value</string>
2700 <string key="NSKeyPath">values.bindPort</string>
2701 <object class="NSDictionary" key="NSOptions">
2702 <string key="NS.key.0">NSValueTransformerName</string>
2703 <string key="NS.object.0">NumberTransformer</string>
2704 </object>
2705 <int key="NSNibBindingConnectorVersion">2</int>
2706 </object>
2707 </object>
2708 <int key="connectionID">1153</int>
2709 </object>
2710 <object class="IBConnectionRecord">
2711 <object class="IBBindingConnection" key="connection">
2712 <string key="label">value: values.listen</string>
2713 <reference key="source" ref="230958321"/>
2714 <reference key="destination" ref="228329665"/>
2715 <object class="NSNibBindingConnector" key="connector">
2716 <reference key="NSSource" ref="230958321"/>
2717 <reference key="NSDestination" ref="228329665"/>
2718 <string key="NSLabel">value: values.listen</string>
2719 <string key="NSBinding">value</string>
2720 <string key="NSKeyPath">values.listen</string>
2721 <int key="NSNibBindingConnectorVersion">2</int>
2722 </object>
2723 </object>
2724 <int key="connectionID">1140</int>
2725 </object>
2726 <object class="IBConnectionRecord">
2727 <object class="IBBindingConnection" key="connection">
2728 <string key="label">value: values.listen</string>
2729 <reference key="source" ref="441222556"/>
2730 <reference key="destination" ref="228329665"/>
2731 <object class="NSNibBindingConnector" key="connector">
2732 <reference key="NSSource" ref="441222556"/>
2733 <reference key="NSDestination" ref="228329665"/>
2734 <string key="NSLabel">value: values.listen</string>
2735 <string key="NSBinding">value</string>
2736 <string key="NSKeyPath">values.listen</string>
2737 <int key="NSNibBindingConnectorVersion">2</int>
2738 </object>
2739 </object>
2740 <int key="connectionID">1158</int>
2741 </object>
2742 <object class="IBConnectionRecord">
2743 <object class="IBBindingConnection" key="connection">
2744 <string key="label">value: values.tftpRoot</string>
2745 <reference key="source" ref="328098120"/>
2746 <reference key="destination" ref="228329665"/>
2747 <object class="NSNibBindingConnector" key="connector">
2748 <reference key="NSSource" ref="328098120"/>
2749 <reference key="NSDestination" ref="228329665"/>
2750 <string key="NSLabel">value: values.tftpRoot</string>
2751 <string key="NSBinding">value</string>
2752 <string key="NSKeyPath">values.tftpRoot</string>
2753 <int key="NSNibBindingConnectorVersion">2</int>
2754 </object>
2755 </object>
2756 <int key="connectionID">1134</int>
2757 </object>
2758 <object class="IBConnectionRecord">
2759 <object class="IBBindingConnection" key="connection">
2760 <string key="label">selectedTag: values.rrqBehavior</string>
2761 <reference key="source" ref="973753659"/>
2762 <reference key="destination" ref="228329665"/>
2763 <object class="NSNibBindingConnector" key="connector">
2764 <reference key="NSSource" ref="973753659"/>
2765 <reference key="NSDestination" ref="228329665"/>
2766 <string key="NSLabel">selectedTag: values.rrqBehavior</string>
2767 <string key="NSBinding">selectedTag</string>
2768 <string key="NSKeyPath">values.rrqBehavior</string>
2769 <int key="NSNibBindingConnectorVersion">2</int>
2770 </object>
2771 </object>
2772 <int key="connectionID">1133</int>
2773 </object>
2774 <object class="IBConnectionRecord">
2775 <object class="IBBindingConnection" key="connection">
2776 <string key="label">selectedTag: values.wrqBehavior</string>
2777 <reference key="source" ref="82294173"/>
2778 <reference key="destination" ref="228329665"/>
2779 <object class="NSNibBindingConnector" key="connector">
2780 <reference key="NSSource" ref="82294173"/>
2781 <reference key="NSDestination" ref="228329665"/>
2782 <string key="NSLabel">selectedTag: values.wrqBehavior</string>
2783 <string key="NSBinding">selectedTag</string>
2784 <string key="NSKeyPath">values.wrqBehavior</string>
2785 <int key="NSNibBindingConnectorVersion">2</int>
2786 </object>
2787 </object>
2788 <int key="connectionID">1135</int>
2789 </object>
2790 <object class="IBConnectionRecord">
2791 <object class="IBBindingConnection" key="connection">
2792 <string key="label">value: values.logFile</string>
2793 <reference key="source" ref="823695658"/>
2794 <reference key="destination" ref="228329665"/>
2795 <object class="NSNibBindingConnector" key="connector">
2796 <reference key="NSSource" ref="823695658"/>
2797 <reference key="NSDestination" ref="228329665"/>
2798 <string key="NSLabel">value: values.logFile</string>
2799 <string key="NSBinding">value</string>
2800 <string key="NSKeyPath">values.logFile</string>
2801 <int key="NSNibBindingConnectorVersion">2</int>
2802 </object>
2803 </object>
2804 <int key="connectionID">1136</int>
2805 </object>
2806 </array>
2807 <object class="IBMutableOrderedSet" key="objectRecords">
2808 <array key="orderedObjects">
2809 <object class="IBObjectRecord">
2810 <int key="objectID">0</int>
2811 <reference key="object" ref="0"/>
2812 <reference key="children" ref="1048"/>
2813 <nil key="parent"/>
2814 </object>
2815 <object class="IBObjectRecord">
2816 <int key="objectID">-2</int>
2817 <reference key="object" ref="1021"/>
2818 <reference key="parent" ref="0"/>
2819 <string key="objectName">File's Owner</string>
2820 </object>
2821 <object class="IBObjectRecord">
2822 <int key="objectID">-1</int>
2823 <reference key="object" ref="1014"/>
2824 <reference key="parent" ref="0"/>
2825 <string key="objectName">First Responder</string>
2826 </object>
2827 <object class="IBObjectRecord">
2828 <int key="objectID">-3</int>
2829 <reference key="object" ref="1050"/>
2830 <reference key="parent" ref="0"/>
2831 <string key="objectName">Application</string>
2832 </object>
2833 <object class="IBObjectRecord">
2834 <int key="objectID">29</int>
2835 <reference key="object" ref="649796088"/>
2836 <array class="NSMutableArray" key="children">
2837 <reference ref="713487014"/>
2838 <reference ref="694149608"/>
2839 <reference ref="952259628"/>
2840 <reference ref="379814623"/>
2841 <reference ref="586577488"/>
2842 <reference ref="448692316"/>
2843 </array>
2844 <reference key="parent" ref="0"/>
2845 </object>
2846 <object class="IBObjectRecord">
2847 <int key="objectID">19</int>
2848 <reference key="object" ref="713487014"/>
2849 <array class="NSMutableArray" key="children">
2850 <reference ref="835318025"/>
2851 </array>
2852 <reference key="parent" ref="649796088"/>
2853 </object>
2854 <object class="IBObjectRecord">
2855 <int key="objectID">56</int>
2856 <reference key="object" ref="694149608"/>
2857 <array class="NSMutableArray" key="children">
2858 <reference ref="110575045"/>
2859 </array>
2860 <reference key="parent" ref="649796088"/>
2861 </object>
2862 <object class="IBObjectRecord">
2863 <int key="objectID">217</int>
2864 <reference key="object" ref="952259628"/>
2865 <array class="NSMutableArray" key="children">
2866 <reference ref="789758025"/>
2867 </array>
2868 <reference key="parent" ref="649796088"/>
2869 </object>
2870 <object class="IBObjectRecord">
2871 <int key="objectID">83</int>
2872 <reference key="object" ref="379814623"/>
2873 <array class="NSMutableArray" key="children">
2874 <reference ref="720053764"/>
2875 </array>
2876 <reference key="parent" ref="649796088"/>
2877 </object>
2878 <object class="IBObjectRecord">
2879 <int key="objectID">81</int>
2880 <reference key="object" ref="720053764"/>
2881 <array class="NSMutableArray" key="children">
2882 <reference ref="869342911"/>
2883 <reference ref="684754710"/>
2884 <reference ref="511451131"/>
2885 <reference ref="964116338"/>
2886 </array>
2887 <reference key="parent" ref="379814623"/>
2888 </object>
2889 <object class="IBObjectRecord">
2890 <int key="objectID">205</int>
2891 <reference key="object" ref="789758025"/>
2892 <array class="NSMutableArray" key="children">
2893 <reference ref="437104165"/>
2894 <reference ref="583158037"/>
2895 <reference ref="1058277027"/>
2896 <reference ref="212016141"/>
2897 <reference ref="296257095"/>
2898 <reference ref="29853731"/>
2899 <reference ref="860595796"/>
2900 <reference ref="1040322652"/>
2901 <reference ref="790794224"/>
2902 <reference ref="892235320"/>
2903 <reference ref="972420730"/>
2904 <reference ref="676164635"/>
2905 <reference ref="507821607"/>
2906 <reference ref="288088188"/>
2907 <reference ref="82994268"/>
2908 </array>
2909 <reference key="parent" ref="952259628"/>
2910 </object>
2911 <object class="IBObjectRecord">
2912 <int key="objectID">202</int>
2913 <reference key="object" ref="437104165"/>
2914 <reference key="parent" ref="789758025"/>
2915 </object>
2916 <object class="IBObjectRecord">
2917 <int key="objectID">198</int>
2918 <reference key="object" ref="583158037"/>
2919 <reference key="parent" ref="789758025"/>
2920 </object>
2921 <object class="IBObjectRecord">
2922 <int key="objectID">207</int>
2923 <reference key="object" ref="1058277027"/>
2924 <reference key="parent" ref="789758025"/>
2925 </object>
2926 <object class="IBObjectRecord">
2927 <int key="objectID">214</int>
2928 <reference key="object" ref="212016141"/>
2929 <reference key="parent" ref="789758025"/>
2930 </object>
2931 <object class="IBObjectRecord">
2932 <int key="objectID">199</int>
2933 <reference key="object" ref="296257095"/>
2934 <reference key="parent" ref="789758025"/>
2935 </object>
2936 <object class="IBObjectRecord">
2937 <int key="objectID">203</int>
2938 <reference key="object" ref="29853731"/>
2939 <reference key="parent" ref="789758025"/>
2940 </object>
2941 <object class="IBObjectRecord">
2942 <int key="objectID">197</int>
2943 <reference key="object" ref="860595796"/>
2944 <reference key="parent" ref="789758025"/>
2945 </object>
2946 <object class="IBObjectRecord">
2947 <int key="objectID">206</int>
2948 <reference key="object" ref="1040322652"/>
2949 <reference key="parent" ref="789758025"/>
2950 </object>
2951 <object class="IBObjectRecord">
2952 <int key="objectID">215</int>
2953 <reference key="object" ref="790794224"/>
2954 <reference key="parent" ref="789758025"/>
2955 </object>
2956 <object class="IBObjectRecord">
2957 <int key="objectID">218</int>
2958 <reference key="object" ref="892235320"/>
2959 <array class="NSMutableArray" key="children">
2960 <reference ref="963351320"/>
2961 </array>
2962 <reference key="parent" ref="789758025"/>
2963 </object>
2964 <object class="IBObjectRecord">
2965 <int key="objectID">216</int>
2966 <reference key="object" ref="972420730"/>
2967 <array class="NSMutableArray" key="children">
2968 <reference ref="769623530"/>
2969 </array>
2970 <reference key="parent" ref="789758025"/>
2971 </object>
2972 <object class="IBObjectRecord">
2973 <int key="objectID">200</int>
2974 <reference key="object" ref="769623530"/>
2975 <array class="NSMutableArray" key="children">
2976 <reference ref="948374510"/>
2977 <reference ref="96193923"/>
2978 <reference ref="679648819"/>
2979 <reference ref="967646866"/>
2980 <reference ref="859480356"/>
2981 <reference ref="795346622"/>
2982 </array>
2983 <reference key="parent" ref="972420730"/>
2984 </object>
2985 <object class="IBObjectRecord">
2986 <int key="objectID">219</int>
2987 <reference key="object" ref="948374510"/>
2988 <reference key="parent" ref="769623530"/>
2989 </object>
2990 <object class="IBObjectRecord">
2991 <int key="objectID">201</int>
2992 <reference key="object" ref="96193923"/>
2993 <reference key="parent" ref="769623530"/>
2994 </object>
2995 <object class="IBObjectRecord">
2996 <int key="objectID">204</int>
2997 <reference key="object" ref="679648819"/>
2998 <reference key="parent" ref="769623530"/>
2999 </object>
3000 <object class="IBObjectRecord">
3001 <int key="objectID">220</int>
3002 <reference key="object" ref="963351320"/>
3003 <array class="NSMutableArray" key="children">
3004 <reference ref="270902937"/>
3005 <reference ref="88285865"/>
3006 <reference ref="159080638"/>
3007 <reference ref="326711663"/>
3008 <reference ref="447796847"/>
3009 <reference ref="738670835"/>
3010 </array>
3011 <reference key="parent" ref="892235320"/>
3012 </object>
3013 <object class="IBObjectRecord">
3014 <int key="objectID">213</int>
3015 <reference key="object" ref="270902937"/>
3016 <reference key="parent" ref="963351320"/>
3017 </object>
3018 <object class="IBObjectRecord">
3019 <int key="objectID">210</int>
3020 <reference key="object" ref="88285865"/>
3021 <reference key="parent" ref="963351320"/>
3022 </object>
3023 <object class="IBObjectRecord">
3024 <int key="objectID">221</int>
3025 <reference key="object" ref="159080638"/>
3026 <reference key="parent" ref="963351320"/>
3027 </object>
3028 <object class="IBObjectRecord">
3029 <int key="objectID">208</int>
3030 <reference key="object" ref="326711663"/>
3031 <reference key="parent" ref="963351320"/>
3032 </object>
3033 <object class="IBObjectRecord">
3034 <int key="objectID">209</int>
3035 <reference key="object" ref="447796847"/>
3036 <reference key="parent" ref="963351320"/>
3037 </object>
3038 <object class="IBObjectRecord">
3039 <int key="objectID">57</int>
3040 <reference key="object" ref="110575045"/>
3041 <array class="NSMutableArray" key="children">
3042 <reference ref="238522557"/>
3043 <reference ref="755159360"/>
3044 <reference ref="908899353"/>
3045 <reference ref="632727374"/>
3046 <reference ref="646227648"/>
3047 <reference ref="609285721"/>
3048 <reference ref="481834944"/>
3049 <reference ref="304266470"/>
3050 <reference ref="1046388886"/>
3051 <reference ref="1056857174"/>
3052 <reference ref="342932134"/>
3053 </array>
3054 <reference key="parent" ref="694149608"/>
3055 </object>
3056 <object class="IBObjectRecord">
3057 <int key="objectID">58</int>
3058 <reference key="object" ref="238522557"/>
3059 <reference key="parent" ref="110575045"/>
3060 </object>
3061 <object class="IBObjectRecord">
3062 <int key="objectID">134</int>
3063 <reference key="object" ref="755159360"/>
3064 <reference key="parent" ref="110575045"/>
3065 </object>
3066 <object class="IBObjectRecord">
3067 <int key="objectID">150</int>
3068 <reference key="object" ref="908899353"/>
3069 <reference key="parent" ref="110575045"/>
3070 </object>
3071 <object class="IBObjectRecord">
3072 <int key="objectID">136</int>
3073 <reference key="object" ref="632727374"/>
3074 <reference key="parent" ref="110575045"/>
3075 </object>
3076 <object class="IBObjectRecord">
3077 <int key="objectID">144</int>
3078 <reference key="object" ref="646227648"/>
3079 <reference key="parent" ref="110575045"/>
3080 </object>
3081 <object class="IBObjectRecord">
3082 <int key="objectID">129</int>
3083 <reference key="object" ref="609285721"/>
3084 <reference key="parent" ref="110575045"/>
3085 </object>
3086 <object class="IBObjectRecord">
3087 <int key="objectID">143</int>
3088 <reference key="object" ref="481834944"/>
3089 <reference key="parent" ref="110575045"/>
3090 </object>
3091 <object class="IBObjectRecord">
3092 <int key="objectID">236</int>
3093 <reference key="object" ref="304266470"/>
3094 <reference key="parent" ref="110575045"/>
3095 </object>
3096 <object class="IBObjectRecord">
3097 <int key="objectID">131</int>
3098 <reference key="object" ref="1046388886"/>
3099 <array class="NSMutableArray" key="children">
3100 <reference ref="752062318"/>
3101 </array>
3102 <reference key="parent" ref="110575045"/>
3103 </object>
3104 <object class="IBObjectRecord">
3105 <int key="objectID">149</int>
3106 <reference key="object" ref="1056857174"/>
3107 <reference key="parent" ref="110575045"/>
3108 </object>
3109 <object class="IBObjectRecord">
3110 <int key="objectID">145</int>
3111 <reference key="object" ref="342932134"/>
3112 <reference key="parent" ref="110575045"/>
3113 </object>
3114 <object class="IBObjectRecord">
3115 <int key="objectID">130</int>
3116 <reference key="object" ref="752062318"/>
3117 <reference key="parent" ref="1046388886"/>
3118 </object>
3119 <object class="IBObjectRecord">
3120 <int key="objectID">24</int>
3121 <reference key="object" ref="835318025"/>
3122 <array class="NSMutableArray" key="children">
3123 <reference ref="299356726"/>
3124 <reference ref="625202149"/>
3125 <reference ref="575023229"/>
3126 <reference ref="1011231497"/>
3127 </array>
3128 <reference key="parent" ref="713487014"/>
3129 </object>
3130 <object class="IBObjectRecord">
3131 <int key="objectID">92</int>
3132 <reference key="object" ref="299356726"/>
3133 <reference key="parent" ref="835318025"/>
3134 </object>
3135 <object class="IBObjectRecord">
3136 <int key="objectID">5</int>
3137 <reference key="object" ref="625202149"/>
3138 <reference key="parent" ref="835318025"/>
3139 </object>
3140 <object class="IBObjectRecord">
3141 <int key="objectID">239</int>
3142 <reference key="object" ref="575023229"/>
3143 <reference key="parent" ref="835318025"/>
3144 </object>
3145 <object class="IBObjectRecord">
3146 <int key="objectID">23</int>
3147 <reference key="object" ref="1011231497"/>
3148 <reference key="parent" ref="835318025"/>
3149 </object>
3150 <object class="IBObjectRecord">
3151 <int key="objectID">295</int>
3152 <reference key="object" ref="586577488"/>
3153 <array class="NSMutableArray" key="children">
3154 <reference ref="466310130"/>
3155 </array>
3156 <reference key="parent" ref="649796088"/>
3157 </object>
3158 <object class="IBObjectRecord">
3159 <int key="objectID">296</int>
3160 <reference key="object" ref="466310130"/>
3161 <array class="NSMutableArray" key="children">
3162 <reference ref="102151532"/>
3163 <reference ref="237841660"/>
3164 </array>
3165 <reference key="parent" ref="586577488"/>
3166 </object>
3167 <object class="IBObjectRecord">
3168 <int key="objectID">297</int>
3169 <reference key="object" ref="102151532"/>
3170 <reference key="parent" ref="466310130"/>
3171 </object>
3172 <object class="IBObjectRecord">
3173 <int key="objectID">298</int>
3174 <reference key="object" ref="237841660"/>
3175 <reference key="parent" ref="466310130"/>
3176 </object>
3177 <object class="IBObjectRecord">
3178 <int key="objectID">211</int>
3179 <reference key="object" ref="676164635"/>
3180 <array class="NSMutableArray" key="children">
3181 <reference ref="785027613"/>
3182 </array>
3183 <reference key="parent" ref="789758025"/>
3184 </object>
3185 <object class="IBObjectRecord">
3186 <int key="objectID">212</int>
3187 <reference key="object" ref="785027613"/>
3188 <array class="NSMutableArray" key="children">
3189 <reference ref="680220178"/>
3190 <reference ref="731782645"/>
3191 </array>
3192 <reference key="parent" ref="676164635"/>
3193 </object>
3194 <object class="IBObjectRecord">
3195 <int key="objectID">195</int>
3196 <reference key="object" ref="680220178"/>
3197 <reference key="parent" ref="785027613"/>
3198 </object>
3199 <object class="IBObjectRecord">
3200 <int key="objectID">196</int>
3201 <reference key="object" ref="731782645"/>
3202 <reference key="parent" ref="785027613"/>
3203 </object>
3204 <object class="IBObjectRecord">
3205 <int key="objectID">346</int>
3206 <reference key="object" ref="967646866"/>
3207 <reference key="parent" ref="769623530"/>
3208 </object>
3209 <object class="IBObjectRecord">
3210 <int key="objectID">348</int>
3211 <reference key="object" ref="507821607"/>
3212 <array class="NSMutableArray" key="children">
3213 <reference ref="698887838"/>
3214 </array>
3215 <reference key="parent" ref="789758025"/>
3216 </object>
3217 <object class="IBObjectRecord">
3218 <int key="objectID">349</int>
3219 <reference key="object" ref="698887838"/>
3220 <array class="NSMutableArray" key="children">
3221 <reference ref="605118523"/>
3222 <reference ref="197661976"/>
3223 <reference ref="708854459"/>
3224 <reference ref="65139061"/>
3225 <reference ref="19036812"/>
3226 <reference ref="672708820"/>
3227 <reference ref="537092702"/>
3228 </array>
3229 <reference key="parent" ref="507821607"/>
3230 </object>
3231 <object class="IBObjectRecord">
3232 <int key="objectID">350</int>
3233 <reference key="object" ref="605118523"/>
3234 <reference key="parent" ref="698887838"/>
3235 </object>
3236 <object class="IBObjectRecord">
3237 <int key="objectID">351</int>
3238 <reference key="object" ref="197661976"/>
3239 <reference key="parent" ref="698887838"/>
3240 </object>
3241 <object class="IBObjectRecord">
3242 <int key="objectID">354</int>
3243 <reference key="object" ref="708854459"/>
3244 <reference key="parent" ref="698887838"/>
3245 </object>
3246 <object class="IBObjectRecord">
3247 <int key="objectID">371</int>
3248 <reference key="object" ref="972006081"/>
3249 <array class="NSMutableArray" key="children">
3250 <reference ref="439893737"/>
3251 <reference ref="185334702"/>
3252 </array>
3253 <reference key="parent" ref="0"/>
3254 <string key="objectName">Window - PumpKIN</string>
3255 </object>
3256 <object class="IBObjectRecord">
3257 <int key="objectID">372</int>
3258 <reference key="object" ref="439893737"/>
3259 <array class="NSMutableArray" key="children">
3260 <reference ref="250587056"/>
3261 <reference ref="639837771"/>
3262 </array>
3263 <reference key="parent" ref="972006081"/>
3264 </object>
3265 <object class="IBObjectRecord">
3266 <int key="objectID">420</int>
3267 <reference key="object" ref="755631768"/>
3268 <reference key="parent" ref="0"/>
3269 </object>
3270 <object class="IBObjectRecord">
3271 <int key="objectID">450</int>
3272 <reference key="object" ref="288088188"/>
3273 <array class="NSMutableArray" key="children">
3274 <reference ref="579392910"/>
3275 </array>
3276 <reference key="parent" ref="789758025"/>
3277 </object>
3278 <object class="IBObjectRecord">
3279 <int key="objectID">451</int>
3280 <reference key="object" ref="579392910"/>
3281 <array class="NSMutableArray" key="children">
3282 <reference ref="1060694897"/>
3283 <reference ref="879586729"/>
3284 <reference ref="56570060"/>
3285 </array>
3286 <reference key="parent" ref="288088188"/>
3287 </object>
3288 <object class="IBObjectRecord">
3289 <int key="objectID">452</int>
3290 <reference key="object" ref="1060694897"/>
3291 <reference key="parent" ref="579392910"/>
3292 </object>
3293 <object class="IBObjectRecord">
3294 <int key="objectID">453</int>
3295 <reference key="object" ref="859480356"/>
3296 <reference key="parent" ref="769623530"/>
3297 </object>
3298 <object class="IBObjectRecord">
3299 <int key="objectID">454</int>
3300 <reference key="object" ref="795346622"/>
3301 <reference key="parent" ref="769623530"/>
3302 </object>
3303 <object class="IBObjectRecord">
3304 <int key="objectID">457</int>
3305 <reference key="object" ref="65139061"/>
3306 <reference key="parent" ref="698887838"/>
3307 </object>
3308 <object class="IBObjectRecord">
3309 <int key="objectID">459</int>
3310 <reference key="object" ref="19036812"/>
3311 <reference key="parent" ref="698887838"/>
3312 </object>
3313 <object class="IBObjectRecord">
3314 <int key="objectID">460</int>
3315 <reference key="object" ref="672708820"/>
3316 <reference key="parent" ref="698887838"/>
3317 </object>
3318 <object class="IBObjectRecord">
3319 <int key="objectID">462</int>
3320 <reference key="object" ref="537092702"/>
3321 <reference key="parent" ref="698887838"/>
3322 </object>
3323 <object class="IBObjectRecord">
3324 <int key="objectID">465</int>
3325 <reference key="object" ref="879586729"/>
3326 <reference key="parent" ref="579392910"/>
3327 </object>
3328 <object class="IBObjectRecord">
3329 <int key="objectID">466</int>
3330 <reference key="object" ref="56570060"/>
3331 <reference key="parent" ref="579392910"/>
3332 </object>
3333 <object class="IBObjectRecord">
3334 <int key="objectID">485</int>
3335 <reference key="object" ref="82994268"/>
3336 <reference key="parent" ref="789758025"/>
3337 </object>
3338 <object class="IBObjectRecord">
3339 <int key="objectID">490</int>
3340 <reference key="object" ref="448692316"/>
3341 <array class="NSMutableArray" key="children">
3342 <reference ref="992780483"/>
3343 </array>
3344 <reference key="parent" ref="649796088"/>
3345 </object>
3346 <object class="IBObjectRecord">
3347 <int key="objectID">491</int>
3348 <reference key="object" ref="992780483"/>
3349 <array class="NSMutableArray" key="children">
3350 <reference ref="105068016"/>
3351 </array>
3352 <reference key="parent" ref="448692316"/>
3353 </object>
3354 <object class="IBObjectRecord">
3355 <int key="objectID">492</int>
3356 <reference key="object" ref="105068016"/>
3357 <reference key="parent" ref="992780483"/>
3358 </object>
3359 <object class="IBObjectRecord">
3360 <int key="objectID">494</int>
3361 <reference key="object" ref="976324537"/>
3362 <reference key="parent" ref="0"/>
3363 </object>
3364 <object class="IBObjectRecord">
3365 <int key="objectID">534</int>
3366 <reference key="object" ref="738670835"/>
3367 <reference key="parent" ref="963351320"/>
3368 </object>
3369 <object class="IBObjectRecord">
3370 <int key="objectID">536</int>
3371 <reference key="object" ref="250587056"/>
3372 <array class="NSMutableArray" key="children">
3373 <reference ref="328183451"/>
3374 <reference ref="427087625"/>
3375 </array>
3376 <reference key="parent" ref="439893737"/>
3377 </object>
3378 <object class="IBObjectRecord">
3379 <int key="objectID">537</int>
3380 <reference key="object" ref="328183451"/>
3381 <array class="NSMutableArray" key="children">
3382 <reference ref="192988542"/>
3383 </array>
3384 <reference key="parent" ref="250587056"/>
3385 </object>
3386 <object class="IBObjectRecord">
3387 <int key="objectID">538</int>
3388 <reference key="object" ref="427087625"/>
3389 <array class="NSMutableArray" key="children">
3390 <reference ref="356109671"/>
3391 </array>
3392 <reference key="parent" ref="250587056"/>
3393 </object>
3394 <object class="IBObjectRecord">
3395 <int key="objectID">547</int>
3396 <reference key="object" ref="356109671"/>
3397 <array class="NSMutableArray" key="children">
3398 <reference ref="275648235"/>
3399 <reference ref="4720790"/>
3400 <reference ref="827877557"/>
3401 </array>
3402 <reference key="parent" ref="427087625"/>
3403 </object>
3404 <object class="IBObjectRecord">
3405 <int key="objectID">548</int>
3406 <reference key="object" ref="275648235"/>
3407 <reference key="parent" ref="356109671"/>
3408 </object>
3409 <object class="IBObjectRecord">
3410 <int key="objectID">549</int>
3411 <reference key="object" ref="4720790"/>
3412 <reference key="parent" ref="356109671"/>
3413 </object>
3414 <object class="IBObjectRecord">
3415 <int key="objectID">550</int>
3416 <reference key="object" ref="827877557"/>
3417 <reference key="parent" ref="356109671"/>
3418 </object>
3419 <object class="IBObjectRecord">
3420 <int key="objectID">551</int>
3421 <reference key="object" ref="192988542"/>
3422 <array class="NSMutableArray" key="children">
3423 <reference ref="600095476"/>
3424 <reference ref="1022673745"/>
3425 <reference ref="1046047013"/>
3426 <reference ref="45603544"/>
3427 </array>
3428 <reference key="parent" ref="328183451"/>
3429 </object>
3430 <object class="IBObjectRecord">
3431 <int key="objectID">552</int>
3432 <reference key="object" ref="600095476"/>
3433 <reference key="parent" ref="192988542"/>
3434 </object>
3435 <object class="IBObjectRecord">
3436 <int key="objectID">553</int>
3437 <reference key="object" ref="1022673745"/>
3438 <reference key="parent" ref="192988542"/>
3439 </object>
3440 <object class="IBObjectRecord">
3441 <int key="objectID">554</int>
3442 <reference key="object" ref="1046047013"/>
3443 <reference key="parent" ref="192988542"/>
3444 </object>
3445 <object class="IBObjectRecord">
3446 <int key="objectID">555</int>
3447 <reference key="object" ref="45603544"/>
3448 <array class="NSMutableArray" key="children">
3449 <reference ref="919343863"/>
3450 <reference ref="1044915056"/>
3451 <reference ref="431807415"/>
3452 <reference ref="644944854"/>
3453 <reference ref="780404863"/>
3454 </array>
3455 <reference key="parent" ref="192988542"/>
3456 </object>
3457 <object class="IBObjectRecord">
3458 <int key="objectID">556</int>
3459 <reference key="object" ref="919343863"/>
3460 <array class="NSMutableArray" key="children">
3461 <reference ref="967877425"/>
3462 </array>
3463 <reference key="parent" ref="45603544"/>
3464 </object>
3465 <object class="IBObjectRecord">
3466 <int key="objectID">557</int>
3467 <reference key="object" ref="1044915056"/>
3468 <array class="NSMutableArray" key="children">
3469 <reference ref="1061781149"/>
3470 </array>
3471 <reference key="parent" ref="45603544"/>
3472 </object>
3473 <object class="IBObjectRecord">
3474 <int key="objectID">558</int>
3475 <reference key="object" ref="1061781149"/>
3476 <reference key="parent" ref="1044915056"/>
3477 </object>
3478 <object class="IBObjectRecord">
3479 <int key="objectID">559</int>
3480 <reference key="object" ref="967877425"/>
3481 <reference key="parent" ref="919343863"/>
3482 </object>
3483 <object class="IBObjectRecord">
3484 <int key="objectID">566</int>
3485 <reference key="object" ref="431807415"/>
3486 <array class="NSMutableArray" key="children">
3487 <reference ref="762484653"/>
3488 </array>
3489 <reference key="parent" ref="45603544"/>
3490 </object>
3491 <object class="IBObjectRecord">
3492 <int key="objectID">567</int>
3493 <reference key="object" ref="762484653"/>
3494 <reference key="parent" ref="431807415"/>
3495 </object>
3496 <object class="IBObjectRecord">
3497 <int key="objectID">568</int>
3498 <reference key="object" ref="644944854"/>
3499 <array class="NSMutableArray" key="children">
3500 <reference ref="730146075"/>
3501 </array>
3502 <reference key="parent" ref="45603544"/>
3503 </object>
3504 <object class="IBObjectRecord">
3505 <int key="objectID">569</int>
3506 <reference key="object" ref="730146075"/>
3507 <reference key="parent" ref="644944854"/>
3508 </object>
3509 <object class="IBObjectRecord">
3510 <int key="objectID">570</int>
3511 <reference key="object" ref="780404863"/>
3512 <array class="NSMutableArray" key="children">
3513 <reference ref="475925037"/>
3514 </array>
3515 <reference key="parent" ref="45603544"/>
3516 </object>
3517 <object class="IBObjectRecord">
3518 <int key="objectID">571</int>
3519 <reference key="object" ref="475925037"/>
3520 <reference key="parent" ref="780404863"/>
3521 </object>
3522 <object class="IBObjectRecord">
3523 <int key="objectID">815</int>
3524 <reference key="object" ref="759947593"/>
3525 <array class="NSMutableArray" key="children">
3526 <reference ref="929656847"/>
3527 </array>
3528 <reference key="parent" ref="0"/>
3529 <string key="objectName">Window - PumpKIN preferences</string>
3530 </object>
3531 <object class="IBObjectRecord">
3532 <int key="objectID">816</int>
3533 <reference key="object" ref="929656847"/>
3534 <array class="NSMutableArray" key="children">
3535 <reference ref="197043543"/>
3536 <reference ref="233651545"/>
3537 <reference ref="208819373"/>
3538 <reference ref="866741769"/>
3539 </array>
3540 <reference key="parent" ref="759947593"/>
3541 </object>
3542 <object class="IBObjectRecord">
3543 <int key="objectID">915</int>
3544 <reference key="object" ref="228329665"/>
3545 <reference key="parent" ref="0"/>
3546 </object>
3547 <object class="IBObjectRecord">
3548 <int key="objectID">994</int>
3549 <reference key="object" ref="185334702"/>
3550 <array class="NSMutableArray" key="children">
3551 <reference ref="166245072"/>
3552 <reference ref="106903695"/>
3553 <reference ref="210005870"/>
3554 <reference ref="163657319"/>
3555 <reference ref="1051457108"/>
3556 </array>
3557 <reference key="parent" ref="972006081"/>
3558 </object>
3559 <object class="IBObjectRecord">
3560 <int key="objectID">998</int>
3561 <reference key="object" ref="166245072"/>
3562 <reference key="parent" ref="185334702"/>
3563 </object>
3564 <object class="IBObjectRecord">
3565 <int key="objectID">999</int>
3566 <reference key="object" ref="106903695"/>
3567 <reference key="parent" ref="185334702"/>
3568 </object>
3569 <object class="IBObjectRecord">
3570 <int key="objectID">1000</int>
3571 <reference key="object" ref="210005870"/>
3572 <reference key="parent" ref="185334702"/>
3573 <string key="objectName">Toolbar Item - Get file</string>
3574 </object>
3575 <object class="IBObjectRecord">
3576 <int key="objectID">1001</int>
3577 <reference key="object" ref="163657319"/>
3578 <reference key="parent" ref="185334702"/>
3579 <string key="objectName">Toolbar Item - Put file</string>
3580 </object>
3581 <object class="IBObjectRecord">
3582 <int key="objectID">1002</int>
3583 <reference key="object" ref="1051457108"/>
3584 <reference key="parent" ref="185334702"/>
3585 <string key="objectName">Toolbar Item - Abort xfer</string>
3586 </object>
3587 <object class="IBObjectRecord">
3588 <int key="objectID">1003</int>
3589 <reference key="object" ref="869342911"/>
3590 <reference key="parent" ref="720053764"/>
3591 <string key="objectName">Menu Item - Get file</string>
3592 </object>
3593 <object class="IBObjectRecord">
3594 <int key="objectID">1004</int>
3595 <reference key="object" ref="684754710"/>
3596 <reference key="parent" ref="720053764"/>
3597 <string key="objectName">Menu Item - Put file</string>
3598 </object>
3599 <object class="IBObjectRecord">
3600 <int key="objectID">1006</int>
3601 <reference key="object" ref="511451131"/>
3602 <reference key="parent" ref="720053764"/>
3603 </object>
3604 <object class="IBObjectRecord">
3605 <int key="objectID">1007</int>
3606 <reference key="object" ref="964116338"/>
3607 <reference key="parent" ref="720053764"/>
3608 <string key="objectName">Menu Item - Abort xfer</string>
3609 </object>
3610 <object class="IBObjectRecord">
3611 <int key="objectID">1096</int>
3612 <reference key="object" ref="668310416"/>
3613 <reference key="parent" ref="0"/>
3614 <string key="objectName">Port formatter</string>
3615 </object>
3616 <object class="IBObjectRecord">
3617 <int key="objectID">1102</int>
3618 <reference key="object" ref="1047776860"/>
3619 <reference key="parent" ref="0"/>
3620 <string key="objectName">IP formatter</string>
3621 </object>
3622 <object class="IBObjectRecord">
3623 <int key="objectID">1108</int>
3624 <reference key="object" ref="208819373"/>
3625 <array class="NSMutableArray" key="children">
3626 <reference ref="328098120"/>
3627 <reference ref="240606174"/>
3628 </array>
3629 <reference key="parent" ref="929656847"/>
3630 <string key="objectName">Box - TFTP filesystem root (download path)</string>
3631 </object>
3632 <object class="IBObjectRecord">
3633 <int key="objectID">1115</int>
3634 <reference key="object" ref="240606174"/>
3635 <array class="NSMutableArray" key="children">
3636 <reference ref="108023427"/>
3637 </array>
3638 <reference key="parent" ref="208819373"/>
3639 </object>
3640 <object class="IBObjectRecord">
3641 <int key="objectID">1114</int>
3642 <reference key="object" ref="328098120"/>
3643 <array class="NSMutableArray" key="children">
3644 <reference ref="151062802"/>
3645 </array>
3646 <reference key="parent" ref="208819373"/>
3647 </object>
3648 <object class="IBObjectRecord">
3649 <int key="objectID">1117</int>
3650 <reference key="object" ref="151062802"/>
3651 <reference key="parent" ref="328098120"/>
3652 </object>
3653 <object class="IBObjectRecord">
3654 <int key="objectID">1116</int>
3655 <reference key="object" ref="108023427"/>
3656 <reference key="parent" ref="240606174"/>
3657 </object>
3658 <object class="IBObjectRecord">
3659 <int key="objectID">1106</int>
3660 <reference key="object" ref="866741769"/>
3661 <array class="NSMutableArray" key="children">
3662 <reference ref="82294173"/>
3663 </array>
3664 <reference key="parent" ref="929656847"/>
3665 </object>
3666 <object class="IBObjectRecord">
3667 <int key="objectID">1123</int>
3668 <reference key="object" ref="82294173"/>
3669 <array class="NSMutableArray" key="children">
3670 <reference ref="672179877"/>
3671 <reference ref="708384367"/>
3672 <reference ref="527645225"/>
3673 <reference ref="158682464"/>
3674 <reference ref="310101904"/>
3675 </array>
3676 <reference key="parent" ref="866741769"/>
3677 </object>
3678 <object class="IBObjectRecord">
3679 <int key="objectID">1128</int>
3680 <reference key="object" ref="672179877"/>
3681 <reference key="parent" ref="82294173"/>
3682 </object>
3683 <object class="IBObjectRecord">
3684 <int key="objectID">1127</int>
3685 <reference key="object" ref="708384367"/>
3686 <reference key="parent" ref="82294173"/>
3687 <string key="objectName">Button Cell - take all</string>
3688 </object>
3689 <object class="IBObjectRecord">
3690 <int key="objectID">1126</int>
3691 <reference key="object" ref="527645225"/>
3692 <reference key="parent" ref="82294173"/>
3693 <string key="objectName">Button Cell - prompt</string>
3694 </object>
3695 <object class="IBObjectRecord">
3696 <int key="objectID">1125</int>
3697 <reference key="object" ref="158682464"/>
3698 <reference key="parent" ref="82294173"/>
3699 <string key="objectName">Button Cell - prompt if exists</string>
3700 </object>
3701 <object class="IBObjectRecord">
3702 <int key="objectID">1124</int>
3703 <reference key="object" ref="310101904"/>
3704 <reference key="parent" ref="82294173"/>
3705 <string key="objectName">Button Cell - deny all</string>
3706 </object>
3707 <object class="IBObjectRecord">
3708 <int key="objectID">1105</int>
3709 <reference key="object" ref="233651545"/>
3710 <array class="NSMutableArray" key="children">
3711 <reference ref="823695658"/>
3712 <reference ref="379050521"/>
3713 </array>
3714 <reference key="parent" ref="929656847"/>
3715 <string key="objectName">Box - Log file (leave empty to disable logging to file)</string>
3716 </object>
3717 <object class="IBObjectRecord">
3718 <int key="objectID">1130</int>
3719 <reference key="object" ref="823695658"/>
3720 <array class="NSMutableArray" key="children">
3721 <reference ref="424316336"/>
3722 </array>
3723 <reference key="parent" ref="233651545"/>
3724 </object>
3725 <object class="IBObjectRecord">
3726 <int key="objectID">1129</int>
3727 <reference key="object" ref="379050521"/>
3728 <array class="NSMutableArray" key="children">
3729 <reference ref="621926228"/>
3730 </array>
3731 <reference key="parent" ref="233651545"/>
3732 </object>
3733 <object class="IBObjectRecord">
3734 <int key="objectID">1132</int>
3735 <reference key="object" ref="621926228"/>
3736 <reference key="parent" ref="379050521"/>
3737 </object>
3738 <object class="IBObjectRecord">
3739 <int key="objectID">1131</int>
3740 <reference key="object" ref="424316336"/>
3741 <reference key="parent" ref="823695658"/>
3742 </object>
3743 <object class="IBObjectRecord">
3744 <int key="objectID">1107</int>
3745 <reference key="object" ref="197043543"/>
3746 <array class="NSMutableArray" key="children">
3747 <reference ref="973753659"/>
3748 </array>
3749 <reference key="parent" ref="929656847"/>
3750 </object>
3751 <object class="IBObjectRecord">
3752 <int key="objectID">1118</int>
3753 <reference key="object" ref="973753659"/>
3754 <array class="NSMutableArray" key="children">
3755 <reference ref="518920277"/>
3756 <reference ref="529759421"/>
3757 <reference ref="859183946"/>
3758 <reference ref="862531403"/>
3759 </array>
3760 <reference key="parent" ref="197043543"/>
3761 </object>
3762 <object class="IBObjectRecord">
3763 <int key="objectID">1119</int>
3764 <reference key="object" ref="862531403"/>
3765 <reference key="parent" ref="973753659"/>
3766 <string key="objectName">Button Cell - deny all</string>
3767 </object>
3768 <object class="IBObjectRecord">
3769 <int key="objectID">1120</int>
3770 <reference key="object" ref="859183946"/>
3771 <reference key="parent" ref="973753659"/>
3772 <string key="objectName">Button Cell - prompt</string>
3773 </object>
3774 <object class="IBObjectRecord">
3775 <int key="objectID">1121</int>
3776 <reference key="object" ref="529759421"/>
3777 <reference key="parent" ref="973753659"/>
3778 <string key="objectName">Button Cell - give all</string>
3779 </object>
3780 <object class="IBObjectRecord">
3781 <int key="objectID">1122</int>
3782 <reference key="object" ref="518920277"/>
3783 <reference key="parent" ref="973753659"/>
3784 </object>
3785 <object class="IBObjectRecord">
3786 <int key="objectID">1161</int>
3787 <reference key="object" ref="639837771"/>
3788 <array class="NSMutableArray" key="children">
3789 <reference ref="711665850"/>
3790 <reference ref="7620662"/>
3791 <reference ref="419622798"/>
3792 <reference ref="230958321"/>
3793 </array>
3794 <reference key="parent" ref="439893737"/>
3795 </object>
3796 <object class="IBObjectRecord">
3797 <int key="objectID">1090</int>
3798 <reference key="object" ref="230958321"/>
3799 <array class="NSMutableArray" key="children">
3800 <reference ref="441222556"/>
3801 </array>
3802 <reference key="parent" ref="639837771"/>
3803 <string key="objectName">Check Box - listen</string>
3804 </object>
3805 <object class="IBObjectRecord">
3806 <int key="objectID">1091</int>
3807 <reference key="object" ref="441222556"/>
3808 <reference key="parent" ref="230958321"/>
3809 </object>
3810 <object class="IBObjectRecord">
3811 <int key="objectID">1082</int>
3812 <reference key="object" ref="419622798"/>
3813 <array class="NSMutableArray" key="children">
3814 <reference ref="226701554"/>
3815 </array>
3816 <reference key="parent" ref="639837771"/>
3817 <string key="objectName">Text Field - bind address</string>
3818 </object>
3819 <object class="IBObjectRecord">
3820 <int key="objectID">1083</int>
3821 <reference key="object" ref="226701554"/>
3822 <reference key="parent" ref="419622798"/>
3823 </object>
3824 <object class="IBObjectRecord">
3825 <int key="objectID">1086</int>
3826 <reference key="object" ref="7620662"/>
3827 <array class="NSMutableArray" key="children">
3828 <reference ref="31855702"/>
3829 </array>
3830 <reference key="parent" ref="639837771"/>
3831 </object>
3832 <object class="IBObjectRecord">
3833 <int key="objectID">1087</int>
3834 <reference key="object" ref="31855702"/>
3835 <reference key="parent" ref="7620662"/>
3836 </object>
3837 <object class="IBObjectRecord">
3838 <int key="objectID">1084</int>
3839 <reference key="object" ref="711665850"/>
3840 <array class="NSMutableArray" key="children">
3841 <reference ref="771004923"/>
3842 </array>
3843 <reference key="parent" ref="639837771"/>
3844 <string key="objectName">Text Field - bind port</string>
3845 </object>
3846 <object class="IBObjectRecord">
3847 <int key="objectID">1085</int>
3848 <reference key="object" ref="771004923"/>
3849 <reference key="parent" ref="711665850"/>
3850 </object>
3851 </array>
3852 </object>
3853 <dictionary class="NSMutableDictionary" key="flattenedProperties">
3854 <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3855 <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3856 <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3857 <string key="1000.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3858 <string key="1001.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3859 <string key="1002.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3860 <string key="1002.designableToolbarItemIdentifier">abort_xfer</string>
3861 <string key="1003.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3862 <string key="1004.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3863 <string key="1006.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3864 <string key="1007.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3865 <object class="NSMutableDictionary" key="1082.IBAttributePlaceholdersKey">
3866 <string key="NS.key.0">ToolTip</string>
3867 <object class="IBToolTipAttribute" key="NS.object.0">
3868 <string key="name">ToolTip</string>
3869 <reference key="object" ref="419622798"/>
3870 <string key="toolTip">If you only want PumpKIN to listen to TFTP request on one IP address, specify it here.</string>
3871 </object>
3872 </object>
3873 <string key="1082.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3874 <string key="1083.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3875 <object class="NSMutableDictionary" key="1084.IBAttributePlaceholdersKey">
3876 <string key="NS.key.0">ToolTip</string>
3877 <object class="IBToolTipAttribute" key="NS.object.0">
3878 <string key="name">ToolTip</string>
3879 <reference key="object" ref="711665850"/>
3880 <string key="toolTip">The standard TFTP port is 69. If you change it, make sure peers are aware of the change and support it.</string>
3881 </object>
3882 </object>
3883 <string key="1084.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3884 <string key="1085.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3885 <string key="1086.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3886 <string key="1087.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3887 <object class="NSMutableDictionary" key="1090.IBAttributePlaceholdersKey">
3888 <string key="NS.key.0">ToolTip</string>
3889 <object class="IBToolTipAttribute" key="NS.object.0">
3890 <string key="name">ToolTip</string>
3891 <reference key="object" ref="230958321"/>
3892 <string key="toolTip">When enabled, pumpkin also acts as a daemon (server). Note, that this often requires escalating privileges to bind to the privileged (69 by default) port and may also conflict if you have another tftp daemon running (you'll be notified).</string>
3893 </object>
3894 </object>
3895 <string key="1090.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3896 <string key="1091.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3897 <integer value="1041" key="1096.IBNumberFormatterBehaviorMetadataKey"/>
3898 <boolean value="YES" key="1096.IBNumberFormatterLocalizesFormatMetadataKey"/>
3899 <string key="1096.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3900 <string key="1102.CustomClassName">IPFormatter</string>
3901 <string key="1102.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3902 <string key="1105.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3903 <string key="1106.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3904 <string key="1107.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3905 <string key="1108.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3906 <object class="NSMutableDictionary" key="1114.IBAttributePlaceholdersKey">
3907 <string key="NS.key.0">ToolTip</string>
3908 <object class="IBToolTipAttribute" key="NS.object.0">
3909 <string key="name">ToolTip</string>
3910 <reference key="object" ref="328098120"/>
3911 <string key="toolTip">TFTP root is a directory where incoming WRQ transfers are saved and RRQ transfers are served from. Point it to where the file you want to transfer are.</string>
3912 </object>
3913 </object>
3914 <string key="1114.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3915 <object class="NSMutableDictionary" key="1115.IBAttributePlaceholdersKey">
3916 <string key="NS.key.0">ToolTip</string>
3917 <object class="IBToolTipAttribute" key="NS.object.0">
3918 <string key="name">ToolTip</string>
3919 <reference key="object" ref="240606174"/>
3920 <string key="toolTip">Browse for the TFTP root directory.</string>
3921 </object>
3922 </object>
3923 <string key="1115.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3924 <string key="1116.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3925 <string key="1117.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3926 <string key="1118.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3927 <object class="NSMutableDictionary" key="1119.IBAttributePlaceholdersKey">
3928 <string key="NS.key.0">ToolTip</string>
3929 <object class="IBToolTipAttribute" key="NS.object.0">
3930 <string key="name">ToolTip</string>
3931 <reference key="object" ref="862531403"/>
3932 <string key="toolTip">No incoming RRQ will be served. Acess will be invariably denied.</string>
3933 </object>
3934 </object>
3935 <string key="1119.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3936 <object class="NSMutableDictionary" key="1120.IBAttributePlaceholdersKey">
3937 <string key="NS.key.0">ToolTip</string>
3938 <object class="IBToolTipAttribute" key="NS.object.0">
3939 <string key="name">ToolTip</string>
3940 <reference key="object" ref="859183946"/>
3941 <string key="toolTip">PumpKIN will prompt the user (probably, you) whenever RRQ request comes in.</string>
3942 </object>
3943 </object>
3944 <string key="1120.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3945 <object class="NSMutableDictionary" key="1121.IBAttributePlaceholdersKey">
3946 <string key="NS.key.0">ToolTip</string>
3947 <object class="IBToolTipAttribute" key="NS.object.0">
3948 <string key="name">ToolTip</string>
3949 <reference key="object" ref="529759421"/>
3950 <string key="toolTip">Server will automatically approve all incoming RRQ transfers (as long as they stay in TFTP root, of course).</string>
3951 </object>
3952 </object>
3953 <string key="1121.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3954 <string key="1122.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3955 <string key="1123.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3956 <object class="NSMutableDictionary" key="1124.IBAttributePlaceholdersKey">
3957 <string key="NS.key.0">ToolTip</string>
3958 <object class="IBToolTipAttribute" key="NS.object.0">
3959 <string key="name">ToolTip</string>
3960 <reference key="object" ref="310101904"/>
3961 <string key="toolTip">No incoming WRQ transfer will be accepted. Acess will be invariably denied.</string>
3962 </object>
3963 </object>
3964 <string key="1124.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3965 <object class="NSMutableDictionary" key="1125.IBAttributePlaceholdersKey">
3966 <string key="NS.key.0">ToolTip</string>
3967 <object class="IBToolTipAttribute" key="NS.object.0">
3968 <string key="name">ToolTip</string>
3969 <reference key="object" ref="158682464"/>
3970 <string key="toolTip">Incoming WRQ transfers for non-existing files are pre-approved, whereas an attempt to transfer already existing file results in prompting the user.</string>
3971 </object>
3972 </object>
3973 <string key="1125.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3974 <object class="NSMutableDictionary" key="1126.IBAttributePlaceholdersKey">
3975 <string key="NS.key.0">ToolTip</string>
3976 <object class="IBToolTipAttribute" key="NS.object.0">
3977 <string key="name">ToolTip</string>
3978 <reference key="object" ref="527645225"/>
3979 <string key="toolTip">All incoming WRQ transfers should be accepted by the user.</string>
3980 </object>
3981 </object>
3982 <string key="1126.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3983 <object class="NSMutableDictionary" key="1127.IBAttributePlaceholdersKey">
3984 <string key="NS.key.0">ToolTip</string>
3985 <object class="IBToolTipAttribute" key="NS.object.0">
3986 <string key="name">ToolTip</string>
3987 <reference key="object" ref="708384367"/>
3988 <string key="toolTip">All incoming WRQ transfers will be accepted. Note, that if file by the same name already exists, it will be renamed.</string>
3989 </object>
3990 </object>
3991 <string key="1127.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3992 <string key="1128.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
3993 <object class="NSMutableDictionary" key="1129.IBAttributePlaceholdersKey">
3994 <string key="NS.key.0">ToolTip</string>
3995 <object class="IBToolTipAttribute" key="NS.object.0">
3996 <string key="name">ToolTip</string>
3997 <reference key="object" ref="379050521"/>
3998 <string key="toolTip">Browse for the TFTP log file.</string>
3999 </object>
4000 </object>
4001 <string key="1129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4002 <object class="NSMutableDictionary" key="1130.IBAttributePlaceholdersKey">
4003 <string key="NS.key.0">ToolTip</string>
4004 <object class="IBToolTipAttribute" key="NS.object.0">
4005 <string key="name">ToolTip</string>
4006 <reference key="object" ref="823695658"/>
4007 <string key="toolTip">PumpKIN can optionally log the activity shown on screen into this file.</string>
4008 </object>
4009 </object>
4010 <string key="1130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4011 <string key="1131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4012 <string key="1132.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4013 <string key="1161.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4014 <string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4015 <string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4016 <string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4017 <string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4018 <string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4019 <string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4020 <string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4021 <string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4022 <string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4023 <string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4024 <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4025 <string key="195.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4026 <string key="196.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4027 <string key="197.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4028 <string key="198.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4029 <string key="199.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4030 <string key="200.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4031 <string key="201.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4032 <string key="202.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4033 <string key="203.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4034 <string key="204.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4035 <string key="205.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4036 <string key="206.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4037 <string key="207.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4038 <string key="208.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4039 <string key="209.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4040 <string key="210.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4041 <string key="211.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4042 <string key="212.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4043 <string key="213.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4044 <string key="214.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4045 <string key="215.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4046 <string key="216.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4047 <string key="217.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4048 <string key="218.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4049 <string key="219.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4050 <string key="220.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4051 <string key="221.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4052 <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4053 <string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4054 <string key="239.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4055 <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4056 <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4057 <string key="295.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4058 <string key="296.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4059 <string key="297.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4060 <string key="298.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4061 <string key="346.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4062 <string key="348.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4063 <string key="349.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4064 <string key="350.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4065 <string key="351.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4066 <string key="354.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4067 <string key="371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4068 <string key="371.IBWindowTemplateEditedContentRect">{{380, 496}, {480, 360}}</string>
4069 <integer value="1" key="371.NSWindowTemplate.visibleAtLaunch"/>
4070 <string key="372.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4071 <string key="420.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4072 <string key="450.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4073 <string key="451.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4074 <string key="452.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4075 <string key="453.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4076 <string key="454.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4077 <string key="457.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4078 <string key="459.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4079 <string key="460.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4080 <string key="462.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4081 <string key="465.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4082 <string key="466.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4083 <string key="485.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4084 <string key="490.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4085 <string key="491.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4086 <string key="492.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4087 <string key="494.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4088 <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4089 <string key="534.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4090 <string key="536.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4091 <string key="537.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4092 <string key="538.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4093 <object class="NSMutableDictionary" key="547.IBAttributePlaceholdersKey">
4094 <string key="NS.key.0">ToolTip</string>
4095 <object class="IBToolTipAttribute" key="NS.object.0">
4096 <string key="name">ToolTip</string>
4097 <reference key="object" ref="356109671"/>
4098 <string key="toolTip">Activity log.</string>
4099 </object>
4100 </object>
4101 <string key="547.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4102 <string key="548.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4103 <string key="549.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4104 <dictionary class="NSMutableDictionary" key="550.IBAttributePlaceholdersKey"/>
4105 <string key="550.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4106 <string key="550.userInterfaceItemIdentifier">logger</string>
4107 <string key="551.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4108 <string key="552.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4109 <string key="553.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4110 <string key="554.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4111 <string key="555.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4112 <string key="556.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4113 <string key="557.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4114 <string key="558.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4115 <string key="559.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4116 <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4117 <string key="566.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4118 <string key="567.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4119 <string key="568.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4120 <string key="569.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4121 <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4122 <string key="570.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4123 <string key="571.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4124 <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4125 <string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4126 <string key="815.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4127 <boolean value="NO" key="815.NSWindowTemplate.visibleAtLaunch"/>
4128 <string key="816.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4129 <string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4130 <string key="915.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4131 <string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4132 <string key="994.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4133 <string key="998.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4134 <string key="999.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
4135 </dictionary>
4136 <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
4137 <nil key="activeLocalization"/>
4138 <dictionary class="NSMutableDictionary" key="localizations"/>
4139 <nil key="sourceID"/>
4140 <int key="maxID">1164</int>
4141 </object>
4142 <object class="IBClassDescriber" key="IBDocument.Classes">
4143 <array class="NSMutableArray" key="referencedPartialClassDescriptions">
4144 <object class="IBPartialClassDescription">
4145 <string key="className">IPFormatter</string>
4146 <string key="superclassName">NSFormatter</string>
4147 <object class="IBClassDescriptionSource" key="sourceIdentifier">
4148 <string key="majorKey">IBProjectSource</string>
4149 <string key="minorKey">./Classes/IPFormatter.h</string>
4150 </object>
4151 </object>
4152 <object class="IBPartialClassDescription">
4153 <string key="className">PumpKIN</string>
4154 <string key="superclassName">NSObject</string>
4155 <dictionary class="NSMutableDictionary" key="actions">
4156 <string key="abortXfer:">id</string>
4157 <string key="getFile:">id</string>
4158 <string key="pickLogFile:">id</string>
4159 <string key="pickTFTPFolder:">id</string>
4160 <string key="putFile:">id</string>
4161 <string key="showPreferences:">id</string>
4162 </dictionary>
4163 <dictionary class="NSMutableDictionary" key="actionInfosByName">
4164 <object class="IBActionInfo" key="abortXfer:">
4165 <string key="name">abortXfer:</string>
4166 <string key="candidateClassName">id</string>
4167 </object>
4168 <object class="IBActionInfo" key="getFile:">
4169 <string key="name">getFile:</string>
4170 <string key="candidateClassName">id</string>
4171 </object>
4172 <object class="IBActionInfo" key="pickLogFile:">
4173 <string key="name">pickLogFile:</string>
4174 <string key="candidateClassName">id</string>
4175 </object>
4176 <object class="IBActionInfo" key="pickTFTPFolder:">
4177 <string key="name">pickTFTPFolder:</string>
4178 <string key="candidateClassName">id</string>
4179 </object>
4180 <object class="IBActionInfo" key="putFile:">
4181 <string key="name">putFile:</string>
4182 <string key="candidateClassName">id</string>
4183 </object>
4184 <object class="IBActionInfo" key="showPreferences:">
4185 <string key="name">showPreferences:</string>
4186 <string key="candidateClassName">id</string>
4187 </object>
4188 </dictionary>
4189 <dictionary class="NSMutableDictionary" key="outlets">
4190 <string key="logger">NSTextView</string>
4191 <string key="preferencesWindow">NSWindow</string>
4192 <string key="theDefaults">NSUserDefaultsController</string>
4193 <string key="toolbar">NSToolbar</string>
4194 <string key="window">NSWindow</string>
4195 <string key="xfersView">NSTableView</string>
4196 </dictionary>
4197 <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
4198 <object class="IBToOneOutletInfo" key="logger">
4199 <string key="name">logger</string>
4200 <string key="candidateClassName">NSTextView</string>
4201 </object>
4202 <object class="IBToOneOutletInfo" key="preferencesWindow">
4203 <string key="name">preferencesWindow</string>
4204 <string key="candidateClassName">NSWindow</string>
4205 </object>
4206 <object class="IBToOneOutletInfo" key="theDefaults">
4207 <string key="name">theDefaults</string>
4208 <string key="candidateClassName">NSUserDefaultsController</string>
4209 </object>
4210 <object class="IBToOneOutletInfo" key="toolbar">
4211 <string key="name">toolbar</string>
4212 <string key="candidateClassName">NSToolbar</string>
4213 </object>
4214 <object class="IBToOneOutletInfo" key="window">
4215 <string key="name">window</string>
4216 <string key="candidateClassName">NSWindow</string>
4217 </object>
4218 <object class="IBToOneOutletInfo" key="xfersView">
4219 <string key="name">xfersView</string>
4220 <string key="candidateClassName">NSTableView</string>
4221 </object>
4222 </dictionary>
4223 <object class="IBClassDescriptionSource" key="sourceIdentifier">
4224 <string key="majorKey">IBProjectSource</string>
4225 <string key="minorKey">./Classes/PumpKIN.h</string>
4226 </object>
4227 </object>
4228 </array>
4229 </object>
4230 <int key="IBDocument.localizationMode">0</int>
4231 <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
4232 <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
4233 <int key="IBDocument.defaultPropertyAccessControl">3</int>
4234 <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
4235 <string key="NSMenuCheckmark">{11, 11}</string>
4236 <string key="NSMenuMixedState">{10, 3}</string>
4237 <string key="NSPathTemplate">{13, 10}</string>
4238 <string key="NSSwitch">{15, 15}</string>
4239 <string key="abort">{32, 32}</string>
4240 <string key="get">{32, 32}</string>
4241 <string key="put">{32, 32}</string>
4242 </dictionary>
4243 </data>
4244 <classes>
4245 <class name="IBCustomFormatter">
4246 <fallbacks>
4247 <name>NSFormatter</name>
4248 </fallbacks>
4249 </class>
4250 </classes>
4251</archive>
diff --git a/pumpkin/ReceiveXFer.h b/pumpkin/ReceiveXFer.h
new file mode 100644
index 0000000..f62fcdc
--- a/dev/null
+++ b/pumpkin/ReceiveXFer.h
@@ -0,0 +1,8 @@
1
2#import "XFer.h"
3
4@interface ReceiveXFer : XFer
5
6-(ReceiveXFer*)initWithPeer:(struct sockaddr_in *)sin andPacket:(TFTPPacket*)p;
7-(ReceiveXFer*)initWithLocalFile:(NSString *)lf peerAddress:(const struct sockaddr_in *)pa remoteFile:(NSString *)rf xferType:(NSString *)xt blockSize:(uint16_t)bs andTimeout:(int)to;
8@end
diff --git a/pumpkin/ReceiveXFer.m b/pumpkin/ReceiveXFer.m
new file mode 100644
index 0000000..33e9604
--- a/dev/null
+++ b/pumpkin/ReceiveXFer.m
@@ -0,0 +1,168 @@
1#import "ReceiveXFer.h"
2#import "StringsAttached.h"
3#import "ConfirmRequest.h"
4
5@implementation ReceiveXFer
6
7- (ReceiveXFer*)initWithLocalFile:(NSString *)lf peerAddress:(const struct sockaddr_in *)pa remoteFile:(NSString *)rf xferType :(NSString *)xt blockSize:(uint16_t)bs andTimeout:(int)to{
8 if(!(self = [super init])) return self;
9 xferPrefix = @"⬇";
10 retryTimeout = to;
11 localFile = lf;
12 memmove(&peer,pa,sizeof(peer));
13 [[NSFileManager defaultManager] createFileAtPath:localFile contents:nil attributes:nil];
14 if(!(theFile = [[NSFileHandle fileHandleForWritingAtPath:localFile] retain])) {
15 [pumpkin log:@"Failed to create '%@', transfer aborted.", localFile];
16 return self;
17 }
18 [self createSocket];
19 NSMutableDictionary *o = [NSMutableDictionary dictionaryWithCapacity:4];
20 [o setValue:[NSString stringWithFormat:@"%u",bs] forKey:@"blksize"];
21 [o setValue:@"" forKey:@"tsize"];
22 [o setValue:[NSString stringWithFormat:@"%d",(int)retryTimeout] forKey:@"timeout"];
23 state = xferStateConnecting;
24 [self queuePacket:[TFTPPacket packetRRQWithFile:xferFilename=rf xferType:xferType=xt andOptions:o]];
25 [self appear];
26 return self;
27}
28
29- (ReceiveXFer*)initWithPeer:(struct sockaddr_in *)sin andPacket:(TFTPPacket *)p {
30 if(!(self = [super initWithPeer:sin andPacket:p])) return self;
31 xferPrefix = @"⬇";
32 xferFilename=[p.rqFilename retain]; xferType=[p.rqType retain];
33 [pumpkin log:@"'%@' of type '%@' is coming from %@", xferFilename, xferType, [NSString stringWithSocketAddress:&peer]];
34
35 [self createSocket];
36 [self appear];
37
38 if(![self makeLocalFileName:xferFilename])
39 return self;
40
41 switch([[pumpkin.theDefaults.values valueForKey:@"wrqBehavior"] intValue]) {
42 case onWRQDeny: [self goOnWithVerdict:verdictDeny]; break;
43 case onWRQTake: [self goOnWithVerdict:verdictAllow]; break;
44 case onWRQPromptIfExists:
45 if(![[NSFileManager defaultManager] fileExistsAtPath:localFile]) {
46 [self goOnWithVerdict:verdictAllow];
47 break;
48 }
49 case onWRQPrompt:
50 [ConfirmRequest confirmationWithXfer:self];
51 break;
52 }
53 return self;
54}
55-(void)goOnWithVerdict:(int)verdict {
56 if(!(verdict==verdictAllow || verdict==verdictRename)) {
57 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrAccessViolation andMessage:@"Access denied"]];
58 return;
59 }
60 NSFileManager *fm = [NSFileManager defaultManager];
61 if(verdict==verdictRename) {
62 int i;
63 for(i=1;i>0;++i) {
64 if(![self makeLocalFileName:[NSString stringWithFormat:@"%@ (%d)",xferFilename,i]])
65 return;
66 if(![fm fileExistsAtPath:localFile]) break;
67 [localFile release],localFile=nil;
68 }
69 if(!localFile) {
70 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrFileExists andMessage:@"Couldn't find a name for a file"]];
71 return;
72 }
73 }
74 [pumpkin log:@"Receiving '%@'",localFile];
75 [fm createFileAtPath:localFile contents:nil attributes:nil];
76 if(!(theFile = [[NSFileHandle fileHandleForWritingAtPath:localFile] retain])) {
77 [self queuePacket:[TFTPPacket packetErrorWithErrno:errno andFallback:@"couldn't write to file"]];
78 return;
79 }
80 xferSize=0;
81 NSMutableDictionary *o = [NSMutableDictionary dictionaryWithCapacity:4];
82 [initialPacket.rqOptions enumerateKeysAndObjectsUsingBlock:^(NSString* k,NSString *v,BOOL *s) {
83 if([k isEqualToString:@"blksize"]) {
84 [o setValue:[NSString stringWithFormat:@"%u",blockSize=v.intValue] forKey:@"blksize"];
85 }else if([k isEqualToString:@"tsize"]) {
86 [o setValue:[NSString stringWithFormat:@"%lld",xferSize=v.longLongValue] forKey:@"tsize"];
87 }else if([k isEqualToString:@"timeout"]) {
88 [o setValue:[NSString stringWithFormat:@"%d",v.intValue] forKey:@"timeout"];
89 retryTimeout = v.intValue;
90 }else
91 [pumpkin log:@"Unknown option '%@' with value '%@'. Ignoring.",k,v];
92 }];
93 if(xferSize) {
94 long xb = (xferSize/blockSize)+1;
95 if(xb>UINT16_MAX) {
96 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrUndefined andMessage:[NSString stringWithFormat:@"file seems to be too big (%lld bytes) and would take %ld blocks to be transferred with the block size of %d bytes", xferSize, xb,blockSize]] ];
97 return;
98 }
99 xferBlocks = xb;
100 }
101 state = xferStateXfer;
102 if([o count]) {
103 [self queuePacket:[TFTPPacket packetOACKWithOptions:o]];
104 }else{
105 [self queuePacket:[TFTPPacket packetACKWithBlock:acked=0]];
106 }
107 [self updateView];
108}
109
110-(void)eatTFTPPacket:(TFTPPacket *)p from:(struct sockaddr_in *)sin {
111 if(state==xferStateConnecting) {
112 peer.sin_port = sin->sin_port;
113 [self updateView];
114 }else if(![self isPeer:sin]) {
115 [pumpkin log:@"Packet from unexpected source (%@) received",[NSString stringWithSocketAddress:sin]];
116 return;
117 }
118 switch(p.op) {
119 case tftpOpDATA:
120 {
121 NSData *d=p.rqData;;
122 @try {
123 if(p.block > (acked+1))
124 [pumpkin log:@"While transferring %@ block %d seems to immediately follow block %d",xferFilename,p.block,acked];
125 [theFile seekToFileOffset:(p.block-1)*blockSize];
126 [theFile writeData:d];
127 [theFile truncateFileAtOffset:(p.block-1)*blockSize+d.length];
128 }@catch (NSException *e) {
129 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrUndefined andMessage:e.reason]];
130 break;
131 }
132 [self queuePacket:[TFTPPacket packetACKWithBlock: acked=p.block]];
133 [self updateView];
134 if(d.length<blockSize)
135 state = xferStateShutdown;
136 }
137 break;
138 case tftpOpOACK:
139 {
140 __block BOOL a=NO;
141 [p.rqOptions enumerateKeysAndObjectsUsingBlock:^(NSString *k,NSString *v,BOOL *s) {
142 if([k isEqualToString:@"blksize"])
143 blockSize = v.intValue;
144 else if([k isEqualToString:@"tsize"])
145 xferSize = v.longLongValue;
146 else if([k isEqualToString:@"timeout"])
147 retryTimeout = v.intValue;
148 else{
149 [pumpkin log:@"Totally unknown option %@ acknowledged by remote.",k];
150 a=YES;
151 }
152 }];
153 if(a) {
154 [self abort];
155 break;
156 }
157 [self queuePacket:[TFTPPacket packetACKWithBlock:0]];
158 state = xferStateXfer;
159 [self updateView];
160 }
161 break;
162 default:
163 [pumpkin log:@"Totaly unexpected opcode %d received",p.op];
164 break;
165 }
166}
167
168@end
diff --git a/pumpkin/SendXFer.h b/pumpkin/SendXFer.h
new file mode 100644
index 0000000..787a1b9
--- a/dev/null
+++ b/pumpkin/SendXFer.h
@@ -0,0 +1,16 @@
1#import <Cocoa/Cocoa.h>
2#import "TFTPPacket.h"
3#import "PumpKIN.h"
4#import "XFer.h"
5
6#include <netinet/in.h>
7
8@interface SendXFer : XFer {
9}
10
11-(SendXFer*)initWithPeer:(struct sockaddr_in *)sin andPacket:(TFTPPacket*)p;
12-(SendXFer*)initWithLocalFile:(NSString *)lf peerAddress:(const struct sockaddr_in *)pa remoteFile:(NSString *)rf xferType:(NSString *)xt blockSize:(uint16_t)bs andTimeout:(int)to;
13
14-(void)xfer;
15
16@end
diff --git a/pumpkin/SendXFer.m b/pumpkin/SendXFer.m
new file mode 100644
index 0000000..9a1d85b
--- a/dev/null
+++ b/pumpkin/SendXFer.m
@@ -0,0 +1,156 @@
1#import "SendXFer.h"
2#import "StringsAttached.h"
3#import "ConfirmRequest.h"
4
5@implementation SendXFer
6
7-(SendXFer*)initWithLocalFile:(NSString *)lf peerAddress:(const struct sockaddr_in *)pa remoteFile:(NSString *)rf xferType:(NSString *)xt blockSize:(uint16_t)bs andTimeout:(int)to {
8 if(!(self = [super init])) return self;
9 xferPrefix = @"⬆";
10 retryTimeout = to;
11 localFile = lf;
12 memmove(&peer,pa,sizeof(peer));
13 if(!(theFile = [[NSFileHandle fileHandleForReadingAtPath:localFile] retain])) {
14 [pumpkin log:@"Failed to open '%@', transfer aborted.",localFile];
15 return self;
16 }
17
18 long xb = ((xferSize=[theFile seekToEndOfFile])/blockSize)+1;
19 if(xb > UINT16_MAX) {
20 [pumpkin log:@"file is too big (%lld bytes) and will take %ld blocks to be sent with block size of %d bytes",xferSize,xb,blockSize];
21 return self;
22 }
23 xferBlocks = xb;
24
25 [self createSocket];
26 NSMutableDictionary *o = [NSMutableDictionary dictionaryWithCapacity:4];
27 [o setValue:[NSString stringWithFormat:@"%u",bs] forKey:@"blksize"];
28 [o setValue:[NSString stringWithFormat:@"%llu",xferSize] forKey:@"tsize"];
29 [o setValue:[NSString stringWithFormat:@"%d",(int)retryTimeout] forKey:@"timeout"];
30 state = xferStateConnecting;
31 [self queuePacket:[TFTPPacket packetWRQWithFile:xferFilename=rf xferType:xferType=xt andOptions:o]];
32 [self appear];
33 return self;
34}
35
36-(SendXFer*)initWithPeer:(struct sockaddr_in *)sin andPacket:(TFTPPacket*)p {
37 if(!(self = [super initWithPeer:sin andPacket:p])) return self;
38 xferPrefix = @"⬆";
39 xferFilename = [p.rqFilename retain]; xferType = [p.rqType retain];
40 [pumpkin log:@"'%@' of type '%@' is requested from %@",
41 xferFilename, xferType, [NSString stringWithSocketAddress:&peer] ];
42
43 [self createSocket];
44 [self appear];
45
46 if(![self makeLocalFileName:xferFilename])
47 return self;
48
49 switch([[pumpkin.theDefaults.values valueForKey:@"rrqBehavior"] intValue]) {
50 case onRRQDeny: [self goOnWithVerdict:verdictDeny]; break;
51 case onRRQGive: [self goOnWithVerdict:verdictAllow]; break;
52 default:
53 [ConfirmRequest confirmationWithXfer:self];
54 break;
55 }
56 return self;
57}
58-(void)goOnWithVerdict:(int)verdict {
59 if(verdict!=verdictAllow) {
60 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrAccessViolation andMessage:@"Access denied"]];
61 return;
62 }
63 if(!(theFile = [[NSFileHandle fileHandleForReadingAtPath:localFile] retain])) {
64 [self queuePacket:[TFTPPacket packetErrorWithErrno:errno andFallback:@"couldn't open file"]];
65 return;
66 }
67 xferSize = [theFile seekToEndOfFile];
68 NSMutableDictionary *o = [NSMutableDictionary dictionaryWithCapacity:4];
69 [[initialPacket rqOptions] enumerateKeysAndObjectsUsingBlock:^(NSString* k, NSString* v, BOOL *stop) {
70 if([k isEqualToString:@"blksize"]) {
71 [o setValue:[NSString stringWithFormat:@"%u",blockSize=v.intValue] forKey:@"blksize"];
72 }else if([k isEqualToString:@"tsize"]) {
73 [o setValue:[NSString stringWithFormat:@"%lld",xferSize] forKey:@"tsize"];
74 }else if([k isEqualToString:@"timeout"]) {
75 [o setValue:[NSString stringWithFormat:@"%d",v.intValue] forKey:@"timeout"];
76 retryTimeout = v.intValue;
77 }else
78 [pumpkin log:@"Unknown option '%@' with value '%@'. Ignoring.",k,v];
79 }];
80 long xb = (xferSize/blockSize)+1;
81 if(xb > UINT16_MAX) {
82 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrUndefined andMessage:[NSString stringWithFormat:@"file is too big (%lld bytes) and will take %ld blocks to be sent with block size of %d bytes",xferSize,xb,blockSize]]];
83 return;
84 }
85 xferBlocks = xb;
86 state = xferStateXfer;
87 if(o.count) {
88 [self queuePacket:[TFTPPacket packetOACKWithOptions:o]];
89 }else{
90 [self xfer];
91 }
92}
93
94- (void) xfer {
95 NSAssert(theFile,@"no file!");
96 [theFile seekToFileOffset:acked*blockSize];
97 [self queuePacket:[TFTPPacket packetDataWithBlock:acked+1 andData:[theFile readDataOfLength:blockSize]]];
98}
99
100- (void) eatTFTPPacket:(TFTPPacket*)p from:(struct sockaddr_in*)sin{
101 if(state==xferStateConnecting) {
102 peer.sin_port = sin->sin_port;
103 [self updateView];
104 }else if(![self isPeer:sin]) {
105 [pumpkin log:@"Packet from unexpected source (%@) recevied",[NSString stringWithSocketAddress:sin]];
106 return;
107 }
108 switch(p.op) {
109 case tftpOpACK:
110 if(state==xferStateShutdown || ( (acked=p.block)==xferBlocks && (state=xferStateShutdown) ) ) {
111 CFSocketEnableCallBacks(sockie, kCFSocketWriteCallBack);
112 return;
113 }
114 [self updateView];
115 [self xfer];
116 break;
117 case tftpOpERROR:
118 [pumpkin log:@"Error %u:%@",p.rqCode, p.rqMessage];
119 [self updateView];
120 [self disappear];
121 return;
122 case tftpOpOACK:
123 if(acked) {
124 [pumpkin log:@"It's a bit too late to acknowledge options, ignoring OACK packet"];
125 break;
126 }
127 {
128 __block BOOL a=NO;
129 [p.rqOptions enumerateKeysAndObjectsUsingBlock:^(NSString *k,NSString *v,BOOL *s) {
130 if([k isEqualToString:@"blksize"])
131 blockSize = v.intValue;
132 else if([k isEqualToString:@"tsize"]) {
133 }else if([k isEqualToString:@"timeout"])
134 retryTimeout = v.intValue;
135 else{
136 [pumpkin log:@"Totally unknown option '%@' with value '%@' acknowledged by peer",k,v];
137 a=YES;
138 }
139 }];
140 if(a) {
141 [self abort];
142 break;
143 }
144 state = xferStateXfer;
145 [self updateView];
146 [self xfer];
147 }
148 break;
149 default:
150 [pumpkin log:@"Totaly unexpected opcode %d received",p.op];
151 break;
152 }
153}
154
155
156@end
diff --git a/pumpkin/StringsAttached.h b/pumpkin/StringsAttached.h
new file mode 100644
index 0000000..fa73ae0
--- a/dev/null
+++ b/pumpkin/StringsAttached.h
@@ -0,0 +1,11 @@
1
2#import <Foundation/Foundation.h>
3#include <netinet/in.h>
4
5@interface NSString (StringsAttached)
6
7+ stringWithSocketAddress:(const struct sockaddr_in*)sin;
8+ stringWithHostAddress:(const struct sockaddr_in*)sin;
9+ stringWithPortNumber:(const struct sockaddr_in*)sin;
10
11@end
diff --git a/pumpkin/StringsAttached.m b/pumpkin/StringsAttached.m
new file mode 100644
index 0000000..8ad5868
--- a/dev/null
+++ b/pumpkin/StringsAttached.m
@@ -0,0 +1,19 @@
1
2#import "StringsAttached.h"
3#include <arpa/inet.h>
4
5@implementation NSString (StringsAttached)
6
7+ stringWithSocketAddress:(const struct sockaddr_in*)sin {
8 return [NSString stringWithFormat:@"%@:%u",[NSString stringWithHostAddress:sin],ntohs(sin->sin_port)];
9}
10+ stringWithHostAddress:(const struct sockaddr_in*)sin {
11 char tmp[32];
12 addr2ascii(sin->sin_family,&sin->sin_addr,sizeof(sin->sin_addr),tmp);
13 return @(tmp);
14}
15+ (id)stringWithPortNumber:(const struct sockaddr_in *)sin {
16 return [NSString stringWithFormat:@"%u",ntohs(sin->sin_port)];
17}
18
19@end
diff --git a/pumpkin/TFTPPacket.h b/pumpkin/TFTPPacket.h
new file mode 100644
index 0000000..a46d5bc
--- a/dev/null
+++ b/pumpkin/TFTPPacket.h
@@ -0,0 +1,87 @@
1
2#import <Cocoa/Cocoa.h>
3#include <stdint.h>
4
5enum TFTPOp {
6 tftpOpRRQ=1, tftpOpWRQ=2,
7 tftpOpDATA=3,
8 tftpOpACK=4,
9 tftpOpERROR=5,
10 tftpOpOACK=6
11};
12
13enum TFTPError {
14 tftpErrUndefined=0,
15 tftpErrNotFound=1,
16 tftpErrAccessViolation=2,
17 tftpErrDiskFull=3,
18 tftpErrIllegalOp=4,
19 tftpErrUnknownTID=5,
20 tftpErrFileExists=6,
21 tftpErrNoUser=7,
22 tftpErrOption=8
23};
24
25#pragma pack(push,1)
26struct AnyTFTPPacket {
27 uint16_t op;
28 union {
29 struct {
30 char data[1];
31 } any;
32 struct {
33 char data[1];
34 } rq;
35 struct {
36 char data[1];
37 } rrq;
38 struct {
39 char data[1];
40 } wrq;
41 struct {
42 uint16_t block;
43 char data[1];
44 } data;
45 struct {
46 uint16_t block;
47 } ack;
48 struct {
49 uint16_t code;
50 char data[1];
51 } err;
52 struct {
53 char data[1];
54 } oack;
55 };
56};
57#pragma pack(pop)
58
59@interface TFTPPacket : NSObject {
60 NSData *data;
61 struct AnyTFTPPacket *packet;
62}
63
64@property (readonly) enum TFTPOp op;
65@property (readonly) NSString* rqFilename;
66@property (readonly) NSString* rqType;
67@property (readonly) NSDictionary* rqOptions;
68@property (readonly) NSData *data;
69@property (readonly) uint16_t block;
70@property (readonly) NSData *rqData;
71@property (readonly) uint16_t rqCode;
72@property (readonly) NSString* rqMessage;
73
74-(TFTPPacket*)initWithData:(NSData*)d;
75
76+(TFTPPacket*)packetWithData:(NSData*)d;
77+(TFTPPacket*)packetWithBytesNoCopy:(void*)b andLength:(size_t)l;
78
79+(TFTPPacket*)packetErrorWithCode:(enum TFTPError)c andMessage:(NSString*)m;
80+(TFTPPacket*)packetErrorWithErrno:(int)en andFallback:(NSString*)fb;
81+(TFTPPacket*)packetOACKWithOptions:(NSDictionary*)o;
82+(TFTPPacket*)packetDataWithBlock:(uint16_t)b andData:(NSData*)d;
83+(TFTPPacket*)packetACKWithBlock:(uint16_t)b;
84+(TFTPPacket*)packetRRQWithFile:(NSString*)f xferType:(NSString*)t andOptions:(NSDictionary*)o;
85+(TFTPPacket*)packetWRQWithFile:(NSString*)f xferType:(NSString*)t andOptions:(NSDictionary*)o;
86
87@end
diff --git a/pumpkin/TFTPPacket.m b/pumpkin/TFTPPacket.m
new file mode 100644
index 0000000..73f5995
--- a/dev/null
+++ b/pumpkin/TFTPPacket.m
@@ -0,0 +1,203 @@
1
2#import "TFTPPacket.h"
3
4@interface NSDictionary (TFTPOptions)
5
6- (size_t)tftpBytesLength;
7- (size_t)tftpGetBytes:(char*)p maxLength:(size_t)ml;
8
9@end
10@implementation NSDictionary (TFTPOptions)
11
12- (size_t)tftpBytesLength {
13 __block size_t rv = 0;
14 [self enumerateKeysAndObjectsUsingBlock:^(id k,id v,BOOL *s) {
15 rv += [k lengthOfBytesUsingEncoding:NSUTF8StringEncoding]+[v lengthOfBytesUsingEncoding:NSUTF8StringEncoding]+2;
16 }];
17 return rv;
18}
19
20- (size_t)tftpGetBytes:(char*)p maxLength:(size_t)ml {
21 __block char *_p = p;
22 __block size_t rl = ml;
23 __block size_t rv = 0;
24 [self enumerateKeysAndObjectsUsingBlock:^(NSString *k,NSString *v,BOOL *s) {
25 NSUInteger l;
26 [k getBytes:_p maxLength:rl usedLength:&l encoding:NSUTF8StringEncoding options:0 range:NSMakeRange(0,k.length) remainingRange:NULL];
27 _p+=l; *_p++=0; rl-=l+1; rv+=l+1;
28 [v getBytes:_p maxLength:rl usedLength:&l encoding:NSUTF8StringEncoding options:0 range:NSMakeRange(0,v.length) remainingRange:NULL];
29 _p+=l; *_p++=0; rl-=l+1; rv+=l+1;
30 }];
31 return rv;
32}
33
34@end
35
36@implementation TFTPPacket
37@synthesize data;
38
39-(BOOL) isRQOp {
40 return self.op==tftpOpRRQ || self.op==tftpOpWRQ;
41}
42-(BOOL) isOptionsOp {
43 return self.isRQOp || self.op==tftpOpOACK;
44}
45-(BOOL) isBlockOp {
46 return self.op==tftpOpDATA || self.op==tftpOpACK;
47}
48
49-(enum TFTPOp)op {
50 NSAssert(data.length,@"no data");
51 return (enum TFTPOp)ntohs(packet->op);
52}
53-(NSString*)rqFilename {
54 NSAssert( self.isRQOp, @"Wrong TFTP opcode for rq filename retrieval");
55 if(!memchr(packet->rq.data, 0, [data length]-sizeof(packet->op))) return nil;
56 return @(packet->rq.data);
57}
58-(NSString*)rqType {
59 NSAssert( self.isRQOp, @"Wrong TFTP opcode for rq type retrieval");
60 const char *z = (const char*)memchr(packet->rq.data,0, data.length-sizeof(packet->op));
61 if(!z) return nil;
62 if(!memchr(z+1,0,data.length-sizeof(packet->op)-(z-packet->rq.data))) return nil;
63 return @(z+1);
64}
65-(NSDictionary*)rqOptions {
66 enum TFTPOp op = self.op;
67 NSAssert( self.isOptionsOp, @"Wrong TFTP opcode for options retrieval");
68 const char *p = packet->any.data, *p1 = (const char*)packet + data.length;
69 if(op==tftpOpRRQ || op==tftpOpWRQ) {
70 p = (const char *)memchr(p,0,p1-p);
71 if(!p) return nil;
72 p = (const char *)memchr(p+1,0,p1-p);
73 if(!p) return nil;
74 ++p;
75 }
76 NSMutableDictionary *rv = [NSMutableDictionary dictionaryWithCapacity:8];
77 while(p<p1) {
78 const char *on = p;
79 p = (const char *)memchr(p,0,p1-p);
80 if(!p) break;
81 const char *ov = ++p;
82 p = (const char *)memchr(p,0,p1-p);
83 if(!p) break;
84 ++p;
85 rv[[@(on) lowercaseString]] = @(ov);
86 }
87 return rv;
88}
89-(uint16_t)block {
90 NSAssert( self.isBlockOp, @"Wrong TFTP opcode for block number retrieval");
91 return ntohs(*(uint16_t*)&packet->data);
92}
93-(NSData*)rqData {
94 NSAssert( self.op==tftpOpDATA, @"Can't get data from the request that doesn't have it");
95 return [NSData dataWithBytes:packet->data.data length:data.length-sizeof(packet->op)-sizeof(packet->data.block)];
96}
97-(uint16_t)rqCode {
98 NSAssert(self.op==tftpOpERROR,@"Wrong TFTP opcode for error code retrieval");
99 return ntohs(packet->err.code);
100}
101-(NSString*)rqMessage {
102 NSAssert(self.op==tftpOpERROR,@"Wrong TFTP opcode for error message retrieval");
103 return @(packet->err.data);
104}
105
106-(TFTPPacket*)initWithData:(NSData *)d {
107 if(!(self = [super init])) return self;
108 packet = (struct AnyTFTPPacket*)(data = [d retain]).bytes;
109 return self;
110}
111
112
113+(TFTPPacket*)packetWithData:(NSData*)d {
114 return [[[self alloc] initWithData:d] autorelease];
115}
116+(TFTPPacket*)packetWithBytesNoCopy:(void*)b andLength:(size_t)l {
117 return [[[self alloc] initWithData:[NSData dataWithBytesNoCopy:b length:l]] autorelease];
118}
119
120+(TFTPPacket*)packetErrorWithCode:(enum TFTPError)c andMessage:(NSString*)m {
121 NSUInteger ml = [m lengthOfBytesUsingEncoding:NSUTF8StringEncoding], bb;
122 struct AnyTFTPPacket *b = (struct AnyTFTPPacket*)malloc(bb = sizeof(b->op)+sizeof(b->err.code)+ml+1);
123 if(!b) return nil;
124 b->op = htons(tftpOpERROR);
125 b->err.code = ntohs(c);
126 [m getBytes:b->err.data maxLength:ml usedLength:NULL encoding:NSUTF8StringEncoding options:0 range:NSMakeRange(0,m.length) remainingRange:NULL];
127 b->err.data[ml]=0;
128 return [self packetWithBytesNoCopy:b andLength:bb];
129}
130+(TFTPPacket*)packetErrorWithErrno:(int)en andFallback:(NSString *)fb{
131 switch(en) {
132 case EACCES:
133 return [self packetErrorWithCode:tftpErrAccessViolation andMessage:@"acess violation"];
134 case ENOENT:
135 return [self packetErrorWithCode:tftpErrNotFound andMessage:@"not found"];
136 }
137 return [self packetErrorWithCode:tftpErrUndefined andMessage:fb];
138}
139
140+(TFTPPacket*)packetXRQWithOp:(enum TFTPOp)op file:(NSString*)f xferType:(NSString*)t andOptions:(NSDictionary*)o {
141 NSAssert(f && t && o,@"Something is amiss in packetXRQWithOp");
142 __block size_t dl = o.tftpBytesLength
143 +[f lengthOfBytesUsingEncoding:NSUTF8StringEncoding]
144 +[t lengthOfBytesUsingEncoding:NSUTF8StringEncoding]
145 +2;
146 size_t pl = dl;
147 struct AnyTFTPPacket *b = (struct AnyTFTPPacket*)malloc(pl+=sizeof(b->op));
148 if(!b) return nil;
149 b->op = htons(op);
150 __block char *p = b->rrq.data;
151 NSUInteger l;
152 [f getBytes:p maxLength:dl usedLength:&l encoding:NSUTF8StringEncoding options:0 range:NSMakeRange(0,f.length) remainingRange:NULL];
153 p+=l; *p++=0; dl-=l+1;
154 [t getBytes:p maxLength:dl usedLength:&l encoding:NSUTF8StringEncoding options:0 range:NSMakeRange(0,t.length) remainingRange:NULL];
155 p+=l; *p++=0; dl-=l+1;
156 l = [o tftpGetBytes:p maxLength:dl];
157 p+=l; dl-=l;
158 NSAssert1(dl==0,@"packet of the wrong size, remaining count: %lu",dl);
159 return [self packetWithBytesNoCopy:b andLength:pl];
160}
161
162+(TFTPPacket*)packetRRQWithFile:(NSString *)f xferType:(NSString *)t andOptions:(NSDictionary *)o {
163 return [self packetXRQWithOp:tftpOpRRQ file:f xferType:t andOptions:o];
164}
165+(TFTPPacket*)packetWRQWithFile:(NSString *)f xferType:(NSString *)t andOptions:(NSDictionary *)o {
166 return [self packetXRQWithOp:tftpOpWRQ file:f xferType:t andOptions:o];
167}
168
169+(TFTPPacket*)packetOACKWithOptions:(NSDictionary*)o {
170 __block NSUInteger pl = [o tftpBytesLength];
171 __block NSUInteger rc = pl;
172 __block struct AnyTFTPPacket *b = (struct AnyTFTPPacket*)malloc(pl+=sizeof(b->op));
173 if(!b) return nil;
174 b->op = htons(tftpOpOACK);
175 __block char *p = b->oack.data;
176 rc -= [o tftpGetBytes:p maxLength:pl];
177 NSAssert1(rc==0,@"packet of the wrong size, remaining count: %lu",rc);
178 return [self packetWithBytesNoCopy:b andLength:pl];
179}
180+(TFTPPacket*)packetDataWithBlock:(uint16_t)b andData:(NSData*)d {
181 NSUInteger pl;
182 struct AnyTFTPPacket *p = (struct AnyTFTPPacket*)malloc(pl=sizeof(p->op)+sizeof(p->data.block)+d.length);
183 if(!p) return nil;
184 p->op = htons(tftpOpDATA);
185 p->data.block = htons(b);
186 [d getBytes:p->data.data length:d.length];
187 return [self packetWithBytesNoCopy:p andLength:pl];
188}
189+(TFTPPacket*)packetACKWithBlock:(uint16_t)b {
190 NSUInteger pl;
191 struct AnyTFTPPacket *p = (struct AnyTFTPPacket*)malloc(pl=sizeof(p->op)+sizeof(p->ack.block));
192 if(!p) return nil;
193 p->op = htons(tftpOpACK);
194 p->ack.block = htons(b);
195 return [self packetWithBytesNoCopy:p andLength:pl];
196}
197
198-(void)dealloc {
199 [data release];
200 [super dealloc];
201}
202
203@end
diff --git a/pumpkin/XFer.h b/pumpkin/XFer.h
new file mode 100644
index 0000000..ffe7fc1
--- a/dev/null
+++ b/pumpkin/XFer.h
@@ -0,0 +1,68 @@
1
2#import <Foundation/Foundation.h>
3#import "PumpKIN.h"
4#include <netinet/in.h>
5#import "TFTPPacket.h"
6
7enum XFerState {
8 xferStateNone = 0,
9 xferStateConnecting,
10 xferStateXfer,
11 xferStateShutdown
12};
13
14@interface XFer : NSObject {
15 struct sockaddr_in peer;
16 PumpKIN *pumpkin;
17 CFSocketRef sockie;
18 CFRunLoopSourceRef runloopSource;
19 NSFileHandle *theFile;
20 uint16_t blockSize;
21 uint16_t acked;
22 unsigned long long xferSize;
23 uint16_t xferBlocks;
24 enum XFerState state;
25 NSString *xferType;
26 NSString *xferFilename;
27 NSTimeInterval retryTimeout;
28 NSTimeInterval giveupTimeout;
29 TFTPPacket *lastPacket;
30 NSTimer *retryTimer;
31 NSTimer *giveupTimer;
32 TFTPPacket *initialPacket;
33 NSString *xferPrefix;
34
35 NSString *localFile;
36
37 NSMutableArray *queue;
38}
39@property (readonly) struct sockaddr_in *peer;
40@property (readonly) TFTPPacket *initialPacket;
41@property (readonly) NSString *xferFilename;
42@property (readonly) NSString *localFile;
43@property (readonly) NSString *xferPrefix;
44
45- (id) init;
46- (id) initWithPeer:(struct sockaddr_in *)sin andPacket:(TFTPPacket*)p;
47
48- (BOOL) createSocket;
49- (void) callbackWithType:(CFSocketCallBackType)t addr:(CFDataRef)a data:(const void *)d;
50- (void) queuePacket:(TFTPPacket*)p;
51
52- (void) eatTFTPPacket:(TFTPPacket*)p from:(struct sockaddr_in*)sin;
53
54- (id) cellValueForColumn:(NSString*)ci;
55
56- (void) updateView;
57- (void) appear;
58- (void) disappear;
59
60- (BOOL) isPeer:(struct sockaddr_in*)sin;
61
62- (void) abort;
63
64- (void) goOnWithVerdict:(int)verdict;
65
66- (BOOL) makeLocalFileName:(NSString*)xf;
67
68@end
diff --git a/pumpkin/XFer.m b/pumpkin/XFer.m
new file mode 100644
index 0000000..6803ade
--- a/dev/null
+++ b/pumpkin/XFer.m
@@ -0,0 +1,205 @@
1
2#import "XFer.h"
3#import "TFTPPacket.h"
4#import "StringsAttached.h"
5
6static void cbXfer(CFSocketRef sockie,CFSocketCallBackType cbt,CFDataRef cba,
7 const void *cbd,void *i) {
8 [(XFer*)i callbackWithType:cbt addr:cba data:cbd];
9}
10
11@implementation XFer
12@synthesize initialPacket;
13@synthesize xferFilename;
14@synthesize localFile;
15@synthesize xferPrefix;
16
17- (id) init {
18 if(!(self = [super init])) return self;
19 blockSize = 512;
20 sockie = NULL;
21 theFile = nil;
22 acked = 0;
23 xferSize = 0; xferBlocks = 0;
24 xferType = nil; xferFilename = nil;
25 state = xferStateNone;
26 pumpkin = NSApplication.sharedApplication.delegate;
27 queue = [[NSMutableArray alloc]initWithCapacity:4];
28 localFile = nil;
29 retryTimeout = 3;
30 giveupTimeout = [[[[NSUserDefaultsController sharedUserDefaultsController] values] valueForKey:@"giveUpTimeout"] intValue];
31 lastPacket = nil; retryTimer = nil;
32 giveupTimer = nil;
33 initialPacket = nil;
34 return self;
35
36}
37
38- (id) initWithPeer:(struct sockaddr_in *)sin andPacket:(TFTPPacket*)p {
39 if(!(self=[self init])) return self;
40 memmove(&peer,sin,sizeof(peer));
41 initialPacket = [p retain];
42 return self;
43}
44
45- (struct sockaddr_in*)peer { return &peer; }
46
47- (BOOL) makeLocalFileName:(NSString *)xf {
48 NSString *fn = [xf stringByReplacingOccurrencesOfString:@"\\" withString:@"/"];
49 if([fn hasPrefix:@"../"] || [fn hasSuffix:@"/.."] || [fn rangeOfString:@"/../"].location!=NSNotFound) {
50 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrAccessViolation andMessage:@"bad path"]];
51 return NO;
52 }
53 localFile = [[[pumpkin.theDefaults.values valueForKey:@"tftpRoot"] stringByAppendingPathComponent:fn] retain];
54 return YES;
55}
56
57- (void) retryTimeout {
58 [self queuePacket:lastPacket]; [lastPacket release]; lastPacket = nil;
59}
60- (void) giveUp {
61 [pumpkin log:@"Connection timeout for '%@'",xferFilename];
62 [self abort];
63}
64- (void) renewHope {
65 if(giveupTimer) {
66 [giveupTimer invalidate]; [giveupTimer release];
67 }
68 giveupTimer = [[NSTimer scheduledTimerWithTimeInterval:giveupTimeout target:self selector:@selector(giveUp) userInfo:nil repeats:NO] retain];
69}
70
71- (void) callbackWithType:(CFSocketCallBackType)t addr:(CFDataRef)a data:(const void *)d {
72 if(!giveupTimer) [self renewHope];
73 if(retryTimer) {
74 [retryTimer release]; [retryTimer invalidate]; retryTimer = nil;
75 }
76 switch (t) {
77 case kCFSocketWriteCallBack:
78 if(queue.count) {
79 TFTPPacket *p = queue[0];
80 CFSocketError r = CFSocketSendData(sockie, (CFDataRef)[NSData dataWithBytesNoCopy:&peer length:sizeof(peer) freeWhenDone:NO], (CFDataRef)[NSData dataWithData:p.data], 0);
81 if(r!=kCFSocketSuccess)
82 [pumpkin log:@"Failed to send data, error %d",errno];
83 if(!(p.op==tftpOpDATA || p.op==tftpOpERROR)) {
84 if(lastPacket) [lastPacket release];
85 lastPacket = [p retain];
86 if(retryTimer) {
87 [retryTimer invalidate]; [retryTimer release];
88 }
89 retryTimer = [[NSTimer scheduledTimerWithTimeInterval:retryTimeout target:self selector:@selector(retryTimeout) userInfo:nil repeats:NO] retain];
90 }else{
91 [lastPacket release]; lastPacket = nil;
92 }
93 [queue removeObjectAtIndex:0];
94 if([queue count] || state==xferStateShutdown)
95 CFSocketEnableCallBacks(sockie, kCFSocketWriteCallBack);
96 }else if(state==xferStateShutdown) {
97 [pumpkin log:@"%@ Transfer of '%@' finished.",xferPrefix,xferFilename];
98 [self disappear];
99 }
100 break;
101 case kCFSocketDataCallBack:
102 [self renewHope];
103 [self eatTFTPPacket:[TFTPPacket packetWithData:(NSData*)d] from:(struct sockaddr_in*)CFDataGetBytePtr(a)];
104 break;
105 default:
106 NSLog(@"unhandled %lu callback",t);
107 break;
108 }
109}
110
111- (BOOL) createSocket {
112 CFSocketContext ctx;
113 ctx.version=0; ctx.info=self; ctx.retain=0; ctx.release=0; ctx.copyDescription=0;
114 sockie = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_DGRAM, IPPROTO_UDP,
115 kCFSocketReadCallBack|kCFSocketWriteCallBack|kCFSocketDataCallBack,
116 cbXfer, &ctx);
117 if(!sockie) return NO;
118 struct sockaddr_in a; memset(&a, 0, sizeof(a));
119 a.sin_family = AF_INET;
120 if(CFSocketSetAddress(sockie, (CFDataRef)[NSData dataWithBytesNoCopy:&a length:sizeof(a) freeWhenDone:NO])
121 !=kCFSocketSuccess) {
122 [pumpkin log:@"failed to set socket address"];
123 return NO;
124 }
125 runloopSource = CFSocketCreateRunLoopSource(kCFAllocatorDefault, sockie, 0);
126 CFRunLoopAddSource(CFRunLoopGetCurrent(), runloopSource, kCFRunLoopDefaultMode);
127 return YES;
128}
129
130- (void) queuePacket:(TFTPPacket*)p {
131 [queue addObject:p];
132 CFSocketEnableCallBacks(sockie, kCFSocketWriteCallBack|kCFSocketReadCallBack);
133 if(p.op==tftpOpERROR) state = xferStateShutdown;
134}
135
136- (void) goOnWithVerdict:(int)verdict {
137 NSAssert(false,@"unimplemented goOnWithVerdict");
138}
139
140- (void) eatTFTPPacket:(TFTPPacket*)p from:(struct sockaddr_in*)sin {
141 NSAssert(false,@"unimplemented eatTFTPPacket");
142}
143-(void) abort {
144 [self queuePacket:[TFTPPacket packetErrorWithCode:tftpErrUndefined andMessage:@"transfer cancelled"]];
145}
146
147- (id) cellValueForColumn:(NSString*)ci {
148 if([ci isEqualToString:@"fileName"]) {
149 return [NSString stringWithFormat:@"%@ %@",xferPrefix,xferFilename];
150 }else if([ci isEqualToString:@"xferType"]) {
151 return xferType;
152 }else if([ci isEqualToString:@"peerAddress"]) {
153 switch (state) {
154 case xferStateConnecting: return [NSString stringWithHostAddress:&peer];
155 default: return [NSString stringWithSocketAddress:&peer];
156 }
157 }else if([ci isEqualToString:@"ackBytes"]) {
158 return [NSString stringWithFormat:@"%u",acked*blockSize];
159 }else if([ci isEqualToString:@"xferSize"]) {
160 return xferSize?[NSString stringWithFormat:@"%llu",xferSize]:nil;
161 }
162 return nil;
163}
164
165- (void) updateView {
166 [pumpkin updateXfers];
167}
168- (void) appear {
169 [pumpkin registerXfer:self];
170}
171- (void) disappear {
172 if(retryTimer) {
173 [retryTimer invalidate]; [retryTimer release]; retryTimer = nil;
174 }
175 if(giveupTimer) {
176 [giveupTimer invalidate]; [giveupTimer release]; retryTimer = nil;
177 }
178 [pumpkin unregisterXfer:self];
179}
180
181- (BOOL) isPeer:(struct sockaddr_in*)sin {
182 return sin->sin_len==peer.sin_len && !memcmp(sin,&peer,sin->sin_len);
183}
184
185-(void)dealloc {
186 if(runloopSource) {
187 CFRunLoopSourceInvalidate(runloopSource);
188 CFRelease(runloopSource);
189 }
190 if(sockie) {
191 CFSocketInvalidate(sockie);
192 CFRelease(sockie);
193 }
194 [queue release];
195 if(theFile) [theFile release];
196 if(xferFilename) [xferFilename release];
197 if(xferType) [xferType release];
198 if(lastPacket) [lastPacket release];
199 if(initialPacket) [initialPacket release];
200 if(localFile) [localFile release];
201 [super dealloc];
202}
203
204
205@end
diff --git a/pumpkin/XFersViewDatasource.h b/pumpkin/XFersViewDatasource.h
new file mode 100644
index 0000000..3225e1b
--- a/dev/null
+++ b/pumpkin/XFersViewDatasource.h
@@ -0,0 +1,11 @@
1
2@interface XFersViewDatasource : NSObject <NSTableViewDataSource> {
3 NSMutableArray *xfers;
4}
5
6- (id)initWithXfers:(NSMutableArray*)x;
7
8- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
9- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView;
10
11@end
diff --git a/pumpkin/XFersViewDatasource.m b/pumpkin/XFersViewDatasource.m
new file mode 100644
index 0000000..1f7c689
--- a/dev/null
+++ b/pumpkin/XFersViewDatasource.m
@@ -0,0 +1,24 @@
1
2#import "XFersViewDatasource.h"
3#import "XFer.h"
4
5@implementation XFersViewDatasource
6
7- (id)initWithXfers:(NSMutableArray*)x {
8 if(!(self = [super init])) return self;
9 xfers = [x retain];
10 return self;
11}
12- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
13 return [xfers[rowIndex] cellValueForColumn:aTableColumn.identifier];
14}
15- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView {
16 return xfers.count;
17}
18
19- (void) dealloc {
20 [xfers release];
21 [super dealloc];
22}
23
24@end
diff --git a/pumpkin/abort.icns b/pumpkin/abort.icns
new file mode 100644
index 0000000..cd688ca
--- a/dev/null
+++ b/pumpkin/abort.icns
Binary files differ
diff --git a/pumpkin/en.lproj/InfoPlist.strings b/pumpkin/en.lproj/InfoPlist.strings
new file mode 100644
index 0000000..5495781
--- a/dev/null
+++ b/pumpkin/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
1/* Localized versions of Info.plist keys */
2CFBundleDisplayName = "PumpKIN"; \ No newline at end of file
diff --git a/pumpkin/get.icns b/pumpkin/get.icns
new file mode 100644
index 0000000..c0120da
--- a/dev/null
+++ b/pumpkin/get.icns
Binary files differ
diff --git a/pumpkin/klever-background.png b/pumpkin/klever-background.png
new file mode 100644
index 0000000..42bb1e5
--- a/dev/null
+++ b/pumpkin/klever-background.png
Binary files differ
diff --git a/pumpkin/main.m b/pumpkin/main.m
new file mode 100644
index 0000000..27f298f
--- a/dev/null
+++ b/pumpkin/main.m
@@ -0,0 +1,6 @@
1#import <Cocoa/Cocoa.h>
2
3int main(int argc, char *argv[])
4{
5 return NSApplicationMain(argc, (const char **)argv);
6}
diff --git a/pumpkin/pumpkin-Info.plist b/pumpkin/pumpkin-Info.plist
new file mode 100644
index 0000000..a921bb4
--- a/dev/null
+++ b/pumpkin/pumpkin-Info.plist
@@ -0,0 +1,38 @@
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>en</string>
7 <key>CFBundleDisplayName</key>
8 <string>pumpkin</string>
9 <key>CFBundleExecutable</key>
10 <string>${EXECUTABLE_NAME}</string>
11 <key>CFBundleIconFile</key>
12 <string>pumpkin</string>
13 <key>CFBundleIdentifier</key>
14 <string>net.klever.kin.${PRODUCT_NAME:rfc1034identifier}</string>
15 <key>CFBundleInfoDictionaryVersion</key>
16 <string>6.0</string>
17 <key>CFBundleName</key>
18 <string>${PRODUCT_NAME}</string>
19 <key>CFBundlePackageType</key>
20 <string>APPL</string>
21 <key>CFBundleShortVersionString</key>
22 <string>0.0</string>
23 <key>CFBundleSignature</key>
24 <string>????</string>
25 <key>CFBundleVersion</key>
26 <string>1</string>
27 <key>LSApplicationCategoryType</key>
28 <string>public.app-category.utilities</string>
29 <key>LSMinimumSystemVersion</key>
30 <string>${MACOSX_DEPLOYMENT_TARGET}</string>
31 <key>NSHumanReadableCopyright</key>
32 <string>Copyright © 2012 Klever Group. All rights reserved.</string>
33 <key>NSMainNibFile</key>
34 <string>PumpKIN</string>
35 <key>NSPrincipalClass</key>
36 <string>NSApplication</string>
37</dict>
38</plist>
diff --git a/pumpkin/pumpkin-Prefix.pch b/pumpkin/pumpkin-Prefix.pch
new file mode 100644
index 0000000..8976de1
--- a/dev/null
+++ b/pumpkin/pumpkin-Prefix.pch
@@ -0,0 +1,7 @@
1//
2// Prefix header for all source files of the 'PumpKIN' target in the 'PumpKIN' project
3//
4
5#ifdef __OBJC__
6 #import <Cocoa/Cocoa.h>
7#endif
diff --git a/pumpkin/pumpkin-defaults.plist b/pumpkin/pumpkin-defaults.plist
new file mode 100644
index 0000000..511140f
--- a/dev/null
+++ b/pumpkin/pumpkin-defaults.plist
@@ -0,0 +1,28 @@
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>bindPort</key>
6 <integer>69</integer>
7 <key>bindAddress</key>
8 <string>0.0.0.0</string>
9 <key>remotePort</key>
10 <integer>69</integer>
11 <key>blockSize</key>
12 <integer>512</integer>
13 <key>xferType</key>
14 <string>octet</string>
15 <key>timeout</key>
16 <integer>10</integer>
17 <key>rrqBehavior</key>
18 <integer>1</integer>
19 <key>wrqBehavior</key>
20 <integer>2</integer>
21 <key>confirmationTimeout</key>
22 <string>30</string>
23 <key>giveUpTimeout</key>
24 <integer>120</integer>
25 <key>listen</key>
26 <true/>
27</dict>
28</plist>
diff --git a/pumpkin/put.icns b/pumpkin/put.icns
new file mode 100644
index 0000000..5d62867
--- a/dev/null
+++ b/pumpkin/put.icns
Binary files differ