From f8cd92239d4b108a33d69b4dc76a140150f044ea Mon Sep 17 00:00:00 2001 From: Patrick Wardle Date: Sun, 21 Feb 2016 19:36:37 -1000 Subject: [PATCH] support for displaying & filtering packed files support for displaying & filtering encrypted files support for enumerating dylibs in 32bit processes UI improvements (main text in cells is single, albeit attributed string) --- AppDelegate.m | 4 +- Consts.h | 5 +- Filter.h | 8 + Filter.m | 61 ++- ItemView.h | 4 + ItemView.m | 347 +++++++++++------- Items/Binary.h | 14 +- Items/Binary.m | 51 ++- RequestRootWindowController.m | 4 +- Task.m | 15 +- TaskEnumerator.m | 14 +- TaskExplorer.xcodeproj/project.pbxproj | 49 ++- .../UserInterfaceState.xcuserstate | Bin 66021 -> 110785 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 162 +++----- TaskTableController.m | 3 +- UI/FlatView.xib | 21 +- UI/SearchWindow.xib | 63 +--- UI/TreeView.xib | 23 +- VTButton.m | 2 +- remoteTaskService/main.m | 10 +- remoteTaskService/remoteTaskService.m | 20 +- 21 files changed, 527 insertions(+), 353 deletions(-) diff --git a/AppDelegate.m b/AppDelegate.m index 40adca5..3aa18c3 100755 --- a/AppDelegate.m +++ b/AppDelegate.m @@ -18,7 +18,9 @@ //TODO: filter out dup'd networks (airportd 0:0..) -not sure want to do this //TODO: autolayout vertically -//TODO: show 'from where' via quarantine attrz +//TODO: show 'from where' via quarantine attrz or database!! (simon email) +//TODO: detect as procs die via GCD (simon blog post) + @implementation AppDelegate diff --git a/Consts.h b/Consts.h index 0faaaf4..400ee6e 100644 --- a/Consts.h +++ b/Consts.h @@ -57,6 +57,9 @@ //path to LSOF #define LSOF @"/usr/sbin/lsof" +//path to vmmap32 +#define VMMAP_32 @"/usr/bin/vmmap32" + //path to vmmap #define VMMAP @"/usr/bin/vmmap" @@ -131,8 +134,6 @@ //id (tag) for path #define TABLE_ROW_PATH_LABEL 101 -//id (tag) for plist -#define TABLE_ROW_PID_LABEL 102 //id (tag) for 'virus total' button #define TABLE_ROW_VT_BUTTON 103 diff --git a/Filter.h b/Filter.h index 08eb15f..e94412a 100644 --- a/Filter.h +++ b/Filter.h @@ -35,6 +35,14 @@ // ->determine if binary is flagged by VT -(BOOL)isFlagged:(Binary*)item; +//keyword filter '#encrypted' +// ->determine if binary is encrypted +-(BOOL)isEncrypted:(Binary*)item; + +//keyword filter '#packed' +// ->determine if binary is packed +-(BOOL)isPacked:(Binary*)item; + //filter tasks -(void)filterTasks:(NSString*)filterText items:(NSMutableDictionary*)items results:(NSMutableArray*)results; diff --git a/Filter.m b/Filter.m index 6ae4363..499fbf2 100644 --- a/Filter.m +++ b/Filter.m @@ -13,7 +13,7 @@ #import "Connection.h" //binary filter keywords -NSString * const BINARY_KEYWORDS[] = {@"#apple", @"#nonapple", @"#signed", @"#unsigned", @"#flagged"}; +NSString * const BINARY_KEYWORDS[] = {@"#apple", @"#nonapple", @"#signed", @"#unsigned", @"#flagged", @"#encrypted", @"#packed"}; @implementation Filter @@ -384,6 +384,29 @@ NSString * const BINARY_KEYWORDS[] = {@"#apple", @"#nonapple", @"#signed", @"#un goto bail; } + //handle '#encrypted' + else if( (YES == [keyword isEqualToString:@"#encrypted"]) && + (YES == [self isEncrypted:binary]) ) + { + //happy + fulfills = YES; + + //bail + goto bail; + } + + //handle '#packed' + else if( (YES == [keyword isEqualToString:@"#packed"]) && + (YES == [self isPacked:binary]) ) + { + //happy + fulfills = YES; + + //bail + goto bail; + } + + //bail bail: @@ -463,4 +486,40 @@ bail: } +//keyword filter '#encrypted' +// ->determine if binary is encrypted +-(BOOL)isEncrypted:(Binary *)item +{ + //make sure item was parsed + if(nil == item.parser) + { + //parse + [item parse]; + + //save encrypted flag + item.isEncrypted = [item.parser.binaryInfo[KEY_IS_ENCRYPTED] boolValue]; + } + + //set flag + return item.isEncrypted; +} + +//keyword filter '#packed' +// ->determine if binary is packed +-(BOOL)isPacked:(Binary *)item +{ + //make sure item was parsed + if(nil == item.parser) + { + //parse + [item parse]; + + //save packed flag + item.isPacked = [item.parser.binaryInfo[KEY_IS_PACKED] boolValue]; + } + + //set flag + return item.isPacked; +} + @end diff --git a/ItemView.h b/ItemView.h index 4c32b43..12974dd 100644 --- a/ItemView.h +++ b/ItemView.h @@ -25,6 +25,7 @@ NSTableCellView* createFlaggedItemView(NSTableView* tableView, id owner, id item //create & customize global dylib/file view NSTableCellView* createLoadedItemView(NSTableView* tableView, id owner, id item); + //create & customize task view NSTableCellView* createTaskView(NSTableView* tableView, id owner, id item); @@ -40,6 +41,9 @@ NSTableCellView* createNetworkView(NSTableView* tableView, id owner, Connection* //add a tracking area to a view within the item view void addTrackingArea(NSTableCellView* itemView, NSUInteger subviewTag, id owner); +//build item + 'loaded in' string for dylibs, files, etc in search window +NSAttributedString* initLoadedInString(id item); + //set code signing image // ->either signed, unsigned, or unknown NSImage* getCodeSigningIcon(Binary* binary); diff --git a/ItemView.m b/ItemView.m index f359c71..6881c3e 100644 --- a/ItemView.m +++ b/ItemView.m @@ -153,58 +153,6 @@ NSTableCellView* createLoadedItemView(NSTableView* tableView, id owner, id item) //item cell NSTableCellView* loadedItemCell = nil; - //matching or host tasks - NSMutableArray* tasks = nil; - - //pid or 'loaded in' string - NSMutableString* loadedIn = nil; - - //task's name frame - CGRect nameFrame = {0}; - - //get host tasks - // ->works with dylibs or files - tasks = [((AppDelegate*)[[NSApplication sharedApplication] delegate]).taskEnumerator loadedIn:item]; - - //add dylib indicator - //-> '(dylib, loaded in: ... ' - if(YES == [item isKindOfClass:[Binary class]]) - { - //init - loadedIn = [NSMutableString stringWithFormat:@"(dylib, loaded in:"]; - } - //add file indicator - //-> '(file, loaded in: ... ' - else if(YES == [item isKindOfClass:[File class]]) - { - //init - loadedIn = [NSMutableString stringWithFormat:@"(file, loaded in:"]; - } - //add connection indicator - //-> '(connection, in: ... ' - else if(YES == [item isKindOfClass:[Connection class]]) - { - //init - loadedIn = [NSMutableString stringWithFormat:@"(connection, in:"]; - } - - //add all tasks - for(Task* task in tasks) - { - //append name - [loadedIn appendFormat:@" %@,", task.binary.name]; - } - - //remove last ',' - if(YES == [loadedIn hasSuffix:@","]) - { - //remove - [loadedIn deleteCharactersInRange:NSMakeRange([loadedIn length]-1, 1)]; - } - - //terminate list/output - [loadedIn appendString:@")"]; - //dylibs // ->create cell if(YES == [item isKindOfClass:[Binary class]]) @@ -268,39 +216,9 @@ NSTableCellView* createLoadedItemView(NSTableView* tableView, id owner, id item) //default // ->(re)set main textfield's color to black loadedItemCell.textField.textColor = [NSColor blackColor]; - - //dylibs/files - // ->main text is name - if( (YES == [item isKindOfClass:[Binary class]]) || - (YES == [item isKindOfClass:[File class]]) ) - { - //set name - [loadedItemCell.textField setStringValue:[item name]]; - } - //connections - // ->main text is endpoints string - else - { - //set endpoints string - [loadedItemCell.textField setStringValue:[item endpoints]]; - } - - //get name frame - nameFrame = loadedItemCell.textField.frame; - - //adjust width to fit text - nameFrame.size.width = [loadedItemCell.textField.stringValue sizeWithAttributes: @{NSFontAttributeName: loadedItemCell.textField.font}].width + 5; - - //disable autolayout for name - loadedItemCell.textField.translatesAutoresizingMaskIntoConstraints = YES; - - //update name frame - // ->should now be exact size of text - loadedItemCell.textField.frame = nameFrame; - - //set host task(s) string - // ->immediately follows name - [((NSTextField*)[loadedItemCell viewWithTag:TABLE_ROW_PID_LABEL]) setStringValue:loadedIn]; + + //set main text + loadedItemCell.textField.attributedStringValue = initLoadedInString(item); //dylibs/files // ->subtext is path @@ -346,18 +264,226 @@ bail: return loadedItemCell; } +//build binary string for main window +// ->format: binary name (pid: [encrypted|packed]) +NSAttributedString* initBinaryString(id item, BOOL isSearchWindow) +{ + //string for pid + NSMutableAttributedString* taskString = nil; + + //string attributes + NSDictionary* attributes = nil; + + //binary + Binary* binary = nil; + + //init task string + taskString = [[NSMutableAttributedString alloc] initWithString:@""]; + + //grab binary from task + if(YES == [item isKindOfClass:[Task class]]) + { + //grab + binary = ((Task*)item).binary; + } + //dylib + // ->just assign + else + { + //assign + binary = (Binary*)item; + } + + //add name + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:binary.name]]; + + //init color for pid + // ->light gray + attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName]; + + //search window + // ->only for tasks, since dylibs in search window are handled elsewhere ('loaded in') + if( (YES == isSearchWindow) && + (YES == [item isKindOfClass:[Task class]]) ) + { + //add pid + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" (task: %@", ((Task*)item).pid] attributes:attributes]]; + } + //normal window + // ->add encrypted/packed info... + else + { + //task + // ->add task's pid + if(YES == [item isKindOfClass:[Task class]]) + { + //add pid + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" (pid: %@", ((Task*)item).pid] attributes:attributes]]; + } + + //added encrypted or packed + if( (YES == binary.isEncrypted) || + (YES == binary.isPacked) ) + { + //init color for comma, etc + // ->light gray + attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName]; + + //tasks + //add comma string + if(YES == [item isKindOfClass:[Task class]]) + { + //close + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@", " attributes:attributes]]; + } + //dylibs + // ->open parents + else + { + //open + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@" (" attributes:attributes]]; + } + + //init color + // ->red + attributes = [NSDictionary dictionaryWithObject:[NSColor redColor] forKey:NSForegroundColorAttributeName]; + + //add 'encrypted' + if(YES == binary.isEncrypted) + { + //add + [taskString appendAttributedString:[[NSAttributedString alloc] initWithString:@"encrypted" attributes:attributes]]; + } + //add 'packed' + // ->can't be both...and encryption takes precedence + else + { + //add + [taskString appendAttributedString:[[NSAttributedString alloc] initWithString:@"packed" attributes:attributes]]; + } + + //dylib, need to close string here + // ->normally it doesn't have anything after... + if(YES != [item isKindOfClass:[Task class]]) + { + //init color for closing + attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName]; + + //close string + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@")" attributes:attributes]]; + } + + }//encrypted or packed + } + + //task + // ->close string + if(YES == [item isKindOfClass:[Task class]]) + { + //init color for closing + // ->light gray + attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName]; + + //close string + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@")" attributes:attributes]]; + } + + return taskString; +} + +//build item + 'loaded in...' string for dylibs, files, etc in search window +NSAttributedString* initLoadedInString(id item) +{ + //string for pid + NSMutableAttributedString* taskString = nil; + + //string attributes + NSDictionary* attributes = nil; + + //pid or 'loaded in' string + NSMutableString* loadedIn = nil; + + //matching or host tasks + NSMutableArray* tasks = nil; + + //init task string + taskString = [[NSMutableAttributedString alloc] initWithString:@""]; + + //get host tasks + // ->works with dylibs or files + tasks = [((AppDelegate*)[[NSApplication sharedApplication] delegate]).taskEnumerator loadedIn:item]; + + //dylibs/files + // ->add name + if( (YES == [item isKindOfClass:[Binary class]]) || + (YES == [item isKindOfClass:[File class]]) ) + { + //add name + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[item name]]]; + } + //connections + // ->add endpoints + else + { + //set endpoints string + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[item endpoints]]]; + } + + //init color for 'loaded in...' + // ->light gray + attributes = [NSDictionary dictionaryWithObject:[NSColor lightGrayColor] forKey:NSForegroundColorAttributeName]; + + //add dylib indicator + //-> '(dylib, loaded in: ... ' + if(YES == [item isKindOfClass:[Binary class]]) + { + //init + loadedIn = [NSMutableString stringWithFormat:@" (dylib, loaded in:"]; + } + //add file indicator + //-> '(file, loaded in: ... ' + else if(YES == [item isKindOfClass:[File class]]) + { + //init + loadedIn = [NSMutableString stringWithFormat:@" (file, loaded in:"]; + } + //add connection indicator + //-> '(connection, in: ... ' + else if(YES == [item isKindOfClass:[Connection class]]) + { + //init + loadedIn = [NSMutableString stringWithFormat:@" (connection, in:"]; + } + + //add all tasks + for(Task* task in tasks) + { + //append name + [loadedIn appendFormat:@" %@,", task.binary.name]; + } + + //remove last ',' + if(YES == [loadedIn hasSuffix:@","]) + { + //remove + [loadedIn deleteCharactersInRange:NSMakeRange([loadedIn length]-1, 1)]; + } + + //terminate list/output + [loadedIn appendString:@")"]; + + //add 'loaded in...' + [taskString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:loadedIn attributes:attributes]]; + + return taskString; +} + //create & customize Task view NSTableCellView* createTaskView(NSTableView* tableView, id owner, Task* task) { //item cell NSTableCellView* taskCell = nil; - //task's name frame - CGRect nameFrame = {0}; - - //string for pid - NSString* pidString = nil; - //sanity check if(nil == task.binary) { @@ -402,40 +528,7 @@ NSTableCellView* createTaskView(NSTableView* tableView, id owner, Task* task) taskCell.textField.textColor = [NSColor blackColor]; //set main text - // ->name - [taskCell.textField setStringValue:task.binary.name]; - - //get name frame - nameFrame = taskCell.textField.frame; - - //adjust width to fit text - nameFrame.size.width = [taskCell.textField.stringValue sizeWithAttributes: @{NSFontAttributeName: taskCell.textField.font}].width + 5; - - //disable autolayout for name - taskCell.textField.translatesAutoresizingMaskIntoConstraints = YES; - - //update name frame - // ->should now be exact size of text - taskCell.textField.frame = nameFrame; - - //init pid string - // ->search mode, show 'task,' to differential between files, etc - if(YES ==[owner isKindOfClass:[SearchWindowController class]]) - { - //init - pidString = [NSString stringWithFormat:@"(task: %@)", task.pid]; - } - //otherwise - // ->just set pid - else - { - //init - pidString = [NSString stringWithFormat:@"(%@)", task.pid]; - } - - //set pid - // ->immediately follows name - [((NSTextField*)[taskCell viewWithTag:TABLE_ROW_PID_LABEL]) setStringValue:pidString]; + taskCell.textField.attributedStringValue = initBinaryString(task, [owner isKindOfClass:[SearchWindowController class]]); //set path [[taskCell viewWithTag:TABLE_ROW_SUB_TEXT_TAG] setStringValue:task.binary.path]; @@ -488,8 +581,8 @@ NSTableCellView* createDylibView(NSTableView* tableView, id owner, Binary* dylib dylibCell.textField.textColor = [NSColor blackColor]; //set main text - // ->name - [dylibCell.textField setStringValue:dylib.name]; + // ->final arg is flag indicating normal or search window + dylibCell.textField.attributedStringValue = initBinaryString(dylib, [owner isKindOfClass:[SearchWindowController class]]); //set path [[dylibCell viewWithTag:TABLE_ROW_SUB_TEXT_TAG] setStringValue:dylib.path]; diff --git a/Items/Binary.h b/Items/Binary.h index 87a2be9..f8b57db 100644 --- a/Items/Binary.h +++ b/Items/Binary.h @@ -6,9 +6,9 @@ // Copyright (c) 2015 Objective-See. All rights reserved. // +#import "MachO.h" #import "ItemBase.h" - #import #import @@ -37,6 +37,15 @@ //signing info @property(nonatomic, retain)NSDictionary* signingInfo; +//macho parser +@property(nonatomic, retain)MachO* parser; + +//encrypted flag +@property BOOL isEncrypted; + +//packed flag +@property BOOL isPacked; + /* VIRUS TOTAL INFO */ //dictionary returned by VT @@ -48,6 +57,9 @@ //init method -(id)initWithParams:(NSDictionary*)params; +//machO parse +-(BOOL)parse; + //get task's name // ->either from bundle or path's last component -(NSString*)getName; diff --git a/Items/Binary.m b/Items/Binary.m index 39caef9..d94d7ae 100644 --- a/Items/Binary.m +++ b/Items/Binary.m @@ -6,7 +6,6 @@ // Copyright (c) 2015 Objective-See. All rights reserved. // - #import "Binary.h" #import "Consts.h" #import "Utilities.h" @@ -19,7 +18,10 @@ @synthesize icon; @synthesize bundle; @synthesize hashes; +@synthesize parser; @synthesize vtInfo; +@synthesize isPacked; +@synthesize isEncrypted; @synthesize signingInfo; @synthesize isTaskBinary; @@ -55,6 +57,52 @@ bail: return self; } +//machO parse +-(BOOL)parse +{ + //flag + BOOL wasParsed = NO; + + //sync + @synchronized(self) + { + //alloc parser + if(nil == parser) + { + //alloc macho parser iVar + parser = [[MachO alloc] init]; + + //parse + if(YES != [self.parser parse:self.path]) + { + //unset parser + self.parser = nil; + + //bail + goto bail; + } + } + + //unset 'packed' flag for apple signed binaries + // ->as apple doesn't pack binaries, but packer algo has some false positives + if( (nil != [self.signingInfo objectForKey:KEY_SIGNING_IS_APPLE]) && + (YES == [self.signingInfo[KEY_SIGNING_IS_APPLE] boolValue]) ) + { + //unset + self.parser.binaryInfo[KEY_IS_PACKED] = NO; + } + + }//sync + + //happy + wasParsed = YES; + +//bail +bail: + + return wasParsed; +} + //get task's name // ->either from bundle or path's last component -(NSString*)getName @@ -175,7 +223,6 @@ bail: } - //format the signing info dictionary -(NSString*)formatSigningInfo { diff --git a/RequestRootWindowController.m b/RequestRootWindowController.m index eae01c8..8c3d20e 100644 --- a/RequestRootWindowController.m +++ b/RequestRootWindowController.m @@ -155,8 +155,8 @@ //2nd arg: permissions // ->4 at front is setuid //TODO: change b4 release - // ->make 4755 before deploy (for testing, 777 makes XCOde be able to del it during build!) - installArgs[1] = "4755"; + // ->make 4755 before deploy (for testing, 777 makes Xcode be able to del it during build!) + installArgs[1] = "4777"; //3rd arg: XPC service installArgs[2] = [xpcService UTF8String]; diff --git a/Task.m b/Task.m index d0a1a85..fd908d8 100644 --- a/Task.m +++ b/Task.m @@ -6,13 +6,13 @@ // Copyright (c) 2015 Objective-See, LLC. All rights reserved. // +#import "File.h" #import "Task.h" #import "Consts.h" #import "Utilities.h" -#import "File.h" #import "Connection.h" -#import "remoteTaskService.h" #import "AppDelegate.h" +#import "remoteTaskService.h" #import #import @@ -434,8 +434,19 @@ bail: for(Binary* newDylib in newDylibs) { //generate signing info + // ->do this before macho parsing! [newDylib generatedSigningInfo]; + //parse + if(YES == [newDylib parse]) + { + //save encrypted flag + newDylib.isEncrypted = [newDylib.parser.binaryInfo[KEY_IS_ENCRYPTED] boolValue]; + + //save packed flag + newDylib.isPacked = [newDylib.parser.binaryInfo[KEY_IS_PACKED] boolValue]; + } + //no need to reload if task is now longer current/selected if(((AppDelegate*)[[NSApplication sharedApplication] delegate]).currentTask != self) { diff --git a/TaskEnumerator.m b/TaskEnumerator.m index f898afe..585c320 100644 --- a/TaskEnumerator.m +++ b/TaskEnumerator.m @@ -97,7 +97,6 @@ // ->ensures existing task and their info are reused for(NSNumber* key in newTasks.allKeys) { - //get task newTask = newTasks[key]; @@ -142,7 +141,7 @@ }); - //now generate signing info + //now generate signing info/encryption check/packer check // ->for (new) tasks for(NSNumber* key in newTasks) { @@ -158,8 +157,19 @@ } //generate signing info + // ->do this before macho parsing! [newTask.binary generatedSigningInfo]; + //parse + if(YES == [newTask.binary parse]) + { + //save encrypted flag + newTask.binary.isEncrypted = [newTask.binary.parser.binaryInfo[KEY_IS_ENCRYPTED] boolValue]; + + //save packed flag + newTask.binary.isPacked = [newTask.binary.parser.binaryInfo[KEY_IS_PACKED] boolValue]; + } + //reload task (row) in table [((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadRow:newTask]; diff --git a/TaskExplorer.xcodeproj/project.pbxproj b/TaskExplorer.xcodeproj/project.pbxproj index f93a9a7..01d8a4b 100755 --- a/TaskExplorer.xcodeproj/project.pbxproj +++ b/TaskExplorer.xcodeproj/project.pbxproj @@ -8,8 +8,13 @@ /* Begin PBXBuildFile section */ 1D21BC4F172AF43D009D1CFD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D21BC4E172AF43D009D1CFD /* Cocoa.framework */; }; + 7D2A4C6C1BC789070029A284 /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = CDA81D4E1A95B492009790E2 /* Utilities.m */; }; 7D2F567C1B81BEAB00C7D85E /* SearchWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D2F567B1B81BEAB00C7D85E /* SearchWindow.xib */; }; 7D2F567F1B81BEB400C7D85E /* SearchWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D2F567E1B81BEB400C7D85E /* SearchWindowController.m */; }; + 7D73480F1BCB82C900CD7235 /* flaggedRed.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D73480C1BCB82C900CD7235 /* flaggedRed.png */; }; + 7D7348101BCB82C900CD7235 /* flaggedRedBG.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D73480D1BCB82C900CD7235 /* flaggedRedBG.png */; }; + 7D7348111BCB82C900CD7235 /* flaggedRedOver.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D73480E1BCB82C900CD7235 /* flaggedRedOver.png */; }; + 7DA5CA0F1C7AA8CB00627DD7 /* MachO.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DA5CA0E1C7AA8CB00627DD7 /* MachO.m */; }; 7DAA78091B903BF1004840B9 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DAA78081B903BF1004840B9 /* CustomTextField.m */; }; CD001B381AB903040089014A /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = CD001B351AB903040089014A /* logo.png */; }; CD001B391AB903040089014A /* logoApple.png in Resources */ = {isa = PBXBuildFile; fileRef = CD001B361AB903040089014A /* logoApple.png */; }; @@ -156,6 +161,11 @@ 7D2F567B1B81BEAB00C7D85E /* SearchWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = SearchWindow.xib; path = UI/SearchWindow.xib; sourceTree = ""; }; 7D2F567D1B81BEB300C7D85E /* SearchWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchWindowController.h; sourceTree = ""; }; 7D2F567E1B81BEB400C7D85E /* SearchWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchWindowController.m; sourceTree = ""; }; + 7D73480C1BCB82C900CD7235 /* flaggedRed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flaggedRed.png; path = images/flaggedRed.png; sourceTree = SOURCE_ROOT; }; + 7D73480D1BCB82C900CD7235 /* flaggedRedBG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flaggedRedBG.png; path = images/flaggedRedBG.png; sourceTree = SOURCE_ROOT; }; + 7D73480E1BCB82C900CD7235 /* flaggedRedOver.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = flaggedRedOver.png; path = images/flaggedRedOver.png; sourceTree = SOURCE_ROOT; }; + 7DA5CA0D1C7AA8CB00627DD7 /* MachO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MachO.h; path = ../MachO/MachOParser/MachO.h; sourceTree = ""; }; + 7DA5CA0E1C7AA8CB00627DD7 /* MachO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MachO.m; path = ../MachO/MachOParser/MachO.m; sourceTree = ""; }; 7DAA78071B903BF1004840B9 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = ""; }; 7DAA78081B903BF1004840B9 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = ""; }; CD001B351AB903040089014A /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = logo.png; path = images/logo.png; sourceTree = SOURCE_ROOT; }; @@ -331,6 +341,7 @@ 1D21BC42172AF43D009D1CFD = { isa = PBXGroup; children = ( + 7DA5CA0C1C7AA8B900627DD7 /* MachO */, 7DAA78071B903BF1004840B9 /* CustomTextField.h */, 7DAA78081B903BF1004840B9 /* CustomTextField.m */, 7D2F567D1B81BEB300C7D85E /* SearchWindowController.h */, @@ -432,9 +443,21 @@ name = "Supporting Files"; sourceTree = ""; }; + 7DA5CA0C1C7AA8B900627DD7 /* MachO */ = { + isa = PBXGroup; + children = ( + 7DA5CA0D1C7AA8CB00627DD7 /* MachO.h */, + 7DA5CA0E1C7AA8CB00627DD7 /* MachO.m */, + ); + name = MachO; + sourceTree = ""; + }; CD6095501A8329FA00E091CD /* images */ = { isa = PBXGroup; children = ( + 7D73480C1BCB82C900CD7235 /* flaggedRed.png */, + 7D73480D1BCB82C900CD7235 /* flaggedRedBG.png */, + 7D73480E1BCB82C900CD7235 /* flaggedRedOver.png */, CD74A06B1B7DA71200A8AAD3 /* flaggedBG.png */, CD74A06C1B7DA71200A8AAD3 /* flaggedOver.png */, CDFCA3551B7940970075492D /* flagged.png */, @@ -640,7 +663,7 @@ 1D21BC43172AF43D009D1CFD /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0620; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = "Lucas Derraugh"; TargetAttributes = { 1D21BC4A172AF43D009D1CFD = { @@ -683,6 +706,7 @@ CD6AFB861B4BABB200D42C34 /* refreshIconBG.png in Resources */, CDEE76FF1B3FD4B000763826 /* saveIconBG.png in Resources */, CDA81D5B1A95B4B4009790E2 /* InfoPlist.strings in Resources */, + 7D7348111BCB82C900CD7235 /* flaggedRedOver.png in Resources */, CD4D53CA1B20296E00008030 /* unknown.png in Resources */, CDEE77081B41220300763826 /* searchOver.png in Resources */, CD74A07E1B81B5D400A8AAD3 /* FlaggedItems.xib in Resources */, @@ -728,6 +752,7 @@ CD3F4D161AF89066002A2647 /* TreeView.xib in Resources */, CD0219501AD34D8B005148A2 /* PrefsWindow.xib in Resources */, CDFCA3561B7940970075492D /* flagged.png in Resources */, + 7D7348101BCB82C900CD7235 /* flaggedRedBG.png in Resources */, CDA81D6C1A95B4E9009790E2 /* showBG.png in Resources */, CD3F4CFF1AF72BC4002A2647 /* TaskInfoWindow.xib in Resources */, CDEE77001B3FD4B000763826 /* saveIconOver.png in Resources */, @@ -747,6 +772,7 @@ CDA81DCA1A9960A3009790E2 /* infoBG.png in Resources */, CDF08CD11AC4C6E8009B3423 /* settings.png in Resources */, CDA81DD31A9970A0009790E2 /* signed.png in Resources */, + 7D73480F1BCB82C900CD7235 /* flaggedRed.png in Resources */, CDEE77071B41220300763826 /* searchBG.png in Resources */, CDA81E661AA020FD009790E2 /* FileInfoWindow.xib in Resources */, ); @@ -768,6 +794,7 @@ files = ( CD3F4CE81AF5CF68002A2647 /* TaskEnumerator.m in Sources */, CD4D54221B2CE6F200008030 /* NSMutableArray+QueueAdditions.m in Sources */, + 7DA5CA0F1C7AA8CB00627DD7 /* MachO.m in Sources */, CD74A07B1B7F170B00A8AAD3 /* FlaggedItems.m in Sources */, CDA5F6C41B16E20E003CE340 /* RequestRootWindowController.m in Sources */, CDD2483B1AF5CC4D00232422 /* Task.m in Sources */, @@ -808,6 +835,7 @@ files = ( CDA5F6B61B16D805003CE340 /* main.m in Sources */, CDA5F6B41B16D805003CE340 /* remoteTaskService.m in Sources */, + 7D2A4C6C1BC789070029A284 /* Utilities.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -853,7 +881,9 @@ CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; @@ -886,6 +916,7 @@ CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -904,12 +935,13 @@ 1D21BC69172AF43D009D1CFD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = "Developer ID Application"; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer"; + CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; COMBINE_HIDPI_IMAGES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "TaskExplorer-Prefix.pch"; INFOPLIST_FILE = "TaskExplorer-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = TaskExplorer; PROVISIONING_PROFILE = ""; WRAPPER_EXTENSION = app; @@ -919,12 +951,13 @@ 1D21BC6A172AF43D009D1CFD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = "Developer ID Application"; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer"; + CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; COMBINE_HIDPI_IMAGES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "TaskExplorer-Prefix.pch"; INFOPLIST_FILE = "TaskExplorer-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = TaskExplorer; PROVISIONING_PROFILE = ""; WRAPPER_EXTENSION = app; @@ -939,7 +972,7 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; COMBINE_HIDPI_IMAGES = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -955,6 +988,7 @@ INFOPLIST_FILE = remoteTaskService/Info.plist; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; @@ -968,7 +1002,7 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNREACHABLE_CODE = YES; - CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_IDENTITY = "Developer ID Application: Objective-See, LLC (VBG97UB4TA)"; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; ENABLE_NS_ASSERTIONS = NO; @@ -981,6 +1015,7 @@ INFOPLIST_FILE = remoteTaskService/Info.plist; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.objective-see.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; diff --git a/TaskExplorer.xcodeproj/project.xcworkspace/xcuserdata/patrickw.xcuserdatad/UserInterfaceState.xcuserstate b/TaskExplorer.xcodeproj/project.xcworkspace/xcuserdata/patrickw.xcuserdatad/UserInterfaceState.xcuserstate index 6a8e3841d4e723daf8fc566c95060d7cdee0f14f..6534dde307fa03273ff34713952e5f828d12fcb2 100644 GIT binary patch literal 110785 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 $~f7)lI=5`&?3pg#{K7DH)!XfMF_q2qwu9*WIF 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 ^CIaSZ8tI%`m2K1b&=TtqX>N!=Z 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 z z{Wvim{hn1(41|uDQvtciJji%44Nc%BZp@3D5PcDYv#-bEcqkqY3m6Y02yMnA2;%?6 z62_zP7`B8D;qkCOC*XWM5l@0531c3VP7<@LAxI#|MUZq5uAG9W;%U<$7gwX_UkMT+ zNtPz#rza8c3_KIu;6xgM4X_11p2aOq3>cq80WJbp9iM@t81^%nAcY{)7F>*DxP%}x zK@NhPS`H)yfeV$iC^sg593_rl|j%Ps_=(;1{TBlu_ed9*d(BWGBd~N(5O5vQ5rk0)@457?S4eKrJW67T4+! zhwx%t4&yDsXW}ZjdCJ_<+E}ieQ!yYgCM?5e#ZepZGH&T%tYHGToX!1?&&B8Q{h(S7 znXY{3jI9AGbIPC=NrNk$bECi-<{AP$wmuEgg9`xCr1a$*a<0I#ActaKMN z!@a}!B78Ak4U}Di*WgR>T3}~>>6tMQRLRh?=$sn(owBIQpzgXi!#S-gK^X*Pf*I^H zJXW?aR$E#W9TTgIfxkI_MBH)Dnh={)R~D^iWUt2?8pYIr*VCjedo+|9TFn6EGS{8()R z-ohHt0cu6u2x&`mXdnoNqze*YE z-#9?=C2|{n031hrJH7+oiSNR9<9qPE_&$6;K_?P)5<#5^I+>u(1a%>(D?!}|f~tKt z{2<OoLXf=;17o=Q+}`fnDs-Ly|&NOg5(HFH3q%rc~cMk2+u zM*|8s{7XM=yoXsOOUE z4kf7pai z%5S=DB)CX7ZR%`6&J;e@m%Z*EC(J(+%GioVnXn{o+##iR9wVhVT|eNT;tn4EnLr63 zC;rWE`1i)mfNdoLC-Cu01+Zbk#HE5HC=fRZV3XdZ;gg1*3PPql|T~%U z1b2Q|v~EtU<`~vPT$F;Q8$$?00FnBbx^-_8hn!d)g-SPkrh7y%m`+D+v}k@_WjXES zpk;8~83%hlICoe=9U7tN)}ZUA5Wt5w3qgX0f~JE}E~+d~DUU;K5vpkAm9;S{i~Lyi z!qOs8wPV>E2`AHMLOTELKsg{9S%`sS8X3{|ii@BwKhHyMfuLxhoB#x`MqFiaROj1W$TF$o$) z&}f3dedr9k@`E-vgpJlED&8!Y%S@Z=aj)lTD*ixxMFB! z^_bYAanU-EpU!p&NZ|hA(S@-QP*o|7mX$4uO0Thg*Lcr~@iF6zFk#a4 zde3b4;!sJXsHDX2DfIc>Oh{Al;Ra!vFrA1kDL_}?%sZVp#VC8%^%sg)6R$;zSCX@>m z1WhFf2%SaH>_qxdSU}T(1WkiQ1Np<=?oL@Vm|^Nvq9WT{QGHahzWFv_-7jXtbh&Msedu;&guj! zkuHx;C6(2kQWkhutvBPqRDQ;I)dgBR7y}4gp*)3YUu)?MYOo+ndR17pi-kS_A#{|Y%7Zwy&20u zr4q)RHaX>D#(0LVsct*6C39zQLA>xR>?vab=Y zON0!96od{}n!gaVJa~5yyI7IFKCXAVGD>VO|toGH!#f3UAV# z{0`xD;fQd7t{IC6T1-&UR^csOA3%MVFikj<&W>7wp;2&yifO{B8SznPCSOl)G!^Z! zHaHyiCbzhcg-;VZ@@E9qC#gOvd}*Zm8{s?PmY%N_AVs*WF}ErFgo?HZKMTJIzY=s7 zL4=@l6DdyN4-uv2Ek$00eSbNDx-J-1np8+A9c|L!!%(w$Dak*93EG#%cUwu5|O;)+JMHsxF05{liSg21(fCgFG!op_2EBy%(n^d`|X1S7%V2$1Y3}rt^#kOzksAQFY z<~qQx2Hh~Q=e0>}Sghcf8=DI?$;#@Ptb>^8AwaWV!PkL^4V)9bo>!o{M@4HOyroq> z7%JHe$!^Pq{6w*SBc$&j9|H9SFobcl#>N8@IvVKH8>?wFnIN$(Glz`)_}z`vL)X(# zXr!tcQ8Bu-qBJoVAlUFbY&0~*-?+ZTvEp<{ZHeQ=@!|wAUz{jT5+{pO#Hr#mg03Lw zN`kH;Xd^*a6Lbwh*AjFcL16hd?-XZ&#q+riB&gqxjy)4aQc$1jUZmb z0Esv~w+>p9V%5j?W=$QD`a;#ZN#Z_y8SOw}=bHMI!78I|$lI z&@R}TlHF_KGFprzXe&HTusCZmr6#KiDw$aoOfj-bE1?sxT3WIeC|!IT7y@?`NI1iNTL0e~b8lxR)lps5_hXs^;5N;|$v; zKAdFOBLv;k=*WnVQ>HvY(7i^cJR?3U-bLpQnK1AlVeZFCf-w8DfAUyI9EnqQKs-$K z^q_c%puGg`YY<-)Un1yXf}oI`s!XplWqPnc9r5>-DK(JE8c|VF*+)NYAr=2^hW}83 zI_B@=H%S9zrwqapLE?MjN7UrKFMc3?NDv6&QGy=ZB7Q7>B7(d9I6+Sm^mN?wEf_ay zME=BrA%jOu96O;Pf5@mIc@syB9aAuJ$Ta2}8!s3#bzBbQUE>$f;;He1$s_Vd-2D2@pB5v{KcQYT9$buKgY|A>t1NJ*DUTAcrUZ z+*qnKGzEJ?&l^yt-#(-h8Q`H705-Am(#cY1 zgAJFuN!^Vf^pe~VVoRq;r%Ju0EUAx_P0-5(y-LvQ1ieAfTLisxz2uR+l27tW0Vzn( zdj$PTco*S&6MhKc#~T^akJ0~1fjaE(EB&Mq*+c0*56g);seKlg7N#sIX%Itytw0^p zBJ|WgxMQ)0Fzh2O#ij+AIZ)WA>6Bx!PiNR~7N|Kbq8qUFPNidU$1>cvTeOn^w{r^N zdAR0TJ&{4b+af{6D*BYsrhshv(ADTzMV(GKGh5OWX%^Rgn>1CLCQX-SNHYm~pP&y2 z0vq-bK_73EW=jQJo-|V`B_1ta6oSeGa$};^?yGd10tt^g#>snq_3m3&VPssW) zcK}jZ@Z~~i{e%K%>k+wm(Taspy$vimly2c9$kT0><`eX(Hg@_@_nBFzPtD3(7--z5 zq)Mp*`&{qU~P3PQZMDEzS+A=6J9y=e`h+H6V z{;?moqthH&0Xfu^`=*o@*UpWPy;NFev;&$%*ay&Ku4e$^{pr$q(ke)^NGqh3()rQ_ z1bs`;cLYJ|;)ku$h0;aR#S(QGkblJBiIoY`8C&DM1*4-?T?T%|D4SUyh`^@c3;Fs4 zSO<%Ad6LudDQ=XmHcs(6336uJq)pOhsX^KzZ6)Y8f_^9H4}$(AJhx4{UfK?7w?o=V zctoK6bPVAI!kho!sokxV8MhIh2en%iotothWDSnR({<8a(tT9zc1ZU~_v#ZA2@mYJ zUwS~=OL&>^3gJ!vklH;eJ!X{2lhRXhwOh1Fmu_5q&p|%}sNH_)dFch|0O2i!w-Vk) zc>7lAkaSpjQG$TqL3ow$PQqvYSJW=(gT_>kFR6BKQBJ>2_>5*3`1=yHi*MQl`(vZw z`&c?kHSiPZQ|UA5bLk7hw<3IN!nYxOTf(>7CVeTvqixbR(zk?fPxuq426iNTm;ZMf z_$%ehZ-npA9A9Kk7N`b(Bl9xWCwL;^Pue1jvLu80bt3%9gzx;%XrOG9?FO01P8mEs zDx@xh7LQBSK)JQt0W?rnz;6jk_p)K-gd5k=k@L|G72;cV~(z!|UWTQ-`$&dwQI%nK$<=Ju()wu%s3^^(n z623p-2N3==!Vlak7t1lZM4m(VL4?mCd@kV!{}*&_R(-?`Pi$lb1CjV{D_2ogFCcs# zuzI3rTvlNuYvP$haLPErV++<^47ElV4Hlsyj{M5 z@S_P230}~SWP^Q-hg77ei51wGsJwf@V>|{2|tnWlL$X~n|#0g0Ibw|<$Z*oLU^d{!l#5kTB}rMwz@R zzm-Ng-jhG3%JIJZf&8KT5#ghRhxJ-S_~NbdC-SHAXY%KSj}g9v@UUd({TEj1?D~MW zPbkp4li%Y_EYGR__7*9eat_yhw|cgM6kfrK zpoog3$cmzv6tiMctcp#sD-K0foJxk0skoF@N^7N!(pG7wv{yPPCnz126P1&cPRhwj zXQhkMRq3X5S9&Ntm0rpz%Bf0kB}?g}WGimPqj(jc;#UGnPzfnvC8G3I`YHXD0m^C0 zKxL4UqvR@i%3x)PGE^C+3|B@drz<0sQOam#j51akr;Jx7DEZ1nWs)*knW9WprYX~v z8Ols$mNHu@P|i@IN}*Du6e}^MM46+^RZ5k4%6z3vDOW0#N~KC!pj0b0O080-EL0XL ziGhVW|%zmD)52!93PuOj@_guj;Xn+V@P_^pJ$p73BfAk4Ut@HZ2F z58-bm{OyFllkj&F9v1%ngx^beSmzHD{!zj|PWUGY|1{yBCH#KE!?HL?cvuWC5&jjz zzee~YgnyIpZxjAq!oN@W4+;M<;Xft(=Y&5>_^$~64dK5d{11fxiSWM={x`z^K`=)! zPq09+M6g1znP4lyc7j!cGYEDO+?wFF1h*&n1cFZ_xD&yh3GPa8cY=Eodx83ekDaWR2jVmz1Nc?6dcTtSubT;)7vg|bpPU%5b8rCg|7q+G15RxVN2D3>a0 zmCKZM%6eska=CJaa;0*WvQfEOxkkBGxlY-nY*reSEy`A9n{vIfUAaNoq3l$4DK{!N zDK{&-l|9NW%B{+6%I(S>%ALwx%H7I6%Du{c%Kgd%%3kF`WuNkp^04xV@~HBd^0@MZ z@}%;V^0e}d@~rZlvR`>#c|kd#98?Y|hm{wVmz0;4SCm(k*Ob?lBgz}fo61|t+sZr2 zyUKgY`^pE(hssCF$I2(lr^;u_=gJq#QRPeJE9GnD8|7Q&JLP-j2jxfQC*^157v)#w zH|2Nb59Lo2XF?|4giV4;B)E#;#RS(Ad=|lH6TE`pRRmv5@EU?IBX|SB*ATp!;H?C2 zC-`Q9ZzcF%f*&CGA%Y(x_$h*)Blrb^4-x!2!EX}$F2NrX{0YHd5d0m%KN9>a!G90| z5kVx-J}B4-GzSWqL}){V_C)ANgp-NTl?XkEa4He9iQpqbhzR|Na2gSEh%lH4!-+7G z2xEvao(L0(Fog&+h%lQ7Q6dx*VGa@I6X;nI782o1BAi78LWJ{(a6S<(BEls^SWATU zM7V+o8;Ni&5gG_Iw+K6ka3c|R6X8}O+(CqUh;Tm<_7UL`B0Nrnr-<+z5e^XHFcDrR z!fQl$lL+q+;R7OkOoY#f@FfwxA;J$t_=O0+6A=+nB%(q@3lSYe%p}m#AhsvsiA3y7 z#BN0FMZ_#3x{2r`VvvXtBK9ZZKqBT5aTxd!$@-zmtf$C$XgXgOPyQB{*3bt=$_vYu zK=QYSb_f=f&=bqj6cA%2!BC0M-Ce&@ufPwF*32Cchy=qvU&QSWdxD;jKN#>wQZ9*? zA0x%#XdrB;6q+22rpf~KtQOIfOd_WYsMF+ed%+b9dLy2o+Z%$Xvw^gfYZy^sZ>+d5 z=BAa#6h^riQ43m16jWN%Fv{ciczj+;P|)l5_(Q>rVe*1Q+Rpwj&ZVxVI=i%@ zs0_}_$S$lY&yLnXzR*ZmPevF#)pfjAT+kg1h1_9yJlzjVF9c0_&8@g7Tmi~x(4#Cy zQ~mL$$?p$G!U1K3C}ATX&uTy&ugg>EDpF!!k*$tQ<-=I z0gn$lQQYo`#}@`02>&$^3cbBB=nDi4$~%$~wX&s(5-E0<1d83UP!mN7cwjww!@+>h z9q@Sro`65lgeJJ#>nScgW(ym~Xu6=KG{KT6E-Z@ri<{8o^M<^EV8|EohI~P9kScH! znquy7ED-a>j0n-8RA& zFxX34&ck#&Zi;IX@&oy1|45+ySpU9FF+h%_?Km z6AZ_Kg$BdN+VuEqS|nJ*x-$rtHR|!#{RiAH^o9z(u_m@F7z&4cu;So6<1n1K9D=>K z*>x8T7MDZ}Q@x03#O4+)3#x3ogJ_uMr3`XQi}V*xR;150CAwOTmTLop-u54GFiorw z3VOl;ZFhrpSy}6yybW2NVO7HT8!1z*H0)C&z z=Lbj2*K`*y4tS!4o?@@j7T?2Yy6t#)G6tpF%Yg4FQ16fLzA1|T-w%L?Qm;!7zW-ei z4DCGhfla>Wcs3lv3m1nk8@uEs$4GN?S|~#68J~yQihfm3~w8c;QdP z2MHcp0=j1XGr$I8MXBtHo_zSnG<3l`a=f!SW5%yf3W}p@L-4A?}l~@$OnZ&fv~$- zSHbOzg^CQ1f0*<$5DEXp@m~S)ZHT(xA#WrAu3$5(G72j;3=cA=#zkK-Mm^OcwPDc) z{hK~jW)$l84EPynR{r~H1DXO)VHyE{VSvxIh|*&e+^{+Q$$+0PQ16XX`aj*A{<0CE zPYsq9(Q~&AoH7e+LeO~Lf{xhkwc+T+{ltl2KsV~I+m&OG(G$xncp|JW$3TANHvdHLrJ(rtc>J`L^}krZg`0eM6~d( z9#3=LMYNCWbX07KkkS(2r1rX`2;))M-BGg>|r#$*K(Tveew?&_(fIsQZSrNkF-8x{|HN`?RApQI_| zhfyJe-8Ae2x5gU_`Mf>@P3-9w{%jO&>_6~lkgqFo@R z%wkXo_DBr>Wr4akzJdKucly5`hE5%qmy*;q?8+0_>iN2*(t|ys*jF5bq-}~>)6Frh zF@mcb2!y>6UnD|P3MrQ`>4m+;MNm91ju|v+8l&mk7A16O4yS3vU=ZYNhW~wmO8$$2 zObx!F7Ox+3W^^;?3q+v*^2ZiAz2LRL12Kk-y?HJJ{JEvVO&`a^Lk3z#_CQ@Q;%jbO zgQ9lS8!j;jx17=R>whvyg9cYKz~2khy5n2|@Y7f0c|HDcGwmp}6d3gfii~z=5u@eL z7G+zTMCInCIvhrD-b7qc|GLXOz77s!H0lFkc=-71Lo#~{Ei<&w!P|7PgEsj}ii3Wm zKCECgiN~L&WLDk}kt+n-!B7(eM7_x%>@7yu>q178{7=#ZCNW4I*5S zx4}Tuo}ie!Fc|d|8B>_%2N+Eq3e+j_rTN$Qv!>@(H2K8H;)mI29gjZ;;@%G=Oub>K zRY2LiiE#oBgy9dg5u`4j()+tS~NiFAr&bqWN@cHU|c=5clnPZ?2J$6wURTnzNU_~GHYP;;V&K*sI&8%6yk zqbd9N(*yp6U* z5AriZ_O*1jdZb?r8*h_5fe+qk1%0L=+WhYWm)PG-=m3sls0gxxMrYvEDQL~SRK)nmnt41~k7*Qizq%ZU5 z!@F+sVr9n12rPXW=I9o=7Vw(d#MxRYN^aofKsLbG79CsXt1gDuoYXGK9$O9PBgKjb zm+GgCHxbuhHpuw@I9N{giYy}-YX0%JNy%sm%&s>a4n&&E2tknpYITOfi)9R>Y0`14 zN*iWOUw%4;;3@xDtY#Q(DjRLu@#in}RK|UIKa@NnTx%{?gGkO3j2fIN%PdCIi~{x6 zxHI)XO(enKf8n`1y$RUhyIBg^L}sLPk^U_|ufkoCo012Y6Drd7A`lrl`ocFV!=e=CoXRX`@GY5*Heh{oV+a z6QRc*9JuD9B4CskS{n>LhsKC1J^qaH_&gBOhJ#_Z$K#1WHow`-Qy4ZnNB-mL2z4?qx_z30{^&T9Y$(eDTjS>qGjXLf%Nkn?QTW@;IPzcXRh}_j31X z5v{M*PwT(c@`U9{Kzf?snepIgPN) z6VPv2-cJktfd$^?YWbMpl?0zpp)b&(*FBQ^`IMP6>itk@g7<3&BJfgph*p5)Kmzut z<=eEd-&wwAOudlci&B}|xl8xRG%8|mAmC3x{boh!psc(VGpN-BUy=&d^V%10W|D^2 ze>duj)og{AY&Ea=R@LfcNS6}4Hi@(@Yvlac5JnWFSrbrgtsT=sooGFYL9HWreG1h5 zH(&VVLpo7@I4~|wRCnvCfMo4q?P=|0J%!-Q3BH2hD+#`8tF^Z^iy^^+yt)zTf4CY~ zeH3f|(>#3!P=8I#AZ#6wb_Sgi`_@LS^(PlVo%PJLJgv7b1xdk4HoFPlL#J>Hlhg|X$KM@bOUV;lHnraCPPM_- zbFCLp$n&f#tShbO6MP%Nw-bB^!FO)8uCiVTkZ>T*T?F4vA>l~+|DpP>G`%u(?)&;w z0$>iO*8BWmvl6Dzdbt(Or%huXuCZRr1biRC_a}8_O-}Ah`+n9T>HZX7)7z|cV`{Pq zSa(@rW3s|YKzj*(kfQ9eO5hvx(6uo1pS_6GwR_<9v__Z=SdQHyY(J` zMSIbMXdik=J72p%TcusN)q1b>K7fUDg&rpO5eoaL4!eHkfEmAUW%CWXVZMHP7FiPR z5i7h4D$RVKvOW!v&l3DN!B0@gCw0g*11DTv)_F!fWR&%7L|?f&8)1O>>Wk8Q<3tl`)<;?2(2&)q~C2kAX)#g z{%PZEh~UEnzew;)1i!r1hHV1Z%_b523c;^Zq}TqZdVk){!5^-;K%W8h71AZ_2k9l` zWm9df=v10BY_`_6HjF7p2!12UlvO_-%q^V53=Euv66cETL|YetYNGhIt~PjSldT8A zZxQ@9g?WdG{?t7C`v;lmLjfO%-U9(!6 zH3Y8%n^y1lgUWl71opS(0A91cuPxV>$L9JG!SLexq$+j3{`ObdTtmKuF4<1EjZMq8 zaklY5UOs{Mnc~kV)aN>RtG>Bf`E-U(9-NH?l7RY6>TIXkW&@;cx^0GSrfn9%M+v<9 z6n{nV*IR7`wlf%Y-w^z5BX$2nV|wni_jh0WVB=I0%fdF_R+W~&3vAVF2Hz9>Ln?oJ z-G9y7I#P-awJouol@@6^)K9wE;K;R~2>zKO{i3sXojT&<)va_SVC=Ffa8PP0ch9$7 zoECAl?Gi@YZv_9IO52$87CpsiOPUee1{<7E+PrUKyV`aQL;8~lToP&3C;cz#Sgvc4 z4+^4*6|>d0BQ4ZU+b)>qO+?^{fB{Mnm=+!IuRVLcP84LmL5qSO@WYdkx7pGLG`4$e z5YX7*v^I$dGKEwa=N>-gjoaUt0Z6d=pr9DkJu&8}PD$*CWZ_?8At?fIQE}UTJ zB0?)V-PVkak5#>}c>DBvcv}?2Z!lNzYoQyDo;#Zm_-}R^&NMNRcHYiH8KEr^+9ip* zqR;LTv(_>b>2oK9Y&Y9!EYqy1u&Z_!%LpBaa6%I5+(LK7*Nb(%fun!o1lil#X(-dI z`L~~Fhfv0TG7(NB!bx7-*UCv`ytv$~^JT1})`{^*zQAFrT zgkE%_r!aw@CTy8IVmfnr13tRgLS8T`iQvLM!9E2*n~HO)eHsA5QH#BakVOIe=zv$8 zy8OfChiBIN!yX#$fHO^lXNaa?IV2V! z-gMT~(Y3F$uV?b^PlN#g*XZnRcxA`iPg`e#-{@vcO={28_RVQ$-C*Cs(15N%NwjsL z8}FHNnY|-<=j}kNp+~l}m)YB-EOmtt;QThdTCQKQIlR4NAla_Pgy5 zq=nmSe-POA5D|tDVJKzWFeZ=9x2&6<1=>h$DI`rnbwWPs-z4Yzg#FoOIrp4>KO=Ai z5l&AMxZ%K=16=KyAd)FD`-}G10Ht}6zHUFlkYKTlP9m-Pf*fcV#EeVQb+^A~r-w2( z>u=dVv46^t#u8y%5@}6N-_P#v4O-`=;R;l6lRW#{{zF>2ezgC@&?XQeKZ&;bt=#%d z2~uD1d?TQNIZg=lPlu3>Hizht7}_KvOirS$$?1CWk#m@3Nz&!8IWp4G<;ZlnxNeTt zM3_p1X@De5XG`Gy-;|O=I#R?#B?(WCfg}^uIZkk#oR+%IjxLP4nM9bCO5NxSdiT^Z zQ#LZkDUR&4NN$IRAr%nej8vq-=kBX-f)sYpOi#1Ybe!gZOb^{$3yDyaigY^v^^qn> zLmea2B8_s4W=Jt2l%ygR?YX;+jucKNFdY*e)6ybMcgz6Z&mzKHB9sD>Fi+?Gx<}Rp zKIsK7t%2Gw@SLV^A?X^V8?`49bvlY1G~d%C+IEyW<}vchh)|v+Z^O&Z&pLT^@=_uq z#{vhOy}#8_?Wl3oI_ii}NrWmQEFePlR>va8VjvHW-K`-)EhVq+e;Ox}ho9Bf?}p%B z-bTNz6`)>CgnA+@rKrnv)GPYjY=2H^^o$_bgIy%( zP1!{p4UX+;HRA@y4kpCqM9`8#T$6KZ`zK<$5L40yjy;Y$(jwjIxC^L*BaqJ~!a0<> zb9L(0Zk~JXr1xgP`$4FIb^`--UrOk15Q>p8>=|B-%qoJhEeCqfzEz(zxuNl%BB3zn^)cM6feq)kIv9v!qeou?^ zhvQF%bQuxWr6P5C^p|lSy0_-AngQ$YKZHmMu>175jFvwuvyoOb^C6->du>C?}eUT&;@9s)!oxDbtU6k zs}58L18$Rbst!?y0_JccY$3u{in)#HntSN^vTIho-|dM|1%s!Ps2d4qrlhV`b&Q%% zdDvVQN}Z@qVw2xagd38RU-iY$S09}LllS}dd?Yl2C5W7{#I!~B(uGqBr;aC<6P(REi`f9#@C z*QxLx;bsJSmAVlGdJPfoB*I;QBHZ0*Jd`inw+ELB8moXN>S};(3(?ntCas6MMZF;{ zc{|jdjJ$h^a9=8Uqt{&DxaL#1c8hvvv*g{S-VNjd!~;awOUZkXk$3W$SiVjowZVAO#F{&14IRWD?Y^Ss5>Bk8B9`_)5f=XqFt zks&=wgvXLdYjS$ucNepgDXxNgL``dN)pylKd;0_to=im=J!9z~%!j~ZXRHX*D zsm^|-g0WSiDBljFKM zc_Qp50?oe*FX)IHj;KS9K!J~fL?DQw#g%flhg0gjg}^IEORbMi&X8b zVMw14;nP&49^rGoV8kU2hVx7(yxuAeO`4OyG|wTz=S28|PV=Zf&2z%vOLf+`S2_WHh9X}G`Ckpw0rG0lmQ%lo# zK#!s#kmS&NK#&qTp-2s(_mUVyMY>3pCZZ@uR4g{`@G-#eg0vRWzX--?#|B6&hE@Ctw6p5QvADNIS%U%u%v`VCERG(a1Jl_e=%M& zk_qGfLy{mnkew?H{sOK3`d5Q9XT3ZXJb$Z?Ap4OcFw{Tv2IMGm3?^>^TKyeb{R4&q z5XrJBfv+&Ko2-e0ap5GAuqN`S@I>B5vX2{oKROSQkCvMatbqWw{rnFL)T!sMuYH*Q zgQfo(l$S{MapONb?>%zms1aBP0qg%lIiFO8N?vL4FTx!84aGic{09nZ6$(CPM8Sk` zL%>FM8+n%d?R-*2!}f648m6JkwkW_VA-s>%&|{zZ!6W^XVNl#C)K|ts2m*ewnx~r*?C<||Z|sjr zg3?8??H9itS(Fh9wqKx3AwU!Y*hX_ee7ViZ&f&+mOu{C84OlL~{;KRI!@fuG_dk2m z62-o$@>@Pc*`pj_R3`|Kga9cvs`N@v`YM?neYVUma0VB)RMm#z|LR2&%Hv-lx1)Bf zG+71$WMRlZPrMCrhTQ*91yH`Iz<+J?9#jxaT?hooL4Z7)y3H$Xwngh>*rztIK@}!T zQw`Ru*`@&aq9*&-pAC;h#lq14WX%1jI2iUI1Smp)5*t=|8TNb<<4GD9tYs`)XR*k{T%=4qgAZKbBQ=*u!{^xK=KjM45 zJi=PKf6cloRQBLVnjt~k0a2^loTHqh#^^>xi@Gl}6bszQQUnzWwdIsaZfB*snn6q&$ zmT@!qq@9_De@rp(Lt^z!d`AAbi)e8qL3g=J3Bo`^#tTS2U3oG^hVPnxCG( zj|T2<;i=G)D`+nNTQv9)<)ydI%r+A9t4mfU>gK%hk%_BunPjbA;7l`y#;N6HbfhtjnO7( zc!BVTfB*;xhk(5h5CZ`RAmHHNhjb;c3;;XjX#5<~;IIIAG)>L4%*-{-w6SIc93BgM zP2;e5SgXOpduMn}!E2bphXB9!|4J?x0QRK$4$z57`FMXRBX~u5K>$o^=o~r`u>pM)eQc|Ps|p;m-3u?n0RbU%h<%7y zbQ1c+4hL8J=qNAmU_bUVbhzjw;vmVvmHlg_(rI+E$1l)D=oG}kUkg@hrJ>V3`2?&9 z=5}EL|JfOI^cnP71l-tv`MW0{nm}^<&!>KlL0HgIf4GuWNY_e<+ZUcu3ReDLsx{v@v&UCXAX z1_Jic&~*?H`+q}C6Puc52-yESYPO*}e^LVvV%%TUbfY1@uwP!yLihc>X9m$je=itC zkF$vzgMdRc^aKPX{9V4S1T_H;|35j*EXRb74G#{BfTQlk`oLk7;b{7MRDbr%Mf7F% zS~`zjKrf;%K>!2+M<5^(0*)4=ub{7@uc5C)z%d9&hJX|Z$Yl50W-=Q^6V4g1$ImC~ zj}Xd{VbKvjes+P8Q7Vye&cCP_IHjH^pYm_2!hsKC0>j`0VO|jdet$e}77XW%{C)L* zow}ZUa=$_MTq*k%{AW||q2YZdjbmE^EEyg`!0|t_YoniV_!Oa^qMt!P5(Jz|i1=Cm zCHf5lRm9=X5s(m+5L|?Qi+%?ICm`Ttf~hB;^j{5jWw)1|A%^XnZS4z-mq7nOzX%x< zKNAG|-%q?H^w(eUI2q{g36l_TI>A)NwKrV0{dKTQ^9_beh4+WeY4g%64APoWzL%?~qyNi73!&6Fs5CHOk@D{WP8UoHiKt{qQ(#k-RR(kHYgunvrAE95C#R@0_!m*OX|27=|DJSTl7%0w` zF8{sSe-$#IBnao3)P?|Rg6R%ewmQJsPF*Dj}c>E-`hFTAo;NvdnFPk>E2=Vd>i;P{)=IP0Y@r{Y{U8WBk z3@^~ZSf8+v@MzenO@I04?y$%xQmih{6Q||06OK%Z4+{%|g^;?Mvii@i-3fZbsnbDE za2E*6WLVhOLO>lI^Z|X@j9w1`)62Z>$)^SnlPNr7V&F6sF3UQ<8T_tbKlU7QjSgWu z->r_RbU{W+59V8-vBKM!VtSrE_-0X-1V z%YL431;9oB_jFJ}+V60RKspFduRaLqhkyYX$N1IX+O({XffeXuj!4cRZ&<)bMyaV? z-g)AH9&0Yi}-DSPllLIbxlZ^@sM$CV1wsv23&w!;AS^gwu`mPy!?0w4fDs57Ed`svX0Qcp zh5v_(UGlYWd4JTU=oN`@Cj{cm5wM!MhB&lKg*1VpnpF+Rt7_{)d`ucjo1q ze@c=$kOgZqePBPE$)n&uvvn7hRfM5I2$)<^F$TdQn8(;JDFO!(2Y0%K`Fib_@`{43 znfe;Kd{0({?HGp-4Y3iPK|i%Pa0;AdD?QWT3Vs zkN__@@J9IWQd+}SIrNRgdLJ6Ub&_@_^b8xTa2D!!HlT;OMO>S*&9c}|| zBW_b}Gwway5O*p!mAinO#!crg;V$E@fZhI>+@0Lr+$`>X?m_Nh?osY>?kgKbHyUpY z-I%_yYUA+6dmCT#tmaw6!v){#=jP#oZ}6jdKpp`e1s)~%zPu`rI*%p~jz^DY3y&d> zF^?_JPM%<%Jf2#f8$3^WzViz5ZsL{W)#SC}wc)knb>Ma4b%C!%l6c9y+jzIbHxMIv zqv5-T`*{!W#`7NLg?JNrkMSn)GI;xWr{GIoZ+XA-q4*T|jQL#nJo$F`qZ$yit&Cqt}ZDC8Phh{m0fBgd;{wS7X9RKur~(B7G=X-3F@c)`OM;-F zfS{0|h@hCDwxE%qxuCOPlwgA35y7K^#|2Lao)Rn&qzTdmO9aaVD+C(^+XXuWy99d# zS%Oo7GlFx17X@z%-W9wr_)zej;0M7^f}e%f3V}ibLPA0!LYhL_LOMcvLR*9gLY6|- zLbgI~LWhJBg{p;GgsutQ7G5h13JVGg3yTR$2ulfT2^$LIg$cqI!dAjW;cdd(g?9@3 z2>S^K2nP!96Fw!JAxsr!2-gbN3pWb42{VN|g}a4kgf9!<5q>TFNdypCFTyRtBZ3y; z7ZDT@7LgZm6mb*r67d(=EwV=>Ok}S}q)4>LVUc8!b0X(OvP5!33Pp-UibYCA%0(`U zJQH0lx>1x*6eS9ZN{gzAYKUry;zV^t^+gRtjYRE59Yvi*T}6qaTSeVPJw$hi?h%a< zJtJBo$`ZXP`c!PK7$_z#CMhN@CL^{gBUU8&2C@vr_B#srg5+{n2#kYy?5cd@K5)T&7 z5-%1n6)zWOh<}ujlGq~QE3sE1QX*PnpG1O0qQo(YB#C^9N{I%ECW#h_Hi;eymPEhA zpv17mjKl?rd5J}ddlGLY-b;LxSd#c6@lE1~B!?uQBuWyL6p$2>6p<8@l#rB?)Q~im zw34)uw3Bp@bdq$J^pM;k=_%o@~-47$v2YkBtJ;4lH!v>Nr6%VQa(~iQW;X2QrS|uQgo?Osd6cX6iaGK zYEkO4)K#hLQa7a@Nj;HzCiOzGzm*7!*bjBa9Knh+`Bnsu*>QCPo*d zk1@a)VJtCDm>n2zj4#F?6NCxDgkkn#4q%RA&R{YynV1|51w+NuW4bXcOh0A_GlChz zT)>mD&?x>YUS$X8s(bhTIJg1I^^!iua;MocaRT~Pm?c_ zr^{E#SIgJRcgoMoUyz@dUzEQre^vgv{7w1W@^|I$%YT;tCjVnI=Vo9t*X9kIc{U?A zqc;m|7TRpRIczg!bJOM<3L6z<6$lDD6pkvKQOHopQpi=HDikQxD|9RLDD*1yDNHL| zQn;`1Na3l%3x$u09Ez(IB^2cq^%PAMtrba%I}~>*`Y8GZA#wsQ#o>R(;DoH3wDaj})D`_d|DcL9ymAsT9m7Z_3}XYq9IGXskR|1&hbpV}r5#vB}sp>{;x2Y&MpH z&BxNP#n>_|6WfXH!S-PXvBTIg>?C#?JBPi9eTn_9f>M!F(N?in@luIbIjd5k(xB3) z(xTF%GNE!o<+92hmAfhrR9>pQQhB5DMdho?4^=MJb*kK|!m1e6O{$w!l~h$!byW3L z4OER)@u~z>57k7~^Qy(F^{P#(EvoIRovPicIc;& z)vu~Q)Hu~vt0C1S)TGs9)#TL_)s)o;YR+nIYFpK|scl!=sTQDiNbR&*t{PRXP>rru zs#c*^rBoSlwMcNYf?1xHRm+1YTna)sQE3#zwP_7% z&1ubRUDCR$bwlg6);+D)TJN+zYJJxFs`Xu)Lwl7rzqYcrlXjSPzILnjfcCKVnD(Uh zjP{)NP3=3{_q88sKh=J&{Ta6ww;sohD1}bVd+fiT+o@R|ZbKrLSwLYp3g=>!eH6CF^?V?$8a_-LHFG_q1-R?it-o-E7@l-8|iH z-D|q{bsyXG$4 z^mgib>A|tp^aAt_=~48W_4@QK>vQW%=o{&~>qqLJ($CVb(y!HT&~Mgn)9=vl)@SJt z=nw0U>EG19qkmujk^WQt7y7UD-|2tU|E&K_|HqasTefb2wzO?|Y5*Eo8AKRV8QeE` zW3XiK)!>IAr{Ow7ZbM!}lp$y+Z75^7$#An_pka(*tYMsCykWQDxZ$MXwBei)+DOVs z+6ZGLYouRO3S9hsLjrmrR6ABu$J= z+)TVod`$vO_Lzj2gqg&e956X#l3;Sie6h z;N$VxcpAPKUxsJk8}Uu}7W@?cD*g`sKK>E@DgF)q9sVQ!Gyba?V8&&(!HmaD&`iio z#7x7?*oQXy#%@G}~(CYvymZ+bqbe+^pHG)vVpD(`<>bhOm~vMOaS|BnT0N z38I9}1Z{#YVGF^CU`ikmED3Iet%Pla9fVy3AA&z&HzAs^kFcL`kT68JK$s^i60VqI z%vH_R%{9$&=7-Ero2QtknV&UZFu!Yl-~6HZ6AN_>) z(W1qIWieneY%yvvVKHqnYw_HY*V5k7%QDU~(ek+ENz2ognU-`*hGn&7on@mX)3VF5 z*RtPo(DJ6`2P>47q?MGFw3UpNnw7ehhLx6;p_Pr5s};%0-D+8+BDg)Y{qORZDwpP*euxGw7Fw*-{z6cQ=8{DpKMp#O4yp) zI@o&H`q~EA?y(KF-Di8$_L%K)+Y`3uZ3}JbwxzZewpF&ZwoKbD+g{r~+di@X+Cv z!&`?B4xb!XIr2FQI*K@oJ4!jqJ1RP29n~B)9PJ!^91lAtJEl0MI;J~P9rGOv9BGaW z$5zK)$9~5l$5F=#$9cy~j#nLTINo-=>-fU)vlHmF#fjkL;^g79)5*)p$0^k5fYU*z zc&Eco$xc~LxlUB4LMOUYsZ+gElT)ixyHlrAj}yyj%xThT#%a#!y3-S<*G})8K01AN z=5Su^yw-WWGq8hGr`&3*~!_}ndI#5?CtF5yxTd*In+7a zdB5{f=M?93=X1{Ior|35&c)89&W+C9&MfBv=V9kD=Sk;F&R3mpINx%<>-@m^k;`fq zITv4-SeG*{xh_q)I^@Qtb*A&-m*J9Uh*ZZz7T)(-kaoga= zRm6Y)fIq7~7W=sGkNA-Ig!r8JiujiJfw)BcO8i0MBmpEY(gqR_2}uG; zf+P`=I7x~mLy{vYkd#TPBn^@_Ntd*RWJEG05lEIK8PU^G7E(K@ zlhi}%BMoky*gCy+ZtMKkOIxpQy|MN7)_YqYZhf-#`PNrk-){Y|b!qF@tv|?|WPr>? z-azIdBgr6HkSszLCrgoK$Z})_vNBnftU=Z$>yo#SjmV~C0@;#mL$)V7kzL6ovO9S@ z*^}%|_9O2m2a!X`d&yDcedIWDJUM}!NIp(JNlqrGk{JK9~qUD#dBUD6%nzR7*FyOO(#ySlrUyN;@yP3O%yS2NW zyQ8~{yPLb0yN|n{`)>C~?(f|{x-YqZ-4?&?)VAbpsoTzYpgbf!q&;LjQ8bOJmMifL8Mcj>e74atGUBt&o(@2L%r%0Db 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 - - - - - - - - - - - - - - - - - - - - @@ -154,11 +74,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Items/File.m" - timestampString = "462700393.667462" + timestampString = "466317911.852232" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "166" - endingLineNumber = "166" + startingLineNumber = "167" + endingLineNumber = "167" landmarkName = "-toJSON" landmarkType = "5"> @@ -170,11 +90,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "Items/Connection.m" - timestampString = "462786540.058618" + timestampString = "466048200.98878" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "115" - endingLineNumber = "115" + startingLineNumber = "117" + endingLineNumber = "117" landmarkName = "-toJSON" landmarkType = "5"> @@ -185,13 +105,13 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "RequestRootWindowController.m" - timestampString = "462783965.798309" + filePath = "Items/File.m" + timestampString = "466319352.039055" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "134" - endingLineNumber = "134" - landmarkName = "-authenticate:" + startingLineNumber = "76" + endingLineNumber = "76" + landmarkName = "-setFileType" landmarkType = "5"> @@ -201,13 +121,13 @@ shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Filter.m" - timestampString = "462957835.231287" + filePath = "AppDelegate.m" + timestampString = "466327590.310649" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "213" - endingLineNumber = "213" - landmarkName = "-filterConnections:items:results:" + startingLineNumber = "653" + endingLineNumber = "653" + landmarkName = "-reloadBottomPane:itemView:" landmarkType = "5"> @@ -217,14 +137,30 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "AppDelegate.m" - timestampString = "462958621.25846" + filePath = "Exception.m" + timestampString = "477800890.177901" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "1507" - endingLineNumber = "1507" - landmarkName = "-selectBottomPaneContent:" - landmarkType = "5"> + startingLineNumber = "66" + endingLineNumber = "66" + landmarkName = "exceptionHandler()" + landmarkType = "7"> + + + + diff --git a/TaskTableController.m b/TaskTableController.m index b0ba8f0..4f3c674 100644 --- a/TaskTableController.m +++ b/TaskTableController.m @@ -681,7 +681,7 @@ bail: //only no for leafs // ->items w/o kids if( (nil != item) && - (0 == [[item children] count]) ) + (0 == [[item children] count]) ) { return NO; } @@ -693,7 +693,6 @@ bail: } - //return child -(id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item { diff --git a/UI/FlatView.xib b/UI/FlatView.xib index e336252..311662e 100755 --- a/UI/FlatView.xib +++ b/UI/FlatView.xib @@ -1,9 +1,9 @@ - + - + @@ -65,7 +65,7 @@ - + @@ -155,22 +155,9 @@ - - - - - - - - - - - - - @@ -179,7 +166,9 @@ + + diff --git a/UI/SearchWindow.xib b/UI/SearchWindow.xib index 792fbc2..a8cd2a0 100644 --- a/UI/SearchWindow.xib +++ b/UI/SearchWindow.xib @@ -1,8 +1,8 @@ - + - + @@ -21,7 +21,7 @@ - + @@ -29,12 +29,12 @@ - - + + - + @@ -74,7 +74,7 @@ - + @@ -164,31 +164,20 @@ - - - - - - - - - - - - + + - @@ -208,7 +197,7 @@ - + @@ -275,28 +264,17 @@ - - - - - - - - - - - - - + + @@ -325,7 +303,7 @@ - + @@ -358,23 +336,12 @@ - - - - - - - - - - - - + - + diff --git a/UI/TreeView.xib b/UI/TreeView.xib index 30208f7..50630cc 100755 --- a/UI/TreeView.xib +++ b/UI/TreeView.xib @@ -1,9 +1,9 @@ - + - + @@ -65,7 +65,7 @@ - + @@ -155,29 +155,18 @@ - - - - - - - - - - - - + - + @@ -198,7 +187,7 @@