[
  {
    "path": ".gitignore",
    "content": "# Xcode\n.DS_Store\n*/build/*\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\nprofile\n*.moved-aside\nDerivedData\n.idea/\n*.hmap\n*.xccheckout\n\n#CocoaPods\nPods\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Eric\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "Reveal-Plugin-for-Xcode\n=======================\n\n[![Join the chat at https://gitter.im/shjborage/Reveal-Plugin-for-Xcode](https://badges.gitter.im/shjborage/Reveal-Plugin-for-Xcode.svg)](https://gitter.im/shjborage/Reveal-Plugin-for-Xcode?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\nPlugin for Xcode to integrate the Reveal App to your project automatic(Without any modifications to your project).\n\n**Please note that plugins are not supported by Xcode 8. See [Here](https://github.com/alcatraz/Alcatraz/issues/475) for more information.**  \n\n## Introduction\n\n**The Reveal Plugin works just like Instruments.**\n\n![ProductMenu](https://github.com/shjborage/Reveal-Plugin-for-Xcode/raw/master/Product-InspectWithReveal.png)\n\nThe Reveal app integrates directly into Xcode, so you don't need to add frameworks or modify your project to inspect your app in the iOS Simulator.\n\nIf you're in the middle of a debug session and something unexpected happens, you can attach Reveal to see what's going on. No restarting your app, no changing your project. All from inside Xcode.\n\n![DebugMenu](https://github.com/shjborage/Reveal-Plugin-for-Xcode/raw/master/Debug-AttachToReveal.png)\n\n## Install\n\n###Via Alcatraz\n\nReveal-Plugin-for-XCode is available through the [Alcatraz](http://alcatraz.io/) Xcode plugin management system.\n\nFrom source\n\nSimply build the Xcode project and restart Xcode. The plugin will automatically install to `~/Library/Application Support/Developer/Shared/Xcode/Plug-ins`.\n\n## Uninstall\n\nTo uninstall, just remove the plugin from the above directory, and restart Xcode:\n\n```\nrm -rf ~/Library/Application\\ Support/Developer/Shared/Xcode/Plug-ins/RevealPlugin.xcplugin\n```\n\nTested on Xcode 5.1 and Mac OS X 10.9.2.\n\n## Plugins upgrade for new Xcode\n```\nfind ~/Library/Application\\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`\n```\n\n## Issue\n*\tWhen using `Inspect ith Reveal`, if your simulator can't lanuch within 5 seconds, it's will alert an error. Thus, you can alse use Debug->`Attach to Reveal` after your app launched.\n\n* If the plugin is not successfully loaded, it's possible your Xcode version is not supported, Add the build UUIDs for the versions of Xcode you wish to support to `DVTPlugInCompatibilityUUIDs` in `Info.plist`.\n\n\tYou can get the UUID with this command `defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`, run it in termial.\n\n## Contributors\n\nWelcome to fork and PullRequest to do this better.\nWe use issues to manage bugs and enhanced features.\n\n## Thanks\n\n+\t[Integrating Reveal without modifying your Xcode project](http://blog.ittybittyapps.com/blog/2013/11/07/integrating-reveal-without-modifying-your-xcode-project/)\n+\t[Xcode 4 插件制作入门](http://onevcat.com/2013/02/xcode-plugin)\n"
  },
  {
    "path": "RevealPlugin/Resources/RevealScriptHeader.h",
    "content": "//\n//  BuildScriptHeader.h\n//  RevealPlugin\n//\n//  Created by shjborage on 4/3/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#ifndef RevealPlugin_BuildScriptHeader_h\n#define RevealPlugin_BuildScriptHeader_h\n\n//#define kScriptBuild @\"tell application \\\"Xcode\\\" \\n\\\n//activate \\n\\\n//open \\\"{xcodeProjectPath}\\\" \\n\\\n//end tell \\n\\\n//tell application \\\"System Events\\\" \\n\\\n//key code 15 using {command down} \\n\\\n//end tell \\n\\\n//tell application \\\"Spark Inspector\\\" \\n\\\n//activate\\n\\\n//end tell\"\n\n#define kScriptLaunchReveal @\"tell application \\\"Reveal\\\" \\n\\\nactivate\\n\\\nend tell\"\n\n#define kScriptActiveXcode @\"tell application \\\"Xcode\\\" \\n\\\nactivate\\n\\\nend tell\"\n\n#endif\n"
  },
  {
    "path": "RevealPlugin/RevealIDEModel.h",
    "content": "//\n//  RevealIDEModel.h\n//  RevealPlugin\n//\n//  Created by shjborage on 4/4/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@class IDEConsoleTextView;\n\n@interface DBGDebugSession : NSObject\n\n- (void)requestStop;\n- (void)requestPause;\n- (void)requestContinue;\n\n@end\n\n@interface DBGDebugSessionController : NSObject\n\n@property (readonly) DBGDebugSession *debugSession;\n\n@end\n\n\n@interface IDENavigatorArea : NSObject\n\n@property NSArrayController *extensionsController;\n- (id)currentNavigator;\n\n@end\n\n\n@interface IDEWorkspaceTabController : NSObject\n\n@property (readonly) IDENavigatorArea *navigatorArea;\n@property(readonly) IDEWorkspaceTabController *structureEditWorkspaceTabController;\n\n- (void)runActiveRunContext:(id)arg1;\n\n@end\n\n\n@interface IDEWorkspaceWindowController : NSObject\n\n@property (readonly) IDEWorkspaceTabController *activeWorkspaceTabController;\n@property (readonly) DBGDebugSessionController *debugSessionController;\n\n@end\n\n#pragma mark - Reveal IDE Tools\n\n@interface RevealIDEModel : NSObject\n\n+ (IDEWorkspaceTabController *)workspaceControllerIn;\n\n//+ (void)activeIDEWindow;\n\n+ (DBGDebugSession *)debugSessionIn;\n\n+ (IDEConsoleTextView *)whenXcodeConsoleIn;\n\n@end\n"
  },
  {
    "path": "RevealPlugin/RevealIDEModel.m",
    "content": "//\n//  RevealIDEModel.m\n//  RevealPlugin\n//\n//  Created by shjborage on 4/4/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#import \"RevealIDEModel.h\"\n#import <objc/message.h>\n#import \"NSView+SQDump.h\"\n#import \"NSView+SQFindSubView.h\"\n\n@implementation RevealIDEModel\n\n+ (IDEWorkspaceTabController *)workspaceControllerIn\n{\n  NSWindowController *currentWindowController = [[NSApp keyWindow] windowController];\n  if ([currentWindowController isKindOfClass:NSClassFromString(@\"IDEWorkspaceWindowController\")]) {\n    IDEWorkspaceWindowController *workspaceController = (IDEWorkspaceWindowController *)currentWindowController;\n    \n    return workspaceController.activeWorkspaceTabController;\n  }\n  return nil;\n}\n\n//+ (void)activeIDEWindow\n//{\n//  NSWindowController *currentWindowController = [[NSApp keyWindow] windowController];\n//  if ([currentWindowController isKindOfClass:NSClassFromString(@\"IDEWorkspaceWindowController\")]) {\n//    IDEWorkspaceWindowController *workspaceController = (IDEWorkspaceWindowController *)currentWindowController;\n//    \n//    IDEWorkspaceTabController *activeTabController = workspaceController.activeWorkspaceTabController;\n//    [activeTabController performSelectorOnMainThread:@selector(runActiveRunContext:) withObject:nil waitUntilDone:NO];\n//  }\n//}\n\n+ (DBGDebugSession *)debugSessionIn\n{\n  IDEWorkspaceTabController *tabController = [self workspaceControllerIn];\n  \n  if (![tabController respondsToSelector:@selector(debugSessionController)]) {\n    return nil;\n  } else {\n    DBGDebugSessionController *debugSessionController = objc_msgSend(tabController, @selector(debugSessionController));\n    if ([debugSessionController respondsToSelector:@selector(debugSession)]) {\n      id debugSession = objc_msgSend(debugSessionController, @selector(debugSession));\n      if ([NSStringFromClass([debugSession class]) isEqualToString:@\"DBGLLDBSession\"]) {\n        return debugSession;\n      } else {\n        return nil;\n      }\n    } else {\n      return nil;\n    }\n  }\n}\n\n+ (IDEConsoleTextView *)whenXcodeConsoleIn\n{\n//  [[[NSApp mainWindow] contentView] dumpWithIndent:@\"\"];\n  NSView *consoleView = [[[NSApp mainWindow] contentView] findSubView:NSClassFromString(@\"IDEConsoleTextView\")];\n  \n  if (consoleView == nil) {\n    // TODO: View->Debug Area->Active Console to get the IDEConsoleTextView\n  }\n  return (IDEConsoleTextView *)consoleView;\n}\n\n@end\n"
  },
  {
    "path": "RevealPlugin/RevealPlugin-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>English</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>net.saick.${PRODUCT_NAME:rfc1034identifier}</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>${PRODUCT_NAME}</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>CFPlugInDynamicRegisterFunction</key>\n\t<string></string>\n\t<key>CFPlugInDynamicRegistration</key>\n\t<string>NO</string>\n\t<key>CFPlugInFactories</key>\n\t<dict>\n\t\t<key>00000000-0000-0000-0000-000000000000</key>\n\t\t<string>MyFactoryFunction</string>\n\t</dict>\n\t<key>CFPlugInTypes</key>\n\t<dict>\n\t\t<key>00000000-0000-0000-0000-000000000000</key>\n\t\t<array>\n\t\t\t<string>00000000-0000-0000-0000-000000000000</string>\n\t\t</array>\n\t</dict>\n\t<key>CFPlugInUnloadFunction</key>\n\t<string></string>\n\t<key>DVTPlugInCompatibilityUUIDs</key>\n\t<array>\n\t\t<string>37B30044-3B14-46BA-ABAA-F01000C27B63</string>\n\t\t<string>640F884E-CE55-4B40-87C0-8869546CAB7A</string>\n\t\t<string>A2E4D43F-41F4-4FB9-BB94-7177011C9AED</string>\n\t\t<string>AD68E85B-441B-4301-B564-A45E4919A6AD</string>\n\t\t<string>C4A681B0-4A26-480E-93EC-1218098B9AA0</string>\n\t\t<string>FEC992CC-CA4A-4CFD-8881-77300FCB848A</string>\n\t\t<string>A16FF353-8441-459E-A50C-B071F53F51B7</string>\n\t\t<string>992275C1-432A-4CF7-B659-D84ED6D42D3F</string>\n\t\t<string>9F75337B-21B4-4ADC-B558-F9CADF7073A7</string>\n\t\t<string>E969541F-E6F9-4D25-8158-72DC3545A6C6</string>\n\t\t<string>8DC44374-2B35-4C57-A6FE-2AD66A36AAD9</string>\n\t\t<string>5EDAC44F-8E0B-42C9-9BEF-E9C12EEC4949</string>\n\t\t<string>7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90</string>\n\t\t<string>AABB7188-E14E-4433-AD3B-5CD791EAD9A3</string>\n\t\t<string>0420B86A-AA43-4792-9ED0-6FE0F2B16A13</string>\n\t\t<string>CC0D0F4F-05B3-431A-8F33-F84AFCB2C651</string>\n\t\t<string>7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90</string>\n\t\t<string>7265231C-39B4-402C-89E1-16167C4CC990</string>\n\t\t<string>F41BD31E-2683-44B8-AE7F-5F09E919790E</string>\n\t\t<string>ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C</string>\n\t</array>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2014 Saick. All rights reserved.</string>\n\t<key>XC4Compatible</key>\n\t<true/>\n\t<key>XCGCReady</key>\n\t<true/>\n\t<key>XCPluginHasUI</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "RevealPlugin/RevealPlugin-Prefix.pch",
    "content": "//\n//  Prefix header\n//\n//  The contents of this file are implicitly included at the beginning of every source file.\n//\n\n#ifdef __OBJC__\n  #import <Cocoa/Cocoa.h>\n\n// Close NSLog during Release Mode\n#ifdef DEBUG\n#define NSLog(fmt, ...) do { \\\nNSLog((@\"%s [Line %d] \" fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);\\\n} while (0);\n#else\n#define NSLog(...) /**/\n#endif\n\n#endif\n"
  },
  {
    "path": "RevealPlugin/RevealPlugin.h",
    "content": "//\n//  RevealPlugin.h\n//  RevealPlugin\n//\n//  Created by shjborage on 3/27/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n/*!\n  \"Inspect With RevealApp\" menuItem enable or not\n  0x0: check the project type, if the type is equal to iOS project, YES. Otherwise NO;\n  0x1:\n\n  \"Attach to RevealApp\" menuItem enable or not\n  0x0: product is running..., YES. Otherwise NO.\n\n */\n\n#import <Foundation/Foundation.h>\n\n@interface RevealPlugin : NSObject\n\n@end\n"
  },
  {
    "path": "RevealPlugin/RevealPlugin.m",
    "content": "//\n//  RevealPlugin.m\n//  RevealPlugin\n//\n//  Created by shjborage on 3/27/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#import \"RevealPlugin.h\"\n#import <objc/runtime.h>\n#import <objc/message.h>\n#import \"RevealScriptHeader.h\"\n#import \"RevealIDEModel.h\"\n\n@interface RevealPlugin ()\n\n@property (nonatomic, assign) BOOL isRevealed;\n@property (nonatomic, assign) BOOL isPreparedForLaunch;\n@property (nonatomic, assign) BOOL isInspected;\n\n@property (nonatomic, strong) NSMenuItem *revealItem;\n@property (nonatomic, strong) NSMenuItem *attachItem;\n@property (nonatomic, strong) NSString *dyLibPath;\n\n@end\n\n@implementation RevealPlugin\n\n- (void)dealloc\n{\n  [[NSNotificationCenter defaultCenter] removeObserver:self];\n}\n\n+ (void)pluginDidLoad:(NSBundle *)plugin\n{\n  NSString *currentApplicationName = [[NSBundle mainBundle] infoDictionary][@\"CFBundleName\"];\n  if ([currentApplicationName isEqual:@\"Xcode\"]) {\n    NSLog(@\"Reveal plugin DidLoaded\");\n    [self shared];\n  }\n}\n\n+ (id)shared\n{\n  static dispatch_once_t onceToken;\n  static id instance = nil;\n  dispatch_once(&onceToken, ^{\n    instance = [[self alloc] init];\n  });\n  return instance;\n}\n\n- (id)init\n{\n  if (self = [super init]) {\n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(applicationDidFinishLaunching:)\n                                                 name:NSApplicationDidFinishLaunchingNotification\n                                               object:nil];\n    \n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(observeAllNotification:)\n                                                 name:nil\n                                               object:nil];\n  }\n  return self;\n}\n\n#pragma mark - notif\n\n- (void)applicationDidFinishLaunching:(NSNotification *)notif\n{\n  NSMenuItem *productMenuItem = [[NSApp mainMenu] itemWithTitle:@\"Product\"];\n  if (productMenuItem) {\n    NSMenu *menu = [productMenuItem submenu];\n    NSMenuItem *analyzeItem = [productMenuItem.submenu itemWithTitle:@\"Analyze\"];\n    NSInteger revealIndex = [menu indexOfItem:analyzeItem] + 1;\n\n//    [[productMenuItem submenu] addItem:[NSMenuItem separatorItem]];\n    NSMenuItem *revealItem = [[NSMenuItem alloc] initWithTitle:@\"Inspect with Reveal\"\n                                                        action:@selector(didPressRevealInspectProductMenu:)\n                                                 keyEquivalent:@\"p\"];\n    [revealItem setTarget:self];\n    [revealItem setKeyEquivalentModifierMask:NSControlKeyMask|NSCommandKeyMask];\n    [[productMenuItem submenu] insertItem:revealItem atIndex:revealIndex];\n    \n    self.revealItem = revealItem;\n  }\n\n  NSMenuItem *debugMenuItem = [[NSApp mainMenu] itemWithTitle:@\"Debug\"];\n  if (debugMenuItem) {\n    NSMenuItem *revealItem = [[NSMenuItem alloc] initWithTitle:@\"Attach to Reveal\"\n                                                        action:@selector(didPressRevealInspectDebugMenu:)\n                                                 keyEquivalent:@\";\"];\n    [revealItem setTarget:self];\n    [revealItem setKeyEquivalentModifierMask:NSControlKeyMask|NSCommandKeyMask];\n    [[debugMenuItem submenu] addItem:revealItem];\n    \n    [revealItem.menu setAutoenablesItems:NO];\n    [revealItem setEnabled:NO];\n    self.attachItem = revealItem;\n  }\n}\n\n- (void)observeAllNotification:(NSNotification *)notif\n{\n//  // Log notifications if you like\n//  if ([[notif name] length] >= 2 && ([[[notif name] substringWithRange:NSMakeRange(0, 2)] isEqualTo:@\"NS\"] || [[[notif name] substringWithRange:NSMakeRange(0, 2)] isEqualTo:@\"_N\"])) {\n//    // It's a system-level notification\n//  } else {\n//    // It's a Xcode-level notification\n//    NSLog(@\"%@\", notif.name);\n//  }\n  \n  // This seems like quite a mess, but the notification-driven approach avoids waiting for\n  // indeterminate amounts of time for building / running to get far enough along to avoid crashes.\n  \n  /*\n   IDEBuildOperationDidStopNotification\n   IDEBuildOperationWillStartNotification\n   \n   DVTDeviceShouldIgnoreChangesDidEndNotification\n   IDECurrentLaunchSessionTargetOutputChanged\n   IDECurrentLaunchSessionStateChanged\n   */\n  \n  // Finished building\n  if ([[notif name] isEqualToString:@\"IDEBuildOperationDidGenerateOutputFilesNotification\"]) {\n    // Recived notification every time per build\n    NSLog(@\"Build finish...\");\n    \n    self.isPreparedForLaunch = YES;\n  }\n  \n  if ([[notif name] isEqualToString:@\"IDECurrentLaunchSessionTargetOutputChanged\"]) {\n    // Finish building and second notif is the already run the project.\n    NSLog(@\"Debug state change...\");\n    if (self.isPreparedForLaunch) {\n      NSLog(@\"isPreparedForLaunch...\");\n      [self.attachItem setEnabled:YES];\n      \n      if (self.isRevealed) {\n        self.isRevealed = NO;\n        [self attachToLLDB];\n      }\n    }\n    self.isPreparedForLaunch = NO;\n  }\n  \n  // Finished stopping\n  if ([[notif name] isEqualToString:@\"CurrentExecutionTrackerCompletedNotification\"]) {\n    // Reviced no matter how it is stoped.\n    NSLog(@\"Finished.\");\n    [self.attachItem setEnabled:NO];\n    self.isPreparedForLaunch = NO;\n  }\n}\n\n#pragma mark - actions\n\n/*!\n @brief click Reveal Inspect Menu Action\n \n // 0 step is only used for debug\n // 0. User already run the project (otherwise, alert an error)\n 1. enter `lldb`, and attach process (if error occured, process not found)\n 2. lldb operation pause and other command\n */\n- (void)didPressRevealInspectProductMenu:(NSMenuItem *)sender\n{\n  NSLog(@\"Reveal didPressRevealInspectProductMenu:%@\", sender);\n\n  self.isRevealed = YES;\n  \n  NSMenuItem *productMenuItem = [[NSApp mainMenu] itemWithTitle:@\"Product\"];\n  if (productMenuItem) {\n    NSMenuItem *runItem = [productMenuItem.submenu itemWithTitle:@\"Run\"];\n    [self performActionForMenuItem:runItem];\n  }\n}\n\n- (void)didPressRevealInspectDebugMenu:(NSMenuItem *)sender\n{\n  NSLog(@\"Reveal didPressRevealInspectDebugMenu(Attach to Reveal):%@\", sender);\n\n  [self attachToLLDB];\n}\n\n#pragma mark -\n\n- (void)performActionForMenuItem:(NSMenuItem *)menuItem\n{\n  // Run UI stuff on the main thread\n  dispatch_async(dispatch_get_main_queue(), ^{\n    [[menuItem menu] performActionForItemAtIndex:[[menuItem menu] indexOfItem:menuItem]];\n  });\n}\n\n#pragma mark - attach to lldb\n\n- (void)attachToLLDB\n{\n  if (!self.isInspected) {\n    NSLog(@\"AttachToLLDB starting\");\n    self.isInspected = YES;\n    [self.attachItem setEnabled:NO];\n  } else {\n    [self.attachItem setEnabled:NO];\n    NSLog(@\"AttachToLLDB already started\");\n    return;\n  }\n  \n  // do pause execution in and then attach\n  // check the dylib exist, if not, alert\n  if (![self checkRevealDylib]) {\n    NSAlert *alert = [[NSAlert alloc] init];\n    [alert setMessageText:@\"The Reveal dynamic library does not exist. Please download the latest copy of the Reveal and replace the old version at http://revealapp.com.\"];\n    [alert runModal];\n    \n    self.isInspected = NO;\n    return;\n  }\n  \n  [self pauseExecutionIn];\n  \n  self.isInspected = NO;\n}\n\n#pragma mark - private\n\n- (BOOL)checkRevealDylib\n{\n  NSString *dylibPath1 = @\"/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib\";\n  NSString *dylibPath2 = [@\"~/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib\" stringByResolvingSymlinksInPath];\n\n  if ([[NSFileManager defaultManager] fileExistsAtPath:dylibPath1]) {\n    self.dyLibPath = dylibPath1;\n    return YES;\n  } else if ([[NSFileManager defaultManager] fileExistsAtPath:dylibPath2]) {\n    self.dyLibPath = dylibPath2;\n    return YES;\n  } else {\n    return NO;\n  }\n}\n\n- (void)launchRevealApp\n{\n  // start applescript to launch Reveal\n  NSString *scriptPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@\"rp.script\"];\n  [kScriptLaunchReveal writeToFile:scriptPath atomically:YES encoding:NSUTF8StringEncoding error:nil];\n  if ([scriptPath length] == 0)\n    return;\n  \n  NSURL *scriptURL = [NSURL fileURLWithPath:scriptPath];\n  NSAppleScript *as = [[NSAppleScript alloc] initWithContentsOfURL:scriptURL\n                                                             error:nil];\n  [as executeAndReturnError: NULL];\n}\n\n- (void)activeXcodeApp\n{\n  NSString *scriptPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@\"xcode.script\"];\n  [kScriptActiveXcode writeToFile:scriptPath atomically:YES encoding:NSUTF8StringEncoding error:nil];\n  if ([scriptPath length] == 0)\n    return;\n  \n  NSURL *scriptURL = [NSURL fileURLWithPath:scriptPath];\n  NSAppleScript *as = [[NSAppleScript alloc] initWithContentsOfURL:scriptURL\n                                                             error:nil];\n  [as executeAndReturnError: NULL];\n}\n\n- (void)pauseExecutionIn\n{\n  DBGDebugSession *debugsession = [RevealIDEModel debugSessionIn];\n  \n  if (!debugsession) {\n    [self activeXcodeApp];\n    \n    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{\n      [self activeXcodeApp];\n      dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{\n        DBGDebugSession *debugsession = [RevealIDEModel debugSessionIn];\n        if (!debugsession) {\n          NSLog(@\"Debugsession is nil\");\n          NSAlert *alert = [[NSAlert alloc] init];\n          [alert setMessageText:@\"An unexpected error occurred, please try again later!\"];\n          [alert runModal];\n          \n          [self.attachItem setEnabled:YES];\n          return;\n        } else {\n          [self inspectWithReveal:debugsession];\n        }\n      });\n    });\n  } else {\n    [self inspectWithReveal:debugsession];\n  }\n}\n\n- (void)inspectWithReveal:(DBGDebugSession *)debugsession\n{\n  if ([debugsession respondsToSelector:@selector(requestPause)]) {\n    objc_msgSend(debugsession, @selector(requestPause));\n    \n    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{\n      IDEConsoleTextView *consoleView = [RevealIDEModel whenXcodeConsoleIn];\n      NSString *consoleStr = objc_msgSend(consoleView, @selector(string));\n      if (NSNotFound != [consoleStr rangeOfString:@\"(lldb)\" options:NSBackwardsSearch].location) {\n        NSString *loadDyLibExpression = [NSString stringWithFormat:@\"expr (void*)dlopen(\\\"%@\\\", 0x2);\", self.dyLibPath];\n        objc_msgSend(consoleView, @selector(insertText:), loadDyLibExpression);\n        objc_msgSend(consoleView, @selector(insertNewline:), nil);\n        \n        objc_msgSend(consoleView, @selector(insertText:), @\"expr [(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@\\\"IBARevealRequestStart\\\" object:nil];\");\n        objc_msgSend(consoleView, @selector(insertNewline:), nil);\n        \n        objc_msgSend(consoleView, @selector(insertText:), @\"continue\");\n        objc_msgSend(consoleView, @selector(insertNewline:), nil);\n        \n        [self launchRevealApp];\n        NSLog(@\"AttachToLLDB done!\");\n      } else {\n        NSLog(@\"(lldb) not found\");\n        NSAlert *alert = [[NSAlert alloc] init];\n        [alert setMessageText:@\"An unexpected error occurred, please try again later!\"];\n        [alert runModal];\n        \n        [self.attachItem setEnabled:YES];\n      }\n    });\n  } else {\n    NSLog(@\"Error:if ([debugsession respondsToSelector:@selector(requestPause)]) {\");\n    NSAlert *alert = [[NSAlert alloc] init];\n    [alert setMessageText:@\"An unexpected error occurred, please try again later!\"];\n    [alert runModal];\n    \n    [self.attachItem setEnabled:YES];\n    return;\n  }\n}\n\n@end\n"
  },
  {
    "path": "RevealPlugin/Vendors/Catagories/NSView+SQDump.h",
    "content": "//\n//  NSView+SQDump.h\n//  RevealPlugin\n//\n//  Created by shjborage on 4/7/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface NSView (SQDump)\n\n- (void)dumpWithIndent:(NSString *)indent;\n\n@end\n"
  },
  {
    "path": "RevealPlugin/Vendors/Catagories/NSView+SQDump.m",
    "content": "//\n//  NSView+SQDump.m\n//  RevealPlugin\n//\n//  Created by shjborage on 4/7/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#import \"NSView+SQDump.h\"\n\n@implementation NSView (SQDump)\n\n- (void)dumpWithIndent:(NSString *)indent\n{\n  NSString *class = NSStringFromClass([self class]);\n  NSString *info = @\"\";\n  if ([self respondsToSelector:@selector(title)]) {\n    NSString *title = [self performSelector:@selector(title)];\n    if (title != nil && [title length] > 0) {\n      info = [info stringByAppendingFormat:@\" title=%@\", title];\n    }\n  }\n  \n  if ([self respondsToSelector:@selector(stringValue)]) {\n    NSString *string = [self performSelector:@selector(stringValue)];\n    if (string != nil && [string length] > 0) {\n      info = [info stringByAppendingFormat:@\" stringValue=%@\", string];\n    }\n  }\n  NSString *tooltip = [self toolTip];\n  if (tooltip != nil && [tooltip length] > 0) {\n    info = [info stringByAppendingFormat:@\" tooltip=%@\", tooltip];\n  }\n  \n  NSLog(@\"%@%@%@\", indent, class, info);\n  \n  if ([[self subviews] count] > 0) {\n    NSString *subIndent = [NSString stringWithFormat:@\"%@%@\", indent, ([indent length]/2)%2==0 ? @\"| \" : @\": \"];\n    for (NSView *subview in [self subviews]) {\n      [subview dumpWithIndent:subIndent];\n    }\n  }\n}\n\n@end\n"
  },
  {
    "path": "RevealPlugin/Vendors/Catagories/NSView+SQFindSubView.h",
    "content": "//\n//  NSView+SQFindSubView.h\n//  RevealPlugin\n//\n//  Created by shjborage on 4/7/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#import <Cocoa/Cocoa.h>\n\n@interface NSView (SQFindSubView)\n\n- (NSView *)findSubView:(Class)cls;\n\n@end\n"
  },
  {
    "path": "RevealPlugin/Vendors/Catagories/NSView+SQFindSubView.m",
    "content": "//\n//  NSView+SQFindSubView.m\n//  RevealPlugin\n//\n//  Created by shjborage on 4/7/14.\n//  Copyright (c) 2014 Saick. All rights reserved.\n//\n\n#import \"NSView+SQFindSubView.h\"\n\n@implementation NSView (SQFindSubView)\n\n- (NSView *)findSubView:(Class)cls\n{\n  if ([[self subviews] count] > 0) {\n    for (NSView *subview in [self subviews]) {\n//      NSLog(@\"%@\", NSStringFromClass([subview class]));\n      if ([subview isKindOfClass:cls]) {\n        return subview;\n      } else {\n        NSView *foundView = [subview findSubView:cls];\n        if (foundView != nil)\n          return foundView;\n      }\n    }\n  }\n  \n  return nil;\n}\n\n@end\n"
  },
  {
    "path": "RevealPlugin/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "RevealPlugin.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tA05281CA18EEBB5700F54910 /* RevealIDEModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A05281C918EEBB5700F54910 /* RevealIDEModel.m */; };\n\t\tA06A7E5E18E40D9C0039BB1B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A06A7E5D18E40D9C0039BB1B /* CoreFoundation.framework */; };\n\t\tA06A7E6418E40D9C0039BB1B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = A06A7E6218E40D9C0039BB1B /* InfoPlist.strings */; };\n\t\tA06A7E6D18E412520039BB1B /* RevealPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = A06A7E6C18E412520039BB1B /* RevealPlugin.m */; };\n\t\tA09434AD18F2E15900AE246C /* NSView+SQDump.m in Sources */ = {isa = PBXBuildFile; fileRef = A09434AC18F2E15900AE246C /* NSView+SQDump.m */; };\n\t\tA09434B018F2E16E00AE246C /* NSView+SQFindSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = A09434AF18F2E16E00AE246C /* NSView+SQFindSubView.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXFileReference section */\n\t\t0C4AC3B54C1C4664BF51AC76 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tA05281C818EEBB5700F54910 /* RevealIDEModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RevealIDEModel.h; sourceTree = \"<group>\"; };\n\t\tA05281C918EEBB5700F54910 /* RevealIDEModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RevealIDEModel.m; sourceTree = \"<group>\"; };\n\t\tA06A7E5A18E40D9C0039BB1B /* RevealPlugin.xcplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RevealPlugin.xcplugin; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tA06A7E5D18E40D9C0039BB1B /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };\n\t\tA06A7E6118E40D9C0039BB1B /* RevealPlugin-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"RevealPlugin-Info.plist\"; sourceTree = \"<group>\"; };\n\t\tA06A7E6318E40D9C0039BB1B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\tA06A7E6518E40D9C0039BB1B /* RevealPlugin-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"RevealPlugin-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\tA06A7E6B18E412520039BB1B /* RevealPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RevealPlugin.h; sourceTree = \"<group>\"; };\n\t\tA06A7E6C18E412520039BB1B /* RevealPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RevealPlugin.m; sourceTree = \"<group>\"; };\n\t\tA09434AB18F2E15900AE246C /* NSView+SQDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSView+SQDump.h\"; sourceTree = \"<group>\"; };\n\t\tA09434AC18F2E15900AE246C /* NSView+SQDump.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSView+SQDump.m\"; sourceTree = \"<group>\"; };\n\t\tA09434AE18F2E16E00AE246C /* NSView+SQFindSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSView+SQFindSubView.h\"; sourceTree = \"<group>\"; };\n\t\tA09434AF18F2E16E00AE246C /* NSView+SQFindSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"NSView+SQFindSubView.m\"; sourceTree = \"<group>\"; };\n\t\tA0FDABD518ED53A60073873B /* RevealScriptHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RevealScriptHeader.h; path = Resources/RevealScriptHeader.h; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tA06A7E5718E40D9C0039BB1B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA06A7E5E18E40D9C0039BB1B /* CoreFoundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tA01CEA8018EC0F90006A55BC /* Vendors */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA09434AA18F2E15900AE246C /* Catagories */,\n\t\t\t);\n\t\t\tpath = Vendors;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA06A7E5118E40D9C0039BB1B = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA06A7E5F18E40D9C0039BB1B /* RevealPlugin */,\n\t\t\t\tA06A7E5C18E40D9C0039BB1B /* Frameworks */,\n\t\t\t\tA06A7E5B18E40D9C0039BB1B /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA06A7E5B18E40D9C0039BB1B /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA06A7E5A18E40D9C0039BB1B /* RevealPlugin.xcplugin */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA06A7E5C18E40D9C0039BB1B /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA06A7E5D18E40D9C0039BB1B /* CoreFoundation.framework */,\n\t\t\t\t0C4AC3B54C1C4664BF51AC76 /* libPods.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA06A7E5F18E40D9C0039BB1B /* RevealPlugin */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA06A7E6B18E412520039BB1B /* RevealPlugin.h */,\n\t\t\t\tA06A7E6C18E412520039BB1B /* RevealPlugin.m */,\n\t\t\t\tA05281C818EEBB5700F54910 /* RevealIDEModel.h */,\n\t\t\t\tA05281C918EEBB5700F54910 /* RevealIDEModel.m */,\n\t\t\t\tA0FDABD518ED53A60073873B /* RevealScriptHeader.h */,\n\t\t\t\tA01CEA8018EC0F90006A55BC /* Vendors */,\n\t\t\t\tA06A7E6018E40D9C0039BB1B /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = RevealPlugin;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA06A7E6018E40D9C0039BB1B /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA06A7E6118E40D9C0039BB1B /* RevealPlugin-Info.plist */,\n\t\t\t\tA06A7E6218E40D9C0039BB1B /* InfoPlist.strings */,\n\t\t\t\tA06A7E6518E40D9C0039BB1B /* RevealPlugin-Prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA09434AA18F2E15900AE246C /* Catagories */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA09434AB18F2E15900AE246C /* NSView+SQDump.h */,\n\t\t\t\tA09434AC18F2E15900AE246C /* NSView+SQDump.m */,\n\t\t\t\tA09434AE18F2E16E00AE246C /* NSView+SQFindSubView.h */,\n\t\t\t\tA09434AF18F2E16E00AE246C /* NSView+SQFindSubView.m */,\n\t\t\t);\n\t\t\tpath = Catagories;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tA06A7E5918E40D9C0039BB1B /* RevealPlugin */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = A06A7E6818E40D9C0039BB1B /* Build configuration list for PBXNativeTarget \"RevealPlugin\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tA06A7E5618E40D9C0039BB1B /* Sources */,\n\t\t\t\tA06A7E5718E40D9C0039BB1B /* Frameworks */,\n\t\t\t\tA06A7E5818E40D9C0039BB1B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = RevealPlugin;\n\t\t\tproductName = RevealPlugin;\n\t\t\tproductReference = A06A7E5A18E40D9C0039BB1B /* RevealPlugin.xcplugin */;\n\t\t\tproductType = \"com.apple.product-type.bundle\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tA06A7E5218E40D9C0039BB1B /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0510;\n\t\t\t\tORGANIZATIONNAME = Saick;\n\t\t\t};\n\t\t\tbuildConfigurationList = A06A7E5518E40D9C0039BB1B /* Build configuration list for PBXProject \"RevealPlugin\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = A06A7E5118E40D9C0039BB1B;\n\t\t\tproductRefGroup = A06A7E5B18E40D9C0039BB1B /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tA06A7E5918E40D9C0039BB1B /* RevealPlugin */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tA06A7E5818E40D9C0039BB1B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA06A7E6418E40D9C0039BB1B /* InfoPlist.strings in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tA06A7E5618E40D9C0039BB1B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA09434AD18F2E15900AE246C /* NSView+SQDump.m in Sources */,\n\t\t\t\tA06A7E6D18E412520039BB1B /* RevealPlugin.m in Sources */,\n\t\t\t\tA09434B018F2E16E00AE246C /* NSView+SQFindSubView.m in Sources */,\n\t\t\t\tA05281CA18EEBB5700F54910 /* RevealIDEModel.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXVariantGroup section */\n\t\tA06A7E6218E40D9C0039BB1B /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\tA06A7E6318E40D9C0039BB1B /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\tA06A7E6618E40D9C0039BB1B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tA06A7E6718E40D9C0039BB1B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.10;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tA06A7E6918E40D9C0039BB1B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEPLOYMENT_LOCATION = YES;\n\t\t\t\tDSTROOT = \"${HOME}\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(inherited)\";\n\t\t\t\tGCC_ENABLE_OBJC_GC = unsupported;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"RevealPlugin/RevealPlugin-Prefix.pch\";\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"RevealPlugin/RevealPlugin-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"/Library/Application Support/Developer/Shared/Xcode/Plug-ins\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tWRAPPER_EXTENSION = xcplugin;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tA06A7E6A18E40D9C0039BB1B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEPLOYMENT_LOCATION = YES;\n\t\t\t\tDSTROOT = \"${HOME}\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(inherited)\";\n\t\t\t\tGCC_ENABLE_OBJC_GC = unsupported;\n\t\t\t\tGCC_MODEL_TUNING = G5;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"RevealPlugin/RevealPlugin-Prefix.pch\";\n\t\t\t\tHEADER_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"RevealPlugin/RevealPlugin-Info.plist\";\n\t\t\t\tINSTALL_PATH = \"/Library/Application Support/Developer/Shared/Xcode/Plug-ins\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tWRAPPER_EXTENSION = xcplugin;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tA06A7E5518E40D9C0039BB1B /* Build configuration list for PBXProject \"RevealPlugin\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tA06A7E6618E40D9C0039BB1B /* Debug */,\n\t\t\t\tA06A7E6718E40D9C0039BB1B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tA06A7E6818E40D9C0039BB1B /* Build configuration list for PBXNativeTarget \"RevealPlugin\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tA06A7E6918E40D9C0039BB1B /* Debug */,\n\t\t\t\tA06A7E6A18E40D9C0039BB1B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = A06A7E5218E40D9C0039BB1B /* Project object */;\n}\n"
  },
  {
    "path": "RevealPlugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:RevealPlugin.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "RevealPlugin.xcodeproj/xcshareddata/xcschemes/RevealPlugin.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0640\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"A06A7E5918E40D9C0039BB1B\"\n               BuildableName = \"RevealPlugin.xcplugin\"\n               BlueprintName = \"RevealPlugin\"\n               ReferencedContainer = \"container:RevealPlugin.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <PathRunnable\n         runnableDebuggingMode = \"0\"\n         BundleIdentifier = \"com.apple.dt.Xcode\"\n         FilePath = \"/Applications/Xcode.app\">\n      </PathRunnable>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"A06A7E5918E40D9C0039BB1B\"\n            BuildableName = \"RevealPlugin.xcplugin\"\n            BlueprintName = \"RevealPlugin\"\n            ReferencedContainer = \"container:RevealPlugin.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"A06A7E5918E40D9C0039BB1B\"\n            BuildableName = \"RevealPlugin.xcplugin\"\n            BlueprintName = \"RevealPlugin\"\n            ReferencedContainer = \"container:RevealPlugin.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "RevealPlugin_bak/Podfile",
    "content": "platform :osx\n\npod 'JRSwizzle', '~> 1.0'"
  },
  {
    "path": "RevealPlugin_bak/RevealPlugin.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name         = 'RevealPlugin'\n  s.version      = '1.0'\n  s.license      =  :type => '<#License#>'\n  s.homepage     = '<#Homepage URL#>'\n  s.authors      =  '<#Author Name#>' => '<#Author Email#>'\n  s.summary      = '<#Summary (Up to 140 characters#>'\n\n# Source Info\n  s.platform     =  :ios, '<#iOS Platform#>'\n  s.source       =  :git => '<#Github Repo URL#>', :tag => '<#Tag name#>'\n  s.source_files = '<#Resources#>'\n  s.framework    =  '<#Required Frameworks#>'\n\n  s.requires_arc = true\n  \n# Pod Dependencies\n  s.dependencies =\tpod 'JRSwizzle', '~> 1.0'\n\nend"
  },
  {
    "path": "RevealPlugin_bak/RevealPlugin.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version='1.0' encoding='UTF-8'?><Workspace version='1.0'><FileRef location='group:RevealPlugin.xcodeproj'/><FileRef location='group:Pods/Pods.xcodeproj'/></Workspace>"
  }
]