Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

changed the JSON objective code to be less strict and use a dynlib

  • Loading branch information...
commit 2bd0b072c08ff59ceecdda10a0b6e63fda2df29d 1 parent 5182d9a
Matt Aimonetti authored January 23, 2009
5  core_ext/array.rb
... ...
@@ -1,9 +1,6 @@
1 1
 class Array
2 2
   def to_json(*args)
3 3
     return self if self.empty?
4  
-    errorp    = Pointer.new_with_type('@')
5  
-    obj       = JSON.sbjson.stringWithFragment(self, error:errorp)
6  
-    raise errorp[0].description if errorp[0]
7  
-    obj
  4
+    self.toJson
8 5
   end
9 6
 end
2  core_ext/enumerable.rb
... ...
@@ -1,5 +1,5 @@
1 1
 module Enumerable
2 2
   def to_json(*a)
3  
-    to_a.to_json(*a)
  3
+    self.is_a?(Hash) ? self.jsonStringValue : to_a.to_json(*a)
4 4
   end
5 5
 end
6  core_ext/hash.rb
... ...
@@ -1,8 +1,6 @@
1 1
 class Hash
2 2
   def to_json(*args)
3  
-    errorp    = Pointer.new_with_type('@')
4  
-    obj       = JSON.sbjson.stringWithFragment(self, error:errorp)
5  
-    raise errorp[0].description if errorp[0]
6  
-    obj
  3
+    p "Hash to_json"
  4
+    self.jsonStringValue
7 5
   end
8 6
 end
92  json.rb
... ...
@@ -1,5 +1,8 @@
1  
-# Uses the objc JSON framework http://code.brautaset.org/JSON/
2  
-framework "JSON"
  1
+# Check the ObjC source code available in src
  2
+# if you modify the source code, you will need to rebuild
  3
+# the dynlib and rename it BSJON.bundle
  4
+require File.join(File.dirname(__FILE__), 'lib', 'BSJSON')
  5
+
3 6
 ext_path = File.join(File.dirname(__FILE__), "core_ext")
4 7
 require File.join(ext_path, 'array')
5 8
 require File.join(ext_path, 'object')
@@ -26,15 +29,6 @@ class NestingError < ParserError; end
26 29
   # This exception is raised, if a generator or unparser error occurs.
27 30
   class GeneratorError < JSONError; end
28 31
   
29  
-  # Returns an instance of SBJSON
30  
-  # SBJSON is framework implementing a strict JSON parser and generator in Objective-C.
31  
-  #
32  
-  # http://code.google.com/p/json-framework/
33  
-  #
34  
-  def self.sbjson
35  
-    @sbjson ||= SBJSON.new
36  
-  end
37  
-  
38 32
   # Load a ruby data structure from a JSON _source_ and return it. A source can
39 33
   # either be a string-like object, an IO like object, or an object responding
40 34
   # to the read method. If _proc_ was given, it will be called with any nested
@@ -58,21 +52,25 @@ def self.load(source, proc = nil)
58 52
       source = source.to_io.read
59 53
     else
60 54
       source = source.read
61  
-    end
62  
-    errorp = Pointer.new_with_type('@')
63  
-    result = JSON.sbjson.objectWithString(source, error:errorp)
64  
-    raise (JSON::ParserError, errorp[0].description) if errorp[0]
65  
-    recurse_proc(result, &proc) if proc
66  
-    ## TEMP LIMITED HACK
67  
-    if result.is_a?(Array)
68  
-      result.map do |obj|
69  
-        obj_d, obj_l = obj.doubleValue, obj.longValue
70  
-        obj_d == obj_l ? obj_l : obj_d
71  
-      end
  55
+    end    
  56
+    
  57
+    begin
  58
+      result = Hash.dictionaryWithJSONString(source)
  59
+    rescue => e
  60
+      raise ParserError, e
72 61
     else
73  
-      result
74  
-    end
  62
+      recurse_proc(result, &proc) if proc
  63
+      ## TEMP LIMITED HACK
  64
+      if result.is_a?(Array)
  65
+        result.map do |obj|
  66
+          obj_d, obj_l = obj.doubleValue, obj.longValue
  67
+          obj_d == obj_l ? obj_l : obj_d
  68
+        end
  69
+      else
  70
+        result
  71
+      end
75 72
     ##
  73
+    end
76 74
     
77 75
   end
78 76
   
@@ -100,48 +98,15 @@ def recurse_proc(result, &proc)
100 98
   # :api: public
101 99
   #
102 100
   def self.dump(obj, anIO = nil, limit = nil)
103  
-    errorp    = Pointer.new_with_type('@')
104  
-    json      = sbjson.stringWithFragment(obj, error:errorp)
105  
-    raise errorp[0].description if errorp[0]
106  
-    json
  101
+    begin
  102
+      obj.to_json
  103
+    rescue => e
  104
+      raise GeneratorError, e
  105
+    end
107 106
   end
108 107
   
109  
-  # Unparse the Ruby data structure _obj_ into a single line JSON string and
110  
-  # return it. _state_ is
111  
-  # * a JSON::State object,
112  
-  # * or a Hash like object (responding to to_hash),
113  
-  # * an object convertible into a hash by a to_h method,
114  
-  # that is used as or to configure a State object.
115  
-  #
116  
-  # It defaults to a state object, that creates the shortest possible JSON text
117  
-  # in one line, checks for circular data structures and doesn't allow NaN,
118  
-  # Infinity, and -Infinity.
119  
-  #
120  
-  # A _state_ hash can have the following keys:
121  
-  # * *indent*: a string used to indent levels (default: ''),
122  
-  # * *space*: a string that is put after, a : or , delimiter (default: ''),
123  
-  # * *space_before*: a string that is put before a : pair delimiter (default: ''),
124  
-  # * *object_nl*: a string that is put at the end of a JSON object (default: ''), 
125  
-  # * *array_nl*: a string that is put at the end of a JSON array (default: ''),
126  
-  # * *check_circular*: true if checking for circular data structures
127  
-  #   should be done (the default), false otherwise.
128  
-  # * *allow_nan*: true if NaN, Infinity, and -Infinity should be
129  
-  #   generated, otherwise an exception is thrown, if these values are
130  
-  #   encountered. This options defaults to false.
131  
-  # * *max_nesting*: The maximum depth of nesting allowed in the data
132  
-  #   structures from which JSON is to be generated. Disable depth checking
133  
-  #   with :max_nesting => false, it defaults to 19.
134  
-  #
135  
-  # See also the fast_generate for the fastest creation method with the least
136  
-  # amount of sanity checks, and the pretty_generate method for some
137  
-  # defaults for a pretty output.
138 108
   def self.generate(obj, state = nil)
139  
-    if state
140  
-      p "State not implemented yet"
141  
-      # state = State.from_state(state)
142  
-    else
143  
-      # state = State.new
144  
-    end
  109
+    puts "State not implemented yet" if state
145 110
     obj.to_json(state)
146 111
   end
147 112
   
@@ -159,6 +124,7 @@ def self.generate(obj, state = nil)
159 124
   #   additions even if a matchin class and create_id was found. This option
160 125
   #   defaults to true.
161 126
   def self.parse(source, opts = {})
  127
