Show More
|
1 | NO CONTENT: new file 100644 |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644 |
@@ -0,0 +1,425 b'' | |||
|
1 | # encoding: utf-8 | |
|
2 | # -*- test-case-name: IPython.frontend.cocoa.tests.test_cocoa_frontend -*- | |
|
3 | ||
|
4 | """PyObjC classes to provide a Cocoa frontend to the | |
|
5 | IPython.kernel.engineservice.IEngineBase. | |
|
6 | ||
|
7 | To add an IPython interpreter to a cocoa app, instantiate an | |
|
8 | IPythonCocoaController in a XIB and connect its textView outlet to an | |
|
9 | NSTextView instance in your UI. That's it. | |
|
10 | ||
|
11 | Author: Barry Wark | |
|
12 | """ | |
|
13 | ||
|
14 | __docformat__ = "restructuredtext en" | |
|
15 | ||
|
16 | #----------------------------------------------------------------------------- | |
|
17 | # Copyright (C) 2008 The IPython Development Team | |
|
18 | # | |
|
19 | # Distributed under the terms of the BSD License. The full license is in | |
|
20 | # the file COPYING, distributed as part of this software. | |
|
21 | #----------------------------------------------------------------------------- | |
|
22 | ||
|
23 | #----------------------------------------------------------------------------- | |
|
24 | # Imports | |
|
25 | #----------------------------------------------------------------------------- | |
|
26 | ||
|
27 | import objc | |
|
28 | import uuid | |
|
29 | ||
|
30 | from Foundation import NSObject, NSMutableArray, NSMutableDictionary,\ | |
|
31 | NSLog, NSNotificationCenter, NSMakeRange,\ | |
|
32 | NSLocalizedString, NSIntersectionRange | |
|
33 | ||
|
34 | from AppKit import NSApplicationWillTerminateNotification, NSBeep,\ | |
|
35 | NSTextView, NSRulerView, NSVerticalRuler | |
|
36 | ||
|
37 | from pprint import saferepr | |
|
38 | ||
|
39 | import IPython | |
|
40 | from IPython.kernel.engineservice import ThreadedEngineService | |
|
41 | from IPython.frontend.frontendbase import FrontEndBase | |
|
42 | ||
|
43 | from twisted.internet.threads import blockingCallFromThread | |
|
44 | from twisted.python.failure import Failure | |
|
45 | ||
|
46 | #------------------------------------------------------------------------------ | |
|
47 | # Classes to implement the Cocoa frontend | |
|
48 | #------------------------------------------------------------------------------ | |
|
49 | ||
|
50 | # TODO: | |
|
51 | # 1. use MultiEngineClient and out-of-process engine rather than | |
|
52 | # ThreadedEngineService? | |
|
53 | # 2. integrate Xgrid launching of engines | |
|
54 | ||
|
55 | ||
|
56 | ||
|
57 | ||
|
58 | class IPythonCocoaController(NSObject, FrontEndBase): | |
|
59 | userNS = objc.ivar() #mirror of engine.user_ns (key=>str(value)) | |
|
60 | waitingForEngine = objc.ivar().bool() | |
|
61 | textView = objc.IBOutlet() | |
|
62 | ||
|
63 | def init(self): | |
|
64 | self = super(IPythonCocoaController, self).init() | |
|
65 | FrontEndBase.__init__(self, engine=ThreadedEngineService()) | |
|
66 | if(self != None): | |
|
67 | self._common_init() | |
|
68 | ||
|
69 | return self | |
|
70 | ||
|
71 | def _common_init(self): | |
|
72 | """_common_init""" | |
|
73 | ||
|
74 | self.userNS = NSMutableDictionary.dictionary() | |
|
75 | self.waitingForEngine = False | |
|
76 | ||
|
77 | self.lines = {} | |
|
78 | self.tabSpaces = 4 | |
|
79 | self.tabUsesSpaces = True | |
|
80 | self.currentBlockID = self.next_block_ID() | |
|
81 | self.blockRanges = {} # blockID=>NSRange | |
|
82 | ||
|
83 | ||
|
84 | def awakeFromNib(self): | |
|
85 | """awakeFromNib""" | |
|
86 | ||
|
87 | self._common_init() | |
|
88 | ||
|
89 | # Start the IPython engine | |
|
90 | self.engine.startService() | |
|
91 | NSLog('IPython engine started') | |
|
92 | ||
|
93 | # Register for app termination | |
|
94 | nc = NSNotificationCenter.defaultCenter() | |
|
95 | nc.addObserver_selector_name_object_( | |
|
96 | self, | |
|
97 | 'appWillTerminate:', | |
|
98 | NSApplicationWillTerminateNotification, | |
|
99 | None) | |
|
100 | ||
|
101 | self.textView.setDelegate_(self) | |
|
102 | self.textView.enclosingScrollView().setHasVerticalRuler_(True) | |
|
103 | r = NSRulerView.alloc().initWithScrollView_orientation_( | |
|
104 | self.textView.enclosingScrollView(), | |
|
105 | NSVerticalRuler) | |
|
106 | self.verticalRulerView = r | |
|
107 | self.verticalRulerView.setClientView_(self.textView) | |
|
108 | self._start_cli_banner() | |
|
109 | ||
|
110 | ||
|
111 | def appWillTerminate_(self, notification): | |
|
112 | """appWillTerminate""" | |
|
113 | ||
|
114 | self.engine.stopService() | |
|
115 | ||
|
116 | ||
|
117 | def complete(self, token): | |
|
118 | """Complete token in engine's user_ns | |
|
119 | ||
|
120 | Parameters | |
|
121 | ---------- | |
|
122 | token : string | |
|
123 | ||
|
124 | Result | |
|
125 | ------ | |
|
126 | Deferred result of | |
|
127 | IPython.kernel.engineservice.IEngineBase.complete | |
|
128 | """ | |
|
129 | ||
|
130 | return self.engine.complete(token) | |
|
131 | ||
|
132 | ||
|
133 | def execute(self, block, blockID=None): | |
|
134 | self.waitingForEngine = True | |
|
135 | self.willChangeValueForKey_('commandHistory') | |
|
136 | d = super(IPythonCocoaController, self).execute(block, blockID) | |
|
137 | d.addBoth(self._engine_done) | |
|
138 | d.addCallback(self._update_user_ns) | |
|
139 | ||
|
140 | return d | |
|
141 | ||
|
142 | ||
|
143 | def _engine_done(self, x): | |
|
144 | self.waitingForEngine = False | |
|
145 | self.didChangeValueForKey_('commandHistory') | |
|
146 | return x | |
|
147 | ||
|
148 | def _update_user_ns(self, result): | |
|
149 | """Update self.userNS from self.engine's namespace""" | |
|
150 | d = self.engine.keys() | |
|
151 | d.addCallback(self._get_engine_namespace_values_for_keys) | |
|
152 | ||
|
153 | return result | |
|
154 | ||
|
155 | ||
|
156 | def _get_engine_namespace_values_for_keys(self, keys): | |
|
157 | d = self.engine.pull(keys) | |
|
158 | d.addCallback(self._store_engine_namespace_values, keys=keys) | |
|
159 | ||
|
160 | ||
|
161 | def _store_engine_namespace_values(self, values, keys=[]): | |
|
162 | assert(len(values) == len(keys)) | |
|
163 | self.willChangeValueForKey_('userNS') | |
|
164 | for (k,v) in zip(keys,values): | |
|
165 | self.userNS[k] = saferepr(v) | |
|
166 | self.didChangeValueForKey_('userNS') | |
|
167 | ||
|
168 | ||
|
169 | def update_cell_prompt(self, result): | |
|
170 | if(isinstance(result, Failure)): | |
|
171 | blockID = result.blockID | |
|
172 | else: | |
|
173 | blockID = result['blockID'] | |
|
174 | ||
|
175 | ||
|
176 | self.insert_text(self.input_prompt(result=result), | |
|
177 | textRange=NSMakeRange(self.blockRanges[blockID].location,0), | |
|
178 | scrollToVisible=False | |
|
179 | ) | |
|
180 | ||
|
181 | return result | |
|
182 | ||
|
183 | ||
|
184 | def render_result(self, result): | |
|
185 | blockID = result['blockID'] | |
|
186 | inputRange = self.blockRanges[blockID] | |
|
187 | del self.blockRanges[blockID] | |
|
188 | ||
|
189 | #print inputRange,self.current_block_range() | |
|
190 | self.insert_text('\n' + | |
|
191 | self.output_prompt(result) + | |
|
192 | result.get('display',{}).get('pprint','') + | |
|
193 | '\n\n', | |
|
194 | textRange=NSMakeRange(inputRange.location+inputRange.length, | |
|
195 | 0)) | |
|
196 | return result | |
|
197 | ||
|
198 | ||
|
199 | def render_error(self, failure): | |
|
200 | self.insert_text('\n\n'+str(failure)+'\n\n') | |
|
201 | self.start_new_block() | |
|
202 | return failure | |
|
203 | ||
|
204 | ||
|
205 | def _start_cli_banner(self): | |
|
206 | """Print banner""" | |
|
207 | ||
|
208 | banner = """IPython1 %s -- An enhanced Interactive Python.""" % \ | |
|
209 | IPython.__version__ | |
|
210 | ||
|
211 | self.insert_text(banner + '\n\n') | |
|
212 | ||
|
213 | ||
|
214 | def start_new_block(self): | |
|
215 | """""" | |
|
216 | ||
|
217 | self.currentBlockID = self.next_block_ID() | |
|
218 | ||
|
219 | ||
|
220 | ||
|
221 | def next_block_ID(self): | |
|
222 | ||
|
223 | return uuid.uuid4() | |
|
224 | ||
|
225 | def current_block_range(self): | |
|
226 | return self.blockRanges.get(self.currentBlockID, | |
|
227 | NSMakeRange(self.textView.textStorage().length(), | |
|
228 | 0)) | |
|
229 | ||
|
230 | def current_block(self): | |
|
231 | """The current block's text""" | |
|
232 | ||
|
233 | return self.text_for_range(self.current_block_range()) | |
|
234 | ||
|
235 | def text_for_range(self, textRange): | |
|
236 | """text_for_range""" | |
|
237 | ||
|
238 | ts = self.textView.textStorage() | |
|
239 | return ts.string().substringWithRange_(textRange) | |
|
240 | ||
|
241 | def current_line(self): | |
|
242 | block = self.text_for_range(self.current_block_range()) | |
|
243 | block = block.split('\n') | |
|
244 | return block[-1] | |
|
245 | ||
|
246 | ||
|
247 | def insert_text(self, string=None, textRange=None, scrollToVisible=True): | |
|
248 | """Insert text into textView at textRange, updating blockRanges | |
|
249 | as necessary | |
|
250 | """ | |
|
251 | ||
|
252 | if(textRange == None): | |
|
253 | #range for end of text | |
|
254 | textRange = NSMakeRange(self.textView.textStorage().length(), 0) | |
|
255 | ||
|
256 | for r in self.blockRanges.itervalues(): | |
|
257 | intersection = NSIntersectionRange(r,textRange) | |
|
258 | if(intersection.length == 0): #ranges don't intersect | |
|
259 | if r.location >= textRange.location: | |
|
260 | r.location += len(string) | |
|
261 | else: #ranges intersect | |
|
262 | if(r.location <= textRange.location): | |
|
263 | assert(intersection.length == textRange.length) | |
|
264 | r.length += textRange.length | |
|
265 | else: | |
|
266 | r.location += intersection.length | |
|
267 | ||
|
268 | self.textView.replaceCharactersInRange_withString_( | |
|
269 | textRange, string) | |
|
270 | self.textView.setSelectedRange_( | |
|
271 | NSMakeRange(textRange.location+len(string), 0)) | |
|
272 | if(scrollToVisible): | |
|
273 | self.textView.scrollRangeToVisible_(textRange) | |
|
274 | ||
|
275 | ||
|
276 | ||
|
277 | ||
|
278 | def replace_current_block_with_string(self, textView, string): | |
|
279 | textView.replaceCharactersInRange_withString_( | |
|
280 | self.current_block_range(), | |
|
281 | string) | |
|
282 | self.current_block_range().length = len(string) | |
|
283 | r = NSMakeRange(textView.textStorage().length(), 0) | |
|
284 | textView.scrollRangeToVisible_(r) | |
|
285 | textView.setSelectedRange_(r) | |
|
286 | ||
|
287 | ||
|
288 | def current_indent_string(self): | |
|
289 | """returns string for indent or None if no indent""" | |
|
290 | ||
|
291 | if(len(self.current_block()) > 0): | |
|
292 | lines = self.current_block().split('\n') | |
|
293 | currentIndent = len(lines[-1]) - len(lines[-1]) | |
|
294 | if(currentIndent == 0): | |
|
295 | currentIndent = self.tabSpaces | |
|
296 | ||
|
297 | if(self.tabUsesSpaces): | |
|
298 | result = ' ' * currentIndent | |
|
299 | else: | |
|
300 | result = '\t' * (currentIndent/self.tabSpaces) | |
|
301 | else: | |
|
302 | result = None | |
|
303 | ||
|
304 | return result | |
|
305 | ||
|
306 | ||
|
307 | # NSTextView delegate methods... | |
|
308 | def textView_doCommandBySelector_(self, textView, selector): | |
|
309 | assert(textView == self.textView) | |
|
310 | NSLog("textView_doCommandBySelector_: "+selector) | |
|
311 | ||
|
312 | ||
|
313 | if(selector == 'insertNewline:'): | |
|
314 | indent = self.current_indent_string() | |
|
315 | if(indent): | |
|
316 | line = indent + self.current_line() | |
|
317 | else: | |
|
318 | line = self.current_line() | |
|
319 | ||
|
320 | if(self.is_complete(self.current_block())): | |
|
321 | self.execute(self.current_block(), | |
|
322 | blockID=self.currentBlockID) | |
|
323 | self.start_new_block() | |
|
324 | ||
|
325 | return True | |
|
326 | ||
|
327 | return False | |
|
328 | ||
|
329 | elif(selector == 'moveUp:'): | |
|
330 | prevBlock = self.get_history_previous(self.current_block()) | |
|
331 | if(prevBlock != None): | |
|
332 | self.replace_current_block_with_string(textView, prevBlock) | |
|
333 | else: | |
|
334 | NSBeep() | |
|
335 | return True | |
|
336 | ||
|
337 | elif(selector == 'moveDown:'): | |
|
338 | nextBlock = self.get_history_next() | |
|
339 | if(nextBlock != None): | |
|
340 | self.replace_current_block_with_string(textView, nextBlock) | |
|
341 | else: | |
|
342 | NSBeep() | |
|
343 | return True | |
|
344 | ||
|
345 | elif(selector == 'moveToBeginningOfParagraph:'): | |
|
346 | textView.setSelectedRange_(NSMakeRange( | |
|
347 | self.current_block_range().location, | |
|
348 | 0)) | |
|
349 | return True | |
|
350 | elif(selector == 'moveToEndOfParagraph:'): | |
|
351 | textView.setSelectedRange_(NSMakeRange( | |
|
352 | self.current_block_range().location + \ | |
|
353 | self.current_block_range().length, 0)) | |
|
354 | return True | |
|
355 | elif(selector == 'deleteToEndOfParagraph:'): | |
|
356 | if(textView.selectedRange().location <= \ | |
|
357 | self.current_block_range().location): | |
|
358 | # Intersect the selected range with the current line range | |
|
359 | if(self.current_block_range().length < 0): | |
|
360 | self.blockRanges[self.currentBlockID].length = 0 | |
|
361 | ||
|
362 | r = NSIntersectionRange(textView.rangesForUserTextChange()[0], | |
|
363 | self.current_block_range()) | |
|
364 | ||
|
365 | if(r.length > 0): #no intersection | |
|
366 | textView.setSelectedRange_(r) | |
|
367 | ||
|
368 | return False # don't actually handle the delete | |
|
369 | ||
|
370 | elif(selector == 'insertTab:'): | |
|
371 | if(len(self.current_line().strip()) == 0): #only white space | |
|
372 | return False | |
|
373 | else: | |
|
374 | self.textView.complete_(self) | |
|
375 | return True | |
|
376 | ||
|
377 | elif(selector == 'deleteBackward:'): | |
|
378 | #if we're at the beginning of the current block, ignore | |
|
379 | if(textView.selectedRange().location == \ | |
|
380 | self.current_block_range().location): | |
|
381 | return True | |
|
382 | else: | |
|
383 | self.current_block_range().length-=1 | |
|
384 | return False | |
|
385 | return False | |
|
386 | ||
|
387 | ||
|
388 | def textView_shouldChangeTextInRanges_replacementStrings_(self, | |
|
389 | textView, ranges, replacementStrings): | |
|
390 | """ | |
|
391 | Delegate method for NSTextView. | |
|
392 | ||
|
393 | Refuse change text in ranges not at end, but make those changes at | |
|
394 | end. | |
|
395 | """ | |
|
396 | ||
|
397 | assert(len(ranges) == len(replacementStrings)) | |
|
398 | allow = True | |
|
399 | for r,s in zip(ranges, replacementStrings): | |
|
400 | r = r.rangeValue() | |
|
401 | if(textView.textStorage().length() > 0 and | |
|
402 | r.location < self.current_block_range().location): | |
|
403 | self.insert_text(s) | |
|
404 | allow = False | |
|
405 | ||
|
406 | ||
|
407 | self.blockRanges.setdefault(self.currentBlockID, | |
|
408 | self.current_block_range()).length +=\ | |
|
409 | len(s) | |
|
410 | ||
|
411 | return allow | |
|
412 | ||
|
413 | def textView_completions_forPartialWordRange_indexOfSelectedItem_(self, | |
|
414 | textView, words, charRange, index): | |
|
415 | try: | |
|
416 | ts = textView.textStorage() | |
|
417 | token = ts.string().substringWithRange_(charRange) | |
|
418 | completions = blockingCallFromThread(self.complete, token) | |
|
419 | except: | |
|
420 | completions = objc.nil | |
|
421 | NSBeep() | |
|
422 | ||
|
423 | return (completions,0) | |
|
424 | ||
|
425 |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
This diff has been collapsed as it changes many lines, (3423 lines changed) Show them Hide them | |||
@@ -0,0 +1,3423 b'' | |||
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |
|
2 | <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.01"> | |
|
3 | <data> | |
|
4 | <int key="IBDocument.SystemTarget">1050</int> | |
|
5 | <string key="IBDocument.SystemVersion">9D34</string> | |
|
6 | <string key="IBDocument.InterfaceBuilderVersion">629</string> | |
|
7 | <string key="IBDocument.AppKitVersion">949.33</string> | |
|
8 | <string key="IBDocument.HIToolboxVersion">352.00</string> | |
|
9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> | |
|
10 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
11 | <integer value="416"/> | |
|
12 | <integer value="29"/> | |
|
13 | </object> | |
|
14 | <object class="NSArray" key="IBDocument.PluginDependencies"> | |
|
15 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
16 | <string id="885801228">com.apple.InterfaceBuilderKit</string> | |
|
17 | <string id="113577022">com.apple.InterfaceBuilder.CocoaPlugin</string> | |
|
18 | </object> | |
|
19 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> | |
|
20 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
21 | <object class="NSCustomObject" id="1021"> | |
|
22 | <string key="NSClassName" id="190635311">NSApplication</string> | |
|
23 | </object> | |
|
24 | <object class="NSCustomObject" id="1014"> | |
|
25 | <string key="NSClassName">FirstResponder</string> | |
|
26 | </object> | |
|
27 | <object class="NSCustomObject" id="1050"> | |
|
28 | <reference key="NSClassName" ref="190635311"/> | |
|
29 | </object> | |
|
30 | <object class="NSMenu" id="649796088"> | |
|
31 | <string key="NSTitle">AMainMenu</string> | |
|
32 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
33 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
34 | <object class="NSMenuItem" id="694149608"> | |
|
35 | <reference key="NSMenu" ref="649796088"/> | |
|
36 | <string key="NSTitle" id="837240250">IPython1Sandbox</string> | |
|
37 | <string key="NSKeyEquiv" id="255189770"/> | |
|
38 | <int key="NSKeyEquivModMask">1048576</int> | |
|
39 | <int key="NSMnemonicLoc">2147483647</int> | |
|
40 | <object class="NSCustomResource" key="NSOnImage" id="985281305"> | |
|
41 | <string key="NSClassName" id="60114142">NSImage</string> | |
|
42 | <string key="NSResourceName">NSMenuCheckmark</string> | |
|
43 | </object> | |
|
44 | <object class="NSCustomResource" key="NSMixedImage" id="351279908"> | |
|
45 | <reference key="NSClassName" ref="60114142"/> | |
|
46 | <string key="NSResourceName">NSMenuMixedState</string> | |
|
47 | </object> | |
|
48 | <string key="NSAction">submenuAction:</string> | |
|
49 | <object class="NSMenu" key="NSSubmenu" id="110575045"> | |
|
50 | <reference key="NSTitle" ref="837240250"/> | |
|
51 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
52 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
53 | <object class="NSMenuItem" id="238522557"> | |
|
54 | <reference key="NSMenu" ref="110575045"/> | |
|
55 | <string key="NSTitle">About IPython1Sandbox</string> | |
|
56 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
57 | <int key="NSMnemonicLoc">2147483647</int> | |
|
58 | <reference key="NSOnImage" ref="985281305"/> | |
|
59 | <reference key="NSMixedImage" ref="351279908"/> | |
|
60 | </object> | |
|
61 | <object class="NSMenuItem" id="304266470"> | |
|
62 | <reference key="NSMenu" ref="110575045"/> | |
|
63 | <bool key="NSIsDisabled">YES</bool> | |
|
64 | <bool key="NSIsSeparator">YES</bool> | |
|
65 | <reference key="NSTitle" ref="255189770"/> | |
|
66 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
67 | <int key="NSKeyEquivModMask">1048576</int> | |
|
68 | <int key="NSMnemonicLoc">2147483647</int> | |
|
69 | <reference key="NSOnImage" ref="985281305"/> | |
|
70 | <reference key="NSMixedImage" ref="351279908"/> | |
|
71 | </object> | |
|
72 | <object class="NSMenuItem" id="609285721"> | |
|
73 | <reference key="NSMenu" ref="110575045"/> | |
|
74 | <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string> | |
|
75 | <string key="NSKeyEquiv">,</string> | |
|
76 | <int key="NSKeyEquivModMask">1048576</int> | |
|
77 | <int key="NSMnemonicLoc">2147483647</int> | |
|
78 | <reference key="NSOnImage" ref="985281305"/> | |
|
79 | <reference key="NSMixedImage" ref="351279908"/> | |
|
80 | </object> | |
|
81 | <object class="NSMenuItem" id="481834944"> | |
|
82 | <reference key="NSMenu" ref="110575045"/> | |
|
83 | <bool key="NSIsDisabled">YES</bool> | |
|
84 | <bool key="NSIsSeparator">YES</bool> | |
|
85 | <reference key="NSTitle" ref="255189770"/> | |
|
86 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
87 | <int key="NSKeyEquivModMask">1048576</int> | |
|
88 | <int key="NSMnemonicLoc">2147483647</int> | |
|
89 | <reference key="NSOnImage" ref="985281305"/> | |
|
90 | <reference key="NSMixedImage" ref="351279908"/> | |
|
91 | </object> | |
|
92 | <object class="NSMenuItem" id="1046388886"> | |
|
93 | <reference key="NSMenu" ref="110575045"/> | |
|
94 | <string key="NSTitle" id="642338826">Services</string> | |
|
95 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
96 | <int key="NSKeyEquivModMask">1048576</int> | |
|
97 | <int key="NSMnemonicLoc">2147483647</int> | |
|
98 | <reference key="NSOnImage" ref="985281305"/> | |
|
99 | <reference key="NSMixedImage" ref="351279908"/> | |
|
100 | <string key="NSAction">submenuAction:</string> | |
|
101 | <object class="NSMenu" key="NSSubmenu" id="752062318"> | |
|
102 | <reference key="NSTitle" ref="642338826"/> | |
|
103 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
104 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
105 | </object> | |
|
106 | <string key="NSName">_NSServicesMenu</string> | |
|
107 | </object> | |
|
108 | </object> | |
|
109 | <object class="NSMenuItem" id="646227648"> | |
|
110 | <reference key="NSMenu" ref="110575045"/> | |
|
111 | <bool key="NSIsDisabled">YES</bool> | |
|
112 | <bool key="NSIsSeparator">YES</bool> | |
|
113 | <reference key="NSTitle" ref="255189770"/> | |
|
114 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
115 | <int key="NSKeyEquivModMask">1048576</int> | |
|
116 | <int key="NSMnemonicLoc">2147483647</int> | |
|
117 | <reference key="NSOnImage" ref="985281305"/> | |
|
118 | <reference key="NSMixedImage" ref="351279908"/> | |
|
119 | </object> | |
|
120 | <object class="NSMenuItem" id="755159360"> | |
|
121 | <reference key="NSMenu" ref="110575045"/> | |
|
122 | <string key="NSTitle">Hide IPython1Sandbox</string> | |
|
123 | <string key="NSKeyEquiv" id="940330891">h</string> | |
|
124 | <int key="NSKeyEquivModMask">1048576</int> | |
|
125 | <int key="NSMnemonicLoc">2147483647</int> | |
|
126 | <reference key="NSOnImage" ref="985281305"/> | |
|
127 | <reference key="NSMixedImage" ref="351279908"/> | |
|
128 | </object> | |
|
129 | <object class="NSMenuItem" id="342932134"> | |
|
130 | <reference key="NSMenu" ref="110575045"/> | |
|
131 | <string key="NSTitle">Hide Others</string> | |
|
132 | <reference key="NSKeyEquiv" ref="940330891"/> | |
|
133 | <int key="NSKeyEquivModMask">1572864</int> | |
|
134 | <int key="NSMnemonicLoc">2147483647</int> | |
|
135 | <reference key="NSOnImage" ref="985281305"/> | |
|
136 | <reference key="NSMixedImage" ref="351279908"/> | |
|
137 | </object> | |
|
138 | <object class="NSMenuItem" id="908899353"> | |
|
139 | <reference key="NSMenu" ref="110575045"/> | |
|
140 | <string key="NSTitle">Show All</string> | |
|
141 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
142 | <int key="NSKeyEquivModMask">1048576</int> | |
|
143 | <int key="NSMnemonicLoc">2147483647</int> | |
|
144 | <reference key="NSOnImage" ref="985281305"/> | |
|
145 | <reference key="NSMixedImage" ref="351279908"/> | |
|
146 | </object> | |
|
147 | <object class="NSMenuItem" id="1056857174"> | |
|
148 | <reference key="NSMenu" ref="110575045"/> | |
|
149 | <bool key="NSIsDisabled">YES</bool> | |
|
150 | <bool key="NSIsSeparator">YES</bool> | |
|
151 | <reference key="NSTitle" ref="255189770"/> | |
|
152 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
153 | <int key="NSKeyEquivModMask">1048576</int> | |
|
154 | <int key="NSMnemonicLoc">2147483647</int> | |
|
155 | <reference key="NSOnImage" ref="985281305"/> | |
|
156 | <reference key="NSMixedImage" ref="351279908"/> | |
|
157 | </object> | |
|
158 | <object class="NSMenuItem" id="632727374"> | |
|
159 | <reference key="NSMenu" ref="110575045"/> | |
|
160 | <string key="NSTitle">Quit IPython1Sandbox</string> | |
|
161 | <string key="NSKeyEquiv">q</string> | |
|
162 | <int key="NSKeyEquivModMask">1048576</int> | |
|
163 | <int key="NSMnemonicLoc">2147483647</int> | |
|
164 | <reference key="NSOnImage" ref="985281305"/> | |
|
165 | <reference key="NSMixedImage" ref="351279908"/> | |
|
166 | </object> | |
|
167 | </object> | |
|
168 | <string key="NSName">_NSAppleMenu</string> | |
|
169 | </object> | |
|
170 | </object> | |
|
171 | <object class="NSMenuItem" id="379814623"> | |
|
172 | <reference key="NSMenu" ref="649796088"/> | |
|
173 | <string key="NSTitle" id="881404960">File</string> | |
|
174 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
175 | <int key="NSKeyEquivModMask">1048576</int> | |
|
176 | <int key="NSMnemonicLoc">2147483647</int> | |
|
177 | <reference key="NSOnImage" ref="985281305"/> | |
|
178 | <reference key="NSMixedImage" ref="351279908"/> | |
|
179 | <string key="NSAction">submenuAction:</string> | |
|
180 | <object class="NSMenu" key="NSSubmenu" id="720053764"> | |
|
181 | <reference key="NSTitle" ref="881404960"/> | |
|
182 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
183 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
184 | <object class="NSMenuItem" id="705341025"> | |
|
185 | <reference key="NSMenu" ref="720053764"/> | |
|
186 | <string key="NSTitle">New</string> | |
|
187 | <string key="NSKeyEquiv">n</string> | |
|
188 | <int key="NSKeyEquivModMask">1048576</int> | |
|
189 | <int key="NSMnemonicLoc">2147483647</int> | |
|
190 | <reference key="NSOnImage" ref="985281305"/> | |
|
191 | <reference key="NSMixedImage" ref="351279908"/> | |
|
192 | </object> | |
|
193 | <object class="NSMenuItem" id="722745758"> | |
|
194 | <reference key="NSMenu" ref="720053764"/> | |
|
195 | <string type="base64-UTF8" key="NSTitle">T3BlbuKApg</string> | |
|
196 | <string key="NSKeyEquiv">o</string> | |
|
197 | <int key="NSKeyEquivModMask">1048576</int> | |
|
198 | <int key="NSMnemonicLoc">2147483647</int> | |
|
199 | <reference key="NSOnImage" ref="985281305"/> | |
|
200 | <reference key="NSMixedImage" ref="351279908"/> | |
|
201 | </object> | |
|
202 | <object class="NSMenuItem" id="1025936716"> | |
|
203 | <reference key="NSMenu" ref="720053764"/> | |
|
204 | <string key="NSTitle" id="975517829">Open Recent</string> | |
|
205 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
206 | <int key="NSKeyEquivModMask">1048576</int> | |
|
207 | <int key="NSMnemonicLoc">2147483647</int> | |
|
208 | <reference key="NSOnImage" ref="985281305"/> | |
|
209 | <reference key="NSMixedImage" ref="351279908"/> | |
|
210 | <string key="NSAction">submenuAction:</string> | |
|
211 | <object class="NSMenu" key="NSSubmenu" id="1065607017"> | |
|
212 | <reference key="NSTitle" ref="975517829"/> | |
|
213 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
214 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
215 | <object class="NSMenuItem" id="759406840"> | |
|
216 | <reference key="NSMenu" ref="1065607017"/> | |
|
217 | <string key="NSTitle">Clear Menu</string> | |
|
218 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
219 | <int key="NSKeyEquivModMask">1048576</int> | |
|
220 | <int key="NSMnemonicLoc">2147483647</int> | |
|
221 | <reference key="NSOnImage" ref="985281305"/> | |
|
222 | <reference key="NSMixedImage" ref="351279908"/> | |
|
223 | </object> | |
|
224 | </object> | |
|
225 | <string key="NSName">_NSRecentDocumentsMenu</string> | |
|
226 | </object> | |
|
227 | </object> | |
|
228 | <object class="NSMenuItem" id="425164168"> | |
|
229 | <reference key="NSMenu" ref="720053764"/> | |
|
230 | <bool key="NSIsDisabled">YES</bool> | |
|
231 | <bool key="NSIsSeparator">YES</bool> | |
|
232 | <reference key="NSTitle" ref="255189770"/> | |
|
233 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
234 | <int key="NSKeyEquivModMask">1048576</int> | |
|
235 | <int key="NSMnemonicLoc">2147483647</int> | |
|
236 | <reference key="NSOnImage" ref="985281305"/> | |
|
237 | <reference key="NSMixedImage" ref="351279908"/> | |
|
238 | </object> | |
|
239 | <object class="NSMenuItem" id="776162233"> | |
|
240 | <reference key="NSMenu" ref="720053764"/> | |
|
241 | <string key="NSTitle">Close</string> | |
|
242 | <string key="NSKeyEquiv">w</string> | |
|
243 | <int key="NSKeyEquivModMask">1048576</int> | |
|
244 | <int key="NSMnemonicLoc">2147483647</int> | |
|
245 | <reference key="NSOnImage" ref="985281305"/> | |
|
246 | <reference key="NSMixedImage" ref="351279908"/> | |
|
247 | </object> | |
|
248 | <object class="NSMenuItem" id="1023925487"> | |
|
249 | <reference key="NSMenu" ref="720053764"/> | |
|
250 | <string key="NSTitle">Save</string> | |
|
251 | <string key="NSKeyEquiv">s</string> | |
|
252 | <int key="NSKeyEquivModMask">1048576</int> | |
|
253 | <int key="NSMnemonicLoc">2147483647</int> | |
|
254 | <reference key="NSOnImage" ref="985281305"/> | |
|
255 | <reference key="NSMixedImage" ref="351279908"/> | |
|
256 | </object> | |
|
257 | <object class="NSMenuItem" id="117038363"> | |
|
258 | <reference key="NSMenu" ref="720053764"/> | |
|
259 | <string type="base64-UTF8" key="NSTitle">U2F2ZSBBc+KApg</string> | |
|
260 | <string key="NSKeyEquiv">S</string> | |
|
261 | <int key="NSKeyEquivModMask">1179648</int> | |
|
262 | <int key="NSMnemonicLoc">2147483647</int> | |
|
263 | <reference key="NSOnImage" ref="985281305"/> | |
|
264 | <reference key="NSMixedImage" ref="351279908"/> | |
|
265 | </object> | |
|
266 | <object class="NSMenuItem" id="579971712"> | |
|
267 | <reference key="NSMenu" ref="720053764"/> | |
|
268 | <string key="NSTitle">Revert to Saved</string> | |
|
269 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
270 | <int key="NSMnemonicLoc">2147483647</int> | |
|
271 | <reference key="NSOnImage" ref="985281305"/> | |
|
272 | <reference key="NSMixedImage" ref="351279908"/> | |
|
273 | </object> | |
|
274 | <object class="NSMenuItem" id="1010469920"> | |
|
275 | <reference key="NSMenu" ref="720053764"/> | |
|
276 | <bool key="NSIsDisabled">YES</bool> | |
|
277 | <bool key="NSIsSeparator">YES</bool> | |
|
278 | <reference key="NSTitle" ref="255189770"/> | |
|
279 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
280 | <int key="NSKeyEquivModMask">1048576</int> | |
|
281 | <int key="NSMnemonicLoc">2147483647</int> | |
|
282 | <reference key="NSOnImage" ref="985281305"/> | |
|
283 | <reference key="NSMixedImage" ref="351279908"/> | |
|
284 | </object> | |
|
285 | <object class="NSMenuItem" id="294629803"> | |
|
286 | <reference key="NSMenu" ref="720053764"/> | |
|
287 | <string key="NSTitle">Page Setup...</string> | |
|
288 | <string key="NSKeyEquiv">P</string> | |
|
289 | <int key="NSKeyEquivModMask">1179648</int> | |
|
290 | <int key="NSMnemonicLoc">2147483647</int> | |
|
291 | <reference key="NSOnImage" ref="985281305"/> | |
|
292 | <reference key="NSMixedImage" ref="351279908"/> | |
|
293 | <reference key="NSToolTip" ref="255189770"/> | |
|
294 | </object> | |
|
295 | <object class="NSMenuItem" id="49223823"> | |
|
296 | <reference key="NSMenu" ref="720053764"/> | |
|
297 | <string type="base64-UTF8" key="NSTitle">UHJpbnTigKY</string> | |
|
298 | <string key="NSKeyEquiv">p</string> | |
|
299 | <int key="NSKeyEquivModMask">1048576</int> | |
|
300 | <int key="NSMnemonicLoc">2147483647</int> | |
|
301 | <reference key="NSOnImage" ref="985281305"/> | |
|
302 | <reference key="NSMixedImage" ref="351279908"/> | |
|
303 | </object> | |
|
304 | </object> | |
|
305 | </object> | |
|
306 | </object> | |
|
307 | <object class="NSMenuItem" id="952259628"> | |
|
308 | <reference key="NSMenu" ref="649796088"/> | |
|
309 | <string key="NSTitle" id="1037326483">Edit</string> | |
|
310 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
311 | <int key="NSKeyEquivModMask">1048576</int> | |
|
312 | <int key="NSMnemonicLoc">2147483647</int> | |
|
313 | <reference key="NSOnImage" ref="985281305"/> | |
|
314 | <reference key="NSMixedImage" ref="351279908"/> | |
|
315 | <string key="NSAction">submenuAction:</string> | |
|
316 | <object class="NSMenu" key="NSSubmenu" id="789758025"> | |
|
317 | <reference key="NSTitle" ref="1037326483"/> | |
|
318 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
319 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
320 | <object class="NSMenuItem" id="1058277027"> | |
|
321 | <reference key="NSMenu" ref="789758025"/> | |
|
322 | <string key="NSTitle">Undo</string> | |
|
323 | <string key="NSKeyEquiv">z</string> | |
|
324 | <int key="NSKeyEquivModMask">1048576</int> | |
|
325 | <int key="NSMnemonicLoc">2147483647</int> | |
|
326 | <reference key="NSOnImage" ref="985281305"/> | |
|
327 | <reference key="NSMixedImage" ref="351279908"/> | |
|
328 | </object> | |
|
329 | <object class="NSMenuItem" id="790794224"> | |
|
330 | <reference key="NSMenu" ref="789758025"/> | |
|
331 | <string key="NSTitle">Redo</string> | |
|
332 | <string key="NSKeyEquiv">Z</string> | |
|
333 | <int key="NSKeyEquivModMask">1179648</int> | |
|
334 | <int key="NSMnemonicLoc">2147483647</int> | |
|
335 | <reference key="NSOnImage" ref="985281305"/> | |
|
336 | <reference key="NSMixedImage" ref="351279908"/> | |
|
337 | </object> | |
|
338 | <object class="NSMenuItem" id="1040322652"> | |
|
339 | <reference key="NSMenu" ref="789758025"/> | |
|
340 | <bool key="NSIsDisabled">YES</bool> | |
|
341 | <bool key="NSIsSeparator">YES</bool> | |
|
342 | <reference key="NSTitle" ref="255189770"/> | |
|
343 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
344 | <int key="NSKeyEquivModMask">1048576</int> | |
|
345 | <int key="NSMnemonicLoc">2147483647</int> | |
|
346 | <reference key="NSOnImage" ref="985281305"/> | |
|
347 | <reference key="NSMixedImage" ref="351279908"/> | |
|
348 | </object> | |
|
349 | <object class="NSMenuItem" id="296257095"> | |
|
350 | <reference key="NSMenu" ref="789758025"/> | |
|
351 | <string key="NSTitle">Cut</string> | |
|
352 | <string key="NSKeyEquiv">x</string> | |
|
353 | <int key="NSKeyEquivModMask">1048576</int> | |
|
354 | <int key="NSMnemonicLoc">2147483647</int> | |
|
355 | <reference key="NSOnImage" ref="985281305"/> | |
|
356 | <reference key="NSMixedImage" ref="351279908"/> | |
|
357 | </object> | |
|
358 | <object class="NSMenuItem" id="860595796"> | |
|
359 | <reference key="NSMenu" ref="789758025"/> | |
|
360 | <string key="NSTitle">Copy</string> | |
|
361 | <string key="NSKeyEquiv">c</string> | |
|
362 | <int key="NSKeyEquivModMask">1048576</int> | |
|
363 | <int key="NSMnemonicLoc">2147483647</int> | |
|
364 | <reference key="NSOnImage" ref="985281305"/> | |
|
365 | <reference key="NSMixedImage" ref="351279908"/> | |
|
366 | </object> | |
|
367 | <object class="NSMenuItem" id="29853731"> | |
|
368 | <reference key="NSMenu" ref="789758025"/> | |
|
369 | <string key="NSTitle">Paste</string> | |
|
370 | <string key="NSKeyEquiv">v</string> | |
|
371 | <int key="NSKeyEquivModMask">1048576</int> | |
|
372 | <int key="NSMnemonicLoc">2147483647</int> | |
|
373 | <reference key="NSOnImage" ref="985281305"/> | |
|
374 | <reference key="NSMixedImage" ref="351279908"/> | |
|
375 | </object> | |
|
376 | <object class="NSMenuItem" id="437104165"> | |
|
377 | <reference key="NSMenu" ref="789758025"/> | |
|
378 | <string key="NSTitle">Delete</string> | |
|
379 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
380 | <int key="NSKeyEquivModMask">1048576</int> | |
|
381 | <int key="NSMnemonicLoc">2147483647</int> | |
|
382 | <reference key="NSOnImage" ref="985281305"/> | |
|
383 | <reference key="NSMixedImage" ref="351279908"/> | |
|
384 | </object> | |
|
385 | <object class="NSMenuItem" id="583158037"> | |
|
386 | <reference key="NSMenu" ref="789758025"/> | |
|
387 | <string key="NSTitle">Select All</string> | |
|
388 | <string key="NSKeyEquiv">a</string> | |
|
389 | <int key="NSKeyEquivModMask">1048576</int> | |
|
390 | <int key="NSMnemonicLoc">2147483647</int> | |
|
391 | <reference key="NSOnImage" ref="985281305"/> | |
|
392 | <reference key="NSMixedImage" ref="351279908"/> | |
|
393 | </object> | |
|
394 | <object class="NSMenuItem" id="212016141"> | |
|
395 | <reference key="NSMenu" ref="789758025"/> | |
|
396 | <bool key="NSIsDisabled">YES</bool> | |
|
397 | <bool key="NSIsSeparator">YES</bool> | |
|
398 | <reference key="NSTitle" ref="255189770"/> | |
|
399 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
400 | <int key="NSKeyEquivModMask">1048576</int> | |
|
401 | <int key="NSMnemonicLoc">2147483647</int> | |
|
402 | <reference key="NSOnImage" ref="985281305"/> | |
|
403 | <reference key="NSMixedImage" ref="351279908"/> | |
|
404 | </object> | |
|
405 | <object class="NSMenuItem" id="892235320"> | |
|
406 | <reference key="NSMenu" ref="789758025"/> | |
|
407 | <string key="NSTitle" id="688083180">Find</string> | |
|
408 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
409 | <int key="NSKeyEquivModMask">1048576</int> | |
|
410 | <int key="NSMnemonicLoc">2147483647</int> | |
|
411 | <reference key="NSOnImage" ref="985281305"/> | |
|
412 | <reference key="NSMixedImage" ref="351279908"/> | |
|
413 | <string key="NSAction">submenuAction:</string> | |
|
414 | <object class="NSMenu" key="NSSubmenu" id="963351320"> | |
|
415 | <reference key="NSTitle" ref="688083180"/> | |
|
416 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
417 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
418 | <object class="NSMenuItem" id="447796847"> | |
|
419 | <reference key="NSMenu" ref="963351320"/> | |
|
420 | <string type="base64-UTF8" key="NSTitle">RmluZOKApg</string> | |
|
421 | <string key="NSKeyEquiv" id="469505129">f</string> | |
|
422 | <int key="NSKeyEquivModMask">1048576</int> | |
|
423 | <int key="NSMnemonicLoc">2147483647</int> | |
|
424 | <reference key="NSOnImage" ref="985281305"/> | |
|
425 | <reference key="NSMixedImage" ref="351279908"/> | |
|
426 | <int key="NSTag">1</int> | |
|
427 | </object> | |
|
428 | <object class="NSMenuItem" id="326711663"> | |
|
429 | <reference key="NSMenu" ref="963351320"/> | |
|
430 | <string key="NSTitle">Find Next</string> | |
|
431 | <string key="NSKeyEquiv" id="762398675">g</string> | |
|
432 | <int key="NSKeyEquivModMask">1048576</int> | |
|
433 | <int key="NSMnemonicLoc">2147483647</int> | |
|
434 | <reference key="NSOnImage" ref="985281305"/> | |
|
435 | <reference key="NSMixedImage" ref="351279908"/> | |
|
436 | <int key="NSTag">2</int> | |
|
437 | </object> | |
|
438 | <object class="NSMenuItem" id="270902937"> | |
|
439 | <reference key="NSMenu" ref="963351320"/> | |
|
440 | <string key="NSTitle">Find Previous</string> | |
|
441 | <string key="NSKeyEquiv" id="819654342">G</string> | |
|
442 | <int key="NSKeyEquivModMask">1179648</int> | |
|
443 | <int key="NSMnemonicLoc">2147483647</int> | |
|
444 | <reference key="NSOnImage" ref="985281305"/> | |
|
445 | <reference key="NSMixedImage" ref="351279908"/> | |
|
446 | <int key="NSTag">3</int> | |
|
447 | </object> | |
|
448 | <object class="NSMenuItem" id="159080638"> | |
|
449 | <reference key="NSMenu" ref="963351320"/> | |
|
450 | <string key="NSTitle">Use Selection for Find</string> | |
|
451 | <string key="NSKeyEquiv">e</string> | |
|
452 | <int key="NSKeyEquivModMask">1048576</int> | |
|
453 | <int key="NSMnemonicLoc">2147483647</int> | |
|
454 | <reference key="NSOnImage" ref="985281305"/> | |
|
455 | <reference key="NSMixedImage" ref="351279908"/> | |
|
456 | <int key="NSTag">7</int> | |
|
457 | </object> | |
|
458 | <object class="NSMenuItem" id="88285865"> | |
|
459 | <reference key="NSMenu" ref="963351320"/> | |
|
460 | <string key="NSTitle">Jump to Selection</string> | |
|
461 | <string key="NSKeyEquiv">j</string> | |
|
462 | <int key="NSKeyEquivModMask">1048576</int> | |
|
463 | <int key="NSMnemonicLoc">2147483647</int> | |
|
464 | <reference key="NSOnImage" ref="985281305"/> | |
|
465 | <reference key="NSMixedImage" ref="351279908"/> | |
|
466 | </object> | |
|
467 | </object> | |
|
468 | </object> | |
|
469 | </object> | |
|
470 | <object class="NSMenuItem" id="972420730"> | |
|
471 | <reference key="NSMenu" ref="789758025"/> | |
|
472 | <string key="NSTitle" id="739167250">Spelling and Grammar</string> | |
|
473 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
474 | <int key="NSKeyEquivModMask">1048576</int> | |
|
475 | <int key="NSMnemonicLoc">2147483647</int> | |
|
476 | <reference key="NSOnImage" ref="985281305"/> | |
|
477 | <reference key="NSMixedImage" ref="351279908"/> | |
|
478 | <string key="NSAction">submenuAction:</string> | |
|
479 | <object class="NSMenu" key="NSSubmenu" id="769623530"> | |
|
480 | <reference key="NSTitle" ref="739167250"/> | |
|
481 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
482 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
483 | <object class="NSMenuItem" id="679648819"> | |
|
484 | <reference key="NSMenu" ref="769623530"/> | |
|
485 | <string type="base64-UTF8" key="NSTitle">U2hvdyBTcGVsbGluZ+KApg</string> | |
|
486 | <string key="NSKeyEquiv">:</string> | |
|
487 | <int key="NSKeyEquivModMask">1048576</int> | |
|
488 | <int key="NSMnemonicLoc">2147483647</int> | |
|
489 | <reference key="NSOnImage" ref="985281305"/> | |
|
490 | <reference key="NSMixedImage" ref="351279908"/> | |
|
491 | </object> | |
|
492 | <object class="NSMenuItem" id="96193923"> | |
|
493 | <reference key="NSMenu" ref="769623530"/> | |
|
494 | <string key="NSTitle">Check Spelling</string> | |
|
495 | <string key="NSKeyEquiv">;</string> | |
|
496 | <int key="NSKeyEquivModMask">1048576</int> | |
|
497 | <int key="NSMnemonicLoc">2147483647</int> | |
|
498 | <reference key="NSOnImage" ref="985281305"/> | |
|
499 | <reference key="NSMixedImage" ref="351279908"/> | |
|
500 | </object> | |
|
501 | <object class="NSMenuItem" id="948374510"> | |
|
502 | <reference key="NSMenu" ref="769623530"/> | |
|
503 | <string key="NSTitle">Check Spelling While Typing</string> | |
|
504 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
505 | <int key="NSKeyEquivModMask">1048576</int> | |
|
506 | <int key="NSMnemonicLoc">2147483647</int> | |
|
507 | <reference key="NSOnImage" ref="985281305"/> | |
|
508 | <reference key="NSMixedImage" ref="351279908"/> | |
|
509 | </object> | |
|
510 | <object class="NSMenuItem" id="967646866"> | |
|
511 | <reference key="NSMenu" ref="769623530"/> | |
|
512 | <string key="NSTitle">Check Grammar With Spelling</string> | |
|
513 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
514 | <int key="NSKeyEquivModMask">1048576</int> | |
|
515 | <int key="NSMnemonicLoc">2147483647</int> | |
|
516 | <reference key="NSOnImage" ref="985281305"/> | |
|
517 | <reference key="NSMixedImage" ref="351279908"/> | |
|
518 | </object> | |
|
519 | </object> | |
|
520 | </object> | |
|
521 | </object> | |
|
522 | <object class="NSMenuItem" id="507821607"> | |
|
523 | <reference key="NSMenu" ref="789758025"/> | |
|
524 | <string key="NSTitle" id="904739598">Substitutions</string> | |
|
525 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
526 | <int key="NSKeyEquivModMask">1048576</int> | |
|
527 | <int key="NSMnemonicLoc">2147483647</int> | |
|
528 | <reference key="NSOnImage" ref="985281305"/> | |
|
529 | <reference key="NSMixedImage" ref="351279908"/> | |
|
530 | <string key="NSAction">submenuAction:</string> | |
|
531 | <object class="NSMenu" key="NSSubmenu" id="698887838"> | |
|
532 | <reference key="NSTitle" ref="904739598"/> | |
|
533 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
534 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
535 | <object class="NSMenuItem" id="605118523"> | |
|
536 | <reference key="NSMenu" ref="698887838"/> | |
|
537 | <string key="NSTitle">Smart Copy/Paste</string> | |
|
538 | <reference key="NSKeyEquiv" ref="469505129"/> | |
|
539 | <int key="NSKeyEquivModMask">1048576</int> | |
|
540 | <int key="NSMnemonicLoc">2147483647</int> | |
|
541 | <reference key="NSOnImage" ref="985281305"/> | |
|
542 | <reference key="NSMixedImage" ref="351279908"/> | |
|
543 | <int key="NSTag">1</int> | |
|
544 | </object> | |
|
545 | <object class="NSMenuItem" id="197661976"> | |
|
546 | <reference key="NSMenu" ref="698887838"/> | |
|
547 | <string key="NSTitle">Smart Quotes</string> | |
|
548 | <reference key="NSKeyEquiv" ref="762398675"/> | |
|
549 | <int key="NSKeyEquivModMask">1048576</int> | |
|
550 | <int key="NSMnemonicLoc">2147483647</int> | |
|
551 | <reference key="NSOnImage" ref="985281305"/> | |
|
552 | <reference key="NSMixedImage" ref="351279908"/> | |
|
553 | <int key="NSTag">2</int> | |
|
554 | </object> | |
|
555 | <object class="NSMenuItem" id="708854459"> | |
|
556 | <reference key="NSMenu" ref="698887838"/> | |
|
557 | <string key="NSTitle">Smart Links</string> | |
|
558 | <reference key="NSKeyEquiv" ref="819654342"/> | |
|
559 | <int key="NSKeyEquivModMask">1179648</int> | |
|
560 | <int key="NSMnemonicLoc">2147483647</int> | |
|
561 | <reference key="NSOnImage" ref="985281305"/> | |
|
562 | <reference key="NSMixedImage" ref="351279908"/> | |
|
563 | <int key="NSTag">3</int> | |
|
564 | </object> | |
|
565 | </object> | |
|
566 | </object> | |
|
567 | </object> | |
|
568 | <object class="NSMenuItem" id="676164635"> | |
|
569 | <reference key="NSMenu" ref="789758025"/> | |
|
570 | <string key="NSTitle" id="812002426">Speech</string> | |
|
571 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
572 | <int key="NSKeyEquivModMask">1048576</int> | |
|
573 | <int key="NSMnemonicLoc">2147483647</int> | |
|
574 | <reference key="NSOnImage" ref="985281305"/> | |
|
575 | <reference key="NSMixedImage" ref="351279908"/> | |
|
576 | <string key="NSAction">submenuAction:</string> | |
|
577 | <object class="NSMenu" key="NSSubmenu" id="785027613"> | |
|
578 | <reference key="NSTitle" ref="812002426"/> | |
|
579 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
580 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
581 | <object class="NSMenuItem" id="731782645"> | |
|
582 | <reference key="NSMenu" ref="785027613"/> | |
|
583 | <string key="NSTitle">Start Speaking</string> | |
|
584 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
585 | <int key="NSKeyEquivModMask">1048576</int> | |
|
586 | <int key="NSMnemonicLoc">2147483647</int> | |
|
587 | <reference key="NSOnImage" ref="985281305"/> | |
|
588 | <reference key="NSMixedImage" ref="351279908"/> | |
|
589 | </object> | |
|
590 | <object class="NSMenuItem" id="680220178"> | |
|
591 | <reference key="NSMenu" ref="785027613"/> | |
|
592 | <string key="NSTitle">Stop Speaking</string> | |
|
593 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
594 | <int key="NSKeyEquivModMask">1048576</int> | |
|
595 | <int key="NSMnemonicLoc">2147483647</int> | |
|
596 | <reference key="NSOnImage" ref="985281305"/> | |
|
597 | <reference key="NSMixedImage" ref="351279908"/> | |
|
598 | </object> | |
|
599 | </object> | |
|
600 | </object> | |
|
601 | </object> | |
|
602 | </object> | |
|
603 | </object> | |
|
604 | </object> | |
|
605 | <object class="NSMenuItem" id="626404410"> | |
|
606 | <reference key="NSMenu" ref="649796088"/> | |
|
607 | <string key="NSTitle" id="241242548">Format</string> | |
|
608 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
609 | <int key="NSKeyEquivModMask">1048576</int> | |
|
610 | <int key="NSMnemonicLoc">2147483647</int> | |
|
611 | <reference key="NSOnImage" ref="985281305"/> | |
|
612 | <reference key="NSMixedImage" ref="351279908"/> | |
|
613 | <string key="NSAction">submenuAction:</string> | |
|
614 | <object class="NSMenu" key="NSSubmenu" id="502084290"> | |
|
615 | <reference key="NSTitle" ref="241242548"/> | |
|
616 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
617 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
618 | <object class="NSMenuItem" id="519768076"> | |
|
619 | <reference key="NSMenu" ref="502084290"/> | |
|
620 | <string key="NSTitle">Show Fonts</string> | |
|
621 | <string key="NSKeyEquiv" id="806579634">t</string> | |
|
622 | <int key="NSKeyEquivModMask">1048576</int> | |
|
623 | <int key="NSMnemonicLoc">2147483647</int> | |
|
624 | <reference key="NSOnImage" ref="985281305"/> | |
|
625 | <reference key="NSMixedImage" ref="351279908"/> | |
|
626 | </object> | |
|
627 | <object class="NSMenuItem" id="1028416764"> | |
|
628 | <reference key="NSMenu" ref="502084290"/> | |
|
629 | <string key="NSTitle">Show Colors</string> | |
|
630 | <string key="NSKeyEquiv">C</string> | |
|
631 | <int key="NSKeyEquivModMask">1179648</int> | |
|
632 | <int key="NSMnemonicLoc">2147483647</int> | |
|
633 | <reference key="NSOnImage" ref="985281305"/> | |
|
634 | <reference key="NSMixedImage" ref="351279908"/> | |
|
635 | </object> | |
|
636 | </object> | |
|
637 | </object> | |
|
638 | </object> | |
|
639 | <object class="NSMenuItem" id="586577488"> | |
|
640 | <reference key="NSMenu" ref="649796088"/> | |
|
641 | <string key="NSTitle" id="809723865">View</string> | |
|
642 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
643 | <int key="NSKeyEquivModMask">1048576</int> | |
|
644 | <int key="NSMnemonicLoc">2147483647</int> | |
|
645 | <reference key="NSOnImage" ref="985281305"/> | |
|
646 | <reference key="NSMixedImage" ref="351279908"/> | |
|
647 | <string key="NSAction">submenuAction:</string> | |
|
648 | <object class="NSMenu" key="NSSubmenu" id="466310130"> | |
|
649 | <reference key="NSTitle" ref="809723865"/> | |
|
650 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
651 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
652 | <object class="NSMenuItem" id="102151532"> | |
|
653 | <reference key="NSMenu" ref="466310130"/> | |
|
654 | <string key="NSTitle">Show Toolbar</string> | |
|
655 | <reference key="NSKeyEquiv" ref="806579634"/> | |
|
656 | <int key="NSKeyEquivModMask">1572864</int> | |
|
657 | <int key="NSMnemonicLoc">2147483647</int> | |
|
658 | <reference key="NSOnImage" ref="985281305"/> | |
|
659 | <reference key="NSMixedImage" ref="351279908"/> | |
|
660 | </object> | |
|
661 | <object class="NSMenuItem" id="237841660"> | |
|
662 | <reference key="NSMenu" ref="466310130"/> | |
|
663 | <string type="base64-UTF8" key="NSTitle">Q3VzdG9taXplIFRvb2xiYXLigKY</string> | |
|
664 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
665 | <int key="NSKeyEquivModMask">1048576</int> | |
|
666 | <int key="NSMnemonicLoc">2147483647</int> | |
|
667 | <reference key="NSOnImage" ref="985281305"/> | |
|
668 | <reference key="NSMixedImage" ref="351279908"/> | |
|
669 | </object> | |
|
670 | </object> | |
|
671 | </object> | |
|
672 | </object> | |
|
673 | <object class="NSMenuItem" id="713487014"> | |
|
674 | <reference key="NSMenu" ref="649796088"/> | |
|
675 | <string key="NSTitle" id="64165424">Window</string> | |
|
676 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
677 | <int key="NSKeyEquivModMask">1048576</int> | |
|
678 | <int key="NSMnemonicLoc">2147483647</int> | |
|
679 | <reference key="NSOnImage" ref="985281305"/> | |
|
680 | <reference key="NSMixedImage" ref="351279908"/> | |
|
681 | <string key="NSAction">submenuAction:</string> | |
|
682 | <object class="NSMenu" key="NSSubmenu" id="835318025"> | |
|
683 | <reference key="NSTitle" ref="64165424"/> | |
|
684 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
685 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
686 | <object class="NSMenuItem" id="1011231497"> | |
|
687 | <reference key="NSMenu" ref="835318025"/> | |
|
688 | <string key="NSTitle">Minimize</string> | |
|
689 | <string key="NSKeyEquiv">m</string> | |
|
690 | <int key="NSKeyEquivModMask">1048576</int> | |
|
691 | <int key="NSMnemonicLoc">2147483647</int> | |
|
692 | <reference key="NSOnImage" ref="985281305"/> | |
|
693 | <reference key="NSMixedImage" ref="351279908"/> | |
|
694 | </object> | |
|
695 | <object class="NSMenuItem" id="575023229"> | |
|
696 | <reference key="NSMenu" ref="835318025"/> | |
|
697 | <string key="NSTitle">Zoom</string> | |
|
698 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
699 | <int key="NSKeyEquivModMask">1048576</int> | |
|
700 | <int key="NSMnemonicLoc">2147483647</int> | |
|
701 | <reference key="NSOnImage" ref="985281305"/> | |
|
702 | <reference key="NSMixedImage" ref="351279908"/> | |
|
703 | </object> | |
|
704 | <object class="NSMenuItem" id="299356726"> | |
|
705 | <reference key="NSMenu" ref="835318025"/> | |
|
706 | <bool key="NSIsDisabled">YES</bool> | |
|
707 | <bool key="NSIsSeparator">YES</bool> | |
|
708 | <reference key="NSTitle" ref="255189770"/> | |
|
709 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
710 | <int key="NSKeyEquivModMask">1048576</int> | |
|
711 | <int key="NSMnemonicLoc">2147483647</int> | |
|
712 | <reference key="NSOnImage" ref="985281305"/> | |
|
713 | <reference key="NSMixedImage" ref="351279908"/> | |
|
714 | </object> | |
|
715 | <object class="NSMenuItem" id="625202149"> | |
|
716 | <reference key="NSMenu" ref="835318025"/> | |
|
717 | <string key="NSTitle">Bring All to Front</string> | |
|
718 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
719 | <int key="NSKeyEquivModMask">1048576</int> | |
|
720 | <int key="NSMnemonicLoc">2147483647</int> | |
|
721 | <reference key="NSOnImage" ref="985281305"/> | |
|
722 | <reference key="NSMixedImage" ref="351279908"/> | |
|
723 | </object> | |
|
724 | </object> | |
|
725 | <string key="NSName">_NSWindowsMenu</string> | |
|
726 | </object> | |
|
727 | </object> | |
|
728 | <object class="NSMenuItem" id="391199113"> | |
|
729 | <reference key="NSMenu" ref="649796088"/> | |
|
730 | <string key="NSTitle" id="461919786">Help</string> | |
|
731 | <reference key="NSKeyEquiv" ref="255189770"/> | |
|
732 | <int key="NSKeyEquivModMask">1048576</int> | |
|
733 | <int key="NSMnemonicLoc">2147483647</int> | |
|
734 | <reference key="NSOnImage" ref="985281305"/> | |
|
735 | <reference key="NSMixedImage" ref="351279908"/> | |
|
736 | <string key="NSAction">submenuAction:</string> | |
|
737 | <object class="NSMenu" key="NSSubmenu" id="374024848"> | |
|
738 | <reference key="NSTitle" ref="461919786"/> | |
|
739 | <object class="NSMutableArray" key="NSMenuItems"> | |
|
740 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
741 | <object class="NSMenuItem" id="238773614"> | |
|
742 | <reference key="NSMenu" ref="374024848"/> | |
|
743 | <string key="NSTitle">IPython1Sandbox Help</string> | |
|
744 | <string key="NSKeyEquiv">?</string> | |
|
745 | <int key="NSKeyEquivModMask">1048576</int> | |
|
746 | <int key="NSMnemonicLoc">2147483647</int> | |
|
747 | <reference key="NSOnImage" ref="985281305"/> | |
|
748 | <reference key="NSMixedImage" ref="351279908"/> | |
|
749 | </object> | |
|
750 | </object> | |
|
751 | </object> | |
|
752 | </object> | |
|
753 | </object> | |
|
754 | <string key="NSName">_NSMainMenu</string> | |
|
755 | </object> | |
|
756 | <object class="NSWindowTemplate" id="972006081"> | |
|
757 | <int key="NSWindowStyleMask">15</int> | |
|
758 | <int key="NSWindowBacking">2</int> | |
|
759 | <string key="NSWindowRect">{{335, 413}, {725, 337}}</string> | |
|
760 | <int key="NSWTFlags">1946157056</int> | |
|
761 | <string key="NSWindowTitle">IPython1 (Cocoa)</string> | |
|
762 | <string key="NSWindowClass">NSWindow</string> | |
|
763 | <nil key="NSViewClass"/> | |
|
764 | <object class="NSView" key="NSWindowView" id="439893737"> | |
|
765 | <reference key="NSNextResponder"/> | |
|
766 | <int key="NSvFlags">256</int> | |
|
767 | <object class="NSMutableArray" key="NSSubviews"> | |
|
768 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
769 | <object class="NSSplitView" id="741760375"> | |
|
770 | <reference key="NSNextResponder" ref="439893737"/> | |
|
771 | <int key="NSvFlags">274</int> | |
|
772 | <object class="NSMutableArray" key="NSSubviews"> | |
|
773 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
774 | <object class="NSBox" id="554641139"> | |
|
775 | <reference key="NSNextResponder" ref="741760375"/> | |
|
776 | <int key="NSvFlags">22</int> | |
|
777 | <object class="NSMutableArray" key="NSSubviews"> | |
|
778 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
779 | <object class="NSView" id="597872307"> | |
|
780 | <reference key="NSNextResponder" ref="554641139"/> | |
|
781 | <int key="NSvFlags">256</int> | |
|
782 | <object class="NSMutableArray" key="NSSubviews"> | |
|
783 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
784 | <object class="NSScrollView" id="188193463"> | |
|
785 | <reference key="NSNextResponder" ref="597872307"/> | |
|
786 | <int key="NSvFlags">274</int> | |
|
787 | <object class="NSMutableArray" key="NSSubviews"> | |
|
788 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
789 | <object class="NSClipView" id="638544389"> | |
|
790 | <reference key="NSNextResponder" ref="188193463"/> | |
|
791 | <int key="NSvFlags">2304</int> | |
|
792 | <object class="NSMutableArray" key="NSSubviews"> | |
|
793 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
794 | <object class="NSTextView" id="163417131"> | |
|
795 | <reference key="NSNextResponder" ref="638544389"/> | |
|
796 | <int key="NSvFlags">2322</int> | |
|
797 | <object class="NSMutableSet" key="NSDragTypes"> | |
|
798 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
799 | <object class="NSMutableArray" key="set.sortedObjects"> | |
|
800 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
801 | <string>Apple HTML pasteboard type</string> | |
|
802 | <string>Apple PDF pasteboard type</string> | |
|
803 | <string>Apple PICT pasteboard type</string> | |
|
804 | <string>Apple PNG pasteboard type</string> | |
|
805 | <string>Apple URL pasteboard type</string> | |
|
806 | <string>CorePasteboardFlavorType 0x6D6F6F76</string> | |
|
807 | <string>CorePasteboardFlavorType 0x75726C20</string> | |
|
808 | <string>NSColor pasteboard type</string> | |
|
809 | <string>NSFilenamesPboardType</string> | |
|
810 | <string>NSStringPboardType</string> | |
|
811 | <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> | |
|
812 | <string>NeXT RTFD pasteboard type</string> | |
|
813 | <string>NeXT Rich Text Format v1.0 pasteboard type</string> | |
|
814 | <string>NeXT TIFF v4.0 pasteboard type</string> | |
|
815 | <string>NeXT font pasteboard type</string> | |
|
816 | <string>NeXT ruler pasteboard type</string> | |
|
817 | <string>WebURLsWithTitlesPboardType</string> | |
|
818 | </object> | |
|
819 | </object> | |
|
820 | <string key="NSFrame">{{0, 38}, {433, 14}}</string> | |
|
821 | <reference key="NSSuperview" ref="638544389"/> | |
|
822 | <reference key="NSWindow"/> | |
|
823 | <object class="NSTextContainer" key="NSTextContainer" id="662117317"> | |
|
824 | <object class="NSLayoutManager" key="NSLayoutManager"> | |
|
825 | <object class="NSTextStorage" key="NSTextStorage"> | |
|
826 | <object class="NSMutableString" key="NSString"> | |
|
827 | <characters key="NS.bytes"/> | |
|
828 | </object> | |
|
829 | <nil key="NSDelegate"/> | |
|
830 | </object> | |
|
831 | <object class="NSMutableArray" key="NSTextContainers"> | |
|
832 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
833 | <reference ref="662117317"/> | |
|
834 | </object> | |
|
835 | <int key="NSLMFlags">6</int> | |
|
836 | <nil key="NSDelegate"/> | |
|
837 | </object> | |
|
838 | <reference key="NSTextView" ref="163417131"/> | |
|
839 | <double key="NSWidth">4.330000e+02</double> | |
|
840 | <int key="NSTCFlags">1</int> | |
|
841 | </object> | |
|
842 | <object class="NSTextViewSharedData" key="NSSharedData"> | |
|
843 | <int key="NSFlags">346991</int> | |
|
844 | <object class="NSColor" key="NSBackgroundColor"> | |
|
845 | <int key="NSColorSpace">2</int> | |
|
846 | <bytes key="NSRGB">MSAwLjk1Mjk0MTI0IDAuODUwOTgwNDYAA</bytes> | |
|
847 | </object> | |
|
848 | <object class="NSColor" key="NSInsertionColor" id="555789289"> | |
|
849 | <int key="NSColorSpace">3</int> | |
|
850 | <bytes key="NSWhite">MAA</bytes> | |
|
851 | </object> | |
|
852 | <object class="NSDictionary" key="NSSelectedAttributes"> | |
|
853 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
854 | <object class="NSMutableArray" key="dict.sortedKeys"> | |
|
855 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
856 | <string>NSBackgroundColor</string> | |
|
857 | <string id="19777717">NSColor</string> | |
|
858 | </object> | |
|
859 | <object class="NSMutableArray" key="dict.values"> | |
|
860 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
861 | <object class="NSColor"> | |
|
862 | <int key="NSColorSpace">6</int> | |
|
863 | <string key="NSCatalogName" id="945274157">System</string> | |
|
864 | <string key="NSColorName">selectedTextBackgroundColor</string> | |
|
865 | <object class="NSColor" key="NSColor" id="377165725"> | |
|
866 | <int key="NSColorSpace">3</int> | |
|
867 | <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes> | |
|
868 | </object> | |
|
869 | </object> | |
|
870 | <object class="NSColor"> | |
|
871 | <int key="NSColorSpace">6</int> | |
|
872 | <reference key="NSCatalogName" ref="945274157"/> | |
|
873 | <string key="NSColorName">selectedTextColor</string> | |
|
874 | <reference key="NSColor" ref="555789289"/> | |
|
875 | </object> | |
|
876 | </object> | |
|
877 | </object> | |
|
878 | <nil key="NSMarkedAttributes"/> | |
|
879 | <object class="NSDictionary" key="NSLinkAttributes"> | |
|
880 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
881 | <object class="NSMutableArray" key="dict.sortedKeys"> | |
|
882 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
883 | <reference ref="19777717"/> | |
|
884 | <string>NSUnderline</string> | |
|
885 | </object> | |
|
886 | <object class="NSMutableArray" key="dict.values"> | |
|
887 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
888 | <object class="NSColor"> | |
|
889 | <int key="NSColorSpace">1</int> | |
|
890 | <bytes key="NSRGB">MCAwIDEAA</bytes> | |
|
891 | </object> | |
|
892 | <integer value="1" id="9"/> | |
|
893 | </object> | |
|
894 | </object> | |
|
895 | <nil key="NSDefaultParagraphStyle"/> | |
|
896 | </object> | |
|
897 | <int key="NSTVFlags">6</int> | |
|
898 | <string key="NSMaxSize">{480, 1e+07}</string> | |
|
899 | <string key="NSMinize">{84, 0}</string> | |
|
900 | <nil key="NSDelegate"/> | |
|
901 | </object> | |
|
902 | </object> | |
|
903 | <string key="NSFrame">{{1, 1}, {433, 231}}</string> | |
|
904 | <string key="NSBounds">{{0, 38}, {433, 231}}</string> | |
|
905 | <reference key="NSSuperview" ref="188193463"/> | |
|
906 | <reference key="NSWindow"/> | |
|
907 | <reference key="NSNextKeyView" ref="163417131"/> | |
|
908 | <reference key="NSDocView" ref="163417131"/> | |
|
909 | <object class="NSColor" key="NSBGColor" id="521347521"> | |
|
910 | <int key="NSColorSpace">3</int> | |
|
911 | <bytes key="NSWhite">MQA</bytes> | |
|
912 | </object> | |
|
913 | <object class="NSCursor" key="NSCursor"> | |
|
914 | <string key="NSHotSpot">{4, -5}</string> | |
|
915 | <int key="NSCursorType">1</int> | |
|
916 | </object> | |
|
917 | <int key="NScvFlags">4</int> | |
|
918 | </object> | |
|
919 | <object class="NSScroller" id="418410897"> | |
|
920 | <reference key="NSNextResponder" ref="188193463"/> | |
|
921 | <int key="NSvFlags">-2147483392</int> | |
|
922 | <string key="NSFrame">{{427, 1}, {15, 263}}</string> | |
|
923 | <reference key="NSSuperview" ref="188193463"/> | |
|
924 | <reference key="NSWindow"/> | |
|
925 | <reference key="NSTarget" ref="188193463"/> | |
|
926 | <string key="NSAction" id="688920982">_doScroller:</string> | |
|
927 | <double key="NSPercent">3.389175e-01</double> | |
|
928 | </object> | |
|
929 | <object class="NSScroller" id="936733673"> | |
|
930 | <reference key="NSNextResponder" ref="188193463"/> | |
|
931 | <int key="NSvFlags">256</int> | |
|
932 | <string key="NSFrame">{{-100, -100}, {87, 18}}</string> | |
|
933 | <reference key="NSSuperview" ref="188193463"/> | |
|
934 | <reference key="NSWindow"/> | |
|
935 | <int key="NSsFlags">1</int> | |
|
936 | <reference key="NSTarget" ref="188193463"/> | |
|
937 | <reference key="NSAction" ref="688920982"/> | |
|
938 | <double key="NSCurValue">1.000000e+00</double> | |
|
939 | <double key="NSPercent">9.456522e-01</double> | |
|
940 | </object> | |
|
941 | </object> | |
|
942 | <string key="NSFrame">{{18, 14}, {435, 233}}</string> | |
|
943 | <reference key="NSSuperview" ref="597872307"/> | |
|
944 | <reference key="NSWindow"/> | |
|
945 | <reference key="NSNextKeyView" ref="638544389"/> | |
|
946 | <int key="NSsFlags">530</int> | |
|
947 | <reference key="NSVScroller" ref="418410897"/> | |
|
948 | <reference key="NSHScroller" ref="936733673"/> | |
|
949 | <reference key="NSContentView" ref="638544389"/> | |
|
950 | </object> | |
|
951 | </object> | |
|
952 | <string key="NSFrame">{{1, 1}, {471, 257}}</string> | |
|
953 | <reference key="NSSuperview" ref="554641139"/> | |
|
954 | <reference key="NSWindow"/> | |
|
955 | </object> | |
|
956 | </object> | |
|
957 | <string key="NSFrameSize">{473, 273}</string> | |
|
958 | <reference key="NSSuperview" ref="741760375"/> | |
|
959 | <reference key="NSWindow"/> | |
|
960 | <string key="NSOffsets" id="1055927954">{0, 0}</string> | |
|
961 | <object class="NSTextFieldCell" key="NSTitleCell"> | |
|
962 | <int key="NSCellFlags">67239424</int> | |
|
963 | <int key="NSCellFlags2">0</int> | |
|
964 | <string key="NSContents">Console</string> | |
|
965 | <object class="NSFont" key="NSSupport" id="26"> | |
|
966 | <string key="NSName" id="257617473">LucidaGrande</string> | |
|
967 | <double key="NSSize">1.100000e+01</double> | |
|
968 | <int key="NSfFlags">3100</int> | |
|
969 | </object> | |
|
970 | <object class="NSColor" key="NSBackgroundColor" id="131515055"> | |
|
971 | <int key="NSColorSpace">6</int> | |
|
972 | <reference key="NSCatalogName" ref="945274157"/> | |
|
973 | <string key="NSColorName">textBackgroundColor</string> | |
|
974 | <reference key="NSColor" ref="521347521"/> | |
|
975 | </object> | |
|
976 | <object class="NSColor" key="NSTextColor"> | |
|
977 | <int key="NSColorSpace">3</int> | |
|
978 | <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> | |
|
979 | </object> | |
|
980 | </object> | |
|
981 | <reference key="NSContentView" ref="597872307"/> | |
|
982 | <int key="NSBorderType">1</int> | |
|
983 | <int key="NSBoxType">0</int> | |
|
984 | <int key="NSTitlePosition">2</int> | |
|
985 | <bool key="NSTransparent">NO</bool> | |
|
986 | </object> | |
|
987 | <object class="NSBox" id="764100755"> | |
|
988 | <reference key="NSNextResponder" ref="741760375"/> | |
|
989 | <int key="NSvFlags">51</int> | |
|
990 | <object class="NSMutableArray" key="NSSubviews"> | |
|
991 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
992 | <object class="NSView" id="581281551"> | |
|
993 | <reference key="NSNextResponder" ref="764100755"/> | |
|
994 | <int key="NSvFlags">256</int> | |
|
995 | <object class="NSMutableArray" key="NSSubviews"> | |
|
996 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
997 | <object class="NSScrollView" id="516244966"> | |
|
998 | <reference key="NSNextResponder" ref="581281551"/> | |
|
999 | <int key="NSvFlags">274</int> | |
|
1000 | <object class="NSMutableArray" key="NSSubviews"> | |
|
1001 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1002 | <object class="NSClipView" id="119083427"> | |
|
1003 | <reference key="NSNextResponder" ref="516244966"/> | |
|
1004 | <int key="NSvFlags">2304</int> | |
|
1005 | <object class="NSMutableArray" key="NSSubviews"> | |
|
1006 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1007 | <object class="NSTableView" id="23853726"> | |
|
1008 | <reference key="NSNextResponder" ref="119083427"/> | |
|
1009 | <int key="NSvFlags">256</int> | |
|
1010 | <string key="NSFrameSize">{156, 200}</string> | |
|
1011 | <reference key="NSSuperview" ref="119083427"/> | |
|
1012 | <reference key="NSWindow"/> | |
|
1013 | <bool key="NSEnabled">YES</bool> | |
|
1014 | <object class="NSTableHeaderView" key="NSHeaderView" id="1048357090"> | |
|
1015 | <reference key="NSNextResponder" ref="746968320"/> | |
|
1016 | <int key="NSvFlags">256</int> | |
|
1017 | <string key="NSFrameSize">{156, 17}</string> | |
|
1018 | <reference key="NSSuperview" ref="746968320"/> | |
|
1019 | <reference key="NSWindow"/> | |
|
1020 | <reference key="NSTableView" ref="23853726"/> | |
|
1021 | </object> | |
|
1022 | <object class="_NSCornerView" key="NSCornerView" id="212282722"> | |
|
1023 | <reference key="NSNextResponder" ref="516244966"/> | |
|
1024 | <int key="NSvFlags">256</int> | |
|
1025 | <string key="NSFrame">{{157, 0}, {16, 17}}</string> | |
|
1026 | <reference key="NSSuperview" ref="516244966"/> | |
|
1027 | <reference key="NSWindow"/> | |
|
1028 | </object> | |
|
1029 | <object class="NSMutableArray" key="NSTableColumns"> | |
|
1030 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1031 | <object class="NSTableColumn" id="920426212"> | |
|
1032 | <double key="NSWidth">7.100000e+01</double> | |
|
1033 | <double key="NSMinWidth">4.000000e+01</double> | |
|
1034 | <double key="NSMaxWidth">1.000000e+03</double> | |
|
1035 | <object class="NSTableHeaderCell" key="NSHeaderCell"> | |
|
1036 | <int key="NSCellFlags">75628032</int> | |
|
1037 | <int key="NSCellFlags2">0</int> | |
|
1038 | <string key="NSContents">Variable</string> | |
|
1039 | <reference key="NSSupport" ref="26"/> | |
|
1040 | <object class="NSColor" key="NSBackgroundColor" id="890615311"> | |
|
1041 | <int key="NSColorSpace">3</int> | |
|
1042 | <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes> | |
|
1043 | </object> | |
|
1044 | <object class="NSColor" key="NSTextColor" id="866628999"> | |
|
1045 | <int key="NSColorSpace">6</int> | |
|
1046 | <reference key="NSCatalogName" ref="945274157"/> | |
|
1047 | <string key="NSColorName">headerTextColor</string> | |
|
1048 | <reference key="NSColor" ref="555789289"/> | |
|
1049 | </object> | |
|
1050 | </object> | |
|
1051 | <object class="NSTextFieldCell" key="NSDataCell" id="525071236"> | |
|
1052 | <int key="NSCellFlags">337772096</int> | |
|
1053 | <int key="NSCellFlags2">2048</int> | |
|
1054 | <string key="NSContents" id="590184478">Text Cell</string> | |
|
1055 | <object class="NSFont" key="NSSupport" id="8196371"> | |
|
1056 | <reference key="NSName" ref="257617473"/> | |
|
1057 | <double key="NSSize">1.300000e+01</double> | |
|
1058 | <int key="NSfFlags">1044</int> | |
|
1059 | </object> | |
|
1060 | <reference key="NSControlView" ref="23853726"/> | |
|
1061 | <object class="NSColor" key="NSBackgroundColor" id="224028609"> | |
|
1062 | <int key="NSColorSpace">6</int> | |
|
1063 | <reference key="NSCatalogName" ref="945274157"/> | |
|
1064 | <string key="NSColorName">controlBackgroundColor</string> | |
|
1065 | <reference key="NSColor" ref="377165725"/> | |
|
1066 | </object> | |
|
1067 | <object class="NSColor" key="NSTextColor" id="205104690"> | |
|
1068 | <int key="NSColorSpace">6</int> | |
|
1069 | <reference key="NSCatalogName" ref="945274157"/> | |
|
1070 | <string key="NSColorName">controlTextColor</string> | |
|
1071 | <reference key="NSColor" ref="555789289"/> | |
|
1072 | </object> | |
|
1073 | </object> | |
|
1074 | <int key="NSResizingMask">3</int> | |
|
1075 | <bool key="NSIsResizeable">YES</bool> | |
|
1076 | <bool key="NSIsEditable">YES</bool> | |
|
1077 | <reference key="NSTableView" ref="23853726"/> | |
|
1078 | </object> | |
|
1079 | <object class="NSTableColumn" id="857054683"> | |
|
1080 | <double key="NSWidth">7.900000e+01</double> | |
|
1081 | <double key="NSMinWidth">4.000000e+01</double> | |
|
1082 | <double key="NSMaxWidth">1.000000e+03</double> | |
|
1083 | <object class="NSTableHeaderCell" key="NSHeaderCell"> | |
|
1084 | <int key="NSCellFlags">75628032</int> | |
|
1085 | <int key="NSCellFlags2">0</int> | |
|
1086 | <string key="NSContents">Value</string> | |
|
1087 | <reference key="NSSupport" ref="26"/> | |
|
1088 | <reference key="NSBackgroundColor" ref="890615311"/> | |
|
1089 | <reference key="NSTextColor" ref="866628999"/> | |
|
1090 | </object> | |
|
1091 | <object class="NSTextFieldCell" key="NSDataCell" id="377147224"> | |
|
1092 | <int key="NSCellFlags">337772096</int> | |
|
1093 | <int key="NSCellFlags2">2048</int> | |
|
1094 | <reference key="NSContents" ref="590184478"/> | |
|
1095 | <reference key="NSSupport" ref="8196371"/> | |
|
1096 | <reference key="NSControlView" ref="23853726"/> | |
|
1097 | <reference key="NSBackgroundColor" ref="224028609"/> | |
|
1098 | <reference key="NSTextColor" ref="205104690"/> | |
|
1099 | </object> | |
|
1100 | <int key="NSResizingMask">3</int> | |
|
1101 | <bool key="NSIsResizeable">YES</bool> | |
|
1102 | <bool key="NSIsEditable">YES</bool> | |
|
1103 | <reference key="NSTableView" ref="23853726"/> | |
|
1104 | </object> | |
|
1105 | </object> | |
|
1106 | <double key="NSIntercellSpacingWidth">3.000000e+00</double> | |
|
1107 | <double key="NSIntercellSpacingHeight">2.000000e+00</double> | |
|
1108 | <reference key="NSBackgroundColor" ref="521347521"/> | |
|
1109 | <object class="NSColor" key="NSGridColor"> | |
|
1110 | <int key="NSColorSpace">6</int> | |
|
1111 | <reference key="NSCatalogName" ref="945274157"/> | |
|
1112 | <string key="NSColorName">gridColor</string> | |
|
1113 | <object class="NSColor" key="NSColor"> | |
|
1114 | <int key="NSColorSpace">3</int> | |
|
1115 | <bytes key="NSWhite">MC41AA</bytes> | |
|
1116 | </object> | |
|
1117 | </object> | |
|
1118 | <double key="NSRowHeight">1.700000e+01</double> | |
|
1119 | <int key="NSTvFlags">-692060160</int> | |
|
1120 | <int key="NSGridStyleMask">1</int> | |
|
1121 | <int key="NSColumnAutoresizingStyle">4</int> | |
|
1122 | <int key="NSDraggingSourceMaskForLocal">15</int> | |
|
1123 | <int key="NSDraggingSourceMaskForNonLocal">0</int> | |
|
1124 | <bool key="NSAllowsTypeSelect">YES</bool> | |
|
1125 | </object> | |
|
1126 | </object> | |
|
1127 | <string key="NSFrame">{{1, 17}, {156, 200}}</string> | |
|
1128 | <reference key="NSSuperview" ref="516244966"/> | |
|
1129 | <reference key="NSWindow"/> | |
|
1130 | <reference key="NSNextKeyView" ref="23853726"/> | |
|
1131 | <reference key="NSDocView" ref="23853726"/> | |
|
1132 | <reference key="NSBGColor" ref="224028609"/> | |
|
1133 | <int key="NScvFlags">4</int> | |
|
1134 | </object> | |
|
1135 | <object class="NSScroller" id="512953560"> | |
|
1136 | <reference key="NSNextResponder" ref="516244966"/> | |
|
1137 | <int key="NSvFlags">256</int> | |
|
1138 | <string key="NSFrame">{{157, 17}, {15, 200}}</string> | |
|
1139 | <reference key="NSSuperview" ref="516244966"/> | |
|
1140 | <reference key="NSWindow"/> | |
|
1141 | <reference key="NSTarget" ref="516244966"/> | |
|
1142 | <reference key="NSAction" ref="688920982"/> | |
|
1143 | <double key="NSPercent">9.961240e-01</double> | |
|
1144 | </object> | |
|
1145 | <object class="NSScroller" id="47103270"> | |
|
1146 | <reference key="NSNextResponder" ref="516244966"/> | |
|
1147 | <int key="NSvFlags">256</int> | |
|
1148 | <string key="NSFrame">{{1, 217}, {156, 15}}</string> | |
|
1149 | <reference key="NSSuperview" ref="516244966"/> | |
|
1150 | <reference key="NSWindow"/> | |
|
1151 | <int key="NSsFlags">1</int> | |
|
1152 | <reference key="NSTarget" ref="516244966"/> | |
|
1153 | <reference key="NSAction" ref="688920982"/> | |
|
1154 | <double key="NSPercent">7.179487e-01</double> | |
|
1155 | </object> | |
|
1156 | <object class="NSClipView" id="746968320"> | |
|
1157 | <reference key="NSNextResponder" ref="516244966"/> | |
|
1158 | <int key="NSvFlags">2304</int> | |
|
1159 | <object class="NSMutableArray" key="NSSubviews"> | |
|
1160 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1161 | <reference ref="1048357090"/> | |
|
1162 | </object> | |
|
1163 | <string key="NSFrame">{{1, 0}, {156, 17}}</string> | |
|
1164 | <reference key="NSSuperview" ref="516244966"/> | |
|
1165 | <reference key="NSWindow"/> | |
|
1166 | <reference key="NSNextKeyView" ref="1048357090"/> | |
|
1167 | <reference key="NSDocView" ref="1048357090"/> | |
|
1168 | <reference key="NSBGColor" ref="224028609"/> | |
|
1169 | <int key="NScvFlags">4</int> | |
|
1170 | </object> | |
|
1171 | <reference ref="212282722"/> | |
|
1172 | </object> | |
|
1173 | <string key="NSFrame">{{18, 14}, {173, 233}}</string> | |
|
1174 | <reference key="NSSuperview" ref="581281551"/> | |
|
1175 | <reference key="NSWindow"/> | |
|
1176 | <reference key="NSNextKeyView" ref="119083427"/> | |
|
1177 | <int key="NSsFlags">50</int> | |
|
1178 | <reference key="NSVScroller" ref="512953560"/> | |
|
1179 | <reference key="NSHScroller" ref="47103270"/> | |
|
1180 | <reference key="NSContentView" ref="119083427"/> | |
|
1181 | <reference key="NSHeaderClipView" ref="746968320"/> | |
|
1182 | <reference key="NSCornerView" ref="212282722"/> | |
|
1183 | <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes> | |
|
1184 | </object> | |
|
1185 | </object> | |
|
1186 | <string key="NSFrame">{{1, 1}, {209, 257}}</string> | |
|
1187 | <reference key="NSSuperview" ref="764100755"/> | |
|
1188 | <reference key="NSWindow"/> | |
|
1189 | </object> | |
|
1190 | </object> | |
|
1191 | <string key="NSFrame">{{474, 0}, {211, 273}}</string> | |
|
1192 | <reference key="NSSuperview" ref="741760375"/> | |
|
1193 | <reference key="NSWindow"/> | |
|
1194 | <reference key="NSOffsets" ref="1055927954"/> | |
|
1195 | <object class="NSTextFieldCell" key="NSTitleCell"> | |
|
1196 | <int key="NSCellFlags">67239424</int> | |
|
1197 | <int key="NSCellFlags2">0</int> | |
|
1198 | <string key="NSContents">Workspace</string> | |
|
1199 | <reference key="NSSupport" ref="26"/> | |
|
1200 | <reference key="NSBackgroundColor" ref="131515055"/> | |
|
1201 | <object class="NSColor" key="NSTextColor"> | |
|
1202 | <int key="NSColorSpace">3</int> | |
|
1203 | <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes> | |
|
1204 | </object> | |
|
1205 | </object> | |
|
1206 | <reference key="NSContentView" ref="581281551"/> | |
|
1207 | <int key="NSBorderType">1</int> | |
|
1208 | <int key="NSBoxType">0</int> | |
|
1209 | <int key="NSTitlePosition">2</int> | |
|
1210 | <bool key="NSTransparent">NO</bool> | |
|
1211 | </object> | |
|
1212 | </object> | |
|
1213 | <string key="NSFrame">{{20, 44}, {685, 273}}</string> | |
|
1214 | <reference key="NSSuperview" ref="439893737"/> | |
|
1215 | <reference key="NSWindow"/> | |
|
1216 | <bool key="NSIsVertical">YES</bool> | |
|
1217 | <int key="NSDividerStyle">2</int> | |
|
1218 | <string key="NSAutosaveName">ipython1_console_workspace_split</string> | |
|
1219 | </object> | |
|
1220 | <object class="NSProgressIndicator" id="74807016"> | |
|
1221 | <reference key="NSNextResponder" ref="439893737"/> | |
|
1222 | <int key="NSvFlags">1313</int> | |
|
1223 | <object class="NSPSMatrix" key="NSDrawMatrix"/> | |
|
1224 | <string key="NSFrame">{{689, 20}, {16, 16}}</string> | |
|
1225 | <reference key="NSSuperview" ref="439893737"/> | |
|
1226 | <reference key="NSWindow"/> | |
|
1227 | <int key="NSpiFlags">28938</int> | |
|
1228 | <double key="NSMinValue">1.600000e+01</double> | |
|
1229 | <double key="NSMaxValue">1.000000e+02</double> | |
|
1230 | </object> | |
|
1231 | </object> | |
|
1232 | <string key="NSFrameSize">{725, 337}</string> | |
|
1233 | <reference key="NSSuperview"/> | |
|
1234 | <reference key="NSWindow"/> | |
|
1235 | </object> | |
|
1236 | <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string> | |
|
1237 | <string key="NSFrameAutosaveName">ipython1_sandbox</string> | |
|
1238 | </object> | |
|
1239 | <object class="NSCustomObject" id="610635028"> | |
|
1240 | <string key="NSClassName" id="982950837">IPython1SandboxAppDelegate</string> | |
|
1241 | </object> | |
|
1242 | <object class="NSDictionaryController" id="808393665"> | |
|
1243 | <object class="NSMutableArray" key="NSDeclaredKeys"> | |
|
1244 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1245 | <string>keys</string> | |
|
1246 | <string id="181461860">key</string> | |
|
1247 | <string id="276523235">value</string> | |
|
1248 | </object> | |
|
1249 | <bool key="NSEditable">YES</bool> | |
|
1250 | <bool key="NSAvoidsEmptySelection">YES</bool> | |
|
1251 | <bool key="NSPreservesSelection">YES</bool> | |
|
1252 | <bool key="NSSelectsInsertedObjects">YES</bool> | |
|
1253 | <bool key="NSFilterRestrictsInsertion">YES</bool> | |
|
1254 | <object class="NSArray" key="NSSortDescriptors"> | |
|
1255 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1256 | <object class="NSSortDescriptor"> | |
|
1257 | <reference key="NSKey" ref="181461860"/> | |
|
1258 | <bool key="NSAscending">YES</bool> | |
|
1259 | <string key="NSSelector">compare:</string> | |
|
1260 | </object> | |
|
1261 | </object> | |
|
1262 | <bool key="NSClearsFilterPredicateOnInsertion">YES</bool> | |
|
1263 | <reference key="NSInitialKey" ref="181461860"/> | |
|
1264 | <reference key="NSInitialValue" ref="276523235"/> | |
|
1265 | </object> | |
|
1266 | <object class="NSCustomObject" id="631572152"> | |
|
1267 | <string key="NSClassName" id="695797635">IPythonCocoaController</string> | |
|
1268 | </object> | |
|
1269 | </object> | |
|
1270 | <object class="IBObjectContainer" key="IBDocument.Objects"> | |
|
1271 | <object class="NSMutableArray" key="connectionRecords"> | |
|
1272 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1273 | <object class="IBConnectionRecord"> | |
|
1274 | <object class="IBActionConnection" key="connection"> | |
|
1275 | <string key="label">performMiniaturize:</string> | |
|
1276 | <reference key="source" ref="1014"/> | |
|
1277 | <reference key="destination" ref="1011231497"/> | |
|
1278 | </object> | |
|
1279 | <int key="connectionID">37</int> | |
|
1280 | </object> | |
|
1281 | <object class="IBConnectionRecord"> | |
|
1282 | <object class="IBActionConnection" key="connection"> | |
|
1283 | <string key="label">arrangeInFront:</string> | |
|
1284 | <reference key="source" ref="1014"/> | |
|
1285 | <reference key="destination" ref="625202149"/> | |
|
1286 | </object> | |
|
1287 | <int key="connectionID">39</int> | |
|
1288 | </object> | |
|
1289 | <object class="IBConnectionRecord"> | |
|
1290 | <object class="IBActionConnection" key="connection"> | |
|
1291 | <string key="label">print:</string> | |
|
1292 | <reference key="source" ref="1014"/> | |
|
1293 | <reference key="destination" ref="49223823"/> | |
|
1294 | </object> | |
|
1295 | <int key="connectionID">86</int> | |
|
1296 | </object> | |
|
1297 | <object class="IBConnectionRecord"> | |
|
1298 | <object class="IBActionConnection" key="connection"> | |
|
1299 | <string key="label">runPageLayout:</string> | |
|
1300 | <reference key="source" ref="1014"/> | |
|
1301 | <reference key="destination" ref="294629803"/> | |
|
1302 | </object> | |
|
1303 | <int key="connectionID">87</int> | |
|
1304 | </object> | |
|
1305 | <object class="IBConnectionRecord"> | |
|
1306 | <object class="IBActionConnection" key="connection"> | |
|
1307 | <string key="label">clearRecentDocuments:</string> | |
|
1308 | <reference key="source" ref="1014"/> | |
|
1309 | <reference key="destination" ref="759406840"/> | |
|
1310 | </object> | |
|
1311 | <int key="connectionID">127</int> | |
|
1312 | </object> | |
|
1313 | <object class="IBConnectionRecord"> | |
|
1314 | <object class="IBActionConnection" key="connection"> | |
|
1315 | <string key="label">orderFrontStandardAboutPanel:</string> | |
|
1316 | <reference key="source" ref="1021"/> | |
|
1317 | <reference key="destination" ref="238522557"/> | |
|
1318 | </object> | |
|
1319 | <int key="connectionID">142</int> | |
|
1320 | </object> | |
|
1321 | <object class="IBConnectionRecord"> | |
|
1322 | <object class="IBActionConnection" key="connection"> | |
|
1323 | <string key="label">performClose:</string> | |
|
1324 | <reference key="source" ref="1014"/> | |
|
1325 | <reference key="destination" ref="776162233"/> | |
|
1326 | </object> | |
|
1327 | <int key="connectionID">193</int> | |
|
1328 | </object> | |
|
1329 | <object class="IBConnectionRecord"> | |
|
1330 | <object class="IBActionConnection" key="connection"> | |
|
1331 | <string key="label">toggleContinuousSpellChecking:</string> | |
|
1332 | <reference key="source" ref="1014"/> | |
|
1333 | <reference key="destination" ref="948374510"/> | |
|
1334 | </object> | |
|
1335 | <int key="connectionID">222</int> | |
|
1336 | </object> | |
|
1337 | <object class="IBConnectionRecord"> | |
|
1338 | <object class="IBActionConnection" key="connection"> | |
|
1339 | <string key="label">undo:</string> | |
|
1340 | <reference key="source" ref="1014"/> | |
|
1341 | <reference key="destination" ref="1058277027"/> | |
|
1342 | </object> | |
|
1343 | <int key="connectionID">223</int> | |
|
1344 | </object> | |
|
1345 | <object class="IBConnectionRecord"> | |
|
1346 | <object class="IBActionConnection" key="connection"> | |
|
1347 | <string key="label">copy:</string> | |
|
1348 | <reference key="source" ref="1014"/> | |
|
1349 | <reference key="destination" ref="860595796"/> | |
|
1350 | </object> | |
|
1351 | <int key="connectionID">224</int> | |
|
1352 | </object> | |
|
1353 | <object class="IBConnectionRecord"> | |
|
1354 | <object class="IBActionConnection" key="connection"> | |
|
1355 | <string key="label">checkSpelling:</string> | |
|
1356 | <reference key="source" ref="1014"/> | |
|
1357 | <reference key="destination" ref="96193923"/> | |
|
1358 | </object> | |
|
1359 | <int key="connectionID">225</int> | |
|
1360 | </object> | |
|
1361 | <object class="IBConnectionRecord"> | |
|
1362 | <object class="IBActionConnection" key="connection"> | |
|
1363 | <string key="label">paste:</string> | |
|
1364 | <reference key="source" ref="1014"/> | |
|
1365 | <reference key="destination" ref="29853731"/> | |
|
1366 | </object> | |
|
1367 | <int key="connectionID">226</int> | |
|
1368 | </object> | |
|
1369 | <object class="IBConnectionRecord"> | |
|
1370 | <object class="IBActionConnection" key="connection"> | |
|
1371 | <string key="label">stopSpeaking:</string> | |
|
1372 | <reference key="source" ref="1014"/> | |
|
1373 | <reference key="destination" ref="680220178"/> | |
|
1374 | </object> | |
|
1375 | <int key="connectionID">227</int> | |
|
1376 | </object> | |
|
1377 | <object class="IBConnectionRecord"> | |
|
1378 | <object class="IBActionConnection" key="connection"> | |
|
1379 | <string key="label">cut:</string> | |
|
1380 | <reference key="source" ref="1014"/> | |
|
1381 | <reference key="destination" ref="296257095"/> | |
|
1382 | </object> | |
|
1383 | <int key="connectionID">228</int> | |
|
1384 | </object> | |
|
1385 | <object class="IBConnectionRecord"> | |
|
1386 | <object class="IBActionConnection" key="connection"> | |
|
1387 | <string key="label">showGuessPanel:</string> | |
|
1388 | <reference key="source" ref="1014"/> | |
|
1389 | <reference key="destination" ref="679648819"/> | |
|
1390 | </object> | |
|
1391 | <int key="connectionID">230</int> | |
|
1392 | </object> | |
|
1393 | <object class="IBConnectionRecord"> | |
|
1394 | <object class="IBActionConnection" key="connection"> | |
|
1395 | <string key="label">redo:</string> | |
|
1396 | <reference key="source" ref="1014"/> | |
|
1397 | <reference key="destination" ref="790794224"/> | |
|
1398 | </object> | |
|
1399 | <int key="connectionID">231</int> | |
|
1400 | </object> | |
|
1401 | <object class="IBConnectionRecord"> | |
|
1402 | <object class="IBActionConnection" key="connection"> | |
|
1403 | <string key="label">selectAll:</string> | |
|
1404 | <reference key="source" ref="1014"/> | |
|
1405 | <reference key="destination" ref="583158037"/> | |
|
1406 | </object> | |
|
1407 | <int key="connectionID">232</int> | |
|
1408 | </object> | |
|
1409 | <object class="IBConnectionRecord"> | |
|
1410 | <object class="IBActionConnection" key="connection"> | |
|
1411 | <string key="label">startSpeaking:</string> | |
|
1412 | <reference key="source" ref="1014"/> | |
|
1413 | <reference key="destination" ref="731782645"/> | |
|
1414 | </object> | |
|
1415 | <int key="connectionID">233</int> | |
|
1416 | </object> | |
|
1417 | <object class="IBConnectionRecord"> | |
|
1418 | <object class="IBActionConnection" key="connection"> | |
|
1419 | <string key="label">delete:</string> | |
|
1420 | <reference key="source" ref="1014"/> | |
|
1421 | <reference key="destination" ref="437104165"/> | |
|
1422 | </object> | |
|
1423 | <int key="connectionID">235</int> | |
|
1424 | </object> | |
|
1425 | <object class="IBConnectionRecord"> | |
|
1426 | <object class="IBActionConnection" key="connection"> | |
|
1427 | <string key="label">performZoom:</string> | |
|
1428 | <reference key="source" ref="1014"/> | |
|
1429 | <reference key="destination" ref="575023229"/> | |
|
1430 | </object> | |
|
1431 | <int key="connectionID">240</int> | |
|
1432 | </object> | |
|
1433 | <object class="IBConnectionRecord"> | |
|
1434 | <object class="IBActionConnection" key="connection"> | |
|
1435 | <string key="label">performFindPanelAction:</string> | |
|
1436 | <reference key="source" ref="1014"/> | |
|
1437 | <reference key="destination" ref="447796847"/> | |
|
1438 | </object> | |
|
1439 | <int key="connectionID">241</int> | |
|
1440 | </object> | |
|
1441 | <object class="IBConnectionRecord"> | |
|
1442 | <object class="IBActionConnection" key="connection"> | |
|
1443 | <string key="label">centerSelectionInVisibleArea:</string> | |
|
1444 | <reference key="source" ref="1014"/> | |
|
1445 | <reference key="destination" ref="88285865"/> | |
|
1446 | </object> | |
|
1447 | <int key="connectionID">245</int> | |
|
1448 | </object> | |
|
1449 | <object class="IBConnectionRecord"> | |
|
1450 | <object class="IBActionConnection" key="connection"> | |
|
1451 | <string key="label">toggleGrammarChecking:</string> | |
|
1452 | <reference key="source" ref="1014"/> | |
|
1453 | <reference key="destination" ref="967646866"/> | |
|
1454 | </object> | |
|
1455 | <int key="connectionID">347</int> | |
|
1456 | </object> | |
|
1457 | <object class="IBConnectionRecord"> | |
|
1458 | <object class="IBActionConnection" key="connection"> | |
|
1459 | <string key="label">toggleSmartInsertDelete:</string> | |
|
1460 | <reference key="source" ref="1014"/> | |
|
1461 | <reference key="destination" ref="605118523"/> | |
|
1462 | </object> | |
|
1463 | <int key="connectionID">355</int> | |
|
1464 | </object> | |
|
1465 | <object class="IBConnectionRecord"> | |
|
1466 | <object class="IBActionConnection" key="connection"> | |
|
1467 | <string key="label">toggleAutomaticQuoteSubstitution:</string> | |
|
1468 | <reference key="source" ref="1014"/> | |
|
1469 | <reference key="destination" ref="197661976"/> | |
|
1470 | </object> | |
|
1471 | <int key="connectionID">356</int> | |
|
1472 | </object> | |
|
1473 | <object class="IBConnectionRecord"> | |
|
1474 | <object class="IBActionConnection" key="connection"> | |
|
1475 | <string key="label">toggleAutomaticLinkDetection:</string> | |
|
1476 | <reference key="source" ref="1014"/> | |
|
1477 | <reference key="destination" ref="708854459"/> | |
|
1478 | </object> | |
|
1479 | <int key="connectionID">357</int> | |
|
1480 | </object> | |
|
1481 | <object class="IBConnectionRecord"> | |
|
1482 | <object class="IBActionConnection" key="connection"> | |
|
1483 | <string key="label">showHelp:</string> | |
|
1484 | <reference key="source" ref="1014"/> | |
|
1485 | <reference key="destination" ref="238773614"/> | |
|
1486 | </object> | |
|
1487 | <int key="connectionID">360</int> | |
|
1488 | </object> | |
|
1489 | <object class="IBConnectionRecord"> | |
|
1490 | <object class="IBActionConnection" key="connection"> | |
|
1491 | <string key="label">orderFrontColorPanel:</string> | |
|
1492 | <reference key="source" ref="1014"/> | |
|
1493 | <reference key="destination" ref="1028416764"/> | |
|
1494 | </object> | |
|
1495 | <int key="connectionID">361</int> | |
|
1496 | </object> | |
|
1497 | <object class="IBConnectionRecord"> | |
|
1498 | <object class="IBActionConnection" key="connection"> | |
|
1499 | <string key="label">saveDocument:</string> | |
|
1500 | <reference key="source" ref="1014"/> | |
|
1501 | <reference key="destination" ref="1023925487"/> | |
|
1502 | </object> | |
|
1503 | <int key="connectionID">362</int> | |
|
1504 | </object> | |
|
1505 | <object class="IBConnectionRecord"> | |
|
1506 | <object class="IBActionConnection" key="connection"> | |
|
1507 | <string key="label">saveDocumentAs:</string> | |
|
1508 | <reference key="source" ref="1014"/> | |
|
1509 | <reference key="destination" ref="117038363"/> | |
|
1510 | </object> | |
|
1511 | <int key="connectionID">363</int> | |
|
1512 | </object> | |
|
1513 | <object class="IBConnectionRecord"> | |
|
1514 | <object class="IBActionConnection" key="connection"> | |
|
1515 | <string key="label">revertDocumentToSaved:</string> | |
|
1516 | <reference key="source" ref="1014"/> | |
|
1517 | <reference key="destination" ref="579971712"/> | |
|
1518 | </object> | |
|
1519 | <int key="connectionID">364</int> | |
|
1520 | </object> | |
|
1521 | <object class="IBConnectionRecord"> | |
|
1522 | <object class="IBActionConnection" key="connection"> | |
|
1523 | <string key="label">runToolbarCustomizationPalette:</string> | |
|
1524 | <reference key="source" ref="1014"/> | |
|
1525 | <reference key="destination" ref="237841660"/> | |
|
1526 | </object> | |
|
1527 | <int key="connectionID">365</int> | |
|
1528 | </object> | |
|
1529 | <object class="IBConnectionRecord"> | |
|
1530 | <object class="IBActionConnection" key="connection"> | |
|
1531 | <string key="label">toggleToolbarShown:</string> | |
|
1532 | <reference key="source" ref="1014"/> | |
|
1533 | <reference key="destination" ref="102151532"/> | |
|
1534 | </object> | |
|
1535 | <int key="connectionID">366</int> | |
|
1536 | </object> | |
|
1537 | <object class="IBConnectionRecord"> | |
|
1538 | <object class="IBActionConnection" key="connection"> | |
|
1539 | <string key="label">hide:</string> | |
|
1540 | <reference key="source" ref="1014"/> | |
|
1541 | <reference key="destination" ref="755159360"/> | |
|
1542 | </object> | |
|
1543 | <int key="connectionID">367</int> | |
|
1544 | </object> | |
|
1545 | <object class="IBConnectionRecord"> | |
|
1546 | <object class="IBActionConnection" key="connection"> | |
|
1547 | <string key="label">hideOtherApplications:</string> | |
|
1548 | <reference key="source" ref="1014"/> | |
|
1549 | <reference key="destination" ref="342932134"/> | |
|
1550 | </object> | |
|
1551 | <int key="connectionID">368</int> | |
|
1552 | </object> | |
|
1553 | <object class="IBConnectionRecord"> | |
|
1554 | <object class="IBActionConnection" key="connection"> | |
|
1555 | <string key="label">terminate:</string> | |
|
1556 | <reference key="source" ref="1014"/> | |
|
1557 | <reference key="destination" ref="632727374"/> | |
|
1558 | </object> | |
|
1559 | <int key="connectionID">369</int> | |
|
1560 | </object> | |
|
1561 | <object class="IBConnectionRecord"> | |
|
1562 | <object class="IBActionConnection" key="connection"> | |
|
1563 | <string key="label">unhideAllApplications:</string> | |
|
1564 | <reference key="source" ref="1014"/> | |
|
1565 | <reference key="destination" ref="908899353"/> | |
|
1566 | </object> | |
|
1567 | <int key="connectionID">370</int> | |
|
1568 | </object> | |
|
1569 | <object class="IBConnectionRecord"> | |
|
1570 | <object class="IBOutletConnection" key="connection"> | |
|
1571 | <string key="label" id="606168085">delegate</string> | |
|
1572 | <reference key="source" ref="1050"/> | |
|
1573 | <reference key="destination" ref="610635028"/> | |
|
1574 | </object> | |
|
1575 | <int key="connectionID">374</int> | |
|
1576 | </object> | |
|
1577 | <object class="IBConnectionRecord"> | |
|
1578 | <object class="IBBindingConnection" key="connection"> | |
|
1579 | <string key="label" id="187454546">contentDictionary: userNS</string> | |
|
1580 | <reference key="source" ref="808393665"/> | |
|
1581 | <reference key="destination" ref="631572152"/> | |
|
1582 | <object class="NSNibBindingConnector" key="connector"> | |
|
1583 | <reference key="NSSource" ref="808393665"/> | |
|
1584 | <reference key="NSDestination" ref="631572152"/> | |
|
1585 | <reference key="NSLabel" ref="187454546"/> | |
|
1586 | <string key="NSBinding">contentDictionary</string> | |
|
1587 | <string key="NSKeyPath">userNS</string> | |
|
1588 | <int key="NSNibBindingConnectorVersion">2</int> | |
|
1589 | </object> | |
|
1590 | </object> | |
|
1591 | <int key="connectionID">424</int> | |
|
1592 | </object> | |
|
1593 | <object class="IBConnectionRecord"> | |
|
1594 | <object class="IBBindingConnection" key="connection"> | |
|
1595 | <string key="label" id="688370141">value: arrangedObjects.value</string> | |
|
1596 | <reference key="source" ref="857054683"/> | |
|
1597 | <reference key="destination" ref="808393665"/> | |
|
1598 | <object class="NSNibBindingConnector" key="connector"> | |
|
1599 | <reference key="NSSource" ref="857054683"/> | |
|
1600 | <reference key="NSDestination" ref="808393665"/> | |
|
1601 | <reference key="NSLabel" ref="688370141"/> | |
|
1602 | <reference key="NSBinding" ref="276523235"/> | |
|
1603 | <string key="NSKeyPath">arrangedObjects.value</string> | |
|
1604 | <int key="NSNibBindingConnectorVersion">2</int> | |
|
1605 | </object> | |
|
1606 | </object> | |
|
1607 | <int key="connectionID">427</int> | |
|
1608 | </object> | |
|
1609 | <object class="IBConnectionRecord"> | |
|
1610 | <object class="IBBindingConnection" key="connection"> | |
|
1611 | <string key="label" id="764859820">value: arrangedObjects.key</string> | |
|
1612 | <reference key="source" ref="920426212"/> | |
|
1613 | <reference key="destination" ref="808393665"/> | |
|
1614 | <object class="NSNibBindingConnector" key="connector"> | |
|
1615 | <reference key="NSSource" ref="920426212"/> | |
|
1616 | <reference key="NSDestination" ref="808393665"/> | |
|
1617 | <reference key="NSLabel" ref="764859820"/> | |
|
1618 | <reference key="NSBinding" ref="276523235"/> | |
|
1619 | <string key="NSKeyPath">arrangedObjects.key</string> | |
|
1620 | <int key="NSNibBindingConnectorVersion">2</int> | |
|
1621 | </object> | |
|
1622 | </object> | |
|
1623 | <int key="connectionID">428</int> | |
|
1624 | </object> | |
|
1625 | <object class="IBConnectionRecord"> | |
|
1626 | <object class="IBOutletConnection" key="connection"> | |
|
1627 | <reference key="label" ref="606168085"/> | |
|
1628 | <reference key="source" ref="972006081"/> | |
|
1629 | <reference key="destination" ref="631572152"/> | |
|
1630 | </object> | |
|
1631 | <int key="connectionID">429</int> | |
|
1632 | </object> | |
|
1633 | <object class="IBConnectionRecord"> | |
|
1634 | <object class="IBBindingConnection" key="connection"> | |
|
1635 | <string key="label" id="97087091">animate: waitingForEngine</string> | |
|
1636 | <reference key="source" ref="74807016"/> | |
|
1637 | <reference key="destination" ref="631572152"/> | |
|
1638 | <object class="NSNibBindingConnector" key="connector"> | |
|
1639 | <reference key="NSSource" ref="74807016"/> | |
|
1640 | <reference key="NSDestination" ref="631572152"/> | |
|
1641 | <reference key="NSLabel" ref="97087091"/> | |
|
1642 | <string key="NSBinding">animate</string> | |
|
1643 | <string key="NSKeyPath">waitingForEngine</string> | |
|
1644 | <int key="NSNibBindingConnectorVersion">2</int> | |
|
1645 | </object> | |
|
1646 | </object> | |
|
1647 | <int key="connectionID">437</int> | |
|
1648 | </object> | |
|
1649 | <object class="IBConnectionRecord"> | |
|
1650 | <object class="IBBindingConnection" key="connection"> | |
|
1651 | <string key="label" id="289275654">filterPredicate: workspaceFilterPredicate</string> | |
|
1652 | <reference key="source" ref="808393665"/> | |
|
1653 | <reference key="destination" ref="610635028"/> | |
|
1654 | <object class="NSNibBindingConnector" key="connector"> | |
|
1655 | <reference key="NSSource" ref="808393665"/> | |
|
1656 | <reference key="NSDestination" ref="610635028"/> | |
|
1657 | <reference key="NSLabel" ref="289275654"/> | |
|
1658 | <string key="NSBinding">filterPredicate</string> | |
|
1659 | <string key="NSKeyPath">workspaceFilterPredicate</string> | |
|
1660 | <int key="NSNibBindingConnectorVersion">2</int> | |
|
1661 | </object> | |
|
1662 | </object> | |
|
1663 | <int key="connectionID">440</int> | |
|
1664 | </object> | |
|
1665 | <object class="IBConnectionRecord"> | |
|
1666 | <object class="IBOutletConnection" key="connection"> | |
|
1667 | <string key="label">ipythonController</string> | |
|
1668 | <reference key="source" ref="610635028"/> | |
|
1669 | <reference key="destination" ref="631572152"/> | |
|
1670 | </object> | |
|
1671 | <int key="connectionID">441</int> | |
|
1672 | </object> | |
|
1673 | <object class="IBConnectionRecord"> | |
|
1674 | <object class="IBOutletConnection" key="connection"> | |
|
1675 | <string key="label" id="684042788">textView</string> | |
|
1676 | <reference key="source" ref="631572152"/> | |
|
1677 | <reference key="destination" ref="163417131"/> | |
|
1678 | </object> | |
|
1679 | <int key="connectionID">444</int> | |
|
1680 | </object> | |
|
1681 | <object class="IBConnectionRecord"> | |
|
1682 | <object class="IBOutletConnection" key="connection"> | |
|
1683 | <string key="label">initialFirstResponder</string> | |
|
1684 | <reference key="source" ref="972006081"/> | |
|
1685 | <reference key="destination" ref="163417131"/> | |
|
1686 | </object> | |
|
1687 | <int key="connectionID">445</int> | |
|
1688 | </object> | |
|
1689 | </object> | |
|
1690 | <object class="IBMutableOrderedSet" key="objectRecords"> | |
|
1691 | <object class="NSArray" key="orderedObjects"> | |
|
1692 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1693 | <object class="IBObjectRecord"> | |
|
1694 | <int key="objectID">0</int> | |
|
1695 | <object class="NSArray" key="object" id="1049"> | |
|
1696 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1697 | </object> | |
|
1698 | <reference key="children" ref="1048"/> | |
|
1699 | <nil key="parent"/> | |
|
1700 | </object> | |
|
1701 | <object class="IBObjectRecord"> | |
|
1702 | <int key="objectID">-2</int> | |
|
1703 | <reference key="object" ref="1021"/> | |
|
1704 | <reference key="parent" ref="1049"/> | |
|
1705 | <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> | |
|
1706 | </object> | |
|
1707 | <object class="IBObjectRecord"> | |
|
1708 | <int key="objectID">-1</int> | |
|
1709 | <reference key="object" ref="1014"/> | |
|
1710 | <reference key="parent" ref="1049"/> | |
|
1711 | <string key="objectName">First Responder</string> | |
|
1712 | </object> | |
|
1713 | <object class="IBObjectRecord"> | |
|
1714 | <int key="objectID">-3</int> | |
|
1715 | <reference key="object" ref="1050"/> | |
|
1716 | <reference key="parent" ref="1049"/> | |
|
1717 | <string key="objectName">Application</string> | |
|
1718 | </object> | |
|
1719 | <object class="IBObjectRecord"> | |
|
1720 | <int key="objectID">29</int> | |
|
1721 | <reference key="object" ref="649796088"/> | |
|
1722 | <object class="NSMutableArray" key="children"> | |
|
1723 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1724 | <reference ref="713487014"/> | |
|
1725 | <reference ref="694149608"/> | |
|
1726 | <reference ref="391199113"/> | |
|
1727 | <reference ref="952259628"/> | |
|
1728 | <reference ref="379814623"/> | |
|
1729 | <reference ref="586577488"/> | |
|
1730 | <reference ref="626404410"/> | |
|
1731 | </object> | |
|
1732 | <reference key="parent" ref="1049"/> | |
|
1733 | <string key="objectName">MainMenu</string> | |
|
1734 | </object> | |
|
1735 | <object class="IBObjectRecord"> | |
|
1736 | <int key="objectID">19</int> | |
|
1737 | <reference key="object" ref="713487014"/> | |
|
1738 | <object class="NSMutableArray" key="children"> | |
|
1739 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1740 | <reference ref="835318025"/> | |
|
1741 | </object> | |
|
1742 | <reference key="parent" ref="649796088"/> | |
|
1743 | </object> | |
|
1744 | <object class="IBObjectRecord"> | |
|
1745 | <int key="objectID">56</int> | |
|
1746 | <reference key="object" ref="694149608"/> | |
|
1747 | <object class="NSMutableArray" key="children"> | |
|
1748 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1749 | <reference ref="110575045"/> | |
|
1750 | </object> | |
|
1751 | <reference key="parent" ref="649796088"/> | |
|
1752 | </object> | |
|
1753 | <object class="IBObjectRecord"> | |
|
1754 | <int key="objectID">103</int> | |
|
1755 | <reference key="object" ref="391199113"/> | |
|
1756 | <object class="NSMutableArray" key="children"> | |
|
1757 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1758 | <reference ref="374024848"/> | |
|
1759 | </object> | |
|
1760 | <reference key="parent" ref="649796088"/> | |
|
1761 | <string key="objectName" id="508169456">1</string> | |
|
1762 | </object> | |
|
1763 | <object class="IBObjectRecord"> | |
|
1764 | <int key="objectID">217</int> | |
|
1765 | <reference key="object" ref="952259628"/> | |
|
1766 | <object class="NSMutableArray" key="children"> | |
|
1767 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1768 | <reference ref="789758025"/> | |
|
1769 | </object> | |
|
1770 | <reference key="parent" ref="649796088"/> | |
|
1771 | </object> | |
|
1772 | <object class="IBObjectRecord"> | |
|
1773 | <int key="objectID">83</int> | |
|
1774 | <reference key="object" ref="379814623"/> | |
|
1775 | <object class="NSMutableArray" key="children"> | |
|
1776 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1777 | <reference ref="720053764"/> | |
|
1778 | </object> | |
|
1779 | <reference key="parent" ref="649796088"/> | |
|
1780 | </object> | |
|
1781 | <object class="IBObjectRecord"> | |
|
1782 | <int key="objectID">81</int> | |
|
1783 | <reference key="object" ref="720053764"/> | |
|
1784 | <object class="NSMutableArray" key="children"> | |
|
1785 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1786 | <reference ref="1023925487"/> | |
|
1787 | <reference ref="117038363"/> | |
|
1788 | <reference ref="49223823"/> | |
|
1789 | <reference ref="722745758"/> | |
|
1790 | <reference ref="705341025"/> | |
|
1791 | <reference ref="1025936716"/> | |
|
1792 | <reference ref="294629803"/> | |
|
1793 | <reference ref="776162233"/> | |
|
1794 | <reference ref="425164168"/> | |
|
1795 | <reference ref="579971712"/> | |
|
1796 | <reference ref="1010469920"/> | |
|
1797 | </object> | |
|
1798 | <reference key="parent" ref="379814623"/> | |
|
1799 | </object> | |
|
1800 | <object class="IBObjectRecord"> | |
|
1801 | <int key="objectID">75</int> | |
|
1802 | <reference key="object" ref="1023925487"/> | |
|
1803 | <reference key="parent" ref="720053764"/> | |
|
1804 | <string key="objectName">3</string> | |
|
1805 | </object> | |
|
1806 | <object class="IBObjectRecord"> | |
|
1807 | <int key="objectID">80</int> | |
|
1808 | <reference key="object" ref="117038363"/> | |
|
1809 | <reference key="parent" ref="720053764"/> | |
|
1810 | <string key="objectName">8</string> | |
|
1811 | </object> | |
|
1812 | <object class="IBObjectRecord"> | |
|
1813 | <int key="objectID">78</int> | |
|
1814 | <reference key="object" ref="49223823"/> | |
|
1815 | <reference key="parent" ref="720053764"/> | |
|
1816 | <string key="objectName">6</string> | |
|
1817 | </object> | |
|
1818 | <object class="IBObjectRecord"> | |
|
1819 | <int key="objectID">72</int> | |
|
1820 | <reference key="object" ref="722745758"/> | |
|
1821 | <reference key="parent" ref="720053764"/> | |
|
1822 | </object> | |
|
1823 | <object class="IBObjectRecord"> | |
|
1824 | <int key="objectID">82</int> | |
|
1825 | <reference key="object" ref="705341025"/> | |
|
1826 | <reference key="parent" ref="720053764"/> | |
|
1827 | <string key="objectName">9</string> | |
|
1828 | </object> | |
|
1829 | <object class="IBObjectRecord"> | |
|
1830 | <int key="objectID">124</int> | |
|
1831 | <reference key="object" ref="1025936716"/> | |
|
1832 | <object class="NSMutableArray" key="children"> | |
|
1833 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1834 | <reference ref="1065607017"/> | |
|
1835 | </object> | |
|
1836 | <reference key="parent" ref="720053764"/> | |
|
1837 | </object> | |
|
1838 | <object class="IBObjectRecord"> | |
|
1839 | <int key="objectID">77</int> | |
|
1840 | <reference key="object" ref="294629803"/> | |
|
1841 | <reference key="parent" ref="720053764"/> | |
|
1842 | <string key="objectName">5</string> | |
|
1843 | </object> | |
|
1844 | <object class="IBObjectRecord"> | |
|
1845 | <int key="objectID">73</int> | |
|
1846 | <reference key="object" ref="776162233"/> | |
|
1847 | <reference key="parent" ref="720053764"/> | |
|
1848 | <reference key="objectName" ref="508169456"/> | |
|
1849 | </object> | |
|
1850 | <object class="IBObjectRecord"> | |
|
1851 | <int key="objectID">79</int> | |
|
1852 | <reference key="object" ref="425164168"/> | |
|
1853 | <reference key="parent" ref="720053764"/> | |
|
1854 | <string key="objectName">7</string> | |
|
1855 | </object> | |
|
1856 | <object class="IBObjectRecord"> | |
|
1857 | <int key="objectID">112</int> | |
|
1858 | <reference key="object" ref="579971712"/> | |
|
1859 | <reference key="parent" ref="720053764"/> | |
|
1860 | <string key="objectName">10</string> | |
|
1861 | </object> | |
|
1862 | <object class="IBObjectRecord"> | |
|
1863 | <int key="objectID">74</int> | |
|
1864 | <reference key="object" ref="1010469920"/> | |
|
1865 | <reference key="parent" ref="720053764"/> | |
|
1866 | <string key="objectName" id="464456376">2</string> | |
|
1867 | </object> | |
|
1868 | <object class="IBObjectRecord"> | |
|
1869 | <int key="objectID">125</int> | |
|
1870 | <reference key="object" ref="1065607017"/> | |
|
1871 | <object class="NSMutableArray" key="children"> | |
|
1872 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1873 | <reference ref="759406840"/> | |
|
1874 | </object> | |
|
1875 | <reference key="parent" ref="1025936716"/> | |
|
1876 | </object> | |
|
1877 | <object class="IBObjectRecord"> | |
|
1878 | <int key="objectID">126</int> | |
|
1879 | <reference key="object" ref="759406840"/> | |
|
1880 | <reference key="parent" ref="1065607017"/> | |
|
1881 | </object> | |
|
1882 | <object class="IBObjectRecord"> | |
|
1883 | <int key="objectID">205</int> | |
|
1884 | <reference key="object" ref="789758025"/> | |
|
1885 | <object class="NSMutableArray" key="children"> | |
|
1886 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1887 | <reference ref="437104165"/> | |
|
1888 | <reference ref="583158037"/> | |
|
1889 | <reference ref="1058277027"/> | |
|
1890 | <reference ref="212016141"/> | |
|
1891 | <reference ref="296257095"/> | |
|
1892 | <reference ref="29853731"/> | |
|
1893 | <reference ref="860595796"/> | |
|
1894 | <reference ref="1040322652"/> | |
|
1895 | <reference ref="790794224"/> | |
|
1896 | <reference ref="892235320"/> | |
|
1897 | <reference ref="972420730"/> | |
|
1898 | <reference ref="676164635"/> | |
|
1899 | <reference ref="507821607"/> | |
|
1900 | </object> | |
|
1901 | <reference key="parent" ref="952259628"/> | |
|
1902 | </object> | |
|
1903 | <object class="IBObjectRecord"> | |
|
1904 | <int key="objectID">202</int> | |
|
1905 | <reference key="object" ref="437104165"/> | |
|
1906 | <reference key="parent" ref="789758025"/> | |
|
1907 | </object> | |
|
1908 | <object class="IBObjectRecord"> | |
|
1909 | <int key="objectID">198</int> | |
|
1910 | <reference key="object" ref="583158037"/> | |
|
1911 | <reference key="parent" ref="789758025"/> | |
|
1912 | </object> | |
|
1913 | <object class="IBObjectRecord"> | |
|
1914 | <int key="objectID">207</int> | |
|
1915 | <reference key="object" ref="1058277027"/> | |
|
1916 | <reference key="parent" ref="789758025"/> | |
|
1917 | </object> | |
|
1918 | <object class="IBObjectRecord"> | |
|
1919 | <int key="objectID">214</int> | |
|
1920 | <reference key="object" ref="212016141"/> | |
|
1921 | <reference key="parent" ref="789758025"/> | |
|
1922 | </object> | |
|
1923 | <object class="IBObjectRecord"> | |
|
1924 | <int key="objectID">199</int> | |
|
1925 | <reference key="object" ref="296257095"/> | |
|
1926 | <reference key="parent" ref="789758025"/> | |
|
1927 | </object> | |
|
1928 | <object class="IBObjectRecord"> | |
|
1929 | <int key="objectID">203</int> | |
|
1930 | <reference key="object" ref="29853731"/> | |
|
1931 | <reference key="parent" ref="789758025"/> | |
|
1932 | </object> | |
|
1933 | <object class="IBObjectRecord"> | |
|
1934 | <int key="objectID">197</int> | |
|
1935 | <reference key="object" ref="860595796"/> | |
|
1936 | <reference key="parent" ref="789758025"/> | |
|
1937 | </object> | |
|
1938 | <object class="IBObjectRecord"> | |
|
1939 | <int key="objectID">206</int> | |
|
1940 | <reference key="object" ref="1040322652"/> | |
|
1941 | <reference key="parent" ref="789758025"/> | |
|
1942 | </object> | |
|
1943 | <object class="IBObjectRecord"> | |
|
1944 | <int key="objectID">215</int> | |
|
1945 | <reference key="object" ref="790794224"/> | |
|
1946 | <reference key="parent" ref="789758025"/> | |
|
1947 | </object> | |
|
1948 | <object class="IBObjectRecord"> | |
|
1949 | <int key="objectID">218</int> | |
|
1950 | <reference key="object" ref="892235320"/> | |
|
1951 | <object class="NSMutableArray" key="children"> | |
|
1952 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1953 | <reference ref="963351320"/> | |
|
1954 | </object> | |
|
1955 | <reference key="parent" ref="789758025"/> | |
|
1956 | </object> | |
|
1957 | <object class="IBObjectRecord"> | |
|
1958 | <int key="objectID">216</int> | |
|
1959 | <reference key="object" ref="972420730"/> | |
|
1960 | <object class="NSMutableArray" key="children"> | |
|
1961 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1962 | <reference ref="769623530"/> | |
|
1963 | </object> | |
|
1964 | <reference key="parent" ref="789758025"/> | |
|
1965 | </object> | |
|
1966 | <object class="IBObjectRecord"> | |
|
1967 | <int key="objectID">200</int> | |
|
1968 | <reference key="object" ref="769623530"/> | |
|
1969 | <object class="NSMutableArray" key="children"> | |
|
1970 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1971 | <reference ref="948374510"/> | |
|
1972 | <reference ref="96193923"/> | |
|
1973 | <reference ref="679648819"/> | |
|
1974 | <reference ref="967646866"/> | |
|
1975 | </object> | |
|
1976 | <reference key="parent" ref="972420730"/> | |
|
1977 | </object> | |
|
1978 | <object class="IBObjectRecord"> | |
|
1979 | <int key="objectID">219</int> | |
|
1980 | <reference key="object" ref="948374510"/> | |
|
1981 | <reference key="parent" ref="769623530"/> | |
|
1982 | </object> | |
|
1983 | <object class="IBObjectRecord"> | |
|
1984 | <int key="objectID">201</int> | |
|
1985 | <reference key="object" ref="96193923"/> | |
|
1986 | <reference key="parent" ref="769623530"/> | |
|
1987 | </object> | |
|
1988 | <object class="IBObjectRecord"> | |
|
1989 | <int key="objectID">204</int> | |
|
1990 | <reference key="object" ref="679648819"/> | |
|
1991 | <reference key="parent" ref="769623530"/> | |
|
1992 | </object> | |
|
1993 | <object class="IBObjectRecord"> | |
|
1994 | <int key="objectID">220</int> | |
|
1995 | <reference key="object" ref="963351320"/> | |
|
1996 | <object class="NSMutableArray" key="children"> | |
|
1997 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
1998 | <reference ref="270902937"/> | |
|
1999 | <reference ref="88285865"/> | |
|
2000 | <reference ref="159080638"/> | |
|
2001 | <reference ref="326711663"/> | |
|
2002 | <reference ref="447796847"/> | |
|
2003 | </object> | |
|
2004 | <reference key="parent" ref="892235320"/> | |
|
2005 | </object> | |
|
2006 | <object class="IBObjectRecord"> | |
|
2007 | <int key="objectID">213</int> | |
|
2008 | <reference key="object" ref="270902937"/> | |
|
2009 | <reference key="parent" ref="963351320"/> | |
|
2010 | </object> | |
|
2011 | <object class="IBObjectRecord"> | |
|
2012 | <int key="objectID">210</int> | |
|
2013 | <reference key="object" ref="88285865"/> | |
|
2014 | <reference key="parent" ref="963351320"/> | |
|
2015 | </object> | |
|
2016 | <object class="IBObjectRecord"> | |
|
2017 | <int key="objectID">221</int> | |
|
2018 | <reference key="object" ref="159080638"/> | |
|
2019 | <reference key="parent" ref="963351320"/> | |
|
2020 | </object> | |
|
2021 | <object class="IBObjectRecord"> | |
|
2022 | <int key="objectID">208</int> | |
|
2023 | <reference key="object" ref="326711663"/> | |
|
2024 | <reference key="parent" ref="963351320"/> | |
|
2025 | </object> | |
|
2026 | <object class="IBObjectRecord"> | |
|
2027 | <int key="objectID">209</int> | |
|
2028 | <reference key="object" ref="447796847"/> | |
|
2029 | <reference key="parent" ref="963351320"/> | |
|
2030 | </object> | |
|
2031 | <object class="IBObjectRecord"> | |
|
2032 | <int key="objectID">106</int> | |
|
2033 | <reference key="object" ref="374024848"/> | |
|
2034 | <object class="NSMutableArray" key="children"> | |
|
2035 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2036 | <reference ref="238773614"/> | |
|
2037 | </object> | |
|
2038 | <reference key="parent" ref="391199113"/> | |
|
2039 | <reference key="objectName" ref="464456376"/> | |
|
2040 | </object> | |
|
2041 | <object class="IBObjectRecord"> | |
|
2042 | <int key="objectID">111</int> | |
|
2043 | <reference key="object" ref="238773614"/> | |
|
2044 | <reference key="parent" ref="374024848"/> | |
|
2045 | </object> | |
|
2046 | <object class="IBObjectRecord"> | |
|
2047 | <int key="objectID">57</int> | |
|
2048 | <reference key="object" ref="110575045"/> | |
|
2049 | <object class="NSMutableArray" key="children"> | |
|
2050 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2051 | <reference ref="238522557"/> | |
|
2052 | <reference ref="755159360"/> | |
|
2053 | <reference ref="908899353"/> | |
|
2054 | <reference ref="632727374"/> | |
|
2055 | <reference ref="646227648"/> | |
|
2056 | <reference ref="609285721"/> | |
|
2057 | <reference ref="481834944"/> | |
|
2058 | <reference ref="304266470"/> | |
|
2059 | <reference ref="1046388886"/> | |
|
2060 | <reference ref="1056857174"/> | |
|
2061 | <reference ref="342932134"/> | |
|
2062 | </object> | |
|
2063 | <reference key="parent" ref="694149608"/> | |
|
2064 | </object> | |
|
2065 | <object class="IBObjectRecord"> | |
|
2066 | <int key="objectID">58</int> | |
|
2067 | <reference key="object" ref="238522557"/> | |
|
2068 | <reference key="parent" ref="110575045"/> | |
|
2069 | </object> | |
|
2070 | <object class="IBObjectRecord"> | |
|
2071 | <int key="objectID">134</int> | |
|
2072 | <reference key="object" ref="755159360"/> | |
|
2073 | <reference key="parent" ref="110575045"/> | |
|
2074 | </object> | |
|
2075 | <object class="IBObjectRecord"> | |
|
2076 | <int key="objectID">150</int> | |
|
2077 | <reference key="object" ref="908899353"/> | |
|
2078 | <reference key="parent" ref="110575045"/> | |
|
2079 | </object> | |
|
2080 | <object class="IBObjectRecord"> | |
|
2081 | <int key="objectID">136</int> | |
|
2082 | <reference key="object" ref="632727374"/> | |
|
2083 | <reference key="parent" ref="110575045"/> | |
|
2084 | <string key="objectName">1111</string> | |
|
2085 | </object> | |
|
2086 | <object class="IBObjectRecord"> | |
|
2087 | <int key="objectID">144</int> | |
|
2088 | <reference key="object" ref="646227648"/> | |
|
2089 | <reference key="parent" ref="110575045"/> | |
|
2090 | </object> | |
|
2091 | <object class="IBObjectRecord"> | |
|
2092 | <int key="objectID">129</int> | |
|
2093 | <reference key="object" ref="609285721"/> | |
|
2094 | <reference key="parent" ref="110575045"/> | |
|
2095 | <string key="objectName">121</string> | |
|
2096 | </object> | |
|
2097 | <object class="IBObjectRecord"> | |
|
2098 | <int key="objectID">143</int> | |
|
2099 | <reference key="object" ref="481834944"/> | |
|
2100 | <reference key="parent" ref="110575045"/> | |
|
2101 | </object> | |
|
2102 | <object class="IBObjectRecord"> | |
|
2103 | <int key="objectID">236</int> | |
|
2104 | <reference key="object" ref="304266470"/> | |
|
2105 | <reference key="parent" ref="110575045"/> | |
|
2106 | </object> | |
|
2107 | <object class="IBObjectRecord"> | |
|
2108 | <int key="objectID">131</int> | |
|
2109 | <reference key="object" ref="1046388886"/> | |
|
2110 | <object class="NSMutableArray" key="children"> | |
|
2111 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2112 | <reference ref="752062318"/> | |
|
2113 | </object> | |
|
2114 | <reference key="parent" ref="110575045"/> | |
|
2115 | </object> | |
|
2116 | <object class="IBObjectRecord"> | |
|
2117 | <int key="objectID">149</int> | |
|
2118 | <reference key="object" ref="1056857174"/> | |
|
2119 | <reference key="parent" ref="110575045"/> | |
|
2120 | </object> | |
|
2121 | <object class="IBObjectRecord"> | |
|
2122 | <int key="objectID">145</int> | |
|
2123 | <reference key="object" ref="342932134"/> | |
|
2124 | <reference key="parent" ref="110575045"/> | |
|
2125 | </object> | |
|
2126 | <object class="IBObjectRecord"> | |
|
2127 | <int key="objectID">130</int> | |
|
2128 | <reference key="object" ref="752062318"/> | |
|
2129 | <reference key="parent" ref="1046388886"/> | |
|
2130 | </object> | |
|
2131 | <object class="IBObjectRecord"> | |
|
2132 | <int key="objectID">24</int> | |
|
2133 | <reference key="object" ref="835318025"/> | |
|
2134 | <object class="NSMutableArray" key="children"> | |
|
2135 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2136 | <reference ref="299356726"/> | |
|
2137 | <reference ref="625202149"/> | |
|
2138 | <reference ref="575023229"/> | |
|
2139 | <reference ref="1011231497"/> | |
|
2140 | </object> | |
|
2141 | <reference key="parent" ref="713487014"/> | |
|
2142 | </object> | |
|
2143 | <object class="IBObjectRecord"> | |
|
2144 | <int key="objectID">92</int> | |
|
2145 | <reference key="object" ref="299356726"/> | |
|
2146 | <reference key="parent" ref="835318025"/> | |
|
2147 | </object> | |
|
2148 | <object class="IBObjectRecord"> | |
|
2149 | <int key="objectID">5</int> | |
|
2150 | <reference key="object" ref="625202149"/> | |
|
2151 | <reference key="parent" ref="835318025"/> | |
|
2152 | </object> | |
|
2153 | <object class="IBObjectRecord"> | |
|
2154 | <int key="objectID">239</int> | |
|
2155 | <reference key="object" ref="575023229"/> | |
|
2156 | <reference key="parent" ref="835318025"/> | |
|
2157 | </object> | |
|
2158 | <object class="IBObjectRecord"> | |
|
2159 | <int key="objectID">23</int> | |
|
2160 | <reference key="object" ref="1011231497"/> | |
|
2161 | <reference key="parent" ref="835318025"/> | |
|
2162 | </object> | |
|
2163 | <object class="IBObjectRecord"> | |
|
2164 | <int key="objectID">295</int> | |
|
2165 | <reference key="object" ref="586577488"/> | |
|
2166 | <object class="NSMutableArray" key="children"> | |
|
2167 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2168 | <reference ref="466310130"/> | |
|
2169 | </object> | |
|
2170 | <reference key="parent" ref="649796088"/> | |
|
2171 | </object> | |
|
2172 | <object class="IBObjectRecord"> | |
|
2173 | <int key="objectID">296</int> | |
|
2174 | <reference key="object" ref="466310130"/> | |
|
2175 | <object class="NSMutableArray" key="children"> | |
|
2176 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2177 | <reference ref="102151532"/> | |
|
2178 | <reference ref="237841660"/> | |
|
2179 | </object> | |
|
2180 | <reference key="parent" ref="586577488"/> | |
|
2181 | </object> | |
|
2182 | <object class="IBObjectRecord"> | |
|
2183 | <int key="objectID">297</int> | |
|
2184 | <reference key="object" ref="102151532"/> | |
|
2185 | <reference key="parent" ref="466310130"/> | |
|
2186 | </object> | |
|
2187 | <object class="IBObjectRecord"> | |
|
2188 | <int key="objectID">298</int> | |
|
2189 | <reference key="object" ref="237841660"/> | |
|
2190 | <reference key="parent" ref="466310130"/> | |
|
2191 | </object> | |
|
2192 | <object class="IBObjectRecord"> | |
|
2193 | <int key="objectID">299</int> | |
|
2194 | <reference key="object" ref="626404410"/> | |
|
2195 | <object class="NSMutableArray" key="children"> | |
|
2196 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2197 | <reference ref="502084290"/> | |
|
2198 | </object> | |
|
2199 | <reference key="parent" ref="649796088"/> | |
|
2200 | </object> | |
|
2201 | <object class="IBObjectRecord"> | |
|
2202 | <int key="objectID">300</int> | |
|
2203 | <reference key="object" ref="502084290"/> | |
|
2204 | <object class="NSMutableArray" key="children"> | |
|
2205 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2206 | <reference ref="519768076"/> | |
|
2207 | <reference ref="1028416764"/> | |
|
2208 | </object> | |
|
2209 | <reference key="parent" ref="626404410"/> | |
|
2210 | </object> | |
|
2211 | <object class="IBObjectRecord"> | |
|
2212 | <int key="objectID">344</int> | |
|
2213 | <reference key="object" ref="519768076"/> | |
|
2214 | <reference key="parent" ref="502084290"/> | |
|
2215 | </object> | |
|
2216 | <object class="IBObjectRecord"> | |
|
2217 | <int key="objectID">345</int> | |
|
2218 | <reference key="object" ref="1028416764"/> | |
|
2219 | <reference key="parent" ref="502084290"/> | |
|
2220 | </object> | |
|
2221 | <object class="IBObjectRecord"> | |
|
2222 | <int key="objectID">211</int> | |
|
2223 | <reference key="object" ref="676164635"/> | |
|
2224 | <object class="NSMutableArray" key="children"> | |
|
2225 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2226 | <reference ref="785027613"/> | |
|
2227 | </object> | |
|
2228 | <reference key="parent" ref="789758025"/> | |
|
2229 | </object> | |
|
2230 | <object class="IBObjectRecord"> | |
|
2231 | <int key="objectID">212</int> | |
|
2232 | <reference key="object" ref="785027613"/> | |
|
2233 | <object class="NSMutableArray" key="children"> | |
|
2234 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2235 | <reference ref="680220178"/> | |
|
2236 | <reference ref="731782645"/> | |
|
2237 | </object> | |
|
2238 | <reference key="parent" ref="676164635"/> | |
|
2239 | </object> | |
|
2240 | <object class="IBObjectRecord"> | |
|
2241 | <int key="objectID">195</int> | |
|
2242 | <reference key="object" ref="680220178"/> | |
|
2243 | <reference key="parent" ref="785027613"/> | |
|
2244 | </object> | |
|
2245 | <object class="IBObjectRecord"> | |
|
2246 | <int key="objectID">196</int> | |
|
2247 | <reference key="object" ref="731782645"/> | |
|
2248 | <reference key="parent" ref="785027613"/> | |
|
2249 | </object> | |
|
2250 | <object class="IBObjectRecord"> | |
|
2251 | <int key="objectID">346</int> | |
|
2252 | <reference key="object" ref="967646866"/> | |
|
2253 | <reference key="parent" ref="769623530"/> | |
|
2254 | </object> | |
|
2255 | <object class="IBObjectRecord"> | |
|
2256 | <int key="objectID">348</int> | |
|
2257 | <reference key="object" ref="507821607"/> | |
|
2258 | <object class="NSMutableArray" key="children"> | |
|
2259 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2260 | <reference ref="698887838"/> | |
|
2261 | </object> | |
|
2262 | <reference key="parent" ref="789758025"/> | |
|
2263 | </object> | |
|
2264 | <object class="IBObjectRecord"> | |
|
2265 | <int key="objectID">349</int> | |
|
2266 | <reference key="object" ref="698887838"/> | |
|
2267 | <object class="NSMutableArray" key="children"> | |
|
2268 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2269 | <reference ref="605118523"/> | |
|
2270 | <reference ref="197661976"/> | |
|
2271 | <reference ref="708854459"/> | |
|
2272 | </object> | |
|
2273 | <reference key="parent" ref="507821607"/> | |
|
2274 | </object> | |
|
2275 | <object class="IBObjectRecord"> | |
|
2276 | <int key="objectID">350</int> | |
|
2277 | <reference key="object" ref="605118523"/> | |
|
2278 | <reference key="parent" ref="698887838"/> | |
|
2279 | </object> | |
|
2280 | <object class="IBObjectRecord"> | |
|
2281 | <int key="objectID">351</int> | |
|
2282 | <reference key="object" ref="197661976"/> | |
|
2283 | <reference key="parent" ref="698887838"/> | |
|
2284 | </object> | |
|
2285 | <object class="IBObjectRecord"> | |
|
2286 | <int key="objectID">354</int> | |
|
2287 | <reference key="object" ref="708854459"/> | |
|
2288 | <reference key="parent" ref="698887838"/> | |
|
2289 | </object> | |
|
2290 | <object class="IBObjectRecord"> | |
|
2291 | <int key="objectID">371</int> | |
|
2292 | <reference key="object" ref="972006081"/> | |
|
2293 | <object class="NSMutableArray" key="children"> | |
|
2294 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2295 | <reference ref="439893737"/> | |
|
2296 | </object> | |
|
2297 | <reference key="parent" ref="1049"/> | |
|
2298 | </object> | |
|
2299 | <object class="IBObjectRecord"> | |
|
2300 | <int key="objectID">372</int> | |
|
2301 | <reference key="object" ref="439893737"/> | |
|
2302 | <object class="NSMutableArray" key="children"> | |
|
2303 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2304 | <reference ref="741760375"/> | |
|
2305 | <reference ref="74807016"/> | |
|
2306 | </object> | |
|
2307 | <reference key="parent" ref="972006081"/> | |
|
2308 | </object> | |
|
2309 | <object class="IBObjectRecord"> | |
|
2310 | <int key="objectID">373</int> | |
|
2311 | <reference key="object" ref="610635028"/> | |
|
2312 | <reference key="parent" ref="1049"/> | |
|
2313 | <reference key="objectName" ref="982950837"/> | |
|
2314 | </object> | |
|
2315 | <object class="IBObjectRecord"> | |
|
2316 | <int key="objectID">385</int> | |
|
2317 | <reference key="object" ref="808393665"/> | |
|
2318 | <reference key="parent" ref="1049"/> | |
|
2319 | <string key="objectName">User Namespace Controller</string> | |
|
2320 | </object> | |
|
2321 | <object class="IBObjectRecord"> | |
|
2322 | <int key="objectID">421</int> | |
|
2323 | <reference key="object" ref="741760375"/> | |
|
2324 | <object class="NSMutableArray" key="children"> | |
|
2325 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2326 | <reference ref="554641139"/> | |
|
2327 | <reference ref="764100755"/> | |
|
2328 | </object> | |
|
2329 | <reference key="parent" ref="439893737"/> | |
|
2330 | </object> | |
|
2331 | <object class="IBObjectRecord"> | |
|
2332 | <int key="objectID">420</int> | |
|
2333 | <reference key="object" ref="554641139"/> | |
|
2334 | <object class="NSMutableArray" key="children"> | |
|
2335 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2336 | <reference ref="188193463"/> | |
|
2337 | </object> | |
|
2338 | <reference key="parent" ref="741760375"/> | |
|
2339 | </object> | |
|
2340 | <object class="IBObjectRecord"> | |
|
2341 | <int key="objectID">416</int> | |
|
2342 | <reference key="object" ref="188193463"/> | |
|
2343 | <object class="NSMutableArray" key="children"> | |
|
2344 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2345 | <reference ref="418410897"/> | |
|
2346 | <reference ref="936733673"/> | |
|
2347 | <reference ref="163417131"/> | |
|
2348 | </object> | |
|
2349 | <reference key="parent" ref="554641139"/> | |
|
2350 | </object> | |
|
2351 | <object class="IBObjectRecord"> | |
|
2352 | <int key="objectID">417</int> | |
|
2353 | <reference key="object" ref="418410897"/> | |
|
2354 | <reference key="parent" ref="188193463"/> | |
|
2355 | </object> | |
|
2356 | <object class="IBObjectRecord"> | |
|
2357 | <int key="objectID">418</int> | |
|
2358 | <reference key="object" ref="936733673"/> | |
|
2359 | <reference key="parent" ref="188193463"/> | |
|
2360 | </object> | |
|
2361 | <object class="IBObjectRecord"> | |
|
2362 | <int key="objectID">419</int> | |
|
2363 | <reference key="object" ref="163417131"/> | |
|
2364 | <reference key="parent" ref="188193463"/> | |
|
2365 | </object> | |
|
2366 | <object class="IBObjectRecord"> | |
|
2367 | <int key="objectID">406</int> | |
|
2368 | <reference key="object" ref="764100755"/> | |
|
2369 | <object class="NSMutableArray" key="children"> | |
|
2370 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2371 | <reference ref="516244966"/> | |
|
2372 | </object> | |
|
2373 | <reference key="parent" ref="741760375"/> | |
|
2374 | </object> | |
|
2375 | <object class="IBObjectRecord"> | |
|
2376 | <int key="objectID">407</int> | |
|
2377 | <reference key="object" ref="516244966"/> | |
|
2378 | <object class="NSMutableArray" key="children"> | |
|
2379 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2380 | <reference ref="23853726"/> | |
|
2381 | <reference ref="47103270"/> | |
|
2382 | <reference ref="512953560"/> | |
|
2383 | <reference ref="1048357090"/> | |
|
2384 | </object> | |
|
2385 | <reference key="parent" ref="764100755"/> | |
|
2386 | </object> | |
|
2387 | <object class="IBObjectRecord"> | |
|
2388 | <int key="objectID">411</int> | |
|
2389 | <reference key="object" ref="23853726"/> | |
|
2390 | <object class="NSMutableArray" key="children"> | |
|
2391 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2392 | <reference ref="857054683"/> | |
|
2393 | <reference ref="920426212"/> | |
|
2394 | </object> | |
|
2395 | <reference key="parent" ref="516244966"/> | |
|
2396 | </object> | |
|
2397 | <object class="IBObjectRecord"> | |
|
2398 | <int key="objectID">410</int> | |
|
2399 | <reference key="object" ref="47103270"/> | |
|
2400 | <reference key="parent" ref="516244966"/> | |
|
2401 | </object> | |
|
2402 | <object class="IBObjectRecord"> | |
|
2403 | <int key="objectID">409</int> | |
|
2404 | <reference key="object" ref="512953560"/> | |
|
2405 | <reference key="parent" ref="516244966"/> | |
|
2406 | </object> | |
|
2407 | <object class="IBObjectRecord"> | |
|
2408 | <int key="objectID">408</int> | |
|
2409 | <reference key="object" ref="1048357090"/> | |
|
2410 | <reference key="parent" ref="516244966"/> | |
|
2411 | </object> | |
|
2412 | <object class="IBObjectRecord"> | |
|
2413 | <int key="objectID">413</int> | |
|
2414 | <reference key="object" ref="857054683"/> | |
|
2415 | <object class="NSMutableArray" key="children"> | |
|
2416 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2417 | <reference ref="377147224"/> | |
|
2418 | </object> | |
|
2419 | <reference key="parent" ref="23853726"/> | |
|
2420 | </object> | |
|
2421 | <object class="IBObjectRecord"> | |
|
2422 | <int key="objectID">412</int> | |
|
2423 | <reference key="object" ref="920426212"/> | |
|
2424 | <object class="NSMutableArray" key="children"> | |
|
2425 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2426 | <reference ref="525071236"/> | |
|
2427 | </object> | |
|
2428 | <reference key="parent" ref="23853726"/> | |
|
2429 | </object> | |
|
2430 | <object class="IBObjectRecord"> | |
|
2431 | <int key="objectID">415</int> | |
|
2432 | <reference key="object" ref="525071236"/> | |
|
2433 | <reference key="parent" ref="920426212"/> | |
|
2434 | </object> | |
|
2435 | <object class="IBObjectRecord"> | |
|
2436 | <int key="objectID">414</int> | |
|
2437 | <reference key="object" ref="377147224"/> | |
|
2438 | <reference key="parent" ref="857054683"/> | |
|
2439 | </object> | |
|
2440 | <object class="IBObjectRecord"> | |
|
2441 | <int key="objectID">422</int> | |
|
2442 | <reference key="object" ref="631572152"/> | |
|
2443 | <reference key="parent" ref="1049"/> | |
|
2444 | </object> | |
|
2445 | <object class="IBObjectRecord"> | |
|
2446 | <int key="objectID">436</int> | |
|
2447 | <reference key="object" ref="74807016"/> | |
|
2448 | <reference key="parent" ref="439893737"/> | |
|
2449 | </object> | |
|
2450 | </object> | |
|
2451 | </object> | |
|
2452 | <object class="NSMutableDictionary" key="flattenedProperties"> | |
|
2453 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2454 | <object class="NSMutableArray" key="dict.sortedKeys"> | |
|
2455 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2456 | <string>-1.IBPluginDependency</string> | |
|
2457 | <string>-2.IBPluginDependency</string> | |
|
2458 | <string>-3.IBPluginDependency</string> | |
|
2459 | <string>103.IBPluginDependency</string> | |
|
2460 | <string>103.ImportedFromIB2</string> | |
|
2461 | <string>106.IBPluginDependency</string> | |
|
2462 | <string>106.ImportedFromIB2</string> | |
|
2463 | <string>106.editorWindowContentRectSynchronizationRect</string> | |
|
2464 | <string>111.IBPluginDependency</string> | |
|
2465 | <string>111.ImportedFromIB2</string> | |
|
2466 | <string>112.IBPluginDependency</string> | |
|
2467 | <string>112.ImportedFromIB2</string> | |
|
2468 | <string>124.IBPluginDependency</string> | |
|
2469 | <string>124.ImportedFromIB2</string> | |
|
2470 | <string>125.IBPluginDependency</string> | |
|
2471 | <string>125.ImportedFromIB2</string> | |
|
2472 | <string>125.editorWindowContentRectSynchronizationRect</string> | |
|
2473 | <string>126.IBPluginDependency</string> | |
|
2474 | <string>126.ImportedFromIB2</string> | |
|
2475 | <string>129.IBPluginDependency</string> | |
|
2476 | <string>129.ImportedFromIB2</string> | |
|
2477 | <string>130.IBPluginDependency</string> | |
|
2478 | <string>130.ImportedFromIB2</string> | |
|
2479 | <string>130.editorWindowContentRectSynchronizationRect</string> | |
|
2480 | <string>131.IBPluginDependency</string> | |
|
2481 | <string>131.ImportedFromIB2</string> | |
|
2482 | <string>134.IBPluginDependency</string> | |
|
2483 | <string>134.ImportedFromIB2</string> | |
|
2484 | <string>136.IBPluginDependency</string> | |
|
2485 | <string>136.ImportedFromIB2</string> | |
|
2486 | <string>143.IBPluginDependency</string> | |
|
2487 | <string>143.ImportedFromIB2</string> | |
|
2488 | <string>144.IBPluginDependency</string> | |
|
2489 | <string>144.ImportedFromIB2</string> | |
|
2490 | <string>145.IBPluginDependency</string> | |
|
2491 | <string>145.ImportedFromIB2</string> | |
|
2492 | <string>149.IBPluginDependency</string> | |
|
2493 | <string>149.ImportedFromIB2</string> | |
|
2494 | <string>150.IBPluginDependency</string> | |
|
2495 | <string>150.ImportedFromIB2</string> | |
|
2496 | <string>19.IBPluginDependency</string> | |
|
2497 | <string>19.ImportedFromIB2</string> | |
|
2498 | <string>195.IBPluginDependency</string> | |
|
2499 | <string>195.ImportedFromIB2</string> | |
|
2500 | <string>196.IBPluginDependency</string> | |
|
2501 | <string>196.ImportedFromIB2</string> | |
|
2502 | <string>197.IBPluginDependency</string> | |
|
2503 | <string>197.ImportedFromIB2</string> | |
|
2504 | <string>198.IBPluginDependency</string> | |
|
2505 | <string>198.ImportedFromIB2</string> | |
|
2506 | <string>199.IBPluginDependency</string> | |
|
2507 | <string>199.ImportedFromIB2</string> | |
|
2508 | <string>200.IBPluginDependency</string> | |
|
2509 | <string>200.ImportedFromIB2</string> | |
|
2510 | <string>200.editorWindowContentRectSynchronizationRect</string> | |
|
2511 | <string>201.IBPluginDependency</string> | |
|
2512 | <string>201.ImportedFromIB2</string> | |
|
2513 | <string>202.IBPluginDependency</string> | |
|
2514 | <string>202.ImportedFromIB2</string> | |
|
2515 | <string>203.IBPluginDependency</string> | |
|
2516 | <string>203.ImportedFromIB2</string> | |
|
2517 | <string>204.IBPluginDependency</string> | |
|
2518 | <string>204.ImportedFromIB2</string> | |
|
2519 | <string>205.IBPluginDependency</string> | |
|
2520 | <string>205.ImportedFromIB2</string> | |
|
2521 | <string>205.editorWindowContentRectSynchronizationRect</string> | |
|
2522 | <string>206.IBPluginDependency</string> | |
|
2523 | <string>206.ImportedFromIB2</string> | |
|
2524 | <string>207.IBPluginDependency</string> | |
|
2525 | <string>207.ImportedFromIB2</string> | |
|
2526 | <string>208.IBPluginDependency</string> | |
|
2527 | <string>208.ImportedFromIB2</string> | |
|
2528 | <string>209.IBPluginDependency</string> | |
|
2529 | <string>209.ImportedFromIB2</string> | |
|
2530 | <string>210.IBPluginDependency</string> | |
|
2531 | <string>210.ImportedFromIB2</string> | |
|
2532 | <string>211.IBPluginDependency</string> | |
|
2533 | <string>211.ImportedFromIB2</string> | |
|
2534 | <string>212.IBPluginDependency</string> | |
|
2535 | <string>212.ImportedFromIB2</string> | |
|
2536 | <string>212.editorWindowContentRectSynchronizationRect</string> | |
|
2537 | <string>213.IBPluginDependency</string> | |
|
2538 | <string>213.ImportedFromIB2</string> | |
|
2539 | <string>214.IBPluginDependency</string> | |
|
2540 | <string>214.ImportedFromIB2</string> | |
|
2541 | <string>215.IBPluginDependency</string> | |
|
2542 | <string>215.ImportedFromIB2</string> | |
|
2543 | <string>216.IBPluginDependency</string> | |
|
2544 | <string>216.ImportedFromIB2</string> | |
|
2545 | <string>217.IBPluginDependency</string> | |
|
2546 | <string>217.ImportedFromIB2</string> | |
|
2547 | <string>218.IBPluginDependency</string> | |
|
2548 | <string>218.ImportedFromIB2</string> | |
|
2549 | <string>219.IBPluginDependency</string> | |
|
2550 | <string>219.ImportedFromIB2</string> | |
|
2551 | <string>220.IBPluginDependency</string> | |
|
2552 | <string>220.ImportedFromIB2</string> | |
|
2553 | <string>220.editorWindowContentRectSynchronizationRect</string> | |
|
2554 | <string>221.IBPluginDependency</string> | |
|
2555 | <string>221.ImportedFromIB2</string> | |
|
2556 | <string>23.IBPluginDependency</string> | |
|
2557 | <string>23.ImportedFromIB2</string> | |
|
2558 | <string>236.IBPluginDependency</string> | |
|
2559 | <string>236.ImportedFromIB2</string> | |
|
2560 | <string>239.IBPluginDependency</string> | |
|
2561 | <string>239.ImportedFromIB2</string> | |
|
2562 | <string>24.IBPluginDependency</string> | |
|
2563 | <string>24.ImportedFromIB2</string> | |
|
2564 | <string>24.editorWindowContentRectSynchronizationRect</string> | |
|
2565 | <string>29.IBPluginDependency</string> | |
|
2566 | <string>29.ImportedFromIB2</string> | |
|
2567 | <string>29.WindowOrigin</string> | |
|
2568 | <string>29.editorWindowContentRectSynchronizationRect</string> | |
|
2569 | <string>295.IBPluginDependency</string> | |
|
2570 | <string>296.IBPluginDependency</string> | |
|
2571 | <string>296.editorWindowContentRectSynchronizationRect</string> | |
|
2572 | <string>297.IBPluginDependency</string> | |
|
2573 | <string>298.IBPluginDependency</string> | |
|
2574 | <string>299.IBPluginDependency</string> | |
|
2575 | <string>300.IBPluginDependency</string> | |
|
2576 | <string>300.editorWindowContentRectSynchronizationRect</string> | |
|
2577 | <string>344.IBPluginDependency</string> | |
|
2578 | <string>345.IBPluginDependency</string> | |
|
2579 | <string>346.IBPluginDependency</string> | |
|
2580 | <string>346.ImportedFromIB2</string> | |
|
2581 | <string>348.IBPluginDependency</string> | |
|
2582 | <string>348.ImportedFromIB2</string> | |
|
2583 | <string>349.IBPluginDependency</string> | |
|
2584 | <string>349.ImportedFromIB2</string> | |
|
2585 | <string>349.editorWindowContentRectSynchronizationRect</string> | |
|
2586 | <string>350.IBPluginDependency</string> | |
|
2587 | <string>350.ImportedFromIB2</string> | |
|
2588 | <string>351.IBPluginDependency</string> | |
|
2589 | <string>351.ImportedFromIB2</string> | |
|
2590 | <string>354.IBPluginDependency</string> | |
|
2591 | <string>354.ImportedFromIB2</string> | |
|
2592 | <string>371.IBPluginDependency</string> | |
|
2593 | <string>371.IBViewEditorWindowController.showingLayoutRectangles</string> | |
|
2594 | <string>371.IBWindowTemplateEditedContentRect</string> | |
|
2595 | <string>371.NSWindowTemplate.visibleAtLaunch</string> | |
|
2596 | <string>371.editorWindowContentRectSynchronizationRect</string> | |
|
2597 | <string>372.IBPluginDependency</string> | |
|
2598 | <string>373.IBPluginDependency</string> | |
|
2599 | <string>385.IBPluginDependency</string> | |
|
2600 | <string>407.IBPluginDependency</string> | |
|
2601 | <string>409.IBPluginDependency</string> | |
|
2602 | <string>410.IBPluginDependency</string> | |
|
2603 | <string>411.IBPluginDependency</string> | |
|
2604 | <string>412.IBPluginDependency</string> | |
|
2605 | <string>413.IBPluginDependency</string> | |
|
2606 | <string>414.IBPluginDependency</string> | |
|
2607 | <string>415.IBPluginDependency</string> | |
|
2608 | <string>416.IBPluginDependency</string> | |
|
2609 | <string>417.IBPluginDependency</string> | |
|
2610 | <string>418.IBPluginDependency</string> | |
|
2611 | <string>419.IBAttributePlaceholdersKey</string> | |
|
2612 | <string>419.IBPluginDependency</string> | |
|
2613 | <string>422.IBPluginDependency</string> | |
|
2614 | <string>436.IBPluginDependency</string> | |
|
2615 | <string>5.IBPluginDependency</string> | |
|
2616 | <string>5.ImportedFromIB2</string> | |
|
2617 | <string>56.IBPluginDependency</string> | |
|
2618 | <string>56.ImportedFromIB2</string> | |
|
2619 | <string>57.IBPluginDependency</string> | |
|
2620 | <string>57.ImportedFromIB2</string> | |
|
2621 | <string>57.editorWindowContentRectSynchronizationRect</string> | |
|
2622 | <string>58.IBPluginDependency</string> | |
|
2623 | <string>58.ImportedFromIB2</string> | |
|
2624 | <string>72.IBPluginDependency</string> | |
|
2625 | <string>72.ImportedFromIB2</string> | |
|
2626 | <string>73.IBPluginDependency</string> | |
|
2627 | <string>73.ImportedFromIB2</string> | |
|
2628 | <string>74.IBPluginDependency</string> | |
|
2629 | <string>74.ImportedFromIB2</string> | |
|
2630 | <string>75.IBPluginDependency</string> | |
|
2631 | <string>75.ImportedFromIB2</string> | |
|
2632 | <string>77.IBPluginDependency</string> | |
|
2633 | <string>77.ImportedFromIB2</string> | |
|
2634 | <string>78.IBPluginDependency</string> | |
|
2635 | <string>78.ImportedFromIB2</string> | |
|
2636 | <string>79.IBPluginDependency</string> | |
|
2637 | <string>79.ImportedFromIB2</string> | |
|
2638 | <string>80.IBPluginDependency</string> | |
|
2639 | <string>80.ImportedFromIB2</string> | |
|
2640 | <string>81.IBPluginDependency</string> | |
|
2641 | <string>81.ImportedFromIB2</string> | |
|
2642 | <string>81.editorWindowContentRectSynchronizationRect</string> | |
|
2643 | <string>82.IBPluginDependency</string> | |
|
2644 | <string>82.ImportedFromIB2</string> | |
|
2645 | <string>83.IBPluginDependency</string> | |
|
2646 | <string>83.ImportedFromIB2</string> | |
|
2647 | <string>92.IBPluginDependency</string> | |
|
2648 | <string>92.ImportedFromIB2</string> | |
|
2649 | </object> | |
|
2650 | <object class="NSMutableArray" key="dict.values"> | |
|
2651 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2652 | <reference ref="113577022"/> | |
|
2653 | <reference ref="885801228"/> | |
|
2654 | <reference ref="885801228"/> | |
|
2655 | <reference ref="113577022"/> | |
|
2656 | <reference ref="9"/> | |
|
2657 | <reference ref="113577022"/> | |
|
2658 | <reference ref="9"/> | |
|
2659 | <string>{{596, 852}, {216, 23}}</string> | |
|
2660 | <reference ref="113577022"/> | |
|
2661 | <reference ref="9"/> | |
|
2662 | <reference ref="113577022"/> | |
|
2663 | <reference ref="9"/> | |
|
2664 | <reference ref="113577022"/> | |
|
2665 | <reference ref="9"/> | |
|
2666 | <reference ref="113577022"/> | |
|
2667 | <reference ref="9"/> | |
|
2668 | <string>{{522, 812}, {146, 23}}</string> | |
|
2669 | <reference ref="113577022"/> | |
|
2670 | <reference ref="9"/> | |
|
2671 | <reference ref="113577022"/> | |
|
2672 | <reference ref="9"/> | |
|
2673 | <reference ref="113577022"/> | |
|
2674 | <reference ref="9"/> | |
|
2675 | <string>{{436, 809}, {64, 6}}</string> | |
|
2676 | <reference ref="113577022"/> | |
|
2677 | <reference ref="9"/> | |
|
2678 | <reference ref="113577022"/> | |
|
2679 | <reference ref="9"/> | |
|
2680 | <reference ref="113577022"/> | |
|
2681 | <reference ref="9"/> | |
|
2682 | <reference ref="113577022"/> | |
|
2683 | <reference ref="9"/> | |
|
2684 | <reference ref="113577022"/> | |
|
2685 | <reference ref="9"/> | |
|
2686 | <reference ref="113577022"/> | |
|
2687 | <reference ref="9"/> | |
|
2688 | <reference ref="113577022"/> | |
|
2689 | <reference ref="9"/> | |
|
2690 | <reference ref="113577022"/> | |
|
2691 | <reference ref="9"/> | |
|
2692 | <reference ref="113577022"/> | |
|
2693 | <reference ref="9"/> | |
|
2694 | <reference ref="113577022"/> | |
|
2695 | <reference ref="9"/> | |
|
2696 | <reference ref="113577022"/> | |
|
2697 | <reference ref="9"/> | |
|
2698 | <reference ref="113577022"/> | |
|
2699 | <reference ref="9"/> | |
|
2700 | <reference ref="113577022"/> | |
|
2701 | <reference ref="9"/> | |
|
2702 | <reference ref="113577022"/> | |
|
2703 | <reference ref="9"/> | |
|
2704 | <reference ref="113577022"/> | |
|
2705 | <reference ref="9"/> | |
|
2706 | <string>{{608, 612}, {275, 83}}</string> | |
|
2707 | <reference ref="113577022"/> | |
|
2708 | <reference ref="9"/> | |
|
2709 | <reference ref="113577022"/> | |
|
2710 | <reference ref="9"/> | |
|
2711 | <reference ref="113577022"/> | |
|
2712 | <reference ref="9"/> | |
|
2713 | <reference ref="113577022"/> | |
|
2714 | <reference ref="9"/> | |
|
2715 | <reference ref="113577022"/> | |
|
2716 | <reference ref="9"/> | |
|
2717 | <string>{{365, 632}, {243, 243}}</string> | |
|
2718 | <reference ref="113577022"/> | |
|
2719 | <reference ref="9"/> | |
|
2720 | <reference ref="113577022"/> | |
|
2721 | <reference ref="9"/> | |
|
2722 | <reference ref="113577022"/> | |
|
2723 | <reference ref="9"/> | |
|
2724 | <reference ref="113577022"/> | |
|
2725 | <reference ref="9"/> | |
|
2726 | <reference ref="113577022"/> | |
|
2727 | <reference ref="9"/> | |
|
2728 | <reference ref="113577022"/> | |
|
2729 | <reference ref="9"/> | |
|
2730 | <reference ref="113577022"/> | |
|
2731 | <reference ref="9"/> | |
|
2732 | <string>{{608, 612}, {167, 43}}</string> | |
|
2733 | <reference ref="113577022"/> | |
|
2734 | <reference ref="9"/> | |
|
2735 | <reference ref="113577022"/> | |
|
2736 | <reference ref="9"/> | |
|
2737 | <reference ref="113577022"/> | |
|
2738 | <reference ref="9"/> | |
|
2739 | <reference ref="113577022"/> | |
|
2740 | <reference ref="9"/> | |
|
2741 | <reference ref="113577022"/> | |
|
2742 | <reference ref="9"/> | |
|
2743 | <reference ref="113577022"/> | |
|
2744 | <reference ref="9"/> | |
|
2745 | <reference ref="113577022"/> | |
|
2746 | <reference ref="9"/> | |
|
2747 | <reference ref="113577022"/> | |
|
2748 | <reference ref="9"/> | |
|
2749 | <string>{{608, 612}, {241, 103}}</string> | |
|
2750 | <reference ref="113577022"/> | |
|
2751 | <reference ref="9"/> | |
|
2752 | <reference ref="113577022"/> | |
|
2753 | <reference ref="9"/> | |
|
2754 | <reference ref="113577022"/> | |
|
2755 | <reference ref="9"/> | |
|
2756 | <reference ref="113577022"/> | |
|
2757 | <reference ref="9"/> | |
|
2758 | <reference ref="113577022"/> | |
|
2759 | <reference ref="9"/> | |
|
2760 | <string>{{525, 802}, {197, 73}}</string> | |
|
2761 | <reference ref="113577022"/> | |
|
2762 | <reference ref="9"/> | |
|
2763 | <string>{74, 862}</string> | |
|
2764 | <string>{{11, 736}, {489, 20}}</string> | |
|
2765 | <reference ref="113577022"/> | |
|
2766 | <reference ref="113577022"/> | |
|
2767 | <string>{{475, 832}, {234, 43}}</string> | |
|
2768 | <reference ref="113577022"/> | |
|
2769 | <reference ref="113577022"/> | |
|
2770 | <reference ref="113577022"/> | |
|
2771 | <reference ref="113577022"/> | |
|
2772 | <string>{{409, 832}, {176, 43}}</string> | |
|
2773 | <reference ref="113577022"/> | |
|
2774 | <reference ref="113577022"/> | |
|
2775 | <reference ref="113577022"/> | |
|
2776 | <reference ref="9"/> | |
|
2777 | <reference ref="113577022"/> | |
|
2778 | <reference ref="9"/> | |
|
2779 | <reference ref="113577022"/> | |
|
2780 | <reference ref="9"/> | |
|
2781 | <string>{{608, 612}, {215, 63}}</string> | |
|
2782 | <reference ref="113577022"/> | |
|
2783 | <reference ref="9"/> | |
|
2784 | <reference ref="113577022"/> | |
|
2785 | <reference ref="9"/> | |
|
2786 | <reference ref="113577022"/> | |
|
2787 | <reference ref="9"/> | |
|
2788 | <reference ref="113577022"/> | |
|
2789 | <integer value="0"/> | |
|
2790 | <string>{{108, 368}, {725, 337}}</string> | |
|
2791 | <reference ref="9"/> | |
|
2792 | <string>{{108, 368}, {725, 337}}</string> | |
|
2793 | <reference ref="113577022"/> | |
|
2794 | <reference ref="113577022"/> | |
|
2795 | <reference ref="113577022"/> | |
|
2796 | <reference ref="113577022"/> | |
|
2797 | <reference ref="113577022"/> | |
|
2798 | <reference ref="113577022"/> | |
|
2799 | <reference ref="113577022"/> | |
|
2800 | <reference ref="113577022"/> | |
|
2801 | <reference ref="113577022"/> | |
|
2802 | <reference ref="113577022"/> | |
|
2803 | <reference ref="113577022"/> | |
|
2804 | <reference ref="113577022"/> | |
|
2805 | <reference ref="113577022"/> | |
|
2806 | <reference ref="113577022"/> | |
|
2807 | <object class="NSMutableDictionary"> | |
|
2808 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2809 | <object class="NSArray" key="dict.sortedKeys"> | |
|
2810 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2811 | </object> | |
|
2812 | <object class="NSMutableArray" key="dict.values"> | |
|
2813 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2814 | </object> | |
|
2815 | </object> | |
|
2816 | <reference ref="113577022"/> | |
|
2817 | <reference ref="113577022"/> | |
|
2818 | <reference ref="113577022"/> | |
|
2819 | <reference ref="113577022"/> | |
|
2820 | <reference ref="9"/> | |
|
2821 | <reference ref="113577022"/> | |
|
2822 | <reference ref="9"/> | |
|
2823 | <reference ref="113577022"/> | |
|
2824 | <reference ref="9"/> | |
|
2825 | <string>{{23, 794}, {245, 183}}</string> | |
|
2826 | <reference ref="113577022"/> | |
|
2827 | <reference ref="9"/> | |
|
2828 | <reference ref="113577022"/> | |
|
2829 | <reference ref="9"/> | |
|
2830 | <reference ref="113577022"/> | |
|
2831 | <reference ref="9"/> | |
|
2832 | <reference ref="113577022"/> | |
|
2833 | <reference ref="9"/> | |
|
2834 | <reference ref="113577022"/> | |
|
2835 | <reference ref="9"/> | |
|
2836 | <reference ref="113577022"/> | |
|
2837 | <reference ref="9"/> | |
|
2838 | <reference ref="113577022"/> | |
|
2839 | <reference ref="9"/> | |
|
2840 | <reference ref="113577022"/> | |
|
2841 | <reference ref="9"/> | |
|
2842 | <reference ref="113577022"/> | |
|
2843 | <reference ref="9"/> | |
|
2844 | <reference ref="113577022"/> | |
|
2845 | <reference ref="9"/> | |
|
2846 | <string>{{323, 672}, {199, 203}}</string> | |
|
2847 | <reference ref="113577022"/> | |
|
2848 | <reference ref="9"/> | |
|
2849 | <reference ref="113577022"/> | |
|
2850 | <reference ref="9"/> | |
|
2851 | <reference ref="113577022"/> | |
|
2852 | <reference ref="9"/> | |
|
2853 | </object> | |
|
2854 | </object> | |
|
2855 | <object class="NSMutableDictionary" key="unlocalizedProperties"> | |
|
2856 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2857 | <object class="NSArray" key="dict.sortedKeys"> | |
|
2858 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2859 | </object> | |
|
2860 | <object class="NSMutableArray" key="dict.values"> | |
|
2861 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2862 | </object> | |
|
2863 | </object> | |
|
2864 | <nil key="activeLocalization"/> | |
|
2865 | <object class="NSMutableDictionary" key="localizations"> | |
|
2866 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2867 | <object class="NSArray" key="dict.sortedKeys"> | |
|
2868 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2869 | </object> | |
|
2870 | <object class="NSMutableArray" key="dict.values"> | |
|
2871 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2872 | </object> | |
|
2873 | </object> | |
|
2874 | <nil key="sourceID"/> | |
|
2875 | <int key="maxID">445</int> | |
|
2876 | </object> | |
|
2877 | <object class="IBClassDescriber" key="IBDocument.Classes"> | |
|
2878 | <object class="NSMutableArray" key="referencedPartialClassDescriptions"> | |
|
2879 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2880 | <object class="IBPartialClassDescription"> | |
|
2881 | <string key="className">IPython1SandboxAppDelegate</string> | |
|
2882 | <string key="superclassName">NSObject</string> | |
|
2883 | <object class="NSMutableDictionary" key="actions"> | |
|
2884 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2885 | <object class="NSArray" key="dict.sortedKeys"> | |
|
2886 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2887 | </object> | |
|
2888 | <object class="NSMutableArray" key="dict.values"> | |
|
2889 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2890 | </object> | |
|
2891 | </object> | |
|
2892 | <object class="NSMutableDictionary" key="outlets"> | |
|
2893 | <string key="NS.key.0">ipythonController</string> | |
|
2894 | <string key="NS.object.0">id</string> | |
|
2895 | </object> | |
|
2896 | <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
|
2897 | <string key="majorKey">IBProjectSource</string> | |
|
2898 | <string key="minorKey">IPython1SandboxAppDelegate.py</string> | |
|
2899 | </object> | |
|
2900 | </object> | |
|
2901 | <object class="IBPartialClassDescription"> | |
|
2902 | <reference key="className" ref="695797635"/> | |
|
2903 | <nil key="superclassName"/> | |
|
2904 | <object class="NSMutableDictionary" key="actions"> | |
|
2905 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2906 | <object class="NSArray" key="dict.sortedKeys"> | |
|
2907 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2908 | </object> | |
|
2909 | <object class="NSMutableArray" key="dict.values"> | |
|
2910 | <bool key="EncodedWithXMLCoder">YES</bool> | |
|
2911 | </object> | |
|
2912 | </object> | |
|
2913 | <object class="NSMutableDictionary" key="outlets"> | |
|
2914 | <reference key="NS.key.0" ref="684042788"/> | |
|
2915 | <string key="NS.object.0">NSTextView</string> | |
|
2916 | </object> | |
|
2917 | <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
|
2918 | <string key="majorKey">IBUserSource</string> | |
|
2919 | <reference key="minorKey" ref="255189770"/> | |
|
2920 | </object> | |
|
2921 | </object> | |
|
2922 | </object> | |
|
2923 | </object> | |
|
2924 | <int key="IBDocument.localizationMode">0</int> | |
|
2925 | <string key="IBDocument.LastKnownRelativeProjectPath">../../IPython1Sandbox.xcodeproj</string> | |
|
2926 | <int key="IBDocument.defaultPropertyAccessControl">3</int> | |
|
2927 | <object class="NSMutableData" key="IBDocument.RunnableNib"> | |
|
2928 | <bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA | |
|
2929 | AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEC/gALAAwAMQA1ADYAPAA9 | |
|
2930 | AEIAWABZAFoAWwALAGgAbQB7AIAAlQCZAKAApAC0ALoAzQDRAOYA+gD7APwA/QD+AP8BAAEBAQIBAwEE | |
|
2931 | AQUBBgEHAQgBCQEKAQsBDwEQARkBIQEmASoBLQExATUBOQE7AT0BTQFSAVUBWgFBAVQBYwFqAWsBbAFv | |
|
2932 | AXQBdQF4AYAAkAGBAYQBhwGIAYkBjgGPAZABkwGYAZkBmwGeAasBrAGtAbEBvAG9Ab4BwQHCAcQBxQHG | |
|
2933 | AdIB0wHbAdwB3wHkAeUB6AHtAfAB/AIAAgcCCwIdAiUCLwIzAlECUgJaAmQCZQJoAm4CbwJyAncCiAKP | |
|
2934 | ApACkwKYApkCnAKmAqcCrAKxArICtwK4ArsCwwLJAsoC0QLWAtcC2gLcAt0C5gLnAvAC8QL1AvYC9wL4 | |
|
2935 | AvkC/wMAAwIDAwMEAwcDFgMYAxsDHAMfAAsDIAMhAyIDJQNXA10DbgNzA3QDdQN6A3sDfAN/A4MDhAOH | |
|
2936 | A4gDjAOQA5cDmwOcA50DngOiA6kDqgOrA6wDsAO3A7sDvAO9A74DwgPJA80DzgPPA9AD1APcA90D3gPf | |
|
2937 | A+MD6wPwA/ED8gPzA/cD/gQCBAMEBAQFBAkEEAQRBBIEEwQXBB4EHwQgBCQEKwQvASkEMAQxBDcEOgQ7 | |
|
2938 | BDwEPwRDBEoESwRMBFAEVwRcBF0EXgRfBGMEagRrBGwEcAR3BHgEeQR9BIQEhQSGBIcEjASTBJQElQSZ | |
|
2939 | BKAEpASlBKYEpwSrBLIEswS0BLUEuQTABMEEwgTGBM0EzgTPBNME2gTbBNwE3QThBOgE6QTqBOsE7wT2 | |
|
2940 | BPcE+AT5BP0FBAUFBQYFBwUMBQ8FEAURBRUFHAUdBR4FIgUpBSoFKwUsBTAFNwU7BTwFPQU+BUMFRgVK | |
|
2941 | BVEFUgVTBVcFXgViBWMFZAVlBWkFcAV1BXYFdwV7BYIFgwWEBYgFjwWQBZEFkgWXBZgFnQWeBaIFqwWs | |
|
2942 | Ba0FrgWyBbkFugW7BbwFwAXHBcgFyQXNBdQF1QXWBeAF9gX8Bf0F/gX/BgMGCwYMBg8GEQYXBhgGGQYc | |
|
2943 | BiMGJAYlBiYGLQYuBi8GNgY3BjgGOQZABkEGQgZDBq0Gtwa4BrkGvgbABskGuAbKBs4GzwbYBrgG2Qbf | |
|
2944 | BuQG5QbvBvgGuAb5BwcHEgcZBxoHGwckBy0GuAcuBzMHNgc3B0AHSQdKB1MGuAdUB2IHaQdqB2sHcgdz | |
|
2945 | B3QHfQeGB48GuAeQB6AHqQeyB7sGuAe8B8QHywfMB9MH1AfcB90H3gfnBrgH6AfvB/gGuAf5B/4IBQgG | |
|
2946 | CA8GuAgQCBUIHga4CB8IJggvCDAIOQa4CDoIPgg/CKkJFAl/CYAJgQmCCYMJhAmFCYYJhwmICYkJigmL | |
|
2947 | CYwJjQmOCY8JkAmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCZ4JnwmgCaEJogmjCaQJpQmmCacJqAmp | |
|
2948 | CaoJqwmsCa0JrgmvCbAJsQmyCbMJtAm1CbYJtwm4CbkJugm7CbwJvQm+Cb8JwAnBCcIJwwnECcUJxgnH | |
|
2949 | CcgJyQnKCcsJzAnNCc4JzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J3gnfCeAJ4QniCeMJ5Anl | |
|
2950 | CeYJ6QnsCoYLIAshCyILIwskCyULJgsnCygLKQsqCysLLAstCy4LLwswCzELMgszCzQLNQs2CzcLOAs5 | |
|
2951 | CzoLOws8Cz0LPgs/C0ALQQtCC0MLRAtFC0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtX | |
|
2952 | C1gLWQtaC1sLXAtdC14LXwtgC2ELYgtjC2QLZQtmC2cLaAtpC2oLawtsC20LbgtvC3ALcQtyC3MLdAt1 | |
|
2953 | C3YLdwt4C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguT | |
|
2954 | C5QLlQuWC5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAux | |
|
2955 | C7ILswu0C7ULtgu3C7oLvQvAVSRudWxs3xASAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwA | |
|
2956 | HQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwVk5TUm9vdFYkY2xhc3NdTlNPYmpl | |
|
2957 | Y3RzS2V5c18QD05TQ2xhc3Nlc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXNdTlNDb25u | |
|
2958 | ZWN0aW9uc1tOU05hbWVzS2V5c1tOU0ZyYW1ld29ya11OU0NsYXNzZXNLZXlzWk5TT2lkc0tleXNdTlNO | |
|
2959 | YW1lc1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNdTlNGb250TWFuYWdlcl8QEE5TVmlz | |
|
2960 | aWJsZVdpbmRvd3NfEA9OU09iamVjdHNWYWx1ZXNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c1lOU05l | |
|
2961 | eHRPaWRcTlNPaWRzVmFsdWVzgAKBAv2BAZuBAmCBAvyArYEB9oAFgQJfgQJhgQH3gQL6gACABoEB9YEC | |
|
2962 | +xEBv4ECYtIADgAyADMANFtOU0NsYXNzTmFtZYAEgANdTlNBcHBsaWNhdGlvbtIANwA4ADkAOlgkY2xh | |
|
2963 | c3Nlc1okY2xhc3NuYW1logA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3RfEBBJQkNvY29hRnJhbWV3 | |
|
2964 | b3Jr0gAOAD4APwBAWk5TLm9iamVjdHOAK6EAQYAH2wBDAA4ARABFAEYARwBIAEkASgBLAEwATQBOAE8A | |
|
2965 | UABRAFIAUwBUAFUAVgArXE5TV2luZG93Vmlld1xOU1NjcmVlblJlY3RfEBNOU0ZyYW1lQXV0b3NhdmVO | |
|
2966 | YW1lXU5TV2luZG93VGl0bGVZTlNXVEZsYWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dSZWN0XxAPTlNX | |
|
2967 | aW5kb3dCYWNraW5nXxARTlNXaW5kb3dTdHlsZU1hc2tbTlNWaWV3Q2xhc3OAC4CsgKqAq4AJEnQAAACA | |
|
2968 | CoAIEAIQD4AAXxAYe3szMzUsIDQxM30sIHs3MjUsIDMzN319XxAQSVB5dGhvbjEgKENvY29hKVhOU1dp | |
|
2969 | bmRvd9cAXAAOAF0AXgBfAFoAYABhAGIAYwBkAGUAYQBnXxAPTlNOZXh0UmVzcG9uZGVyWk5TU3Vidmll | |
|
2970 | d3NYTlN2RmxhZ3NbTlNGcmFtZVNpemVbTlNTdXBlcnZpZXeADIBdgA0RAQCAqIAMgKnSAA4APgBpAGqA | |
|
2971 | NKIAawBsgA6Ao9oAXAAOAG4AXQBeAG8AcABaAGAAcQBNAHMAdAB1AHYAdwBVAGEATQB6V05TRnJhbWVe | |
|
2972 | TlNBdXRvc2F2ZU5hbWVeTlNEaXZpZGVyU3R5bGVcTlNJc1ZlcnRpY2FsgAuAooCggA8RARKAoYAMgAsJ | |
|
2973 | 0gAOAD4AaQB9gDSiAH4Af4AQgGreAFwAgQAOAIIAgwBdAF4AXwCEAFoAhQCGAGAAhwBrAIkAigCLAIwA | |
|
2974 | jQCOAI8AkABhAJIAVQBrAJRZTlNCb3hUeXBlW05TVGl0bGVDZWxsXU5TVHJhbnNwYXJlbnRcTlNCb3Jk | |
|
2975 | ZXJUeXBlWU5TT2Zmc2V0c18QD05TVGl0bGVQb3NpdGlvbl1OU0NvbnRlbnRWaWV3gA4QAIBpgGAIgBEQ | |
|
2976 | FoBeEAGADIBfgA6AEtIADgA+AGkAl4A0oQCUgBLXAFwADgBuAF0AXgBaAGAAfgBiAJwAnQBkAGEAfoAQ | |
|
2977 | gF2AXIATgAyAENIADgA+AGkAooA0oQCjgBTcAFwApQAOAG4ApgBdAF4AWgBgAKcAqACHAJQAqgCrAKwA | |
|
2978 | rQCuAHYAYQCUALEAsgCyW05TSFNjcm9sbGVyWE5Tc0ZsYWdzW05TVlNjcm9sbGVyXU5TTmV4dEtleVZp | |
|
2979 | ZXeAEoBYgFuAWhECEoAVgAyAEoBUgBaAFtIADgA+AGkAtoA0owCyALEAqoAWgFSAWN0AXAAOAG4AuwC8 | |
|
2980 | AL0AXQBeAL4AWgC/AGAAqACjAMEAwgDDAMQAxQDGAMcAyABhAMoAowDIWE5TQm91bmRzWE5TQ3Vyc29y | |
|
2981 | WU5TY3ZGbGFnc1lOU0RvY1ZpZXdZTlNCR0NvbG9ygBSAU4BNgE6AUBAEgBcRCQCAGIAMgE+AFIAY0gAO | |
|
2982 | AD4AaQDPgDShAMiAGN0AXAAOAG4A0gDTANQA1QBeANYAWgDXAGAA2ACyANoA2wDcAN0A3gDfAOAA4QBh | |
|
2983 | AOMAsgArXxAPTlNUZXh0Q29udGFpbmVyWU5TVFZGbGFnc1xOU1NoYXJlZERhdGFbTlNEcmFnVHlwZXNZ | |
|
2984 | TlNNYXhTaXplWE5TTWluaXplWk5TRGVsZWdhdGWAFoBMgCyALRAGgDeAGREJEoBKgAyAS4AWgADSAA4A | |
|
2985 | PgA/AOiAK68QEQDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APmAGoAbgByAHYAegB+AIIAh | |
|
2986 | gCKAI4AkgCWAJoAngCiAKYAqXxAZTmVYVCBSVEZEIHBhc3RlYm9hcmQgdHlwZV8QEk5TU3RyaW5nUGJv | |
|
2987 | YXJkVHlwZV8QGk5lWFQgcnVsZXIgcGFzdGVib2FyZCB0eXBlXxAeTmVYVCBUSUZGIHY0LjAgcGFzdGVi | |
|
2988 | b2FyZCB0eXBlXxAZQXBwbGUgVVJMIHBhc3RlYm9hcmQgdHlwZV8QI0NvcmVQYXN0ZWJvYXJkRmxhdm9y | |
|
2989 | VHlwZSAweDZENkY2Rjc2XxAjQ29yZVBhc3RlYm9hcmRGbGF2b3JUeXBlIDB4NzU3MjZDMjBfEBtXZWJV | |
|
2990 | UkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVfEBlBcHBsZSBQREYgcGFzdGVib2FyZCB0eXBlXxAZQXBwbGUg | |
|
2991 | UE5HIHBhc3RlYm9hcmQgdHlwZV8QGkFwcGxlIEhUTUwgcGFzdGVib2FyZCB0eXBlXxAVTlNGaWxlbmFt | |
|
2992 | ZXNQYm9hcmRUeXBlXxAXTlNDb2xvciBwYXN0ZWJvYXJkIHR5cGVfEDFOZVhUIEVuY2Fwc3VsYXRlZCBQ | |
|
2993 | b3N0U2NyaXB0IHYxLjIgcGFzdGVib2FyZCB0eXBlXxAaQXBwbGUgUElDVCBwYXN0ZWJvYXJkIHR5cGVf | |
|
2994 | EBlOZVhUIGZvbnQgcGFzdGVib2FyZCB0eXBlXxAqTmVYVCBSaWNoIFRleHQgRm9ybWF0IHYxLjAgcGFz | |
|
2995 | dGVib2FyZCB0eXBl0gA3ADgBDAENowENAQ4AO1xOU011dGFibGVTZXRVTlNTZXRfEBR7ezAsIDM4fSwg | |
|
2996 | ezQzMywgMTR9fdUBEQAOARIBEwEUAJABFQDIARcBGFlOU1RDRmxhZ3NaTlNUZXh0Vmlld1dOU1dpZHRo | |
|
2997 | XxAPTlNMYXlvdXRNYW5hZ2VygDaAGCNAexAAAAAAAIAu1QAOARoBGwEcANgBHQEeAR8A3QArXxAQTlNU | |
|
2998 | ZXh0Q29udGFpbmVyc11OU1RleHRTdG9yYWdlWU5TTE1GbGFnc4A1gDOAL4AA0wAOASIA2AEjASQAK1hO | |
|
2999 | U1N0cmluZ4AygDCAANIADgEnASgBKVlOUy5zdHJpbmeAMVDSADcAOAErASyjASwBIgA7XxAPTlNNdXRh | |
|
3000 | YmxlU3RyaW5n0gA3ADgBLgEbpAEbAS8BMAA7XxAZTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZ18QEk5T | |
|
3001 | QXR0cmlidXRlZFN0cmluZ9IADgA+AGkBM4A0oQDcgC3SADcAOAE2ATejATcBOAA7Xk5TTXV0YWJsZUFy | |
|
3002 | cmF5V05TQXJyYXnSADcAOAE6ARSiARQAO9IANwA4ATwA0qIA0gA72AAOAT4BPwFAAUEBQgFDAUQBRQFG | |
|
3003 | ACsBSAFJAUoAKwFMV05TRmxhZ3NfEBdOU0RlZmF1bHRQYXJhZ3JhcGhTdHlsZV8QEE5TSW5zZXJ0aW9u | |
|
3004 | Q29sb3JfEBFOU0JhY2tncm91bmRDb2xvcl8QFE5TU2VsZWN0ZWRBdHRyaWJ1dGVzXxASTlNNYXJrZWRB | |
|
3005 | dHRyaWJ1dGVzXxAQTlNMaW5rQXR0cmlidXRlc4BJEgAFS2+AAIA6gDiAO4AAgEXTAA4BTgFPAVAAVQFR | |
|
3006 | XE5TQ29sb3JTcGFjZVVOU1JHQoA5TxAYMSAwLjk1Mjk0MTI0IDAuODUwOTgwNDYA0gA3ADgBUwFUogFU | |
|
3007 | ADtXTlNDb2xvctMADgFOAVYBUAFYAVlXTlNXaGl0ZYA5EANCMADTAA4BWwA+AVwBXQFgV05TLmtleXOA | |
|
3008 | RKIBXgFfgDyAPaIBYQFigD6AQtUADgFUAU4BZAFlAVABZwDdAWgBaVtOU0NvbG9yTmFtZV1OU0NhdGFs | |
|
3009 | b2dOYW1lgDmAQYBAgD9WU3lzdGVtXxAbc2VsZWN0ZWRUZXh0QmFja2dyb3VuZENvbG9y0wAOAU4BVgFQ | |
|
3010 | AVgBboA5SzAuNjY2NjY2NjkA1QAOAVQBTgFkAWUBUAFIAN0BcgFpgDmAOoBDgD9fEBFzZWxlY3RlZFRl | |
|
3011 | eHRDb2xvctIANwA4AXYBd6IBdwA7XE5TRGljdGlvbmFyedMADgFbAD4BXAF6AX2ARKIBewFfgEaAPaIB | |
|
3012 | fgF/gEeASFtOU1VuZGVybGluZdMADgFOAU8BUACQAYOAOUYwIDAgMQDSADcAOAGFAYaiAYYAO18QFE5T | |
|
3013 | VGV4dFZpZXdTaGFyZWREYXRhXHs0ODAsIDFlKzA3fVd7ODQsIDB90gA3ADgBigESpQESAYsBjAGNADtW | |
|
3014 | TlNUZXh0Vk5TVmlld1tOU1Jlc3BvbmRlcl8QFHt7MSwgMX0sIHs0MzMsIDIzMX19XxAVe3swLCAzOH0s | |
|
3015 | IHs0MzMsIDIzMX190wAOAU4BVgFQAVgBkoA5QjEA0wAOAZQBlQGWAZcAkFlOU0hvdFNwb3RcTlNDdXJz | |
|
3016 | b3JUeXBlgFKAUVd7NCwgLTV90gA3ADgBmgC8ogC8ADvSADcAOAGcAZ2kAZ0BjAGNADtaTlNDbGlwVmll | |
|
3017 | d9kAXAGfAA4AbgBeAFoBoABgAaEAowCjAaQBpQGmAGEBqACjAapYTlNUYXJnZXRYTlNBY3Rpb25ZTlNQ | |
|
3018 | ZXJjZW50gBSAFIBXgFUT/////4AAAQCADIBWgBQjP9Ww0wAAAABfEBV7ezQyNywgMX0sIHsxNSwgMjYz | |
|
3019 | fX1cX2RvU2Nyb2xsZXI60gA3ADgBrgGvpQGvAbABjAGNADtaTlNTY3JvbGxlcllOU0NvbnRyb2zbAFwB | |
|
3020 | nwAOAG4ApgBeAFoBoABgAbIBoQCjAKMBpAG2AJAAZABhAagAowG6AbtaTlNDdXJWYWx1ZYAUgBSAV4BZ | |
|
3021 | gAyAVoAUIz/wAAAAAAAAIz/uQshgAAAAXxAYe3stMTAwLCAtMTAwfSwgezg3LCAxOH19XxAWe3sxOCwg | |
|
3022 | MTR9LCB7NDM1LCAyMzN9fdIANwA4Ab8BwKQBwAGMAY0AO1xOU1Njcm9sbFZpZXdfEBR7ezEsIDF9LCB7 | |
|
3023 | NDcxLCAyNTd9fdIANwA4AcMBjKMBjAGNADtaezQ3MywgMjczfVZ7MCwgMH3XAccADgFBAcgByQHKAcsB | |
|
3024 | zAHNAc4BzwHQAIkB0VtOU0NlbGxGbGFnc1pOU0NvbnRlbnRzWU5TU3VwcG9ydFxOU0NlbGxGbGFnczJb | |
|
3025 | TlNUZXh0Q29sb3ISBAH+AIBogGWAYYBigGdXQ29uc29sZdQADgHUAdUB1gHXAdgB2QHaVk5TU2l6ZVZO | |
|
3026 | U05hbWVYTlNmRmxhZ3OAZCNAJgAAAAAAAIBjEQwcXEx1Y2lkYUdyYW5kZdIANwA4Ad0B3qIB3gA7Vk5T | |
|
3027 | Rm9udNUADgFUAU4BZAFlAVAAygDdAeIBaYA5gE+AZoA/XxATdGV4dEJhY2tncm91bmRDb2xvctMADgFO | |
|
3028 | AVYBUAFYAeeAOU0wIDAuODAwMDAwMDEA0gA3ADgB6QHqpAHqAesB7AA7XxAPTlNUZXh0RmllbGRDZWxs | |
|
3029 | XE5TQWN0aW9uQ2VsbFZOU0NlbGzSADcAOAHuAe+kAe8BjAGNADtVTlNCb3jeAFwAgQAOAIIAbgCDAF0A | |
|
3030 | XgCEAFoAhQCGAGAAhwBrAIkAigHzAfQAjAH2AfcAkABhAJIAVQBrAfuADoBpgJ2AnAiAaxAzgAyAX4AO | |
|
3031 | gGzSAA4APgBpAf6ANKEB+4Bs1wBcAA4AbgBdAF4AWgBgAH8AYgIDAgQAZABhAH+AaoBdgJuAbYAMgGrS | |
|
3032 | AA4APgBpAgmANKECCoBu3xAPAFwApQAOAG4ApgIMAg0AXQIOAF4AWgBgAKcAqACHAfsCEACrAhICEwIU | |
|
3033 | AhUCFgIXAHYAYQH7AhoCGwIbXE5TQ29ybmVyVmlld18QEE5TSGVhZGVyQ2xpcFZpZXdcTlNTY3JvbGxB | |
|
3034 | bXRzgGyAloBbgJoQMoB4gHWAb08QEEEgAABBIAAAQZgAAEGYAACADIBsgJSAcIBw0gAOAD4AaQIfgDSl | |
|
3035 | AhsCGgIQAhUCFIBwgJSAloB1gHjbAFwADgBuAL0AXQBeAL4AWgC/AGAAqAIKAMECKADFAikAxwIqAGEC | |
|
3036 | LAIKAiqAboBTgJOAcYBygAyAhoBugHLSAA4APgBpAjGANKECKoBy3xAVAFwCNAAOAjUCNgFBAjcCDAI4 | |
|
3037 | AjkCOgBeAF8COwBaAjwCPQBgAj4CPwJAAhsAiQJCAkMCRADKAHoCFAJIAMUCSQBkAkoAegBhAk0AkAIb | |
|
3038 | Ak8AVgJQXxAfTlNEcmFnZ2luZ1NvdXJjZU1hc2tGb3JOb25Mb2NhbFlOU1R2RmxhZ3NcTlNIZWFkZXJW | |
|
3039 | aWV3XxASTlNBbGxvd3NUeXBlU2VsZWN0XxAXTlNJbnRlcmNlbGxTcGFjaW5nV2lkdGhfEBlOU0NvbHVt | |
|
3040 | bkF1dG9yZXNpemluZ1N0eWxlXxAYTlNJbnRlcmNlbGxTcGFjaW5nSGVpZ2h0WU5TRW5hYmxlZFtOU0dy | |
|
3041 | aWRDb2xvcl8QD05TR3JpZFN0eWxlTWFza15OU1RhYmxlQ29sdW1uc18QHE5TRHJhZ2dpbmdTb3VyY2VN | |
|
3042 | YXNrRm9yTG9jYWxbTlNSb3dIZWlnaHSAcICSE//////WwAAAgHSATwmAeCNACAAAAAAAACNAAAAAAAAA | |
|
3043 | AIBzCYAMgI+AcIB7I0AxAAAAAAAAWnsxNTYsIDIwMH3XAFwADgBeAF8AWgBgAlMCFQJVAGQCVgBhAhUC | |
|
3044 | KltOU1RhYmxlVmlld4B1gHeAdoAMgHWActsAXAAOAG4AvQBdAF4AvgBaAL8AYACoAgoAwQJdAMUCXgDH | |
|
3045 | AkQAYQIsAgoCRIBugFOAmYCYgHSADICGgG6AdFl7MTU2LCAxN33SADcAOAJmAmekAmcBjAGNADtfEBFO | |
|
3046 | U1RhYmxlSGVhZGVyVmlld9YAXAAOAG4AXgBaAGACCgJqAmsAZABhAgqAboB6gHmADIBuXxAUe3sxNTcs | |
|
3047 | IDB9LCB7MTYsIDE3fX3SADcAOAJwAnGkAnEBjAGNADtdX05TQ29ybmVyVmlld9IADgA+AGkCdIA0ogJ1 | |
|
3048 | AnaAfICL2gJ4AA4CeQETAnoCewJ8An0CfgJTAHoCgAKBAoICgwFYAoQChQB6AipeTlNJc1Jlc2l6ZWFi | |
|
3049 | bGVcTlNIZWFkZXJDZWxsWk5TRGF0YUNlbGxeTlNSZXNpemluZ01hc2taTlNNaW5XaWR0aFpOU01heFdp | |
|
3050 | ZHRoXE5TSXNFZGl0YWJsZQmAioB9I0BRwAAAAAAAgIMjQEQAAAAAAAAjQI9AAAAAAAAJgHLXAccADgFB | |
|
3051 | AcgByQHKAcsCiQKKAosCjAHQAIkCjhIEgf4AgIKAf4B+gGKAgFhWYXJpYWJsZdMADgFOAVYBUAFYApKA | |
|
3052 | OUswLjMzMzMzMjk5ANUADgFUAU4BZAFlAVABSADdApYBaYA5gDqAgYA/XxAPaGVhZGVyVGV4dENvbG9y | |
|
3053 | 0gA3ADgCmgKbpQKbAeoB6wHsADtfEBFOU1RhYmxlSGVhZGVyQ2VsbNgBxwAOAUEByAHJAp0BygHLAp4B | |
|
3054 | zQIsAqECogIqAqQCpV1OU0NvbnRyb2xWaWV3EhQh/kCAaICGgISAhYByEQgAgIhZVGV4dCBDZWxs1AAO | |
|
3055 | AdQB1QHWAdcCqQHZAquAZCNAKgAAAAAAAIBjEQQU1QAOAVQBTgFkAWUBUAFnAN0CrwFpgDmAQYCHgD9f | |
|
3056 | EBZjb250cm9sQmFja2dyb3VuZENvbG9y1QAOAVQBTgFkAWUBUAFIAN0CtQFpgDmAOoCJgD9fEBBjb250 | |
|
3057 | cm9sVGV4dENvbG9y0gA3ADgCuQK6ogK6ADtdTlNUYWJsZUNvbHVtbtoCeAAOAnkBEwJ6AnsCfAJ9An4C | |
|
3058 | UwB6AoACvgK/AsABWAKEAoUAegIqCYCKgIwjQFPAAAAAAACAjgmActcBxwAOAUEByAHJAcoBywKJAooC | |
|
3059 | iwLGAdAAiQKOgIKAf4CNgGKAgFVWYWx1ZdgBxwAOAUEByAHJAp0BygHLAp4BzQIsAqECogIqAqQCpYBo | |
|
3060 | gIaAhICFgHKAiNUADgFUAU4BZAFlAVAC0wDdAtQBaYA5gJGAkIA/WWdyaWRDb2xvctMADgFOAVYBUAFY | |
|
3061 | AtmAOUQwLjUA0gA3ADgC2wJTpQJTAbABjAGNADtfEBV7ezEsIDE3fSwgezE1NiwgMjAwfX3ZAFwBnwAO | |
|
3062 | AG4AXgBaAaAAYAGhAgoCCgGkAuEAZABhAagCCgLlgG6AboBXgJWADIBWgG4jP+/gP4AAAABfEBZ7ezE1 | |
|
3063 | NywgMTd9LCB7MTUsIDIwMH192gBcAZ8ADgBuAKYAXgBaAaAAYAGhAgoCCgGkAusAkABkAGEBqAIKAu+A | |
|
3064 | boBugFeAl4AMgFaAbiM/5vlvoAAAAF8QFXt7MSwgMjE3fSwgezE1NiwgMTV9fdIADgA+AGkC84A0oQJE | |
|
3065 | gHRfEBN7ezEsIDB9LCB7MTU2LCAxN319XxAWe3sxOCwgMTR9LCB7MTczLCAyMzN9fV8QFHt7MSwgMX0s | |
|
3066 | IHsyMDksIDI1N319XxAWe3s0NzQsIDB9LCB7MjExLCAyNzN9fdcBxwAOAUEByAHJAcoBywHMAc0BzgL8 | |
|
3067 | AdAAiQL+gGiAZYCegGKAn1lXb3Jrc3BhY2XTAA4BTgFWAVABWAHngDlfEBZ7ezIwLCA0NH0sIHs2ODUs | |
|
3068 | IDI3M319XxAgaXB5dGhvbjFfY29uc29sZV93b3Jrc3BhY2Vfc3BsaXTSADcAOAMFAwakAwYBjAGNADtb | |
|
3069 | TlNTcGxpdFZpZXfaAFwADgBuAwgDCQBeAFoDCgBgAwsATQMNAw4DDwMQAxEAYQMTAE0DFVpOU01heFZh | |
|
3070 | bHVlWk5TTWluVmFsdWVZTlNwaUZsYWdzXE5TRHJhd01hdHJpeIALgKeApiNAWQAAAAAAACNAMAAAAAAA | |
|
3071 | ABEFIYAMEXEKgAuApNEADgMXgKXSADcAOAMZAxqiAxoAO1pOU1BTTWF0cml4XxAVe3s2ODksIDIwfSwg | |
|
3072 | ezE2LCAxNn190gA3ADgDHQMepAMeAYwBjQA7XxATTlNQcm9ncmVzc0luZGljYXRvclp7NzI1LCAzMzd9 | |
|
3073 | XxAVe3swLCAwfSwgezEyODAsIDc3OH19XxAQaXB5dGhvbjFfc2FuZGJveNIANwA4AyMDJKIDJAA7XxAQ | |
|
3074 | TlNXaW5kb3dUZW1wbGF0ZdIADgA+AGkDJ4A0rxAvAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2 | |
|
3075 | AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNU | |
|
3076 | A1UDVoCugLyAwoDHgM2A04DYgN6A5IDpgO2A84D4gPyBAQKBAQaBAQqBAQ+BAROBARmBAR6BASKBASaB | |
|
3077 | ASuBATCBATWBATqBAT6BAUKBAUeBAU2BAU+BAVOBAVmBAV6BAWKBAWeBAWmBAWuBAXCBAXWBAXmBAX2B | |
|
3078 | AYyBAZCBAZOBAZfTAA4DWANZA1oDWwNcWE5TU291cmNlV05TTGFiZWyAu4CvgLrZAA4DXgNfA2ADYQNi | |
|
3079 | A2MDZANlA2YDZwNoA2kDagNrA2wDbQBVV05TVGl0bGVfEBFOU0tleUVxdWl2TW9kTWFza1pOU0tleUVx | |
|
3080 | dWl2XU5TTW5lbW9uaWNMb2NZTlNPbkltYWdlXE5TTWl4ZWRJbWFnZVZOU01lbnVVTlNUYWeAuYCxEgAQ | |
|
3081 | AACAshJ/////gLOAt4Cw0wAOA14DbwNwA3EDcltOU01lbnVJdGVtc4EBoIEBp4EBqVxTbWFydCBRdW90 | |
|
3082 | ZXNRZ9MADgAyA3YDdwN4A3leTlNSZXNvdXJjZU5hbWWAtoC0gLVXTlNJbWFnZV8QD05TTWVudUNoZWNr | |
|
3083 | bWFya9IANwA4A30DfqIDfgA7XxAQTlNDdXN0b21SZXNvdXJjZdMADgAyA3YDdwN4A4KAtoC0gLhfEBBO | |
|
3084 | U01lbnVNaXhlZFN0YXRl0gA3ADgDhQOGogOGADtaTlNNZW51SXRlbV8QIXRvZ2dsZUF1dG9tYXRpY1F1 | |
|
3085 | b3RlU3Vic3RpdHV0aW9uOtIANwA4A4kDiqMDigOLADtfEBVOU05pYkNvbnRyb2xDb25uZWN0b3JeTlNO | |
|
3086 | aWJDb25uZWN0b3LTAA4DWANZA1oDjgOPgLuAvYDB2AAOA14DXwNgA2EDYgNjA2QDZgOSA2gDkwNqA2sD | |
|
3087 | bAOWgLmAv4DAgLOAt4C+0wAOA14DbwNwA5kDmoEBoIEB0oEB1F8QEUp1bXAgdG8gU2VsZWN0aW9uUWpf | |
|
3088 | EB1jZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhOtMADgNYA1kDWgOgA6GAu4DDgMbZAA4DXgNfA2AD | |
|
3089 | YQNiA2MDZANlA2YDpANoA6UDagNrA2wDbQCQgLmAxIDFgLOAt4CwXxAQU21hcnQgQ29weS9QYXN0ZVFm | |
|
3090 | XxAYdG9nZ2xlU21hcnRJbnNlcnREZWxldGU60wAOA1gDWQNaA64Dr4C7gMiAzNgADgNeA18DYANhA2ID | |
|
3091 | YwNkA2YDsgNoA7MDagNrA2wDtoC5gMqAy4CzgLeAydMADgNeA28DcAO5A7qBAaCBAcCBAcJUU2F2ZVFz | |
|
3092 | XXNhdmVEb2N1bWVudDrTAA4DWANZA1oDwAPBgLuAzoDS2AAOA14DXwNgA2EDYgNjA2QDZgPEA2gDxQNq | |
|
3093 | A2sDbAPIgLmA0IDRgLOAt4DP0wAOA14DbwNwA8sDzIEBoIEBzIEBzlRVbmRvUXpVdW5kbzrTAA4DWANZ | |
|
3094 | A1oD0gPTgLuA1IDX2AAOA14DXwNgA2EDYgNjA2QDZgPWA9cD2ANqA2sDbAPIgLmA1RIAEgAAgNaAs4C3 | |
|
3095 | gM9UUmVkb1FaVXJlZG860wAOA1gDWQNaA+ED4oC7gNmA3dgADgNeA18DYANhA2IDYwNkA2YD5QPmA+cD | |
|
3096 | agNrA2wD6oC5gNsSABgAAIDcgLOAt4Da1AAOA14B1QNvA3AD7QPuA++BAaCBAa6BAb6BAbBbSGlkZSBP | |
|
3097 | dGhlcnNRaF8QFmhpZGVPdGhlckFwcGxpY2F0aW9uczrTAA4DWANZA1oD9QP2gLuA34Dj2AAOA14DXwNg | |
|
3098 | A2EDYgNjA2QDZgP5A9cD+gNqA2sDbAP9gLmA4YDigLOAt4Dg0wAOA14DbwNwBAAEAYEBoIEB4YEB41tT | |
|
3099 | aG93IENvbG9yc1FDXxAVb3JkZXJGcm9udENvbG9yUGFuZWw60wAOA1gDWQNaBAcECIC7gOWA6NgADgNe | |
|
3100 | A18DYANhA2IDYwNkA2YECwNoBAwDagNrA2wDyIC5gOaA54CzgLeAz1VQYXN0ZVF2VnBhc3RlOtMADgNY | |
|
3101 | A1kDWgQVBBaAu4DqgOzZAA4DXgNfA2ADYQNiA2MDZANlA2YEGQNoA6UDagNrA2wDlgCQgLmA64DFgLOA | |
|
3102 | t4C+ZQBGAGkAbgBkICZfEBdwZXJmb3JtRmluZFBhbmVsQWN0aW9uOtMADgNYA1kDWgQiBCOAu4DugPLY | |
|
3103 | AA4DXgNfA2ADYQNiA2MDZANmBCYDaAQnA2oDawNsBCqAuYDwgPGAs4C3gO/TAA4DXgNvA3AELQQugQGg | |
|
3104 | gQGdgQGfXVN0b3AgU3BlYWtpbmddc3RvcFNwZWFraW5nOtQADgQyA1gDWQQzBDQAQQQ2XU5TRGVzdGlu | |
|
3105 | YXRpb26A94D0gAeA9tIADgAyADMEOYAEgPVfEBZJUHl0aG9uQ29jb2FDb250cm9sbGVyWGRlbGVnYXRl | |
|
3106 | 0gA3ADgEPQQ+owQ+A4sAO18QFE5TTmliT3V0bGV0Q29ubmVjdG9y0wAOA1gDWQNaBEEEQoC7gPmA+9gA | |
|
3107 | DgNeA18DYANhA2IDYwNkA2YERQNoBCcDagNrA2wDyIC5gPqA8YCzgLeAz1ZEZWxldGVXZGVsZXRlOtMA | |
|
3108 | DgNYA1kDWgROBE+Au4D9gQEB2AAOA14DXwNgA2EDYgNjA2QDZgRSA2gEUwNqA2sDbARWgLmA/4EBAICz | |
|
3109 | gLeA/tQADgNeAdUDbwNwBFkEWgRbgQGggQHrgQHvgQHtWE1pbmltaXplUW1fEBNwZXJmb3JtTWluaWF0 | |
|
3110 | dXJpemU60wAOA1gDWQNaBGEEYoC7gQEDgQEF2AAOA14DXwNgA2EDYgNjA2QDZgRlA2gEJwNqA2sDbARW | |
|
3111 | gLmBAQSA8YCzgLeA/l8QEkJyaW5nIEFsbCB0byBGcm9udF8QD2FycmFuZ2VJbkZyb250OtMADgNYA1kD | |
|
3112 | WgRuBG+Au4EBB4EBCdgADgNeA18DYANhA2IDYwNkA2YEcgNoBCcDagNrA2wD6oC5gQEIgPGAs4C3gNpY | |
|
3113 | U2hvdyBBbGxfEBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM60wAOA1gDWQNaBHsEfIC7gQELgQEO2AAOA14D | |
|
3114 | XwNgA2EDYgNjA2QDZgR/A2gEgANqA2sDbAO2gLmBAQyBAQ2As4C3gMlVQ2xvc2VRd11wZXJmb3JtQ2xv | |
|
3115 | c2U61AAOBDIDWANZA1oAHwSKBIuAu4ACgQEQgQES1wAOA14DYANhA2IDYwNkA2YEjgQnA2oDawNsA+qA | |
|
3116 | uYEBEYDxgLOAt4DaXxAVQWJvdXQgSVB5dGhvbjFTYW5kYm94XxAdb3JkZXJGcm9udFN0YW5kYXJkQWJv | |
|
3117 | dXRQYW5lbDrTAA4DWANZA1oElwSYgLuBARSBARjYAA4DXgNfA2ADYQNiA2MDZANmBJsDaAScA2oDawNs | |
|
3118 | BJ+AuYEBFoEBF4CzgLeBARXTAA4DXgNvA3AEogSjgQGggQHdgQHfXkNoZWNrIFNwZWxsaW5nUTteY2hl | |
|
3119 | Y2tTcGVsbGluZzrTAA4DWANZA1oEqQSqgLuBARqBAR3YAA4DXgNfA2ADYQNiA2MDZANmBK0DaASuA2oD | |
|
3120 | awNsA8iAuYEBG4EBHICzgLeAz1pTZWxlY3QgQWxsUWFac2VsZWN0QWxsOtMADgNYA1kDWgS3BLiAu4EB | |
|
3121 | H4EBIdgADgNeA18DYANhA2IDYwNkA2YEuwNoA+cDagNrA2wD6oC5gQEggNyAs4C3gNpfEBRIaWRlIElQ | |
|
3122 | eXRob24xU2FuZGJveFVoaWRlOtMADgNYA1kDWgTEBMWAu4EBI4EBJdgADgNeA18DYANhA2IDYwNkA2YE | |
|
3123 | yANoBCcDagNrA2wEn4C5gQEkgPGAs4C3gQEVXxAbQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nXxAe | |
|
3124 | dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmc60wAOA1gDWQNaBNEE0oC7gQEngQEq2AAOA14DXwNg | |
|
3125 | A2EDYgNjA2QDZgTVA2gE1gNqA2sDbAO2gLmBASiBASmAs4C3gMlmAFAAcgBpAG4AdCAmUXBWcHJpbnQ6 | |
|
3126 | 0wAOA1gDWQNaBN8E4IC7gQEsgQEv2AAOA14DXwNgA2EDYgNjA2QDZgTjA9cE5ANqA2sDbAO2gLmBAS2B | |
|
3127 | AS6As4C3gMloAFMAYQB2AGUAIABBAHMgJlFTXxAPc2F2ZURvY3VtZW50QXM60wAOA1gDWQNaBO0E7oC7 | |
|
3128 | gQExgQE02AAOA14DXwNgA2EDYgNjA2QDZgTxA2gE8gNqA2sDbAPqgLmBATKBATOAs4C3gNpfEBRRdWl0 | |
|
3129 | IElQeXRob24xU2FuZGJveFFxWnRlcm1pbmF0ZTrTAA4DWANZA1oE+wT8gLuBATaBATnZAA4DXgNfA2AD | |
|
3130 | YQNiA2MDZANlA2YE/wPXBQADagNrA2wDbQFYgLmBATeBATiAs4C3gLBbU21hcnQgTGlua3NRR18QHXRv | |
|
3131 | Z2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb2461AAOBDIDWANZBDMENAUKBQuA94D0gQE7gQE90gAOADIA | |
|
3132 | MwUOgASBATxfEBpJUHl0aG9uMVNhbmRib3hBcHBEZWxlZ2F0ZV8QEWlweXRob25Db250cm9sbGVy0wAO | |
|
3133 | A1gDWQNaBRMFFIC7gQE/gQFB2AAOA14DXwNgA2EDYgNjA2QDZgUXA2gEJwNqA2sDbARWgLmBAUCA8YCz | |
|
3134 | gLeA/lRab29tXHBlcmZvcm1ab29tOtMADgNYA1kDWgUgBSGAu4EBQ4EBRtgADgNeA18DYANhA2IDYwNk | |
|
3135 | A2YFJANoBSUDagNrA2wDyIC5gQFEgQFFgLOAt4DPVENvcHlRY1Vjb3B5OtMADgNYA1kDWgUuBS+Au4EB | |
|
3136 | SIEBTNgADgNeA18DYANhA2IDYwNkA2YFMgPmBTMDagNrA2wFNoC5gQFKgQFLgLOAt4EBSdMADgNeA28D | |
|
3137 | cAU5BTqBAaCBAeeBAelcU2hvdyBUb29sYmFyUXRfEBN0b2dnbGVUb29sYmFyU2hvd2461AAOBDIDWANZ | |
|
3138 | BDMFCgVBBDaA94EBO4EBToD20gAOADIAMwA0gASAA9MADgNYA1kDWgVIBUmAu4EBUIEBUtgADgNeA18D | |
|
3139 | YANhA2IDYwNkA2YFTANoBCcDagNrA2wEKoC5gQFRgPGAs4C3gO9eU3RhcnQgU3BlYWtpbmdec3RhcnRT | |
|
3140 | cGVha2luZzrTAA4DWANZA1oFVQVWgLuBAVSBAVjYAA4DXgNfA2ADYQNiA2MDZANmBVkDaAVaA2oDawNs | |
|
3141 | BV2AuYEBVoEBV4CzgLeBAVXTAA4DXgNvA3AFYAVhgQGggQHxgQHzXxAUSVB5dGhvbjFTYW5kYm94IEhl | |
|
3142 | bHBRP1lzaG93SGVscDrTAA4DWANZA1oFZwVogLuBAVqBAV3YAA4DXgNfA2ADYQNiA2MDZANmBWsDaAQn | |
|
3143 | A2oDawNsBW+AuYEBXIDxgLOAt4EBW9QADgNeAdUDbwNwBXIFcwV0gQGggQGigQGlgQGkWkNsZWFyIE1l | |
|
3144 | bnVfEBVjbGVhclJlY2VudERvY3VtZW50czrTAA4DWANZA1oFeQV6gLuBAV+BAWHYAA4DXgNfA2ADYQNi | |
|
3145 | A2MDZANmBX0DaAQnA2oDawNsBTaAuYEBYIDxgLOAt4EBSW8QEgBDAHUAcwB0AG8AbQBpAHoAZQAgAFQA | |
|
3146 | bwBvAGwAYgBhAHIgJl8QH3J1blRvb2xiYXJDdXN0b21pemF0aW9uUGFsZXR0ZTrTAA4DWANZA1oFhgWH | |
|
3147 | gLuBAWOBAWbYAA4DXgNfA2ADYQNiA2MDZANmBYoDaAWLA2oDawNsA8iAuYEBZIEBZYCzgLeAz1NDdXRR | |
|
3148 | eFRjdXQ61AAOBDIDWANZBDMAyAQ0BZaA94AYgPSBAWhYdGV4dFZpZXfUAA4EMgNYA1kEMwDIAEEFnID3 | |
|
3149 | gBiAB4EBal8QFWluaXRpYWxGaXJzdFJlc3BvbmRlctMADgNYA1kDWgWgBaGAu4EBbIEBb9kADgWjA14D | |
|
3150 | XwNgA2EDYgNjA2QDZgQnBaYD1wWnA2oDawNsA7ZZTlNUb29sVGlwgLmA8YEBbYEBboCzgLeAyV1QYWdl | |
|
3151 | IFNldHVwLi4uUVBecnVuUGFnZUxheW91dDrTAA4DWANZA1oFsAWxgLuBAXGBAXTYAA4DXgNfA2ADYQNi | |
|
3152 | A2MDZANmBbQDaAW1A2oDawNsBJ+AuYEBcoEBc4CzgLeBARVuAFMAaABvAHcAIABTAHAAZQBsAGwAaQBu | |
|
3153 | AGcgJlE6XxAPc2hvd0d1ZXNzUGFuZWw60wAOA1gDWQNaBb4Fv4C7gQF2gQF41wAOA14DYANhA2IDYwNk | |
|
3154 | A2YFwgQnA2oDawNsA7aAuYEBd4DxgLOAt4DJXxAPUmV2ZXJ0IHRvIFNhdmVkXxAWcmV2ZXJ0RG9jdW1l | |
|
3155 | bnRUb1NhdmVkOtMADgNYA1kDWgXLBcyAu4EBeoEBfNgADgNeA18DYANhA2IDYwNkA2YFzwNoBCcDagNr | |
|
3156 | A2wEn4C5gQF7gPGAs4C3gQEVXxAbQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxsaW5nXxAWdG9nZ2xlR3Jh | |
|
3157 | bW1hckNoZWNraW5nOtcADgQyBdcF2ANYA1kF2QXaBdsF3AXdAnUF3wBVWU5TS2V5UGF0aFlOU0JpbmRp | |
|
3158 | bmdfEBxOU05pYkJpbmRpbmdDb25uZWN0b3JWZXJzaW9ugQGLgQF+gQGKgQGCgHyBAYnbBeEADgXiBeMF | |
|
3159 | 5AXlBeYF5wXoBekF6gB6BewAegXuAHoF8AXdAHoAegB6BfVfEBpOU0ZpbHRlclJlc3RyaWN0c0luc2Vy | |
|
3160 | dGlvbl8QFE5TUHJlc2VydmVzU2VsZWN0aW9uXE5TSW5pdGlhbEtleVpOU0VkaXRhYmxlXk5TRGVjbGFy | |
|
3161 | ZWRLZXlzXk5TSW5pdGlhbFZhbHVlXxAiTlNDbGVhcnNGaWx0ZXJQcmVkaWNhdGVPbkluc2VydGlvbl8Q | |
|
3162 | GE5TU2VsZWN0c0luc2VydGVkT2JqZWN0c18QFk5TQXZvaWRzRW1wdHlTZWxlY3Rpb25fEBFOU1NvcnRE | |
|
3163 | ZXNjcmlwdG9ycwmBAYgJgQGBCYEBf4EBggkJCYEBg9IADgA+AGkF+IA0owX5Be4F3YEBgIEBgYEBglRr | |
|
3164 | ZXlzU2tleVV2YWx1ZdIADgA+BgAGAYEBh6EGAoEBhNQADgYEBgUGBgYHBe4GCQB6VU5TS2V5Wk5TU2Vs | |
|
3165 | ZWN0b3JbTlNBc2NlbmRpbmeBAYaBAYGBAYUJWGNvbXBhcmU60gA3ADgGDQYOogYOADtfEBBOU1NvcnRE | |
|
3166 | ZXNjcmlwdG9y0gA3ADgGEAE4ogE4ADvSADcAOAYSBhOlBhMGFAYVBhYAO18QFk5TRGljdGlvbmFyeUNv | |
|
3167 | bnRyb2xsZXJfEBFOU0FycmF5Q29udHJvbGxlcl8QEk5TT2JqZWN0Q29udHJvbGxlclxOU0NvbnRyb2xs | |
|
3168 | ZXJfEBp2YWx1ZTogYXJyYW5nZWRPYmplY3RzLmtleV8QE2FycmFuZ2VkT2JqZWN0cy5rZXnSADcAOAYa | |
|
3169 | BhujBhsDiwA7XxAVTlNOaWJCaW5kaW5nQ29ubmVjdG9y1wAOBDIF1wXYA1gDWQXZBdoENAYfBiAF2wYi | |
|
3170 | AFWBAYuA9IEBj4EBjoEBfoEBjV8QGWNvbnRlbnREaWN0aW9uYXJ5OiB1c2VyTlNfEBFjb250ZW50RGlj | |
|
3171 | dGlvbmFyeVZ1c2VyTlPXAA4EMgXXBdgDWANZBdkF2gXbBikF3QJ2BiwAVYEBi4EBfoEBkoEBgoCLgQGR | |
|
3172 | XxAcdmFsdWU6IGFycmFuZ2VkT2JqZWN0cy52YWx1ZV8QFWFycmFuZ2VkT2JqZWN0cy52YWx1ZdcADgQy | |
|
3173 | BdcF2ANYA1kF2QXaBQoGMgYzBdsGNQBVgQGLgQE7gQGWgQGVgQF+gQGUXxApZmlsdGVyUHJlZGljYXRl | |
|
3174 | OiB3b3Jrc3BhY2VGaWx0ZXJQcmVkaWNhdGVfEA9maWx0ZXJQcmVkaWNhdGVfEBh3b3Jrc3BhY2VGaWx0 | |
|
3175 | ZXJQcmVkaWNhdGXXAA4EMgXXBdgDWANZBdkF2gQ0BjwGPQBsBj8AVYEBi4D0gQGagQGZgKOBAZhfEBlh | |
|
3176 | bmltYXRlOiB3YWl0aW5nRm9yRW5naW5lV2FuaW1hdGVfEBB3YWl0aW5nRm9yRW5naW5l0gAOAD4GAAZF | |
|
3177 | gQGHrxBnA1sGRwTfAkQCdQZLBIoEQQUgBW8GUATRBbAFywZUBFYFLgZXBYYGWQIKA20GXATtBl4GXwS3 | |
|
3178 | BmEGYgBNBdsAawVVBHsFoAZpBmoAyAUKBGEGbgSpBnAAbAZyBBUD9QIaA8gAfwPqAnYEIgZ7BJcGfQOO | |
|
3179 | Bn8GgAV5AioGgwSfAhAETgPSBogEBwCqBb4D4QaNBo4D/QLAA64AfgaTBG4FEwTEAKMFXQT7BpoGmwOg | |
|
3180 | BTYDlgafBWcEKgPABDQFQQKDAEEAsQaoBqkFSAO2BqyAr4EBnIEBLIB0gHyBAaGBARCA+YEBQ4EBW4EB | |
|
3181 | poEBJ4EBcYEBeoEBqoD+gQFIgQHDgQFjgQHwgG6AsIEB2YEBMYEBv4EBz4EBH4EB5oEB5IALgQF+gA6B | |
|
3182 | AVSBAQuBAWyBAbaBAbWAGIEBO4EBA4EB6oEBGoEBxoCjgQG9gOqA34CUgM+AaoDagIuA7oEBrYEBFIEB | |
|
3183 | y4C9gQHQgQHugQFfgHKBAbGBARWAloD9gNSBAdGA5YBYgQF2gNmBAdeBAbyA4ICOgMiAEIEB1YEBB4EB | |
|
3184 | P4EBI4AUgQFVgQE2gQHcgQGygMOBAUmAvoEB4IEBWoDvgM6A9IEBToCDgAeAVIEBuYEByoEBUIDJgQHJ | |
|
3185 | 2gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YEKgQtA2gEJwNqA2sDbAPIBrZZTlNTdWJtZW51gLmA74EBnYDx | |
|
3186 | gLOAt4DPgQGeVlNwZWVjaF5zdWJtZW51QWN0aW9uOtIADgA+AGkGu4A0ogVIBCKBAVCA7tIANwA4Br8D | |
|
3187 | ZKIDZAA72gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YFbwVyA2gEJwNqA2sDbAO2BsiAuYEBW4EBooDxgLOA | |
|
3188 | t4DJgQGjW09wZW4gUmVjZW500gAOAD4AaQbMgDShBWeBAVpfEBZfTlNSZWNlbnREb2N1bWVudHNNZW51 | |
|
3189 | 2gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YDbQNxA2gEJwNqA2sDbAPIBteAuYCwgQGngPGAs4C3gM+BAahd | |
|
3190 | U3Vic3RpdHV0aW9uc9IADgA+AGkG24A0owOgA1sE+4DDgK+BATbUAA4DXgHVA28DcAbhBuIG44EBoIEB | |
|
3191 | q4EB9IEBrFlBTWFpbk1lbnXSAA4APgBpBueANKcGewZeBn0GnwZhBm4GWYEBrYEBv4EBy4EB4IEB5oEB | |
|
3192 | 6oEB8NoADgauA14DXwNgA2EDYgNjA2QBoANmA+oD7QNoBCcDagNrA2wGVAb3gLmA2oEBroDxgLOAt4EB | |
|
3193 | qoEBr18QD0lQeXRob24xU2FuZGJveNIADgA+AGkG+4A0qwSKBoMGmwZqBmkGjgS3A+EEbgZyBO2BARCB | |
|
3194 | AbGBAbKBAbWBAbaBAbyBAR+A2YEBB4EBvYEBMdoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcA | |
|
3195 | egNqA2sDbAPqXU5TSXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVkgLmA8QmA8QmAs4C3gNrYAA4DXgNfA2AD | |
|
3196 | YQNiA2MDZANmBxQDaAcVA2oDawNsA+qAuYEBs4EBtICzgLeA2mwAUAByAGUAZgBlAHIAZQBuAGMAZQBz | |
|
3197 | ICZRLNoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcAegNqA2sDbAPqgLmA8QmA8QmAs4C3gNra | |
|
3198 | AA4GrgNeA18DYANhA2IDYwNkAaADZgaoBycDaAQnA2oDawNsA+oHLIC5gQG5gQG3gPGAs4C3gNqBAbhY | |
|
3199 | U2VydmljZXPUAA4DXgHVA28DcAcnBzEHMoEBoIEBt4EBu4EButIADgA+AGkHNYA0oF8QD19OU1NlcnZp | |
|
3200 | Y2VzTWVuddoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcAegNqA2sDbAPqgLmA8QmA8QmAs4C3 | |
|
3201 | gNraAA4DXgNfBwgDYAcJA2EDYgNjA2QDZgQnA2gAegQnAHoDagNrA2wD6oC5gPEJgPEJgLOAt4DaXF9O | |
|
3202 | U0FwcGxlTWVuddoADgauA14DXwNgA2EDYgNjA2QBoANmA7YDuQNoBCcDagNrA2wGVAdSgLmAyYEBwIDx | |
|
3203 | gLOAt4EBqoEBwVRGaWxl0gAOAD4AaQdWgDSrBlcGcAZLBqwEewOuBN8FvgapBaAE0YEBw4EBxoEBoYEB | |
|
3204 | yYEBC4DIgQEsgQF2gQHKgQFsgQEn2AAOA14DXwNgA2EDYgNjA2QDZgdkA2gHZQNqA2sDbAO2gLmBAcSB | |
|
3205 | AcWAs4C3gMlTTmV3UW7YAA4DXgNfA2ADYQNiA2MDZANmB20DaAduA2oDawNsA7aAuYEBx4EByICzgLeA | |
|
3206 | yWUATwBwAGUAbiAmUW/aAA4DXgNfBwgDYAcJA2EDYgNjA2QDZgQnA2gAegQnAHoDagNrA2wDtoC5gPEJ | |
|
3207 | gPEJgLOAt4DJ2gAOA14DXwcIA2AHCQNhA2IDYwNkA2YEJwNoAHoEJwB6A2oDawNsA7aAuYDxCYDxCYCz | |
|
3208 | gLeAydoADgauA14DXwNgA2EDYgNjA2QBoANmA8gDywNoBCcDagNrA2wGVAeOgLmAz4EBzIDxgLOAt4EB | |
|
3209 | qoEBzVRFZGl00gAOAD4AaQeSgDStA8AD0gZfBYYFIAQHBEEEqQZ/BogGmgZQBkeAzoDUgQHPgQFjgQFD | |
|
3210 | gOWA+YEBGoEB0IEB0YEB3IEBpoEBnNoADgNeA18HCANgBwkDYQNiA2MDZANmBCcDaAB6BCcAegNqA2sD | |
|
3211 | bAPIgLmA8QmA8QmAs4C3gM/aAA4DXgNfBwgDYAcJA2EDYgNjA2QDZgQnA2gAegQnAHoDagNrA2wDyIC5 | |
|
3212 | gPEJgPEJgLOAt4DP2gAOBq4DXgNfA2ADYQNiA2MDZAGgA2YDlgOZA2gEJwNqA2sDbAPIB7qAuYC+gQHS | |
|
3213 | gPGAs4C3gM+BAdNURmluZNIADgA+AGkHvoA0pQQVBpMGjQZcA46A6oEB1YEB14EB2YC92QAOA14DXwNg | |
|
3214 | A2EDYgNjA2QDZQNmB8YDaANpA2oDawNsA5YAVYC5gQHWgLKAs4C3gL5ZRmluZCBOZXh02QAOA14DXwNg | |
|
3215 | A2EDYgNjA2QDZQNmB84D1wUAA2oDawNsA5YBWIC5gQHYgQE4gLOAt4C+XUZpbmQgUHJldmlvdXPZAA4D | |
|
3216 | XgNfA2ADYQNiA2MDZANlA2YH1gNoB9cDagNrA2wDlgfbgLmBAdqBAduAs4C3gL4QB18QFlVzZSBTZWxl | |
|
3217 | Y3Rpb24gZm9yIEZpbmRRZdoADgauA14DXwNgA2EDYgNjA2QBoANmBJ8EogNoBCcDagNrA2wDyAfmgLmB | |
|
3218 | ARWBAd2A8YCzgLeAz4EB3l8QFFNwZWxsaW5nIGFuZCBHcmFtbWFy0gAOAD4AaQfqgDSkBbAElwTEBcuB | |
|
3219 | AXGBARSBASOBAXraAA4GrgNeA18DYANhA2IDYwNkAaADZgP9BAADaAQnA2oDawNsBlQH94C5gOCBAeGA | |
|
3220 | 8YCzgLeBAaqBAeJWRm9ybWF00gAOAD4AaQf7gDSiBmID9YEB5IDf2AAOA14DXwNgA2EDYgNjA2QDZggA | |
|
3221 | A2gFMwNqA2sDbAP9gLmBAeWBAUuAs4C3gOBaU2hvdyBGb250c9oADgauA14DXwNgA2EDYgNjA2QBoANm | |
|
3222 | BTYFOQNoBCcDagNrA2wGVAgOgLmBAUmBAeeA8YCzgLeBAaqBAehUVmlld9IADgA+AGkIEoA0ogUuBXmB | |
|
3223 | AUiBAV/aAA4GrgNeA18DYANhA2IDYwNkAaADZgRWBFkDaAQnA2oDawNsBlQIHYC5gP6BAeuA8YCzgLeB | |
|
3224 | AaqBAexWV2luZG930gAOAD4AaQghgDSkBE4FEwaABGGA/YEBP4EB7oEBA9oADgNeA18HCANgBwkDYQNi | |
|
3225 | A2MDZANmBCcDaAB6BCcAegNqA2sDbARWgLmA8QmA8QmAs4C3gP5eX05TV2luZG93c01lbnXaAA4GrgNe | |
|
3226 | A18DYANhA2IDYwNkAaADZgVdBWADaAQnA2oDawNsBlQIOIC5gQFVgQHxgPGAs4C3gQGqgQHyVEhlbHDS | |
|
3227 | AA4APgBpCDyANKEFVYEBVFtfTlNNYWluTWVuddIADgA+BgAIQYEBh68QZwNtA8gDtgIKAioDtgPqA8gD | |
|
3228 | yAZLA8gDtgSfBJ8AHwZuBTYDtgPIBlQAfwZQA5YD6gZUA8gD6gZUA/0AQQAfAE0FXQO2A7YD6gPqAKMA | |
|
3229 | HwRWBlQDyAO2AE0D6gOWA/0CCgZ9AGsGewIqBCoGVASfBlQDlgPIBFYFNgIKA+oGmgIKBFYDyAPIA8gA | |
|
3230 | owO2A+oDlgPqBp8CdgO2AGsDlgPqBFYEnwB+BlkDbQPIA+oDbQZhBogGVAVvBkcDyAAfAB8CdQAfAKMG | |
|
3231 | aQO2BCoGXgO2gLCAz4DJgG6AcoDJgNqAz4DPgQGhgM+AyYEBFYEBFYACgQHqgQFJgMmAz4EBqoBqgQGm | |
|
3232 | gL6A2oEBqoDPgNqBAaqA4IAHgAKAC4EBVYDJgMmA2oDagBSAAoD+gQGqgM+AyYALgNqAvoDggG6BAcuA | |
|
3233 | DoEBrYBygO+BAaqBARWBAaqAvoDPgP6BAUmAboDagQHcgG6A/oDPgM+Az4AUgMmA2oC+gNqBAeCAi4DJ | |
|
3234 | gA6AvoDagP6BARWAEIEB8ICwgM+A2oCwgQHmgQHRgQGqgQFbgQGcgM+AAoACgHyAAoAUgQG2gMmA74EB | |
|
3235 | v4DJ0gAOAD4GAAirgQGHrxBoA1sGRwTfAkQCdQZLBIoEQQUgBW8E0QZQBbAFywUuBlQEVgZXBYYGWQIK | |
|
3236 | A20GXATtBl4GXwS3BmEGYgBNBdsAawVVBHsFoAZpBmoAyAUKBGEGbgZwBKkAbAZyBBUD9QIaA8gD6gB/ | |
|
3237 | BCICdgZ7BJcGfQOOBn8GgAV5AioGgwSfAhAETgPSBogEBwCqBb4D4QaNBo4D/QLAA64AfgaTBG4FEwTE | |
|
3238 | AKMFXQT7AB8GmgabBTYDoAafA5YFZwQqBDQDwAVBAoMAQQCxBqkGqAVIA7YGrICvgQGcgQEsgHSAfIEB | |
|
3239 | oYEBEID5gQFDgQFbgQEngQGmgQFxgQF6gQFIgQGqgP6BAcOBAWOBAfCAboCwgQHZgQExgQG/gQHPgQEf | |
|
3240 | gQHmgQHkgAuBAX6ADoEBVIEBC4EBbIEBtoEBtYAYgQE7gQEDgQHqgQHGgQEagKOBAb2A6oDfgJSAz4Da | |
|
3241 | gGqA7oCLgQGtgQEUgQHLgL2BAdCBAe6BAV+AcoEBsYEBFYCWgP2A1IEB0YDlgFiBAXaA2YEB14EBvIDg | |
|
3242 | gI6AyIAQgQHVgQEHgQE/gQEjgBSBAVWBATaAAoEB3IEBsoEBSYDDgQHggL6BAVqA74D0gM6BAU6Ag4AH | |
|
3243 | gFSBAcqBAbmBAVCAyYEBydIADgA+BgAJFoEBh68QaAkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJ | |
|
3244 | JQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwFDgk+CT8JQAlBCUIJ | |
|
3245 | QwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJ | |
|
3246 | YQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX6B | |
|
3247 | AfiBAfmBAfqBAfuBAfyBAf2BAf6BAf+BAgCBAgGBAgKBAgOBAgSBAgWBAgaBAgeBAgiBAgmBAgqBAguB | |
|
3248 | AgyBAg2BAg6BAg+BAhCBAhGBAhKBAhOBAhSBAhWBAhaBAheBAhiBAhmBAhqBAhuBAhyBAh2BATyBAh6B | |
|
3249 | Ah+BAiCBAiGBAiKBAiOBAiSBAiWBAiaBAieBAiiBAimBAiqBAiuBAiyBAi2BAi6BAi+BAjCBAjGBAjKB | |
|
3250 | AjOBAjSBAjWBAjaBAjeBAjiBAjmBAjqBAjuBAjyBAj2BAj6BAj+BAkCBAkGBAkKBAkOBAkSBAkWBAkaB | |
|
3251 | AkeBAkiBAkmBAkqBAkuBAkyBAk2BAk6BAk+BAlCBAlGBAlKBAlOBAlSBAlWBAlaBAleBAliBAlmBAlqB | |
|
3252 | AluBAlyBAl2BAl5fEBhNZW51IEl0ZW0gKFNtYXJ0IFF1b3RlcylfEBJNZW51IEl0ZW0gKFNwZWVjaClR | |
|
3253 | OF8QEVRhYmxlIEhlYWRlciBWaWV3XxAXVGFibGUgQ29sdW1uIChWYXJpYWJsZSlfEBdNZW51IEl0ZW0g | |
|
3254 | KE9wZW4gUmVjZW50KV8QIU1lbnUgSXRlbSAoQWJvdXQgSVB5dGhvbjFTYW5kYm94KV8QEk1lbnUgSXRl | |
|
3255 | bSAoRGVsZXRlKV8QEE1lbnUgSXRlbSAoQ29weSlfEBJNZW51IChPcGVuIFJlY2VudClRNl8QGU1lbnUg | |
|
3256 | SXRlbSAoU3Vic3RpdHV0aW9ucylvEBoATQBlAG4AdQAgAEkAdABlAG0AIAAoAFMAaABvAHcAIABTAHAA | |
|
3257 | ZQBsAGwAaQBuAGcgJgApXxAnTWVudSBJdGVtIChDaGVjayBHcmFtbWFyIFdpdGggU3BlbGxpbmcpXxAY | |
|
3258 | TWVudSBJdGVtIChTaG93IFRvb2xiYXIpWE1haW5NZW51XU1lbnUgKFdpbmRvdylROV8QD01lbnUgSXRl | |
|
3259 | bSAoQ3V0KVExW1Njcm9sbCBWaWV3XxAUTWVudSAoU3Vic3RpdHV0aW9ucylfECJNZW51IEl0ZW0gKFVz | |
|
3260 | ZSBTZWxlY3Rpb24gZm9yIEZpbmQpVDExMTFfEBBNZW51IEl0ZW0gKEZpbGUpW1NlcGFyYXRvci01XxAg | |
|
3261 | TWVudSBJdGVtIChIaWRlIElQeXRob24xU2FuZGJveClfEBBNZW51IEl0ZW0gKFZpZXcpXxAWTWVudSBJ | |
|
3262 | dGVtIChTaG93IEZvbnRzKVxDb250ZW50IFZpZXdfEBlVc2VyIE5hbWVzcGFjZSBDb250cm9sbGVyWlNw | |
|
3263 | bGl0IFZpZXdfECBNZW51IEl0ZW0gKElQeXRob24xU2FuZGJveCBIZWxwKVMxLTFRNV8QFE1lbnUgSXRl | |
|
3264 | bSAoU2VydmljZXMpW1NlcGFyYXRvci0xWVRleHQgVmlld18QHk1lbnUgSXRlbSAoQnJpbmcgQWxsIHRv | |
|
3265 | IEZyb250KV8QEk1lbnUgSXRlbSAoV2luZG93KW8QEQBNAGUAbgB1ACAASQB0AGUAbQAgACgATwBwAGUA | |
|
3266 | biAmAClfEBZNZW51IEl0ZW0gKFNlbGVjdCBBbGwpXEFzeW5jIEFycm93c1tTZXBhcmF0b3ItMm8QEQBN | |
|
3267 | AGUAbgB1ACAASQB0AGUAbQAgACgARgBpAG4AZCAmAClfEBdNZW51IEl0ZW0gKFNob3cgQ29sb3JzKV8Q | |
|
3268 | EVZlcnRpY2FsIFNjcm9sbGVyW01lbnUgKEVkaXQpXxAWTWVudSAoSVB5dGhvbjFTYW5kYm94KV8QD0Jv | |
|
3269 | eCAoV29ya3NwYWNlKV8QGU1lbnUgSXRlbSAoU3RvcCBTcGVha2luZylfEBRUYWJsZSBDb2x1bW4gKFZh | |
|
3270 | bHVlKV8QG01lbnUgSXRlbSAoSVB5dGhvbjFTYW5kYm94KV8QGk1lbnUgSXRlbSAoQ2hlY2sgU3BlbGxp | |
|
3271 | bmcpXxAQTWVudSBJdGVtIChFZGl0KV8QHU1lbnUgSXRlbSAoSnVtcCB0byBTZWxlY3Rpb24pW1NlcGFy | |
|
3272 | YXRvci02WVNlcGFyYXRvcm8QHgBNAGUAbgB1ACAASQB0AGUAbQAgACgAQwB1AHMAdABvAG0AaQB6AGUA | |
|
3273 | IABUAG8AbwBsAGIAYQByICYAKV8QHFRhYmxlIFZpZXcgKFZhcmlhYmxlLCBWYWx1ZSlbU2VwYXJhdG9y | |
|
3274 | LTNfEBtNZW51IChTcGVsbGluZyBhbmQgR3JhbW1hcilfEBNIb3Jpem9udGFsIFNjcm9sbGVyXxAUTWVu | |
|
3275 | dSBJdGVtIChNaW5pbWl6ZSlfEBBNZW51IEl0ZW0gKFJlZG8pXxAQTWVudSBJdGVtIChGaW5kKV8QEU1l | |
|
3276 | bnUgSXRlbSAoUGFzdGUpXxAVSG9yaXpvbnRhbCBTY3JvbGxlci0xUjEwXxAXTWVudSBJdGVtIChIaWRl | |
|
3277 | IE90aGVycylfEBlNZW51IEl0ZW0gKEZpbmQgUHJldmlvdXMpW1NlcGFyYXRvci00XU1lbnUgKEZvcm1h | |
|
3278 | dClfEB1UZXh0IEZpZWxkIENlbGwgKFRleHQgQ2VsbCktMVEzXUJveCAoQ29uc29sZSlfEBVNZW51IEl0 | |
|
3279 | ZW0gKEZpbmQgTmV4dClfEBRNZW51IEl0ZW0gKFNob3cgQWxsKV8QEE1lbnUgSXRlbSAoWm9vbSlfECdN | |
|
3280 | ZW51IEl0ZW0gKENoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyldU2Nyb2xsIFZpZXctMVEyXxAXTWVu | |
|
3281 | dSBJdGVtIChTbWFydCBMaW5rcylcRmlsZSdzIE93bmVyXxAgTWVudSBJdGVtIChTcGVsbGluZyBhbmQg | |
|
3282 | R3JhbW1hcilTMTIxW01lbnUgKFZpZXcpXxAcTWVudSBJdGVtIChTbWFydCBDb3B5L1Bhc3RlKV8QEk1l | |
|
3283 | bnUgSXRlbSAoRm9ybWF0KVtNZW51IChGaW5kKV8QFk1lbnUgSXRlbSAoQ2xlYXIgTWVudSldTWVudSAo | |
|
3284 | U3BlZWNoKV8QF1B5dGhvbiBDb2NvYSBDb250cm9sbGVyXxAQTWVudSBJdGVtIChVbmRvKVtBcHBsaWNh | |
|
3285 | dGlvbl8QG1RleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKV8QGVdpbmRvdyAoSVB5dGhvbjEgKENvY29h | |
|
3286 | KSlfEBNWZXJ0aWNhbCBTY3JvbGxlci0xUzItMV8QD01lbnUgKFNlcnZpY2VzKV8QGk1lbnUgSXRlbSAo | |
|
3287 | U3RhcnQgU3BlYWtpbmcpW01lbnUgKEZpbGUpUTfSAA4APgYACeiBAYeg0gAOAD4GAAnrgQGHoNIADgA+ | |
|
3288 | BgAJ7oEBh68QlwNUA1sGRwNBA0kE3wJEAnUGSwSKBEEFIAVvA0IGUATRA0QDMgNOBbADMQNRA0sFywM+ | |
|
3289 | AzoGVARWBS4GVwNNBYYGWQMwAgoDbQZcBO0GXgZfAzkDOAS3AywDTAZhBmIDLwBNBdsDQAM0AGsFVQR7 | |
|
3290 | BaAGaQZqAMgDKwUKBGEGbgSpBnAAbANHBnIEFQP1AhoDyAB/A+oCdgQiAz8GewSXBn0DjgZ/A0oDVgaA | |
|
3291 | A1UFeQIqA0MGgwSfAhADKgROA9IGiAQHAKoDOwNIBb4D4QaNAzYDPAaOA0UD/QMoAsADrgMzAH4GkwRu | |
|
3292 | BRMExACjA1IDKQVdBPsAHwaaBpsDoAU2A5YGnwMuBWcDUAQqA8AENANGBUEDNQKDA08AQQCxBqgGqQM3 | |
|
3293 | Az0DUwMtBUgDtgasgQGQgK+BAZyBATWBAVmBASyAdIB8gQGhgQEQgPmBAUOBAVuBATqBAaaBASeBAUKA | |
|
3294 | 7YEBa4EBcYDpgQF5gQFigQF6gQEmgQETgQGqgP6BAUiBAcOBAWmBAWOBAfCA5IBugLCBAdmBATGBAb+B | |
|
3295 | Ac+BAQ+BAQqBAR+AzYEBZ4EB5oEB5IDegAuBAX6BATCA+IAOgQFUgQELgQFsgQG2gQG1gBiAx4EBO4EB | |
|
3296 | A4EB6oEBGoEBxoCjgQFPgQG9gOqA34CUgM+AaoDagIuA7oEBK4EBrYEBFIEBy4C9gQHQgQFegQGXgQHu | |
|
3297 | gQGTgQFfgHKBAT6BAbGBARWAloDCgP2A1IEB0YDlgFiBARmBAVOBAXaA2YEB14EBAoEBHoEBvIEBR4Dg | |
|
3298 | gK6AjoDIgPOAEIEB1YEBB4EBP4EBI4AUgQF9gLyBAVWBATaAAoEB3IEBsoDDgQFJgL6BAeCA2IEBWoEB | |
|
3299 | dYDvgM6A9IEBTYEBToD8gIOBAXCAB4BUgQG5gQHKgQEGgQEigQGMgNOBAVCAyYEBydIADgA+BgAKiIEB | |
|
3300 | h68QlwqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqk | |
|
3301 | CqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrC | |
|
3302 | CsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrg | |
|
3303 | CuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+ | |
|
3304 | Cv8LAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwsc | |
|
3305 | Cx0LHgsfgQJjgQJkgQJlgQJmgQJngQJogQJpgQJqgQJrgQJsgQJtgQJugQJvgQJwgQJxgQJygQJzgQJ0 | |
|
3306 | gQJ1gQJ2gQJ3gQJ4gQJ5gQJ6gQJ7gQJ8gQJ9gQJ+gQJ/gQKAgQKBgQKCgQKDgQKEgQKFgQKGgQKHgQKI | |
|
3307 | gQKJgQKKgQKLgQKMgQKNgQKOgQKPgQKQgQKRgQKSgQKTgQKUgQKVgQKWgQKXgQKYgQKZgQKagQKbgQKc | |
|
3308 | gQKdgQKegQKfgQKggQKhgQKigQKjgQKkgQKlgQKmgQKngQKogQKpgQKqgQKrgQKsgQKtgQKugQKvgQKw | |
|
3309 | gQKxgQKygQKzgQK0gQK1gQK2gQK3gQK4gQK5gQK6gQK7gQK8gQK9gQK+gQK/gQLAgQLBgQLCgQLDgQLE | |
|
3310 | gQLFgQLGgQLHgQLIgQLJgQLKgQLLgQLMgQLNgQLOgQLPgQLQgQLRgQLSgQLTgQLUgQLVgQLWgQLXgQLY | |
|
3311 | gQLZgQLagQLbgQLcgQLdgQLegQLfgQLggQLhgQLigQLjgQLkgQLlgQLmgQLngQLogQLpgQLqgQLrgQLs | |
|
3312 | gQLtgQLugQLvgQLwgQLxgQLygQLzgQL0gQL1gQL2gQL3gQL4gQL5EQGrEQFfENMRAWUQfxBQEQGYEQGc | |
|
3313 | EHwQOhDKEMUQfREBuREBXBBOEOAQ4xBXEMwQ8REBWxDkEQFaEFYQ4RAdEBgRASkQUhEBvRDHEGcQ4hEB | |
|
3314 | lxEBXRDdEIgQUxDOEI4QwRCGEN8RAbwRAScRAVgRAWkRAXQRAYERAXEQ6xEBpRBvEEkQTRCDEI8RAaMR | |
|
3315 | AWoRAXUQBRATEMYQSBEBtBDpEJUQ0REBWREBmRDNEQGWEDkRAZ0QwxEBaxA4EMkQ2RDSENYRAW0RAbUQ | |
|
3316 | XBEBuBEBKhEBmxDwEOwQyBEBmhEBYxAXENcQ2hDLEQGiEOgRAWgQcBCRENUQJxEBbxCQEQFuEQEsEQFk | |
|
3317 | EQGeEEsRAa0RAaQQ0BCWEO8Q2xEBoBEBrBD1EGoRAWIRAb4Q2BCBEQFeEQEoENwRASsRAXAQfhEBbBDU | |
|
3318 | EM8RAaYRAXYT//////////0QJREBnxDmEQFzEQGhEIIQShEBchDeEQGoEOcQxBBREE/SAA4APgBpC7mA | |
|
3319 | NKDSAA4APgYAC7yBAYeg0gAOAD4GAAu/gQGHoNIANwA4C8ELwqILwgA7Xk5TSUJPYmplY3REYXRhAAgA | |
|
3320 | GQAiACcAMQA6AD8ARABSAFQAZgZmBmwGtwa+BsUG0wblBwEHDwcbBycHNQdAB04Hagd4B4sHnQe3B8EH | |
|
3321 | zgfQB9MH1gfZB9wH3gfhB+MH5gfpB+wH7wfxB/MH9gf5B/wH/wgICBQIFggYCCYILwg4CEMISAhXCGAI | |
|
3322 | cwh8CIcIiQiMCI4IuwjICNUI6wj5CQMJEQkeCTAJRAlQCVIJVAlWCVgJWglfCWEJYwllCWcJaQmECZcJ | |
|
3323 | oAm9Cc8J2gnjCe8J+wn9Cf8KAQoECgYKCAoKChMKFQoaChwKHgpHCk8KXgptCnoKfAp+CoAKggqFCocK | |
|
3324 | iQqLCowKlQqXCpwKngqgCtkK4wrvCv0LCgsUCyYLNAs2CzgLOgs8Cz0LPwtBC0MLRQtHC0kLSwtNC1YL | |
|
3325 | WAtbC10Legt8C34LgAuCC4QLhguPC5ELlAuWC8cL0wvcC+gL9gv4C/oL/Av+DAEMAwwFDAcMCQwLDA0M | |
|
3326 | FgwYDB8MIQwjDCUMWgxjDGwMdgyADIoMjAyODJAMkgyUDJYMmAybDJ0MnwyhDKMMpQyuDLAMswy1DOoM | |
|
3327 | /A0GDRMNHw0pDTINPQ0/DUENQw1FDUcNSQ1LDU4NUA1SDVQNVg1YDWENYw2IDYoNjA2ODZANkg2UDZYN | |
|
3328 | mA2aDZwNng2gDaINpA2mDagNqg3GDdsN+A4ZDjUOWw6BDp8Ouw7XDvQPDA8mD1oPdw+TD8APyQ/QD90P | |
|
3329 | 4w/6EA8QGRAkECwQPhBAEEIQSxBNEGIQdRCDEI0QjxCREJMQlRCiEKsQrRCvELEQuhDEEMYQxxDQENcQ | |
|
3330 | 6RDyEPsRFxEsETURNxE6ETwRRRFMEVsRYxFsEXERehF/EaARqBHCEdUR6RIAEhUSKBIqEi8SMRIzEjUS | |
|
3331 | NxI5EjsSSBJVElsSXRJ4EoEShhKOEpsSoxKlEqcSqhK3Er8SwRLGEsgSyhLPEtES0xLoEvQTAhMEEwYT | |
|
3332 | CBMKExETLxM8Ez4TShNfE2ETYxNlE2cTexOEE4kTlhOjE6UTqhOsE64TsxO1E7cTwxPQE9IT2RPiE+cT | |
|
3333 | /hQLFBMUHBQnFC4UNRRBFFgUcBR9FH8UghSPFJkUphSoFKoUshS7FMAUyRTSFN0VAhULFRQVHhUgFSIV | |
|
3334 | JBUmFS8VMRUzFTUVPhVWFWMVbBV3FYIVjBW5FcQVxhXIFcoVzBXOFdAV0hXbFeQV/xYYFiEWKhY3Fk4W | |
|
3335 | VxZeFmkWcBaNFpkWpBauFrsWxxbMFs4W0BbSFtQW1hbeFu8W9hb9FwYXCBcRFxMXFhcjFywXMRc4F00X | |
|
3336 | TxdRF1MXVRdrF3gXeheIF5EXmhesF7kXwBfJF9IX2BgRGBMYFRgXGBkYGhgcGB4YIBgiGCQYJhgvGDEY | |
|
3337 | NBg2GFMYVRhXGFkYWxhdGF8YaBhqGG0YbxiuGLsYzhjbGN0Y3xjhGOMY5RjnGOkY6xj+GQAZAhkEGQYZ | |
|
3338 | CBkRGRMZHhkgGSIZJBkmGSgZVRlXGVkZWxldGV8ZYRljGWUZZxlwGXIZdRl3Gc4Z8Bn6GgcaHBo2GlIa | |
|
3339 | bRp3GoMalRqkGsMazxrRGtMa3BreGuAa4RrjGuwa9Rr3Gvga+hr8Gv4bABsJGxQbMRs9Gz8bQRtDG0Ub | |
|
3340 | RxtJG3YbeBt6G3wbfhuAG4IbhBuGG4gbkhubG6QbuBvRG9Mb1RvXG9kb2xvyG/scBBwSHBscHRwiHCQc | |
|
3341 | JhxPHF4caxx2HIUckBybHKgcqRyrHK0cthy4HMEcyhzLHM0c6hzvHPEc8xz1HPcc+R0CHQ8dER0dHTId | |
|
3342 | NB02HTgdOh1MHVUdYB10HZUdox2oHaodrB2uHbAdsh21HbcdwR3SHdQd3R3fHeId9x35Hfsd/R3/Hhge | |
|
3343 | LR4vHjEeMx41HkgeUR5WHmQejR6OHpAekh6bHp0enh6gHr0evx7BHsMexR7HHs0e7h7wHvIe9B72Hvge | |
|
3344 | +h8PHxEfEx8VHxcfIR8uHzAfNR8+H0kfYR+GH4gfih+MH44fkB+SH5QfnR+2H98f4R/jH+Uf5x/pH+sf | |
|
3345 | 7R/2IA4gFyAZIBwgHiA0IE0gZCB9IJognCCeIKAgoiCkIK4guyC9INYg+SECIQshFyFAIUshViFgIW0h | |
|
3346 | byFxIXMhfCGFIYghiiGNIY8hkSGWIZghoSGmIbEhySHSIdsh8SH8IhQiJyIwIjUiSCJRIlMitCK2Irgi | |
|
3347 | uiK8Ir4iwCLCIsQixiLIIsoizCLOItAi0yLWItki3CLfIuIi5SLoIusi7iLxIvQi9yL6Iv0jACMDIwYj | |
|
3348 | CSMMIw8jEiMVIxgjGyMeIyEjJCMnIyojLSMwIzMjQCNJI1EjUyNVI1cjfCOEI5gjoyOxI7sjyCPPI9Uj | |
|
3349 | 1yPZI94j4CPlI+cj6SPrI/gkBCQHJAokDSQaJBwkKSQ4JDokPCQ+JEYkWCRhJGYkeSSGJIgkiiSMJJ8k | |
|
3350 | qCStJLgk3CTlJOwlBCUTJSAlIiUkJSYlRyVJJUslTSVPJVElUyVgJWMlZiVpJX0lfyWfJawlriWwJbIl | |
|
3351 | 1yXZJdsl3SXfJeEl4yX2JfgmEyYgJiImJCYmJkcmSSZLJk0mTyZRJlMmYCZjJmYmaSZuJnAmfiaLJo0m | |
|
3352 | jyaRJrImtCa2Jrgmuia8Jr4myybOJtEm1CbZJtsm4SbuJvAm8ib0JxUnFycZJx4nICciJyQnJicrJy0n | |
|
3353 | MydAJ0InRCdGJ2cnaSdrJ3Ancid0J3YneCeJJ4wnjyeSJ5UnoSejJ7wnySfLJ80nzyfwJ/In9Cf2J/gn | |
|
3354 | +if8KAkoDCgPKBIoHiggKDgoRShHKEkoSyhsKG4ocChyKHQodih4KH4ogCiHKJQoliiYKJoovyjBKMMo | |
|
3355 | xSjHKMkoyyjWKPAo/Sj/KQEpAykkKSYpKCkqKSwpLikwKT0pQClDKUYpVCliKXMpgSmDKYUphymJKZIp | |
|
3356 | lCmWKa8puCnBKcgp3ynsKe4p8CnyKhMqFSoXKhkqGyodKh8qJiouKjsqPSo/KkIqYyplKmcqaipsKm4q | |
|
3357 | cCqBKoQqhyqKKo0qliqYKq4quyq9KsAqwyrkKuYq6SrrKu0q7yrxKwYrGCslKycrKistK04rUCtTK1Ur | |
|
3358 | VytZK1srZCt9K4orjCuPK5Irsyu1K7gruyu9K78rwSvHK8kr1yvoK+or7CvvK/IsDywRLBQsFiwYLBos | |
|
3359 | HCw0LFQsYSxjLGYsaSyKLIwsjyySLJQsliyZLKYsqSysLK8svizALM8s3CzeLOEs5C0FLQctCi0NLQ8t | |
|
3360 | ES0TLR4tIC0rLTgtOi09LUAtYS1jLWYtaC1qLWwtbi2FLYstmC2aLZ0toC3BLcMtxi3ILcotzC3PLe0u | |
|
3361 | Di4bLh0uIC4jLkQuRi5JLkwuTi5QLlIuXy5hLmgudS53LnoufS6eLqAuoy6mLqguqi6sLr0uvy7RLt4u | |
|
3362 | 4C7jLuYvBy8JLwwvDy8RLxMvFS8sLy4vOS9GL0gvSy9OL3MvdS94L3svfS9/L4EvjS+PL68vwC/CL8Qv | |
|
3363 | xy/KL9Mv1S/YL/UwCTAWMBgwGzAeMD8wQTBEMEYwSDBKMEwwUTBeMGswbTBwMHMwlDCWMJkwnDCeMKAw | |
|
3364 | ojCnMKkwrzC8ML4wwTDEMOUw5zDqMO0w7zDxMPQxATEEMQcxCjEXMRkxLzFAMUIxRTFIMUoxUzFVMVcx | |
|
3365 | ZDFmMWkxbDGNMY8xkjGUMZYxmDGaMakxuDHFMccxyjHNMe4x8DHzMfYx+DH6Mf0yCjINMhAyEzIqMiwy | |
|
3366 | NjJDMkUySDJLMmwybjJxMnMydTJ3MnoyizKOMpEylDKXMqIyujLHMskyzDLPMvAy8jL1Mvcy+TL7Mv4z | |
|
3367 | JTNHM1QzVjNZM1wzfTN/M4IzhTOHM4kzizOPM5EzljOnM6kzqzOtM7AzuTPKM8wzzjPQM9Mz6zP4M/oz | |
|
3368 | /TQANCU0LzQxNDM0NjQ5NDs0PTQ/NE00TzReNGs0bTRwNHM0lDSWNJk0nDSeNKA0ozTANMI01DThNOM0 | |
|
3369 | 5jTpNQY1CDULNQ01DzURNRM1JTU+NUs1TTVQNVM1dDV2NXk1ezV9NX81gjWgNbk11jXgNeo2CTYMNg82 | |
|
3370 | EjYVNhc2GjZHNmQ2ezaINpM2ojaxNtY28TcKNx43HzciNyM3JjcnNyo3LTcuNy83MDczNzw3PjdFN0g3 | |
|
3371 | SzdON1M3VzddN2Y3aTdsN283gDeGN5E3nTegN6M3pjenN7A3uTe+N9E32jffN+g38zgMOCA4NThCOF84 | |
|
3372 | dTh+OIU4nTi6OL04vzjCOMU4yDjLOOc4+zkCOR85IjklOSg5KzktOTA5TzlnOYQ5hzmKOY05kDmTOZY5 | |
|
3373 | wjnUOe86DDoPOhE6FDoXOhk6HDo4OkA6UzpcOl87MDsyOzU7ODs6Ozw7PztCO0Q7RztKO007UDtTO1Y7 | |
|
3374 | WTtbO147YTtkO2c7aTtrO247cTt0O3c7ejt9O4A7gjuFO4c7ijuNO5A7kzuWO5g7mzueO6E7pDunO6k7 | |
|
3375 | rDuuO7A7sju0O7Y7uDu6O7w7vzvCO8U7xzvKO8070DvSO9U72DvaO9w73jvhO+M75TvoO+o77TvwO/I7 | |
|
3376 | 9Dv2O/g7+zv+PAE8BDwGPAk8DDwPPBI8FDwXPBk8HDwfPCE8IzwlPCg8KjwsPC48MTw0PDc8OTw8PGU8 | |
|
3377 | bzxxPHM8djx4PHo8fDx+PIE8iDyXPKA8ojynPKo8rDy1PLo84zzlPOg86zztPO888TzzPPY9Aj0LPQ09 | |
|
3378 | ED0TPSw9VT1XPVk9XD1ePWA9Yj1kPWc9dT1+PYA9hz2JPYs9jj2fPaI9pT2oPas9tT2+PcA9zz3SPdU9 | |
|
3379 | 2D3bPd494T3kPg0+Dz4RPhQ+Fj4YPho+HT4gPjI+Oz49PlQ+Vz5aPl0+YD5jPmY+aT5rPm4+cT50Pp0+ | |
|
3380 | qz64Pro+vD69Pr8+wD7CPsQ+xj7nPuk+7D7vPvE+8z71Pw4/ED85Pzs/PT8+P0A/QT9DP0U/Rz9wP3I/ | |
|
3381 | dT94P3o/fD9+P4A/gz+MP50/oD+jP6Y/qT+yP7Q/tT/HP/A/8j/0P/U/9z/4P/o//D/+QCdAKUArQCxA | |
|
3382 | LkAvQDFAM0A1QEJAa0BtQG9AckB0QHZAeEB7QH5Ag0CMQI5ApUCoQKtArkCxQLRAtkC5QLxAv0DCQMVA | |
|
3383 | 5kDoQOtA7kDwQPJA9ED4QPpBG0EdQSBBI0ElQSdBKUE0QTZBX0FhQWNBZEFmQWdBaUFrQW1BlkGYQZpB | |
|
3384 | m0GdQZ5BoEGiQaRBzUHPQdFB1EHWQdhB2kHdQeBB5UHuQfBCC0INQg9CEkIVQhhCGkIcQh9CIkIlQihC | |
|
3385 | K0IuQldCWUJbQlxCXkJfQmFCY0JlQo5CkEKSQpNClUKWQphCmkKcQsVCx0LJQsxCzkLQQtJC1ELXQtxC | |
|
3386 | 5ULnQvJC9EL3QvpC/UL/QyRDJkMpQytDLUMvQzFDO0NgQ2JDZUNoQ2pDbENuQ3xDoUOjQ6ZDqUOrQ61D | |
|
3387 | r0OxQ8pDzEP1Q/dD+kP9Q/9EAUQDRAVECEQfRChEKkQzRDZEOUQ8RD9EaERqRGxEb0RxRHNEdUR4RHtE | |
|
3388 | gkSLRI1EkkSVRJdEuES6RL1EwETCRMRExkTRRPpE/ET/RQJFBEUGRQhFC0UORRNFHEUeRSNFJkUpRVJF | |
|
3389 | VEVWRVlFW0VdRV9FYkVlRWxFdUV3RYBFgkWFRYhFi0W0RbZFuEW5RbtFvEW+RcBFwkXRRfpF/EX/RgJG | |
|
3390 | BEYGRghGC0YORhNGHEYeRiFGJEYwRjlGPEcNRw9HEUcTRxVHF0cZRxtHHUcfRyJHJEcmRylHLEcuRzFH | |
|
3391 | NEc2RzhHO0c9R0BHQkdER0dHSUdLR05HUEdSR1RHVkdZR1tHXUdfR2FHY0dlR2dHakdsR25HcEdyR3RH | |
|
3392 | dkd4R3tHfUeAR4JHhEeHR4pHjUePR5FHk0eWR5hHmkedR59HoUejR6VHp0epR6tHrUevR7FHtEe2R7hH | |
|
3393 | uke8R75HwEfDR8VHyEfKR8xHzkfQR9NH1kfZR9xH30fhR+NH5UfnR+lH60fuR/BH8kf1R/dIAEgDSNZI | |
|
3394 | 2EjbSN5I4EjiSOVI6EjqSO1I8EjzSPZI+Uj8SP9JAkkESQdJCkkNSQ9JEUkUSRdJGkkdSSBJI0kmSShJ | |
|
3395 | K0ktSTBJM0k2STlJPEk+SUFJRElHSUpJTUlPSVJJVElWSVhJWklcSV5JYEliSWVJaElrSW1JcElzSXZJ | |
|
3396 | eEl7SX5JgEmCSYRJh0mJSYtJjkmQSZNJlkmYSZpJnEmeSaFJpEmnSapJrEmvSbJJtEm3SbpJvUm/ScJJ | |
|
3397 | xEnHSclJy0nNSdBJ0knUSdZJ2UncSd9J4UnkSe1J8ErDSsZKyUrMSs9K0krVSthK20reSuFK5ErnSupK | |
|
3398 | 7UrwSvNK9kr5SvxK/0sCSwVLCEsLSw5LEUsUSxdLGksdSyBLI0smSylLLEsvSzJLNUs4SztLPktBS0RL | |
|
3399 | R0tKS01LUEtTS1ZLWUtcS19LYktlS2hLa0tuS3FLdEt3S3pLfUuAS4NLhkuJS4xLj0uSS5VLmEubS55L | |
|
3400 | oUukS6dLqkutS7BLs0u2S7lLvEu/S8JLxUvIS8tLzkvRS9RL10vaS91L4EvjS+ZL6UvsS+9L8kv1S/hL | |
|
3401 | +0wWTCtMLUxBTFtMdUyZTK5MwUzWTNhM9E0rTVVNcE15TYdNiU2bTZ1NqU3ATeVN6k39TglOLE4/TlhO | |
|
3402 | ZU6BToxOr06zTrVOzE7YTuJPA08YTz1PVk9jT29PlE+uT8JPzk/nT/lQFVAsUEpQZ1B6UJpQplCwUO9R | |
|
3403 | DlEaUThRTlFlUXhRi1GfUbdRulHUUfBR/FIKUipSLFI6UlJSaVJ8UqZStFK2UtBS3VMAUwRTEFMvU0RT | |
|
3404 | UFNpU3dTkVOkU7BTzlPqVABUBFQWVDNUP1RBVEpUTVROVFdUWlRbVGRUZ1WYVZtVnVWgVaNVplWpVatV | |
|
3405 | rVWwVbNVtVW4VbtVvlXBVcRVx1XJVcxVz1XRVdRV11XaVd1V4FXjVeVV6FXrVe5V8VX0VfZV+FX6Vf1W | |
|
3406 | AFYDVgZWCVYMVg9WEVYUVhdWGlYcVh5WIVYkViZWKFYrVi5WMVY0VjdWOVY7Vj5WQVZEVkdWSlZMVk9W | |
|
3407 | UlZUVlZWWFZaVlxWXlZgVmJWZVZoVmtWblZwVnNWdlZ5VnxWf1aCVoRWh1aKVo1Wj1aRVpNWlVaYVppW | |
|
3408 | nFafVqJWpVanVqpWrVawVrNWtla4VrpWvFa+VsBWwlbFVshWy1bOVtBW01bVVthW21bdVuBW41blVuhW | |
|
3409 | 6lbtVu9W8lb1VvdW+Vb7Vv5XAVcDVwVXCFcKVwxXD1cSVxVXGFcbVx1XIFciVyVXLlcxWGJYZVhoWGtY | |
|
3410 | blhxWHRYd1h6WH1YgFiDWIZYiViMWI9YkliVWJhYm1ieWKFYpFinWKpYrViwWLNYtli5WLxYv1jCWMVY | |
|
3411 | yFjLWM5Y0VjUWNdY2ljdWOBY41jmWOlY7FjvWPJY9Vj4WPtY/lkBWQRZB1kKWQ1ZEFkTWRZZGVkcWR9Z | |
|
3412 | IlklWShZK1kuWTFZNFk3WTpZPVlAWUNZRllJWUxZT1lSWVVZWFlbWV5ZYVlkWWdZalltWXBZc1l2WXlZ | |
|
3413 | fFl/WYJZhVmIWYtZjlmRWZRZl1maWZ1ZoFmjWaZZqVmsWa9Zslm1WbhZu1m+WcFZxFnHWcpZzVnQWdNZ | |
|
3414 | 1lnZWdxZ31niWeVZ6FnrWe5Z8Vn0WfdZ+ln9WgBaA1oGWglaDFoPWhJaFVoYWhtaHlohWiRaJ1oqWi1a | |
|
3415 | L1oyWjRaNlo5WjxaPlpAWkJaRFpGWklaTFpOWlBaUlpUWlZaWFpbWl1aYFpiWmRaZlpoWmtabVpwWnJa | |
|
3416 | dFp2WnlafFp+WoBaglqEWoZaiFqKWoxaj1qSWpVamFqbWp5aoVqjWqZaqFqqWqxarlqwWrNatlq5Wrta | |
|
3417 | vVq/WsFaxFrGWshaylrNWtBa0lrVWtda2lrcWt9a4VrjWuVa51rpWuxa71rxWvRa91r6Wvxa/lsAWwNb | |
|
3418 | BlsIWwpbDFsOWxFbE1sWWxhbGlscWx5bIVsjWyZbKVssWy9bMVs0WzdbOVs7Wz1bP1tCW0VbR1tJW0xb | |
|
3419 | T1tRW1NbVltZW1tbXlthW2NbZltoW2pbbVtwW3lbe1t+W4Bbg1uGW4hbiluNW49bkluUW5ZbmFuaW6Nb | |
|
3420 | pVumW69bsluzW7xbv1vAW8lbzgAAAAAAAAICAAAAAAAAC8MAAAAAAAAAAAAAAAAAAFvdA</bytes> | |
|
3421 | </object> | |
|
3422 | </data> | |
|
3423 | </archive> |
@@ -0,0 +1,293 b'' | |||
|
1 | // !$*UTF8*$! | |
|
2 | { | |
|
3 | archiveVersion = 1; | |
|
4 | classes = { | |
|
5 | }; | |
|
6 | objectVersion = 44; | |
|
7 | objects = { | |
|
8 | ||
|
9 | /* Begin PBXBuildFile section */ | |
|
10 | 77631A270C06C501005415CB /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77631A260C06C501005415CB /* Python.framework */; }; | |
|
11 | 77631A3F0C0748CF005415CB /* main.py in Resources */ = {isa = PBXBuildFile; fileRef = 77631A3E0C0748CF005415CB /* main.py */; }; | |
|
12 | 7790198F0C07548A00326F66 /* IPython1SandboxAppDelegate.py in Resources */ = {isa = PBXBuildFile; fileRef = 7790198E0C07548A00326F66 /* IPython1SandboxAppDelegate.py */; }; | |
|
13 | 77C8C1F90C07829500965286 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 77C8C1F70C07829500965286 /* MainMenu.xib */; }; | |
|
14 | 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; | |
|
15 | 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; | |
|
16 | 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; | |
|
17 | /* End PBXBuildFile section */ | |
|
18 | ||
|
19 | /* Begin PBXFileReference section */ | |
|
20 | 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; | |
|
21 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; | |
|
22 | 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; | |
|
23 | 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; | |
|
24 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; | |
|
25 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; | |
|
26 | 32CA4F630368D1EE00C91783 /* IPython1Sandbox_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IPython1Sandbox_Prefix.pch; sourceTree = "<group>"; }; | |
|
27 | 4CA32F870D8879B100311764 /* IPythonCocoaController Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "IPythonCocoaController Tests-Info.plist"; sourceTree = "<group>"; }; | |
|
28 | 77631A260C06C501005415CB /* Python.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Python.framework; path = /System/Library/Frameworks/Python.framework; sourceTree = "<absolute>"; }; | |
|
29 | 77631A3E0C0748CF005415CB /* main.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = main.py; sourceTree = "<group>"; }; | |
|
30 | 7790198E0C07548A00326F66 /* IPython1SandboxAppDelegate.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = IPython1SandboxAppDelegate.py; sourceTree = "<group>"; }; | |
|
31 | 77C8C1F80C07829500965286 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; }; | |
|
32 | 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | |
|
33 | 8D1107320486CEB800E47090 /* IPython1Sandbox.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IPython1Sandbox.app; sourceTree = BUILT_PRODUCTS_DIR; }; | |
|
34 | /* End PBXFileReference section */ | |
|
35 | ||
|
36 | /* Begin PBXFrameworksBuildPhase section */ | |
|
37 | 8D11072E0486CEB800E47090 /* Frameworks */ = { | |
|
38 | isa = PBXFrameworksBuildPhase; | |
|
39 | buildActionMask = 2147483647; | |
|
40 | files = ( | |
|
41 | 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, | |
|
42 | 77631A270C06C501005415CB /* Python.framework in Frameworks */, | |
|
43 | ); | |
|
44 | runOnlyForDeploymentPostprocessing = 0; | |
|
45 | }; | |
|
46 | /* End PBXFrameworksBuildPhase section */ | |
|
47 | ||
|
48 | /* Begin PBXGroup section */ | |
|
49 | 080E96DDFE201D6D7F000001 /* Classes */ = { | |
|
50 | isa = PBXGroup; | |
|
51 | children = ( | |
|
52 | 7790198E0C07548A00326F66 /* IPython1SandboxAppDelegate.py */, | |
|
53 | ); | |
|
54 | name = Classes; | |
|
55 | sourceTree = "<group>"; | |
|
56 | }; | |
|
57 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { | |
|
58 | isa = PBXGroup; | |
|
59 | children = ( | |
|
60 | 77631A260C06C501005415CB /* Python.framework */, | |
|
61 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, | |
|
62 | ); | |
|
63 | name = "Linked Frameworks"; | |
|
64 | sourceTree = "<group>"; | |
|
65 | }; | |
|
66 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { | |
|
67 | isa = PBXGroup; | |
|
68 | children = ( | |
|
69 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */, | |
|
70 | 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, | |
|
71 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */, | |
|
72 | ); | |
|
73 | name = "Other Frameworks"; | |
|
74 | sourceTree = "<group>"; | |
|
75 | }; | |
|
76 | 19C28FACFE9D520D11CA2CBB /* Products */ = { | |
|
77 | isa = PBXGroup; | |
|
78 | children = ( | |
|
79 | 8D1107320486CEB800E47090 /* IPython1Sandbox.app */, | |
|
80 | ); | |
|
81 | name = Products; | |
|
82 | sourceTree = "<group>"; | |
|
83 | }; | |
|
84 | 29B97314FDCFA39411CA2CEA /* IPython1Sandbox */ = { | |
|
85 | isa = PBXGroup; | |
|
86 | children = ( | |
|
87 | 080E96DDFE201D6D7F000001 /* Classes */, | |
|
88 | 29B97315FDCFA39411CA2CEA /* Other Sources */, | |
|
89 | 29B97317FDCFA39411CA2CEA /* Resources */, | |
|
90 | 29B97323FDCFA39411CA2CEA /* Frameworks */, | |
|
91 | 19C28FACFE9D520D11CA2CBB /* Products */, | |
|
92 | 4CA32F870D8879B100311764 /* IPythonCocoaController Tests-Info.plist */, | |
|
93 | ); | |
|
94 | name = IPython1Sandbox; | |
|
95 | sourceTree = "<group>"; | |
|
96 | }; | |
|
97 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { | |
|
98 | isa = PBXGroup; | |
|
99 | children = ( | |
|
100 | 32CA4F630368D1EE00C91783 /* IPython1Sandbox_Prefix.pch */, | |
|
101 | 29B97316FDCFA39411CA2CEA /* main.m */, | |
|
102 | 77631A3E0C0748CF005415CB /* main.py */, | |
|
103 | ); | |
|
104 | name = "Other Sources"; | |
|
105 | sourceTree = "<group>"; | |
|
106 | }; | |
|
107 | 29B97317FDCFA39411CA2CEA /* Resources */ = { | |
|
108 | isa = PBXGroup; | |
|
109 | children = ( | |
|
110 | 77C8C1F70C07829500965286 /* MainMenu.xib */, | |
|
111 | 8D1107310486CEB800E47090 /* Info.plist */, | |
|
112 | 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, | |
|
113 | ); | |
|
114 | name = Resources; | |
|
115 | sourceTree = "<group>"; | |
|
116 | }; | |
|
117 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { | |
|
118 | isa = PBXGroup; | |
|
119 | children = ( | |
|
120 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, | |
|
121 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, | |
|
122 | ); | |
|
123 | name = Frameworks; | |
|
124 | sourceTree = "<group>"; | |
|
125 | }; | |
|
126 | /* End PBXGroup section */ | |
|
127 | ||
|
128 | /* Begin PBXNativeTarget section */ | |
|
129 | 8D1107260486CEB800E47090 /* IPython1Sandbox */ = { | |
|
130 | isa = PBXNativeTarget; | |
|
131 | buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "IPython1Sandbox" */; | |
|
132 | buildPhases = ( | |
|
133 | 8D1107290486CEB800E47090 /* Resources */, | |
|
134 | 8D11072C0486CEB800E47090 /* Sources */, | |
|
135 | 8D11072E0486CEB800E47090 /* Frameworks */, | |
|
136 | ); | |
|
137 | buildRules = ( | |
|
138 | ); | |
|
139 | dependencies = ( | |
|
140 | ); | |
|
141 | name = IPython1Sandbox; | |
|
142 | productInstallPath = "$(HOME)/Applications"; | |
|
143 | productName = IPython1Sandbox; | |
|
144 | productReference = 8D1107320486CEB800E47090 /* IPython1Sandbox.app */; | |
|
145 | productType = "com.apple.product-type.application"; | |
|
146 | }; | |
|
147 | /* End PBXNativeTarget section */ | |
|
148 | ||
|
149 | /* Begin PBXProject section */ | |
|
150 | 29B97313FDCFA39411CA2CEA /* Project object */ = { | |
|
151 | isa = PBXProject; | |
|
152 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "IPython1Sandbox" */; | |
|
153 | compatibilityVersion = "Xcode 3.0"; | |
|
154 | hasScannedForEncodings = 1; | |
|
155 | mainGroup = 29B97314FDCFA39411CA2CEA /* IPython1Sandbox */; | |
|
156 | projectDirPath = ""; | |
|
157 | projectRoot = ""; | |
|
158 | targets = ( | |
|
159 | 8D1107260486CEB800E47090 /* IPython1Sandbox */, | |
|
160 | ); | |
|
161 | }; | |
|
162 | /* End PBXProject section */ | |
|
163 | ||
|
164 | /* Begin PBXResourcesBuildPhase section */ | |
|
165 | 8D1107290486CEB800E47090 /* Resources */ = { | |
|
166 | isa = PBXResourcesBuildPhase; | |
|
167 | buildActionMask = 2147483647; | |
|
168 | files = ( | |
|
169 | 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, | |
|
170 | 77631A3F0C0748CF005415CB /* main.py in Resources */, | |
|
171 | 7790198F0C07548A00326F66 /* IPython1SandboxAppDelegate.py in Resources */, | |
|
172 | 77C8C1F90C07829500965286 /* MainMenu.xib in Resources */, | |
|
173 | ); | |
|
174 | runOnlyForDeploymentPostprocessing = 0; | |
|
175 | }; | |
|
176 | /* End PBXResourcesBuildPhase section */ | |
|
177 | ||
|
178 | /* Begin PBXSourcesBuildPhase section */ | |
|
179 | 8D11072C0486CEB800E47090 /* Sources */ = { | |
|
180 | isa = PBXSourcesBuildPhase; | |
|
181 | buildActionMask = 2147483647; | |
|
182 | files = ( | |
|
183 | 8D11072D0486CEB800E47090 /* main.m in Sources */, | |
|
184 | ); | |
|
185 | runOnlyForDeploymentPostprocessing = 0; | |
|
186 | }; | |
|
187 | /* End PBXSourcesBuildPhase section */ | |
|
188 | ||
|
189 | /* Begin PBXVariantGroup section */ | |
|
190 | 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { | |
|
191 | isa = PBXVariantGroup; | |
|
192 | children = ( | |
|
193 | 089C165DFE840E0CC02AAC07 /* English */, | |
|
194 | ); | |
|
195 | name = InfoPlist.strings; | |
|
196 | sourceTree = "<group>"; | |
|
197 | }; | |
|
198 | 77C8C1F70C07829500965286 /* MainMenu.xib */ = { | |
|
199 | isa = PBXVariantGroup; | |
|
200 | children = ( | |
|
201 | 77C8C1F80C07829500965286 /* English */, | |
|
202 | ); | |
|
203 | name = MainMenu.xib; | |
|
204 | sourceTree = "<group>"; | |
|
205 | }; | |
|
206 | /* End PBXVariantGroup section */ | |
|
207 | ||
|
208 | /* Begin XCBuildConfiguration section */ | |
|
209 | C01FCF4B08A954540054247B /* Debug */ = { | |
|
210 | isa = XCBuildConfiguration; | |
|
211 | buildSettings = { | |
|
212 | COPY_PHASE_STRIP = NO; | |
|
213 | CURRENT_PROJECT_VERSION = 1; | |
|
214 | GCC_DYNAMIC_NO_PIC = NO; | |
|
215 | GCC_ENABLE_FIX_AND_CONTINUE = YES; | |
|
216 | GCC_MODEL_TUNING = G5; | |
|
217 | GCC_OPTIMIZATION_LEVEL = 0; | |
|
218 | GCC_PRECOMPILE_PREFIX_HEADER = YES; | |
|
219 | GCC_PREFIX_HEADER = IPython1Sandbox_Prefix.pch; | |
|
220 | INFOPLIST_FILE = Info.plist; | |
|
221 | INSTALL_PATH = "$(HOME)/Applications"; | |
|
222 | PRODUCT_NAME = IPython1Sandbox; | |
|
223 | VERSIONING_SYSTEM = "apple-generic"; | |
|
224 | WRAPPER_EXTENSION = app; | |
|
225 | ZERO_LINK = YES; | |
|
226 | }; | |
|
227 | name = Debug; | |
|
228 | }; | |
|
229 | C01FCF4C08A954540054247B /* Release */ = { | |
|
230 | isa = XCBuildConfiguration; | |
|
231 | buildSettings = { | |
|
232 | CURRENT_PROJECT_VERSION = 1; | |
|
233 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | |
|
234 | GCC_MODEL_TUNING = G5; | |
|
235 | GCC_PRECOMPILE_PREFIX_HEADER = YES; | |
|
236 | GCC_PREFIX_HEADER = IPython1Sandbox_Prefix.pch; | |
|
237 | INFOPLIST_FILE = Info.plist; | |
|
238 | INSTALL_PATH = "$(HOME)/Applications"; | |
|
239 | PRODUCT_NAME = IPython1Sandbox; | |
|
240 | VERSIONING_SYSTEM = "apple-generic"; | |
|
241 | WRAPPER_EXTENSION = app; | |
|
242 | }; | |
|
243 | name = Release; | |
|
244 | }; | |
|
245 | C01FCF4F08A954540054247B /* Debug */ = { | |
|
246 | isa = XCBuildConfiguration; | |
|
247 | buildSettings = { | |
|
248 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | |
|
249 | GCC_WARN_UNUSED_VARIABLE = YES; | |
|
250 | PREBINDING = NO; | |
|
251 | SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; | |
|
252 | }; | |
|
253 | name = Debug; | |
|
254 | }; | |
|
255 | C01FCF5008A954540054247B /* Release */ = { | |
|
256 | isa = XCBuildConfiguration; | |
|
257 | buildSettings = { | |
|
258 | ARCHS = ( | |
|
259 | ppc, | |
|
260 | i386, | |
|
261 | ); | |
|
262 | GCC_WARN_ABOUT_RETURN_TYPE = YES; | |
|
263 | GCC_WARN_UNUSED_VARIABLE = YES; | |
|
264 | PREBINDING = NO; | |
|
265 | SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; | |
|
266 | }; | |
|
267 | name = Release; | |
|
268 | }; | |
|
269 | /* End XCBuildConfiguration section */ | |
|
270 | ||
|
271 | /* Begin XCConfigurationList section */ | |
|
272 | C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "IPython1Sandbox" */ = { | |
|
273 | isa = XCConfigurationList; | |
|
274 | buildConfigurations = ( | |
|
275 | C01FCF4B08A954540054247B /* Debug */, | |
|
276 | C01FCF4C08A954540054247B /* Release */, | |
|
277 | ); | |
|
278 | defaultConfigurationIsVisible = 0; | |
|
279 | defaultConfigurationName = Release; | |
|
280 | }; | |
|
281 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "IPython1Sandbox" */ = { | |
|
282 | isa = XCConfigurationList; | |
|
283 | buildConfigurations = ( | |
|
284 | C01FCF4F08A954540054247B /* Debug */, | |
|
285 | C01FCF5008A954540054247B /* Release */, | |
|
286 | ); | |
|
287 | defaultConfigurationIsVisible = 0; | |
|
288 | defaultConfigurationName = Release; | |
|
289 | }; | |
|
290 | /* End XCConfigurationList section */ | |
|
291 | }; | |
|
292 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; | |
|
293 | } |
@@ -0,0 +1,39 b'' | |||
|
1 | # | |
|
2 | # IPython1SandboxAppDelegate.py | |
|
3 | # IPython1Sandbox | |
|
4 | # | |
|
5 | # Created by Barry Wark on 3/4/08. | |
|
6 | # Copyright __MyCompanyName__ 2008. All rights reserved. | |
|
7 | # | |
|
8 | ||
|
9 | from Foundation import NSObject, NSPredicate | |
|
10 | import objc | |
|
11 | import threading | |
|
12 | ||
|
13 | from PyObjCTools import AppHelper | |
|
14 | ||
|
15 | from twisted.internet import reactor | |
|
16 | ||
|
17 | class IPython1SandboxAppDelegate(NSObject): | |
|
18 | ipythonController = objc.IBOutlet() | |
|
19 | ||
|
20 | def applicationShouldTerminate_(self, sender): | |
|
21 | if reactor.running: | |
|
22 | reactor.addSystemEventTrigger( | |
|
23 | 'after', 'shutdown', AppHelper.stopEventLoop) | |
|
24 | reactor.stop() | |
|
25 | return False | |
|
26 | return True | |
|
27 | ||
|
28 | ||
|
29 | def applicationDidFinishLaunching_(self, sender): | |
|
30 | reactor.interleave(AppHelper.callAfter) | |
|
31 | assert(reactor.running) | |
|
32 | ||
|
33 | ||
|
34 | def workspaceFilterPredicate(self): | |
|
35 | return NSPredicate.predicateWithFormat_("NOT (self.value BEGINSWITH '<')") | |
|
36 | ||
|
37 | ||
|
38 | ||
|
39 |
@@ -0,0 +1,7 b'' | |||
|
1 | // | |
|
2 | // Prefix header for all source files of the 'IPython1Sandbox' target in the 'IPython1Sandbox' project | |
|
3 | // | |
|
4 | ||
|
5 | #ifdef __OBJC__ | |
|
6 | #import <Cocoa/Cocoa.h> | |
|
7 | #endif |
@@ -0,0 +1,20 b'' | |||
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |
|
2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
|
3 | <plist version="1.0"> | |
|
4 | <dict> | |
|
5 | <key>CFBundleDevelopmentRegion</key> | |
|
6 | <string>English</string> | |
|
7 | <key>CFBundleExecutable</key> | |
|
8 | <string>${EXECUTABLE_NAME}</string> | |
|
9 | <key>CFBundleIdentifier</key> | |
|
10 | <string>com.yourcompany.IPythonCocoaController Tests</string> | |
|
11 | <key>CFBundleInfoDictionaryVersion</key> | |
|
12 | <string>6.0</string> | |
|
13 | <key>CFBundlePackageType</key> | |
|
14 | <string>BNDL</string> | |
|
15 | <key>CFBundleSignature</key> | |
|
16 | <string>????</string> | |
|
17 | <key>CFBundleVersion</key> | |
|
18 | <string>1.0</string> | |
|
19 | </dict> | |
|
20 | </plist> |
@@ -0,0 +1,30 b'' | |||
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |
|
2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
|
3 | <plist version="1.0"> | |
|
4 | <dict> | |
|
5 | <key>CFBundleDevelopmentRegion</key> | |
|
6 | <string>English</string> | |
|
7 | <key>CFBundleExecutable</key> | |
|
8 | <string>${EXECUTABLE_NAME}</string> | |
|
9 | <key>CFBundleIconFile</key> | |
|
10 | <string></string> | |
|
11 | <key>CFBundleIdentifier</key> | |
|
12 | <string>com.yourcompany.IPython1Sandbox</string> | |
|
13 | <key>CFBundleInfoDictionaryVersion</key> | |
|
14 | <string>6.0</string> | |
|
15 | <key>CFBundleName</key> | |
|
16 | <string>${PRODUCT_NAME}</string> | |
|
17 | <key>CFBundlePackageType</key> | |
|
18 | <string>APPL</string> | |
|
19 | <key>CFBundleShortVersionString</key> | |
|
20 | <string>0.1</string> | |
|
21 | <key>CFBundleSignature</key> | |
|
22 | <string>????</string> | |
|
23 | <key>CFBundleVersion</key> | |
|
24 | <string>1.0</string> | |
|
25 | <key>NSMainNibFile</key> | |
|
26 | <string>MainMenu</string> | |
|
27 | <key>NSPrincipalClass</key> | |
|
28 | <string>NSApplication</string> | |
|
29 | </dict> | |
|
30 | </plist> |
@@ -0,0 +1,49 b'' | |||
|
1 | // | |
|
2 | // main.m | |
|
3 | // IPython1Sandbox | |
|
4 | // | |
|
5 | // Created by Barry Wark on 3/4/08. | |
|
6 | // Copyright __MyCompanyName__ 2008. All rights reserved. | |
|
7 | // | |
|
8 | ||
|
9 | #import <Python/Python.h> | |
|
10 | #import <Cocoa/Cocoa.h> | |
|
11 | ||
|
12 | int main(int argc, char *argv[]) | |
|
13 | { | |
|
14 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | |
|
15 | ||
|
16 | NSBundle *mainBundle = [NSBundle mainBundle]; | |
|
17 | NSString *resourcePath = [mainBundle resourcePath]; | |
|
18 | NSArray *pythonPathArray = [NSArray arrayWithObjects: resourcePath, [resourcePath stringByAppendingPathComponent:@"PyObjC"], nil]; | |
|
19 | ||
|
20 | setenv("PYTHONPATH", [[pythonPathArray componentsJoinedByString:@":"] UTF8String], 1); | |
|
21 | ||
|
22 | NSArray *possibleMainExtensions = [NSArray arrayWithObjects: @"py", @"pyc", @"pyo", nil]; | |
|
23 | NSString *mainFilePath = nil; | |
|
24 | ||
|
25 | for (NSString *possibleMainExtension in possibleMainExtensions) { | |
|
26 | mainFilePath = [mainBundle pathForResource: @"main" ofType: possibleMainExtension]; | |
|
27 | if ( mainFilePath != nil ) break; | |
|
28 | } | |
|
29 | ||
|
30 | if ( !mainFilePath ) { | |
|
31 | [NSException raise: NSInternalInconsistencyException format: @"%s:%d main() Failed to find the Main.{py,pyc,pyo} file in the application wrapper's Resources directory.", __FILE__, __LINE__]; | |
|
32 | } | |
|
33 | ||
|
34 | Py_SetProgramName("/usr/bin/python"); | |
|
35 | Py_Initialize(); | |
|
36 | PySys_SetArgv(argc, (char **)argv); | |
|
37 | ||
|
38 | const char *mainFilePathPtr = [mainFilePath UTF8String]; | |
|
39 | FILE *mainFile = fopen(mainFilePathPtr, "r"); | |
|
40 | int result = PyRun_SimpleFile(mainFile, (char *)[[mainFilePath lastPathComponent] UTF8String]); | |
|
41 | ||
|
42 | if ( result != 0 ) | |
|
43 | [NSException raise: NSInternalInconsistencyException | |
|
44 | format: @"%s:%d main() PyRun_SimpleFile failed with file '%@'. See console for errors.", __FILE__, __LINE__, mainFilePath]; | |
|
45 | ||
|
46 | [pool drain]; | |
|
47 | ||
|
48 | return result; | |
|
49 | } |
@@ -0,0 +1,24 b'' | |||
|
1 | # | |
|
2 | # main.py | |
|
3 | # IPython1Sandbox | |
|
4 | # | |
|
5 | # Created by Barry Wark on 3/4/08. | |
|
6 | # Copyright __MyCompanyName__ 2008. All rights reserved. | |
|
7 | # | |
|
8 | ||
|
9 | #import modules required by application | |
|
10 | import objc | |
|
11 | import Foundation | |
|
12 | import AppKit | |
|
13 | ||
|
14 | from PyObjCTools import AppHelper | |
|
15 | ||
|
16 | from twisted.internet import _threadedselect | |
|
17 | reactor = _threadedselect.install() | |
|
18 | ||
|
19 | # import modules containing classes required to start application and load MainMenu.nib | |
|
20 | import IPython1SandboxAppDelegate | |
|
21 | import IPython.frontend.cocoa.cocoa_frontend | |
|
22 | ||
|
23 | # pass control to AppKit | |
|
24 | AppHelper.runEventLoop() |
|
1 | NO CONTENT: new file 100644 |
@@ -0,0 +1,27 b'' | |||
|
1 | 2008-03-14 00:06:49-0700 [-] Log opened. | |
|
2 | 2008-03-14 00:06:49-0700 [-] --> ipython1.frontend.cocoa.tests.test_cocoa_frontend.TestIPythonCocoaControler.testControllerCompletesToken <-- | |
|
3 | 2008-03-14 00:06:49-0700 [-] Unhandled error in Deferred: | |
|
4 | 2008-03-14 00:06:49-0700 [-] Unhandled Error | |
|
5 | Traceback (most recent call last): | |
|
6 | File "/Library/Python/2.5/site-packages/Twisted-2.5.0_rUnknown-py2.5-macosx-10.3-i386.egg/twisted/internet/utils.py", line 144, in runWithWarningsSuppressed | |
|
7 | result = f(*a, **kw) | |
|
8 | File "/Users/barry/Desktop/ipython1-cocoa/ipython1/frontend/cocoa/tests/test_cocoa_frontend.py", line 94, in testControllerCompletesToken | |
|
9 | self.controller.executeRequest([code]).addCallback(testCompletes) | |
|
10 | File "/Library/Python/2.5/site-packages/Twisted-2.5.0_rUnknown-py2.5-macosx-10.3-i386.egg/twisted/internet/defer.py", line 196, in addCallback | |
|
11 | callbackKeywords=kw) | |
|
12 | File "/Library/Python/2.5/site-packages/Twisted-2.5.0_rUnknown-py2.5-macosx-10.3-i386.egg/twisted/internet/defer.py", line 187, in addCallbacks | |
|
13 | self._runCallbacks() | |
|
14 | --- <exception caught here> --- | |
|
15 | File "/Library/Python/2.5/site-packages/Twisted-2.5.0_rUnknown-py2.5-macosx-10.3-i386.egg/twisted/internet/defer.py", line 325, in _runCallbacks | |
|
16 | self.result = callback(self.result, *args, **kw) | |
|
17 | File "/Users/barry/Desktop/ipython1-cocoa/ipython1/frontend/cocoa/tests/test_cocoa_frontend.py", line 89, in testCompletes | |
|
18 | self.assert_("longNameVariable" in result) | |
|
19 | File "/Library/Python/2.5/site-packages/Twisted-2.5.0_rUnknown-py2.5-macosx-10.3-i386.egg/twisted/trial/unittest.py", line 136, in failUnless | |
|
20 | raise self.failureException(msg) | |
|
21 | twisted.trial.unittest.FailTest: None | |
|
22 | ||
|
23 | 2008-03-14 00:06:49-0700 [-] --> ipython1.frontend.cocoa.tests.test_cocoa_frontend.TestIPythonCocoaControler.testControllerExecutesCode <-- | |
|
24 | 2008-03-14 00:06:49-0700 [-] --> ipython1.frontend.cocoa.tests.test_cocoa_frontend.TestIPythonCocoaControler.testControllerInstantiatesIEngineInteractive <-- | |
|
25 | 2008-03-14 00:06:49-0700 [-] --> ipython1.frontend.cocoa.tests.test_cocoa_frontend.TestIPythonCocoaControler.testControllerMirrorsUserNSWithValuesAsStrings <-- | |
|
26 | 2008-03-14 00:06:49-0700 [-] --> ipython1.frontend.cocoa.tests.test_cocoa_frontend.TestIPythonCocoaControler.testControllerRaisesCompilerErrorForIllegalCode <-- | |
|
27 | 2008-03-14 00:06:49-0700 [-] --> ipython1.frontend.cocoa.tests.test_cocoa_frontend.TestIPythonCocoaControler.testControllerReturnsNoneForIncompleteCode <-- |
@@ -0,0 +1,72 b'' | |||
|
1 | # encoding: utf-8 | |
|
2 | """This file contains unittests for the | |
|
3 | IPython.frontend.cocoa.cocoa_frontend module. | |
|
4 | """ | |
|
5 | __docformat__ = "restructuredtext en" | |
|
6 | ||
|
7 | #--------------------------------------------------------------------------- | |
|
8 | # Copyright (C) 2005 The IPython Development Team | |
|
9 | # | |
|
10 | # Distributed under the terms of the BSD License. The full license is in | |
|
11 | # the file COPYING, distributed as part of this software. | |
|
12 | #--------------------------------------------------------------------------- | |
|
13 | ||
|
14 | #--------------------------------------------------------------------------- | |
|
15 | # Imports | |
|
16 | #--------------------------------------------------------------------------- | |
|
17 | from IPython.kernel.core.interpreter import Interpreter | |
|
18 | import IPython.kernel.engineservice as es | |
|
19 | from IPython.testing.util import DeferredTestCase | |
|
20 | from twisted.internet.defer import succeed | |
|
21 | from IPython.frontend.cocoa.cocoa_frontend import IPythonCocoaController | |
|
22 | ||
|
23 | from Foundation import NSMakeRect | |
|
24 | from AppKit import NSTextView, NSScrollView | |
|
25 | ||
|
26 | class TestIPythonCocoaControler(DeferredTestCase): | |
|
27 | """Tests for IPythonCocoaController""" | |
|
28 | ||
|
29 | def setUp(self): | |
|
30 | self.controller = IPythonCocoaController.alloc().init() | |
|
31 | self.engine = es.EngineService() | |
|
32 | self.engine.startService() | |
|
33 | ||
|
34 | ||
|
35 | def tearDown(self): | |
|
36 | self.controller = None | |
|
37 | self.engine.stopService() | |
|
38 | ||
|
39 | def testControllerExecutesCode(self): | |
|
40 | code ="""5+5""" | |
|
41 | expected = Interpreter().execute(code) | |
|
42 | del expected['number'] | |
|
43 | def removeNumberAndID(result): | |
|
44 | del result['number'] | |
|
45 | del result['id'] | |
|
46 | return result | |
|
47 | self.assertDeferredEquals( | |
|
48 | self.controller.execute(code).addCallback(removeNumberAndID), | |
|
49 | expected) | |
|
50 | ||
|
51 | def testControllerMirrorsUserNSWithValuesAsStrings(self): | |
|
52 | code = """userns1=1;userns2=2""" | |
|
53 | def testControllerUserNS(result): | |
|
54 | self.assertEquals(self.controller.userNS['userns1'], 1) | |
|
55 | self.assertEquals(self.controller.userNS['userns2'], 2) | |
|
56 | ||
|
57 | self.controller.execute(code).addCallback(testControllerUserNS) | |
|
58 | ||
|
59 | ||
|
60 | def testControllerInstantiatesIEngine(self): | |
|
61 | self.assert_(es.IEngineBase.providedBy(self.controller.engine)) | |
|
62 | ||
|
63 | def testControllerCompletesToken(self): | |
|
64 | code = """longNameVariable=10""" | |
|
65 | def testCompletes(result): | |
|
66 | self.assert_("longNameVariable" in result) | |
|
67 | ||
|
68 | def testCompleteToken(result): | |
|
69 | self.controller.complete("longNa").addCallback(testCompletes) | |
|
70 | ||
|
71 | self.controller.execute(code).addCallback(testCompletes) | |
|
72 |
@@ -0,0 +1,352 b'' | |||
|
1 | # encoding: utf-8 | |
|
2 | # -*- test-case-name: IPython.frontend.tests.test_frontendbase -*- | |
|
3 | """ | |
|
4 | frontendbase provides an interface and base class for GUI frontends for | |
|
5 | IPython.kernel/IPython.kernel.core. | |
|
6 | ||
|
7 | Frontend implementations will likely want to subclass FrontEndBase. | |
|
8 | ||
|
9 | Author: Barry Wark | |
|
10 | """ | |
|
11 | __docformat__ = "restructuredtext en" | |
|
12 | ||
|
13 | #------------------------------------------------------------------------------- | |
|
14 | # Copyright (C) 2008 The IPython Development Team | |
|
15 | # | |
|
16 | # Distributed under the terms of the BSD License. The full license is in | |
|
17 | # the file COPYING, distributed as part of this software. | |
|
18 | #------------------------------------------------------------------------------- | |
|
19 | ||
|
20 | #------------------------------------------------------------------------------- | |
|
21 | # Imports | |
|
22 | #------------------------------------------------------------------------------- | |
|
23 | import string | |
|
24 | import uuid | |
|
25 | import _ast | |
|
26 | ||
|
27 | import zope.interface as zi | |
|
28 | ||
|
29 | from IPython.kernel.core.history import FrontEndHistory | |
|
30 | from IPython.kernel.core.util import Bunch | |
|
31 | from IPython.kernel.engineservice import IEngineCore | |
|
32 | ||
|
33 | from twisted.python.failure import Failure | |
|
34 | ||
|
35 | ############################################################################## | |
|
36 | # TEMPORARY!!! fake configuration, while we decide whether to use tconfig or | |
|
37 | # not | |
|
38 | ||
|
39 | rc = Bunch() | |
|
40 | rc.prompt_in1 = r'In [$number]: ' | |
|
41 | rc.prompt_in2 = r'...' | |
|
42 | rc.prompt_out = r'Out [$number]: ' | |
|
43 | ||
|
44 | ############################################################################## | |
|
45 | ||
|
46 | class IFrontEndFactory(zi.Interface): | |
|
47 | """Factory interface for frontends.""" | |
|
48 | ||
|
49 | def __call__(engine=None, history=None): | |
|
50 | """ | |
|
51 | Parameters: | |
|
52 | interpreter : IPython.kernel.engineservice.IEngineCore | |
|
53 | """ | |
|
54 | ||
|
55 | pass | |
|
56 | ||
|
57 | ||
|
58 | ||
|
59 | class IFrontEnd(zi.Interface): | |
|
60 | """Interface for frontends. All methods return t.i.d.Deferred""" | |
|
61 | ||
|
62 | zi.Attribute("input_prompt_template", "string.Template instance\ | |
|
63 | substituteable with execute result.") | |
|
64 | zi.Attribute("output_prompt_template", "string.Template instance\ | |
|
65 | substituteable with execute result.") | |
|
66 | zi.Attribute("continuation_prompt_template", "string.Template instance\ | |
|
67 | substituteable with execute result.") | |
|
68 | ||
|
69 | def update_cell_prompt(self, result): | |
|
70 | """Subclass may override to update the input prompt for a block. | |
|
71 | Since this method will be called as a | |
|
72 | twisted.internet.defer.Deferred's callback, | |
|
73 | implementations should return result when finished. | |
|
74 | ||
|
75 | NB: result is a failure if the execute returned a failre. | |
|
76 | To get the blockID, you should do something like:: | |
|
77 | if(isinstance(result, twisted.python.failure.Failure)): | |
|
78 | blockID = result.blockID | |
|
79 | else: | |
|
80 | blockID = result['blockID'] | |
|
81 | """ | |
|
82 | ||
|
83 | pass | |
|
84 | ||
|
85 | def render_result(self, result): | |
|
86 | """Render the result of an execute call. Implementors may choose the | |
|
87 | method of rendering. | |
|
88 | For example, a notebook-style frontend might render a Chaco plot | |
|
89 | inline. | |
|
90 | ||
|
91 | Parameters: | |
|
92 | result : dict (result of IEngineBase.execute ) | |
|
93 | ||
|
94 | Result: | |
|
95 | Output of frontend rendering | |
|
96 | """ | |
|
97 | ||
|
98 | pass | |
|
99 | ||
|
100 | def render_error(self, failure): | |
|
101 | """Subclasses must override to render the failure. Since this method | |
|
102 | ill be called as a twisted.internet.defer.Deferred's callback, | |
|
103 | implementations should return result when finished. | |
|
104 | """ | |
|
105 | ||
|
106 | pass | |
|
107 | ||
|
108 | ||
|
109 | def input_prompt(result={}): | |
|
110 | """Returns the input prompt by subsituting into | |
|
111 | self.input_prompt_template | |
|
112 | """ | |
|
113 | pass | |
|
114 | ||
|
115 | def output_prompt(result): | |
|
116 | """Returns the output prompt by subsituting into | |
|
117 | self.output_prompt_template | |
|
118 | """ | |
|
119 | ||
|
120 | pass | |
|
121 | ||
|
122 | def continuation_prompt(): | |
|
123 | """Returns the continuation prompt by subsituting into | |
|
124 | self.continuation_prompt_template | |
|
125 | """ | |
|
126 | ||
|
127 | pass | |
|
128 | ||
|
129 | def is_complete(block): | |
|
130 | """Returns True if block is complete, False otherwise.""" | |
|
131 | ||
|
132 | pass | |
|
133 | ||
|
134 | def compile_ast(block): | |
|
135 | """Compiles block to an _ast.AST""" | |
|
136 | ||
|
137 | pass | |
|
138 | ||
|
139 | ||
|
140 | def get_history_previous(currentBlock): | |
|
141 | """Returns the block previous in the history. Saves currentBlock if | |
|
142 | the history_cursor is currently at the end of the input history""" | |
|
143 | pass | |
|
144 | ||
|
145 | def get_history_next(): | |
|
146 | """Returns the next block in the history.""" | |
|
147 | ||
|
148 | pass | |
|
149 | ||
|
150 | ||
|
151 | class FrontEndBase(object): | |
|
152 | """ | |
|
153 | FrontEndBase manages the state tasks for a CLI frontend: | |
|
154 | - Input and output history management | |
|
155 | - Input/continuation and output prompt generation | |
|
156 | ||
|
157 | Some issues (due to possibly unavailable engine): | |
|
158 | - How do we get the current cell number for the engine? | |
|
159 | - How do we handle completions? | |
|
160 | """ | |
|
161 | ||
|
162 | zi.implements(IFrontEnd) | |
|
163 | zi.classProvides(IFrontEndFactory) | |
|
164 | ||
|
165 | history_cursor = 0 | |
|
166 | ||
|
167 | current_indent_level = 0 | |
|
168 | ||
|
169 | ||
|
170 | input_prompt_template = string.Template(rc.prompt_in1) | |
|
171 | output_prompt_template = string.Template(rc.prompt_out) | |
|
172 | continuation_prompt_template = string.Template(rc.prompt_in2) | |
|
173 | ||
|
174 | def __init__(self, engine=None, history=None): | |
|
175 | assert(engine==None or IEngineCore.providedBy(engine)) | |
|
176 | self.engine = IEngineCore(engine) | |
|
177 | if history is None: | |
|
178 | self.history = FrontEndHistory(input_cache=['']) | |
|
179 | else: | |
|
180 | self.history = history | |
|
181 | ||
|
182 | ||
|
183 | def input_prompt(self, result={}): | |
|
184 | """Returns the current input prompt | |
|
185 | ||
|
186 | It would be great to use ipython1.core.prompts.Prompt1 here | |
|
187 | """ | |
|
188 | ||
|
189 | result.setdefault('number','') | |
|
190 | ||
|
191 | return self.input_prompt_template.safe_substitute(result) | |
|
192 | ||
|
193 | ||
|
194 | def continuation_prompt(self): | |
|
195 | """Returns the current continuation prompt""" | |
|
196 | ||
|
197 | return self.continuation_prompt_template.safe_substitute() | |
|
198 | ||
|
199 | def output_prompt(self, result): | |
|
200 | """Returns the output prompt for result""" | |
|
201 | ||
|
202 | return self.output_prompt_template.safe_substitute(result) | |
|
203 | ||
|
204 | ||
|
205 | def is_complete(self, block): | |
|
206 | """Determine if block is complete. | |
|
207 | ||
|
208 | Parameters | |
|
209 | block : string | |
|
210 | ||
|
211 | Result | |
|
212 | True if block can be sent to the engine without compile errors. | |
|
213 | False otherwise. | |
|
214 | """ | |
|
215 | ||
|
216 | try: | |
|
217 | ast = self.compile_ast(block) | |
|
218 | except: | |
|
219 | return False | |
|
220 | ||
|
221 | lines = block.split('\n') | |
|
222 | return (len(lines)==1 or str(lines[-1])=='') | |
|
223 | ||
|
224 | ||
|
225 | def compile_ast(self, block): | |
|
226 | """Compile block to an AST | |
|
227 | ||
|
228 | Parameters: | |
|
229 | block : str | |
|
230 | ||
|
231 | Result: | |
|
232 | AST | |
|
233 | ||
|
234 | Throws: | |
|
235 | Exception if block cannot be compiled | |
|
236 | """ | |
|
237 | ||
|
238 | return compile(block, "<string>", "exec", _ast.PyCF_ONLY_AST) | |
|
239 | ||
|
240 | ||
|
241 | def execute(self, block, blockID=None): | |
|
242 | """Execute the block and return result. | |
|
243 | ||
|
244 | Parameters: | |
|
245 | block : {str, AST} | |
|
246 | blockID : any | |
|
247 | Caller may provide an ID to identify this block. | |
|
248 | result['blockID'] := blockID | |
|
249 | ||
|
250 | Result: | |
|
251 | Deferred result of self.interpreter.execute | |
|
252 | """ | |
|
253 | ||
|
254 | if(not self.is_complete(block)): | |
|
255 | return Failure(Exception("Block is not compilable")) | |
|
256 | ||
|
257 | if(blockID == None): | |
|
258 | blockID = uuid.uuid4() #random UUID | |
|
259 | ||
|
260 | d = self.engine.execute(block) | |
|
261 | d.addCallback(self._add_history, block=block) | |
|
262 | d.addBoth(self._add_block_id, blockID) | |
|
263 | d.addBoth(self.update_cell_prompt) | |
|
264 | d.addCallbacks(self.render_result, errback=self.render_error) | |
|
265 | ||
|
266 | return d | |
|
267 | ||
|
268 | ||
|
269 | def _add_block_id(self, result, blockID): | |
|
270 | """Add the blockID to result or failure. Unfortunatley, we have to | |
|
271 | treat failures differently than result dicts. | |
|
272 | """ | |
|
273 | ||
|
274 | if(isinstance(result, Failure)): | |
|
275 | result.blockID = blockID | |
|
276 | else: | |
|
277 | result['blockID'] = blockID | |
|
278 | ||
|
279 | return result | |
|
280 | ||
|
281 | def _add_history(self, result, block=None): | |
|
282 | """Add block to the history""" | |
|
283 | ||
|
284 | assert(block != None) | |
|
285 | self.history.add_items([block]) | |
|
286 | self.history_cursor += 1 | |
|
287 | ||
|
288 | return result | |
|
289 | ||
|
290 | ||
|
291 | def get_history_previous(self, currentBlock): | |
|
292 | """ Returns previous history string and decrement history cursor. | |
|
293 | """ | |
|
294 | command = self.history.get_history_item(self.history_cursor - 1) | |
|
295 | ||
|
296 | if command is not None: | |
|
297 | if(self.history_cursor == len(self.history.input_cache)): | |
|
298 | self.history.input_cache[self.history_cursor] = currentBlock | |
|
299 | self.history_cursor -= 1 | |
|
300 | return command | |
|
301 | ||
|
302 | ||
|
303 | def get_history_next(self): | |
|
304 | """ Returns next history string and increment history cursor. | |
|
305 | """ | |
|
306 | command = self.history.get_history_item(self.history_cursor+1) | |
|
307 | ||
|
308 | if command is not None: | |
|
309 | self.history_cursor += 1 | |
|
310 | return command | |
|
311 | ||
|
312 | ### | |
|
313 | # Subclasses probably want to override these methods... | |
|
314 | ### | |
|
315 | ||
|
316 | def update_cell_prompt(self, result): | |
|
317 | """Subclass may override to update the input prompt for a block. | |
|
318 | Since this method will be called as a | |
|
319 | twisted.internet.defer.Deferred's callback, implementations should | |
|
320 | return result when finished. | |
|
321 | ||
|
322 | NB: result is a failure if the execute returned a failre. | |
|
323 | To get the blockID, you should do something like:: | |
|
324 | if(isinstance(result, twisted.python.failure.Failure)): | |
|
325 | blockID = result.blockID | |
|
326 | else: | |
|
327 | blockID = result['blockID'] | |
|
328 | ||
|
329 | ||
|
330 | """ | |
|
331 | ||
|
332 | return result | |
|
333 | ||
|
334 | ||
|
335 | def render_result(self, result): | |
|
336 | """Subclasses must override to render result. Since this method will | |
|
337 | be called as a twisted.internet.defer.Deferred's callback, | |
|
338 | implementations should return result when finished. | |
|
339 | """ | |
|
340 | ||
|
341 | return result | |
|
342 | ||
|
343 | ||
|
344 | def render_error(self, failure): | |
|
345 | """Subclasses must override to render the failure. Since this method | |
|
346 | will be called as a twisted.internet.defer.Deferred's callback, | |
|
347 | implementations should return result when finished.""" | |
|
348 | ||
|
349 | return failure | |
|
350 | ||
|
351 | ||
|
352 |
|
1 | NO CONTENT: new file 100644 |
@@ -0,0 +1,151 b'' | |||
|
1 | # encoding: utf-8 | |
|
2 | ||
|
3 | """This file contains unittests for the frontendbase module.""" | |
|
4 | ||
|
5 | __docformat__ = "restructuredtext en" | |
|
6 | ||
|
7 | #--------------------------------------------------------------------------- | |
|
8 | # Copyright (C) 2008 The IPython Development Team | |
|
9 | # | |
|
10 | # Distributed under the terms of the BSD License. The full license is in | |
|
11 | # the file COPYING, distributed as part of this software. | |
|
12 | #--------------------------------------------------------------------------- | |
|
13 | ||
|
14 | #--------------------------------------------------------------------------- | |
|
15 | # Imports | |
|
16 | #--------------------------------------------------------------------------- | |
|
17 | ||
|
18 | import unittest | |
|
19 | from IPython.frontend import frontendbase | |
|
20 | from IPython.kernel.engineservice import EngineService | |
|
21 | ||
|
22 | class FrontEndCallbackChecker(frontendbase.FrontEndBase): | |
|
23 | """FrontEndBase subclass for checking callbacks""" | |
|
24 | def __init__(self, engine=None, history=None): | |
|
25 | super(FrontEndCallbackChecker, self).__init__(engine=engine, | |
|
26 | history=history) | |
|
27 | self.updateCalled = False | |
|
28 | self.renderResultCalled = False | |
|
29 | self.renderErrorCalled = False | |
|
30 | ||
|
31 | def update_cell_prompt(self, result): | |
|
32 | self.updateCalled = True | |
|
33 | return result | |
|
34 | ||
|
35 | def render_result(self, result): | |
|
36 | self.renderResultCalled = True | |
|
37 | return result | |
|
38 | ||
|
39 | ||
|
40 | def render_error(self, failure): | |
|
41 | self.renderErrorCalled = True | |
|
42 | return failure | |
|
43 | ||
|
44 | ||
|
45 | ||
|
46 | ||
|
47 | class TestFrontendBase(unittest.TestCase): | |
|
48 | def setUp(self): | |
|
49 | """Setup the EngineService and FrontEndBase""" | |
|
50 | ||
|
51 | self.fb = FrontEndCallbackChecker(engine=EngineService()) | |
|
52 | ||
|
53 | ||
|
54 | def test_implements_IFrontEnd(self): | |
|
55 | assert(frontendbase.IFrontEnd.implementedBy( | |
|
56 | frontendbase.FrontEndBase)) | |
|
57 | ||
|
58 | ||
|
59 | def test_is_complete_returns_False_for_incomplete_block(self): | |
|
60 | """""" | |
|
61 | ||
|
62 | block = """def test(a):""" | |
|
63 | ||
|
64 | assert(self.fb.is_complete(block) == False) | |
|
65 | ||
|
66 | def test_is_complete_returns_True_for_complete_block(self): | |
|
67 | """""" | |
|
68 | ||
|
69 | block = """def test(a): pass""" | |
|
70 | ||
|
71 | assert(self.fb.is_complete(block)) | |
|
72 | ||
|
73 | block = """a=3""" | |
|
74 | ||
|
75 | assert(self.fb.is_complete(block)) | |
|
76 | ||
|
77 | ||
|
78 | def test_blockID_added_to_result(self): | |
|
79 | block = """3+3""" | |
|
80 | ||
|
81 | d = self.fb.execute(block, blockID='TEST_ID') | |
|
82 | ||
|
83 | d.addCallback(self.checkBlockID, expected='TEST_ID') | |
|
84 | ||
|
85 | def test_blockID_added_to_failure(self): | |
|
86 | block = "raise Exception()" | |
|
87 | ||
|
88 | d = self.fb.execute(block,blockID='TEST_ID') | |
|
89 | d.addErrback(self.checkFailureID, expected='TEST_ID') | |
|
90 | ||
|
91 | def checkBlockID(self, result, expected=""): | |
|
92 | assert(result['blockID'] == expected) | |
|
93 | ||
|
94 | ||
|
95 | def checkFailureID(self, failure, expected=""): | |
|
96 | assert(failure.blockID == expected) | |
|
97 | ||
|
98 | ||
|
99 | def test_callbacks_added_to_execute(self): | |
|
100 | """test that | |
|
101 | update_cell_prompt | |
|
102 | render_result | |
|
103 | ||
|
104 | are added to execute request | |
|
105 | """ | |
|
106 | ||
|
107 | d = self.fb.execute("10+10") | |
|
108 | d.addCallback(self.checkCallbacks) | |
|
109 | ||
|
110 | ||
|
111 | def checkCallbacks(self, result): | |
|
112 | assert(self.fb.updateCalled) | |
|
113 | assert(self.fb.renderResultCalled) | |
|
114 | ||
|
115 | ||
|
116 | def test_error_callback_added_to_execute(self): | |
|
117 | """test that render_error called on execution error""" | |
|
118 | ||
|
119 | d = self.fb.execute("raise Exception()") | |
|
120 | d.addCallback(self.checkRenderError) | |
|
121 | ||
|
122 | def checkRenderError(self, result): | |
|
123 | assert(self.fb.renderErrorCalled) | |
|
124 | ||
|
125 | def test_history_returns_expected_block(self): | |
|
126 | """Make sure history browsing doesn't fail""" | |
|
127 | ||
|
128 | blocks = ["a=1","a=2","a=3"] | |
|
129 | for b in blocks: | |
|
130 | d = self.fb.execute(b) | |
|
131 | ||
|
132 | # d is now the deferred for the last executed block | |
|
133 | d.addCallback(self.historyTests, blocks) | |
|
134 | ||
|
135 | ||
|
136 | def historyTests(self, result, blocks): | |
|
137 | """historyTests""" | |
|
138 | ||
|
139 | assert(len(blocks) >= 3) | |
|
140 | assert(self.fb.get_history_previous("") == blocks[-2]) | |
|
141 | assert(self.fb.get_history_previous("") == blocks[-3]) | |
|
142 | assert(self.fb.get_history_next() == blocks[-2]) | |
|
143 | ||
|
144 | ||
|
145 | def test_history_returns_none_at_startup(self): | |
|
146 | """test_history_returns_none_at_startup""" | |
|
147 | ||
|
148 | assert(self.fb.get_history_previous("")==None) | |
|
149 | assert(self.fb.get_history_next()==None) | |
|
150 | ||
|
151 |
@@ -1,864 +1,876 b'' | |||
|
1 | 1 | # encoding: utf-8 |
|
2 | 2 | # -*- test-case-name: IPython.kernel.tests.test_engineservice -*- |
|
3 | 3 | |
|
4 | 4 | """A Twisted Service Representation of the IPython core. |
|
5 | 5 | |
|
6 | 6 | The IPython Core exposed to the network is called the Engine. Its |
|
7 | 7 | representation in Twisted in the EngineService. Interfaces and adapters |
|
8 | 8 | are used to abstract out the details of the actual network protocol used. |
|
9 | 9 | The EngineService is an Engine that knows nothing about the actual protocol |
|
10 | 10 | used. |
|
11 | 11 | |
|
12 | 12 | The EngineService is exposed with various network protocols in modules like: |
|
13 | 13 | |
|
14 | 14 | enginepb.py |
|
15 | 15 | enginevanilla.py |
|
16 | 16 | |
|
17 | 17 | As of 12/12/06 the classes in this module have been simplified greatly. It was |
|
18 | 18 | felt that we had over-engineered things. To improve the maintainability of the |
|
19 | 19 | code we have taken out the ICompleteEngine interface and the completeEngine |
|
20 | 20 | method that automatically added methods to engines. |
|
21 | 21 | |
|
22 | 22 | """ |
|
23 | 23 | |
|
24 | 24 | __docformat__ = "restructuredtext en" |
|
25 | 25 | |
|
26 | 26 | #------------------------------------------------------------------------------- |
|
27 | 27 | # Copyright (C) 2008 The IPython Development Team |
|
28 | 28 | # |
|
29 | 29 | # Distributed under the terms of the BSD License. The full license is in |
|
30 | 30 | # the file COPYING, distributed as part of this software. |
|
31 | 31 | #------------------------------------------------------------------------------- |
|
32 | 32 | |
|
33 | 33 | #------------------------------------------------------------------------------- |
|
34 | 34 | # Imports |
|
35 | 35 | #------------------------------------------------------------------------------- |
|
36 | 36 | |
|
37 | 37 | import os, sys, copy |
|
38 | 38 | import cPickle as pickle |
|
39 | 39 | from new import instancemethod |
|
40 | 40 | |
|
41 | 41 | from twisted.application import service |
|
42 | 42 | from twisted.internet import defer, reactor |
|
43 | 43 | from twisted.python import log, failure, components |
|
44 | 44 | import zope.interface as zi |
|
45 | 45 | |
|
46 | 46 | from IPython.kernel.core.interpreter import Interpreter |
|
47 | 47 | from IPython.kernel import newserialized, error, util |
|
48 | 48 | from IPython.kernel.util import printer |
|
49 | 49 | from IPython.kernel.twistedutil import gatherBoth, DeferredList |
|
50 | 50 | from IPython.kernel import codeutil |
|
51 | 51 | |
|
52 | 52 | |
|
53 | 53 | #------------------------------------------------------------------------------- |
|
54 | 54 | # Interface specification for the Engine |
|
55 | 55 | #------------------------------------------------------------------------------- |
|
56 | 56 | |
|
57 | 57 | class IEngineCore(zi.Interface): |
|
58 | 58 | """The minimal required interface for the IPython Engine. |
|
59 | 59 | |
|
60 | 60 | This interface provides a formal specification of the IPython core. |
|
61 | 61 | All these methods should return deferreds regardless of what side of a |
|
62 | 62 | network connection they are on. |
|
63 | 63 | |
|
64 | 64 | In general, this class simply wraps a shell class and wraps its return |
|
65 | 65 | values as Deferred objects. If the underlying shell class method raises |
|
66 | 66 | an exception, this class should convert it to a twisted.failure.Failure |
|
67 | 67 | that will be propagated along the Deferred's errback chain. |
|
68 | 68 | |
|
69 | 69 | In addition, Failures are aggressive. By this, we mean that if a method |
|
70 | 70 | is performing multiple actions (like pulling multiple object) if any |
|
71 | 71 | single one fails, the entire method will fail with that Failure. It is |
|
72 | 72 | all or nothing. |
|
73 | 73 | """ |
|
74 | 74 | |
|
75 | 75 | id = zi.interface.Attribute("the id of the Engine object") |
|
76 | 76 | properties = zi.interface.Attribute("A dict of properties of the Engine") |
|
77 | 77 | |
|
78 | 78 | def execute(lines): |
|
79 | 79 | """Execute lines of Python code. |
|
80 | 80 | |
|
81 | 81 | Returns a dictionary with keys (id, number, stdin, stdout, stderr) |
|
82 | 82 | upon success. |
|
83 | 83 | |
|
84 | 84 | Returns a failure object if the execution of lines raises an exception. |
|
85 | 85 | """ |
|
86 | 86 | |
|
87 | 87 | def push(namespace): |
|
88 | 88 | """Push dict namespace into the user's namespace. |
|
89 | 89 | |
|
90 | 90 | Returns a deferred to None or a failure. |
|
91 | 91 | """ |
|
92 | 92 | |
|
93 | 93 | def pull(keys): |
|
94 | 94 | """Pulls values out of the user's namespace by keys. |
|
95 | 95 | |
|
96 | 96 | Returns a deferred to a tuple objects or a single object. |
|
97 | 97 | |
|
98 | 98 | Raises NameError if any one of objects doess not exist. |
|
99 | 99 | """ |
|
100 | 100 | |
|
101 | 101 | def push_function(namespace): |
|
102 | 102 | """Push a dict of key, function pairs into the user's namespace. |
|
103 | 103 | |
|
104 | 104 | Returns a deferred to None or a failure.""" |
|
105 | 105 | |
|
106 | 106 | def pull_function(keys): |
|
107 | 107 | """Pulls functions out of the user's namespace by keys. |
|
108 | 108 | |
|
109 | 109 | Returns a deferred to a tuple of functions or a single function. |
|
110 | 110 | |
|
111 | 111 | Raises NameError if any one of the functions does not exist. |
|
112 | 112 | """ |
|
113 | 113 | |
|
114 | 114 | def get_result(i=None): |
|
115 | 115 | """Get the stdin/stdout/stderr of command i. |
|
116 | 116 | |
|
117 | 117 | Returns a deferred to a dict with keys |
|
118 | 118 | (id, number, stdin, stdout, stderr). |
|
119 | 119 | |
|
120 | 120 | Raises IndexError if command i does not exist. |
|
121 | 121 | Raises TypeError if i in not an int. |
|
122 | 122 | """ |
|
123 | 123 | |
|
124 | 124 | def reset(): |
|
125 | 125 | """Reset the shell. |
|
126 | 126 | |
|
127 | 127 | This clears the users namespace. Won't cause modules to be |
|
128 | 128 | reloaded. Should also re-initialize certain variables like id. |
|
129 | 129 | """ |
|
130 | 130 | |
|
131 | 131 | def kill(): |
|
132 | 132 | """Kill the engine by stopping the reactor.""" |
|
133 | 133 | |
|
134 | 134 | def keys(): |
|
135 | 135 | """Return the top level variables in the users namspace. |
|
136 | 136 | |
|
137 | 137 | Returns a deferred to a dict.""" |
|
138 | 138 | |
|
139 | 139 | |
|
140 | 140 | class IEngineSerialized(zi.Interface): |
|
141 | 141 | """Push/Pull methods that take Serialized objects. |
|
142 | 142 | |
|
143 | 143 | All methods should return deferreds. |
|
144 | 144 | """ |
|
145 | 145 | |
|
146 | 146 | def push_serialized(namespace): |
|
147 | 147 | """Push a dict of keys and Serialized objects into the user's namespace.""" |
|
148 | 148 | |
|
149 | 149 | def pull_serialized(keys): |
|
150 | 150 | """Pull objects by key from the user's namespace as Serialized. |
|
151 | 151 | |
|
152 | 152 | Returns a list of or one Serialized. |
|
153 | 153 | |
|
154 | 154 | Raises NameError is any one of the objects does not exist. |
|
155 | 155 | """ |
|
156 | 156 | |
|
157 | 157 | |
|
158 | 158 | class IEngineProperties(zi.Interface): |
|
159 | 159 | """Methods for access to the properties object of an Engine""" |
|
160 | 160 | |
|
161 | 161 | properties = zi.Attribute("A StrictDict object, containing the properties") |
|
162 | 162 | |
|
163 | 163 | def set_properties(properties): |
|
164 | 164 | """set properties by key and value""" |
|
165 | 165 | |
|
166 | 166 | def get_properties(keys=None): |
|
167 | 167 | """get a list of properties by `keys`, if no keys specified, get all""" |
|
168 | 168 | |
|
169 | 169 | def del_properties(keys): |
|
170 | 170 | """delete properties by `keys`""" |
|
171 | 171 | |
|
172 | 172 | def has_properties(keys): |
|
173 | 173 | """get a list of bool values for whether `properties` has `keys`""" |
|
174 | 174 | |
|
175 | 175 | def clear_properties(): |
|
176 | 176 | """clear the properties dict""" |
|
177 | 177 | |
|
178 | 178 | class IEngineBase(IEngineCore, IEngineSerialized, IEngineProperties): |
|
179 | 179 | """The basic engine interface that EngineService will implement. |
|
180 | 180 | |
|
181 | 181 | This exists so it is easy to specify adapters that adapt to and from the |
|
182 | 182 | API that the basic EngineService implements. |
|
183 | 183 | """ |
|
184 | 184 | pass |
|
185 | 185 | |
|
186 | 186 | class IEngineQueued(IEngineBase): |
|
187 | 187 | """Interface for adding a queue to an IEngineBase. |
|
188 | 188 | |
|
189 | 189 | This interface extends the IEngineBase interface to add methods for managing |
|
190 | 190 | the engine's queue. The implicit details of this interface are that the |
|
191 | 191 | execution of all methods declared in IEngineBase should appropriately be |
|
192 | 192 | put through a queue before execution. |
|
193 | 193 | |
|
194 | 194 | All methods should return deferreds. |
|
195 | 195 | """ |
|
196 | 196 | |
|
197 | 197 | def clear_queue(): |
|
198 | 198 | """Clear the queue.""" |
|
199 | 199 | |
|
200 | 200 | def queue_status(): |
|
201 | 201 | """Get the queued and pending commands in the queue.""" |
|
202 | 202 | |
|
203 | 203 | def register_failure_observer(obs): |
|
204 | 204 | """Register an observer of pending Failures. |
|
205 | 205 | |
|
206 | 206 | The observer must implement IFailureObserver. |
|
207 | 207 | """ |
|
208 | 208 | |
|
209 | 209 | def unregister_failure_observer(obs): |
|
210 | 210 | """Unregister an observer of pending Failures.""" |
|
211 | 211 | |
|
212 | 212 | |
|
213 | 213 | class IEngineThreaded(zi.Interface): |
|
214 | 214 | """A place holder for threaded commands. |
|
215 | 215 | |
|
216 | 216 | All methods should return deferreds. |
|
217 | 217 | """ |
|
218 | 218 | pass |
|
219 | 219 | |
|
220 | 220 | |
|
221 | 221 | #------------------------------------------------------------------------------- |
|
222 | 222 | # Functions and classes to implement the EngineService |
|
223 | 223 | #------------------------------------------------------------------------------- |
|
224 | 224 | |
|
225 | 225 | |
|
226 | 226 | class StrictDict(dict): |
|
227 | 227 | """This is a strict copying dictionary for use as the interface to the |
|
228 | 228 | properties of an Engine. |
|
229 | 229 | :IMPORTANT: |
|
230 | 230 | This object copies the values you set to it, and returns copies to you |
|
231 | 231 | when you request them. The only way to change properties os explicitly |
|
232 | 232 | through the setitem and getitem of the dictionary interface. |
|
233 | 233 | Example: |
|
234 | 234 | >>> e = kernel.get_engine(id) |
|
235 | 235 | >>> L = someList |
|
236 | 236 | >>> e.properties['L'] = L |
|
237 | 237 | >>> L == e.properties['L'] |
|
238 | 238 | ... True |
|
239 | 239 | >>> L.append(something Else) |
|
240 | 240 | >>> L == e.properties['L'] |
|
241 | 241 | ... False |
|
242 | 242 | |
|
243 | 243 | getitem copies, so calls to methods of objects do not affect the |
|
244 | 244 | properties, as in the following example: |
|
245 | 245 | >>> e.properties[1] = range(2) |
|
246 | 246 | >>> print e.properties[1] |
|
247 | 247 | ... [0, 1] |
|
248 | 248 | >>> e.properties[1].append(2) |
|
249 | 249 | >>> print e.properties[1] |
|
250 | 250 | ... [0, 1] |
|
251 | 251 | |
|
252 | 252 | """ |
|
253 | 253 | def __init__(self, *args, **kwargs): |
|
254 | 254 | dict.__init__(self, *args, **kwargs) |
|
255 | 255 | self.modified = True |
|
256 | 256 | |
|
257 | 257 | def __getitem__(self, key): |
|
258 | 258 | return copy.deepcopy(dict.__getitem__(self, key)) |
|
259 | 259 | |
|
260 | 260 | def __setitem__(self, key, value): |
|
261 | 261 | # check if this entry is valid for transport around the network |
|
262 | 262 | # and copying |
|
263 | 263 | try: |
|
264 | 264 | pickle.dumps(key, 2) |
|
265 | 265 | pickle.dumps(value, 2) |
|
266 | 266 | newvalue = copy.deepcopy(value) |
|
267 | 267 | except: |
|
268 | 268 | raise error.InvalidProperty(value) |
|
269 | 269 | dict.__setitem__(self, key, newvalue) |
|
270 | 270 | self.modified = True |
|
271 | 271 | |
|
272 | 272 | def __delitem__(self, key): |
|
273 | 273 | dict.__delitem__(self, key) |
|
274 | 274 | self.modified = True |
|
275 | 275 | |
|
276 | 276 | def update(self, dikt): |
|
277 | 277 | for k,v in dikt.iteritems(): |
|
278 | 278 | self[k] = v |
|
279 | 279 | |
|
280 | 280 | def pop(self, key): |
|
281 | 281 | self.modified = True |
|
282 | 282 | return dict.pop(self, key) |
|
283 | 283 | |
|
284 | 284 | def popitem(self): |
|
285 | 285 | self.modified = True |
|
286 | 286 | return dict.popitem(self) |
|
287 | 287 | |
|
288 | 288 | def clear(self): |
|
289 | 289 | self.modified = True |
|
290 | 290 | dict.clear(self) |
|
291 | 291 | |
|
292 | 292 | def subDict(self, *keys): |
|
293 | 293 | d = {} |
|
294 | 294 | for key in keys: |
|
295 | 295 | d[key] = self[key] |
|
296 | 296 | return d |
|
297 | 297 | |
|
298 | 298 | |
|
299 | 299 | |
|
300 | 300 | class EngineAPI(object): |
|
301 | 301 | """This is the object through which the user can edit the `properties` |
|
302 | 302 | attribute of an Engine. |
|
303 | 303 | The Engine Properties object copies all object in and out of itself. |
|
304 | 304 | See the EngineProperties object for details. |
|
305 | 305 | """ |
|
306 | 306 | _fix=False |
|
307 | 307 | def __init__(self, id): |
|
308 | 308 | self.id = id |
|
309 | 309 | self.properties = StrictDict() |
|
310 | 310 | self._fix=True |
|
311 | 311 | |
|
312 | 312 | def __setattr__(self, k,v): |
|
313 | 313 | if self._fix: |
|
314 | 314 | raise error.KernelError("I am protected!") |
|
315 | 315 | else: |
|
316 | 316 | object.__setattr__(self, k, v) |
|
317 | 317 | |
|
318 | 318 | def __delattr__(self, key): |
|
319 | 319 | raise error.KernelError("I am protected!") |
|
320 | 320 | |
|
321 | 321 | |
|
322 | 322 | _apiDict = {} |
|
323 | 323 | |
|
324 | 324 | def get_engine(id): |
|
325 | 325 | """Get the Engine API object, whcih currently just provides the properties |
|
326 | 326 | object, by ID""" |
|
327 | 327 | global _apiDict |
|
328 | 328 | if not _apiDict.get(id): |
|
329 | 329 | _apiDict[id] = EngineAPI(id) |
|
330 | 330 | return _apiDict[id] |
|
331 | 331 | |
|
332 | 332 | def drop_engine(id): |
|
333 | 333 | """remove an engine""" |
|
334 | 334 | global _apiDict |
|
335 | 335 | if _apiDict.has_key(id): |
|
336 | 336 | del _apiDict[id] |
|
337 | 337 | |
|
338 | 338 | class EngineService(object, service.Service): |
|
339 | 339 | """Adapt a IPython shell into a IEngine implementing Twisted Service.""" |
|
340 | 340 | |
|
341 | 341 | zi.implements(IEngineBase) |
|
342 | 342 | name = 'EngineService' |
|
343 | 343 | |
|
344 | 344 | def __init__(self, shellClass=Interpreter, mpi=None): |
|
345 | 345 | """Create an EngineService. |
|
346 | 346 | |
|
347 | 347 | shellClass: something that implements IInterpreter or core1 |
|
348 | 348 | mpi: an mpi module that has rank and size attributes |
|
349 | 349 | """ |
|
350 | 350 | self.shellClass = shellClass |
|
351 | 351 | self.shell = self.shellClass() |
|
352 | 352 | self.mpi = mpi |
|
353 | 353 | self.id = None |
|
354 | 354 | self.properties = get_engine(self.id).properties |
|
355 | 355 | if self.mpi is not None: |
|
356 | 356 | log.msg("MPI started with rank = %i and size = %i" % |
|
357 | 357 | (self.mpi.rank, self.mpi.size)) |
|
358 | 358 | self.id = self.mpi.rank |
|
359 | 359 | self._seedNamespace() |
|
360 | 360 | |
|
361 | 361 | # Make id a property so that the shell can get the updated id |
|
362 | 362 | |
|
363 | 363 | def _setID(self, id): |
|
364 | 364 | self._id = id |
|
365 | 365 | self.properties = get_engine(id).properties |
|
366 | 366 | self.shell.push({'id': id}) |
|
367 | 367 | |
|
368 | 368 | def _getID(self): |
|
369 | 369 | return self._id |
|
370 | 370 | |
|
371 | 371 | id = property(_getID, _setID) |
|
372 | 372 | |
|
373 | 373 | def _seedNamespace(self): |
|
374 | 374 | self.shell.push({'mpi': self.mpi, 'id' : self.id}) |
|
375 | 375 | |
|
376 | 376 | def executeAndRaise(self, msg, callable, *args, **kwargs): |
|
377 | 377 | """Call a method of self.shell and wrap any exception.""" |
|
378 | 378 | d = defer.Deferred() |
|
379 | 379 | try: |
|
380 | 380 | result = callable(*args, **kwargs) |
|
381 | 381 | except: |
|
382 | 382 | # This gives the following: |
|
383 | 383 | # et=exception class |
|
384 | 384 | # ev=exception class instance |
|
385 | 385 | # tb=traceback object |
|
386 | 386 | et,ev,tb = sys.exc_info() |
|
387 | 387 | # This call adds attributes to the exception value |
|
388 | 388 | et,ev,tb = self.shell.formatTraceback(et,ev,tb,msg) |
|
389 | 389 | # Add another attribute |
|
390 | 390 | ev._ipython_engine_info = msg |
|
391 | 391 | f = failure.Failure(ev,et,None) |
|
392 | 392 | d.errback(f) |
|
393 | 393 | else: |
|
394 | 394 | d.callback(result) |
|
395 | 395 | |
|
396 | 396 | return d |
|
397 | 397 | |
|
398 | 398 | # The IEngine methods. See the interface for documentation. |
|
399 | 399 | |
|
400 | 400 | def execute(self, lines): |
|
401 | 401 | msg = {'engineid':self.id, |
|
402 | 402 | 'method':'execute', |
|
403 | 403 | 'args':[lines]} |
|
404 | 404 | d = self.executeAndRaise(msg, self.shell.execute, lines) |
|
405 | 405 | d.addCallback(self.addIDToResult) |
|
406 | 406 | return d |
|
407 | 407 | |
|
408 | 408 | def addIDToResult(self, result): |
|
409 | 409 | result['id'] = self.id |
|
410 | 410 | return result |
|
411 | 411 | |
|
412 | 412 | def push(self, namespace): |
|
413 | 413 | msg = {'engineid':self.id, |
|
414 | 414 | 'method':'push', |
|
415 | 415 | 'args':[repr(namespace.keys())]} |
|
416 | 416 | d = self.executeAndRaise(msg, self.shell.push, namespace) |
|
417 | 417 | return d |
|
418 | 418 | |
|
419 | 419 | def pull(self, keys): |
|
420 | 420 | msg = {'engineid':self.id, |
|
421 | 421 | 'method':'pull', |
|
422 | 422 | 'args':[repr(keys)]} |
|
423 | 423 | d = self.executeAndRaise(msg, self.shell.pull, keys) |
|
424 | 424 | return d |
|
425 | 425 | |
|
426 | 426 | def push_function(self, namespace): |
|
427 | 427 | msg = {'engineid':self.id, |
|
428 | 428 | 'method':'push_function', |
|
429 | 429 | 'args':[repr(namespace.keys())]} |
|
430 | 430 | d = self.executeAndRaise(msg, self.shell.push_function, namespace) |
|
431 | 431 | return d |
|
432 | 432 | |
|
433 | 433 | def pull_function(self, keys): |
|
434 | 434 | msg = {'engineid':self.id, |
|
435 | 435 | 'method':'pull_function', |
|
436 | 436 | 'args':[repr(keys)]} |
|
437 | 437 | d = self.executeAndRaise(msg, self.shell.pull_function, keys) |
|
438 | 438 | return d |
|
439 | 439 | |
|
440 | 440 | def get_result(self, i=None): |
|
441 | 441 | msg = {'engineid':self.id, |
|
442 | 442 | 'method':'get_result', |
|
443 | 443 | 'args':[repr(i)]} |
|
444 | 444 | d = self.executeAndRaise(msg, self.shell.getCommand, i) |
|
445 | 445 | d.addCallback(self.addIDToResult) |
|
446 | 446 | return d |
|
447 | 447 | |
|
448 | 448 | def reset(self): |
|
449 | 449 | msg = {'engineid':self.id, |
|
450 | 450 | 'method':'reset', |
|
451 | 451 | 'args':[]} |
|
452 | 452 | del self.shell |
|
453 | 453 | self.shell = self.shellClass() |
|
454 | 454 | self.properties.clear() |
|
455 | 455 | d = self.executeAndRaise(msg, self._seedNamespace) |
|
456 | 456 | return d |
|
457 | 457 | |
|
458 | 458 | def kill(self): |
|
459 | 459 | drop_engine(self.id) |
|
460 | 460 | try: |
|
461 | 461 | reactor.stop() |
|
462 | 462 | except RuntimeError: |
|
463 | 463 | log.msg('The reactor was not running apparently.') |
|
464 | 464 | return defer.fail() |
|
465 | 465 | else: |
|
466 | 466 | return defer.succeed(None) |
|
467 | 467 | |
|
468 | 468 | def keys(self): |
|
469 | 469 | """Return a list of variables names in the users top level namespace. |
|
470 | 470 | |
|
471 | 471 | This used to return a dict of all the keys/repr(values) in the |
|
472 | 472 | user's namespace. This was too much info for the ControllerService |
|
473 | 473 | to handle so it is now just a list of keys. |
|
474 | 474 | """ |
|
475 | 475 | |
|
476 | 476 | remotes = [] |
|
477 | 477 | for k in self.shell.user_ns.iterkeys(): |
|
478 | 478 | if k not in ['__name__', '_ih', '_oh', '__builtins__', |
|
479 | 479 | 'In', 'Out', '_', '__', '___', '__IP', 'input', 'raw_input']: |
|
480 | 480 | remotes.append(k) |
|
481 | 481 | return defer.succeed(remotes) |
|
482 | 482 | |
|
483 | 483 | def set_properties(self, properties): |
|
484 | 484 | msg = {'engineid':self.id, |
|
485 | 485 | 'method':'set_properties', |
|
486 | 486 | 'args':[repr(properties.keys())]} |
|
487 | 487 | return self.executeAndRaise(msg, self.properties.update, properties) |
|
488 | 488 | |
|
489 | 489 | def get_properties(self, keys=None): |
|
490 | 490 | msg = {'engineid':self.id, |
|
491 | 491 | 'method':'get_properties', |
|
492 | 492 | 'args':[repr(keys)]} |
|
493 | 493 | if keys is None: |
|
494 | 494 | keys = self.properties.keys() |
|
495 | 495 | return self.executeAndRaise(msg, self.properties.subDict, *keys) |
|
496 | 496 | |
|
497 | 497 | def _doDel(self, keys): |
|
498 | 498 | for key in keys: |
|
499 | 499 | del self.properties[key] |
|
500 | 500 | |
|
501 | 501 | def del_properties(self, keys): |
|
502 | 502 | msg = {'engineid':self.id, |
|
503 | 503 | 'method':'del_properties', |
|
504 | 504 | 'args':[repr(keys)]} |
|
505 | 505 | return self.executeAndRaise(msg, self._doDel, keys) |
|
506 | 506 | |
|
507 | 507 | def _doHas(self, keys): |
|
508 | 508 | return [self.properties.has_key(key) for key in keys] |
|
509 | 509 | |
|
510 | 510 | def has_properties(self, keys): |
|
511 | 511 | msg = {'engineid':self.id, |
|
512 | 512 | 'method':'has_properties', |
|
513 | 513 | 'args':[repr(keys)]} |
|
514 | 514 | return self.executeAndRaise(msg, self._doHas, keys) |
|
515 | 515 | |
|
516 | 516 | def clear_properties(self): |
|
517 | 517 | msg = {'engineid':self.id, |
|
518 | 518 | 'method':'clear_properties', |
|
519 | 519 | 'args':[]} |
|
520 | 520 | return self.executeAndRaise(msg, self.properties.clear) |
|
521 | 521 | |
|
522 | 522 | def push_serialized(self, sNamespace): |
|
523 | 523 | msg = {'engineid':self.id, |
|
524 | 524 | 'method':'push_serialized', |
|
525 | 525 | 'args':[repr(sNamespace.keys())]} |
|
526 | 526 | ns = {} |
|
527 | 527 | for k,v in sNamespace.iteritems(): |
|
528 | 528 | try: |
|
529 | 529 | unserialized = newserialized.IUnSerialized(v) |
|
530 | 530 | ns[k] = unserialized.getObject() |
|
531 | 531 | except: |
|
532 | 532 | return defer.fail() |
|
533 | 533 | return self.executeAndRaise(msg, self.shell.push, ns) |
|
534 | 534 | |
|
535 | 535 | def pull_serialized(self, keys): |
|
536 | 536 | msg = {'engineid':self.id, |
|
537 | 537 | 'method':'pull_serialized', |
|
538 | 538 | 'args':[repr(keys)]} |
|
539 | 539 | if isinstance(keys, str): |
|
540 | 540 | keys = [keys] |
|
541 | 541 | if len(keys)==1: |
|
542 | 542 | d = self.executeAndRaise(msg, self.shell.pull, keys) |
|
543 | 543 | d.addCallback(newserialized.serialize) |
|
544 | 544 | return d |
|
545 | 545 | elif len(keys)>1: |
|
546 | 546 | d = self.executeAndRaise(msg, self.shell.pull, keys) |
|
547 | 547 | @d.addCallback |
|
548 | 548 | def packThemUp(values): |
|
549 | 549 | serials = [] |
|
550 | 550 | for v in values: |
|
551 | 551 | try: |
|
552 | 552 | serials.append(newserialized.serialize(v)) |
|
553 | 553 | except: |
|
554 | 554 | return defer.fail(failure.Failure()) |
|
555 | 555 | return serials |
|
556 | 556 | return packThemUp |
|
557 | 557 | |
|
558 | 558 | |
|
559 | 559 | def queue(methodToQueue): |
|
560 | 560 | def queuedMethod(this, *args, **kwargs): |
|
561 | 561 | name = methodToQueue.__name__ |
|
562 | 562 | return this.submitCommand(Command(name, *args, **kwargs)) |
|
563 | 563 | return queuedMethod |
|
564 | 564 | |
|
565 | 565 | class QueuedEngine(object): |
|
566 | 566 | """Adapt an IEngineBase to an IEngineQueued by wrapping it. |
|
567 | 567 | |
|
568 | 568 | The resulting object will implement IEngineQueued which extends |
|
569 | 569 | IEngineCore which extends (IEngineBase, IEngineSerialized). |
|
570 | 570 | |
|
571 | 571 | This seems like the best way of handling it, but I am not sure. The |
|
572 | 572 | other option is to have the various base interfaces be used like |
|
573 | 573 | mix-in intefaces. The problem I have with this is adpatation is |
|
574 | 574 | more difficult and complicated because there can be can multiple |
|
575 | 575 | original and final Interfaces. |
|
576 | 576 | """ |
|
577 | 577 | |
|
578 | 578 | zi.implements(IEngineQueued) |
|
579 | 579 | |
|
580 | 580 | def __init__(self, engine): |
|
581 | 581 | """Create a QueuedEngine object from an engine |
|
582 | 582 | |
|
583 | 583 | engine: An implementor of IEngineCore and IEngineSerialized |
|
584 | 584 | keepUpToDate: whether to update the remote status when the |
|
585 | 585 | queue is empty. Defaults to False. |
|
586 | 586 | """ |
|
587 | 587 | |
|
588 | 588 | # This is the right way to do these tests rather than |
|
589 | 589 | # IEngineCore in list(zi.providedBy(engine)) which will only |
|
590 | 590 | # picks of the interfaces that are directly declared by engine. |
|
591 | 591 | assert IEngineBase.providedBy(engine), \ |
|
592 | 592 | "engine passed to QueuedEngine doesn't provide IEngineBase" |
|
593 | 593 | |
|
594 | 594 | self.engine = engine |
|
595 | 595 | self.id = engine.id |
|
596 | 596 | self.queued = [] |
|
597 | 597 | self.history = {} |
|
598 | 598 | self.engineStatus = {} |
|
599 | 599 | self.currentCommand = None |
|
600 | 600 | self.failureObservers = [] |
|
601 | 601 | |
|
602 | 602 | def _get_properties(self): |
|
603 | 603 | return self.engine.properties |
|
604 | 604 | |
|
605 | 605 | properties = property(_get_properties, lambda self, _: None) |
|
606 | 606 | # Queue management methods. You should not call these directly |
|
607 | 607 | |
|
608 | 608 | def submitCommand(self, cmd): |
|
609 | 609 | """Submit command to queue.""" |
|
610 | 610 | |
|
611 | 611 | d = defer.Deferred() |
|
612 | 612 | cmd.setDeferred(d) |
|
613 | 613 | if self.currentCommand is not None: |
|
614 | 614 | if self.currentCommand.finished: |
|
615 | 615 | # log.msg("Running command immediately: %r" % cmd) |
|
616 | 616 | self.currentCommand = cmd |
|
617 | 617 | self.runCurrentCommand() |
|
618 | 618 | else: # command is still running |
|
619 | 619 | # log.msg("Command is running: %r" % self.currentCommand) |
|
620 | 620 | # log.msg("Queueing: %r" % cmd) |
|
621 | 621 | self.queued.append(cmd) |
|
622 | 622 | else: |
|
623 | 623 | # log.msg("No current commands, running: %r" % cmd) |
|
624 | 624 | self.currentCommand = cmd |
|
625 | 625 | self.runCurrentCommand() |
|
626 | 626 | return d |
|
627 | 627 | |
|
628 | 628 | def runCurrentCommand(self): |
|
629 | 629 | """Run current command.""" |
|
630 | 630 | |
|
631 | 631 | cmd = self.currentCommand |
|
632 | 632 | f = getattr(self.engine, cmd.remoteMethod, None) |
|
633 | 633 | if f: |
|
634 | 634 | d = f(*cmd.args, **cmd.kwargs) |
|
635 | 635 | if cmd.remoteMethod is 'execute': |
|
636 | 636 | d.addCallback(self.saveResult) |
|
637 | 637 | d.addCallback(self.finishCommand) |
|
638 | 638 | d.addErrback(self.abortCommand) |
|
639 | 639 | else: |
|
640 | 640 | return defer.fail(AttributeError(cmd.remoteMethod)) |
|
641 | 641 | |
|
642 | 642 | def _flushQueue(self): |
|
643 | 643 | """Pop next command in queue and run it.""" |
|
644 | 644 | |
|
645 | 645 | if len(self.queued) > 0: |
|
646 | 646 | self.currentCommand = self.queued.pop(0) |
|
647 | 647 | self.runCurrentCommand() |
|
648 | 648 | |
|
649 | 649 | def saveResult(self, result): |
|
650 | 650 | """Put the result in the history.""" |
|
651 | 651 | self.history[result['number']] = result |
|
652 | 652 | return result |
|
653 | 653 | |
|
654 | 654 | def finishCommand(self, result): |
|
655 | 655 | """Finish currrent command.""" |
|
656 | 656 | |
|
657 | 657 | # The order of these commands is absolutely critical. |
|
658 | 658 | self.currentCommand.handleResult(result) |
|
659 | 659 | self.currentCommand.finished = True |
|
660 | 660 | self._flushQueue() |
|
661 | 661 | return result |
|
662 | 662 | |
|
663 | 663 | def abortCommand(self, reason): |
|
664 | 664 | """Abort current command. |
|
665 | 665 | |
|
666 | 666 | This eats the Failure but first passes it onto the Deferred that the |
|
667 | 667 | user has. |
|
668 | 668 | |
|
669 | 669 | It also clear out the queue so subsequence commands don't run. |
|
670 | 670 | """ |
|
671 | 671 | |
|
672 | 672 | # The order of these 3 commands is absolutely critical. The currentCommand |
|
673 | 673 | # must first be marked as finished BEFORE the queue is cleared and before |
|
674 | 674 | # the current command is sent the failure. |
|
675 | 675 | # Also, the queue must be cleared BEFORE the current command is sent the Failure |
|
676 | 676 | # otherwise the errback chain could trigger new commands to be added to the |
|
677 | 677 | # queue before we clear it. We should clear ONLY the commands that were in |
|
678 | 678 | # the queue when the error occured. |
|
679 | 679 | self.currentCommand.finished = True |
|
680 | 680 | s = "%r %r %r" % (self.currentCommand.remoteMethod, self.currentCommand.args, self.currentCommand.kwargs) |
|
681 | 681 | self.clear_queue(msg=s) |
|
682 | 682 | self.currentCommand.handleError(reason) |
|
683 | 683 | |
|
684 | 684 | return None |
|
685 | 685 | |
|
686 | 686 | #--------------------------------------------------------------------------- |
|
687 | 687 | # IEngineCore methods |
|
688 | 688 | #--------------------------------------------------------------------------- |
|
689 | 689 | |
|
690 | 690 | @queue |
|
691 | 691 | def execute(self, lines): |
|
692 | 692 | pass |
|
693 | 693 | |
|
694 | 694 | @queue |
|
695 | 695 | def push(self, namespace): |
|
696 | 696 | pass |
|
697 | 697 | |
|
698 | 698 | @queue |
|
699 | 699 | def pull(self, keys): |
|
700 | 700 | pass |
|
701 | 701 | |
|
702 | 702 | @queue |
|
703 | 703 | def push_function(self, namespace): |
|
704 | 704 | pass |
|
705 | 705 | |
|
706 | 706 | @queue |
|
707 | 707 | def pull_function(self, keys): |
|
708 | 708 | pass |
|
709 | 709 | |
|
710 | 710 | def get_result(self, i=None): |
|
711 | 711 | if i is None: |
|
712 | 712 | i = max(self.history.keys()+[None]) |
|
713 | 713 | |
|
714 | 714 | cmd = self.history.get(i, None) |
|
715 | 715 | # Uncomment this line to disable chaching of results |
|
716 | 716 | #cmd = None |
|
717 | 717 | if cmd is None: |
|
718 | 718 | return self.submitCommand(Command('get_result', i)) |
|
719 | 719 | else: |
|
720 | 720 | return defer.succeed(cmd) |
|
721 | 721 | |
|
722 | 722 | def reset(self): |
|
723 | 723 | self.clear_queue() |
|
724 | 724 | self.history = {} # reset the cache - I am not sure we should do this |
|
725 | 725 | return self.submitCommand(Command('reset')) |
|
726 | 726 | |
|
727 | 727 | def kill(self): |
|
728 | 728 | self.clear_queue() |
|
729 | 729 | return self.submitCommand(Command('kill')) |
|
730 | 730 | |
|
731 | 731 | @queue |
|
732 | 732 | def keys(self): |
|
733 | 733 | pass |
|
734 | 734 | |
|
735 | 735 | #--------------------------------------------------------------------------- |
|
736 | 736 | # IEngineSerialized methods |
|
737 | 737 | #--------------------------------------------------------------------------- |
|
738 | 738 | |
|
739 | 739 | @queue |
|
740 | 740 | def push_serialized(self, namespace): |
|
741 | 741 | pass |
|
742 | 742 | |
|
743 | 743 | @queue |
|
744 | 744 | def pull_serialized(self, keys): |
|
745 | 745 | pass |
|
746 | 746 | |
|
747 | 747 | #--------------------------------------------------------------------------- |
|
748 | 748 | # IEngineProperties methods |
|
749 | 749 | #--------------------------------------------------------------------------- |
|
750 | 750 | |
|
751 | 751 | @queue |
|
752 | 752 | def set_properties(self, namespace): |
|
753 | 753 | pass |
|
754 | 754 | |
|
755 | 755 | @queue |
|
756 | 756 | def get_properties(self, keys=None): |
|
757 | 757 | pass |
|
758 | 758 | |
|
759 | 759 | @queue |
|
760 | 760 | def del_properties(self, keys): |
|
761 | 761 | pass |
|
762 | 762 | |
|
763 | 763 | @queue |
|
764 | 764 | def has_properties(self, keys): |
|
765 | 765 | pass |
|
766 | 766 | |
|
767 | 767 | @queue |
|
768 | 768 | def clear_properties(self): |
|
769 | 769 | pass |
|
770 | 770 | |
|
771 | 771 | #--------------------------------------------------------------------------- |
|
772 | 772 | # IQueuedEngine methods |
|
773 | 773 | #--------------------------------------------------------------------------- |
|
774 | 774 | |
|
775 | 775 | def clear_queue(self, msg=''): |
|
776 | 776 | """Clear the queue, but doesn't cancel the currently running commmand.""" |
|
777 | 777 | |
|
778 | 778 | for cmd in self.queued: |
|
779 | 779 | cmd.deferred.errback(failure.Failure(error.QueueCleared(msg))) |
|
780 | 780 | self.queued = [] |
|
781 | 781 | return defer.succeed(None) |
|
782 | 782 | |
|
783 | 783 | def queue_status(self): |
|
784 | 784 | if self.currentCommand is not None: |
|
785 | 785 | if self.currentCommand.finished: |
|
786 | 786 | pending = repr(None) |
|
787 | 787 | else: |
|
788 | 788 | pending = repr(self.currentCommand) |
|
789 | 789 | else: |
|
790 | 790 | pending = repr(None) |
|
791 | 791 | dikt = {'queue':map(repr,self.queued), 'pending':pending} |
|
792 | 792 | return defer.succeed(dikt) |
|
793 | 793 | |
|
794 | 794 | def register_failure_observer(self, obs): |
|
795 | 795 | self.failureObservers.append(obs) |
|
796 | 796 | |
|
797 | 797 | def unregister_failure_observer(self, obs): |
|
798 | 798 | self.failureObservers.remove(obs) |
|
799 | 799 | |
|
800 | 800 | |
|
801 | 801 | # Now register QueuedEngine as an adpater class that makes an IEngineBase into a |
|
802 | 802 | # IEngineQueued. |
|
803 | 803 | components.registerAdapter(QueuedEngine, IEngineBase, IEngineQueued) |
|
804 | 804 | |
|
805 | 805 | |
|
806 | 806 | class Command(object): |
|
807 | 807 | """A command object that encapslates queued commands. |
|
808 | 808 | |
|
809 | 809 | This class basically keeps track of a command that has been queued |
|
810 | 810 | in a QueuedEngine. It manages the deferreds and hold the method to be called |
|
811 | 811 | and the arguments to that method. |
|
812 | 812 | """ |
|
813 | 813 | |
|
814 | 814 | |
|
815 | 815 | def __init__(self, remoteMethod, *args, **kwargs): |
|
816 | 816 | """Build a new Command object.""" |
|
817 | 817 | |
|
818 | 818 | self.remoteMethod = remoteMethod |
|
819 | 819 | self.args = args |
|
820 | 820 | self.kwargs = kwargs |
|
821 | 821 | self.finished = False |
|
822 | 822 | |
|
823 | 823 | def setDeferred(self, d): |
|
824 | 824 | """Sets the deferred attribute of the Command.""" |
|
825 | 825 | |
|
826 | 826 | self.deferred = d |
|
827 | 827 | |
|
828 | 828 | def __repr__(self): |
|
829 | 829 | if not self.args: |
|
830 | 830 | args = '' |
|
831 | 831 | else: |
|
832 | 832 | args = str(self.args)[1:-2] #cut off (...,) |
|
833 | 833 | for k,v in self.kwargs.iteritems(): |
|
834 | 834 | if args: |
|
835 | 835 | args += ', ' |
|
836 | 836 | args += '%s=%r' %(k,v) |
|
837 | 837 | return "%s(%s)" %(self.remoteMethod, args) |
|
838 | 838 | |
|
839 | 839 | def handleResult(self, result): |
|
840 | 840 | """When the result is ready, relay it to self.deferred.""" |
|
841 | 841 | |
|
842 | 842 | self.deferred.callback(result) |
|
843 | 843 | |
|
844 | 844 | def handleError(self, reason): |
|
845 | 845 | """When an error has occured, relay it to self.deferred.""" |
|
846 | 846 | |
|
847 | 847 | self.deferred.errback(reason) |
|
848 | 848 | |
|
849 | 849 | class ThreadedEngineService(EngineService): |
|
850 | """An EngineService subclass that defers execute commands to a separate | |
|
851 | thread. | |
|
852 | ||
|
853 | ThreadedEngineService uses twisted.internet.threads.deferToThread to | |
|
854 | defer execute requests to a separate thread. GUI frontends may want to | |
|
855 | use ThreadedEngineService as the engine in an | |
|
856 | IPython.frontend.frontendbase.FrontEndBase subclass to prevent | |
|
857 | block execution from blocking the GUI thread. | |
|
858 | """ | |
|
850 | 859 | |
|
851 | 860 | zi.implements(IEngineBase) |
|
852 | 861 | |
|
853 | 862 | def __init__(self, shellClass=Interpreter, mpi=None): |
|
854 | 863 | EngineService.__init__(self, shellClass, mpi) |
|
864 | ||
|
865 | ||
|
866 | def execute(self, lines): | |
|
855 | 867 | # Only import this if we are going to use this class |
|
856 | 868 | from twisted.internet import threads |
|
857 | 869 | |
|
858 | def execute(self, lines): | |
|
859 | msg = """engine: %r | |
|
860 | method: execute(lines) | |
|
861 | lines = %s""" % (self.id, lines) | |
|
862 |
d = threads.deferToThread(self. |
|
|
870 | msg = {'engineid':self.id, | |
|
871 | 'method':'execute', | |
|
872 | 'args':[lines]} | |
|
873 | ||
|
874 | d = threads.deferToThread(self.shell.execute, lines) | |
|
863 | 875 | d.addCallback(self.addIDToResult) |
|
864 | 876 | return d |
@@ -1,66 +1,78 b'' | |||
|
1 | 1 | # encoding: utf-8 |
|
2 | 2 | |
|
3 | 3 | """This file contains unittests for the kernel.engineservice.py module. |
|
4 | 4 | |
|
5 | 5 | Things that should be tested: |
|
6 | 6 | |
|
7 | 7 | - Should the EngineService return Deferred objects? |
|
8 | 8 | - Run the same tests that are run in shell.py. |
|
9 | 9 | - Make sure that the Interface is really implemented. |
|
10 | 10 | - The startService and stopService methods. |
|
11 | 11 | """ |
|
12 | 12 | |
|
13 | 13 | __docformat__ = "restructuredtext en" |
|
14 | 14 | |
|
15 | 15 | #------------------------------------------------------------------------------- |
|
16 | 16 | # Copyright (C) 2008 The IPython Development Team |
|
17 | 17 | # |
|
18 | 18 | # Distributed under the terms of the BSD License. The full license is in |
|
19 | 19 | # the file COPYING, distributed as part of this software. |
|
20 | 20 | #------------------------------------------------------------------------------- |
|
21 | 21 | |
|
22 | 22 | #------------------------------------------------------------------------------- |
|
23 | 23 | # Imports |
|
24 | 24 | #------------------------------------------------------------------------------- |
|
25 | 25 | |
|
26 | 26 | try: |
|
27 | 27 | from twisted.internet import defer |
|
28 | 28 | from twisted.application.service import IService |
|
29 | 29 | |
|
30 | 30 | from IPython.kernel import engineservice as es |
|
31 | 31 | from IPython.testing.util import DeferredTestCase |
|
32 | 32 | from IPython.kernel.tests.engineservicetest import \ |
|
33 | 33 | IEngineCoreTestCase, \ |
|
34 | 34 | IEngineSerializedTestCase, \ |
|
35 | 35 | IEngineQueuedTestCase, \ |
|
36 | 36 | IEnginePropertiesTestCase |
|
37 | 37 | except ImportError: |
|
38 | 38 | pass |
|
39 | 39 | else: |
|
40 | 40 | class BasicEngineServiceTest(DeferredTestCase, |
|
41 | 41 | IEngineCoreTestCase, |
|
42 | 42 | IEngineSerializedTestCase, |
|
43 | 43 | IEnginePropertiesTestCase): |
|
44 | 44 | |
|
45 | 45 | def setUp(self): |
|
46 | 46 | self.engine = es.EngineService() |
|
47 | 47 | self.engine.startService() |
|
48 | 48 | |
|
49 | 49 | def tearDown(self): |
|
50 | 50 | return self.engine.stopService() |
|
51 | 51 | |
|
52 | class ThreadedEngineServiceTest(DeferredTestCase, | |
|
53 | IEngineCoreTestCase, | |
|
54 | IEngineSerializedTestCase, | |
|
55 | IEnginePropertiesTestCase): | |
|
56 | ||
|
57 | def setUp(self): | |
|
58 | self.engine = es.ThreadedEngineService() | |
|
59 | self.engine.startService() | |
|
60 | ||
|
61 | def tearDown(self): | |
|
62 | return self.engine.stopService() | |
|
63 | ||
|
52 | 64 | class QueuedEngineServiceTest(DeferredTestCase, |
|
53 | 65 | IEngineCoreTestCase, |
|
54 | 66 | IEngineSerializedTestCase, |
|
55 | 67 | IEnginePropertiesTestCase, |
|
56 | 68 | IEngineQueuedTestCase): |
|
57 | 69 | |
|
58 | 70 | def setUp(self): |
|
59 | 71 | self.rawEngine = es.EngineService() |
|
60 | 72 | self.rawEngine.startService() |
|
61 | 73 | self.engine = es.IEngineQueued(self.rawEngine) |
|
62 | 74 | |
|
63 | 75 | def tearDown(self): |
|
64 | 76 | return self.rawEngine.stopService() |
|
65 | 77 | |
|
66 | 78 |
General Comments 0
You need to be logged in to leave comments.
Login now