From b752f5bc02243d4956703835733276e4389a174b Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Sat, 14 Jun 2008 02:24:55 +0200 Subject: [PATCH] Add a search field and subject --- English.lproj/MainMenu.nib/classes.nib | 45 - English.lproj/MainMenu.nib/designable.nib | 3744 +++++++++++++++++++ English.lproj/MainMenu.nib/info.nib | 20 - English.lproj/MainMenu.nib/keyedobjects.nib | Bin 25271 -> 32206 bytes GitTest.xcodeproj/pieter.pbxuser | 3055 +++++++++------ GitTest.xcodeproj/pieter.perspectivev3 | 235 +- GitTest.xcodeproj/project.pbxproj | 12 + GitTest_AppDelegate.m | 1 - NSFileHandleExt.h | 20 + NSFileHandleExt.m | 62 + PBGitCommit.h | 25 + PBGitCommit.m | 29 + PBGitRepository.h | 1 - PBGitRepository.m | 34 +- 14 files changed, 5934 insertions(+), 1349 deletions(-) delete mode 100644 English.lproj/MainMenu.nib/classes.nib create mode 100644 English.lproj/MainMenu.nib/designable.nib delete mode 100644 English.lproj/MainMenu.nib/info.nib create mode 100644 NSFileHandleExt.h create mode 100644 NSFileHandleExt.m create mode 100644 PBGitCommit.h create mode 100644 PBGitCommit.m diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib deleted file mode 100644 index 2b260bb..0000000 --- a/English.lproj/MainMenu.nib/classes.nib +++ /dev/null @@ -1,45 +0,0 @@ - - - - - IBClasses - - - CLASS - PBGitRepository - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - ACTIONS - - clickButton - id - getData - id - saveAction - id - - CLASS - GitTest_AppDelegate - LANGUAGE - ObjC - OUTLETS - - listOfCommits - NSArray - repository - PBGitRepository - window - NSWindow - - SUPERCLASS - NSObject - - - IBVersion - 1 - - diff --git a/English.lproj/MainMenu.nib/designable.nib b/English.lproj/MainMenu.nib/designable.nib new file mode 100644 index 0000000..39547e0 --- /dev/null +++ b/English.lproj/MainMenu.nib/designable.nib @@ -0,0 +1,3744 @@ + + + + 1050 + 9D34 + 629 + 949.33 + 352.00 + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + + NSApplication + + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{6, 489}, {862, 464}} + 1886912512 + GitX + NSWindow + + View + + + + 256 + + YES + + + 274 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 256 + {845, 224} + + + YES + + + 256 + {845, 17} + + + + + + + 256 + {{846, 0}, {16, 17}} + + + + + YES + + 3.230000e+02 + 4.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + LucidaGrande + 1.100000e+01 + 3100 + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337772096 + 2048 + Text Cell + + + 1.300000e+01 + 1044 + + + + 6 + + controlBackgroundColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + + controlTextColor + + + + 3 + YES + YES + + + + 5.160000e+02 + 4.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + + + + + 337772096 + 2048 + + + + + + + 3 + YES + YES + + + + 3.000000e+00 + 2.000000e+00 + + 3 + MQA + + + 6 + + gridColor + + 3 + MC41AA + + + 1.700000e+01 + -700448768 + 4 + 15 + 0 + YES + + + {{1, 17}, {845, 224}} + + + + + 4 + + + + 256 + {{846, 17}, {15, 224}} + + + + _doScroller: + 3.700000e+01 + 1.947368e-01 + + + + 256 + {{1, 241}, {845, 15}} + + + 1 + + + 9.214092e-01 + + + + 2304 + + YES + + + {{1, 0}, {845, 17}} + + + + + 4 + + + + {862, 257} + + + 50 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 256 + + YES + + + 2304 + + YES + + + 2322 + {845, 129} + + + + + + + Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum Et harumd und lookum like Greek to me, dereud facilis est er expedit distinct. Nam liber te conscient to factor tum poen legum odioque civiuda + + + YES + + YES + NSFont + NSParagraphStyle + + + YES + + Monaco + 1.000000e+01 + 16 + + + 3 + + YES + + 0.000000e+00 + + + 5.600000e+01 + + + 1.120000e+02 + + + 1.680000e+02 + + + 2.240000e+02 + + + 2.800000e+02 + + + 3.360000e+02 + + + 3.920000e+02 + + + 4.480000e+02 + + + 5.040000e+02 + + + 5.600000e+02 + + + 6.160000e+02 + + + 6.720000e+02 + + + 7.280000e+02 + + + 7.840000e+02 + + + 8.400000e+02 + + + 8.960000e+02 + + + 9.520000e+02 + + + 1.008000e+03 + + + 1.064000e+03 + + + 1.120000e+03 + + + 1.176000e+03 + + + 1.232000e+03 + + + 1.288000e+03 + + + 1.344000e+03 + + + 1.400000e+03 + + + 1.456000e+03 + + + 1.512000e+03 + + + 1.568000e+03 + + + 1.624000e+03 + + + 1.680000e+03 + + + 1.736000e+03 + + + + + + + + + YES + + + 6 + + + + 8.450000e+02 + 1 + + + 2369 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + + selectedTextBackgroundColor + + + + 6 + + selectedTextColor + + + + + + + YES + + YES + + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 6 + {845, 1e+07} + {223, 128} + + + + {{1, 1}, {845, 146}} + + + + + + + {4, -5} + 1 + + 4 + + + + 256 + {{846, 1}, {15, 146}} + + + + + 8.108108e-01 + + + + 256 + {{-100, -100}, {87, 18}} + + + 1 + + + 1.000000e+00 + 9.456522e-01 + + + {{0, 266}, {862, 148}} + + + + 18 + + + + + + {{0, 20}, {862, 414}} + + + + + + 292 + {{3, 1}, {305, 17}} + + + YES + + 67239488 + 272630784 + Label + + + + 6 + + controlColor + + + + + + + + 268 + {{3, 437}, {159, 17}} + + + YES + + 67239488 + 272630784 + U2hvd2luZyBicmFuY2ggJ21hc3Rlcic + + + + + + + + + 268 + {{659, 437}, {183, 22}} + + + YES + + 343014976 + 268436480 + + Subject + + YES + 1 + + 6 + + textBackgroundColor + + + + + 130560 + 0 + search + _searchFieldSearch: + + + 138690815 + 0 + + 400 + 75 + + + 130560 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + _searchFieldCancel: + + + 138690815 + 0 + + 400 + 75 + + 255 + + + + {862, 464} + + + + {{0, 0}, {1680, 1028}} + {213, 129} + {3.40282e+38, 3.40282e+38} + + + MainMenu + + YES + + + GitTest + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + + NSMenuMixedState + + submenuAction: + + + + YES + + + About GitTest + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + UHJlZmVyZW5jZXPigKY + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + Services + + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide GitTest + h + 1048576 + 2147483647 + + + + + + Hide Others + + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit GitTest + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + File + + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open... + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + + Open Recent + + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + U2F2ZSBBc+KApg + S + 1048576 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + UGFnZSBTZXR1cOKApg + P + 1048576 + 2147483647 + + + + + + UHJpbnTigKY + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + Find + + + YES + + + RmluZOKApg + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + U2hvdyBTcGVsbGluZ+KApg + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + Smart Copy/Paste + + 1048576 + 2147483647 + + + + + + Smart Quotes + + 1048576 + 2147483647 + + + + + + Smart Links + + 1048576 + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + Start Speaking + + 2147483647 + + + + + + Stop Speaking + + 2147483647 + + + + + + + + + + + + Format + + 1048576 + 2147483647 + + + submenuAction: + + + Format + + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + Show Toolbar + + 1572864 + 2147483647 + + + + + + Q3VzdG9taXplIFRvb2xiYXLigKY + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + Window + + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + + + YES + + + GitTest Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + GitTest_AppDelegate + + + + YES + arr + self + sha + details + subject + @count + self.@count + + YES + + YES + YES + YES + YES + YES + + + + + YES + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + showHelp: + + + + 122 + + + + clearRecentDocuments: + + + + 127 + + + + terminate: + + + + 139 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + hideOtherApplications: + + + + 146 + + + + hide: + + + + 152 + + + + unhideAllApplications: + + + + 153 + + + + cut: + + + + 175 + + + + paste: + + + + 176 + + + + redo: + + + + 178 + + + + selectAll: + + + + 179 + + + + undo: + + + + 180 + + + + copy: + + + + 181 + + + + showGuessPanel: + + + + 188 + + + + checkSpelling: + + + + 190 + + + + toggleContinuousSpellChecking: + + + + 192 + + + + performClose: + + + + 193 + + + + delete: + + + + 195 + + + + performFindPanelAction: + + + + 199 + + + + + + + + 200 + + + + + + + + 201 + + + + + + + + 202 + + + + centerSelectionInVisibleArea: + + + + 203 + + + + delegate + + + + 206 + + + + + + + + 207 + + + + window + + + + 208 + + + + saveAction: + + + + 211 + + + + performMiniaturize: + + + + 247 + + + + performZoom: + + + + 248 + + + + arrangeInFront: + + + + 249 + + + + startSpeaking: + + + + 257 + + + + stopSpeaking: + + + + 258 + + + + toggleToolbarShown: + + + + 342 + + + + runToolbarCustomizationPalette: + + + + 343 + + + + orderFrontColorPanel: + + + + 345 + + + + content + + + + 396 + + + + contentArray: repository.commits + + + + + + + contentArray + repository.commits + 2 + + + 399 + + + + value: arrangedObjects.sha + + + + + + + value + arrangedObjects.sha + 2 + + + 462 + + + + value: selection.details + + + + + + + value + selection.details + + YES + + YES + NSAllowsEditingMultipleValuesSelection + NSAlwaysPresentsApplicationModalAlerts + NSConditionallySetsEditable + NSConditionallySetsHidden + NSContinuouslyUpdatesValue + NSMultipleValuesPlaceholder + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + NSRaisesForNotApplicableKeys + NSValidatesImmediately + + + YES + + + + + + + + + + + + + + 2 + + + 496 + + + + value: arrangedObjects.subject + + + + + + + + arrangedObjects.subject + 2 + + + 498 + + + + displayPatternValue1: arrangedObjects.@count + + + + + + + displayPatternValue1 + arrangedObjects.@count + + YES + + YES + NSDisplayPattern + + + + + + + + YES + %{value1}@ commits loaded + + + + + + + + 2 + + + 509 + + + + predicate: filterPredicate + + + + + + + predicate + filterPredicate + + YES + + YES + + NSDisplayName + NSPredicateFormat + + + + + YES + + + subject contains $value + + + + + 2 + + + 523 + + + + predicate2: filterPredicate + + + + + + + predicate2 + + + YES + + YES + + + + + + + + YES + + SHA1 + sha contains $value + + + + + + 2 + + + 524 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 21 + + + YES + + + + + + + 2 + + + YES + + + + + + + + + 436 + + + YES + + + + + + + 448 + + + YES + + + + + + + + + 452 + + + YES + + + + + + + 453 + + + YES + + + + + + 456 + + + + + 454 + + + YES + + + + + + 455 + + + + + 29 + + + YES + + + + + + + + + + + + + 56 + + + YES + + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + YES + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 196 + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 72 + + + + + 73 + + + + + 74 + + + + + 75 + + + + + 77 + + + + + 78 + + + + + 79 + + + + + 80 + + + + + 82 + + + + + 112 + + + + + 124 + + + YES + + + + + + 125 + + + YES + + + + + + 126 + + + + + 103 + + + YES + + + + + + 106 + + + YES + + + + + + 111 + + + + + 163 + + + YES + + + + + + 169 + + + YES + + + + + + + + + + + + + + + + + + 156 + + + + + 157 + + + + + 158 + + + + + 160 + + + + + 164 + + + + + 168 + + + YES + + + + + + 159 + + + YES + + + + + + + + + + 154 + + + + + 155 + + + + + 161 + + + + + 162 + + + + + 167 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 174 + + + + + 184 + + + YES + + + + + + 185 + + + YES + + + + + + + + + 187 + + + + + 189 + + + + + 191 + + + + + 212 + + + + + 214 + + + YES + + + + + + 215 + + + YES + + + + + + + + 216 + + + + + 218 + + + + + 219 + + + + + 224 + + + YES + + + + + + 225 + + + YES + + + + + + + 227 + + + + + 228 + + + + + 241 + + + YES + + + + + + 242 + + + YES + + + + + + + + + 243 + + + + + 244 + + + + + 245 + + + + + 246 + + + + + 262 + + + YES + + + + + + 263 + + + YES + + + + + + + 336 + + + + + 337 + + + + + 338 + + + YES + + + + + + 339 + + + YES + + + + + + + 340 + + + + + 341 + + + + + 205 + + + + + + 395 + + + CommitsController + + + 469 + + + + + 470 + + + + + 471 + + + + + 486 + + + YES + + + + + + + + 487 + + + + + 488 + + + + + 489 + + + + + 499 + + + YES + + + + + + 500 + + + + + 510 + + + YES + + + + + + 511 + + + + + 520 + + + YES + + + + + + 521 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + -3.ImportedFromIB2 + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 154.IBPluginDependency + 154.ImportedFromIB2 + 155.IBPluginDependency + 155.ImportedFromIB2 + 156.IBPluginDependency + 156.ImportedFromIB2 + 157.IBPluginDependency + 157.ImportedFromIB2 + 158.IBPluginDependency + 158.ImportedFromIB2 + 159.IBPluginDependency + 159.ImportedFromIB2 + 160.IBPluginDependency + 160.ImportedFromIB2 + 161.IBPluginDependency + 161.ImportedFromIB2 + 162.IBPluginDependency + 162.ImportedFromIB2 + 163.IBPluginDependency + 163.ImportedFromIB2 + 164.IBPluginDependency + 164.ImportedFromIB2 + 167.IBPluginDependency + 167.ImportedFromIB2 + 168.IBPluginDependency + 168.ImportedFromIB2 + 169.IBPluginDependency + 169.ImportedFromIB2 + 171.IBPluginDependency + 171.ImportedFromIB2 + 172.IBPluginDependency + 172.ImportedFromIB2 + 173.IBPluginDependency + 173.ImportedFromIB2 + 174.IBPluginDependency + 174.ImportedFromIB2 + 184.IBPluginDependency + 184.ImportedFromIB2 + 185.IBPluginDependency + 185.ImportedFromIB2 + 187.IBPluginDependency + 187.ImportedFromIB2 + 189.IBPluginDependency + 189.ImportedFromIB2 + 191.IBPluginDependency + 191.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 2.IBPluginDependency + 2.ImportedFromIB2 + 205.IBPluginDependency + 205.ImportedFromIB2 + 21.IBPluginDependency + 21.IBWindowTemplateEditedContentRect + 21.ImportedFromIB2 + 21.NSWindowTemplate.visibleAtLaunch + 21.editorWindowContentRectSynchronizationRect + 21.windowTemplate.hasMaxSize + 21.windowTemplate.hasMinSize + 21.windowTemplate.maxSize + 21.windowTemplate.minSize + 212.IBPluginDependency + 212.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 224.IBPluginDependency + 224.ImportedFromIB2 + 225.IBPluginDependency + 225.ImportedFromIB2 + 227.IBPluginDependency + 227.ImportedFromIB2 + 228.IBPluginDependency + 228.ImportedFromIB2 + 241.IBPluginDependency + 241.ImportedFromIB2 + 242.IBPluginDependency + 242.ImportedFromIB2 + 243.IBPluginDependency + 243.ImportedFromIB2 + 244.IBPluginDependency + 244.ImportedFromIB2 + 245.IBPluginDependency + 245.ImportedFromIB2 + 246.IBPluginDependency + 246.ImportedFromIB2 + 262.IBPluginDependency + 262.ImportedFromIB2 + 263.IBPluginDependency + 263.ImportedFromIB2 + 29.IBPluginDependency + 29.ImportedFromIB2 + 336.IBPluginDependency + 336.ImportedFromIB2 + 337.IBPluginDependency + 337.ImportedFromIB2 + 338.IBPluginDependency + 338.ImportedFromIB2 + 339.IBPluginDependency + 339.ImportedFromIB2 + 340.IBPluginDependency + 340.ImportedFromIB2 + 341.IBPluginDependency + 341.ImportedFromIB2 + 395.IBPluginDependency + 395.ImportedFromIB2 + 436.IBPluginDependency + 436.ImportedFromIB2 + 448.IBPluginDependency + 448.ImportedFromIB2 + 452.IBPluginDependency + 452.ImportedFromIB2 + 453.IBPluginDependency + 453.ImportedFromIB2 + 454.IBPluginDependency + 454.ImportedFromIB2 + 455.IBPluginDependency + 455.ImportedFromIB2 + 456.IBPluginDependency + 456.ImportedFromIB2 + 469.IBShouldRemoveOnLegacySave + 470.IBShouldRemoveOnLegacySave + 471.IBShouldRemoveOnLegacySave + 486.IBPluginDependency + 487.IBPluginDependency + 488.IBPluginDependency + 489.IBPluginDependency + 499.IBPluginDependency + 500.IBPluginDependency + 510.IBPluginDependency + 511.IBPluginDependency + 520.IBPluginDependency + 521.IBPluginDependency + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBPluginDependency + 57.ImportedFromIB2 + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{447, 205}, {862, 464}} + + + {{447, 205}, {862, 464}} + + + {3.40282e+38, 3.40282e+38} + {213, 107} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 524 + + + + YES + + PBGitRepository + NSObject + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + IBProjectSource + PBGitRepository.h + + + + PBGitRepository + + + YES + + YES + + + YES + + + + YES + + YES + + + YES + + + + IBUserSource + + + + + GitTest_AppDelegate + + + getData: + id + + + listOfCommits + NSArray + + + + + + + + GitTest_AppDelegate + + + YES + + YES + clickButton: + saveAction: + + + YES + id + + + + + YES + + YES + repository + + + + YES + PBGitRepository + + + + + + GitTest_AppDelegate.h + + + + + 0 + ../../GitTest.xcodeproj + 3 + + YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA +AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEDNQALAAwAMQA1ADkAQABD +AEQASQBhAGIAYwBkAGcACwB0AHsAhACJAJ4ApgC0ALgA1wDYAOAA6QDqAO8A9QD2APkA/gERAR0BHgEm +AScBKgEvATIBOgE7ATwBPwFFAU8BUAFVAVoBWwFeAWMBZAFmAWkBcQF3AX4BggGFAYoBiwGOAZEBkgGV +AaMBpAGlAagBsgGzAbcBuAG5AbwByQHPAdsB3wHwAfEB+QIBAgcCCgITASkCFAIZAjwCQAJDAkYCSQJM +Ak8CUgJVAlgCWwJeAmECZAJnAmoCbQJwAnMCdgJ5AnwCfwKCAoUCiAKLAo4CkQKUApcCmgKdAqACogKk +AqkCqgKtArECtQK3ArkCyAC8ATEC0ALVAtYC2wLcAuQC5QGtAukC7ALtAu4C8QLyAvcC+AL6AwMDBAMO +Aw8DEAMRAxQDHQMeAycDKAMtAy4DMQM6AzsDQgNDA0sDTANfA2ADZQNmA3YDdwN4A3sDhAOFA4kDkQOS +A5MDlAOXA5gDmwOeAAsDnwOhA6IDowOkA6cDqwPbA+ED8wP4A/kD+gP/BAAEAQQEBAgECQQMBA0EEQQV +BBwEIAQhBCIEIwQnBC4EMwQ0BDUEOQRABEQERQRGBEoEUQRVBFYEVwRYBF4EYQRiBGMEZgRqBHEEdQR2 +BHcEewSCBIMEhASFBIoEkQSWBJcEmASZBJ0EpASlBKYEqgSxBLIEswS0BLgEvwTDBMQExQTGBMoE0QTV +BNYE1wTYBN0E5ATlBOYE5wTsBPME9AT1BPYE+gUBBQYFBwUIBQwFEwUUBRUFGQUgBSEFIgUjBScFLgUv +BTAFMQU2BT0FPgU/BUMFSgVLBUwFTQVSBVkFWgVbBV8FZgVnBWgFaQVtBXQFdQV2BXcFfAWABYcFiAWJ +BY4FjwWTBZoFmwWcBZ0FoQWoBakFqgWvBbcFuAW5Bb0FxAXFBcYFxwXLBdIF0wXUBdgF3wXgBeEF5QXs +Be0F7gXvBfMF+gX+Bf8GAAYBBgUGDAYNBg4GEgYZBhoGGwYcBiEGMwY9Bj4GPwZABkEGQgZDBkQGRgZI +Bk0GTgZYBlkGWgZbBl4GZQZmBmcGaAZxBmYGcgZzBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwDMBpkBHQaa +BqEGogajBqsGrAatBq4Gvga/BsAGyAbJBsoGywbZBtoG2wbcBuYG5wboBvYG9wb4B2QHbgdzB3QHdQd3 +B4UHjAeNB44HlQeWB5cHoAd0B6EHowenB6gHqge1B7wHvQe+B8UHxgfPB9AH2gfjB3QH5AfyB/sIAggD +CAQIDQgWB3QIFwgcCB4IIQgiCCsINAg1CD4HdAg/CEEIUQhaCGMIbAd0CG0Ibwh3CIAHdAiBCIgIjwiQ +CJkHdAiaCJ4IpAirCKwIswi0CLsIvAjFB3QIxgjLCNQHdAjVCNcI3AjjCOQAZgd0CO0I8gj7B3QI/Aj+ +CQUJDgkPCRgHdAkZCR0JHgA4CSEJjQn6CmcKaAppCmoKawpsCm0KbgpvCnAKcQpyCnMKdAp1CnYKdwp4 +CnkKegp7CnwKfQp+Cn8KgAqBCoIKgwqECoUKhgqHCogKiQqKCosKjAqNCo4KjwqQCpEKkgqTCpQKlQqW +CpcKmAqZCpoKmwqcCp0KngqfCqAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KsAqxCrIKswq0 +CrUKtgq3CrgKuQq6CrsKvAq9Cr4KvwrACsEKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrRCtQLbgwI +DAkMCgwLDAwMDQwODA8MEAwRDBIMEwwUDBUMFgwXDBgMGQwaDBsMHAwdDB4MHwwgDCEMIgwjDCQMJQwm +DCcMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMMNAw1DDYMNww4DDkMOgw7DDwMPQw+DD8MQAxBDEIMQwxE +DEUMRgxHDEgMSQxKDEsMTAxNDE4MTwxQDFEMUgxTDFQMVQxWDFcMWAxZDFoMWwxcDF0MXgxfDGAMYQxi +DGMMZAxlDGYMZwxoDGkMagxrDGwMbQxuDG8McAxxDHIMcwx0DHUDbwx2DHcMeABdDHkMegx7DHwMfQx+ +DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwyc +DJ0MoAyjDKZVJG51bGzfEBIADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEA +IgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADBWTlNSb290ViRjbGFzc11OU09iamVjdHNLZXlzXxAP +TlNDbGFzc2VzVmFsdWVzXxAZTlNBY2Nlc3NpYmlsaXR5T2lkc1ZhbHVlc11OU0Nvbm5lY3Rpb25zW05T +TmFtZXNLZXlzW05TRnJhbWV3b3JrXU5TQ2xhc3Nlc0tleXNaTlNPaWRzS2V5c11OU05hbWVzVmFsdWVz +XxAZTlNBY2Nlc3NpYmlsaXR5Q29ubmVjdG9yc11OU0ZvbnRNYW5hZ2VyXxAQTlNWaXNpYmxlV2luZG93 +c18QD05TT2JqZWN0c1ZhbHVlc18QF05TQWNjZXNzaWJpbGl0eU9pZHNLZXlzWU5TTmV4dE9pZFxOU09p +ZHNWYWx1ZXOAAoEDNIEBwoECl4EDM4DIgQItgAaBApaBApiBAi6BAzGAAIAHgQIsgQMyEQIOgQKZ0gAO +ADIAMwA0W05TQ2xhc3NOYW1lgAWAA9IADgA2ADcAOFlOUy5zdHJpbmeABF1OU0FwcGxpY2F0aW9u0gA6 +ADsAPAA9WCRjbGFzc2VzWiRjbGFzc25hbWWjAD0APgA/XxAPTlNNdXRhYmxlU3RyaW5nWE5TU3RyaW5n +WE5TT2JqZWN00gA6ADsAQQBCogBCAD9eTlNDdXN0b21PYmplY3RfEBBJQkNvY29hRnJhbWV3b3Jr0gAO +AEUARgBHWk5TLm9iamVjdHOAx6EASIAI3ABKAA4ASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkA +WgBbAFwAXQBeAF8AYFxOU1dpbmRvd1ZpZXdcTlNTY3JlZW5SZWN0XU5TV2luZG93VGl0bGVZTlNXVEZs +YWdzXU5TV2luZG93Q2xhc3NcTlNXaW5kb3dSZWN0WU5TTWF4U2l6ZV8QD05TV2luZG93QmFja2luZ18Q +EU5TV2luZG93U3R5bGVNYXNrWU5TTWluU2l6ZVtOU1ZpZXdDbGFzc4ANgMaAw4AKEnB4AACAC4AJgMUQ +AhAPgMSADF8QFnt7NiwgNDg5fSwgezg2MiwgNDY0fX1UR2l0WFhOU1dpbmRvd9IADgA2ADcAZoAEVFZp +ZXfXAGgADgBpAGoAawBjAGwAbQBuAG8AcABxAG0Ac18QD05TTmV4dFJlc3BvbmRlclpOU1N1YnZpZXdz +WE5TdkZsYWdzW05TRnJhbWVTaXplW05TU3VwZXJ2aWV3gA6AwoAPEQEAgMCADoDB0gAOAEUAdQB2gDqk +AHcAeAB5AHqAEICggKeAq9cAaAAOAHwAaQBqAGMAbABVAH4AfwCAAIEAbQBVV05TRnJhbWWADYCfgJ6A +EREBEoAOgA3SAA4ARQB1AIaAOqIAhwCIgBKATN4AaACKAA4AiwCMAI0AaQCOAGoAawBjAGwAjwCQAHcA +kgCTAJQAlQCWAJcAmACBAJkAbQB3AJwAnVtOU0hTY3JvbGxlclhOU3NGbGFnc1xOU0Nvcm5lclZpZXdf +EBBOU0hlYWRlckNsaXBWaWV3XE5TU2Nyb2xsQW10c1tOU1ZTY3JvbGxlcl1OU0NvbnRlbnRWaWV3gBCA +RoBLEDKAHIAZgBNPEBBBIAAAQSAAAEGYAABBmAAAgEqADoAQgEKAFNIADgBFAHUAoIA6pQCdAJwAkgCW +AJWAFIBCgEaAGYAc2gBoAA4AfACnAGkAagCoAGMAqQBsAIcAqwCsAK0ArgCvALAAbQCyAIdZTlNjdkZs +YWdzWU5TRG9jVmlld1lOU0JHQ29sb3KAEoBBgEAQBIAVEQkAgBaADoAwgBLSAA4ARQB1ALaAOqEAsIAW +3xAUAGgAuQAOALoAuwC8AL0AjAC+AL8AwABqAGsAwQBjAMIAwwBsAMQAxQCdAMcAyADJAMoAywDMAJUA +zgCtAM8AcADQAMwAbQDTAF4AnQDVANZfEB9OU0RyYWdnaW5nU291cmNlTWFza0Zvck5vbkxvY2FsWU5T +VHZGbGFnc1xOU0hlYWRlclZpZXdfEBFOU0JhY2tncm91bmRDb2xvcl8QEk5TQWxsb3dzVHlwZVNlbGVj +dF8QF05TSW50ZXJjZWxsU3BhY2luZ1dpZHRoXxAZTlNDb2x1bW5BdXRvcmVzaXppbmdTdHlsZV8QGE5T +SW50ZXJjZWxsU3BhY2luZ0hlaWdodFlOU0VuYWJsZWRbTlNHcmlkQ29sb3JfEBxOU0RyYWdnaW5nU291 +cmNlTWFza0ZvckxvY2FsXk5TVGFibGVDb2x1bW5zW05TUm93SGVpZ2h0gBQQAIA/E//////WQAAAgBiA +OwmAHCNACAAAAAAAACNAAAAAAAAAAIAXCYAOgDyAFIAfI0AxAAAAAAAAWns4NDUsIDIyNH3XAGgADgBq +AGsAYwBsANkAlgDbAHAA3ABtAJYAsFtOU1RhYmxlVmlld4AZgBuAGoAOgBmAFtoAaAAOAHwApwBpAGoA +qABjAKkAbACHAKsA4wCtAOQArwDKAG0AsgCHgBKAQYBJgEiAGIAOgDCAEll7ODQ1LCAxN33SADoAOwDr +AOykAOwA7QDuAD9fEBFOU1RhYmxlSGVhZGVyVmlld1ZOU1ZpZXdbTlNSZXNwb25kZXLWAGgADgB8AGoA +YwBsAIcA8QDyAHAAbQCHgBKAHoAdgA6AEl8QFHt7ODQ2LCAwfSwgezE2LCAxN3190gA6ADsA9wD4pAD4 +AO0A7gA/XV9OU0Nvcm5lclZpZXfSAA4ARQB1APuAOqIA/AD9gCCAN9oA/wAOAQABAQECAQMBBAEFAQYA +2QDMAQgBCQEKAQsBDAENAQ4AzACwXk5TSXNSZXNpemVhYmxlXE5TSGVhZGVyQ2VsbFdOU1dpZHRoWk5T +RGF0YUNlbGxeTlNSZXNpemluZ01hc2taTlNNaW5XaWR0aFpOU01heFdpZHRoXE5TSXNFZGl0YWJsZQmA +NoAhI0B0MAAAAAAAgC0QAyNARAAAAAAAACNAj0AAAAAAAAmAFtcBEgAOALwBEwEUARUBFgEXARgBGQEa +ARsAxwEcW05TQ2VsbEZsYWdzWk5TQ29udGVudHNZTlNTdXBwb3J0XE5TQ2VsbEZsYWdzMltOU1RleHRD +b2xvchIEgf4AgCyAJoAigCOAKFDUAA4BHwEgASEBIgEjASQBJVZOU1NpemVWTlNOYW1lWE5TZkZsYWdz +gCUjQCYAAAAAAACAJBEMHFxMdWNpZGFHcmFuZGXSADoAOwEoASmiASkAP1ZOU0ZvbnTTAA4BKwEsAS0B +DAEuXE5TQ29sb3JTcGFjZVdOU1doaXRlgCdLMC4zMzMzMzI5OQDSADoAOwEwATGiATEAP1dOU0NvbG9y +1QAOATEBKwEzATQBLQE2ATcBOAE5W05TQ29sb3JOYW1lXU5TQ2F0YWxvZ05hbWWAJ4ArEAaAKoApVlN5 +c3RlbV8QD2hlYWRlclRleHRDb2xvctMADgErASwBLQEMAT6AJ0IwANIAOgA7AUABQaUBQQFCAUMBRAA/ +XxARTlNUYWJsZUhlYWRlckNlbGxfEA9OU1RleHRGaWVsZENlbGxcTlNBY3Rpb25DZWxsVk5TQ2VsbNgB +EgAOALwBEwEUAUYBFQEWAUcBSACyAUoBSwCwAU0BTl1OU0NvbnRyb2xWaWV3EhQh/kCANYAwgC6AL4AW +EQgAgDNZVGV4dCBDZWxs1AAOAR8BIAEhASIBUgEkAVSAJSNAKgAAAAAAAIAkEQQU1QAOATEBKwEzATQB +LQFXATcBWAE5gCeAMoAxgClfEBZjb250cm9sQmFja2dyb3VuZENvbG9y0wAOASsBLAEtAQwBXYAnSzAu +NjY2NjY2NjkA1QAOATEBKwEzATQBLQE2ATcBYQE5gCeAK4A0gClfEBBjb250cm9sVGV4dENvbG9y0gA6 +ADsBZQFCpAFCAUMBRAA/0gA6ADsBZwFoogFoAD9dTlNUYWJsZUNvbHVtbtoA/wAOAQABAQECAQMBBAEF +AQYA2QDMAQgBbAFtAW4BDAENAQ4AzACwCYA2gDgjQIAgAAAAAACAOQmAFtcBEgAOALwBEwEUARUBFgEX +ARgBGQEaARsAxwEcgCyAJoAigCOAKNgBEgAOALwBEwEUAUYBFQEWAUcBSACyAUoBSwCwAU0BToA1gDCA +LoAvgBaAM9IAOgA7AX8BgKMBgAGBAD9eTlNNdXRhYmxlQXJyYXlXTlNBcnJhedMADgErASwBLQEMAYSA +J0IxANUADgExASsBMwE0AS0BhwE3AYgBOYAngD6APYApWWdyaWRDb2xvctMADgErASwBLQEMAY2AJ0Qw +LjUA0gA6ADsBjwDZpQDZAZAA7QDuAD9ZTlNDb250cm9sXxAVe3sxLCAxN30sIHs4NDUsIDIyNH190gA6 +ADsBkwGUpAGUAO0A7gA/Wk5TQ2xpcFZpZXfaAGgBlgAOAHwAagBjAZcAbAGYAZkAhwCHAZwBnQBwAG0B +nwCHAaEBolhOU1RhcmdldFhOU0FjdGlvblpOU0N1clZhbHVlWU5TUGVyY2VudIASgBKARYBDgA6ARIAS +I0BCgAAAAAAAIz/I7SKgAAAAXxAWe3s4NDYsIDE3fSwgezE1LCAyMjR9fVxfZG9TY3JvbGxlcjrSADoA +OwGmAaelAacBkADtAO4AP1pOU1Njcm9sbGVy2gBoAZYADgB8AIsAagBjAZcAbAGZAIcAhwGcAawBrQBw +AG0BnwCHAbGAEoASgEWARxABgA6ARIASIz/tfC8gAAAAXxAVe3sxLCAyNDF9LCB7ODQ1LCAxNX190gAO +AEUAdQG1gDqhAMqAGF8QE3t7MSwgMH0sIHs4NDUsIDE3fX1aezg2MiwgMjU3fdIAOgA7AboBu6QBuwDt +AO4AP1xOU1Njcm9sbFZpZXfcAGgAigAOAHwAiwBpAGoAYwBsAI8BvQCQAHcBvwCTAcEBwgHDAHAAbQB3 +AcYBxwHHXU5TTmV4dEtleVZpZXeAEICbgEuAnRASgE2ADoAQgJmAToBO0gAOAEUAdQHLgDqjAccBxgG/ +gE6AmYCb3ABoAA4AfAHQAKcAaQBqAKgAYwCpAGwBvQCIAKsB0wHUAK0B1QCvAdYAbQDLAIgB1lhOU0N1 +cnNvcoBMgEGAlYCWgE+AUIAOgDuATIBQ0gAOAEUAdQHdgDqhAdaAUNwAaAAOAeAB4QHiAGoAawBQAGMB +4wBsAeQBxwHmAecBNwHoAekB6gHrAG0B7QHHACtfEA9OU1RleHRDb250YWluZXJZTlNUVkZsYWdzXE5T +U2hhcmVkRGF0YVhOU01pbml6ZVpOU0RlbGVnYXRlgE6AlIBSgIURCRKAUYCSgA6Ak4BOgABaezg0NSwg +MTI5fdUB8gAOAfMBAQH0Aa0B9QHWAfcB+FlOU1RDRmxhZ3NaTlNUZXh0Vmlld18QD05TTGF5b3V0TWFu +YWdlcoCEgFAjQIpoAAAAAACAU9UADgH6AfsB/AHkAf0B/gH/ATcAK18QEE5TVGV4dENvbnRhaW5lcnNd +TlNUZXh0U3RvcmFnZVlOU0xNRmxhZ3OAg4CCgFSAANQADgICAD4B5AIDAgQCBQArXE5TQXR0cmlidXRl +c4CBgFaAVYAA0gAOADYANwIJgARfEQJeTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGVyIGVsaXQgbGFtZXQs +IGNvbnNlY3RldGF1ciBjaWxsaXVtIGFkaXBpc2ljaW5nIHBlY3UsIHNlZCBkbyBlaXVzbW9kIHRlbXBv +ciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1p +bmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1 +dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4g +cmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lh +dCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9p +ZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3Qg +bGFib3J1bSBFdCBoYXJ1bWQgdW5kIGxvb2t1bSBsaWtlIEdyZWVrIHRvIG1lLCBkZXJldWQgZmFjaWxp +cyBlc3QgZXIgZXhwZWRpdCBkaXN0aW5jdC4gTmFtIGxpYmVyIHRlIGNvbnNjaWVudCB0byBmYWN0b3Ig +dHVtIHBvZW4gbGVndW0gb2Rpb3F1ZSBjaXZpdWRh0wAOAgsARQIMAg0CEFdOUy5rZXlzgICiAg4CD4BX +gFiiAhECEoBZgH5fEBBOU1BhcmFncmFwaFN0eWxl0wIVAA4CFgIXAhgBDFpOU1RhYlN0b3BzW05TQWxp +Z25tZW50gFqAfdIADgBFAhoCG4B8rxAgAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAIt +Ai4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCO4BbgF2AXoBfgGCAYYBigGOAZIBlgGaAZ4BogGmAaoBr +gGyAbYBugG+AcIBxgHKAc4B0gHWAdoB3gHiAeYB6gHvSAA4CPQI+Aj9aTlNMb2NhdGlvboBcIwAAAAAA +AAAA0gA6ADsCQQJCogJCAD9ZTlNUZXh0VGFi0gAOAj0CPgJFgFwjQEwAAAAAAADSAA4CPQI+AkiAXCNA +XAAAAAAAANIADgI9Aj4CS4BcI0BlAAAAAAAA0gAOAj0CPgJOgFwjQGwAAAAAAADSAA4CPQI+AlGAXCNA +cYAAAAAAANIADgI9Aj4CVIBcI0B1AAAAAAAA0gAOAj0CPgJXgFwjQHiAAAAAAADSAA4CPQI+AlqAXCNA +fAAAAAAAANIADgI9Aj4CXYBcI0B/gAAAAAAA0gAOAj0CPgJggFwjQIGAAAAAAADSAA4CPQI+AmOAXCNA +g0AAAAAAANIADgI9Aj4CZoBcI0CFAAAAAAAA0gAOAj0CPgJpgFwjQIbAAAAAAADSAA4CPQI+AmyAXCNA +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 +TQC8ARQBRgEVA04DTwNQA1EDUgEWA1MDVANVA1YBSwB6A1kBrQDMA1sDXANdAU5fEBJOU0NhbmNlbEJ1 +dHRvbkNlbGxfEBBOU1RleHRCZXplbFN0eWxlXxARTlNEcmF3c0JhY2tncm91bmRfEBJOU1NlYXJjaEJ1 +dHRvbkNlbGxfEBBOU01heGltdW1SZWNlbnRzXxATTlNQbGFjZWhvbGRlclN0cmluZxIUcf5AgL6AtYCv +gC+AqxIQAAQACYCxEP+AroAzV1N1YmplY3TVAA4BMQErATMBNAEtAMsBNwNjATmAJ4A7gLCAKV8QE3Rl +eHRCYWNrZ3JvdW5kQ29sb3LcAZYBEgAOA2cDaANpARMBRgNqARUBlwNrA0cDbQNuA28AxwEaA3EAegNz +AMcDdAN1XxASTlNQZXJpb2RpY0ludGVydmFsXk5TQnV0dG9uRmxhZ3MyXxAPTlNLZXlFcXVpdmFsZW50 +XxAPTlNQZXJpb2RpY0RlbGF5XU5TQnV0dG9uRmxhZ3OArRIAAf4AgLQQS4AigLKAqxEBkICzEghEQP9W +c2VhcmNoXxATX3NlYXJjaEZpZWxkU2VhcmNoOtIAOgA7A3kDeqQDegFDAUQAP1xOU0J1dHRvbkNlbGzd +AZYBEgAOA2cDaANpA3wBEwFGA2oBFQGXA2sDRwNtA24DbwDHARoDgAOBAHoDcwDHA4MDdV8QI05TQWNj +ZXNzaWJpbGl0eU92ZXJyaWRkZW5BdHRyaWJ1dGVzgK2AtIAigLeAtoCrgL1VY2xlYXLSAA4ARQB1A4eA +OqEDiIC40wAOAgsARQOKA4sDjoC8ogOMA42AuYC6ogOPAuOAu4CQXUFYRGVzY3JpcHRpb25fEClOU0Fj +Y2Vzc2liaWxpdHlFbmNvZGVkQXR0cmlidXRlc1ZhbHVlVHlwZVZjYW5jZWzSADoAOwOVA5ajA5YCrAA/ +XxATTlNNdXRhYmxlRGljdGlvbmFyeV8QE19zZWFyY2hGaWVsZENhbmNlbDrSADoAOwOZA5qlA5oBQgFD +AUQAP18QEU5TU2VhcmNoRmllbGRDZWxs0gA6ADsDnAOdpgOdAzABkADtAO4AP11OU1NlYXJjaEZpZWxk +Wns4NjIsIDQ2NH3SADoAOwOgAO2jAO0A7gA/XxAWe3swLCAwfSwgezE2ODAsIDEwMjh9fVp7MjEzLCAx +Mjl9XxAaezMuNDAyODJlKzM4LCAzLjQwMjgyZSszOH3SADoAOwOlA6aiA6YAP18QEE5TV2luZG93VGVt +cGxhdGXSADoAOwOoA6mjA6kDqgA/XE5TTXV0YWJsZVNldFVOU1NldNIADgBFAHUDrYA6rxAtA64DrwOw +A7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPO +A88D0APRA9ID0wPUA9UD1gPXA9gD2QPagMmA14DdgOKA54DtgPKA94D8gQECgQEGgQELgQERgQEXgQEc +gQEhgQEmgQEqgQEvgQE0gQE4gQE9gQFBgQFGgQFLgQFMgQFQgQFSgQFXgQFbgQFfgQFkgQFogQFsgQFx +gQF3gQF7gQGAgQGOgQGTgQGXgQGqgQGtgQG0gQG80wAOA9wD3QPeA98D4FhOU1NvdXJjZVdOU0xhYmVs +gNaAyoDV2QAOA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8ldOU1RpdGxlXxARTlNLZXlF +cXVpdk1vZE1hc2taTlNLZXlFcXVpdl1OU01uZW1vbmljTG9jWU5TT25JbWFnZVxOU01peGVkSW1hZ2VW +TlNNZW51VU5TVGFngNSAzBIAEAAAgM0Sf////4DOgNKAyxAH0wAOA+ID9AP1A/YD91tOU01lbnVJdGVt +c4EB1YEB/IEB/V8QFlVzZSBTZWxlY3Rpb24gZm9yIEZpbmRRZdMADgAyA/sD/AP9A/5eTlNSZXNvdXJj +ZU5hbWWA0YDPgNBXTlNJbWFnZV8QD05TTWVudUNoZWNrbWFya9IAOgA7BAIEA6IEAwA/XxAQTlNDdXN0 +b21SZXNvdXJjZdMADgAyA/sD/AP9BAeA0YDPgNNfEBBOU01lbnVNaXhlZFN0YXRl0gA6ADsECgQLogQL +AD9aTlNNZW51SXRlbV8QF3BlcmZvcm1GaW5kUGFuZWxBY3Rpb2460gA6ADsEDgQPowQPBBAAP18QFU5T +TmliQ29udHJvbENvbm5lY3Rvcl5OU05pYkNvbm5lY3RvctMADgPcA90D3gQTBBSA1oDYgNzYAA4D4gPj +A+QD5QPmA+cD6APqBBcD7AQYA+4D7wPwBBuA1IDagNuAzoDSgNnTAA4D4gP0A/UEHgQfgQHVgQHHgQHI +ZgBQAHIAaQBuAHQgJlFwVnByaW50OtMADgPcA90D3gQlBCaA1oDegOHYAA4D4gPjA+QD5QPmA+cD6APq +BCkD7AEaA+4D7wPwBC2A1IDggCKAzoDSgN/UAA4D4gEgA/QD9QQwBDEEMoEB1YEB0oEB1IEB01pDbGVh +ciBNZW51XxAVY2xlYXJSZWNlbnREb2N1bWVudHM60wAOA9wD3QPeBDcEOIDWgOOA5tcADgPiA+QD5QPm +A+cD6APqBDsBGgPuA+8D8AQ/gNSA5YAigM6A0oDk0wAOA+ID9AP1BEIEQ4EB1YECEIECEl5TdGFydCBT +cGVha2luZ15zdGFydFNwZWFraW5nOtMADgPcA90D3gRIBEmA1oDogOzYAA4D4gPjA+QD5QPmA+cD6APq +BEwD7ARNA+4D7wPwBFCA1IDqgOuAzoDSgOnTAA4D4gP0A/UEUwRUgQHVgQIWgQIXW1Nob3cgQ29sb3Jz +UUNfEBVvcmRlckZyb250Q29sb3JQYW5lbDrUAA4EWQPcA90EWgRbAB8EXV1OU0Rlc3RpbmF0aW9ugPGA +7oACgPDSAA4AMgAzBGCABYDvXxATR2l0VGVzdF9BcHBEZWxlZ2F0ZVhkZWxlZ2F0ZdIAOgA7BGQEZaME +ZQQQAD9fEBROU05pYk91dGxldENvbm5lY3RvctMADgPcA90D3gRoBGmA1oDzgPbYAA4D4gPjA+QD5QPm +A+cD6APqBGwD7AEaA+4D7wPwBHCA1ID1gCKAzoDSgPTTAA4D4gP0A/UEcwR0gQHVgQH1gQH2VkRlbGV0 +ZVdkZWxldGU60wAOA9wD3QPeBHkEeoDWgPiA+9gADgPiA+MD5APlA+YD5wPoA+oEfQPsBH4D7gPvA/AE +cIDUgPmA+oDOgNKA9FNDdXRReFRjdXQ61AAOBFkD3APdA94AHwSIBImA1oACgP2BAQHYAA4D4gPjA+QD +5QPmA+cD6APqBIwD7ASNA+4D7wPwBJCA1ID/gQEAgM6A0oD+1AAOA+IBIAP0A/UEkwSUBJWBAdWBAeCB +AfGBAeJcSGlkZSBHaXRUZXN0UWhVaGlkZTrTAA4D3APdA94EmwScgNaBAQOBAQXXAA4D4gPkA+UD5gPn +A+gD6gSfARoD7gPvA/AEP4DUgQEEgCKAzoDSgORdU3RvcCBTcGVha2luZ11zdG9wU3BlYWtpbmc60wAO +A9wD3QPeBKgEqYDWgQEHgQEK2AAOA+ID4wPkA+UD5gPnA+gD6gSsA+wErQPuA+8D8ARwgNSBAQiBAQmA +zoDSgPRUUmVkb1FaVXJlZG860wAOA9wD3QPeBLYEt4DWgQEMgQEQ2AAOA+ID4wPkA+UD5gPnA+gD6gS6 +A+wEuwPuA+8D8AS+gNSBAQ6BAQ+AzoDSgQEN0wAOA+ID9AP1BMEEwoEB1YEB/4ECAW4AUwBoAG8AdwAg +AFMAcABlAGwAbABpAG4AZyAmUTpfEA9zaG93R3Vlc3NQYW5lbDrTAA4D3APdA94EyATJgNaBARKBARbY +AA4D4gPjA+QD5QPmA+cD6APqBMwD7ATNA+4D7wPwBNCA1IEBFIEBFYDOgNKBARPTAA4D4gP0A/UE0wTU +gQHVgQImgQIoXEdpdFRlc3QgSGVscFE/WXNob3dIZWxwOtQADgRZA9wD3QPeAB8E2wTcgNaAAoEBGIEB +G9gADgPiA+MD5APlA+YD5wPoA+oE3wPsBOAD7gPvA/AEkIDUgQEZgQEagM6A0oD+XFF1aXQgR2l0VGVz +dFFxWnRlcm1pbmF0ZTrUAA4EWQPcA90D3gRbBOoE64DWgO6BAR2BASDYAA4D4gPjA+QD5QPmA+cD6APq +BO4D7ATvA+4D7wPwBBuA1IEBHoEBH4DOgNKA2VRTYXZlUXNbc2F2ZUFjdGlvbjrTAA4D3APdA94E+AT5 +gNaBASKBASXYAA4D4gPjA+QD5QPmA+cD6APqBPwD7AEaA+4D7wPwBQCA1IEBJIAigM6A0oEBI9QADgPi +ASAD9AP1BQMFBAUFgQHVgQIhgQIkgQIiVFpvb21ccGVyZm9ybVpvb2060wAOA9wD3QPeBQoFC4DWgQEn +gQEp2AAOA+ID4wPkA+UD5gPnA+gD6gUOA+wBGgPuA+8D8AS+gNSBASiAIoDOgNKBAQ1fEBtDaGVjayBT +cGVsbGluZyBXaGlsZSBUeXBpbmdfEB50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZzrTAA4D3APd +A94FFwUYgNaBASuBAS7YAA4D4gPjA+QD5QPmA+cD6APqBRsD7AUcA+4D7wPwBHCA1IEBLIEBLYDOgNKA +9FRDb3B5UWNVY29weTrTAA4D3APdA94FJQUmgNaBATCBATPYAA4D4gPjA+QD5QPmA+cD6APqBSkD7AUq +A+4D7wPwBHCA1IEBMYEBMoDOgNKA9FRVbmRvUXpVdW5kbzrUAA4EWQPcA90D3gAfBTQFNYDWgAKBATWB +ATfXAA4D4gPkA+UD5gPnA+gD6gU4ARoD7gPvA/AEkIDUgQE2gCKAzoDSgP5dQWJvdXQgR2l0VGVzdF8Q +HW9yZGVyRnJvbnRTdGFuZGFyZEFib3V0UGFuZWw60wAOA9wD3QPeBUEFQoDWgQE5gQE82AAOA+ID4wPk +A+UD5gPnA+gD6gVFA+wFRgPuA+8D8AQbgNSBATqBATuAzoDSgNlVQ2xvc2VRd11wZXJmb3JtQ2xvc2U6 +1AAOBFkD3APdA94AHwVQBVGA1oACgQE+gQFA2AAOA+ID4wPkA+UD5gPnA+gD6gVUA+wBGgPuA+8D8ASQ +gNSBAT+AIoDOgNKA/lhTaG93IEFsbF8QFnVuaGlkZUFsbEFwcGxpY2F0aW9uczrTAA4D3APdA94FXQVe +gNaBAUKBAUXYAA4D4gPjA+QD5QPmA+cD6APqBWED7AViA+4D7wPwBQCA1IEBQ4EBRIDOgNKBASNYTWlu +aW1pemVRbV8QE3BlcmZvcm1NaW5pYXR1cml6ZTrTAA4D3APdA94FawVsgNaBAUeBAUrYAA4D4gPjA+QD +5QPmA+cD6APqBW8D7AVwA+4D7wPwBL6A1IEBSIEBSYDOgNKBAQ1eQ2hlY2sgU3BlbGxpbmdRO15jaGVj +a1NwZWxsaW5nOtQADgRZA9wD3QRaBFsASARdgPGA7oAIgPDTAA4D3APdA94FfgPggNaBAU2A1dkADgPi +A+MD5APlA+YD5wPoA+kD6gWCA+wFgwPuA+8D8APxAa2A1IEBToEBT4DOgNKAy2UARgBpAG4AZCAmUWbU +AA4EWQPcA90EWgBIBFsFjYDxgAiA7oEBUVZ3aW5kb3fTAA4D3APdA94FkQWSgNaBAVOBAVbYAA4D4gPj +A+QD5QPmA+cD6APqBZUD7AWWA+4D7wPwBBuA1IEBVIEBVYDOgNKA2WsAUABhAGcAZQAgAFMAZQB0AHUA +cCAmUVBecnVuUGFnZUxheW91dDrTAA4D3APdA94FnwPggNaBAViA1dkADgPiA+MD5APlA+YD5wPoA+kD +6gWjA+wFpAPuA+8D8APxAQyA1IEBWYEBWoDOgNKAy11GaW5kIFByZXZpb3VzUUfUAA4EWQPcA90D3gAf +Ba0FroDWgAKBAVyBAV7YAA4D4gPjA+QD5QPmA+cD6APqBbEFsgSNA+4D7wPwBJCA1IEBXRIAGAAAgQEA +gM6A0oD+W0hpZGUgT3RoZXJzXxAWaGlkZU90aGVyQXBwbGljYXRpb25zOtMADgPcA90D3gW7BbyA1oEB +YIEBY9gADgPiA+MD5APlA+YD5wPoA+oFvwPsBcAD7gPvA/AEcIDUgQFhgQFigM6A0oD0VVBhc3RlUXZW +cGFzdGU60wAOA9wD3QPeBckFyoDWgQFlgQFn2AAOA+ID4wPkA+UD5gPnA+gD6gXNA+wBGgPuA+8D8AUA +gNSBAWaAIoDOgNKBASNfEBJCcmluZyBBbGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrTAA4D3APd +A94F1gPggNaBAWmA1dkADgPiA+MD5APlA+YD5wPoA+kD6gXaA+wF2wPuA+8D8APxAF2A1IEBaoEBa4DO +gNKAy1lGaW5kIE5leHRRZ9MADgPcA90D3gXjBeSA1oEBbYEBcNgADgPiA+MD5APlA+YD5wPoA+oF5wPs +BegD7gPvA/AD8YDUgQFugQFvgM6A0oDLXxARSnVtcCB0byBTZWxlY3Rpb25Ral8QHWNlbnRlclNlbGVj +dGlvbkluVmlzaWJsZUFyZWE60wAOA9wD3QPeBfEF8oDWgQFygQF22AAOA+ID4wPkA+UD5gPnA+gD6gX1 +BbIF9gPuA+8D8AX5gNSBAXSBAXWAzoDSgQFz0wAOA+ID9AP1BfwF/YEB1YECG4ECHVxTaG93IFRvb2xi +YXJRdF8QE3RvZ2dsZVRvb2xiYXJTaG93bjrTAA4D3APdA94GAwYEgNaBAXiBAXrYAA4D4gPjA+QD5QPm +A+cD6APqBgcD7AEaA+4D7wPwBfmA1IEBeYAigM6A0oEBc28QEgBDAHUAcwB0AG8AbQBpAHoAZQAgAFQA +bwBvAGwAYgBhAHIgJl8QH3J1blRvb2xiYXJDdXN0b21pemF0aW9uUGFsZXR0ZTrTAA4D3APdA94GEAYR +gNaBAXyBAX/YAA4D4gPjA+QD5QPmA+cD6APqBhQD7AYVA+4D7wPwBHCA1IEBfYEBfoDOgNKA9FpTZWxl +Y3QgQWxsUWFac2VsZWN0QWxsOtQADgRZA9wD3QRaBFsGHwYggPGA7oEBgYEBjdkGIgAOBiMGJAYlBiYG +JwYoBikAzAYrAMwGLQDMBi8AzADMAMxfEBpOU0ZpbHRlclJlc3RyaWN0c0luc2VydGlvbl8QFE5TUHJl +c2VydmVzU2VsZWN0aW9uXxAPX05TTWFuYWdlZFByb3h5Wk5TRWRpdGFibGVeTlNEZWNsYXJlZEtleXNf +ECJOU0NsZWFyc0ZpbHRlclByZWRpY2F0ZU9uSW5zZXJ0aW9uXxAYTlNTZWxlY3RzSW5zZXJ0ZWRPYmpl +Y3RzXxAWTlNBdm9pZHNFbXB0eVNlbGVjdGlvbgmBAYwJgQGKCYEBggkJCdIADgBFAHUGNYA6pwY2BjcG +OAY5BjoGOwY8gQGDgQGEgQGFgQGGgQGHgQGIgQGJU2FyclRzZWxmU3NoYVdkZXRhaWxzV3N1YmplY3RW +QGNvdW50W3NlbGYuQGNvdW500QAOBkWBAYvSADoAOwZHBiSiBiQAP9IAOgA7BkkGSqQGSgZLBkwAP18Q +EU5TQXJyYXlDb250cm9sbGVyXxASTlNPYmplY3RDb250cm9sbGVyXE5TQ29udHJvbGxlcldjb250ZW50 +1wAOBFkGTwZQA9wD3QZRBlIEWwZUBlUGHwZXAF1ZTlNLZXlQYXRoWU5TQmluZGluZ18QHE5TTmliQmlu +ZGluZ0Nvbm5lY3RvclZlcnNpb26BAZKA7oEBkYEBkIEBgYEBj18QIGNvbnRlbnRBcnJheTogcmVwb3Np +dG9yeS5jb21taXRzXGNvbnRlbnRBcnJheV8QEnJlcG9zaXRvcnkuY29tbWl0c9IAOgA7BlwGXaMGXQQQ +AD9fEBVOU05pYkJpbmRpbmdDb25uZWN0b3LXAA4EWQZPBlAD3APdBlEGUgYfBmEGYgD8BmQAXYEBkoEB +gYEBloEBlYAggQGUXxAadmFsdWU6IGFycmFuZ2VkT2JqZWN0cy5zaGFVdmFsdWVfEBNhcnJhbmdlZE9i +amVjdHMuc2hh2AAOBFkGTwZQA9wD3QZpBlEGUgYfBmwGbQHWBm8GcABdWU5TT3B0aW9uc4EBkoEBgYEB +moEBmYBQgQGYgQGbXxAYdmFsdWU6IHNlbGVjdGlvbi5kZXRhaWxzXxARc2VsZWN0aW9uLmRldGFpbHPT +AA4CCwBFAgwGdQaBgICrBnYGdwZ4BnkGegZ7BnwGfQZ+Bn8GgIEBnIEBnYEBnoEBn4EBoIEBoYEBooEB +o4EBpIEBpYEBpqsGggaDBoMGgwaGBoYGgwaGBoYGgwaDgQGngQGogQGogQGogQGpgQGpgQGogQGpgQGp +gQGogQGoXxAcTlNSYWlzZXNGb3JOb3RBcHBsaWNhYmxlS2V5c18QG05TQ29uZGl0aW9uYWxseVNldHNF +ZGl0YWJsZV8QFk5TVmFsaWRhdGVzSW1tZWRpYXRlbHlfECZOU0Fsd2F5c1ByZXNlbnRzQXBwbGljYXRp +b25Nb2RhbEFsZXJ0c18QG05TTXVsdGlwbGVWYWx1ZXNQbGFjZWhvbGRlcl8QEU5TTnVsbFBsYWNlaG9s +ZGVyXxAaTlNDb250aW51b3VzbHlVcGRhdGVzVmFsdWVfEBpOU05vdEFwcGxpY2FibGVQbGFjZWhvbGRl +cl8QGE5TTm9TZWxlY3Rpb25QbGFjZWhvbGRlcl8QJk5TQWxsb3dzRWRpdGluZ011bHRpcGxlVmFsdWVz +U2VsZWN0aW9uXxAZTlNDb25kaXRpb25hbGx5U2V0c0hpZGRlbgkI1wAOBFkGTwZQA9wD3QZRBlIGHwad +Bm0A/QagAF2BAZKBAYGBAayBAZmAN4EBq18QHnZhbHVlOiBhcnJhbmdlZE9iamVjdHMuc3ViamVjdF8Q +F2FycmFuZ2VkT2JqZWN0cy5zdWJqZWN02AAOBFkGTwZQA9wD3QZpBlEGUgYfBqYGpwB4BqkGqgBdgQGS +gQGBgQGwgQGvgKCBAa6BAbFfECxkaXNwbGF5UGF0dGVyblZhbHVlMTogYXJyYW5nZWRPYmplY3RzLkBj +b3VudF8QFGRpc3BsYXlQYXR0ZXJuVmFsdWUxXxAWYXJyYW5nZWRPYmplY3RzLkBjb3VudNMADgILAEUC +DAawBreAgKYGewZ2BrMGfQZ+BnqBAaGBAZyBAbKBAaOBAaSBAaCmBoYGgga6BoYGhgaGgQGpgQGngQGz +gQGpgQGpgQGpXxAQTlNEaXNwbGF5UGF0dGVybl8QGSV7dmFsdWUxfUAgY29tbWl0cyBsb2FkZWTYAA4E +WQZPBlAD3APdBmkGUQZSBh8GwwbEAHoGxgbHAF2BAZKBAYGBAbeBAbaAq4EBtYEBuF8QGnByZWRpY2F0 +ZTogZmlsdGVyUHJlZGljYXRlWXByZWRpY2F0ZV8QD2ZpbHRlclByZWRpY2F0ZdMADgILAEUCDAbNBtOA +gKUGdgZ4BtAGeQbSgQGcgQGegQG5gQGfgQG6pQaCBoMG1gaDA12BAaeBAaiBAbuBAaiArl8QEU5TUHJl +ZGljYXRlRm9ybWF0XU5TRGlzcGxheU5hbWVfEBdzdWJqZWN0IGNvbnRhaW5zICR2YWx1ZdkADgRZBk8G +UAbdA9wD3QZpBlEGUgYfBsMG4QPZAHoG5AblAF1fEBNOU1ByZXZpb3VzQ29ubmVjdG9ygQGSgQGBgQG3 +gQG+gQG0gKuBAb2BAb9fEBtwcmVkaWNhdGUyOiBmaWx0ZXJQcmVkaWNhdGVacHJlZGljYXRlMtMADgIL +AEUCDAbqBvCAgKUGdgZ4BtAGeQbSgQGcgQGegQG5gQGfgQG6pQaCBoMG8waDBvWBAaeBAaiBAcCBAaiB +AcFfEBNzaGEgY29udGFpbnMgJHZhbHVlVFNIQTHSAA4ARQIaBvqAfK8QaQb7BvwAdwb+Bv8F8QcBBSUF +fgD9A0cHBgQtBHAFAAUKBwsEyABIBw4FXQcQBxEHEgcTBgMHFQD8BPgEGwW7BEgBxgccBWsFkQTQA/EA +sAM1AJIFrQRQAHkEPwELAW4EiAXjBywHLQSQBVAHMAQlBhAEqAQ3A98EEwc3BzgEaAc6AMoAnAMYBz4H +PwdABL4HQgdDB0QHRQSbBOoB1gdJAFUAhwTbBHkHTgdPAb8AiAUXAHgF+QRbBh8HVwWfB1kF1gS2BTQH +XQdeBUEFyQdhAHoHY4EBw4EBxIAQgQIlgQIjgQFygQHrgQEwgQFNgDeArYEB34DfgPSBASOBASeBAfKB +ARKACIEB5IEBQoECGIECGoEB74ECDYEBeIEB94AggQEigNmBAWCA6ICZgQHagQFHgQFTgQETgMuAFoCp +gEaBAVyA6YCngOSALYA5gP2BAW2BAgSBAguA/oEBPoEBz4DegQF8gQEHgOOAyoDYgQICgQIPgPOBAf6A +GIBCgKKBAdyBAdaBAcmBAQ2BAgmBAgeBAeeBAfmBAQOBAR2AUIEB8IANgBKBARiA+IEB6IEBzICbgEyB +ASuAoIEBc4DugQGBgQIqgQFYgQH4gQFpgQEMgQE1gQITgQHjgQE5gQFlgQHXgKuBAh7aAA4HZQPiA+MD +5APlA+YD5wPoAZcD6gQbB2gD7AEaA+4D7wPwBvwHbVlOU1N1Ym1lbnWA1IDZgQHFgCKAzoDSgQHEgQHG +1AAOA+IBIAP0A/UHcAdxB3KBAdWBAd2BAimBAd5URmlsZV5zdWJtZW51QWN0aW9uOtIADgA2ADcHc4AE +0gAOAEUAdQd5gDqrB0AHTwcwBz8FQQTqB2EHHAc+BZEEE4EByYEBzIEBz4EB1oEBOYEBHYEB14EB2oEB +3IEBU4DY2AAOA+ID4wPkA+UD5gPnA+gD6geHA+wHiAPuA+8D8AQbgNSBAcqBAcuAzoDSgNlTTmV3UW7Y +AA4D4gPjA+QD5QPmA+cD6APqB5AD7AeRA+4D7wPwBBuA1IEBzYEBzoDOgNKA2VdPcGVuLi4uUW/aAA4H +ZQPiA+MD5APlA+YD5wPoAZcD6gQtB5oD7AEaA+4D7wPwBBsHn4DUgN+BAdCAIoDOgNKA2YEB0VtPcGVu +IFJlY2VudNIADgA2ADcHoIAE0gAOAEUAdQelgDqhBCWA3l8QFl9OU1JlY2VudERvY3VtZW50c01lbnXS +ADoAOwepA+iiA+gAP9oADgPiA+MHqwPkB6wD5QPmA+cD6APqARoD7ADMARoAzAPuA+8D8AQbXU5TSXNT +ZXBhcmF0b3JcTlNJc0Rpc2FibGVkgNSAIgmAIgmAzoDSgNnYAA4D4gPjA+QD5QPmA+cD6APqB7cD7Ae4 +A+4D7wPwBBuA1IEB2IEB2YDOgNKA2WgAUwBhAHYAZQAgAEEAcyAmUVPXAA4D4gPkA+UD5gPnA+gD6gfA +ARoD7gPvA/AEG4DUgQHbgCKAzoDSgNlfEA9SZXZlcnQgdG8gU2F2ZWTaAA4D4gPjB6sD5AesA+UD5gPn +A+gD6gEaA+wAzAEaAMwD7gPvA/AEG4DUgCIJgCIJgM6A0oDZWE1haW5NZW510gAOAEUAdQfSgDqnBwYG ++wcLB10HEQdjBv6BAd+BAcOBAfKBAhOBAhqBAh6BAiXaAA4HZQPiA+MD5APlA+YD5wPoAZcD6gSQBJMD +7AEaA+4D7wPwBvwH4oDUgP6BAeCAIoDOgNKBAcSBAeFXR2l0VGVzdNIADgBFAHUH5oA6qwU0B14HDgdE +B04HEgSIBa0FUAdJBNuBATWBAeOBAeSBAeeBAeiBAe+A/YEBXIEBPoEB8IEBGNoADgPiA+MHqwPkB6wD +5QPmA+cD6APqARoD7ADMARoAzAPuA+8D8ASQgNSAIgmAIgmAzoDSgP7YAA4D4gPjA+QD5QPmA+cD6APq +B/0D7Af+A+4D7wPwBJCA1IEB5YEB5oDOgNKA/mwAUAByAGUAZgBlAHIAZQBuAGMAZQBzICZRLNoADgPi +A+MHqwPkB6wD5QPmA+cD6APqARoD7ADMARoAzAPuA+8D8ASQgNSAIgmAIgmAzoDSgP7aAA4HZQPiA+MD +5APlA+YD5wPoAZcD6gcBCBAD7AEaA+4D7wPwBJAIFYDUgQHrgQHpgCKAzoDSgP6BAepYU2VydmljZXPU +AA4D4gEgA/QD9QgZCBoIG4EB1YEB7IEB7oEB7dIADgA2ADcIFoAE0gAOAEUAdQgggDqgXxAPX05TU2Vy +dmljZXNNZW512gAOA+ID4werA+QHrAPlA+YD5wPoA+oBGgPsAMwBGgDMA+4D7wPwBJCA1IAiCYAiCYDO +gNKA/toADgPiA+MHqwPkB6wD5QPmA+cD6APqARoD7ADMARoAzAPuA+8D8ASQgNSAIgmAIgmAzoDSgP5c +X05TQXBwbGVNZW512gAOB2UD4gPjA+QD5QPmA+cD6AGXA+oEcAg4A+wBGgPuA+8D8Ab8CD2A1ID0gQHz +gCKAzoDSgQHEgQH0VEVkaXTSAA4ANgA3CD6ABNIADgBFAHUIQ4A6rQUlBKgHFQR5BRcFuwRoBhAHWQdF +BzoHLAc4gQEwgQEHgQH3gPiBASuBAWCA84EBfIEB+IEB+YEB/oECBIECD9oADgPiA+MHqwPkB6wD5QPm +A+cD6APqARoD7ADMARoAzAPuA+8D8ARwgNSAIgmAIgmAzoDSgPTaAA4D4gPjB6sD5AesA+UD5gPnA+gD +6gEaA+wAzAEaAMwD7gPvA/AEcIDUgCIJgCIJgM6A0oD02gAOB2UD4gPjA+QD5QPmA+cD6AGXA+oD8Qhm +A+wBGgPuA+8D8ARwCGuA1IDLgQH6gCKAzoDSgPSBAftURmluZNIADgA2ADcIbIAE0gAOAEUAdQhxgDql +BX4F1gWfA98F44EBTYEBaYEBWIDKgQFt2gAOB2UD4gPjA+QD5QPmA+cD6AGXA+oEvgTBA+wBGgPuA+8D +8ARwCH+A1IEBDYEB/4AigM6A0oD0gQIAXxAUU3BlbGxpbmcgYW5kIEdyYW1tYXLSAA4ARQB1CIOAOqQE +tgVrBQoHN4EBDIEBR4EBJ4ECAtgADgPiA+MD5APlA+YD5wPoA+oIigPsARoD7gPvA/AEvoDUgQIDgCKA +zoDSgQENXxAbQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxsaW5n2gAOB2UD4gPjA+QD5QPmA+cD6AGXA+oH +QwiTA+wBGgPuA+8D8ARwCJiA1IECB4ECBYAigM6A0oD0gQIGXVN1YnN0aXR1dGlvbnPTAA4D4gP0A/UI +kwidgQHVgQIFgQII0gAOAEUAdQiggDqjB0IHLQcTgQIJgQILgQIN2AAOA+ID4wPkA+UD5gPnA+gD6gim +A+wFgwPuA+8D8AdDgNSBAgqBAU+AzoDSgQIHXxAQU21hcnQgQ29weS9QYXN0ZdgADgPiA+MD5APlA+YD +5wPoA+oIrgPsBdsD7gPvA/AHQ4DUgQIMgQFrgM6A0oECB1xTbWFydCBRdW90ZXPYAA4D4gPjA+QD5QPm +A+cD6APqCLYD7AWkA+4D7wPwB0OA1IECDoEBWoDOgNKBAgdbU21hcnQgTGlua3PaAA4HZQPiA+MD5APl +A+YD5wPoAZcD6gQ/BEID7AEaA+4D7wPwBHAIxIDUgOSBAhCAIoDOgNKA9IECEVZTcGVlY2jSAA4ARQB1 +CMiAOqIENwSbgOOBAQPaAA4HZQPiA+MD5APlA+YD5wPoAZcD6gRQCM4D7AEaA+4D7wPwBvwI04DUgOmB +AhSAIoDOgNKBAcSBAhVWRm9ybWF00gAOADYANwjUgATSAA4ARQB1CNmAOqIHEARIgQIYgOjYAA4D4gPj +A+QD5QPmA+cD6APqCN4D7AX2A+4D7wPwBFCA1IECGYEBdYDOgNKA6VpTaG93IEZvbnRz2gAOB2UD4gPj +A+QD5QPmA+cD6AGXA+oF+QX8A+wBGgPuA+8D8Ab8COyA1IEBc4ECG4AigM6A0oEBxIECHNIADgBFAHUI +74A6ogXxBgOBAXKBAXjaAA4HZQPiA+MD5APlA+YD5wPoAZcD6gUACPUD7AEaA+4D7wPwBvwI+oDUgQEj +gQIfgCKAzoDSgQHEgQIgVldpbmRvd9IADgA2ADcI+4AE0gAOAEUAdQkAgDqkBV0E+Ab/BcmBAUKBASKB +AiOBAWXaAA4D4gPjB6sD5AesA+UD5gPnA+gD6gEaA+wAzAEaAMwD7gPvA/AFAIDUgCIJgCIJgM6A0oEB +I15fTlNXaW5kb3dzTWVuddoADgdlA+ID4wPkA+UD5gPnA+gBlwPqBNAE0wPsARoD7gPvA/AG/AkXgNSB +AROBAiaAIoDOgNKBAcSBAidUSGVscNIADgBFAHUJG4A6oQTIgQESW19OU01haW5NZW510gAOADIAMwkg +gAWBAivSAA4ARQIaCSOAfK8QaQb8AB8AVQb8BQAF+QdOBHAD8QCwAHoG/AcwBwsHYwS+BvwE0AAfBJAF +AARQBvwEkAdDBfkEcACwBQAG+wRwBFAAiAQbBL4EGwb+B0UAhwB5AIcEkAddAFUHOAD8AP0EkAPxBHAH +QwcGBJAEGwQtBHAEcAQ/A/EEGwS+BHAEcARwAIcAhwB4BBsEGwQbBzoHQwcsBJAEcAQ/BBsAiASQAEgA +dwSQBHAEkAQbAIgAdwRwAFUHEQAfAB8AHwPxBHAD8QS+BJAG/ASQBBsFAAQbAFUG/IEBxIACgA2BAcSB +ASOBAXOBAeiA9IDLgBaAq4EBxIEBz4EB8oECHoEBDYEBxIEBE4ACgP6BASOA6YEBxID+gQIHgQFzgPSA +FoEBI4EBw4D0gOmATIDZgQENgNmBAiWBAfmAEoCngBKA/oECE4ANgQIPgCCAN4D+gMuA9IECB4EB34D+ +gNmA34D0gPSA5IDLgNmBAQ2A9ID0gPSAEoASgKCA2YDZgNmBAf6BAgeBAgSA/oD0gOSA2YBMgP6ACIAQ +gP6A9ID+gNmATIAQgPSADYECGoACgAKAAoDLgPSAy4EBDYD+gQHEgP6A2YEBI4DZgA2BAcTSAA4ARQIa +CY+AfK8Qagb7BvwG/gB3BfEG/wcBBSUFfgD9A0cHBgRwBC0FAAUKBwsEyABIBw4FXQcQBxEHEgcTBgMH +FQD8BPgEGwW7BEgBxgccBWsFkQTQA/EAsAM1Ba0AkgRQAHkEPwELAW4EiAcsBy0F4wAfBVAEkAcwBhAE +qAQlBDcD3wQTBzgHNwRoBzoAygCcAxgHPgc/B0AEvgdCB0MHRAdFBJsE6gHWB0kAVQCHBNsEeQdOB08B +vwCIBFsAeAX5BRcGHwdXBZ8HWQXWBLYFNAddB14FQQXJAHoHYQdjgQHDgQHEgQIlgBCBAXKBAiOBAeuB +ATCBAU2AN4CtgQHfgPSA34EBI4EBJ4EB8oEBEoAIgQHkgQFCgQIYgQIagQHvgQINgQF4gQH3gCCBASKA +2YEBYIDogJmBAdqBAUeBAVOBAROAy4AWgKmBAVyARoDpgKeA5IAtgDmA/YECBIECC4EBbYACgQE+gP6B +Ac+BAXyBAQeA3oDjgMqA2IECD4ECAoDzgQH+gBiAQoCigQHcgQHWgQHJgQENgQIJgQIHgQHngQH5gQED +gQEdgFCBAfCADYASgQEYgPiBAeiBAcyAm4BMgO6AoIEBc4EBK4EBgYECKoEBWIEB+IEBaYEBDIEBNYEC +E4EB44EBOYEBZYCrgQHXgQIe0gAOAEUCGgn8gHyvEGoJ/QdwCf8KAAoBCgIKAwoECgUKBgoHCggKCQoK +CgsKDAoNCg4I9QoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwoo +CikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpG +CkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVARgClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpk +CmUKZoECL4EB3YECMIECMYECMoECM4ECNIECNYECNoECN4ECOIECOYECOoECO4ECPIECPYECPoECP4EC +H4ECQIECQYECQoECQ4ECRIECRYECRoECR4ECSIECSYECSoECS4ECTIECTYECToECT4ECUIECUYECUoEC +U4ECVIECVYECVoECV4ECWIECWYECWoECW4ECXIECXYECXoECX4ECYIECYYECYoECY4ECZIECZYECZoEC +Z4ECaIECaYECaoECa4ECbIECbYECboECb4ECcIECcYECcoECc4ECdIECdYECdoECd4ECeIECeYECeoEC +e4ECfIECfYECfoECf4ECgIECgYECgoECg4EChIDvgQKFgQKGgQKHgQKIgQKJgQKKgQKLgQKMgQKNgQKO +gQKPgQKQgQKRgQKSgQKTgQKUgQKVXxAQTWVudSBJdGVtIChGaWxlKV8QEE1lbnUgSXRlbSAoSGVscCla +U3BsaXQgVmlld18QGE1lbnUgSXRlbSAoU2hvdyBUb29sYmFyKVtTZXBhcmF0b3ItOF8QD01lbnUgKFNl +cnZpY2VzKV8QEE1lbnUgSXRlbSAoVW5kbylvEBEATQBlAG4AdQAgAEkAdABlAG0AIAAoAEYAaQBuAGQg +JgApXFRhYmxlIENvbHVtbl8QEVNlYXJjaCBGaWVsZCBDZWxsXxATTWVudSBJdGVtIChHaXRUZXN0KVtN +ZW51IChFZGl0KV8QEk1lbnUgKE9wZW4gUmVjZW50KV1NZW51IChXaW5kb3cpXxAnTWVudSBJdGVtIChD +aGVjayBTcGVsbGluZyBXaGlsZSBUeXBpbmcpXxAQTWVudSBJdGVtIChFZGl0KV8QGE1lbnUgSXRlbSAo +R2l0VGVzdCBIZWxwKW8QGABNAGUAbgB1ACAASQB0AGUAbQAgACgAUAByAGUAZgBlAHIAZQBuAGMAZQBz +ICYAKV8QFE1lbnUgSXRlbSAoTWluaW1pemUpXxAWTWVudSBJdGVtIChTaG93IEZvbnRzKV8QEE1lbnUg +SXRlbSAoVmlldylbU2VwYXJhdG9yLTJfEBdNZW51IEl0ZW0gKFNtYXJ0IExpbmtzKW8QHgBNAGUAbgB1 +ACAASQB0AGUAbQAgACgAQwB1AHMAdABvAG0AaQB6AGUAIABUAG8AbwBsAGIAYQByICYAKVtTZXBhcmF0 +b3ItNl5UYWJsZSBDb2x1bW4tMV8QEE1lbnUgSXRlbSAoWm9vbSlbTWVudSAoRmlsZSlfEBFNZW51IEl0 +ZW0gKFBhc3RlKV8QF01lbnUgSXRlbSAoU2hvdyBDb2xvcnMpXxATVmVydGljYWwgU2Nyb2xsZXItMV8Q +G01lbnUgSXRlbSAoUmV2ZXJ0IHRvIFNhdmVkKV8QGk1lbnUgSXRlbSAoQ2hlY2sgU3BlbGxpbmcpbxAX +AE0AZQBuAHUAIABJAHQAZQBtACAAKABQAGEAZwBlACAAUwBlAHQAdQBwICYAKVtNZW51IChIZWxwKVtN +ZW51IChGaW5kKVpUYWJsZSBWaWV3XxApVGV4dCBGaWVsZCBDZWxsIChTaG93aW5nIGJyYW5jaCAnbWFz +dGVyJylfEBdNZW51IEl0ZW0gKEhpZGUgT3RoZXJzKV8QE0hvcml6b250YWwgU2Nyb2xsZXJdTWVudSAo +Rm9ybWF0KV8QJVN0YXRpYyBUZXh0IChTaG93aW5nIGJyYW5jaCAnbWFzdGVyJyldTWVudSAoU3BlZWNo +KV8QHVRleHQgRmllbGQgQ2VsbCAoVGV4dCBDZWxsKS0xXxAbVGV4dCBGaWVsZCBDZWxsIChUZXh0IENl +bGwpXxAYTWVudSBJdGVtIChIaWRlIEdpdFRlc3QpXxAZTWVudSBJdGVtIChTdWJzdGl0dXRpb25zKV8Q +GE1lbnUgSXRlbSAoU21hcnQgUXVvdGVzKV8QHU1lbnUgSXRlbSAoSnVtcCB0byBTZWxlY3Rpb24pXEZp +bGUncyBPd25lcl8QFE1lbnUgSXRlbSAoU2hvdyBBbGwpXk1lbnUgKEdpdFRlc3QpXxAXTWVudSBJdGVt +IChPcGVuIFJlY2VudClfEBZNZW51IEl0ZW0gKFNlbGVjdCBBbGwpXxAQTWVudSBJdGVtIChSZWRvKV8Q +Fk1lbnUgSXRlbSAoQ2xlYXIgTWVudSlfEBpNZW51IEl0ZW0gKFN0YXJ0IFNwZWFraW5nKV8QIk1lbnUg +SXRlbSAoVXNlIFNlbGVjdGlvbiBmb3IgRmluZClvEBIATQBlAG4AdQAgAEkAdABlAG0AIAAoAFAAcgBp +AG4AdCAmAClfEBJNZW51IEl0ZW0gKFNwZWVjaClfECdNZW51IEl0ZW0gKENoZWNrIEdyYW1tYXIgV2l0 +aCBTcGVsbGluZylfEBJNZW51IEl0ZW0gKERlbGV0ZSlfECBNZW51IEl0ZW0gKFNwZWxsaW5nIGFuZCBH +cmFtbWFyKV8QEVRhYmxlIEhlYWRlciBWaWV3XxARVmVydGljYWwgU2Nyb2xsZXJfEBdUZXh0IEZpZWxk +IENlbGwgKExhYmVsKVlTZXBhcmF0b3JbU2VwYXJhdG9yLTFfEA9NZW51IEl0ZW0gKE5ldylfEBtNZW51 +IChTcGVsbGluZyBhbmQgR3JhbW1hcilfEBxNZW51IEl0ZW0gKFNtYXJ0IENvcHkvUGFzdGUpXxAUTWVu +dSAoU3Vic3RpdHV0aW9ucylbU2VwYXJhdG9yLTNfEBBNZW51IEl0ZW0gKEZpbmQpXxAZTWVudSBJdGVt +IChTdG9wIFNwZWFraW5nKV8QEE1lbnUgSXRlbSAoU2F2ZSlZVGV4dCBWaWV3W1NlcGFyYXRvci00XENv +bnRlbnQgVmlld1tTY3JvbGwgVmlld18QGE1lbnUgSXRlbSAoUXVpdCBHaXRUZXN0KV8QD01lbnUgSXRl +bSAoQ3V0KV8QFE1lbnUgSXRlbSAoU2VydmljZXMpXxATTWVudSBJdGVtIChPcGVuLi4uKV8QFUhvcml6 +b250YWwgU2Nyb2xsZXItMV1TY3JvbGwgVmlldy0xXxATU3RhdGljIFRleHQgKExhYmVsKVtNZW51IChW +aWV3KV8QEE1lbnUgSXRlbSAoQ29weSlfEBFDb21taXRzQ29udHJvbGxlcltBcHBsaWNhdGlvbl8QGU1l +bnUgSXRlbSAoRmluZCBQcmV2aW91cylbU2VwYXJhdG9yLTdfEBVNZW51IEl0ZW0gKEZpbmQgTmV4dClv +EBoATQBlAG4AdQAgAEkAdABlAG0AIAAoAFMAaABvAHcAIABTAHAAZQBsAGwAaQBuAGcgJgApXxAZTWVu +dSBJdGVtIChBYm91dCBHaXRUZXN0KV8QEk1lbnUgSXRlbSAoRm9ybWF0KVtTZXBhcmF0b3ItNV8QEU1l +bnUgSXRlbSAoQ2xvc2UpXxAeTWVudSBJdGVtIChCcmluZyBBbGwgdG8gRnJvbnQpXFNlYXJjaCBGaWVs +ZG8QFABNAGUAbgB1ACAASQB0AGUAbQAgACgAUwBhAHYAZQAgAEEAcyAmAClfEBJNZW51IEl0ZW0gKFdp +bmRvdynSAA4ARQIaCtCAfKDSAA4ARQIaCtOAfKDSAA4ARQIaCtaAfK8QlwPQBvsG/AB3Bv4G/wXxBwED +uQUlBX4A/QPKA8sDsAOyA0cDsQO6BwYDvwQtBHADwgUAA9cDzQPABQoDuAcLBMgDrwPIAEgHDgVdBxAH +EQcSA64D1QcTBgMHFQPTAPwE+AQbBbsESAPFA9EBxgccBWsFkQPPBNAD8QCwA7MDNQCSBa0EUAPEA8MA +eQQ/AQsBbgSIBeMHLActAB8EkAVQBzAEJQYQBKgDyQO2BDcD2gPGA98EEwc3BzgEaAc6AMoD0gCcAxgH +Pgc/B0AEvgdCA70D1AdDA8wHRAdFBJsE6gPHAdYHSQBVAIcE2wR5B04HTwG/AIgDtQUXAHgF+QRbA7cG +HwdXBZ8DwQdZBdYEtgU0B10DtAO8A9YDvgO7B14D2QVBA84D2AXJAHoHYQdjgQFxgQHDgQHEgBCBAiWB +AiOBAXKBAeuBAQuBATCBAU2AN4EBV4EBW4DdgOeArYDigQERgQHfgQEqgN+A9IEBOIEBI4EBqoEBZIEB +L4EBJ4EBBoEB8oEBEoDXgQFQgAiBAeSBAUKBAhiBAhqBAe+AyYEBk4ECDYEBeIEB94EBgIAggQEigNmB +AWCA6IEBRoEBd4CZgQHagQFHgQFTgQFsgQETgMuAFoDtgKmARoEBXIDpgQFBgQE9gKeA5IAtgDmA/YEB +bYECBIECC4ACgP6BAT6BAc+A3oEBfIEBB4EBUoD8gOOBAbyBAUuAyoDYgQICgQIPgPOBAf6AGIEBe4BC +gKKBAdyBAdaBAcmBAQ2BAgmBASGBAY6BAgeBAV+BAeeBAfmBAQOBAR2BAUyAUIEB8IANgBKBARiA+IEB +6IEBzICbgEyA94EBK4CggQFzgO6BAQKBAYGBAiqBAViBATSBAfiBAWmBAQyBATWBAhOA8oEBHIEBl4EB +JoEBF4EB44EBtIEBOYEBaIEBrYEBZYCrgQHXgQIe0gAOAEUCGgtwgHyvEJcLcQtyC3MLdAt1C3YLdwt4 +C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguTC5QLlQuW +C5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAuxC7ILswu0 +C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvGC8cLyAvJC8oLywvMC80LzgvPC9AL0QvS +C9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvw +C/EL8gvzC/QL9Qv2C/cL+Av5C/oL+wv8C/0L/gv/DAAMAQwCDAMMBAwFDAYMB4ECmoECm4ECnIECnYEC +noECn4ECoIECoYECooECo4ECpIECpYECpoECp4ECqIECqYECqoECq4ECrIECrYECroECr4ECsIECsYEC +soECs4ECtIECtYECtoECt4ECuIECuYECuoECu4ECvIECvYECvoECv4ECwIECwYECwoECw4ECxIECxYEC +xoECx4ECyIECyYECyoECy4ECzIECzYECzoECz4EC0IEC0YEC0oEC04EC1IEC1YEC1oEC14EC2IEC2YEC +2oEC24EC3IEC3YEC3oEC34EC4IEC4YEC4oEC44EC5IEC5YEC5oEC54EC6IEC6YEC6oEC64EC7IEC7YEC +7oEC74EC8IEC8YEC8oEC84EC9IEC9YEC9oEC94EC+IEC+YEC+oEC+4EC/IEC/YEC/oEC/4EDAIEDAYED +AoEDA4EDBIEDBYEDBoEDB4EDCIEDCYEDCoEDC4EDDIEDDYEDDoEDD4EDEIEDEYEDEoEDE4EDFIEDFYED +FoEDF4EDGIEDGYEDGoEDG4EDHIEDHYEDHoEDH4EDIIEDIYEDIoEDI4EDJIEDJYEDJoEDJ4EDKIEDKYED +KoEDK4EDLIEDLYEDLoEDL4EDMBEBVhBTEB0RAbQQZxDzEQFVEIIQvBCeEJoRAcUQyRCSEH8RAVkRAgkR +AQEQehA4ELUQfRCpEMEQ8hEB8hD5ELQQvxCyEKMQbxBWENAQFRCBEPYRAVARAVIQkBDKEQHOENgRAVQQ +nBEBjBEBxhD0EFEQqxEBURC+EQFXEQHpEHAQvRBNEMsQahCfEQHEEM4RAf8RAdYQkREBBxD3EJkRAf4Q +4REBxxEByBCGEJsQ1hDbEQINEDkQlhB8EH4QrBCtEFcQmBDjEQIMEM8QoRBOENQQ4BCkELgRAdcQsxEB +1REB9BBKEE8QUhC5ENoQ+BEBjxDXELAQjxCoEOQQxxEB5xCVEQHAEIgQoBCDEEgRAegRAeYQrxCdEQHz +EQFTEM0RAQIRAYsT//////////0QohCOEK4QpxC7EDoRAQYQwxDTEQHwEMAQixDEEQILEEkQyBEB/RD1 +EQIIEFAQ8dIADgBFAHUMn4A6oNIADgBFAhoMooB8oNIADgBFAhoMpYB8oNIAOgA7DKcMqKIMqAA/Xk5T +SUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8ARABSAFQAZgbUBtoHJQcsBzMHQQdTB28HfQeJB5UHoweu +B7wH2AfmB/kICwglCC8IPAg+CEEIRAhHCEoITAhPCFEIVAhXCFoIXQhfCGEIZAhnCGoIbQh2CIIIhAiG +CI8ImQibCKkIsgi7CMYIzQjfCOgI8Qj6CP8JDgkhCSoJNQk3CToJPAltCXoJhwmVCZ8JrQm6CcQJ1gnq +CfQKAAoCCgQKBgoICg0KDwoRChMKFQoXChkKGwo0CjkKQgpLCk0KUgpvCoEKjAqVCqEKrQqvCrEKswq2 +CrgKugq8CsUKxwrQCtIK1ArWCtgK9Qr9Cv8LAQsDCwULCAsKCwwLFQsXCxwLHgsgC1kLZQtuC3sLjgub +C6cLtQu3C7kLuwu9C78LwQvDC9YL2AvaC9wL3gvgC+kL6wv2C/gL+gv8C/4MAAwpDDMMPQxHDEkMSwxN +DE8MUQxUDFYMWAxaDFwMZQxnDGoMbAy/DOEM6wz4DQwNIQ07DVcNcg18DYgNpw22DcINxA3GDcgN0Q3T +DdUN1g3YDeEN6g3sDe0N7w3xDfMN9Q3+DgkOJg4yDjQONg44DjoOPA4+DmcOaQ5rDm0Obw5xDnMOdQ53 +DoEOig6TDqcOrg66DtMO1Q7XDtkO2w7dDvQO/Q8GDxQPHQ8fDyQPJg8oD1EPYA9tD3UPgA+PD5oPpQ+y +D7MPtQ+3D8APwg/ED80P1g/XD9kP9hACEA0QFxAkEDAQNRA3EDkQOxA9ED8QQBBREFgQXxBoEGoQcxB1 +EHgQhRCOEJMQmhCnELQQvBC+EMoQ0xDYEOAQ9REBEQ8RERETERURFxEZESARMhE/EUERRBFNEVgRbBF+ +EYsRkhGzEcERxhHIEcoRzBHOEdAR0xHVEd8R8BHyEfsR/RIAEhUSFxIZEhsSHRI2EkMSRRJREmYSaBJq +EmwSbhKBEooSkxKcEqESrxLYEtkS2xLdEuYS6BLpEusTCBMKEwwTDhMQExITMxM1EzcTORM7Ez0TPxNI +E08TXhNmE3MTdRN4E40TjxORE5MTlROfE6wTrhOzE7wTxxPRE+kT8hP7FAYULxQ4FEEUTBRWFFgUWhRc +FF4UYBRiFGQUbRR2FI8UnBSlFLAUuxTkFOYU6BTqFOwU7hTwFPIU9BT9FRUVHhUgFSMVJRU7FUYVTxVY +FWUVlhWkFaYVqBWqFawVrhWwFbIVtBW2FbgVuhXDFcUVzBXOFdAV0hYDFgwWDhYQFhIWFBYWFhgWGhYc +Fh4WIBYpFisWLhYwFmEWcxZ9FooWkxaeFqAWohakFqYWqRarFq0WrxaxFrMWtRbAFtUW3xbqFvwW/hcA +FwkXCxcgFzMXQRdLF00XTxdRF1MXZBdxF3MXdRd3F3kXgheEGeYZ8xn7Gf0aAhoEGgYaCxoNGg8aIhov +GjoaRhpIGkoaUxpVGpgamhqcGp4aoBqiGqQaphqoGqoarBquGrAashq0GrYauBq6GrwavhrAGsIaxBrG +GsgayhrMGs4a0BrSGtQa1hrYGuEa7BruGvcbABsFGw8bGBsaGyMbLBsuGzcbQBtCG0sbVBtWG18baBtq +G3MbfBt+G4cbkBuSG5sbpBumG68buBu6G8MbzBvOG9cb4BviG+sb9Bv2G/8cCBwKHBMcHBweHCccMBwy +HDscRBxGHE8cWBxaHGMcbBxuHHccgByCHIsclByWHJ8cqByqHLMcvBy+HMcc0BzSHNsc5BzmHO8c+Bz6 +HQMdDB0OHRcdIB0iHSsdNB02HT8dSB1KHVMdXB1eHWcdcB1yHXsdhB2JHZIdlx2oHaodsx21Hbcdvh3H +Hcwd2R3iHeseBx4cHiUeJx4qHiweNR46HkMeSB5pHnEeix6eHrUeyh7dHt8e4h7kHuYe6B7qHuwe7h77 +Hv0fAh8EHwYfCx8NHw8fJB8mHygfKh8sH0ofXx9hH2MfZR9nH3sfiB+KH48fkR+TH5gfmh+cH6gftR+7 +H70fxB/NH9If6R/2IAEgCiAVIBwgMyBAIEogVyBZIFsgYyBsIHEgliCYIJognCCeIKAgoiCkIK0gxSDy +IPQg9iD4IPog/CD+IQAhCSESIS0hRiFeIWchcCF8IZ0hnyGhIaMhpSGoIakhqyGtIcMh5CHpIesh7SHv +IfEh8yH4IfoiACIVIhciGSIbIh0iKiIzIj4iSiJrIm0ibyJxInMidiJ3InkieyKTIrQitiK4IroivCK+ +IsAi2iL7Iv0i/yMBIwMjBCMGIwgjIiNXI2wjfyOTI6gjuyPRI9Yj2CPaI9wj3iPgI+Uj5iPoI+oj7CPu +I/YkCyQNJA8kESQTJCkkWiRvJH4kkCSiJLAksiS3JLkkuyS9JL8kwSTEJMYkyyTSJOgk8ST6JQclPCVi +JWQlZiVoJWolbCVuJXAldiV/JYElhCWGJZMllSWaJZwlniWjJaUlpyW1JeEl6CXxJfgmDiYkJi0mOCZM +JlUmYiZwJnsmhCaLJqQmrybMJtUm2ibtJvYm/ScKJxAnGScbJ3gneid8J34ngCeCJ4QnhieIJ4onjSeQ +J5MnlieZJ5wnnyeiJ6UnqCerJ64nsSe0J7cnuie9J8AnwyfGJ8knzCfPJ9In1SfYJ9sn3ifhJ+Qn5yfq +J+0n8CfzJ/YoAygMKBQoFigYKBooPyhHKFsoZih0KH4oiyiSKJgomiicKKEooyioKKoorCiuKLAovSjJ +KMwozyjSKOso7Sj6KQkpCykNKQ8pFykpKTIpNylKKVcpWSlbKV0pcCl5KX4piSmjKawpsynLKdop5ynp +Kesp7SoOKhAqEioUKhYqGCoaKicqKiotKjAqPSo/KkYqUypVKlcqWSp6KnwqfiqAKoIqhCqGKpcqmiqd +KqAqoyquKsYq0yrVKtcq2Sr2Kvgq+ir8Kv4rACsCKw8rEisVKxgrJys2K0MrRStHK0kraitsK24rcCty +K3QrdiuDK4YriSuMK5grmiuyK8Mr0SvTK9Ur1yvZK+Ir5CvmK/wsBSwOLBUsLCw5LDssPSw/LGAsYixk +LGYsaCxqLGwseSx8LH8sgiyJLJEsniygLKIspCzFLMcsySzLLM0szyzRLNUs1yzcLO0s7yzxLPMs9i0X +LRktGy0eLSAtIi0kLTUtOC07LT4tQS1OLVAtVi1jLWUtaC1rLYgtii2NLY8tkS2TLZUtoy2xLb4twC3D +LcYt5y3pLewt7y3xLfMt9S36LfwuAi4PLhEuFC4XLjguOi49LkAuQi5ELkcuVC5XLlouXS56Lnwuji6b +Lp0uoC6jLsQuxi7JLswuzi7QLtMu4C7jLuYu6S72LvgvAi8TLxUvFy8aLx0vPi9AL0MvRi9IL0ovTC9Z +L1svZi93L3kvey9+L4Evoi+kL6cvqi+sL64vsC+1L7cvwy/QL9Iv1S/YL/kv+y/+MAAwAjAEMAcwGDAb +MB4wITAkMCkwNjBDMEUwSDBLMGwwbjBxMHMwdTB3MHowmDC5MMYwyDDLMM4w7zDxMPQw9zD5MPsw/TEC +MQQxCjEXMRkxHDEfMUAxQjFFMUgxSjFMMU4xUzFVMVsxbDFuMXAxczF2MZMxlTGYMZoxnDGeMaAxrjHO +Mdsx3THgMeMyBDIGMgkyDDIOMhAyEjIYMhoyKDI5MjsyPTJAMkMyZDJmMmkyazJtMm8ycTJ6MpMyoDKi +MqUyqDLJMssyzjLRMtMy1TLYMuEy4zL5MwYzCDMLMw4zLzMxMzQzNzM5MzszPjNNM08zXjNvM3EzczN1 +M3czhDOGM4kzizOwM7IztTO4M7ozvDO+M8kzyzPcM94z4DPiM+Uz7DP5M/sz/jQBNCI0JDQnNCo0LDQu +NDA0RzRJNFg0ZTRnNGo0bDSRNJM0ljSZNJs0nTSfNK00rzTANMI0xDTHNMo06zTtNPA09TT4NPo0/DT+ +NQo1IzUwNTI1NTU4NVk1WzVeNWE1YzVlNWc1bTVvNXY1gzWFNYg1izWsNa41sTWzNbU1tzW6Nc814TXu +NfA18zX1Nho2HDYfNiI2JDYmNig2MjY0NkE2QzZGNkk2ajZsNm82cjZ0NnY2eDaMNo42rja7Nr02wDbD +NuQ25jbpNuw27jbwNvM3ADcDNwY3CTcWNxg3Ljc7Nz03QDdDN2Q3ZjdpN2s3bTdvN3I3mTe7N8g3yjfN +N9A38TfzN/Y3+Tf7N/03/zgKOAw4FzgoOCo4LDgvODI4Vzh0OIs4nTioOLc43Dj3ORA5ETkUORU5GDkZ +ORw5HTkeOR85KDkqOTk5PDk/OUI5RTlIOUs5TjlSOVc5WzljOWs5cjl+OYM5hjmPOZQ5nTmmObo5zznc +OeQ6AToLOhU6NDo3Ojk6PDo/OkI6RTpoOnU6ijqTOpo6sjrPOtI61TrYOts63TrgOv07AzsZOzo7RDtH +O0o7TTtQO1I7VTtYO3M7hzuUO5Y7rTuwO7M7tju5O7w7vzvCO8U7yDvLO8475TvoO+s77jvxO/Q79zv6 +O/08ADwDPAY8JTxDPFw8hTyjPLc81DzxPQw9NT1RPVI9Uz1wPXM9dj15PXw9fj2BPaI9vD3dPeA94z3m +Pek96z3uPfE+ID43PlA+XT5fPmw+bz5yPnU+eD57Pn4+iz6OPpE+lD6XPpo+nT6wPsw+7T7wPvM+9j75 +Pvs+/j8BPx4/KD86P0c/ST9UP1c/Wj9dP2A/Yz9uP3E/dD93P3o/fD+QP54/uD/dP/M/9j/5P/w//0AC +QARAB0AKQChAM0BAQEJATUBQQFNAVkBZQFxAZ0BqQG1AcEBzQHZAjECRQJpAnEFxQXRBd0F5QXxBf0GC +QYVBiEGLQY1Bj0GSQZRBlkGZQZxBn0GiQaRBp0GqQa1BsEGzQbZBuUG8Qb5BwUHDQcZByEHKQc1B0EHT +QdZB2EHaQdxB3kHhQeNB5UHnQelB60HtQfBB80H2QfhB+0H+QgBCA0IGQghCCkIMQg9CEkIUQhdCGUIb +Qh1CIEIjQiZCKUIsQi9CMkI1QjhCO0I9QkBCQkJEQkdCSUJMQk9CUUJTQlZCWEJbQl1CYEJjQmZCaUJs +Qm9CckJ1QnhCe0J+QoFCg0KGQq9CuUK7Qr1CwELCQsRCxkLJQsxC3ULgQuNC5kLpQu5C/UMGQwhDEUMT +QypDLUMwQzNDNkM5QzxDP0NCQ0VDSENKQ2tDbUNwQ3NDdUN3Q3lDfUN/Q6BDokOlQ6hDqkOsQ65DtkO4 +Q+FD40PlQ+hD6kPsQ+5D8EPzQ/9ECEQKRBNEFUQYRBpEM0Q8REFEakR4RIVEh0SJRIpEjESNRI9EkUST +RLREtkS5RLxEvkTARMJE00TVRPJE9ET3RPlE+0T9RP9FEUU6RTxFPkU/RUFFQkVERUZFSEVRRVpFXEVr +RW5FcUV0RXdFekV9RYBFqUWrRa1FsEWyRbRFtkW5RbxFxEXNRc9F5kXpRexF70XyRfVF+EX6Rf1GAEYD +RgZGL0YxRjNGNEY2RjdGOUY7Rj1GXkZgRmNGZkZoRmpGbEaFRodGsEayRrRGtUa3RrhGuka8Rr5G50bp +RuxG70bxRvNG9Ub3RvpHA0cURxdHGkcdRyBHKUcrRzRHNkc3R0lHckd0R3ZHd0d5R3pHfEd+R4BHqUer +R61HrkewR7FHs0e1R7dHxEftR+9H8Uf0R/ZH+Ef6R/1IAEgFSA5IEEgZSBtINkg5SDxIP0hBSERIR0hJ +SExIT0hSSFVIWEhbSIRIhkiISIlIi0iMSI5IkEiSSLtIvUi/SMBIwkjDSMVIx0jJSPJI9Ej2SPlI+0j9 +SP9JAUkESQlJEkkUSR1JH0kqSS1JMEkzSTVJOElhSWNJZklpSWtJbUlvSXFJdEmLSZRJlkmfSaJJpUmo +SatJzEnOSdFJ00nVSddJ2kn4SiFKI0omSilKK0otSi9KMUo0SkJKT0pSSlVKWEphSmNKakptSnBKc0qU +SpZKmUqcSp5KoEqjSrZK10rZStxK30rhSuNK5krzSxRLFksZSxxLHksgSyNLL0tYS1pLXEtfS2FLY0tl +S2dLaktxS3pLfEuBS4NLhkuvS7FLs0u2S7hLuku8S79LwkvJS9JL1EvdS99L5EvnS+lMCkwMTA9MEkwU +TBZMGEwjTExMTkxRTFRMVkxYTFpMXUxgTGlMa0xwTHNMdkyfTKFMpEynTKlMq0ytTLBMs0y6TMNMxUzO +TNBM2UzcTN9M4kzlTQ5NEE0STRNNFU0WTRhNGk0dTSxNVU1XTVpNXU1fTWFNY01mTWlNbk13TXlNfE1/ +TYtNlE2WTZlNok2kTnlOfE5+ToBOg06GTolOjE6OTpBOkk6UTpdOmk6dTqBOo06mTqlOq06tTrBOsk61 +TrdOuk69Tr9OwU7ETsdOyU7LTs1Oz07STtRO107aTtxO3k7gTuJO5U7nTupO7E7uTvBO8k70TvdO+k78 +Tv5PAE8CTwRPBk8ITwpPDU8PTxFPE08VTxdPGU8bTx1PH08iTyVPKE8qTyxPLk8wTzJPNE82TzhPOk88 +Tz5PQE9CT0RPRk9IT0tPTU9PT1FPU09VT1dPWk9cT19PYU9jT2ZPaE9qT21Pdk94UE9QUlBVUFhQWlBd +UGBQY1BmUGlQa1BtUHBQclB0UHdQelB9UIBQglCFUIhQi1COUJFQlFCXUJpQnFCfUKFQpFCmUKhQq1Cu +ULFQtFC2ULhQulC9UL9QwVDDUMVQx1DJUMtQzlDRUNRQ1lDZUNtQ3lDhUORQ5lDoUOpQ7FDvUPJQ9FD3 +UPlQ+1D9UQBRA1EGUQlRDFEPURJRFVEYURtRHVEgUSJRJFEnUSlRLFEvUTFRM1E1UTdROlE9UUBRQ1FG +UUlRTFFPUVJRVVFYUVtRXlFgUWNRZlFvUXFSSFJLUk5SUVJUUldSWlJdUmBSY1JmUmlSbFJvUnJSdVJ4 +UntSflKBUoRSh1KKUo1SkFKTUpZSmVKcUp9SolKlUqhSq1KuUrFStFK3UrpSvVLAUsNSxlLJUsxSz1LS +UtVS2FLbUt5S4VLkUudS6lLtUvBS81L2UvlS/FL/UwJTBVMIUwtTDlMRUxRTF1MaUx1TIFMjUyZTKVMs +Uy9TMlM1UzhTO1M+U0FTRFNHU0pTTVNQU1JTVVNYU1tTXlNhU2RTZ1NqU21TcFNzU3ZTeVN8U39TglOF +U5hTq1O2U9FT3VPvVAJUJ1Q0VEhUXlRqVH9UjVS3VMpU5VUYVS9VSFVbVWdVgVXAVcxV21XuVfpWDlYo +Vj5WXFZ5VqpWtlbCVs1W+VcTVylXN1dfV21XjVerV8ZX4lf9WB1YKlhBWFBYaliDWJZYr1jMWPFZGFkt +WVdZbFmPWaNZt1nRWdtZ51n5WhdaNlpNWllabFqIWptapVqxWr5aylrlWvdbDlskWzxbSltgW2xbf1uT +W59bu1vHW99cFlwyXEdcU1xnXIhclVzAXNVc3lzgXOFc6lzsXO1c9lz4XileLF4vXjJeNF43XjpePV5A +XkNeRl5JXkteTl5RXlNeVV5XXlleXF5fXmJeZF5mXmlebF5vXnJedV54Xntefl6BXoNehl6IXotejl6R +XpRel16ZXpxen16iXqVeqF6qXq1er16yXrRet166Xrxev17CXsVeyF7LXs1ez17RXtNe1V7YXtpe3V7g +XuJe5F7mXuhe6l7tXvBe8171Xvde+l79Xv9fAl8FXwhfCl8MXw9fEl8UXxZfGV8cXx5fIV8jXyZfKF8q +Xy1fMF8zXzZfOV88Xz9fQl9FX0hfS19OX1FfVF9WX1lfW19dX2BfYl9lX2hfal9sX25fcV9zX3ZfeF97 +X35fgV+EX4dfil+NX5Bfk1+WX5hfm1+eX6FfpF+nX6pfrV+wX7Nftl+4X7tfvl/HX8lg+mD9YQBhA2EG +YQlhDGEPYRJhFWEYYRthHmEhYSRhJ2EqYS1hMGEzYTZhOWE8YT9hQmFFYUhhS2FOYVFhVGFXYVphXWFg +YWNhZmFpYWxhb2FyYXVheGF7YX5hgWGEYYdhimGNYZBhk2GWYZlhnGGfYaJhpWGoYathrmGxYbRht2G6 +Yb1hwGHDYcZhyWHMYc9h0mHVYdhh22HeYeFh5GHnYeph7WHwYfNh9mH5Yfxh/2ICYgViCGILYg5iEWIU +YhdiGmIdYiBiI2ImYiliLGIvYjJiNWI4YjtiPmJBYkRiR2JKYk1iUGJTYlZiWWJcYl9iYmJlYmhia2Ju +YnFidGJ3YnpifWKAYoNihmKJYoxij2KSYpVimGKbYp5ioWKkYqdiqmKtYrBis2K2YrlivGK/YsJixGLG +Ysliy2LNYtBi0mLUYtZi2GLbYt1i32LhYuRi52LqYuxi7mLwYvJi9GL2Yvhi+2L9Yv9jAWMDYwVjB2MJ +YwtjDWMPYxFjFGMXYxljG2MeYyBjI2MlYyhjK2MtYy9jMWM0YzZjOWM8Yz5jQGNCY0RjRmNIY0tjTWNQ +Y1NjVWNYY1pjXGNfY2FjZGNnY2lja2NtY29jcmN0Y3ZjeGN6Y3xjfmOAY4JjhGOHY4lji2ONY49jkWOT +Y5VjmGOaY51joGOiY6RjpmOoY6pjrGOvY7Fjs2O1Y7djuWO7Y75jwGPDY8Vjx2PJY8tjzmPRY9Nj1WPY +Y9tj3WPgY+Nj7GPuY/Bj8mP0Y/Zj+GP7Y/1j/2QCZARkBmQIZAtkDWQPZBJkFGQXZBlkG2QkZCZkJ2Qw +ZDJkM2Q8ZD5kP2RIZE0AAAAAAAACAgAAAAAAAAypAAAAAAAAAAAAAAAAAABkXA + + + diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib deleted file mode 100644 index cb43908..0000000 --- a/English.lproj/MainMenu.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 629 - IBLastKnownRelativeProjectPath - ../../GitTest.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 2 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib index 296c9ee5ace309ace85ebf404cc362cb740861a0..4f629785e787d0e75bba670d9046bcd3a3d284c1 100644 GIT binary patch literal 32206 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