+    p "Options not supported yet" unless opts.empty?
162 128
     JSON.load(source)
163 129
   end
164 130
   
BIN  lib/BSJSON.bundle
Binary file not shown
120  src/BSJSON/BSJSON.xcodeproj/mattetti.mode1v3
@@ -277,11 +277,13 @@
277 277
 							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
278 278
 							<array>
279 279
 								<array>
  280
+									<integer>2</integer>
  281
+									<integer>1</integer>
280 282
 									<integer>0</integer>
281 283
 								</array>
282 284
 							</array>
283 285
 							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
284  
-							<string>{{0, 0}, {278, 338}}</string>
  286
+							<string>{{0, 0}, {278, 377}}</string>
285 287
 						</dict>
286 288
 						<key>PBXTopSmartGroupGIDs</key>
287 289
 						<array/>
@@ -293,14 +295,14 @@
293 295
 					<key>GeometryConfiguration</key>
294 296
 					<dict>
295 297
 						<key>Frame</key>
296  
-						<string>{{0, 0}, {295, 356}}</string>
  298
+						<string>{{0, 0}, {295, 395}}</string>
297 299
 						<key>GroupTreeTableConfiguration</key>
298 300
 						<array>
299 301
 							<string>MainColumn</string>
300 302
 							<real>278</real>
301 303
 						</array>
302 304
 						<key>RubberWindowFrame</key>
303  
-						<string>61 321 690 397 0 0 1280 778 </string>
  305
+						<string>147 260 1124 436 0 0 1280 778 </string>
304 306
 					</dict>
305 307
 					<key>Module</key>
306 308
 					<string>PBXSmartGroupTreeModule</string>
@@ -316,7 +318,7 @@
316 318
 								<key>PBXProjectModuleGUID</key>
317 319
 								<string>1CE0B20306471E060097A5F4</string>
318 320
 								<key>PBXProjectModuleLabel</key>
319  
-								<string>MyNewFile14.java</string>
  321
+								<string>NSMutableDictionary+BSJSONAdditions.h</string>
320 322
 								<key>PBXSplitModuleInNavigatorKey</key>
321 323
 								<dict>
322 324
 									<key>Split0</key>
@@ -324,7 +326,71 @@
324 326
 										<key>PBXProjectModuleGUID</key>
325 327
 										<string>1CE0B20406471E060097A5F4</string>
326 328
 										<key>PBXProjectModuleLabel</key>
327  
-										<string>MyNewFile14.java</string>
  329
+										<string>NSMutableDictionary+BSJSONAdditions.h</string>
  330
+										<key>_historyCapacity</key>
  331
+										<integer>0</integer>
  332
+										<key>bookmark</key>
  333
+										<string>2BAB79A20F2AC8E000A1588A</string>
  334
+										<key>history</key>
  335
+										<array>
  336
+											<string>2BAB79720F2AC8E000A1588A</string>
  337
+											<string>2BAB79730F2AC8E000A1588A</string>
  338
+											<string>2BAB79740F2AC8E000A1588A</string>
  339
+											<string>2BAB79750F2AC8E000A1588A</string>
  340
+											<string>2BAB79760F2AC8E000A1588A</string>
  341
+											<string>2BAB79770F2AC8E000A1588A</string>
  342
+										</array>
  343
+										<key>prevStack</key>
  344
+										<array>
  345
+											<string>2B823B0C0F2578EF007AE24B</string>
  346
+											<string>2B823B0D0F2578EF007AE24B</string>
  347
+											<string>2B823B0E0F2578EF007AE24B</string>
  348
+											<string>2B823B0F0F2578EF007AE24B</string>
  349
+											<string>2B823B100F2578EF007AE24B</string>
  350
+											<string>2B823B130F2578EF007AE24B</string>
  351
+											<string>2BAB79780F2AC8E000A1588A</string>
  352
+											<string>2BAB79790F2AC8E000A1588A</string>
  353
+											<string>2BAB797A0F2AC8E000A1588A</string>
  354
+											<string>2BAB797B0F2AC8E000A1588A</string>
  355
+											<string>2BAB797C0F2AC8E000A1588A</string>
  356
+											<string>2BAB797D0F2AC8E000A1588A</string>
  357
+											<string>2BAB797E0F2AC8E000A1588A</string>
  358
+											<string>2BAB797F0F2AC8E000A1588A</string>
  359
+											<string>2BAB79800F2AC8E000A1588A</string>
  360
+											<string>2BAB79810F2AC8E000A1588A</string>
  361
+											<string>2BAB79820F2AC8E000A1588A</string>
  362
+											<string>2BAB79830F2AC8E000A1588A</string>
  363
+											<string>2BAB79840F2AC8E000A1588A</string>
  364
+											<string>2BAB79850F2AC8E000A1588A</string>
  365
+											<string>2BAB79860F2AC8E000A1588A</string>
  366
+											<string>2BAB79870F2AC8E000A1588A</string>
  367
+											<string>2BAB79880F2AC8E000A1588A</string>
  368
+											<string>2BAB79890F2AC8E000A1588A</string>
  369
+											<string>2BAB798A0F2AC8E000A1588A</string>
  370
+											<string>2BAB798B0F2AC8E000A1588A</string>
  371
+											<string>2BAB798C0F2AC8E000A1588A</string>
  372
+											<string>2BAB798D0F2AC8E000A1588A</string>
  373
+											<string>2BAB798E0F2AC8E000A1588A</string>
  374
+											<string>2BAB798F0F2AC8E000A1588A</string>
  375
+											<string>2BAB79900F2AC8E000A1588A</string>
  376
+											<string>2BAB79910F2AC8E000A1588A</string>
  377
+											<string>2BAB79920F2AC8E000A1588A</string>
  378
+											<string>2BAB79930F2AC8E000A1588A</string>
  379
+											<string>2BAB79940F2AC8E000A1588A</string>
  380
+											<string>2BAB79950F2AC8E000A1588A</string>
  381
+											<string>2BAB79960F2AC8E000A1588A</string>
  382
+											<string>2BAB79970F2AC8E000A1588A</string>
  383
+											<string>2BAB79980F2AC8E000A1588A</string>
  384
+											<string>2BAB79990F2AC8E000A1588A</string>
  385
+											<string>2BAB799A0F2AC8E000A1588A</string>
  386
+											<string>2BAB799B0F2AC8E000A1588A</string>
  387
+											<string>2BAB799C0F2AC8E000A1588A</string>
  388
+											<string>2BAB799D0F2AC8E000A1588A</string>
  389
+											<string>2BAB799E0F2AC8E000A1588A</string>
  390
+											<string>2BAB799F0F2AC8E000A1588A</string>
  391
+											<string>2BAB79A00F2AC8E000A1588A</string>
  392
+											<string>2BAB79A10F2AC8E000A1588A</string>
  393
+										</array>
328 394
 									</dict>
329 395
 									<key>SplitCount</key>
330 396
 									<string>1</string>
@@ -335,14 +401,14 @@
335 401
 							<key>GeometryConfiguration</key>
336 402
 							<dict>
337 403
 								<key>Frame</key>
338  
-								<string>{{0, 0}, {390, 0}}</string>
  404
+								<string>{{0, 0}, {824, 299}}</string>
339 405
 								<key>RubberWindowFrame</key>
340  
-								<string>61 321 690 397 0 0 1280 778 </string>
  406
+								<string>147 260 1124 436 0 0 1280 778 </string>
341 407
 							</dict>
342 408
 							<key>Module</key>
343 409
 							<string>PBXNavigatorGroup</string>
344 410
 							<key>Proportion</key>
345  
-							<string>0pt</string>
  411
+							<string>299pt</string>
346 412
 						</dict>
347 413
 						<dict>
348 414
 							<key>ContentConfiguration</key>
@@ -355,18 +421,18 @@
355 421
 							<key>GeometryConfiguration</key>
356 422
 							<dict>
357 423
 								<key>Frame</key>
358  
-								<string>{{0, 5}, {390, 351}}</string>
  424
+								<string>{{0, 304}, {824, 91}}</string>
359 425
 								<key>RubberWindowFrame</key>
360  
-								<string>61 321 690 397 0 0 1280 778 </string>
  426
+								<string>147 260 1124 436 0 0 1280 778 </string>
361 427
 							</dict>
362 428
 							<key>Module</key>
363 429
 							<string>XCDetailModule</string>
364 430
 							<key>Proportion</key>
365  
-							<string>351pt</string>
  431
+							<string>91pt</string>
366 432
 						</dict>
367 433
 					</array>
368 434
 					<key>Proportion</key>
369  
-					<string>390pt</string>
  435
+					<string>824pt</string>
370 436
 				</dict>
371 437
 			</array>
372 438
 			<key>Name</key>
@@ -381,9 +447,9 @@
381 447
 			</array>
382 448
 			<key>TableOfContents</key>
383 449
 			<array>
384  
-				<string>2BC0D2280F19B78A0011E45A</string>
  450
+				<string>2BAB79A30F2AC8E000A1588A</string>
385 451
 				<string>1CE0B1FE06471DED0097A5F4</string>
386  
-				<string>2BC0D2290F19B78A0011E45A</string>
  452
+				<string>2BAB79A40F2AC8E000A1588A</string>
387 453
 				<string>1CE0B20306471E060097A5F4</string>
388 454
 				<string>1CE0B20506471E060097A5F4</string>
389 455
 			</array>
@@ -496,7 +562,7 @@
496 562
 	<key>PerspectivesBarVisible</key>
497 563
 	<false/>
498 564
 	<key>PinnedNavigatorIdentifier</key>
499  
-	<string>2BC0D22C0F19B8D40011E45A</string>
  565
+	<string>2B823B050F23B994007AE24B</string>
500 566
 	<key>ShelfIsVisible</key>
501 567
 	<false/>
502 568
 	<key>SourceDescription</key>
@@ -520,10 +586,10 @@
520 586
 	<key>WindowOrderList</key>
521 587
 	<array>
522 588
 		<string>2BC0D21B0F19B6B10011E45A</string>
523  
-		<string>/Users/mattetti/cocoa/BSJSON/BSJSON.xcodeproj</string>
  589
+		<string>/Users/mattetti/Code/macruby/json/src/BSJSON/BSJSON.xcodeproj</string>
524 590
 	</array>
525 591
 	<key>WindowString</key>
526  
-	<string>61 321 690 397 0 0 1280 778 </string>
  592
+	<string>147 260 1124 436 0 0 1280 778 </string>
527 593
 	<key>WindowToolsV3</key>
528 594
 	<array>
529 595
 		<dict>
@@ -539,28 +605,26 @@
539 605
 					<key>Dock</key>
540 606
 					<array>
541 607
 						<dict>
542  
-							<key>BecomeActive</key>
543  
-							<true/>
544 608
 							<key>ContentConfiguration</key>
545 609
 							<dict>
546 610
 								<key>PBXProjectModuleGUID</key>
547 611
 								<string>1CD0528F0623707200166675</string>
548 612
 								<key>PBXProjectModuleLabel</key>
549  
-								<string>NSDictionary+BSJSONAdditions.h</string>
  613
+								<string></string>
550 614
 								<key>StatusBarVisibility</key>
551 615
 								<true/>
552 616
 							</dict>
553 617
 							<key>GeometryConfiguration</key>
554 618
 							<dict>
555 619
 								<key>Frame</key>
556  
-								<string>{{0, 0}, {500, 218}}</string>
  620
+								<string>{{0, 0}, {690, 199}}</string>
557 621
 								<key>RubberWindowFrame</key>
558  
-								<string>578 227 500 500 0 0 1280 778 </string>
  622
+								<string>578 246 690 481 0 0 1280 778 </string>
559 623
 							</dict>
560 624
 							<key>Module</key>
561 625
 							<string>PBXNavigatorGroup</string>
562 626
 							<key>Proportion</key>
563  
-							<string>218pt</string>
  627
+							<string>199pt</string>
564 628
 						</dict>
565 629
 						<dict>
566 630
 							<key>ContentConfiguration</key>
@@ -577,9 +641,9 @@
577 641
 							<key>GeometryConfiguration</key>
578 642
 							<dict>
579 643
 								<key>Frame</key>
580  
-								<string>{{0, 223}, {500, 236}}</string>
  644
+								<string>{{0, 204}, {690, 236}}</string>
581 645
 								<key>RubberWindowFrame</key>
582  
-								<string>578 227 500 500 0 0 1280 778 </string>
  646
+								<string>578 246 690 481 0 0 1280 778 </string>
583 647
 							</dict>
584 648
 							<key>Module</key>
585 649
 							<string>PBXBuildResultsModule</string>
@@ -588,7 +652,7 @@
588 652
 						</dict>
589 653
 					</array>
590 654
 					<key>Proportion</key>
591  
-					<string>459pt</string>
  655
+					<string>440pt</string>
592 656
 				</dict>
593 657
 			</array>
594 658
 			<key>Name</key>
@@ -602,14 +666,14 @@
602 666
 			<key>TableOfContents</key>
603 667
 			<array>
604 668
 				<string>2BC0D21B0F19B6B10011E45A</string>
605  
-				<string>2BC0D21C0F19B6B10011E45A</string>
  669
+				<string>2BAB79A50F2AC8E000A1588A</string>
606 670
 				<string>1CD0528F0623707200166675</string>
607 671
 				<string>XCMainBuildResultsModuleGUID</string>
608 672
 			</array>
609 673
 			<key>ToolbarConfiguration</key>
610 674
 			<string>xcode.toolbar.config.buildV3</string>
611 675
 			<key>WindowString</key>
612  
-			<string>578 227 500 500 0 0 1280 778 </string>
  676
+			<string>578 246 690 481 0 0 1280 778 </string>
613 677
 			<key>WindowToolGUID</key>
614 678
 			<string>2BC0D21B0F19B6B10011E45A</string>
615 679
 			<key>WindowToolIsVisible</key>
1,220  src/BSJSON/BSJSON.xcodeproj/mattetti.pbxuser
@@ -7,6 +7,9 @@
7 7
 		addToTargets = (
8 8
 			D2AAC0C605546C1D00DB518D /* BSJSON */,
9 9
 		);
  10