oULFh z*{Zghtzn~WtgUPRXdBo@wuxJw;`Kq(=6I_ zn_;u;z*07Dm>p?H+i`Y+on)ul88+9>vGeRgyTmTHEA1M)&Th2%c8lF^ciKI6pFLm? z+oQJ7p0sD|d3(`bwpZ*mTV!w9JNBL}wh!$S`^-MKCHA#_3uU1^RD>!J1=XPz#6TU0 zgZj`A8bdrJKq4eT8)y$5AsM`4@|+{=paW~s`~O{2vgCZ#ZqxE_Qg!h!T~r4 zhu}~gj@dXG$6^jnz==2+r{Z*+iMco%KgapF2$$k=T!E`_4d&r`+=Tg9fLn1p?!?{r zCGN)qcnH73V_1kM@HC#oZ}1{s!td}ZUdJ2wBNpQWe2h==8U7o8#aH+S-@0YpciakY zMYoC@ATE-Q+3n-_W$ih F{sXa)^p5}l literal 25271 zcmbV!31AaN)bP&iCfQA|P4BzuLGPw*dZlTao|J|pKxxYjrL+MGZBu%1BRinn0wSWw zA-5um$fcm7hV`98m&(q?yd=FPk2T{D|eEsYIr?P+Nz zC`4h3rWi^_$tjLf4vLv*Yi(<=H&?~9+gk?5)V9`*ZGfghG4@g8Y<2Bz-V~a%?qf

EJNCfd*oSh%zStiJ;6NONL$MlL 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 ActivePerspectiveName - Project + Debug AllowedModules @@ -200,8 +200,8 @@ PerspectiveWidths - 1163 - 1163 + 1168 + 1168 Perspectives @@ -270,6 +270,7 @@ PBXSmartGroupTreeModuleOutlineStateExpansionKey 29B97314FDCFA39411CA2CEA + 7756732906782D8800D1FEB8 080E96DDFE201D6D7F000001 29B97315FDCFA39411CA2CEA 29B97317FDCFA39411CA2CEA @@ -278,13 +279,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 4 - 2 + 11 + 3 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {211, 756}} + {{0, 0}, {211, 830}} PBXTopSmartGroupGIDs @@ -294,14 +295,12 @@ GeometryConfiguration Frame - {{0, 0}, {228, 774}} + {{0, 0}, {228, 848}} GroupTreeTableConfiguration MainColumn 211 - RubberWindowFrame - 527 151 1163 815 0 0 1680 1028 Module PBXSmartGroupTreeModule @@ -312,14 +311,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID F574AFBB0E01D65800AF2716 PBXProjectModuleLabel - GitTest_AppDelegate.m + PBGitCommit.m PBXSplitModuleInNavigatorKey Split0 @@ -327,109 +324,71 @@ PBXProjectModuleGUID F574AFBC0E01D65800AF2716 PBXProjectModuleLabel - GitTest_AppDelegate.m + PBGitCommit.m _historyCapacity 0 bookmark - F5945F030E02BC7800706420 + F56525C60E03435900F03B52 history - F5945EED0E02BC3900706420 - F5945EEF0E02BC3900706420 - F5945EFD0E02BC6900706420 - F5945EFE0E02BC6900706420 + F56524DE0E02D30200F03B52 + F56524DF0E02D30200F03B52 + F56525740E033DBB00F03B52 + F56525B20E03412400F03B52 + F56525B30E03412400F03B52 + F56525C00E03435300F03B52 + F56525C10E03435300F03B52 + F565256F0E033D4700F03B52 prevStack F574AFED0E01D92400AF2716 F574AFF50E01D95B00AF2716 - F5945E1E0E02B23000706420 F5945E1F0E02B23000706420 F5945E200E02B23000706420 - F5945E210E02B23000706420 - F5945E220E02B23000706420 - F5945E230E02B23000706420 - F5945E240E02B23000706420 - F5945E250E02B23000706420 - F5945E260E02B23000706420 - F5945E270E02B23000706420 - F5945E280E02B23000706420 - F5945E290E02B23000706420 - F5945E2A0E02B23000706420 - F5945E2B0E02B23000706420 - F5945E2C0E02B23000706420 - F5945E2D0E02B23000706420 - F5945E2E0E02B23000706420 - F5945E2F0E02B23000706420 - F5945E300E02B23000706420 - F5945E310E02B23000706420 - F5945E320E02B23000706420 - F5945E330E02B23000706420 - F5945E3E0E02B3ED00706420 - F5945E3F0E02B3ED00706420 - F5945E400E02B3ED00706420 - F5945E410E02B3ED00706420 - F5945E420E02B3ED00706420 - F5945E430E02B3ED00706420 - F5945E440E02B3ED00706420 - F5945E450E02B3ED00706420 - F5945E460E02B3ED00706420 - F5945E470E02B3ED00706420 - F5945E480E02B3ED00706420 - F5945E490E02B3ED00706420 - F5945E4A0E02B3ED00706420 - F5945E650E02B47100706420 - F5945E660E02B47100706420 - F5945E670E02B47100706420 - F5945E6C0E02B4B200706420 - F5945E750E02B4EF00706420 - F5945E760E02B4EF00706420 - F5945E890E02B57900706420 - F5945E8A0E02B57900706420 - F5945E8B0E02B57900706420 - F5945E8C0E02B57900706420 - F5945E8D0E02B57900706420 - F5945E8E0E02B57900706420 - F5945E8F0E02B57900706420 - F5945E900E02B57900706420 - F5945E910E02B57900706420 - F5945E920E02B57900706420 - F5945EA20E02B5FB00706420 - F5945EA30E02B5FB00706420 - F5945EA40E02B5FB00706420 - F5945EA50E02B5FB00706420 - F5945EA60E02B5FB00706420 - F5945EA70E02B5FB00706420 - F5945EA80E02B5FB00706420 - F5945EA90E02B5FB00706420 - F5945EAA0E02B5FB00706420 - F5945EAB0E02B5FB00706420 - F5945EAC0E02B5FB00706420 - F5945EAD0E02B5FB00706420 - F5945EAE0E02B5FB00706420 - F5945EB40E02B62F00706420 - F5945EB80E02B66200706420 - F5945EDA0E02B93900706420 - F5945EDB0E02B93900706420 - F5945EDC0E02B93900706420 - F5945EDD0E02B93900706420 - F5945EDE0E02B93900706420 - F5945EDF0E02B93900706420 - F5945EE00E02B93900706420 - F5945EE10E02B93900706420 - F5945EE20E02B93900706420 - F5945EE30E02B93900706420 - F5945EE40E02B93900706420 - F5945EF10E02BC3900706420 - F5945EF20E02BC3900706420 - F5945EF30E02BC3900706420 - F5945EF40E02BC3900706420 - F5945EF50E02BC3900706420 - F5945EF60E02BC3900706420 - F5945EF70E02BC3900706420 - F5945EF80E02BC3900706420 - F5945EFF0E02BC6900706420 - F5945F000E02BC6900706420 + F56524C20E02D24500F03B52 + F56524CF0E02D26C00F03B52 + F56524E20E02D30200F03B52 + F56524E30E02D30200F03B52 + F56524E40E02D30200F03B52 + F56524E50E02D30200F03B52 + F56524FE0E02D61500F03B52 + F56524FF0E02D61500F03B52 + F56525000E02D61500F03B52 + F56525010E02D61500F03B52 + F56525020E02D61500F03B52 + F56525030E02D61500F03B52 + F56525040E02D61500F03B52 + F56525050E02D61500F03B52 + F56525060E02D61500F03B52 + F56525070E02D61500F03B52 + F56525080E02D61500F03B52 + F56525090E02D61500F03B52 + F565250A0E02D61500F03B52 + F565250B0E02D61500F03B52 + F565250C0E02D61500F03B52 + F565250D0E02D61500F03B52 + F565252D0E02D73100F03B52 + F565252E0E02D73100F03B52 + F565252F0E02D73100F03B52 + F56525300E02D73100F03B52 + F56525310E02D73100F03B52 + F56525320E02D73100F03B52 + F56525330E02D73100F03B52 + F56525340E02D73100F03B52 + F56525350E02D73100F03B52 + F56525360E02D73100F03B52 + F56525490E02D7B400F03B52 + F56525580E02D97300F03B52 + F56525590E02D97300F03B52 + F565255A0E02D97300F03B52 + F56525700E033D4700F03B52 + F56525750E033DBB00F03B52 + F56525760E033DBB00F03B52 + F56525B40E03412400F03B52 + F56525B50E03412400F03B52 + F56525C20E03435300F03B52 + F56525C30E03435300F03B52 SplitCount @@ -443,18 +402,16 @@ GeometryConfiguration Frame - {{0, 0}, {930, 769}} - RubberWindowFrame - 527 151 1163 815 0 0 1680 1028 + {{0, 0}, {935, 437}} Module PBXNavigatorGroup Proportion - 769pt + 437pt Proportion - 0pt + 406pt Tabs @@ -468,9 +425,7 @@ GeometryConfiguration Frame - {{10, 27}, {930, -27}} - RubberWindowFrame - 527 151 1163 815 0 0 1680 1028 + {{10, 27}, {935, 379}} Module XCDetailModule @@ -524,7 +479,7 @@ GeometryConfiguration Frame - {{10, 31}, {603, 297}} + {{10, 27}, {935, 204}} Module PBXBuildResultsModule @@ -533,7 +488,7 @@ Proportion - 930pt + 935pt Name @@ -552,11 +507,11 @@ TableOfContents - F5945E0B0E02B09100706420 + F56524B60E02D22300F03B52 1CA23ED40692098700951B8B - F5945E0C0E02B09100706420 + F56524B70E02D22300F03B52 F574AFBB0E01D65800AF2716 - F5945E0D0E02B09100706420 + F56524B80E02D22300F03B52 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -593,6 +548,8 @@ Layout + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -603,12 +560,14 @@ GeometryConfiguration Frame - {{0, 0}, {1163, 398}} + {{0, 0}, {1168, 395}} + RubberWindowFrame + 458 139 1168 889 0 0 1680 1028 Module PBXDebugCLIModule Proportion - 398pt + 395pt ContentConfiguration @@ -627,8 +586,8 @@ yes sizes - {{0, 0}, {567, 180}} - {{567, 0}, {596, 180}} + {{0, 0}, {569, 217}} + {{569, 0}, {599, 217}} VerticalSplitView @@ -643,8 +602,8 @@ yes sizes - {{0, 0}, {1163, 180}} - {{0, 180}, {1163, 191}} + {{0, 0}, {1168, 217}} + {{0, 217}, {1168, 231}} @@ -664,7 +623,7 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 403}, {1163, 371}} + {{0, 400}, {1168, 448}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration @@ -674,16 +633,20 @@ Value 85 Summary - 366 + 369 Frame - {{567, 0}, {596, 180}} + {{569, 0}, {599, 217}} + RubberWindowFrame + 458 139 1168 889 0 0 1680 1028 + RubberWindowFrame + 458 139 1168 889 0 0 1680 1028 Module PBXDebugSessionModule Proportion - 371pt + 448pt Name @@ -701,14 +664,14 @@ TableOfContents - F5945E4C0E02B3ED00706420 + F56524C40E02D24500F03B52 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - F5945E4D0E02B3ED00706420 - F5945E4E0E02B3ED00706420 - F5945E4F0E02B3ED00706420 - F5945E500E02B3ED00706420 - F5945E510E02B3ED00706420 + F56524C50E02D24500F03B52 + F56524C60E02D24500F03B52 + F56524C70E02D24500F03B52 + F56524C80E02D24500F03B52 + F56524C90E02D24500F03B52 ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -738,13 +701,13 @@ 5 WindowOrderList - F5945E5A0E02B40100706420 - F5945E5B0E02B40100706420 - F5945E5C0E02B40100706420 + F565251A0E02D68600F03B52 + F565251B0E02D68600F03B52 + F565251C0E02D68600F03B52 /Users/pieter/projects/Cocoa/GitTest/GitTest.xcodeproj WindowString - 527 151 1163 815 0 0 1680 1028 + 458 139 1168 889 0 0 1680 1028 WindowToolsV3 diff --git a/GitTest.xcodeproj/project.pbxproj b/GitTest.xcodeproj/project.pbxproj index ddd83c2..113f09b 100644 --- a/GitTest.xcodeproj/project.pbxproj +++ b/GitTest.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + F56524BB0E02D22D00F03B52 /* NSFileHandleExt.m in Sources */ = {isa = PBXBuildFile; fileRef = F56524B90E02D22D00F03B52 /* NSFileHandleExt.m */; }; + F56524F00E02D45200F03B52 /* PBGitCommit.m in Sources */ = {isa = PBXBuildFile; fileRef = F56524EF0E02D45200F03B52 /* PBGitCommit.m */; }; F5945E170E02B0C200706420 /* PBGitRepository.m in Sources */ = {isa = PBXBuildFile; fileRef = F5945E160E02B0C200706420 /* PBGitRepository.m */; }; /* End PBXBuildFile section */ @@ -30,6 +32,10 @@ 77C8280C06725ACE000B614F /* GitTest_AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GitTest_AppDelegate.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* GitTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GitTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F56524B90E02D22D00F03B52 /* NSFileHandleExt.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSFileHandleExt.m; sourceTree = ""; }; + F56524BA0E02D22D00F03B52 /* NSFileHandleExt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSFileHandleExt.h; sourceTree = ""; }; + F56524EE0E02D45200F03B52 /* PBGitCommit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBGitCommit.h; sourceTree = ""; }; + F56524EF0E02D45200F03B52 /* PBGitCommit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBGitCommit.m; sourceTree = ""; }; F5945E150E02B0C200706420 /* PBGitRepository.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBGitRepository.h; sourceTree = ""; }; F5945E160E02B0C200706420 /* PBGitRepository.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBGitRepository.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -49,10 +55,14 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + F56524B90E02D22D00F03B52 /* NSFileHandleExt.m */, + F56524BA0E02D22D00F03B52 /* NSFileHandleExt.h */, 77C8280B06725ACE000B614F /* GitTest_AppDelegate.h */, 77C8280C06725ACE000B614F /* GitTest_AppDelegate.m */, F5945E150E02B0C200706420 /* PBGitRepository.h */, F5945E160E02B0C200706420 /* PBGitRepository.m */, + F56524EE0E02D45200F03B52 /* PBGitCommit.h */, + F56524EF0E02D45200F03B52 /* PBGitCommit.m */, ); name = Classes; sourceTree = ""; @@ -191,6 +201,8 @@ 77C8280E06725ACE000B614F /* GitTest_AppDelegate.m in Sources */, 770B37ED0679A11B001EADE2 /* GitTest_DataModel.xcdatamodel in Sources */, F5945E170E02B0C200706420 /* PBGitRepository.m in Sources */, + F56524BB0E02D22D00F03B52 /* NSFileHandleExt.m in Sources */, + F56524F00E02D45200F03B52 /* PBGitCommit.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/GitTest_AppDelegate.m b/GitTest_AppDelegate.m index 179a032..1d370da 100644 --- a/GitTest_AppDelegate.m +++ b/GitTest_AppDelegate.m @@ -22,7 +22,6 @@ { self.repository = [PBGitRepository repositoryWithPath:@"/Users/Pieter/projects/bonnenteller/.git"]; NSLog(@"Repository is: %@", repository); - NSLog(@"Repository commits is: %@", repository.commits); return self; } diff --git a/NSFileHandleExt.h b/NSFileHandleExt.h new file mode 100644 index 0000000..da59b4d --- /dev/null +++ b/NSFileHandleExt.h @@ -0,0 +1,20 @@ +/* + * Extension for NSFileHandle to make it capable of easy network programming + * + * Version 1.0, get the newest from http://michael.stapelberg.de/NSFileHandleExt.php + * + * Copyright 2007 Michael Stapelberg + * + * Distributed under BSD-License, see http://michael.stapelberg.de/BSD.php + * + */ + +#import +#include +#include +#include +#include + +@interface NSFileHandle(NSFileHandleExt) +-(NSString*)readLine; +@end diff --git a/NSFileHandleExt.m b/NSFileHandleExt.m new file mode 100644 index 0000000..0e2412c --- /dev/null +++ b/NSFileHandleExt.m @@ -0,0 +1,62 @@ +/* + * Extension for NSFileHandle to make it capable of easy network programming + * + * Version 1.0, get the newest from http://michael.stapelberg.de/NSFileHandleExt.php + * + * Copyright 2007 Michael Stapelberg + * + * Distributed under BSD-License, see http://michael.stapelberg.de/BSD.php + * + */ + + +#define CONN_TIMEOUT 5 +#define BUFFER_SIZE 256 + +@implementation NSFileHandle(NSFileHandleExt) + +-(NSString*)readLine { + // If the socket is closed, return an empty string + if ([self fileDescriptor] <= 0) + return @""; + + int fd = [self fileDescriptor]; + + // Allocate BUFFER_SIZE bytes to store the line + int bufferSize = BUFFER_SIZE; + char *buffer = (char*)malloc(bufferSize + 1); + if (buffer == NULL) + [[NSException exceptionWithName:@"No memory left" reason:@"No more memory for allocating buffer" userInfo:nil] raise]; + + int bytesReceived = 0, n = 1; + + while (n > 0) { + n = read(fd, buffer + bytesReceived++, 1); + + if (n < 0) + [[NSException exceptionWithName:@"Socket error" reason:@"Remote host closed connection" userInfo:nil] raise]; + + if (bytesReceived >= bufferSize) { + // Make buffer bigger + bufferSize += BUFFER_SIZE; + buffer = (char*)realloc(buffer, bufferSize + 1); + if (buffer == NULL) + [[NSException exceptionWithName:@"No memory left" reason:@"No more memory for allocating buffer" userInfo:nil] raise]; + } + + switch (*(buffer + bytesReceived - 1)) { + case '\n': + buffer[bytesReceived-1] = '\0'; + return [NSString stringWithCString: buffer]; + case '\r': + bytesReceived--; + } + } + + buffer[bytesReceived-1] = '\0'; + NSString *retVal = [NSString stringWithCString: buffer]; + free(buffer); + return retVal; +} + +@end diff --git a/PBGitCommit.h b/PBGitCommit.h new file mode 100644 index 0000000..4d3bd50 --- /dev/null +++ b/PBGitCommit.h @@ -0,0 +1,25 @@ +// +// PBGitCommit.h +// GitTest +// +// Created by Pieter de Bie on 13-06-08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#import +#import "PBGitRepository.h" + +@interface PBGitCommit : NSObject { + NSString* sha; + NSString* subject; + PBGitRepository* repository; +} + +- initWithRepository:(PBGitRepository*) repo andSha:(NSString*) sha; + +@property (copy) NSString* sha; +@property (copy) NSString* subject; +@property (readonly) NSString* details; + +@property (retain) PBGitRepository* repository; +@end diff --git a/PBGitCommit.m b/PBGitCommit.m new file mode 100644 index 0000000..a5b9e1a --- /dev/null +++ b/PBGitCommit.m @@ -0,0 +1,29 @@ +// +// PBGitCommit.m +// GitTest +// +// Created by Pieter de Bie on 13-06-08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#import "PBGitCommit.h" + + +@implementation PBGitCommit + +@synthesize sha, repository, subject; + +- initWithRepository:(PBGitRepository*) repo andSha:(NSString*) newSha +{ + self.repository = repo; + self.sha = newSha; + return self; +} + +- (NSString*) details +{ + NSFileHandle* handle = [self.repository handleForCommand:[@"show " stringByAppendingString:self.sha]]; + NSString* details = [[NSString alloc] initWithData:[handle readDataToEndOfFile] encoding: NSASCIIStringEncoding]; + return details; +} +@end diff --git a/PBGitRepository.h b/PBGitRepository.h index 955bc14..7d4513c 100644 --- a/PBGitRepository.h +++ b/PBGitRepository.h @@ -8,7 +8,6 @@ #import - @interface PBGitRepository : NSObject { NSString* path; NSArray* commits; diff --git a/PBGitRepository.m b/PBGitRepository.m index ffeef57..11d0dd0 100644 --- a/PBGitRepository.m +++ b/PBGitRepository.m @@ -7,7 +7,9 @@ // #import "PBGitRepository.h" +#import "PBGitCommit.h" +#import "NSFileHandleExt.h" @implementation PBGitRepository @@ -32,33 +34,21 @@ static NSString* gitPath = @"/opt/pieter/bin/git"; - (NSArray*) commits { - NSLog(@"Hey"); if (commits != nil) return commits; - NSFileHandle* handle = [self handleForCommand:@"rev-list HEAD"]; - - int buffersize = 50; - char buffer[buffersize]; + NSFileHandle* handle = [self handleForCommand:@"log --pretty=format:%H%x01%s HEAD"]; NSMutableArray * newArray = [NSMutableArray array]; - int fd = [handle fileDescriptor]; - FILE * file = fdopen(fd, "r"); - - while (YES) { - - - if (fgets(buffer, buffersize, file)) { - NSString* s = [NSString stringWithCString:buffer length:buffersize]; - NSLog(@"Got string: %@", s); - [newArray addObject:s]; - } - else { - fclose(file); - NSLog(@"Done!"); - break; - } + NSString* currentLine = [handle readLine]; + + while (currentLine.length > 0) { + NSArray* components = [currentLine componentsSeparatedByString:@"\01"]; + PBGitCommit* newCommit = [[PBGitCommit alloc] initWithRepository: self andSha: [components objectAtIndex:0]]; + newCommit.subject = [components objectAtIndex:1]; + [newArray addObject: newCommit]; + currentLine = [handle readLine]; } - + commits = newArray; return commits; }