+		breakpoints = (
  11
+			2BAB796E0F2AAE6400A1588A /* NSMutableArray+BSJSONAdditions.m:37 */,
  12
+		);
10 13
 		codeSenseManager = 2BC0D1EC0F19B3420011E45A /* Code sense */;
11 14
 		perUserDictionary = {
12 15
 			PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@@ -14,9 +17,9 @@
14 17
 				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
15 18
 				PBXFileTableDataSourceColumnWidthsKey = (
16 19
 					20,
17  
-					151,
  20
+					585,
18 21
 					20,
19  
-					48.16259765625,
  22
+					48,
20 23
 					43,
21 24
 					43,
22 25
 					20,
@@ -31,14 +34,1180 @@
31 34
 					PBXFileDataSource_Target_ColumnID,
32 35
 				);
33 36
 			};
34  
-			PBXPerProjectTemplateStateSaveDate = 253342499;
35  
-			PBXWorkspaceStateSaveDate = 253342499;
  37
+			PBXPerProjectTemplateStateSaveDate = 254454695;
  38
+			PBXWorkspaceStateSaveDate = 254454695;
  39
+		};
  40
+		perUserProjectItems = {
  41
+			2B823B060F2578EF007AE24B = 2B823B060F2578EF007AE24B /* PBXTextBookmark */;
  42
+			2B823B070F2578EF007AE24B = 2B823B070F2578EF007AE24B /* PBXTextBookmark */;
  43
+			2B823B080F2578EF007AE24B = 2B823B080F2578EF007AE24B /* PBXTextBookmark */;
  44
+			2B823B090F2578EF007AE24B = 2B823B090F2578EF007AE24B /* PBXTextBookmark */;
  45
+			2B823B0A0F2578EF007AE24B = 2B823B0A0F2578EF007AE24B /* PBXTextBookmark */;
  46
+			2B823B0B0F2578EF007AE24B = 2B823B0B0F2578EF007AE24B /* PBXTextBookmark */;
  47
+			2B823B0C0F2578EF007AE24B = 2B823B0C0F2578EF007AE24B /* PBXTextBookmark */;
  48
+			2B823B0D0F2578EF007AE24B = 2B823B0D0F2578EF007AE24B /* PBXTextBookmark */;
  49
+			2B823B0E0F2578EF007AE24B = 2B823B0E0F2578EF007AE24B /* PBXTextBookmark */;
  50
+			2B823B0F0F2578EF007AE24B = 2B823B0F0F2578EF007AE24B /* PBXTextBookmark */;
  51
+			2B823B100F2578EF007AE24B = 2B823B100F2578EF007AE24B /* PBXTextBookmark */;
  52
+			2B823B110F2578EF007AE24B = 2B823B110F2578EF007AE24B /* PBXTextBookmark */;
  53
+			2B823B120F2578EF007AE24B = 2B823B120F2578EF007AE24B /* PBXTextBookmark */;
  54
+			2B823B130F2578EF007AE24B = 2B823B130F2578EF007AE24B /* PBXTextBookmark */;
  55
+			2B823B140F2578EF007AE24B = 2B823B140F2578EF007AE24B /* PBXTextBookmark */;
  56
+			2B823B150F2578EF007AE24B = 2B823B150F2578EF007AE24B /* PBXTextBookmark */;
  57
+			2B823B160F2578EF007AE24B = 2B823B160F2578EF007AE24B /* PBXTextBookmark */;
  58
+			2B823B170F2578EF007AE24B = 2B823B170F2578EF007AE24B /* PBXTextBookmark */;
  59
+			2B823B180F2578EF007AE24B = 2B823B180F2578EF007AE24B /* PBXTextBookmark */;
  60
+			2B823B190F2578EF007AE24B = 2B823B190F2578EF007AE24B /* PBXTextBookmark */;
  61
+			2B823B1A0F2578EF007AE24B = 2B823B1A0F2578EF007AE24B /* PBXTextBookmark */;
  62
+			2B823B1B0F2578EF007AE24B = 2B823B1B0F2578EF007AE24B /* PBXTextBookmark */;
  63
+			2B823B1C0F2578EF007AE24B = 2B823B1C0F2578EF007AE24B /* PBXTextBookmark */;
  64
+			2B823B1D0F2578EF007AE24B = 2B823B1D0F2578EF007AE24B /* PBXTextBookmark */;
  65
+			2B823B1E0F2578EF007AE24B = 2B823B1E0F2578EF007AE24B /* PBXTextBookmark */;
  66
+			2B823B1F0F2578EF007AE24B = 2B823B1F0F2578EF007AE24B /* PBXTextBookmark */;
  67
+			2B823B200F2578EF007AE24B = 2B823B200F2578EF007AE24B /* PBXTextBookmark */;
  68
+			2B823B210F2578EF007AE24B = 2B823B210F2578EF007AE24B /* PBXTextBookmark */;
  69
+			2B823B220F2578EF007AE24B = 2B823B220F2578EF007AE24B /* PBXTextBookmark */;
  70
+			2B823B230F2578EF007AE24B = 2B823B230F2578EF007AE24B /* PBXTextBookmark */;
  71
+			2B823B240F2578EF007AE24B = 2B823B240F2578EF007AE24B /* PBXTextBookmark */;
  72
+			2B823B250F2578EF007AE24B = 2B823B250F2578EF007AE24B /* PBXTextBookmark */;
  73
+			2B823B260F2578EF007AE24B = 2B823B260F2578EF007AE24B /* PBXTextBookmark */;
  74
+			2B823B270F2578EF007AE24B = 2B823B270F2578EF007AE24B /* PBXTextBookmark */;
  75
+			2B823B280F2578EF007AE24B = 2B823B280F2578EF007AE24B /* PBXTextBookmark */;
  76
+			2B823B290F2578EF007AE24B = 2B823B290F2578EF007AE24B /* PBXTextBookmark */;
  77
+			2B823B2A0F2578EF007AE24B = 2B823B2A0F2578EF007AE24B /* PBXTextBookmark */;
  78
+			2B823B2B0F2578EF007AE24B = 2B823B2B0F2578EF007AE24B /* PBXTextBookmark */;
  79
+			2B823B2C0F2578EF007AE24B = 2B823B2C0F2578EF007AE24B /* PBXTextBookmark */;
  80
+			2B823B2D0F2578EF007AE24B = 2B823B2D0F2578EF007AE24B /* PBXTextBookmark */;
  81
+			2B823B2E0F2578EF007AE24B = 2B823B2E0F2578EF007AE24B /* PBXTextBookmark */;
  82
+			2B823B2F0F2578EF007AE24B = 2B823B2F0F2578EF007AE24B /* PBXTextBookmark */;
  83
+			2B823B300F2578EF007AE24B = 2B823B300F2578EF007AE24B /* PBXTextBookmark */;
  84
+			2B823B310F2578EF007AE24B = 2B823B310F2578EF007AE24B /* PBXTextBookmark */;
  85
+			2B823B320F2578EF007AE24B = 2B823B320F2578EF007AE24B /* PBXTextBookmark */;
  86
+			2B823B330F2578EF007AE24B = 2B823B330F2578EF007AE24B /* PBXTextBookmark */;
  87
+			2B823B340F2578EF007AE24B = 2B823B340F2578EF007AE24B /* PBXTextBookmark */;
  88
+			2B823B350F2578EF007AE24B = 2B823B350F2578EF007AE24B /* PBXTextBookmark */;
  89
+			2B823B360F2578EF007AE24B = 2B823B360F2578EF007AE24B /* PBXTextBookmark */;
  90
+			2B823B370F2578EF007AE24B = 2B823B370F2578EF007AE24B /* PBXTextBookmark */;
  91
+			2B823B380F2578EF007AE24B = 2B823B380F2578EF007AE24B /* PBXTextBookmark */;
  92
+			2B823B390F2578EF007AE24B = 2B823B390F2578EF007AE24B /* PBXTextBookmark */;
  93
+			2B823B3A0F2578EF007AE24B = 2B823B3A0F2578EF007AE24B /* PBXTextBookmark */;
  94
+			2B823B3B0F2578EF007AE24B = 2B823B3B0F2578EF007AE24B /* PBXTextBookmark */;
  95
+			2BAB79720F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79720F2AC8E000A1588A /* PBXTextBookmark */;
  96
+			2BAB79730F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79730F2AC8E000A1588A /* PBXTextBookmark */;
  97
+			2BAB79740F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79740F2AC8E000A1588A /* PBXTextBookmark */;
  98
+			2BAB79750F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79750F2AC8E000A1588A /* PBXTextBookmark */;
  99
+			2BAB79760F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79760F2AC8E000A1588A /* PBXTextBookmark */;
  100
+			2BAB79770F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79770F2AC8E000A1588A /* PBXTextBookmark */;
  101
+			2BAB79780F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79780F2AC8E000A1588A /* PBXTextBookmark */;
  102
+			2BAB79790F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79790F2AC8E000A1588A /* PBXTextBookmark */;
  103
+			2BAB797A0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797A0F2AC8E000A1588A /* PBXTextBookmark */;
  104
+			2BAB797B0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797B0F2AC8E000A1588A /* PBXTextBookmark */;
  105
+			2BAB797C0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797C0F2AC8E000A1588A /* PBXTextBookmark */;
  106
+			2BAB797D0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797D0F2AC8E000A1588A /* PBXTextBookmark */;
  107
+			2BAB797E0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797E0F2AC8E000A1588A /* PBXTextBookmark */;
  108
+			2BAB797F0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB797F0F2AC8E000A1588A /* PBXTextBookmark */;
  109
+			2BAB79800F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79800F2AC8E000A1588A /* PBXTextBookmark */;
  110
+			2BAB79810F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79810F2AC8E000A1588A /* PBXTextBookmark */;
  111
+			2BAB79820F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79820F2AC8E000A1588A /* PBXTextBookmark */;
  112
+			2BAB79830F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79830F2AC8E000A1588A /* PBXTextBookmark */;
  113
+			2BAB79840F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79840F2AC8E000A1588A /* PBXTextBookmark */;
  114
+			2BAB79850F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79850F2AC8E000A1588A /* PBXTextBookmark */;
  115
+			2BAB79860F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79860F2AC8E000A1588A /* PBXTextBookmark */;
  116
+			2BAB79870F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79870F2AC8E000A1588A /* PBXTextBookmark */;
  117
+			2BAB79880F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79880F2AC8E000A1588A /* PBXTextBookmark */;
  118
+			2BAB79890F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79890F2AC8E000A1588A /* PBXTextBookmark */;
  119
+			2BAB798A0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798A0F2AC8E000A1588A /* PBXTextBookmark */;
  120
+			2BAB798B0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798B0F2AC8E000A1588A /* PBXTextBookmark */;
  121
+			2BAB798C0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798C0F2AC8E000A1588A /* PBXTextBookmark */;
  122
+			2BAB798D0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798D0F2AC8E000A1588A /* PBXTextBookmark */;
  123
+			2BAB798E0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798E0F2AC8E000A1588A /* PBXTextBookmark */;
  124
+			2BAB798F0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB798F0F2AC8E000A1588A /* PBXTextBookmark */;
  125
+			2BAB79900F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79900F2AC8E000A1588A /* PBXTextBookmark */;
  126
+			2BAB79910F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79910F2AC8E000A1588A /* PBXTextBookmark */;
  127
+			2BAB79920F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79920F2AC8E000A1588A /* PBXTextBookmark */;
  128
+			2BAB79930F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79930F2AC8E000A1588A /* PBXTextBookmark */;
  129
+			2BAB79940F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79940F2AC8E000A1588A /* PBXTextBookmark */;
  130
+			2BAB79950F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79950F2AC8E000A1588A /* PBXTextBookmark */;
  131
+			2BAB79960F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79960F2AC8E000A1588A /* PBXTextBookmark */;
  132
+			2BAB79970F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79970F2AC8E000A1588A /* PBXTextBookmark */;
  133
+			2BAB79980F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79980F2AC8E000A1588A /* PBXTextBookmark */;
  134
+			2BAB79990F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79990F2AC8E000A1588A /* PBXTextBookmark */;
  135
+			2BAB799A0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799A0F2AC8E000A1588A /* PBXTextBookmark */;
  136
+			2BAB799B0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799B0F2AC8E000A1588A /* PBXTextBookmark */;
  137
+			2BAB799C0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799C0F2AC8E000A1588A /* PBXTextBookmark */;
  138
+			2BAB799D0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799D0F2AC8E000A1588A /* PBXTextBookmark */;
  139
+			2BAB799E0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799E0F2AC8E000A1588A /* PBXTextBookmark */;
  140
+			2BAB799F0F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB799F0F2AC8E000A1588A /* PBXTextBookmark */;
  141
+			2BAB79A00F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79A00F2AC8E000A1588A /* PBXTextBookmark */;
  142
+			2BAB79A10F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79A10F2AC8E000A1588A /* PBXTextBookmark */;
  143
+			2BAB79A20F2AC8E000A1588A /* PBXTextBookmark */ = 2BAB79A20F2AC8E000A1588A /* PBXTextBookmark */;
36 144
 		};
37 145
 		sourceControlManager = 2BC0D1EB0F19B3420011E45A /* Source Control */;
38 146
 		userBuildSettings = {
39  
-			SYMROOT = /Users/mattetti/Code/macruby/json/lib;
40 147
 		};
41 148
 	};
  149
+	2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */ = {
  150
+		uiCtxt = {
  151
+			sepNavIntBoundsRect = "{{0, 0}, {763, 267}}";
  152
+			sepNavSelRange = "{292, 0}";
  153
+			sepNavVisRange = "{0, 304}";
  154
+			sepNavWindowFrame = "{{78, 194}, {750, 558}}";
  155
+		};
  156
+	};
  157
+	2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */ = {
  158
+		uiCtxt = {
  159
+			sepNavIntBoundsRect = "{{0, 0}, {848, 810}}";
  160
+			sepNavSelRange = "{835, 0}";
  161
+			sepNavVisRange = "{255, 915}";
  162
+			sepNavWindowFrame = "{{55, 215}, {750, 558}}";
  163
+		};
  164
+	};
  165
+	2B823B060F2578EF007AE24B /* PBXTextBookmark */ = {
  166
+		isa = PBXTextBookmark;
  167
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  168
+		name = "NSMutableDictionary+BSJSONAdditions.m: 25";
  169
+		rLen = 37;
  170
+		rLoc = 937;
  171
+		rType = 0;
  172
+		vrLen = 883;
  173
+		vrLoc = 767;
  174
+	};
  175
+	2B823B070F2578EF007AE24B /* PBXTextBookmark */ = {
  176
+		isa = PBXTextBookmark;
  177
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  178
+		name = "NSMutableArray+BSJSONAdditions.m: 26";
  179
+		rLen = 0;
  180
+		rLoc = 1395;
  181
+		rType = 0;
  182
+		vrLen = 679;
  183
+		vrLoc = 206;
  184
+	};
  185
+	2B823B080F2578EF007AE24B /* PBXTextBookmark */ = {
  186
+		isa = PBXTextBookmark;
  187
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  188
+		name = "NSMutableArray+BSJSONAdditions.h: 10";
  189
+		rLen = 0;
  190
+		rLoc = 223;
  191
+		rType = 0;
  192
+		vrLen = 304;
  193
+		vrLoc = 0;
  194
+	};
  195
+	2B823B090F2578EF007AE24B /* PBXTextBookmark */ = {
  196
+		isa = PBXTextBookmark;
  197
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  198
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  199
+		rLen = 37;
  200
+		rLoc = 1122;
  201
+		rType = 0;
  202
+		vrLen = 1139;
  203
+		vrLoc = 451;
  204
+	};
  205
+	2B823B0A0F2578EF007AE24B /* PBXTextBookmark */ = {
  206
+		isa = PBXTextBookmark;
  207
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  208
+		name = "NSScanner+BSJSONAdditions.h: 29";
  209
+		rLen = 89;
  210
+		rLoc = 1009;
  211
+		rType = 0;
  212
+		vrLen = 1074;
  213
+		vrLoc = 891;
  214
+	};
  215
+	2B823B0B0F2578EF007AE24B /* PBXTextBookmark */ = {
  216
+		isa = PBXTextBookmark;
  217
+		fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
  218
+		name = "NSScanner+BSJSONAdditions.m: 36";
  219
+		rLen = 49;
  220
+		rLoc = 1430;
  221
+		rType = 0;
  222
+		vrLen = 1254;
  223
+		vrLoc = 703;
  224
+	};
  225
+	2B823B0C0F2578EF007AE24B /* PBXTextBookmark */ = {
  226
+		isa = PBXTextBookmark;
  227
+		fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
  228
+		name = "NSScanner+BSJSONAdditions.m: 1";
  229
+		rLen = 0;
  230
+		rLoc = 0;
  231
+		rType = 0;
  232
+		vrLen = 1560;
  233
+		vrLoc = 376;
  234
+	};
  235
+	2B823B0D0F2578EF007AE24B /* PBXTextBookmark */ = {
  236
+		isa = PBXTextBookmark;
  237
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  238
+		name = "NSMutableDictionary+BSJSONAdditions.m: 112";
  239
+		rLen = 610;
  240
+		rLoc = 4499;
  241
+		rType = 0;
  242
+		vrLen = 365;
  243
+		vrLoc = 4478;
  244
+	};
  245
+	2B823B0E0F2578EF007AE24B /* PBXTextBookmark */ = {
  246
+		isa = PBXTextBookmark;
  247
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  248
+		name = "NSScanner+BSJSONAdditions.h: 1";
  249
+		rLen = 0;
  250
+		rLoc = 0;
  251
+		rType = 0;
  252
+		vrLen = 1160;
  253
+		vrLoc = 703;
  254
+	};
  255
+	2B823B0F0F2578EF007AE24B /* PBXTextBookmark */ = {
  256
+		isa = PBXTextBookmark;
  257
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  258
+		name = "NSMutableDictionary+BSJSONAdditions.h: 34";
  259
+		rLen = 0;
  260
+		rLoc = 1165;
  261
+		rType = 0;
  262
+		vrLen = 1139;
  263
+		vrLoc = 451;
  264
+	};
  265
+	2B823B100F2578EF007AE24B /* PBXTextBookmark */ = {
  266
+		isa = PBXTextBookmark;
  267
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  268
+		name = "NSMutableArray+BSJSONAdditions.h: 8";
  269
+		rLen = 0;
  270
+		rLoc = 161;
  271
+		rType = 0;
  272
+		vrLen = 252;
  273
+		vrLoc = 0;
  274
+	};
  275
+	2B823B110F2578EF007AE24B /* PBXTextBookmark */ = {
  276
+		isa = PBXTextBookmark;
  277
+		fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
  278
+		name = "NSScanner+BSJSONAdditions.m: 1";
  279
+		rLen = 0;
  280
+		rLoc = 0;
  281
+		rType = 0;
  282
+		vrLen = 1364;
  283
+		vrLoc = 376;
  284
+	};
  285
+	2B823B120F2578EF007AE24B /* PBXTextBookmark */ = {
  286
+		isa = PBXTextBookmark;
  287
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  288
+		name = "NSMutableArray+BSJSONAdditions.h: 8";
  289
+		rLen = 0;
  290
+		rLoc = 161;
  291
+		rType = 0;
  292
+		vrLen = 252;
  293
+		vrLoc = 0;
  294
+	};
  295
+	2B823B130F2578EF007AE24B /* PBXTextBookmark */ = {
  296
+		isa = PBXTextBookmark;
  297
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  298
+		name = "NSMutableArray+BSJSONAdditions.m: 1";
  299
+		rLen = 0;
  300
+		rLoc = 0;
  301
+		rType = 0;
  302
+		vrLen = 257;
  303
+		vrLoc = 0;
  304
+	};
  305
+	2B823B140F2578EF007AE24B /* PBXTextBookmark */ = {
  306
+		isa = PBXTextBookmark;
  307
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  308
+		name = "NSMutableArray+BSJSONAdditions.h: 8";
  309
+		rLen = 0;
  310
+		rLoc = 161;
  311
+		rType = 0;
  312
+		vrLen = 252;
  313
+		vrLoc = 0;
  314
+	};
  315
+	2B823B150F2578EF007AE24B /* PBXTextBookmark */ = {
  316
+		isa = PBXTextBookmark;
  317
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  318
+		name = "NSMutableArray+BSJSONAdditions.m: 6";
  319
+		rLen = 0;
  320
+		rLoc = 135;
  321
+		rType = 0;
  322
+		vrLen = 816;
  323
+		vrLoc = 40;
  324
+	};
  325
+	2B823B160F2578EF007AE24B /* PBXTextBookmark */ = {
  326
+		isa = PBXTextBookmark;
  327
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  328
+		name = "NSScanner+BSJSONAdditions.h: 1";
  329
+		rLen = 0;
  330
+		rLoc = 0;
  331
+		rType = 0;
  332
+		vrLen = 1128;
  333
+		vrLoc = 703;
  334
+	};
  335
+	2B823B170F2578EF007AE24B /* PBXTextBookmark */ = {
  336
+		isa = PBXTextBookmark;
  337
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  338
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  339
+		rLen = 37;
  340
+		rLoc = 1122;
  341
+		rType = 0;
  342
+		vrLen = 1139;
  343
+		vrLoc = 451;
  344
+	};
  345
+	2B823B180F2578EF007AE24B /* PBXTextBookmark */ = {
  346
+		isa = PBXTextBookmark;
  347
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  348
+		name = "NSMutableArray+BSJSONAdditions.m: 14";
  349
+		rLen = 6;
  350
+		rLoc = 895;
  351
+		rType = 0;
  352
+		vrLen = 853;
  353
+		vrLoc = 3;
  354
+	};
  355
+	2B823B190F2578EF007AE24B /* PBXTextBookmark */ = {
  356
+		isa = PBXTextBookmark;
  357
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  358
+		name = "NSMutableDictionary+BSJSONAdditions.m: 112";
  359
+		rLen = 610;
  360
+		rLoc = 4499;
  361
+		rType = 0;
  362
+		vrLen = 1131;
  363
+		vrLoc = 4173;
  364
+	};
  365
+	2B823B1A0F2578EF007AE24B /* PBXTextBookmark */ = {
  366
+		isa = PBXTextBookmark;
  367
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  368
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  369
+		rLen = 37;
  370
+		rLoc = 1122;
  371
+		rType = 0;
  372
+		vrLen = 1139;
  373
+		vrLoc = 451;
  374
+	};
  375
+	2B823B1B0F2578EF007AE24B /* PBXTextBookmark */ = {
  376
+		isa = PBXTextBookmark;
  377
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  378
+		name = "NSMutableDictionary+BSJSONAdditions.m: 43";
  379
+		rLen = 0;
  380
+		rLoc = 1482;
  381
+		rType = 0;
  382
+		vrLen = 980;
  383
+		vrLoc = 4481;
  384
+	};
  385
+	2B823B1C0F2578EF007AE24B /* PBXTextBookmark */ = {
  386
+		isa = PBXTextBookmark;
  387
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  388
+		name = "NSMutableArray+BSJSONAdditions.h: 8";
  389
+		rLen = 0;
  390
+		rLoc = 161;
  391
+		rType = 0;
  392
+		vrLen = 267;
  393
+		vrLoc = 0;
  394
+	};
  395
+	2B823B1D0F2578EF007AE24B /* PBXTextBookmark */ = {
  396
+		isa = PBXTextBookmark;
  397
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  398
+		name = "NSMutableDictionary+BSJSONAdditions.m: 43";
  399
+		rLen = 0;
  400
+		rLoc = 1482;
  401
+		rType = 0;
  402
+		vrLen = 1003;
  403
+		vrLoc = 4390;
  404
+	};
  405
+	2B823B1E0F2578EF007AE24B /* PBXTextBookmark */ = {
  406
+		isa = PBXTextBookmark;
  407
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  408
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  409
+		rLen = 37;
  410
+		rLoc = 1122;
  411
+		rType = 0;
  412
+		vrLen = 1139;
  413
+		vrLoc = 451;
  414
+	};
  415
+	2B823B1F0F2578EF007AE24B /* PBXTextBookmark */ = {
  416
+		isa = PBXTextBookmark;
  417
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  418
+		name = "NSMutableArray+BSJSONAdditions.h: 8";
  419
+		rLen = 0;
  420
+		rLoc = 161;
  421
+		rType = 0;
  422
+		vrLen = 267;
  423
+		vrLoc = 0;
  424
+	};
  425
+	2B823B200F2578EF007AE24B /* PBXTextBookmark */ = {
  426
+		isa = PBXTextBookmark;
  427
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  428
+		name = "NSMutableArray+BSJSONAdditions.m: 23";
  429
+		rLen = 0;
  430
+		rLoc = 1217;
  431
+		rType = 0;
  432
+		vrLen = 594;
  433
+		vrLoc = 205;
  434
+	};
  435
+	2B823B210F2578EF007AE24B /* PBXTextBookmark */ = {
  436
+		isa = PBXTextBookmark;
  437
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  438
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  439
+		rLen = 37;
  440
+		rLoc = 1122;
  441
+		rType = 0;
  442
+		vrLen = 1139;
  443
+		vrLoc = 451;
  444
+	};
  445
+	2B823B220F2578EF007AE24B /* PBXTextBookmark */ = {
  446
+		isa = PBXTextBookmark;
  447
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  448
+		name = "NSMutableDictionary+BSJSONAdditions.m: 123";
  449
+		rLen = 24;
  450
+		rLoc = 4922;
  451
+		rType = 0;
  452
+		vrLen = 1637;
  453
+		vrLoc = 2647;
  454
+	};
  455
+	2B823B230F2578EF007AE24B /* PBXTextBookmark */ = {
  456
+		isa = PBXTextBookmark;
  457
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  458
+		name = "NSMutableArray+BSJSONAdditions.m: 26";
  459
+		rLen = 24;
  460
+		rLoc = 1301;
  461
+		rType = 0;
  462
+		vrLen = 541;
  463
+		vrLoc = 292;
  464
+	};
  465
+	2B823B240F2578EF007AE24B /* PBXTextBookmark */ = {
  466
+		isa = PBXTextBookmark;
  467
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  468
+		name = "NSMutableDictionary+BSJSONAdditions.m: 123";
  469
+		rLen = 24;
  470
+		rLoc = 4922;
  471
+		rType = 0;
  472
+		vrLen = 947;
  473
+		vrLoc = 703;
  474
+	};
  475
+	2B823B250F2578EF007AE24B /* PBXTextBookmark */ = {
  476
+		isa = PBXTextBookmark;
  477
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  478
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  479
+		rLen = 37;
  480
+		rLoc = 1122;
  481
+		rType = 0;
  482
+		vrLen = 1139;
  483
+		vrLoc = 451;
  484
+	};
  485
+	2B823B260F2578EF007AE24B /* PBXTextBookmark */ = {
  486
+		isa = PBXTextBookmark;
  487
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  488
+		name = "NSScanner+BSJSONAdditions.h: 1";
  489
+		rLen = 0;
  490
+		rLoc = 0;
  491
+		rType = 0;
  492
+		vrLen = 1019;
  493
+		vrLoc = 1055;
  494
+	};
  495
+	2B823B270F2578EF007AE24B /* PBXTextBookmark */ = {
  496
+		isa = PBXTextBookmark;
  497
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  498
+		name = "NSMutableArray+BSJSONAdditions.h: 8";
  499
+		rLen = 0;
  500
+		rLoc = 161;
  501
+		rType = 0;
  502
+		vrLen = 267;
  503
+		vrLoc = 0;
  504
+	};
  505
+	2B823B280F2578EF007AE24B /* PBXTextBookmark */ = {
  506
+		isa = PBXTextBookmark;
  507
+		fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
  508
+		name = "NSScanner+BSJSONAdditions.m: 1";
  509
+		rLen = 0;
  510
+		rLoc = 0;
  511
+		rType = 0;
  512
+		vrLen = 1256;
  513
+		vrLoc = 703;
  514
+	};
  515
+	2B823B290F2578EF007AE24B /* PBXTextBookmark */ = {
  516
+		isa = PBXTextBookmark;
  517
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  518
+		name = "NSScanner+BSJSONAdditions.h: 1";
  519
+		rLen = 0;
  520
+		rLoc = 0;
  521
+		rType = 0;
  522
+		vrLen = 1043;
  523
+		vrLoc = 888;
  524
+	};
  525
+	2B823B2A0F2578EF007AE24B /* PBXTextBookmark */ = {
  526
+		isa = PBXTextBookmark;
  527
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  528
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  529
+		rLen = 37;
  530
+		rLoc = 1122;
  531
+		rType = 0;
  532
+		vrLen = 1139;
  533
+		vrLoc = 451;
  534
+	};
  535
+	2B823B2B0F2578EF007AE24B /* PBXTextBookmark */ = {
  536
+		isa = PBXTextBookmark;
  537
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  538
+		name = "NSScanner+BSJSONAdditions.h: 32";
  539
+		rLen = 49;
  540
+		rLoc = 1152;
  541
+		rType = 0;
  542
+		vrLen = 1096;
  543
+		vrLoc = 700;
  544
+	};
  545
+	2B823B2C0F2578EF007AE24B /* PBXTextBookmark */ = {
  546
+		isa = PBXTextBookmark;
  547
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  548
+		name = "NSMutableArray+BSJSONAdditions.h: 11";
  549
+		rLen = 0;
  550
+		rLoc = 223;
  551
+		rType = 0;
  552
+		vrLen = 304;
  553
+		vrLoc = 0;
  554
+	};
  555
+	2B823B2D0F2578EF007AE24B /* PBXTextBookmark */ = {
  556
+		isa = PBXTextBookmark;
  557
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  558
+		name = "NSScanner+BSJSONAdditions.h: 29";
  559
+		rLen = 89;
  560
+		rLoc = 1009;
  561
+		rType = 0;
  562
+		vrLen = 1096;
  563
+		vrLoc = 700;
  564
+	};
  565
+	2B823B2E0F2578EF007AE24B /* PBXTextBookmark */ = {
  566
+		isa = PBXTextBookmark;
  567
+		fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
  568
+		name = "NSScanner+BSJSONAdditions.m: 1";
  569
+		rLen = 0;
  570
+		rLoc = 0;
  571
+		rType = 0;
  572
+		vrLen = 1254;
  573
+		vrLoc = 703;
  574
+	};
  575
+	2B823B2F0F2578EF007AE24B /* PBXTextBookmark */ = {
  576
+		isa = PBXTextBookmark;
  577
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  578
+		name = "NSMutableArray+BSJSONAdditions.h: 13";
  579
+		rLen = 0;
  580
+		rLoc = 223;
  581
+		rType = 0;
  582
+		vrLen = 304;
  583
+		vrLoc = 0;
  584
+	};
  585
+	2B823B300F2578EF007AE24B /* PBXTextBookmark */ = {
  586
+		isa = PBXTextBookmark;
  587
+		fRef = 2BC0D1F10F19B3E20011E45A /* NSScanner+BSJSONAdditions.h */;
  588
+		name = "NSScanner+BSJSONAdditions.h: 29";
  589
+		rLen = 89;
  590
+		rLoc = 1009;
  591
+		rType = 0;
  592
+		vrLen = 1066;
  593
+		vrLoc = 832;
  594
+	};
  595
+	2B823B310F2578EF007AE24B /* PBXTextBookmark */ = {
  596
+		isa = PBXTextBookmark;
  597
+		fRef = 2BC0D1F20F19B3E20011E45A /* NSScanner+BSJSONAdditions.m */;
  598
+		name = "NSScanner+BSJSONAdditions.m: 36";
  599
+		rLen = 49;
  600
+		rLoc = 1430;
  601
+		rType = 0;
  602
+		vrLen = 1254;
  603
+		vrLoc = 703;
  604
+	};
  605
+	2B823B320F2578EF007AE24B /* PBXTextBookmark */ = {
  606
+		isa = PBXTextBookmark;
  607
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  608
+		name = "NSMutableArray+BSJSONAdditions.m: 10";
  609
+		rLen = 0;
  610
+		rLoc = 204;
  611
+		rType = 0;
  612
+		vrLen = 660;
  613
+		vrLoc = 0;
  614
+	};
  615
+	2B823B330F2578EF007AE24B /* PBXTextBookmark */ = {
  616
+		isa = PBXTextBookmark;
  617
+		fRef = 2BC0D1F00F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.m */;
  618
+		name = "NSMutableDictionary+BSJSONAdditions.m: 25";
  619
+		rLen = 37;
  620
+		rLoc = 937;
  621
+		rType = 0;
  622
+		vrLen = 883;
  623
+		vrLoc = 767;
  624
+	};
  625
+	2B823B340F2578EF007AE24B /* PBXTextBookmark */ = {
  626
+		isa = PBXTextBookmark;
  627
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  628
+		name = "NSMutableArray+BSJSONAdditions.m: 9";
  629
+		rLen = 0;
  630
+		rLoc = 204;
  631
+		rType = 0;
  632
+		vrLen = 608;
  633
+		vrLoc = 0;
  634
+	};
  635
+	2B823B350F2578EF007AE24B /* PBXTextBookmark */ = {
  636
+		isa = PBXTextBookmark;
  637
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  638
+		name = "NSMutableArray+BSJSONAdditions.h: 10";
  639
+		rLen = 0;
  640
+		rLoc = 223;
  641
+		rType = 0;
  642
+		vrLen = 304;
  643
+		vrLoc = 0;
  644
+	};
  645
+	2B823B360F2578EF007AE24B /* PBXTextBookmark */ = {
  646
+		isa = PBXTextBookmark;
  647
+		fRef = 2B823AE80F23471B007AE24B /* NSMutableArray+BSJSONAdditions.m */;
  648
+		name = "NSMutableArray+BSJSONAdditions.m: 26";
  649
+		rLen = 0;
  650
+		rLoc = 1395;
  651
+		rType = 0;
  652
+		vrLen = 679;
  653
+		vrLoc = 206;
  654
+	};
  655
+	2B823B370F2578EF007AE24B /* PBXTextBookmark */ = {
  656
+		isa = PBXTextBookmark;
  657
+		fRef = 2B823AE70F23471B007AE24B /* NSMutableArray+BSJSONAdditions.h */;
  658
+		name = "NSMutableArray+BSJSONAdditions.h: 10";
  659
+		rLen = 0;
  660
+		rLoc = 223;
  661
+		rType = 0;
  662
+		vrLen = 304;
  663
+		vrLoc = 0;
  664
+	};
  665
+	2B823B380F2578EF007AE24B /* PBXTextBookmark */ = {
  666
+		isa = PBXTextBookmark;
  667
+		fRef = 2BC0D1EF0F19B3E20011E45A /* NSMutableDictionary+BSJSONAdditions.h */;
  668
+		name = "NSMutableDictionary+BSJSONAdditions.h: 32";
  669
+		rLen = 37;
  670
+		rLoc = 1122;
  671
+		rType = 0;
  672
+		vrLen = 1139;
  673
+		vrLoc = 451;
  674
+	};
  675
+	2B823B390F2578EF007AE24B /* PBXTextBookmark */ = {