Full Code of johnno1962/InjectionApp for AI

master bf7452046c8d cached
49 files
257.0 KB
80.4k tokens
6 symbols
1 requests
Download .txt
Showing preview only (272K chars total). Download the full file or copy to clipboard to get everything.
Repository: johnno1962/InjectionApp
Branch: master
Commit: bf7452046c8d
Files: 49
Total size: 257.0 KB

Directory structure:
gitextract_2rj_t86d/

├── .gitignore
├── DiskTree/
│   ├── DiskTree.html
│   ├── DiskTree.xib
│   └── tree.c
├── InjectionAppCode/
│   ├── .idea/
│   │   ├── InjectionAppCode.iml
│   │   ├── ant.xml
│   │   ├── compiler.xml
│   │   ├── copyright/
│   │   │   └── profiles_settings.xml
│   │   ├── dictionaries/
│   │   │   └── johnholdsworth.xml
│   │   ├── encodings.xml
│   │   ├── misc.xml
│   │   ├── modules.xml
│   │   ├── scopes/
│   │   │   └── scope_settings.xml
│   │   ├── uiDesigner.xml
│   │   └── workspace.xml
│   ├── Injection.iml
│   ├── Injection.jar
│   ├── META-INF/
│   │   └── plugin.xml
│   └── src/
│       └── com/
│           └── injectionforxcode/
│               └── InjectionAppAction.java
├── InjectionBootstrap/
│   └── Info.plist
├── InjectionHelper/
│   ├── Info-Launchd.plist
│   └── Info.plist
├── InjectionLoader/
│   ├── BundleContents.h
│   ├── BundleContents.mm
│   ├── Info.plist
│   └── InjectionLoader.xcodeproj/
│       └── project.pbxproj
├── Injectorator/
│   ├── App.icns
│   ├── Assets.xcassets/
│   │   └── AppIcon.appiconset/
│   │       └── Contents.json
│   ├── Benchmark.swift
│   ├── Credits.rtf
│   ├── INController.swift
│   ├── Info.plist
│   ├── InjectionIdle.tif
│   ├── InjectionOK.tif
│   ├── Injectorator-Bridging-Header.h
│   ├── Integration.swift
│   ├── Integration.xib
│   └── RMController.swift
├── Injectorator.xcodeproj/
│   ├── project.pbxproj
│   └── project.xcworkspace/
│       ├── contents.xcworkspacedata
│       └── xcshareddata/
│           └── Injectorator.xcscmblueprint
├── LICENSE
├── README.md
├── XprobeSwift/
│   ├── Info.plist
│   ├── XprobeSwift-Bridging-Header.h
│   └── XprobeSwift.xcodeproj/
│       └── project.pbxproj
├── docs/
│   ├── index.html
│   └── injectionfaq.html
└── injectSource/
    └── main.m

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
*/build*
*Library/*
*xcuserdata*
*xccheckout*


================================================
FILE: DiskTree/DiskTree.html
================================================
<html><head><style>

body, .treeview { font: 12pt -apple-system; background-color: #303238; }

.treeview UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px;
}

.treeview LI {
	PADDING-LEFT: 25px; PADDING-TOP: 3px; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; CURSOR: default;
}

.lopen {
	BACKGROUND: url(open_folder_orange.png) transparent no-repeat left 1px;
}

.lclosed {
	BACKGROUND: url(closed_folder_orange.png) transparent no-repeat left 1px;
}

.lfile {
	BACKGROUND: url(document.png) transparent no-repeat left 1px;
}

.mtab { background-color: #303238; color: #e0e0e0; }
.dlink { color: #e0e0e0; text-decoration: none; }
.dlink:hover { text-decoration: underline; }

</style></head><body style='border: 0px; margin: 0px;'>

<table class=mtab width='100%' notheight='100%'>
<tr><td>&nbsp;
<tr><td width=75><td>
<center id=welcome>
<h2>Disk Usage Tool</h2>

<div style='max-width:400'>
Disk Usage is a basic tool to locate
space that can be recovered on your disk drive. Click scan
to start the process and after all files on your drive
have been sized a tree view will be dispayed. Click on
the folder to drill down or on the directory link to open
in Finder.
</div>

<p>
</center>
<div id=treeDiv class='treeview'></div><p>
<center>

<a href='scan:/'><img src='scan.png' border=0 onmousedown='this.src="scan2.png";'
   notonmouseup='this.src="scan.png";' notonmouseout='this.src="scan.png";'></a>
</center>
<td width=75>
<tr><td>&nbsp;
</table>
<script>

function toggle(e) {
	var li = (e||event).srcElement || e.target;
	var submenu = li.children[1];
	if ( submenu )
	  if ((submenu.currentStyle||submenu.style).display == "block") {
		submenu.style.display = "none";
		li.className = "lclosed";
	  }
	  else {
		li.className = "lopen";
		var lis = submenu.children;
		for (var i = 0; i < lis.length; i++)
			if ( !lis[i].className )
				lis[i].className = "lclosed";
		submenu.style.display = "block";
	  }
	if ( e )
	  e.stopPropagation();
	else
	  event.cancelBubble = true;
}

var start;

function progress(html,dirs,files,bytes) {
	if ( !start )
		start = new Date();
	treeDiv.innerHTML = "<center><div style='font: 8pt Arial;'>Scanned "+
		"Folders: "+dirs+", Files: "+files+", Bytes: "+bytes+
		" in "+(new Date().getTime()-start.getTime())/1000.+" seconds."+
		html+"</div></center>";
}

function complete(html,when) {
  if ( when )
    welcome.innerHTML = "<span style='font: bold 16pt Arial;'>Disk Usage "+when+
		"</span><br>Click on Folder to drill down or its name to view in Finder.<p>";
  treeDiv.innerHTML = html;
  treeDiv.children[0].onclick = toggle;
  start = null;
}

</script>


================================================
FILE: DiskTree/DiskTree.xib
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1212" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
    <dependencies>
        <deployment identifier="macosx"/>
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
        <plugIn identifier="com.apple.WebKitIBPlugin" version="11762"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
            <connections>
                <outlet property="delegate" destination="494" id="495"/>
            </connections>
        </customObject>
        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
        <customObject id="494" customClass="DiskTreeAppDelegate">
            <connections>
                <outlet property="webView" destination="533" id="534"/>
                <outlet property="window" destination="pQA-73-RIy" id="4gr-QM-CK2"/>
            </connections>
        </customObject>
        <customObject id="420" customClass="NSFontManager"/>
        <window title="Injection" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" frameAutosaveName="" animationBehavior="default" id="pQA-73-RIy">
            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
            <rect key="contentRect" x="196" y="240" width="510" height="480"/>
            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/>
            <view key="contentView" misplaced="YES" id="wmh-bE-mWF">
                <rect key="frame" x="0.0" y="0.0" width="510" height="480"/>
                <autoresizingMask key="autoresizingMask"/>
                <subviews>
                    <webView misplaced="YES" id="533">
                        <rect key="frame" x="0.0" y="0.0" width="510" height="480"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <webPreferences key="preferences" defaultFontSize="12" defaultFixedFontSize="12" plugInsEnabled="NO" javaEnabled="NO" javaScriptCanOpenWindowsAutomatically="NO" allowsAnimatedImages="NO" allowsAnimatedImageLooping="NO"/>
                        <connections>
                            <outlet property="UIDelegate" destination="494" id="539"/>
                            <outlet property="downloadDelegate" destination="494" id="535"/>
                            <outlet property="frameLoadDelegate" destination="494" id="536"/>
                            <outlet property="policyDelegate" destination="494" id="537"/>
                            <outlet property="resourceLoadDelegate" destination="494" id="538"/>
                        </connections>
                    </webView>
                </subviews>
            </view>
            <point key="canvasLocation" x="29" y="-337"/>
        </window>
    </objects>
</document>


================================================
FILE: DiskTree/tree.c
================================================
/*
  Recursive version of du for DiskUsage Applet.
  (c) John Holdsworth 2011

  Usage is:

$ tree <MIN_FILE> <UTIME> dirpath1 [dirpath2..] <output file/- for stdout>

  Format output is:

+dirname
+subdir name
!large file name
-large file size
#file count if non-zero
-subdir usage in bytes
+other subdir name
-other subdir usage
-dir usage in bytes
-total usage of "dirpath1" above

*/

#include <sys/signal.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

typedef unsigned long long usage_t;

static int MIN_FILE;
static time_t AFTER;
static FILE *out;

static usage_t du( char *dir, int level ) {
  usage_t total = 0;

  if ( chdir( dir ) == 0 ) { 
    int fcount = 0;
    struct dirent *ent;

    DIR *d = opendir( "." );
    if ( !d ) perror( dir );

    while ( d && (ent = readdir( d )) ) {
      char *name = ent->d_name;
      struct stat st;

      if ( strcmp( name, "." ) != 0 && strcmp( name, ".." ) != 0 &&
	   lstat( name, &st ) == 0 && st.st_size ) {

	usage_t fsize = st.st_size;
	total += fsize;

	//fprintf( out, "%s %lu %u %x\n", ent->d_name,
	//       st.st_size, (int)sizeof st.st_size, st.st_mode );
	if ( S_ISDIR( st.st_mode ) && !S_ISLNK( st.st_mode ) ) {
	  fprintf( out, "+%s\n", name );
	  total += du( name, level+1 );
	  //system( "pwd" );
	}
	else {
	  if ( fsize > MIN_FILE && (AFTER == 0 || st.st_mtime > AFTER ||
				    st.st_atime && st.st_atime < AFTER ) )
	      fprintf( out, "!%s\n@%u\n-%llu\n", name, 
		       (unsigned)st.st_atime, fsize );
	  if ( name[0] != '.' ) //&& strcmp( name, "sentinel" ) != 0 )
		fcount++;
	}
      }
    }

    if ( fcount )
	fprintf( out, "#%d\n", fcount );
    if ( chdir( ".." ) != 0 )
      perror( dir );
    if ( d )
      closedir( d ); 
  }
  else
	  perror( dir );

  fprintf( out, "-%llu\n", total );
  return total;
}

static void catcher( int sig ) {
  fprintf( stderr, "Signal %d\n", sig );
  exit(1);
}

int main( int argc, char *argv[] ) {
  int i;
  MIN_FILE = atoi( argv[1] );
  AFTER = atoi( argv[2] );
  out = argv[argc-1][0] == '-' ? stdout : fopen( argv[argc-1], "w" );
  signal( SIGPIPE, catcher );
  for ( i=3 ; i<argc-1 ; i++ )
    du( argv[i], 1 );
  fclose( out );
  return 0;
}


================================================
FILE: InjectionAppCode/.idea/InjectionAppCode.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$" />
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>

================================================
FILE: InjectionAppCode/.idea/ant.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4" />



================================================
FILE: InjectionAppCode/.idea/compiler.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <option name="DEFAULT_COMPILER" value="Javac" />
    <resourceExtensions />
    <wildcardResourcePatterns>
      <entry name="!?*.java" />
      <entry name="!?*.form" />
      <entry name="!?*.class" />
      <entry name="!?*.groovy" />
      <entry name="!?*.scala" />
      <entry name="!?*.flex" />
      <entry name="!?*.kt" />
      <entry name="!?*.clj" />
    </wildcardResourcePatterns>
    <annotationProcessing>
      <profile default="true" name="Default" enabled="false">
        <processorPath useClasspath="true" />
      </profile>
    </annotationProcessing>
  </component>
</project>



================================================
FILE: InjectionAppCode/.idea/copyright/profiles_settings.xml
================================================
<component name="CopyrightManager">
  <settings default="" />
</component>

================================================
FILE: InjectionAppCode/.idea/dictionaries/johnholdsworth.xml
================================================
<component name="ProjectDictionaryState">
  <dictionary name="johnholdsworth" />
</component>

================================================
FILE: InjectionAppCode/.idea/encodings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
    <file url="PROJECT" charset="UTF-8" />
  </component>
</project>

================================================
FILE: InjectionAppCode/.idea/misc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="EntryPointsManager">
    <entry_points version="2.0" />
  </component>
  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="IDEA IC-123.169" project-jdk-type="IDEA JDK">
    <output url="file://$PROJECT_DIR$/out" />
  </component>
</project>



================================================
FILE: InjectionAppCode/.idea/modules.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/Injection.iml" filepath="$PROJECT_DIR$/Injection.iml" />
      <module fileurl="file://$PROJECT_DIR$/.idea/InjectionAppCode.iml" filepath="$PROJECT_DIR$/.idea/InjectionAppCode.iml" />
    </modules>
  </component>
</project>

================================================
FILE: InjectionAppCode/.idea/scopes/scope_settings.xml
================================================
<component name="DependencyValidationManager">
  <state>
    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
  </state>
</component>

================================================
FILE: InjectionAppCode/.idea/uiDesigner.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Palette2">
    <group name="Swing">
      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
      </item>
      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
      </item>
      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
        <initial-values>
          <property name="text" value="Button" />
        </initial-values>
      </item>
      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="RadioButton" />
        </initial-values>
      </item>
      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="CheckBox" />
        </initial-values>
      </item>
      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="Label" />
        </initial-values>
      </item>
      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
          <preferred-size width="200" height="200" />
        </default-constraints>
      </item>
      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
          <preferred-size width="200" height="200" />
        </default-constraints>
      </item>
      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
      </item>
      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
          <preferred-size width="-1" height="20" />
        </default-constraints>
      </item>
      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
      </item>
      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
      </item>
    </group>
  </component>
</project>



================================================
FILE: InjectionAppCode/.idea/workspace.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="2c7bfba7-49b7-43bb-b292-792839a21ef6" name="Default" comment="" />
    <ignored path="Injection.iws" />
    <ignored path=".idea/workspace.xml" />
    <ignored path="$PROJECT_DIR$/out/" />
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="TRACKING_ENABLED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
  <component name="CreatePatchCommitExecutor">
    <option name="PATCH_PATH" value="" />
  </component>
  <component name="DebuggerManager">
    <breakpoint_any default_suspend_policy="SuspendAll" default_condition_enabled="true" converted="true">
      <breakpoint>
        <option name="NOTIFY_CAUGHT" value="true" />
        <option name="NOTIFY_UNCAUGHT" value="true" />
        <option name="ENABLED" value="false" />
        <option name="LOG_ENABLED" value="false" />
        <option name="LOG_EXPRESSION_ENABLED" value="false" />
        <option name="SUSPEND_POLICY" value="SuspendAll" />
        <option name="SUSPEND" value="true" />
        <option name="COUNT_FILTER_ENABLED" value="false" />
        <option name="COUNT_FILTER" value="0" />
        <option name="CONDITION_ENABLED" value="true" />
        <option name="CLASS_FILTERS_ENABLED" value="false" />
        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
        <option name="CONDITION" value="" />
        <option name="LOG_MESSAGE" value="" />
      </breakpoint>
      <breakpoint>
        <option name="NOTIFY_CAUGHT" value="true" />
        <option name="NOTIFY_UNCAUGHT" value="true" />
        <option name="ENABLED" value="false" />
        <option name="LOG_ENABLED" value="false" />
        <option name="LOG_EXPRESSION_ENABLED" value="false" />
        <option name="SUSPEND_POLICY" value="SuspendAll" />
        <option name="SUSPEND" value="true" />
        <option name="COUNT_FILTER_ENABLED" value="false" />
        <option name="COUNT_FILTER" value="0" />
        <option name="CONDITION_ENABLED" value="true" />
        <option name="CLASS_FILTERS_ENABLED" value="false" />
        <option name="INSTANCE_FILTERS_ENABLED" value="false" />
        <option name="CONDITION" value="" />
        <option name="LOG_MESSAGE" value="" />
      </breakpoint>
    </breakpoint_any>
    <ui_properties converted="true" />
    <breakpoint_rules converted="true" />
  </component>
  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
  <component name="FavoritesManager">
    <favorites_list name="Injection" />
  </component>
  <component name="FileEditorManager">
    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
      <file leaf-file-name="plugin.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-7.5">
              <caret line="12" column="33" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="InjectionAppCode.iml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/InjectionAppCode.iml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="InjectionAppAction.java" pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/src/com/injectionforxcode/InjectionAppAction.java">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="0.46925566">
              <caret line="36" column="46" selection-start-line="36" selection-start-column="25" selection-end-line="36" selection-end-column="25" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="misc.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/misc.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="modules.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/modules.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="uiDesigner.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/uiDesigner.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="workspace.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/workspace.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="ant.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/ant.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="compiler.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/compiler.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="profiles_settings.xml" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/.idea/copyright/profiles_settings.xml">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-0.0">
              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
    </leaf>
  </component>
  <component name="FindManager">
    <FindUsagesManager>
      <setting name="OPEN_NEW_TAB" value="false" />
    </FindUsagesManager>
  </component>
  <component name="GradleLocalSettings">
    <option name="externalProjectsViewState">
      <projects_view />
    </option>
  </component>
  <component name="IdeDocumentHistory">
    <option name="CHANGED_PATHS">
      <list>
        <option value="$PROJECT_DIR$/src/com/injectionforxcode/InjectionAction.java" />
        <option value="$PROJECT_DIR$/META-INF/plugin.xml" />
        <option value="$PROJECT_DIR$/src/com/injectionforxcode/InjectionAppAction.java" />
      </list>
    </option>
  </component>
  <component name="ProjectFrameBounds">
    <option name="x" value="110" />
    <option name="y" value="104" />
    <option name="width" value="1462" />
    <option name="height" value="1024" />
  </component>
  <component name="ProjectInspectionProfilesVisibleTreeState">
    <entry key="Project Default">
      <profile-state>
        <expanded-state>
          <State>
            <id />
          </State>
          <State>
            <id>Plugin DevKit</id>
          </State>
        </expanded-state>
        <selected-state>
          <State>
            <id>PluginXmlValidity</id>
          </State>
        </selected-state>
      </profile-state>
    </entry>
  </component>
  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
    <OptionsSetting value="true" id="Add" />
    <OptionsSetting value="true" id="Remove" />
    <OptionsSetting value="true" id="Checkout" />
    <OptionsSetting value="true" id="Update" />
    <OptionsSetting value="true" id="Status" />
    <OptionsSetting value="true" id="Edit" />
    <ConfirmationsSetting value="0" id="Add" />
    <ConfirmationsSetting value="0" id="Remove" />
  </component>
  <component name="ProjectReloadState">
    <option name="STATE" value="0" />
  </component>
  <component name="ProjectView">
    <navigator currentView="ProjectPane" proportions="" version="1">
      <flattenPackages />
      <showMembers />
      <showModules />
      <showLibraryContents />
      <hideEmptyPackages />
      <abbreviatePackageNames />
      <autoscrollToSource />
      <autoscrollFromSource />
      <sortByType />
      <manualOrder />
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="Scope" />
      <pane id="ProjectPane">
        <subPane>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="src" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="injectionforxcode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="META-INF" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="InjectionAppCode" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value=".idea" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
        </subPane>
      </pane>
      <pane id="PackagesPane" />
      <pane id="Scratches" />
    </panes>
  </component>
  <component name="PropertiesComponent">
    <property name="GoToFile.includeJavaFiles" value="false" />
    <property name="project.structure.last.edited" value="Modules" />
    <property name="project.structure.proportion" value="0.0" />
    <property name="options.splitter.main.proportions" value="0.3" />
    <property name="MemberChooser.sorted" value="false" />
    <property name="options.lastSelected" value="preferences.sourceCode" />
    <property name="recentsLimit" value="5" />
    <property name="last_opened_file_path" value="$PROJECT_DIR$/../idea" />
    <property name="project.structure.side.proportion" value="0.2" />
    <property name="MemberChooser.copyJavadoc" value="false" />
    <property name="GoToClass.toSaveIncludeLibraries" value="false" />
    <property name="restartRequiresConfirmation" value="true" />
    <property name="MemberChooser.showClasses" value="true" />
    <property name="GoToClass.includeLibraries" value="false" />
    <property name="options.splitter.details.proportions" value="0.2" />
    <property name="options.searchVisible" value="true" />
    <property name="dynamic.classpath" value="false" />
  </component>
  <component name="RecentsManager">
    <key name="CopyFile.RECENT_KEYS">
      <recent name="$PROJECT_DIR$/src/com/injectionforxcode" />
    </key>
    <key name="MoveFile.RECENT_KEYS">
      <recent name="$PROJECT_DIR$/META-INF" />
      <recent name="$PROJECT_DIR$/src" />
    </key>
  </component>
  <component name="RunManager" selected="Plugin.Unnamed">
    <configuration default="false" name="All in Injection" type="JUnit" factoryName="JUnit" temporary="true">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="Injection" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" value="" />
      <option name="PACKAGE_NAME" value="" />
      <option name="MAIN_CLASS_NAME" value="" />
      <option name="METHOD_NAME" value="" />
      <option name="TEST_OBJECT" value="package" />
      <option name="VM_PARAMETERS" value="-ea" />
      <option name="PARAMETERS" value="" />
      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="moduleWithDependencies" />
      </option>
      <envs />
      <patterns />
      <RunnerSettings RunnerId="Debug">
        <option name="DEBUG_PORT" value="" />
        <option name="TRANSPORT" value="0" />
        <option name="LOCAL" value="true" />
      </RunnerSettings>
      <RunnerSettings RunnerId="Run" />
      <ConfigurationWrapper RunnerId="Debug" />
      <ConfigurationWrapper RunnerId="Run" />
      <method />
    </configuration>
    <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
      <module name="Injection" />
      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m" />
      <option name="PROGRAM_PARAMETERS" />
      <method />
    </configuration>
    <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
      <module name="" />
      <option name="ACTIVITY_CLASS" value="" />
      <option name="MODE" value="default_activity" />
      <option name="DEPLOY" value="true" />
      <option name="ARTIFACT_NAME" value="" />
      <option name="TARGET_SELECTION_MODE" value="EMULATOR" />
      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
      <option name="PREFERRED_AVD" value="" />
      <option name="USE_COMMAND_LINE" value="true" />
      <option name="COMMAND_LINE" value="" />
      <option name="WIPE_USER_DATA" value="false" />
      <option name="DISABLE_BOOT_ANIMATION" value="false" />
      <option name="NETWORK_SPEED" value="full" />
      <option name="NETWORK_LATENCY" value="none" />
      <option name="CLEAR_LOGCAT" value="false" />
      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
      <option name="SELECTED_CLOUD_DEVICE_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_DEVICE_PROJECT_ID" value="" />
      <option name="IS_VALID_CLOUD_MATRIX_SELECTION" value="false" />
      <option name="INVALID_CLOUD_MATRIX_SELECTION_ERROR" value="" />
      <option name="IS_VALID_CLOUD_DEVICE_SELECTION" value="false" />
      <option name="INVALID_CLOUD_DEVICE_SELECTION_ERROR" value="" />
      <option name="CLOUD_DEVICE_SERIAL_NUMBER" value="" />
      <method />
    </configuration>
    <configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests">
      <module name="" />
      <option name="TESTING_TYPE" value="0" />
      <option name="INSTRUMENTATION_RUNNER_CLASS" value="" />
      <option name="METHOD_NAME" value="" />
      <option name="CLASS_NAME" value="" />
      <option name="PACKAGE_NAME" value="" />
      <option name="TARGET_SELECTION_MODE" value="EMULATOR" />
      <option name="USE_LAST_SELECTED_DEVICE" value="false" />
      <option name="PREFERRED_AVD" value="" />
      <option name="USE_COMMAND_LINE" value="true" />
      <option name="COMMAND_LINE" value="" />
      <option name="WIPE_USER_DATA" value="false" />
      <option name="DISABLE_BOOT_ANIMATION" value="false" />
      <option name="NETWORK_SPEED" value="full" />
      <option name="NETWORK_LATENCY" value="none" />
      <option name="CLEAR_LOGCAT" value="false" />
      <option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
      <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
      <option name="SELECTED_CLOUD_DEVICE_CONFIGURATION_ID" value="0" />
      <option name="SELECTED_CLOUD_DEVICE_PROJECT_ID" value="" />
      <option name="IS_VALID_CLOUD_MATRIX_SELECTION" value="false" />
      <option name="INVALID_CLOUD_MATRIX_SELECTION_ERROR" value="" />
      <option name="IS_VALID_CLOUD_DEVICE_SELECTION" value="false" />
      <option name="INVALID_CLOUD_DEVICE_SELECTION_ERROR" value="" />
      <option name="CLOUD_DEVICE_SERIAL_NUMBER" value="" />
      <method />
    </configuration>
    <configuration default="true" type="Applet" factoryName="Applet">
      <module />
      <option name="HTML_USED" value="false" />
      <option name="WIDTH" value="400" />
      <option name="HEIGHT" value="300" />
      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <method />
    </configuration>
    <configuration default="true" type="Application" factoryName="Application">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
      <ExternalSystemSettings>
        <option name="executionName" />
        <option name="externalProjectPath" />
        <option name="externalSystemIdString" value="GRADLE" />
        <option name="scriptParameters" />
        <option name="taskDescriptions">
          <list />
        </option>
        <option name="taskNames">
          <list />
        </option>
        <option name="vmOptions" />
      </ExternalSystemSettings>
      <method />
    </configuration>
    <configuration default="true" type="GriffonRunConfigurationType" factoryName="Griffon">
      <module name="" />
      <setting name="vmparams" value="" />
      <setting name="cmdLine" value="run-app" />
      <setting name="depsClasspath" value="true" />
      <setting name="passParentEnv" value="true" />
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <method />
    </configuration>
    <configuration default="true" type="GroovyScriptRunConfiguration" factoryName="Groovy">
      <module name="" />
      <setting name="path" value="" />
      <setting name="vmparams" value="" />
      <setting name="params" value="" />
      <setting name="workDir" value="" />
      <setting name="debug" value="false" />
      <method />
    </configuration>
    <configuration default="true" type="JUnit" factoryName="JUnit">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="TEST_OBJECT" value="class" />
      <option name="VM_PARAMETERS" value="-ea" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="moduleWithDependencies" />
      </option>
      <envs />
      <patterns />
      <method />
    </configuration>
    <configuration default="true" type="JUnitTestDiscovery" factoryName="JUnit Test Discovery" changeList="All">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="TEST_OBJECT" value="class" />
      <option name="VM_PARAMETERS" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <envs />
      <patterns />
      <method />
    </configuration>
    <configuration default="true" type="JarApplication" factoryName="JAR Application">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="Java Scratch" factoryName="Java Scratch">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="SCRATCH_FILE_ID" value="0" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="ENABLE_SWING_INSPECTOR" value="false" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="JetRunConfigurationType" factoryName="Kotlin">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <option name="MAIN_CLASS_NAME" />
      <option name="VM_PARAMETERS" />
      <option name="PROGRAM_PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <module name="Injection" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="Remote" factoryName="Remote">
      <option name="USE_SOCKET_TRANSPORT" value="true" />
      <option name="SERVER_MODE" value="false" />
      <option name="SHMEM_ADDRESS" value="javadebug" />
      <option name="HOST" value="localhost" />
      <option name="PORT" value="5005" />
      <method />
    </configuration>
    <configuration default="true" type="TestNG" factoryName="TestNG">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="SUITE_NAME" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="GROUP_NAME" />
      <option name="TEST_OBJECT" value="CLASS" />
      <option name="VM_PARAMETERS" value="-ea" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
      <option name="OUTPUT_DIRECTORY" />
      <option name="ANNOTATION_TYPE" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="moduleWithDependencies" />
      </option>
      <option name="USE_DEFAULT_REPORTERS" value="false" />
      <option name="PROPERTIES_FILE" />
      <envs />
      <properties />
      <listeners />
      <method />
    </configuration>
    <configuration default="true" type="TestNGTestDiscovery" factoryName="TestNG Test Discovery" changeList="All">
      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
      <module name="" />
      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
      <option name="ALTERNATIVE_JRE_PATH" />
      <option name="SUITE_NAME" />
      <option name="PACKAGE_NAME" />
      <option name="MAIN_CLASS_NAME" />
      <option name="METHOD_NAME" />
      <option name="GROUP_NAME" />
      <option name="TEST_OBJECT" value="CLASS" />
      <option name="VM_PARAMETERS" />
      <option name="PARAMETERS" />
      <option name="WORKING_DIRECTORY" />
      <option name="OUTPUT_DIRECTORY" />
      <option name="ANNOTATION_TYPE" />
      <option name="ENV_VARIABLES" />
      <option name="PASS_PARENT_ENVS" value="true" />
      <option name="TEST_SEARCH_SCOPE">
        <value defaultName="singleModule" />
      </option>
      <option name="USE_DEFAULT_REPORTERS" value="false" />
      <option name="PROPERTIES_FILE" />
      <envs />
      <properties />
      <listeners />
      <method />
    </configuration>
    <configuration default="false" name="Unnamed" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
      <module name="Injection" />
      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m" />
      <option name="PROGRAM_PARAMETERS" value="" />
      <alternative-path path="/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home" alternative-path-enabled="true" />
      <log_file path="$USER_HOME$/Library/Caches/IdeaIC12/plugins-sandbox/system/log/idea.log" checked="false" skipped="true" show_all="false" alias="IDEA LOG" />
      <RunnerSettings RunnerId="Debug">
        <option name="DEBUG_PORT" value="" />
        <option name="TRANSPORT" value="0" />
        <option name="LOCAL" value="true" />
      </RunnerSettings>
      <RunnerSettings RunnerId="Run" />
      <ConfigurationWrapper RunnerId="Debug" />
      <ConfigurationWrapper RunnerId="Run" />
      <method />
    </configuration>
    <list size="2">
      <item index="0" class="java.lang.String" itemvalue="Plugin.Unnamed" />
      <item index="1" class="java.lang.String" itemvalue="JUnit.All in Injection" />
    </list>
    <recent_temporary>
      <list size="1">
        <item index="0" class="java.lang.String" itemvalue="JUnit.All in Injection" />
      </list>
    </recent_temporary>
    <configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
      <Host>localhost</Host>
      <Port>5050</Port>
    </configuration>
  </component>
  <component name="ShelveChangesManager" show_recycled="false" />
  <component name="SvnConfiguration" myUseAcceleration="nothing">
    <configuration />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="2c7bfba7-49b7-43bb-b292-792839a21ef6" name="Default" comment="" />
      <created>1361704295190</created>
      <option name="number" value="Default" />
      <updated>1361704295190</updated>
    </task>
    <servers />
  </component>
  <component name="ToolWindowManager">
    <frame x="110" y="104" width="1462" height="1024" extended-state="0" />
    <editor active="false" />
    <layout>
      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32879582" sideWeight="0.4841109" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3960177" sideWeight="0.5111562" order="7" side_tool="true" content_ui="tabs" />
      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32964602" sideWeight="0.49763355" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.31874144" sideWeight="0.61465967" order="0" side_tool="false" content_ui="combo" />
      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.31874144" sideWeight="0.3853403" order="1" side_tool="true" content_ui="tabs" />
      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.30628803" sideWeight="0.3329646" order="2" side_tool="true" content_ui="tabs" />
      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39895287" sideWeight="0.49763355" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
      <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="JetGradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32964602" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
    </layout>
  </component>
  <component name="Vcs.Log.UiProperties">
    <option name="RECENTLY_FILTERED_USER_GROUPS">
      <collection />
    </option>
    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
      <collection />
    </option>
  </component>
  <component name="VcsContentAnnotationSettings">
    <option name="myLimit" value="2678400000" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager />
    <watches-manager />
  </component>
  <component name="antWorkspaceConfiguration">
    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
    <option name="FILTER_TARGETS" value="false" />
  </component>
  <component name="editorHistoryManager">
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/util/ExecUtil.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="27" column="22" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/com/injectionforxcode/InjectionAppAction.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="15" column="11" selection-start-line="15" selection-start-column="11" selection-end-line="15" selection-end-column="11" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/util/ExecUtil.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="27" column="22" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="36" column="30" selection-start-line="36" selection-start-column="30" selection-end-line="36" selection-end-column="30" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/com/injectionforxcode/InjectionAppAction.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="15" column="11" selection-start-line="15" selection-start-column="11" selection-end-line="15" selection-end-column="11" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/util/ExecUtil.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="27" column="22" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="3" column="14" selection-start-line="3" selection-start-column="14" selection-end-line="3" selection-end-column="14" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/util/ExecUtil.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="27" column="52" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="22" column="30" selection-start-line="22" selection-start-column="30" selection-end-line="22" selection-end-column="30" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/util/ExecUtil.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="27" column="52" selection-start-line="27" selection-start-column="52" selection-end-line="27" selection-end-column="52" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="22" column="30" selection-start-line="22" selection-start-column="30" selection-end-line="22" selection-end-column="30" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/util/ExecUtil.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="27" column="52" selection-start-line="27" selection-start-column="52" selection-end-line="27" selection-end-column="52" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="jar:///Library/Java/JavaVirtualMachines/1.6.0_41-b02-445.jdk/Contents/Home/src.jar!/src/java/net/SocketAddress.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="22" column="22" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar:///Library/Java/JavaVirtualMachines/1.6.0_41-b02-445.jdk/Contents/Home/src.jar!/src/java/lang/Thread.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="230" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/project/Project.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.73630136">
          <caret line="44" column="9" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar:///Library/Java/JavaVirtualMachines/1.6.0_41-b02-445.jdk/Contents/Home/src.jar!/src/java/io/OutputStream.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="56" column="16" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar:///Library/Java/JavaVirtualMachines/1.6.0_41-b02-445.jdk/Contents/Home/src.jar!/src/java/io/BufferedReader.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="360" column="18" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar:///Library/Java/JavaVirtualMachines/1.6.0_41-b02-445.jdk/Contents/Home/src.jar!/src/java/io/InputStream.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="80" column="15" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/actionSystem/PlatformDataKeys.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="7" column="104" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/actionSystem/AnActionEvent.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="6" column="26" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar:///Library/Java/JavaVirtualMachines/1.6.0_41-b02-445.jdk/Contents/Home/src.jar!/src/java/net/ServerSocket.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.33333334">
          <caret line="309" column="16" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/openapi/actionSystem/LangDataKeys.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="12" column="90" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/process/CapturingProcessHandler.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="15" column="34" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/process/ProcessOutput.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.08690614">
          <caret line="6" column="13" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="jar://$APPLICATION_HOME_DIR$/lib/openapi.jar!/com/intellij/execution/util/ExecUtil.class">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="27" column="22" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Injection.iml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/dictionaries/johnholdsworth.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/copyright/profiles_settings.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/ant.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/compiler.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/misc.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/InjectionAppCode.iml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/uiDesigner.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/modules.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.idea/workspace.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/META-INF/plugin.xml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="-7.5">
          <caret line="12" column="33" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/com/injectionforxcode/InjectionAppAction.java">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.46925566">
          <caret line="36" column="46" selection-start-line="36" selection-start-column="25" selection-end-line="36" selection-end-column="25" />
          <folding />
        </state>
      </provider>
    </entry>
  </component>
  <component name="masterDetails">
    <states>
      <state key="ArtifactsStructureConfigurable.UI">
        <settings>
          <artifact-editor />
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="FacetStructureConfigurable.UI">
        <settings>
          <last-edited>No facets are configured</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="GlobalLibrariesConfigurable.UI">
        <settings>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="JdkListConfigurable.UI">
        <settings>
          <last-edited>IDEA IC-123.169</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ModuleStructureConfigurable.UI">
        <settings>
          <last-edited>Injection</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
                <option value="0.5" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ProjectLibrariesConfigurable.UI">
        <settings>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
      <state key="ScopeChooserConfigurable.UI">
        <settings>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
    </states>
  </component>
</project>

================================================
FILE: InjectionAppCode/Injection.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module type="PLUGIN_MODULE" version="4">
  <component name="DevKit.ModuleBuildProperties" url="file://$MODULE_DIR$/META-INF/plugin.xml" />
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>



================================================
FILE: InjectionAppCode/META-INF/plugin.xml
================================================
<idea-plugin version="2">
  <id>com.injectionforxcode.injectionapp.plugin.id</id>
  <name>Injection App for AppCode</name>
  <version>8.0</version>
  <vendor email="support@injectionforxcode.com" url="http://www.injectionforxcode.com">Injection for Xcode</vendor>

  <description><![CDATA[
      Dynamic Objective-C/Swift Code Injection for App Code.<br>
      <small>Requires Injection for Xcode plugin to work.</small>
      ]]></description>

  <change-notes><![CDATA[
      Initial Release.<br>
      ]]>
  </change-notes>

  <!-- please see http://confluence.jetbrains.net/display/IDEADEV/Build+Number+Ranges for description -->
  <idea-version since-build="107.105"/>

  <!-- please see http://confluence.jetbrains.net/display/IDEADEV/Plugin+Compatibility+with+IntelliJ+Platform+Products
       on how to target different products -->
  <!-- uncomment to enable plugin in all products -->
  <depends>com.intellij.modules.lang</depends>

  <application-components>
    <!-- Add your application components here -->
  </application-components>

  <project-components>
    <!-- Add your project components here -->
  </project-components>

  <actions>
    <!-- Add your actions here -->
      <group id="MyPlugin.SampleMenu" text="_Sample Menu" description="Sample menu">
          <add-to-group group-id="RunMenu" anchor="last"/>
      <action id="InjectionApp.Inject" class="com.injectionforxcode.InjectionAppAction" text="AppInject Source" description="App Inject Source">
          <keyboard-shortcut keymap="$default" first-keystroke="meta EQUALS"/>
      </action>
      </group>
  </actions>

  <extensions defaultExtensionNs="com.intellij">
    <!-- Add your extensions here -->
  </extensions>
</idea-plugin>

================================================
FILE: InjectionAppCode/src/com/injectionforxcode/InjectionAppAction.java
================================================
package com.injectionforxcode;

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.ui.Messages;
import com.intellij.util.ui.UIUtil;

/**
 * Copyright (c) 2013 John Holdsworth. All rights reserved.
 *
 * Created with IntelliJ IDEA.
 * Date: 05/01/2016
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * If you want to "support the cause", consider a paypal donation to:
 *
 * injectionforxcode@johnholdsworth.com
 *
 */

public class InjectionAppAction extends AnAction {

    public void actionPerformed(AnActionEvent event) {
        Project project = event.getData(PlatformDataKeys.PROJECT);
        VirtualFile vf = event.getData(PlatformDataKeys.VIRTUAL_FILE);
        if ( vf == null )
            return;

        FileDocumentManager.getInstance().saveAllDocuments();
        try {
            Runtime.getRuntime().exec(new String[]{"/Applications/Injection.app/Contents/Resources/injectSource",
                    vf.getCanonicalPath()}, null, null).waitFor();
        }
        catch ( final Exception e ) {
            UIUtil.invokeAndWaitIfNeeded(new Runnable() {
                public void run() {
                    Messages.showMessageDialog(e.getMessage(), "InjectionApp Plugin", Messages.getInformationIcon());
                }
            } );
        }
    }

}


================================================
FILE: InjectionBootstrap/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2016 John Holdsworth. All rights reserved.</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: InjectionHelper/Info-Launchd.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.johnholdsworth.Injectorator.Helper</string>
	<key>MachServices</key>
	<dict>
		<key>com.johnholdsworth.Injectorator.Helper.mach</key>
		<true/>
	</dict>
</dict>
</plist>


================================================
FILE: InjectionHelper/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleIdentifier</key>
	<string>com.johnholdsworth.Injectorator.Helper</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2016 John Holdsworth. All rights reserved.</string>
	<key>NSPrincipalClass</key>
	<string></string>
	<key>SMAuthorizedClients</key>
	<array>
		<string>identifier com.johnholdsworth.Injectorator</string>
	</array>
</dict>
</plist>


================================================
FILE: InjectionLoader/BundleContents.h
================================================
//
//  BundleContents.h
//  InjectionLoader
//
//  Created by John Holdsworth on 17/01/2012.
//  Copyright (c) 2012 John Holdsworth. All rights reserved.
//

// move along, nothing to see here..

================================================
FILE: InjectionLoader/BundleContents.mm
================================================
//
//  BundleContents.m
//  InjectionLoader
//
//  Created by John Holdsworth on 17/01/2012.
//  Copyright (c) 2012 John Holdsworth. All rights reserved.
//

#import <stddef.h>

static char _inMainFilePath[] = __FILE__;
static const char *_inIPAddresses[] = {"127.0.0.1", NULL};

#define INJECTION_LOADER
#define INJECTION_ENABLED
#import "../../XprobePlugin/Classes/Xtrace.h"
#import "../../XprobePlugin/Classes/Xprobe.mm"
#import "../../injectionforxcode/InjectionPluginLite/Classes/BundleInjection.h"

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
#import <UIKit/UIKit.h>

//@interface CCDirector
//+ (CCDirector *)sharedDirector;
//+ (id)sharedDeviceConnection;
//+ (id)startRemoteInterface;
//+ (id)sharedInstance;
//@end
#else
#import <Cocoa/Cocoa.h>
#endif

#if 0
static char _inMainFilePath[] = __FILE__;
static const char *_inIPAddresses[] = {"127.0.0.1", NULL};

#define INJECTION_ENABLED
#import "BundleInjection.h"
#else
//@interface BundleInjection
//+ (float *)_inParameters;
//+ (void)loadedNotify:(int)notify hook:(void *)hook;
//@end
#endif

@implementation Xprobe(Seeding)

//+ (void)load {
//#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
//    [self connectTo:NULL retainObjects:YES];
//#else
//    [self connectTo:"127.0.0.1" retainObjects:YES];
//#endif
//    [self search:@""];
//
//    Class injection = NSClassFromString(@"BundleInjection");
//    if ( [injection respondsToSelector:@selector(_inParameters)] )
//        [injection loadedNotify:0 hook:NULL];
//}

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
+ (NSArray *)xprobeSeeds {
    UIApplication *app = [UIApplication sharedApplication];
    NSMutableArray *seeds = [[app windows] mutableCopy];
    [seeds insertObject:app atIndex:0];

    // support for cocos2d
    Class ccDirectorClass = NSClassFromString(@"CCDirector");
    CCDirector *ccDirector = [ccDirectorClass sharedDirector];
    if ( ccDirector )
        [seeds addObject:ccDirector];

    if ( !seeds ) {
        seeds = [NSMutableArray new];

//        Class deviceClass = NSClassFromString(@"SPDeviceConnection");
//        id deviceInstance = [deviceClass sharedDeviceConnection];
//        if ( deviceInstance )
//            [seeds addObject:deviceInstance];
//
//        Class interfaceClass = NSClassFromString(@"SPRemoteInterface");
//        id interfaceInstance = [interfaceClass startRemoteInterface];
//        if ( interfaceInstance )
//            [seeds addObject:interfaceInstance];

        Class cacheClass = NSClassFromString(@"SPCompanionAssetCache");
        id cacheInstance = [cacheClass sharedInstance];
        if ( cacheInstance )
            [seeds addObject:cacheInstance];
    }

    return seeds;
}
#else
+ (NSArray *)xprobeSeeds {
    NSApplication *app = [NSApplication sharedApplication];
    NSMutableArray *seeds = [[app windows] mutableCopy];
    if ( app.delegate )
        [seeds insertObject:app.delegate atIndex:0];
    return seeds;
}
#endif
@end


================================================
FILE: InjectionLoader/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2016 John Holdsworth. All rights reserved.</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: InjectionLoader/InjectionLoader.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		BB356B701E0B1A5C0056B10F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = BB356B6F1E0B1A5C0056B10F /* libz.tbd */; };
		BB356B741E0B1AAE0056B10F /* BundleContents.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB356B721E0B1AAE0056B10F /* BundleContents.mm */; };
		BB356B751E0B1AAE0056B10F /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB356B731E0B1AAE0056B10F /* Info.plist */; };
		BB356B931E0B807B0056B10F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB356B921E0B807B0056B10F /* UIKit.framework */; };
		BB356BC31E0B93CC0056B10F /* Xprobe+Service.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB356BC21E0B93CC0056B10F /* Xprobe+Service.mm */; };
		BB356BCC1E0BC3FE0056B10F /* Xtrace.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB356BCA1E0BC3FE0056B10F /* Xtrace.mm */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		BB356B531E0B184C0056B10F /* InjectionLoader.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = InjectionLoader.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
		BB356B6F1E0B1A5C0056B10F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
		BB356B711E0B1AAE0056B10F /* BundleContents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BundleContents.h; sourceTree = SOURCE_ROOT; };
		BB356B721E0B1AAE0056B10F /* BundleContents.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundleContents.mm; sourceTree = SOURCE_ROOT; };
		BB356B731E0B1AAE0056B10F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; };
		BB356B921E0B807B0056B10F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
		BB356BC21E0B93CC0056B10F /* Xprobe+Service.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "Xprobe+Service.mm"; path = "../../XprobePlugin/Classes/Xprobe+Service.mm"; sourceTree = "<group>"; };
		BB356BC71E0BC3FE0056B10F /* Xprobe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Xprobe.h; path = ../../XprobePlugin/Classes/Xprobe.h; sourceTree = "<group>"; };
		BB356BC81E0BC3FE0056B10F /* Xprobe.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Xprobe.mm; path = ../../XprobePlugin/Classes/Xprobe.mm; sourceTree = "<group>"; };
		BB356BC91E0BC3FE0056B10F /* Xtrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Xtrace.h; path = ../../XprobePlugin/Classes/Xtrace.h; sourceTree = "<group>"; };
		BB356BCA1E0BC3FE0056B10F /* Xtrace.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Xtrace.mm; path = ../../XprobePlugin/Classes/Xtrace.mm; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		BB356B501E0B184C0056B10F /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				BB356B931E0B807B0056B10F /* UIKit.framework in Frameworks */,
				BB356B701E0B1A5C0056B10F /* libz.tbd in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		BB356B4A1E0B184C0056B10F = {
			isa = PBXGroup;
			children = (
				BB356BC91E0BC3FE0056B10F /* Xtrace.h */,
				BB356BCA1E0BC3FE0056B10F /* Xtrace.mm */,
				BB356BC71E0BC3FE0056B10F /* Xprobe.h */,
				BB356BC81E0BC3FE0056B10F /* Xprobe.mm */,
				BB356BC21E0B93CC0056B10F /* Xprobe+Service.mm */,
				BB356B711E0B1AAE0056B10F /* BundleContents.h */,
				BB356B721E0B1AAE0056B10F /* BundleContents.mm */,
				BB356B731E0B1AAE0056B10F /* Info.plist */,
				BB356B541E0B184C0056B10F /* Products */,
				BB356B6E1E0B1A5C0056B10F /* Frameworks */,
			);
			sourceTree = "<group>";
		};
		BB356B541E0B184C0056B10F /* Products */ = {
			isa = PBXGroup;
			children = (
				BB356B531E0B184C0056B10F /* InjectionLoader.bundle */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		BB356B6E1E0B1A5C0056B10F /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				BB356B921E0B807B0056B10F /* UIKit.framework */,
				BB356B6F1E0B1A5C0056B10F /* libz.tbd */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		BB356B521E0B184C0056B10F /* InjectionLoader */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = BB356B591E0B184C0056B10F /* Build configuration list for PBXNativeTarget "InjectionLoader" */;
			buildPhases = (
				BB356B4F1E0B184C0056B10F /* Sources */,
				BB356B501E0B184C0056B10F /* Frameworks */,
				BB356B511E0B184C0056B10F /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = InjectionLoader;
			productName = InjectionLoader;
			productReference = BB356B531E0B184C0056B10F /* InjectionLoader.bundle */;
			productType = "com.apple.product-type.bundle";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		BB356B4B1E0B184C0056B10F /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0820;
				ORGANIZATIONNAME = "John Holdsworth";
				TargetAttributes = {
					BB356B521E0B184C0056B10F = {
						CreatedOnToolsVersion = 8.2.1;
						DevelopmentTeam = 9V5A8WE85E;
						ProvisioningStyle = Manual;
					};
				};
			};
			buildConfigurationList = BB356B4E1E0B184C0056B10F /* Build configuration list for PBXProject "InjectionLoader" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = BB356B4A1E0B184C0056B10F;
			productRefGroup = BB356B541E0B184C0056B10F /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				BB356B521E0B184C0056B10F /* InjectionLoader */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		BB356B511E0B184C0056B10F /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				BB356B751E0B1AAE0056B10F /* Info.plist in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		BB356B4F1E0B184C0056B10F /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				BB356BCC1E0BC3FE0056B10F /* Xtrace.mm in Sources */,
				BB356BC31E0B93CC0056B10F /* Xprobe+Service.mm in Sources */,
				BB356B741E0B1AAE0056B10F /* BundleContents.mm in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		BB356B571E0B184C0056B10F /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ARCHS = "$(ARCHS_STANDARD)";
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"INJECTION_PORT=$INJECTION_PORT",
					"XPROBE_PORT=$XPROBE_PORT",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
			};
			name = Debug;
		};
		BB356B581E0B184C0056B10F /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ARCHS = "$(ARCHS_STANDARD)";
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"INJECTION_PORT=$INJECTION_PORT",
					"XPROBE_PORT=$XPROBE_PORT",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
			};
			name = Release;
		};
		BB356B5A1E0B184C0056B10F /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_IDENTITY = "Developer ID Application";
				COMBINE_HIDPI_IMAGES = YES;
				DEVELOPMENT_TEAM = 9V5A8WE85E;
				INFOPLIST_FILE = Info.plist;
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
				PRODUCT_BUNDLE_IDENTIFIER = com.johnholdsworth.InjectionLoader;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SKIP_INSTALL = YES;
				WRAPPER_EXTENSION = bundle;
			};
			name = Debug;
		};
		BB356B5B1E0B184C0056B10F /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CODE_SIGN_IDENTITY = "Developer ID Application";
				COMBINE_HIDPI_IMAGES = YES;
				DEVELOPMENT_TEAM = 9V5A8WE85E;
				INFOPLIST_FILE = Info.plist;
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
				PRODUCT_BUNDLE_IDENTIFIER = com.johnholdsworth.InjectionLoader;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SKIP_INSTALL = YES;
				WRAPPER_EXTENSION = bundle;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		BB356B4E1E0B184C0056B10F /* Build configuration list for PBXProject "InjectionLoader" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				BB356B571E0B184C0056B10F /* Debug */,
				BB356B581E0B184C0056B10F /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		BB356B591E0B184C0056B10F /* Build configuration list for PBXNativeTarget "InjectionLoader" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				BB356B5A1E0B184C0056B10F /* Debug */,
				BB356B5B1E0B184C0056B10F /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = BB356B4B1E0B184C0056B10F /* Project object */;
}


================================================
FILE: Injectorator/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "mac",
      "size" : "16x16",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "16x16",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "32x32",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "32x32",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "128x128",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "128x128",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "256x256",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "256x256",
      "scale" : "2x"
    },
    {
      "idiom" : "mac",
      "size" : "512x512",
      "scale" : "1x"
    },
    {
      "idiom" : "mac",
      "size" : "512x512",
      "scale" : "2x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Injectorator/Benchmark.swift
================================================
//
//  Benchmark.swift
//  Injectorator
//
//  Created by John Holdsworth on 07/01/2017.
//  Copyright © 2017 John Holdsworth. All rights reserved.
//

import Foundation

extension Integration {

    @IBAction func optimise(sender: AnyObject!) {
        appDelegate.state.setup()
        var html = ""
        for line in LogParser(logDir: appDelegate.state.project!.derivedData+"/Logs/Build").profileLines() {
            let tabsep = line.components(separatedBy: "\t"), time = tabsep[0], location = tabsep[1], decl = tabsep[2]
            let colonsep = location.components(separatedBy: ":"), file = colonsep[0], line = colonsep[1], col = colonsep[2]
            html += "<tr><td><pre>\(time) <td><pre><a href='#' onclick='return gotoFile(\"\(file)\", \(line))'>\(file.url.lastPathComponent):\(line)</a>:\(col) <td><pre>\(decl)\n"
        }

        appDelegate.state.setChangesSource(header: "Compile time measurements...")
        if html == "" {
            html = "Add \"-Xfrontend -debug-time-function-bodies\" to \"Other Swift Flags\" of your project and build to benchmark compilation times"
        }
        else {
            html = "<table cellspacing=0 cellpadding=0>\(html)</table>"
        }
        appDelegate.state.appendSource(title: "", text: html)
    }

    @IBAction func findSpace(sender: AnyObject!) {
        if delegate == nil {
            Bundle.main.loadNibNamed("DiskTree", owner: self, topLevelObjects: nil)
        }
        let notification = Notification(name: .NSApplicationDidFinishLaunching)
        delegate.applicationDidFinishLaunching!(notification)
    }

}

extension LogParser {

    func profileLines() -> [NSString] {
        var out = [NSString]()
        for line in TaskGenerator( command: "gunzip <\"\(recentFirstLogs.first ?? "blah")\"", lineSeparator: "\r" ).sequence {
            if line.contains("ms\t/") {
                let line = line.replacingOccurrences(of: "^.*\"(\\d+\\.\\dms\t)", with: "$1", options: .regularExpression)
                if !line.hasPrefix("0.0ms") {
                    out.append(line as NSString)
                }
            }
        }
        return Set( out ).sorted {
            return $0.floatValue > $1.floatValue
        }
    }

}


================================================
FILE: Injectorator/Credits.rtf
================================================
{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Menlo-Regular;\f2\fnil\fcharset0 HelveticaNeue;
\f3\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;\red83\green98\blue108;}
{\*\expandedcolortbl;;\csgenericrgb\c32549\c38431\c42353;}
\paperw11900\paperh16840\vieww9600\viewh8400\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0

\f0\fs24 \cf0 The Injection plugin for Xcode is now a standalone app. This allows you to inject changes to class method implementations into a running application in the simulator or a macOS app. Injecting is now as simple as downloading the app and run having it running in the background while you are working on a project in Xcode and using the menu bar item "Inject Source" (don't forget to save the file!)\
\
Injection will communicate with Xcode using AppleScript to determine the current file and project then insert code into the the simulator which is then used to load in and swizzle the new version of the code into the app. Injection can also be used as a service or from the command line using the "injectSource" binary in the app package.\
\
For OSX you'll need to patch the project's main.m (create an empty one for Swift projects) using "macOS Project/Patch" on the menu bar, after which, it should connect as before. If you patch your project or once you have performed an initial injection you can use a file watcher which injects each time a file in your project is saved. Unfortunately, injecting on the device is no longer possible due to iOS 10's sandboxing.\
\
For further help go to {\field{\*\fldinst{HYPERLINK "http://johnholdsworth.com/injection.html"}}{\fldrslt http://johnholdsworth.com/injection.html}}\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0

\f1\fs22 \cf0 Copyright (C) 2016-7 John Holdsworth {\field{\*\fldinst{HYPERLINK "mailto:injectionapp@johnholdsworth.com"}}{\fldrslt injectionapp@johnholdsworth.com}} {\field{\*\fldinst{HYPERLINK "https://twitter.com/Injection4Xcode"}}{\fldrslt 
\f2\fs24 \cf2 \expnd0\expndtw0\kerning0
@Injection4Xcode}}\
\
\pard\pardeftab720\partightenfactor0

\f3\fs24 \cf0 \expnd0\expndtw0\kerning0
Permission is hereby granted, free of charge, to any person obtaining a copy\
of this software and associated documentation files (the "Software"), to deal\
in the Software without restriction, including without limitation the rights\
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\
copies of the Software, and to permit persons to whom the Software is\
furnished to do so, subject to the following conditions:\
\
The above copyright notice and this permission notice shall be included in\
all copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT \
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. \
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, \
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE \
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0

\f1\fs22 \cf0 \kerning1\expnd0\expndtw0 \
This release includes software licensed by the original copyright holder to be used under the terms of this license:\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/johnno1962/injectionforxcode"}}{\fldrslt \cf0 injectionforxcode}} - engine for build and reload of code\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/johnno1962/Smuggler"}}{\fldrslt \cf0 Smuggler}} - prototype for injecting code into simulator\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/johnno1962/Xprobe"}}{\fldrslt \cf0 Xprobe}} - realtime app memory browser\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/johnno1962/Xtrace"}}{\fldrslt \cf0 Xtrace}} - Objective-C message tracing\
\
{\field{\*\fldinst{HYPERLINK "https://github.com/johnno1962/Refactorator"}}{\fldrslt Refactorator}} - original Xcode refactoring plugin\
{\field{\*\fldinst{HYPERLINK "https://github.com/johnno1962/RefactoratorApp"}}{\fldrslt RefactoratorApp}} - App version of Refactorator\
\
{\field{\*\fldinst{HYPERLINK "https://github.com/johnno1962/Remote"}}{\fldrslt Remote}} - remote control of iOS devices\
\
Included in this release is software from the following sources under their respective licenses:\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/davedelong/DDHotKey"}}{\fldrslt \cf0 davedelong/DDHotKey}} - create ^= hotkey for injection\
\
\pard\pardeftab720\partightenfactor0

\f3 \cf0 \expnd0\expndtw0\kerning0
The license for this framework is included in every source file, and is repoduced in its entirety here:\
\
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.  The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0

\f1 \cf0 \kerning1\expnd0\expndtw0 \
\pard\tx543\pardeftab543\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/jpsim/SourceKitten"}}{\fldrslt \cf0 jpsim/SourceKitten}} - dynamic loading of SourceKit on demand\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
\cf0 \
\pard\pardeftab720\partightenfactor0

\f3 \cf0 \expnd0\expndtw0\kerning0
The MIT License (MIT)\
\
Copyright (c) 2014 JP Simard.\
\
Permission is hereby granted, free of charge, to any person obtaining a copy\
of this software and associated documentation files (the "Software"), to deal\
in the Software without restriction, including without limitation the rights\
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\
copies of the Software, and to permit persons to whom the Software is\
furnished to do so, subject to the following conditions:\
\
The above copyright notice and this permission notice shall be included in all\
copies or substantial portions of the Software.\
\
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\
SOFTWARE.\
\pard\pardeftab720\partightenfactor0

\f1 \cf0 \kerning1\expnd0\expndtw0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/rentzsch/mach_inject"}}{\fldrslt \cf0 rentzsch/mach_inject}} - inter-process code injection\
\
\pard\pardeftab720\partightenfactor0

\f3 \cf0 \expnd0\expndtw0\kerning0
//   Copyright (c) 2003-2016 Jonathan 'Wolf' Rentzsch: http://rentzsch.com\
//   Some rights reserved: http://opensource.org/licenses/mit\
//   https://github.com/rentzsch/mach_inject\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0

\f1 \cf0 \kerning1\expnd0\expndtw0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://code.google.com/archive/p/canviz"}}{\fldrslt \cf0 canviz}} - Visualisation of dot graphs in WebView canvas\
\
License in application package.\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://codemirror.net/"}}{\fldrslt \cf0 codemirror.net}} - Code editor for Xprobe eval against instance\
\
License in application package.}

================================================
FILE: Injectorator/INController.swift
================================================
//
//  InjectionMenuController.swift
//  Injectorator
//
//  Created by John Holdsworth on 22/12/2016.
//  Copyright © 2016 John Holdsworth. All rights reserved.
//

import Cocoa

class INController: INPluginMenuController {

    var project: Project? {
        if Integration.shared.appDelegate.state.project == nil {
            Integration.shared.appDelegate.state.project = Project(target: nil)
        }
        return Integration.shared.appDelegate.state.project
    }

    override func workspacePath() -> String! {
        return project?.workspacePath
    }

    override func buildDirectory() -> String! {
        return project?.derivedData.url.appendingPathComponent("Build").path ?? "Unknown project deerived data"
    }

    override func logDirectory() -> String! {
        return project?.derivedData.url.appendingPathComponent("Logs/Build").path ?? "Unknown project deerived data"
    }

    override func enableFileWatcher(_ enabled: Bool) {
        super.enableFileWatcher(enabled)
        Integration.shared.updateState(newState: enabled ? .connected : .idle)
    }

    @IBAction func showTunable(sender: AnyObject!) {
        client.paramsPanel.makeKeyAndOrderFront(sender)
    }

    @IBAction func showConsole(sender: AnyObject!) {
        client.consolePanel.makeKeyAndOrderFront(sender)
    }

    @objc (injectSource:)
    @IBAction func injectSource(_ sender: AnyObject!) {
        Integration.shared.injectSource(sender: sender)
    }

    override func xcodeApp() -> String! {
        if let xcodeApp = NSRunningApplication.runningApplications(withBundleIdentifier: "com.apple.dt.Xcode")
            .first?.bundleURL?.path {
            return xcodeApp
        }
        let appName = project?.xCode?.className.replacingOccurrences(of: "Application", with: "")
        return "/Applications/\(appName ?? "Xcode").app"
    }

}


================================================
FILE: Injectorator/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDocumentTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>swift</string>
				<string>m</string>
				<string>h</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>document.icns</string>
			<key>CFBundleTypeMIMETypes</key>
			<array>
				<string>text/css</string>
			</array>
			<key>CFBundleTypeName</key>
			<string>Swift Source</string>
			<key>CFBundleTypeRole</key>
			<string>Viewer</string>
			<key>NSDocumentClass</key>
			<string>AppDelegate</string>
		</dict>
	</array>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIconFile</key>
	<string>App</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>2.7</string>
	<key>CFBundleVersion</key>
	<string>625</string>
	<key>LSApplicationCategoryType</key>
	<string>public.app-category.developer-tools</string>
	<key>LSMinimumSystemVersion</key>
	<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2016 John Holdsworth. All rights reserved.</string>
	<key>NSMainNibFile</key>
	<string>MainMenu</string>
	<key>NSPrincipalClass</key>
	<string>NSApplication</string>
	<key>NSServices</key>
	<array>
		<dict>
			<key>NSKeyEquivalent</key>
			<dict>
				<key>default</key>
				<string>~</string>
			</dict>
			<key>NSMenuItem</key>
			<dict>
				<key>default</key>
				<string>Injection/Inject Source</string>
			</dict>
			<key>NSMessage</key>
			<string>inject</string>
			<key>NSPortName</key>
			<string>Injection</string>
			<key>NSRequiredContext</key>
			<dict/>
			<key>NSSendTypes</key>
			<array>
				<string>NSStringPboardType</string>
				<string>public.plain-text</string>
			</array>
		</dict>
		<dict>
			<key>NSMenuItem</key>
			<dict>
				<key>default</key>
				<string>Injection/Inject File</string>
			</dict>
			<key>NSMessage</key>
			<string>injectFile</string>
			<key>NSPortName</key>
			<string>Injection</string>
			<key>NSRequiredContext</key>
			<dict>
				<key>NSTextContent</key>
				<array>
					<string>FilePath</string>
				</array>
			</dict>
			<key>NSSendTypes</key>
			<array>
				<string>NSStringPboardType</string>
				<string>public.plain-text</string>
				<string>NSURLPboardType</string>
				<string>public.url</string>
				<string>public.file-url</string>
			</array>
		</dict>
		<dict>
			<key>NSMenuItem</key>
			<dict>
				<key>default</key>
				<string>Injection/Load Xprobe</string>
			</dict>
			<key>NSMessage</key>
			<string>xprobe</string>
			<key>NSPortName</key>
			<string>Injection</string>
			<key>NSRequiredContext</key>
			<dict/>
			<key>NSSendTypes</key>
			<array>
				<string>NSStringPboardType</string>
				<string>public.plain-text</string>
			</array>
		</dict>
	</array>
	<key>SMPrivilegedExecutables</key>
	<dict>
		<key>com.johnholdsworth.Injectorator.Helper</key>
		<string>identifier com.johnholdsworth.Injectorator.Helper</string>
	</dict>
</dict>
</plist>


================================================
FILE: Injectorator/Injectorator-Bridging-Header.h
================================================
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import <sqlite3.h>
#import <regex.h>

#import "sourcekitd.h"
#import "Xcode.h"

#import "Utils.h"

#import "INPluginMenuController.h"
#import "INPluginClientController.h"
#import "XprobePluginMenuController.h"
#import "RMPluginController.h"

#import "HelperInstaller.h"
#import "HelperProxy.h"

#import <Carbon/Carbon.h>
#import <AppKit/NSEvent.h>
#import "DDHotKeyCenter.h"

#define SWIFT_INJECTION_PORT INJECTION_PORT
#define SWIFT_REMOTE_PORT REMOTE_PORT


================================================
FILE: Injectorator/Integration.swift
================================================
//
//  SubApp.swift
//  Injectorator
//
//  Created by John Holdsworth on 21/12/2016.
//  Copyright © 2016 John Holdsworth. All rights reserved.
//

import Foundation

//let kVK_ANSI_Equal: UInt16 = 0x18

class Integration: NSObject {

    static var shared: Integration!

    @IBOutlet var injection: INPluginMenuController!
    @IBOutlet var xprobe: XprobePluginMenuController!

    @IBOutlet var mainMenu: NSMenu!
    @IBOutlet var statusMenu: NSMenu!
    private var statusItem: NSStatusItem!

    var remote: RMPluginController!
    var appDelegate: AppDelegate!

    @IBOutlet var delegate: NSApplicationDelegate!

    init(appDelegate: AppDelegate, count: Int) {
        super.init()
        Integration.shared = self
        self.appDelegate = appDelegate

        setenv("IS_INJECTION_APP", Bundle.main.bundlePath, 1)
        signal(SIGPIPE, SIG_IGN)

        guard let appMenu = NSApplication.shared().mainMenu else { return }
        Bundle(for:Integration.self).loadNibNamed("Integration", owner: self, topLevelObjects: nil)

        let notification = Notification(name: .NSApplicationDidFinishLaunching)
        injection.applicationDidFinishLaunching(notification)
        xprobe.applicationDidFinishLaunching(notification)

        xprobe.injectionPlugin = INPluginMenuController.self
        injectionPlugin = injection
        xprobePlugin = xprobe

        appMenu.item(at: 0)?.submenu = mainMenu
        #if swift(>=3.2)
        appMenu.removeItem(at: 1)
        statusMenu.item(withTitle: "Refactor Swift")?.isHidden = true
        #else
        appMenu.item(at: 1)?.submenu?.title = "Refactorator"
        #endif

        let statusBar = NSStatusBar.system()
        statusItem = statusBar.statusItem(withLength: statusBar.thickness)
        statusItem.toolTip = "Injectorator"
        statusItem.highlightMode = true
        statusItem.menu = statusMenu
        statusItem.isEnabled = true
        statusItem.title = ""

        updateState(newState: .idle)

        _ = DDHotKeyCenter.shared()?.registerHotKey(withKeyCode: UInt16(kVK_ANSI_Equal),
                                                    modifierFlags: NSEventModifierFlags.control.rawValue,
                                                    target: self, action: #selector(injectSource(sender:)), object: nil)

        let expires = Date(timeIntervalSince1970: 1515929737.02325)//timeIntervalSinceNow:(2*31+8)*24*60*60)
        print("If not licensed, this copy will expire on: \(expires) \(expires.timeIntervalSince1970)")

        if !appDelegate.licensed && Date() > expires {
            let alert = NSAlert()
            alert.messageText = "Injection"
            alert.informativeText = "An update is available for Injection, please download a new copy"
            alert.runModal()
            appDelegate.help(sender: nil)
            NSApp.terminate(nil)
            return
        }
    }

    @discardableResult
    func error(_ msg: String) -> NSModalResponse {
        NSApp.activate(ignoringOtherApps: true)
        print("Error: \(msg)")
        let alert = NSAlert()
        alert.messageText = "Injection App"
        alert.informativeText = msg
        return alert.runModal()
    }

    func pathForResource( name: String, ofType ext: String! ) -> String! {
        if let path = Bundle.main.path(forResource: name, ofType: ext) {
            return path
        } else {
            error("Could not locate resource \(name).\(ext)" )
            return nil
        }
    }

    func setMenuIcon( tiffName: String ) {
        if let path = pathForResource( name: tiffName, ofType:"tif" ) {
            statusItem.image = NSImage( contentsOfFile:path )
            statusItem.alternateImage = statusItem.image
        }
    }

    func updateState( newState: INBundleState ) {
        switch (newState) {
        case .idle:
            setMenuIcon(tiffName: "InjectionIdle")
        case .connected:
            setMenuIcon(tiffName: "InjectionOK")
        default:
            error("Invalid status \(newState.rawValue)")
            break
        }
    }

    func injectTooling(file: String? = nil) -> String? {
        let bundlePath = pathForResource(name: "InjectionLoader", ofType: "bundle")
        appDelegate.state.project = Project(target: file != nil ? Entity(file: file!) : nil)
        do {
            if !injection.client.connected() {
                if !HelperInstaller.isInstalled() {
                    error( "Injection needs to install a privileged helper to be able to inject code into " +
                        "an app running in the simulator. This is a standard macOS mechanism. " +
                        "You can remove the helper at any time by deleting:\n " +
                        "/Library/PrivilegedHelperTools/com.johnholdsworth.Injectorator.Helper.\n" +
                        "If you'd rather not authorize, you can select \"macOS Project/Patch App\" " +
                        "and use patched injection instead." )
                    try HelperInstaller.install()
                }
                try HelperProxy.inject( bundlePath )
                for _ in 0..<50 {
                    RunLoop.main.run(until: Date(timeIntervalSinceNow: 0.1))
                    if injection.client.connected() {
                        NSApp.hide(nil)
                        return appDelegate.state.project?.entity?.file
                    }
                }
                error( "Timeout waiting for connection from client app" )
                return nil
            }
            NSApp.hide(nil)
            return appDelegate.state.project?.entity?.file
        }
        catch (let err as NSError) {
            print("Couldn't install Injection Helper (domain: \(err.domain) code: \(err.code))")
            error( "Injection Error:\n\(err.localizedDescription)" )
        }
        return nil
    }

    func runInjection( file: String ) {
        injection.client.runScript("injectSource.pl", withArg: file)
        injection.lastInjected[file] = NSDate()
        injection.lastFile = file
    }

    @IBAction func injectSource(sender: AnyObject!) {
        if let file = injectTooling() {
            runInjection(file: file)
        }
    }

    @IBAction func fileWatcher(sender: NSMenuItem!) {
        sender.state = 1-sender.state
        injection.watchButton.state = sender.state
        injection.watchChanged(sender)
    }

    @IBAction func patchProject(sender: AnyObject!) {
        appDelegate.state.project = Project(target: nil)
        injection.client.runScript("patchProject.pl", withArg: "\(SWIFT_INJECTION_PORT)")
    }

    @IBAction func revertProject(sender: AnyObject!) {
        appDelegate.state.project = Project(target: nil)
        injection.client.runScript("revertProject.pl", withArg: "")
    }

    @IBAction func bundleProject(sender: AnyObject!) {
        appDelegate.state.project = Project(target: nil)
        injection.client.runScript("openBundle.pl", withArg: "")
    }

    @IBAction func osxXprobe(sender: AnyObject!) {
        if let path = pathForResource(name: "XprobeBundle", ofType: "loader") {
            injection.client.write("/"+path)
        }
    }

    @IBAction func loadXprobe(sender: AnyObject!) {
        _ = injectTooling()
        injection.client.write("+")
        NSApp.activate(ignoringOtherApps: true)
    }

    @IBAction func refactorSwift(sender: AnyObject!) {
        if let appDelegate = NSApplication.shared().delegate as? AppDelegate {
            appDelegate.state.setup()
            appDelegate.window.makeKeyAndOrderFront(sender)
        }
    }

    func initRemote() -> RMPluginController {
        if remote == nil {
            remote = RMController()
            setenv("REMOTE_PORT", "\(SWIFT_REMOTE_PORT)", 1 )
            let notification = Notification(name: .NSApplicationDidFinishLaunching)
            remote.applicationDidFinishLaunching(notification)
            let title = "Remote Control"
            let index = statusMenu.indexOfItem(withTitle: title)
            statusMenu.removeItem(at: index)
            remote.remoteMenu.title = title
            statusMenu.insertItem(remote.remoteMenu, at: index)

            remote.remoteMenu.submenu?.item(at: 0)?.isHidden = true
        }
        return remote
    }

    @IBAction func remotePatch(sender: AnyObject!) {
        appDelegate.state.project = Project(target: nil)
        initRemote().runScript("patch")
    }

    @IBAction func remoteUnpatch(sender: AnyObject!) {
        appDelegate.state.project = Project(target: nil)
        initRemote().runScript("unpatch")
    }

    @IBAction func terminate(sender: AnyObject!) {
        NSApp.terminate(sender)
    }

}

extension AppDelegate {

    func applicationWillTerminate(_ notification: Notification) {
        _ = DDHotKeyCenter.shared()?.unregisterHotKey(withKeyCode: UInt16(kVK_ANSI_Equal),
                                                    modifierFlags: NSEventModifierFlags.control.rawValue)
    }

    @IBAction func help(sender: NSMenuItem!) {
        state.open(url: "http://johnholdsworth.com/injection.html?index=\(myIndex)")
    }

    @IBAction func donate(sender: NSMenuItem!) {
        state.open(url: "http://johnholdsworth.com/cgi-bin/injection.cgi?index=\(myIndex)")
    }
    
    @objc func inject(_ pboard: NSPasteboard, userData: String, error: NSErrorPointer) {
        _ = pboard.string(forType: NSPasteboardTypeString)
        Integration.shared.injectSource(sender: nil)
    }

    @objc func injectFile(_ pboard: NSPasteboard, userData: String, error: NSErrorPointer) {
        let options = [NSPasteboardURLReadingFileURLsOnlyKey:true]
        if let fileURLs = pboard.readObjects(forClasses: [NSURL.self], options: options),
            let file = (fileURLs.first as? NSURL)?.path {
            _ = Integration.shared.injectTooling(file: file)
            Integration.shared.runInjection(file: file)
        }
    }

    @objc func xprobe(_ pboard: NSPasteboard, userData: String, error: NSErrorPointer) {
        _ = pboard.string(forType: NSPasteboardTypeString)
        Integration.shared.loadXprobe(sender: nil)
    }

}

// ['Snow', 'DarkKhaki', 'IndianRed', 'MistyRose', 'DarkGrey', 'FloralWhite', 'LightGreen', 'DeepSkyBlue', 'Gainsboro', 'Aquamarine', 'Khaki', 'Sienna', 'Purple', 'SlateGray', 'HotPink', 'White', 'PowderBlue', 'DarkGreen', 'PapayaWhip', 'OliveDrab', 'DarkOrange', 'Yellow', 'Crimson', 'MediumBlue', 'DarkMagenta', 'PeachPuff', 'LightCyan', 'MediumOrchid', 'Lime', 'GreenYellow', 'Gold', 'SlateGrey', 'LightYellow', 'Linen', 'DarkSlateGrey', 'PaleVioletRed', 'AliceBlue', 'MediumSeaGreen', 'LightSlateGrey', 'LawnGreen', 'LightGoldenRodYellow', 'SpringGreen', 'Chocolate', 'RoyalBlue', 'DimGrey', 'MediumSlateBlue', 'DarkOrchid', 'CadetBlue', 'PaleGoldenRod', 'BlanchedAlmond', 'Cornsilk', 'CornflowerBlue', 'PaleTurquoise', 'ForestGreen', 'YellowGreen', 'GoldenRod', 'Coral', 'SandyBrown', 'Wheat', 'Tan', 'Black', 'LavenderBlush', 'Turquoise', 'DarkCyan', 'WhiteSmoke', 'OldLace', 'SeaGreen', 'LightSteelBlue', 'DimGray', 'Ivory', 'Salmon', 'Olive', 'HoneyDew', 'Red', 'Beige', 'DarkGray', 'Green', 'DarkBlue', 'Bisque', 'Moccasin', 'Pink', 'LightSalmon', 'DarkSeaGreen', 'LightSlateGray', 'BlueViolet', 'GhostWhite', 'FireBrick', 'DarkRed', 'Orange', 'OrangeRed', 'DarkOliveGreen', 'LightSkyBlue', 'MediumTurquoise', 'DarkSalmon', 'NavajoWhite', 'RosyBrown', 'SteelBlue', 'LightBlue', 'SeaShell', 'SkyBlue', 'DarkSlateGray', 'LimeGreen', 'LightCoral', 'LightSeaGreen', 'SaddleBrown', 'MediumVioletRed', 'Azure', 'Thistle', 'Lavender', 'DarkSlateBlue', 'LightGrey', 'Chartreuse', 'Navy', 'Teal', 'Indigo', 'MediumSpringGreen', 'RebeccaPurple', 'Orchid', 'Tomato', 'PaleGreen', 'Aqua', 'Grey', 'MediumAquaMarine', 'DarkGoldenRod', 'LightGray', 'Violet', 'Fuchsia', 'Magenta', 'DodgerBlue', 'Maroon', 'DarkViolet', 'DeepPink', 'MidnightBlue', 'AntiqueWhite', 'SlateBlue', 'Blue', 'BurlyWood', 'Brown', 'Peru', 'Silver', 'LightPink', 'MediumPurple', 'MintCream', 'Plum', 'Cyan', 'Gray', 'DarkTurquoise', 'LemonChiffon']

let colors = String(data: Data(base64Encoded: "U25vdzpEYXJrS2hha2k6SW5kaWFuUmVkOk1pc3R5Um9zZTpEYXJrR3JleTpGbG9yYWxXaGl0ZTpMaWdodEdyZWVuOkRlZXBTa3lCbHVlOkdhaW5zYm9ybzpBcXVhbWFyaW5lOktoYWtpOlNpZW5uYTpQdXJwbGU6U2xhdGVHcmF5OkhvdFBpbms6V2hpdGU6UG93ZGVyQmx1ZTpEYXJrR3JlZW46UGFwYXlhV2hpcDpPbGl2ZURyYWI6RGFya09yYW5nZTpZZWxsb3c6Q3JpbXNvbjpNZWRpdW1CbHVlOkRhcmtNYWdlbnRhOlBlYWNoUHVmZjpMaWdodEN5YW46TWVkaXVtT3JjaGlkOkxpbWU6R3JlZW5ZZWxsb3c6R29sZDpTbGF0ZUdyZXk6TGlnaHRZZWxsb3c6TGluZW46RGFya1NsYXRlR3JleTpQYWxlVmlvbGV0UmVkOkFsaWNlQmx1ZTpNZWRpdW1TZWFHcmVlbjpMaWdodFNsYXRlR3JleTpMYXduR3JlZW46TGlnaHRHb2xkZW5Sb2RZZWxsb3c6U3ByaW5nR3JlZW46Q2hvY29sYXRlOlJveWFsQmx1ZTpEaW1HcmV5Ok1lZGl1bVNsYXRlQmx1ZTpEYXJrT3JjaGlkOkNhZGV0Qmx1ZTpQYWxlR29sZGVuUm9kOkJsYW5jaGVkQWxtb25kOkNvcm5zaWxrOkNvcm5mbG93ZXJCbHVlOlBhbGVUdXJxdW9pc2U6Rm9yZXN0R3JlZW46WWVsbG93R3JlZW46R29sZGVuUm9kOkNvcmFsOlNhbmR5QnJvd246V2hlYXQ6VGFuOkJsYWNrOkxhdmVuZGVyQmx1c2g6VHVycXVvaXNlOkRhcmtDeWFuOldoaXRlU21va2U6T2xkTGFjZTpTZWFHcmVlbjpMaWdodFN0ZWVsQmx1ZTpEaW1HcmF5Okl2b3J5OlNhbG1vbjpPbGl2ZTpIb25leURldzpSZWQ6QmVpZ2U6RGFya0dyYXk6R3JlZW46RGFya0JsdWU6QmlzcXVlOk1vY2Nhc2luOlBpbms6TGlnaHRTYWxtb246RGFya1NlYUdyZWVuOkxpZ2h0U2xhdGVHcmF5OkJsdWVWaW9sZXQ6R2hvc3RXaGl0ZTpGaXJlQnJpY2s6RGFya1JlZDpPcmFuZ2U6T3JhbmdlUmVkOkRhcmtPbGl2ZUdyZWVuOkxpZ2h0U2t5Qmx1ZTpNZWRpdW1UdXJxdW9pc2U6RGFya1NhbG1vbjpOYXZham9XaGl0ZTpSb3N5QnJvd246U3RlZWxCbHVlOkxpZ2h0Qmx1ZTpTZWFTaGVsbDpTa3lCbHVlOkRhcmtTbGF0ZUdyYXk6TGltZUdyZWVuOkxpZ2h0Q29yYWw6TGlnaHRTZWFHcmVlbjpTYWRkbGVCcm93bjpNZWRpdW1WaW9sZXRSZWQ6QXp1cmU6VGhpc3RsZTpMYXZlbmRlcjpEYXJrU2xhdGVCbHVlOkxpZ2h0R3JleTpDaGFydHJldXNlOk5hdnk6VGVhbDpJbmRpZ286TWVkaXVtU3ByaW5nR3JlZW46UmViZWNjYVB1cnBsZTpPcmNoaWQ6VG9tYXRvOlBhbGVHcmVlbjpBcXVhOkdyZXk6TWVkaXVtQXF1YU1hcmluZTpEYXJrR29sZGVuUm9kOkxpZ2h0R3JheTpWaW9sZXQ6RnVjaHNpYTpNYWdlbnRhOkRvZGdlckJsdWU6TWFyb29uOkRhcmtWaW9sZXQ6RGVlcFBpbms6TWlkbmlnaHRCbHVlOkFudGlxdWVXaGl0ZTpTbGF0ZUJsdWU6Qmx1ZTpCdXJseVdvb2Q6QnJvd246UGVydTpTaWx2ZXI6TGlnaHRQaW5rOk1lZGl1bVB1cnBsZTpNaW50Q3JlYW06UGx1bTpDeWFuOkdyYXk6RGFya1R1cnF1b2lzZTpMZW1vbkNoaWZmb24=")!, encoding: .utf8 )!.components(separatedBy: ":")


================================================
FILE: Injectorator/Integration.xib
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13196" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
    <dependencies>
        <deployment identifier="macosx"/>
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13196"/>
    </dependencies>
    <objects>
        <customObject id="-2" userLabel="File's Owner" customClass="Integration" customModule="Injection">
            <connections>
                <outlet property="injection" destination="iBO-ge-fcE" id="VuU-lO-zNL"/>
                <outlet property="mainMenu" destination="FnL-iN-58C" id="VGn-7L-8tz"/>
                <outlet property="statusMenu" destination="Z8g-4w-jDN" id="I06-vc-G3L"/>
                <outlet property="xprobe" destination="7lV-Oe-TVG" id="r0u-km-uIK"/>
            </connections>
        </customObject>
        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
        <menu id="Z8g-4w-jDN">
            <items>
                <menuItem title="Inject Source" keyEquivalent="=" id="Ser-op-cgk">
                    <modifierMask key="keyEquivalentModifierMask" control="YES"/>
                    <connections>
                        <action selector="injectSourceWithSender:" target="-2" id="EfL-aT-94P"/>
                    </connections>
                </menuItem>
                <menuItem title="Load Xprobe" id="8bq-lQ-9Wz">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="loadXprobeWithSender:" target="-2" id="H0T-Xb-HT4"/>
                    </connections>
                </menuItem>
                <menuItem title="File Watcher" id="29j-cv-WKN">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="fileWatcherWithSender:" target="-2" id="er3-j3-KZq"/>
                    </connections>
                </menuItem>
                <menuItem title="macOS Project" id="HAG-oL-hVX">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <menu key="submenu" title="macOS Project" id="jKi-Uv-Uj1">
                        <items>
                            <menuItem title="Patch" toolTip="for macOS add a main.m to your project and patch it" id="Xgo-b5-QQX">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <connections>
                                    <action selector="patchProjectWithSender:" target="-2" id="cXD-Wi-Zvb"/>
                                </connections>
                            </menuItem>
                            <menuItem title="Unpatch" toolTip="Remove patch code" id="jYC-I2-k5H">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <connections>
                                    <action selector="revertProjectWithSender:" target="-2" id="97s-HZ-eTf"/>
                                </connections>
                            </menuItem>
                            <menuItem title="Xprobe" toolTip="Load Xprobe" id="S0D-cg-BxB">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <connections>
                                    <action selector="osxXprobeWithSender:" target="-2" id="Rgg-Ia-NJy"/>
                                </connections>
                            </menuItem>
                        </items>
                    </menu>
                </menuItem>
                <menuItem title="Remote Control" id="X7x-Zi-AHw">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <menu key="submenu" title="Remote Control" id="wGl-td-HOu">
                        <items>
                            <menuItem title="Patch &amp; Start" id="G4f-mR-ovP" userLabel="Patch App">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <connections>
                                    <action selector="remotePatchWithSender:" target="-2" id="p2U-D5-mG2"/>
                                </connections>
                            </menuItem>
                            <menuItem title="Unpatch App" id="3Tl-Vk-guG" userLabel="Unpatch App">
                                <modifierMask key="keyEquivalentModifierMask"/>
                                <connections>
                                    <action selector="remoteUnpatchWithSender:" target="-2" id="Lb9-AK-O7Q"/>
                                </connections>
                            </menuItem>
                        </items>
                    </menu>
                </menuItem>
                <menuItem title="Injection Prefs" hidden="YES" id="G5j-r6-sYf">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="showTunableWithSender:" target="iBO-ge-fcE" id="GJQ-bJ-qSj"/>
                    </connections>
                </menuItem>
                <menuItem title="Bundle Project" id="IZ1-Vm-3bQ">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="bundleProjectWithSender:" target="-2" id="UNL-d9-Njb"/>
                    </connections>
                </menuItem>
                <menuItem title="View Console" id="tuX-XB-hha">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="showConsoleWithSender:" target="iBO-ge-fcE" id="yL7-0i-ERF"/>
                    </connections>
                </menuItem>
                <menuItem title="Refactor Swift" id="qpD-Nx-3dB">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="refactorSwiftWithSender:" target="-2" id="wee-W4-dqL"/>
                    </connections>
                </menuItem>
                <menuItem title="Optimise Build" id="VPe-S7-P0R">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="optimiseWithSender:" target="-2" id="vQq-xF-CfY"/>
                    </connections>
                </menuItem>
                <menuItem title="Find Space" id="XGq-Qc-78P">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="findSpaceWithSender:" target="-2" id="lPa-Sl-Ssh"/>
                    </connections>
                </menuItem>
                <menuItem title="Quit" id="E5g-n4-OkI">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="terminateWithSender:" target="-2" id="f24-1D-I9R"/>
                    </connections>
                </menuItem>
            </items>
        </menu>
        <customObject id="iBO-ge-fcE" customClass="INController" customModule="Injection" customModuleProvider="target"/>
        <customObject id="7lV-Oe-TVG" customClass="XprobePluginMenuController"/>
        <menu title="Injection" systemMenu="apple" id="FnL-iN-58C">
            <items>
                <menuItem title="About Injection" id="iYI-N7-UuY">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="orderFrontStandardAboutPanel:" target="-1" id="YNB-o9-B79"/>
                    </connections>
                </menuItem>
                <menuItem isSeparatorItem="YES" hidden="YES" id="vVR-s5-sfb"/>
                <menuItem title="Preferences…" hidden="YES" keyEquivalent="," id="clR-w1-P1U"/>
                <menuItem isSeparatorItem="YES" id="dqK-8c-Mck"/>
                <menuItem title="Services" id="0sd-CV-YJA">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <menu key="submenu" title="Services" systemMenu="services" id="y2P-Ji-Xvv"/>
                </menuItem>
                <menuItem isSeparatorItem="YES" id="BvO-7C-9ev"/>
                <menuItem title="Hide Injection" keyEquivalent="h" id="n5b-gx-YgL">
                    <connections>
                        <action selector="hide:" target="-1" id="iev-qH-lEX"/>
                    </connections>
                </menuItem>
                <menuItem title="Hide Others" keyEquivalent="h" id="tpm-wb-SBt">
                    <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
                    <connections>
                        <action selector="hideOtherApplications:" target="-1" id="mPC-3Y-DeQ"/>
                    </connections>
                </menuItem>
                <menuItem title="Show All" id="2dS-1E-4ua">
                    <modifierMask key="keyEquivalentModifierMask"/>
                    <connections>
                        <action selector="unhideAllApplications:" target="-1" id="e17-kQ-c6H"/>
                    </connections>
                </menuItem>
                <menuItem isSeparatorItem="YES" id="6bM-y3-jPc"/>
                <menuItem title="Quit Injection" keyEquivalent="q" id="PhC-v3-F8O">
                    <connections>
                        <action selector="terminate:" target="-1" id="3m3-FP-8H0"/>
                    </connections>
                </menuItem>
            </items>
        </menu>
    </objects>
</document>


================================================
FILE: Injectorator/RMController.swift
================================================
//
//  RMController.swift
//  Injectorator
//
//  Created by John Holdsworth on 06/01/2017.
//  Copyright © 2017 John Holdsworth. All rights reserved.
//

import Foundation

class RMController: RMPluginController {

    var project: Project? {
        return Integration.shared.appDelegate.state.project
    }

    @objc override func workspacePath() -> String! {
        return project?.workspacePath
    }

    @IBAction override func patch(_ sender: NSMenuItem!) {
        Integration.shared.remotePatch(sender: sender)
    }

    @IBAction override func unpatch(_ sender: NSMenuItem!) {
        Integration.shared.remoteUnpatch(sender: sender)
    }

}


================================================
FILE: Injectorator.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		BB010BD91E1F3A0B00C3AACA /* iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = BB010BD41E1F3A0B00C3AACA /* iphone.png */; };
		BB010BDA1E1F3A0B00C3AACA /* log.html in Resources */ = {isa = PBXBuildFile; fileRef = BB010BD51E1F3A0B00C3AACA /* log.html */; };
		BB010BDC1E1F3A0B00C3AACA /* patch.py in Resources */ = {isa = PBXBuildFile; fileRef = BB010BD71E1F3A0B00C3AACA /* patch.py */; };
		BB010BDD1E1F3A0B00C3AACA /* unpatch.py in Resources */ = {isa = PBXBuildFile; fileRef = BB010BD81E1F3A0B00C3AACA /* unpatch.py */; };
		BB010BDE1E1F3A5600C3AACA /* RemoteCapture.h in Resources */ = {isa = PBXBuildFile; fileRef = BB010BCC1E1F39E800C3AACA /* RemoteCapture.h */; };
		BB010BDF1E1F3A5600C3AACA /* RemoteHeaders.h in Resources */ = {isa = PBXBuildFile; fileRef = BB010BCD1E1F39E800C3AACA /* RemoteHeaders.h */; };
		BB010BE01E1F3C2300C3AACA /* RMPluginController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB010BC11E1F39E800C3AACA /* RMPluginController.m */; };
		BB010BE11E1F3C2300C3AACA /* RMWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB010BC41E1F39E800C3AACA /* RMWindowController.m */; };
		BB010BE21E1F3C2300C3AACA /* RMMacroManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB010BC71E1F39E800C3AACA /* RMMacroManager.m */; };
		BB010BE31E1F3C2300C3AACA /* RMDeviceController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB010BC91E1F39E800C3AACA /* RMDeviceController.m */; };
		BB010BE41E1F3C2300C3AACA /* RMImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = BB010BCB1E1F39E800C3AACA /* RMImageView.m */; };
		BB010BE61E1F3D5A00C3AACA /* RMController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB010BE51E1F3D5A00C3AACA /* RMController.swift */; };
		BB010BE71E1F437C00C3AACA /* RMPluginController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB010BC21E1F39E800C3AACA /* RMPluginController.xib */; };
		BB010BE81E1F437C00C3AACA /* RMWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB010BC51E1F39E800C3AACA /* RMWindowController.xib */; };
		BB010C0F1E1F85FF00C3AACA /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB010C0E1E1F85FF00C3AACA /* QTKit.framework */; };
		BB20D57A1E1F98640013C59F /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = BB7D5F0D1E15B94200393CA1 /* README.md */; };
		BB248A941E210FCC003F0DF6 /* Benchmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB248A921E210E2F003F0DF6 /* Benchmark.swift */; };
		BB25263E1F65CC9700898347 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = BB25263D1F65CC9700898347 /* LICENSE */; };
		BB356A531E0AF2780056B10F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BB356A521E0AF2780056B10F /* Assets.xcassets */; };
		BB356A631E0AF2AD0056B10F /* AppController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A5E1E0AF2AD0056B10F /* AppController.swift */; };
		BB356A641E0AF2AD0056B10F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A5F1E0AF2AD0056B10F /* AppDelegate.swift */; };
		BB356A651E0AF2AD0056B10F /* Common.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A601E0AF2AD0056B10F /* Common.swift */; };
		BB356A661E0AF2AD0056B10F /* Formatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A611E0AF2AD0056B10F /* Formatter.swift */; };
		BB356A671E0AF2AD0056B10F /* Project.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A621E0AF2AD0056B10F /* Project.swift */; };
		BB356A701E0AF2E20056B10F /* ByteRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A681E0AF2E20056B10F /* ByteRegex.swift */; };
		BB356A711E0AF2E20056B10F /* Entity.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A691E0AF2E20056B10F /* Entity.swift */; };
		BB356A721E0AF2E20056B10F /* IndexDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A6A1E0AF2E20056B10F /* IndexDB.swift */; };
		BB356A731E0AF2E20056B10F /* IndexStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A6B1E0AF2E20056B10F /* IndexStrings.swift */; };
		BB356A741E0AF2E20056B10F /* LineGenerators.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A6C1E0AF2E20056B10F /* LineGenerators.swift */; };
		BB356A751E0AF2E20056B10F /* LogParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A6D1E0AF2E20056B10F /* LogParser.swift */; };
		BB356A761E0AF2E20056B10F /* SourceKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356A6E1E0AF2E20056B10F /* SourceKit.swift */; };
		BB356A7B1E0AF36F0056B10F /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB356A791E0AF36E0056B10F /* MainMenu.xib */; };
		BB356A801E0AF37A0056B10F /* Source.html in Resources */ = {isa = PBXBuildFile; fileRef = BB356A7C1E0AF37A0056B10F /* Source.html */; };
		BB356A811E0AF37A0056B10F /* canviz.html in Resources */ = {isa = PBXBuildFile; fileRef = BB356A7D1E0AF37A0056B10F /* canviz.html */; };
		BB356A821E0AF37A0056B10F /* canviz2.html in Resources */ = {isa = PBXBuildFile; fileRef = BB356A7E1E0AF37A0056B10F /* canviz2.html */; };
		BB356A831E0AF37A0056B10F /* Intro.html in Resources */ = {isa = PBXBuildFile; fileRef = BB356A7F1E0AF37A0056B10F /* Intro.html */; };
		BB356A851E0AF3910056B10F /* canviz-0.1 in Resources */ = {isa = PBXBuildFile; fileRef = BB356A841E0AF3910056B10F /* canviz-0.1 */; };
		BB356A881E0AF3E10056B10F /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356A871E0AF3E10056B10F /* Utils.m */; };
		BB356A8B1E0AF40B0056B10F /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = BB356A8A1E0AF40B0056B10F /* libsqlite3.tbd */; };
		BB356A8C1E0AF42A0056B10F /* Xcode.h in Resources */ = {isa = PBXBuildFile; fileRef = BB356A771E0AF30B0056B10F /* Xcode.h */; };
		BB356A8E1E0AF4890056B10F /* App.icns in Resources */ = {isa = PBXBuildFile; fileRef = BB356A8D1E0AF4890056B10F /* App.icns */; };
		BB356A901E0AF4AC0056B10F /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB356A8F1E0AF4AC0056B10F /* WebKit.framework */; };
		BB356A9F1E0AF6BB0056B10F /* XprobeConsole.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356A9A1E0AF6BB0056B10F /* XprobeConsole.m */; };
		BB356AA01E0AF6BB0056B10F /* XprobeConsole.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB356A9B1E0AF6BB0056B10F /* XprobeConsole.xib */; };
		BB356AA11E0AF6BB0056B10F /* XprobePluginMenuController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356A9D1E0AF6BB0056B10F /* XprobePluginMenuController.m */; };
		BB356AA21E0AF6BB0056B10F /* XprobePluginMenuController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB356A9E1E0AF6BB0056B10F /* XprobePluginMenuController.xib */; };
		BB356AAE1E0AF6D80056B10F /* INPluginMenuController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356AA41E0AF6D80056B10F /* INPluginMenuController.m */; };
		BB356AAF1E0AF6D80056B10F /* INPluginMenuController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB356AA51E0AF6D80056B10F /* INPluginMenuController.xib */; };
		BB356AB01E0AF6D80056B10F /* INPluginClientController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356AA71E0AF6D80056B10F /* INPluginClientController.m */; };
		BB356AB11E0AF6D80056B10F /* FileWatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356AA91E0AF6D80056B10F /* FileWatcher.m */; };
		BB356AB71E0AF7F40056B10F /* Xtrace.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB356AB31E0AF7F40056B10F /* Xtrace.mm */; };
		BB356AB81E0AF7F40056B10F /* Xprobe.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB356AB51E0AF7F40056B10F /* Xprobe.mm */; };
		BB356AB91E0AF7F40056B10F /* Xprobe+Service.mm in Sources */ = {isa = PBXBuildFile; fileRef = BB356AB61E0AF7F40056B10F /* Xprobe+Service.mm */; };
		BB356ABB1E0AF8130056B10F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = BB356ABA1E0AF8130056B10F /* libz.tbd */; };
		BB356ABD1E0B03220056B10F /* injection.png in Resources */ = {isa = PBXBuildFile; fileRef = BB356ABC1E0B03220056B10F /* injection.png */; };
		BB356AE21E0B09610056B10F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356ADD1E0B09610056B10F /* main.m */; };
		BB356AE31E0B09610056B10F /* Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356ADF1E0B09610056B10F /* Helper.m */; };
		BB356AE41E0B09610056B10F /* mach_inject.c in Sources */ = {isa = PBXBuildFile; fileRef = BB356AE11E0B09610056B10F /* mach_inject.c */; };
		BB356B041E0B0BA20056B10F /* mach_inject_bundle_stub.c in Sources */ = {isa = PBXBuildFile; fileRef = BB356B031E0B0BA20056B10F /* mach_inject_bundle_stub.c */; };
		BB356B051E0B0BC40056B10F /* Bootstrap.bundle in Resources */ = {isa = PBXBuildFile; fileRef = BB356AFC1E0B0B8A0056B10F /* Bootstrap.bundle */; };
		BB356B0C1E0B0D0A0056B10F /* HelperInstaller.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356B091E0B0D0A0056B10F /* HelperInstaller.m */; };
		BB356B0D1E0B0D0A0056B10F /* HelperProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356B0B1E0B0D0A0056B10F /* HelperProxy.m */; };
		BB356B131E0B0E680056B10F /* InjectionOK.tif in Resources */ = {isa = PBXBuildFile; fileRef = BB356B121E0B0E680056B10F /* InjectionOK.tif */; };
		BB356B7C1E0B4A9A0056B10F /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = BB356B7B1E0B4A9A0056B10F /* Credits.rtf */; };
		BB356B7E1E0B542F0056B10F /* com.johnholdsworth.Injectorator.Helper in CopyFiles */ = {isa = PBXBuildFile; fileRef = BB356AD61E0B09000056B10F /* com.johnholdsworth.Injectorator.Helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
		BB356B851E0B5A500056B10F /* InjectionIdle.tif in Resources */ = {isa = PBXBuildFile; fileRef = BB356B841E0B5A500056B10F /* InjectionIdle.tif */; };
		BB356B871E0B5D450056B10F /* INController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356B861E0B5D450056B10F /* INController.swift */; };
		BB356B891E0B72270056B10F /* common.pm in Resources */ = {isa = PBXBuildFile; fileRef = BB356B881E0B72270056B10F /* common.pm */; };
		BB356B8C1E0B72890056B10F /* iOSBundleTemplate in Resources */ = {isa = PBXBuildFile; fileRef = BB356B8A1E0B72890056B10F /* iOSBundleTemplate */; };
		BB356B8D1E0B72890056B10F /* OSXBundleTemplate in Resources */ = {isa = PBXBuildFile; fileRef = BB356B8B1E0B72890056B10F /* OSXBundleTemplate */; };
		BB356B8E1E0B747B0056B10F /* BundleInterface.h in Resources */ = {isa = PBXBuildFile; fileRef = BB356AAA1E0AF6D80056B10F /* BundleInterface.h */; };
		BB356B8F1E0B747B0056B10F /* BundleInjection.h in Resources */ = {isa = PBXBuildFile; fileRef = BB356AAB1E0AF6D80056B10F /* BundleInjection.h */; };
		BB356B911E0B75030056B10F /* injectSource.pl in Resources */ = {isa = PBXBuildFile; fileRef = BB356B901E0B75030056B10F /* injectSource.pl */; };
		BB356B981E0B8A7F0056B10F /* xprobe.html in Resources */ = {isa = PBXBuildFile; fileRef = BB356B961E0B8A7F0056B10F /* xprobe.html */; };
		BB356B991E0B8A7F0056B10F /* tiny_red.gif in Resources */ = {isa = PBXBuildFile; fileRef = BB356B971E0B8A7F0056B10F /* tiny_red.gif */; };
		BB356B9B1E0B8B0D0056B10F /* CodeMirror in Resources */ = {isa = PBXBuildFile; fileRef = BB356B9A1E0B8B0D0056B10F /* CodeMirror */; };
		BB356BC51E0B976E0056B10F /* evalCode.pl in Resources */ = {isa = PBXBuildFile; fileRef = BB356BC41E0B976E0056B10F /* evalCode.pl */; };
		BB356BD41E0C4C0F0056B10F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = BB356BD31E0C4C0F0056B10F /* main.m */; };
		BB356BDA1E0C4C2A0056B10F /* injectSource in Resources */ = {isa = PBXBuildFile; fileRef = BB356BD11E0C4C0E0056B10F /* injectSource */; };
		BB356BE31E0C761E0056B10F /* Integration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB356BDF1E0C758F0056B10F /* Integration.swift */; };
		BB356C041E0D9FC20056B10F /* Integration.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB356C001E0D9B410056B10F /* Integration.xib */; };
		BB356C071E0DA11C0056B10F /* patchProject.pl in Resources */ = {isa = PBXBuildFile; fileRef = BB356C051E0DA0E40056B10F /* patchProject.pl */; };
		BB356C091E0DA37C0056B10F /* revertProject.pl in Resources */ = {isa = PBXBuildFile; fileRef = BB356C081E0DA37C0056B10F /* revertProject.pl */; };
		BB356C311E0DA78B0056B10F /* BundleSweeper.h in Resources */ = {isa = PBXBuildFile; fileRef = BB356AAC1E0AF6D80056B10F /* BundleSweeper.h */; };
		BB356C321E0DA7970056B10F /* IvarAccess.h in Resources */ = {isa = PBXBuildFile; fileRef = BB356AAD1E0AF6D80056B10F /* IvarAccess.h */; };
		BB4847C01E380E1000622FA4 /* DDHotKeyCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = BB4847BD1E380E1000622FA4 /* DDHotKeyCenter.m */; };
		BB4847C11E380E1000622FA4 /* DDHotKeyUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = BB4847BF1E380E1000622FA4 /* DDHotKeyUtilities.m */; };
		BB4847C81E38155D00622FA4 /* DDHotKeyCenter.h in Resources */ = {isa = PBXBuildFile; fileRef = BB4847BC1E380E1000622FA4 /* DDHotKeyCenter.h */; };
		BB5A60A31E221EA600B6C1D9 /* closed_folder_orange.png in Resources */ = {isa = PBXBuildFile; fileRef = BB5A609E1E221EA600B6C1D9 /* closed_folder_orange.png */; };
		BB5A60A41E221EA600B6C1D9 /* open_folder_orange.png in Resources */ = {isa = PBXBuildFile; fileRef = BB5A609F1E221EA600B6C1D9 /* open_folder_orange.png */; };
		BB5A60A51E221EA600B6C1D9 /* document.png in Resources */ = {isa = PBXBuildFile; fileRef = BB5A60A01E221EA600B6C1D9 /* document.png */; };
		BB5A60A61E221EA600B6C1D9 /* scan2.png in Resources */ = {isa = PBXBuildFile; fileRef = BB5A60A11E221EA600B6C1D9 /* scan2.png */; };
		BB5A60A71E221EA600B6C1D9 /* scan.png in Resources */ = {isa = PBXBuildFile; fileRef = BB5A60A21E221EA600B6C1D9 /* scan.png */; };
		BB5A60AB1E221EB400B6C1D9 /* DiskTreeAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = BB5A60A91E221EB400B6C1D9 /* DiskTreeAppDelegate.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
		BB5A60B31E221F5C00B6C1D9 /* DiskTree.html in Resources */ = {isa = PBXBuildFile; fileRef = BB5A60B11E221F5C00B6C1D9 /* DiskTree.html */; };
		BB5A60B41E221F5C00B6C1D9 /* DiskTree.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB5A60B21E221F5C00B6C1D9 /* DiskTree.xib */; };
		BB5A60C81E22220B00B6C1D9 /* tree.c in Sources */ = {isa = PBXBuildFile; fileRef = BB5A60C61E2221EC00B6C1D9 /* tree.c */; };
		BB63C9DB1F7862A30048D83B /* docs in Resources */ = {isa = PBXBuildFile; fileRef = BB63C9D81F7862A30048D83B /* docs */; };
		BB6528321E698C4100B8FB95 /* coverage.rb in Resources */ = {isa = PBXBuildFile; fileRef = BB6528301E698C4100B8FB95 /* coverage.rb */; };
		BB6528331E698C4100B8FB95 /* Coverage.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6528311E698C4100B8FB95 /* Coverage.swift */; };
		BB8192D41F8855F100C96522 /* InjectUnitTests.pm in Resources */ = {isa = PBXBuildFile; fileRef = BB63C9D21F78105D0048D83B /* InjectUnitTests.pm */; };
		BBCE04D81E0E16350097E1E6 /* openBundle.pl in Resources */ = {isa = PBXBuildFile; fileRef = BBCE04D71E0E16350097E1E6 /* openBundle.pl */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		BB356AEA1E0B09F60056B10F /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = BB356A451E0AF2780056B10F /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = BB356AD51E0B09000056B10F;
			remoteInfo = com.johnholdsworth.Injectorator.Helper;
		};
		BB356B061E0B0BCE0056B10F /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = BB356A451E0AF2780056B10F /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = BB356AFB1E0B0B8A0056B10F;
			remoteInfo = InjectionBootstrap;
		};
		BB356B601E0B184D0056B10F /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = BB356B5C1E0B184C0056B10F /* InjectionLoader.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = BB356B531E0B184C0056B10F;
			remoteInfo = InjectionLoader;
		};
		BB356BB21E0B8E940056B10F /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = BB356BAE1E0B8E930056B10F /* XprobeSwift.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = BB356BA51E0B8E930056B10F;
			remoteInfo = XprobeSwift;
		};
		BB356BD81E0C4C1B0056B10F /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = BB356A451E0AF2780056B10F /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = BB356BD01E0C4C0E0056B10F;
			remoteInfo = injectSource;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXCopyFilesBuildPhase section */
		BB356AD41E0B09000056B10F /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = /usr/share/man/man1/;
			dstSubfolderSpec = 0;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
		BB356B7D1E0B54240056B10F /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Contents/Library/LaunchServices;
			dstSubfolderSpec = 1;
			files = (
				BB356B7E1E0B542F0056B10F /* com.johnholdsworth.Injectorator.Helper in CopyFiles */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		BB356BCF1E0C4C0E0056B10F /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = /usr/share/man/man1/;
			dstSubfolderSpec = 0;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
		BB5A60B71E22211900B6C1D9 /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = /usr/share/man/man1/;
			dstSubfolderSpec = 0;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		BB010BC01E1F39E800C3AACA /* RMPluginController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RMPluginController.h; path = ../Remote/Classes/RMPluginController.h; sourceTree = "<group>"; };
		BB010BC11E1F39E800C3AACA /* RMPluginController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RMPluginController.m; path = ../Remote/Classes/RMPluginController.m; sourceTree = "<group>"; };
		BB010BC21E1F39E800C3AACA /* RMPluginController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = RMPluginController.xib; path = ../Remote/Classes/RMPluginController.xib; sourceTree = "<group>"; };
		BB010BC31E1F39E800C3AACA /* RMWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RMWindowController.h; path = ../Remote/Classes/RMWindowController.h; sourceTree = "<group>"; };
		BB010BC41E1F39E800C3AACA /* RMWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RMWindowController.m; path = ../Remote/Classes/RMWindowController.m; sourceTree = "<group>"; };
		BB010BC51E1F39E800C3AACA /* RMWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = RMWindowController.xib; path = ../Remote/Classes/RMWindowController.xib; sourceTree = "<group>"; };
		BB010BC61E1F39E800C3AACA /* RMMacroManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RMMacroManager.h; path = ../Remote/Classes/RMMacroManager.h; sourceTree = "<group>"; };
		BB010BC71E1F39E800C3AACA /* RMMacroManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RMMacroManager.m; path = ../Remote/Classes/RMMacroManager.m; sourceTree = "<group>"; };
		BB010BC81E1F39E800C3AACA /* RMDeviceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RMDeviceController.h; path = ../Remote/Classes/RMDeviceController.h; sourceTree = "<group>"; };
		BB010BC91E1F39E800C3AACA /* RMDeviceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RMDeviceController.m; path = ../Remote/Classes/RMDeviceController.m; sourceTree = "<group>"; };
		BB010BCA1E1F39E800C3AACA /* RMImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RMImageView.h; path = ../Remote/Classes/RMImageView.h; sourceTree = "<group>"; };
		BB010BCB1E1F39E800C3AACA /* RMImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RMImageView.m; path = ../Remote/Classes/RMImageView.m; sourceTree = "<group>"; };
		BB010BCC1E1F39E800C3AACA /* RemoteCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteCapture.h; path = ../Remote/Classes/RemoteCapture.h; sourceTree = "<group>"; };
		BB010BCD1E1F39E800C3AACA /* RemoteHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteHeaders.h; path = ../Remote/Classes/RemoteHeaders.h; sourceTree = "<group>"; };
		BB010BD41E1F3A0B00C3AACA /* iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = iphone.png; path = ../Remote/iphone.png; sourceTree = "<group>"; };
		BB010BD51E1F3A0B00C3AACA /* log.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = log.html; path = ../Remote/log.html; sourceTree = "<group>"; };
		BB010BD71E1F3A0B00C3AACA /* patch.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = patch.py; path = ../Remote/patch.py; sourceTree = "<group>"; };
		BB010BD81E1F3A0B00C3AACA /* unpatch.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = unpatch.py; path = ../Remote/unpatch.py; sourceTree = "<group>"; };
		BB010BE51E1F3D5A00C3AACA /* RMController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RMController.swift; sourceTree = "<group>"; };
		BB010C0E1E1F85FF00C3AACA /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; };
		BB248A921E210E2F003F0DF6 /* Benchmark.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Benchmark.swift; sourceTree = "<group>"; };
		BB25263D1F65CC9700898347 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
		BB356A4D1E0AF2780056B10F /* Injection.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Injection.app; sourceTree = BUILT_PRODUCTS_DIR; };
		BB356A521E0AF2780056B10F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		BB356A571E0AF2780056B10F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		BB356A5D1E0AF2AC0056B10F /* Injectorator-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Injectorator-Bridging-Header.h"; sourceTree = "<group>"; };
		BB356A5E1E0AF2AD0056B10F /* AppController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppController.swift; path = ../../RefactoratorApp/Refactorator/AppController.swift; sourceTree = "<group>"; };
		BB356A5F1E0AF2AD0056B10F /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = ../../RefactoratorApp/Refactorator/AppDelegate.swift; sourceTree = "<group>"; };
		BB356A601E0AF2AD0056B10F /* Common.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Common.swift; path = ../../RefactoratorApp/Refactorator/Common.swift; sourceTree = "<group>"; };
		BB356A611E0AF2AD0056B10F /* Formatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Formatter.swift; path = ../../RefactoratorApp/Refactorator/Formatter.swift; sourceTree = "<group>"; };
		BB356A621E0AF2AD0056B10F /* Project.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Project.swift; path = ../../RefactoratorApp/Refactorator/Project.swift; sourceTree = "<group>"; };
		BB356A681E0AF2E20056B10F /* ByteRegex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ByteRegex.swift; path = ../../Refactorator/refactord/ByteRegex.swift; sourceTree = "<group>"; };
		BB356A691E0AF2E20056B10F /* Entity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Entity.swift; path = ../../Refactorator/refactord/Entity.swift; sourceTree = "<group>"; };
		BB356A6A1E0AF2E20056B10F /* IndexDB.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = IndexDB.swift; path = ../../Refactorator/refactord/IndexDB.swift; sourceTree = "<group>"; };
		BB356A6B1E0AF2E20056B10F /* IndexStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = IndexStrings.swift; path = ../../Refactorator/refactord/IndexStrings.swift; sourceTree = "<group>"; };
		BB356A6C1E0AF2E20056B10F /* LineGenerators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LineGenerators.swift; path = ../../Refactorator/refactord/LineGenerators.swift; sourceTree = "<group>"; };
		BB356A6D1E0AF2E20056B10F /* LogParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LogParser.swift; path = ../../Refactorator/refactord/LogParser.swift; sourceTree = "<group>"; };
		BB356A6E1E0AF2E20056B10F /* SourceKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; name = SourceKit.swift; path = ../../Refactorator/refactord/SourceKit.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
		BB356A6F1E0AF2E20056B10F /* sourcekitd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sourcekitd.h; path = ../../Refactorator/refactord/sourcekitd.h; sourceTree = "<group>"; };
		BB356A771E0AF30B0056B10F /* Xcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Xcode.h; path = ../../RefactoratorApp/Refactorator/Xcode.h; sourceTree = "<group>"; };
		BB356A7A1E0AF36F0056B10F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = ../../RefactoratorApp/Refactorator/Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
		BB356A7C1E0AF37A0056B10F /* Source.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = Source.html; path = ../../RefactoratorApp/Refactorator/Source.html; sourceTree = "<group>"; };
		BB356A7D1E0AF37A0056B10F /* canviz.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = canviz.html; path = ../../RefactoratorApp/Refactorator/canviz.html; sourceTree = "<group>"; };
		BB356A7E1E0AF37A0056B10F /* canviz2.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = canviz2.html; path = ../../RefactoratorApp/Refactorator/canviz2.html; sourceTree = "<group>"; };
		BB356A7F1E0AF37A0056B10F /* Intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = Intro.html; path = ../../RefactoratorApp/Refactorator/Intro.html; sourceTree = "<group>"; };
		BB356A841E0AF3910056B10F /* canviz-0.1 */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "canviz-0.1"; path = "../../RefactoratorApp/canviz-0.1"; sourceTree = "<group>"; };
		BB356A861E0AF3E10056B10F /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = ../../RefactoratorApp/Refactorator/Utils.h; sourceTree = "<group>"; };
		BB356A871E0AF3E10056B10F /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Utils.m; path = ../../RefactoratorApp/Refactorator/Utils.m; sourceTree = "<group>"; };
		BB356A8A1E0AF40B0056B10F /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
		BB356A8D1E0AF4890056B10F /* App.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = App.icns; sourceTree = "<group>"; };
		BB356A8F1E0AF4AC0056B10F /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
		BB356A911E0AF4C40056B10F /* sourcekitd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = sourcekitd.framework; path = Toolchains/XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework; sourceTree = DEVELOPER_DIR; };
		BB356A991E0AF6BB0056B10F /* XprobeConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XprobeConsole.h; path = ../../XprobePlugin/Classes/XprobeConsole.h; sourceTree = "<group>"; };
		BB356A9A1E0AF6BB0056B10F /* XprobeConsole.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XprobeConsole.m; path = ../../XprobePlugin/Classes/XprobeConsole.m; sourceTree = "<group>"; };
		BB356A9B1E0AF6BB0056B10F /* XprobeConsole.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = XprobeConsole.xib; path = ../../XprobePlugin/Classes/XprobeConsole.xib; sourceTree = "<group>"; };
		BB356A9C1E0AF6BB0056B10F /* XprobePluginMenuController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XprobePluginMenuController.h; path = ../../XprobePlugin/Classes/XprobePluginMenuController.h; sourceTree = "<group>"; };
		BB356A9D1E0AF6BB0056B10F /* XprobePluginMenuController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XprobePluginMenuController.m; path = ../../XprobePlugin/Classes/XprobePluginMenuController.m; sourceTree = "<group>"; };
		BB356A9E1E0AF6BB0056B10F /* XprobePluginMenuController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = XprobePluginMenuController.xib; path = ../../XprobePlugin/Classes/XprobePluginMenuController.xib; sourceTree = "<group>"; };
		BB356AA31E0AF6D80056B10F /* INPluginMenuController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = INPluginMenuController.h; path = ../../injectionforxcode/InjectionPluginLite/Classes/INPluginMenuController.h; sourceTree = "<group>"; };
		BB356AA41E0AF6D80056B10F /* INPluginMenuController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = INPluginMenuController.m; path = ../../injectionforxcode/InjectionPluginLite/Classes/INPluginMenuController.m; sourceTree = "<group>"; };
		BB356AA51E0AF6D80056B10F /* INPluginMenuController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = INPluginMenuController.xib; path = ../../injectionforxcode/InjectionPluginLite/Classes/INPluginMenuController.xib; sourceTree = "<group>"; };
		BB356AA61E0AF6D80056B10F /* INPluginClientController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = INPluginClientController.h; path = ../../injectionforxcode/InjectionPluginLite/Classes/INPluginClientController.h; sourceTree = "<group>"; };
		BB356AA71E0AF6D80056B10F /* INPluginClientController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = INPluginClientController.m; path = ../../injectionforxcode/InjectionPluginLite/Classes/INPluginClientController.m; sourceTree = "<group>"; };
		BB356AA81E0AF6D80056B10F /* FileWatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileWatcher.h; path = ../../injectionforxcode/InjectionPluginLite/Classes/FileWatcher.h; sourceTree = "<group>"; };
		BB356AA91E0AF6D80056B10F /* FileWatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileWatcher.m; path = ../../injectionforxcode/InjectionPluginLite/Classes/FileWatcher.m; sourceTree = "<group>"; };
		BB356AAA1E0AF6D80056B10F /* BundleInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BundleInterface.h; path = ../../injectionforxcode/InjectionPluginLite/Classes/BundleInterface.h; sourceTree = "<group>"; };
		BB356AAB1E0AF6D80056B10F /* BundleInjection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BundleInjection.h; path = ../../injectionforxcode/InjectionPluginLite/Classes/BundleInjection.h; sourceTree = "<group>"; };
		BB356AAC1E0AF6D80056B10F /* BundleSweeper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BundleSweeper.h; path = ../../injectionforxcode/InjectionPluginLite/Classes/BundleSweeper.h; sourceTree = "<group>"; };
		BB356AAD1E0AF6D80056B10F /* IvarAccess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IvarAccess.h; path = ../../injectionforxcode/InjectionPluginLite/Classes/IvarAccess.h; sourceTree = "<group>"; };
		BB356AB21E0AF7F40056B10F /* Xtrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Xtrace.h; path = ../../XprobePlugin/Classes/Xtrace.h; sourceTree = "<group>"; };
		BB356AB31E0AF7F40056B10F /* Xtrace.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Xtrace.mm; path = ../../XprobePlugin/Classes/Xtrace.mm; sourceTree = "<group>"; };
		BB356AB41E0AF7F40056B10F /* Xprobe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Xprobe.h; path = ../../XprobePlugin/Classes/Xprobe.h; sourceTree = "<group>"; };
		BB356AB51E0AF7F40056B10F /* Xprobe.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = Xprobe.mm; path = ../../XprobePlugin/Classes/Xprobe.mm; sourceTree = "<group>"; };
		BB356AB61E0AF7F40056B10F /* Xprobe+Service.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "Xprobe+Service.mm"; path = "../../XprobePlugin/Classes/Xprobe+Service.mm"; sourceTree = "<group>"; };
		BB356ABA1E0AF8130056B10F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
		BB356ABC1E0B03220056B10F /* injection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = injection.png; path = ../../injectionforxcode/InjectionPluginLite/injection.png; sourceTree = "<group>"; };
		BB356AD61E0B09000056B10F /* com.johnholdsworth.Injectorator.Helper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = com.johnholdsworth.Injectorator.Helper; sourceTree = BUILT_PRODUCTS_DIR; };
		BB356ADD1E0B09610056B10F /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ../../Smuggler/Helper/main.m; sourceTree = "<group>"; };
		BB356ADE1E0B09610056B10F /* Helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Helper.h; path = ../../Smuggler/Helper/Helper.h; sourceTree = "<group>"; };
		BB356ADF1E0B09610056B10F /* Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Helper.m; path = ../../Smuggler/Helper/Helper.m; sourceTree = "<group>"; };
		BB356AE01E0B09610056B10F /* mach_inject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mach_inject.h; path = ../../Smuggler/Helper/mach_inject.h; sourceTree = "<group>"; };
		BB356AE11E0B09610056B10F /* mach_inject.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mach_inject.c; path = ../../Smuggler/Helper/mach_inject.c; sourceTree = "<group>"; };
		BB356AE51E0B096D0056B10F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		BB356AE61E0B096D0056B10F /* Info-Launchd.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-Launchd.plist"; sourceTree = "<group>"; };
		BB356AFC1E0B0B8A0056B10F /* Bootstrap.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Bootstrap.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
		BB356AFE1E0B0B8A0056B10F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		BB356B021E0B0BA20056B10F /* mach_inject_bundle_stub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mach_inject_bundle_stub.h; path = ../../Smuggler/Bootstrap/mach_inject_bundle_stub.h; sourceTree = "<group>"; };
		BB356B031E0B0BA20056B10F /* mach_inject_bundle_stub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mach_inject_bundle_stub.c; path = ../../Smuggler/Bootstrap/mach_inject_bundle_stub.c; sourceTree = "<group>"; };
		BB356B081E0B0D0A0056B10F /* HelperInstaller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HelperInstaller.h; path = ../../Smuggler/Smuggler/HelperInstaller.h; sourceTree = "<group>"; };
		BB356B091E0B0D0A0056B10F /* HelperInstaller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HelperInstaller.m; path = ../../Smuggler/Smuggler/HelperInstaller.m; sourceTree = "<group>"; };
		BB356B0A1E0B0D0A0056B10F /* HelperProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HelperProxy.h; path = ../../Smuggler/Smuggler/HelperProxy.h; sourceTree = "<group>"; };
		BB356B0B1E0B0D0A0056B10F /* HelperProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HelperProxy.m; path = ../../Smuggler/Smuggler/HelperProxy.m; sourceTree = "<group>"; };
		BB356B121E0B0E680056B10F /* InjectionOK.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = InjectionOK.tif; sourceTree = "<group>"; };
		BB356B5C1E0B184C0056B10F /* InjectionLoader.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = InjectionLoader.xcodeproj; path = InjectionLoader/InjectionLoader.xcodeproj; sourceTree = "<group>"; };
		BB356B7B1E0B4A9A0056B10F /* Credits.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = "<group>"; };
		BB356B841E0B5A500056B10F /* InjectionIdle.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = InjectionIdle.tif; sourceTree = "<group>"; };
		BB356B861E0B5D450056B10F /* INController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = INController.swift; sourceTree = "<group>"; };
		BB356B881E0B72270056B10F /* common.pm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = common.pm; path = ../../injectionforxcode/InjectionPluginLite/common.pm; sourceTree = "<group>"; };
		BB356B8A1E0B72890056B10F /* iOSBundleTemplate */ = {isa = PBXFileReference; lastKnownFileType = folder; name = iOSBundleTemplate; path = ../injectionforxcode/InjectionPluginLite/iOSBundleTemplate; sourceTree = "<group>"; };
		BB356B8B1E0B72890056B10F /* OSXBundleTemplate */ = {isa = PBXFileReference; lastKnownFileType = folder; name = OSXBundleTemplate; path = ../injectionforxcode/InjectionPluginLite/OSXBundleTemplate; sourceTree = "<group>"; };
		BB356B901E0B75030056B10F /* injectSource.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = injectSource.pl; path = ../../injectionforxcode/InjectionPluginLite/injectSource.pl; sourceTree = "<group>"; };
		BB356B961E0B8A7F0056B10F /* xprobe.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = xprobe.html; path = ../../XprobePlugin/xprobe.html; sourceTree = "<group>"; };
		BB356B971E0B8A7F0056B10F /* tiny_red.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = tiny_red.gif; path = ../../XprobePlugin/tiny_red.gif; sourceTree = "<group>"; };
		BB356B9A1E0B8B0D0056B10F /* CodeMirror */ = {isa = PBXFileReference; lastKnownFileType = folder; name = CodeMirror; path = ../../XprobePlugin/CodeMirror; sourceTree = "<group>"; };
		BB356BAE1E0B8E930056B10F /* XprobeSwift.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = XprobeSwift.xcodeproj; path = XprobeSwift/XprobeSwift.xcodeproj; sourceTree = "<group>"; };
		BB356BC41E0B976E0056B10F /* evalCode.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = evalCode.pl; path = ../../injectionforxcode/InjectionPluginLite/evalCode.pl; sourceTree = "<group>"; };
		BB356BD11E0C4C0E0056B10F /* injectSource */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = injectSource; sourceTree = BUILT_PRODUCTS_DIR; };
		BB356BD31E0C4C0F0056B10F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		BB356BDF1E0C758F0056B10F /* Integration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Integration.swift; sourceTree = "<group>"; };
		BB356C001E0D9B410056B10F /* Integration.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Integration.xib; sourceTree = "<group>"; };
		BB356C051E0DA0E40056B10F /* patchProject.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = patchProject.pl; path = ../../injectionforxcode/InjectionPluginLite/patchProject.pl; sourceTree = "<group>"; };
		BB356C081E0DA37C0056B10F /* revertProject.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = revertProject.pl; path = ../../injectionforxcode/InjectionPluginLite/revertProject.pl; sourceTree = "<group>"; };
		BB4847BC1E380E1000622FA4 /* DDHotKeyCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyCenter.h; path = ../../DDHotKey/DDHotKeyCenter.h; sourceTree = "<group>"; };
		BB4847BD1E380E1000622FA4 /* DDHotKeyCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyCenter.m; path = ../../DDHotKey/DDHotKeyCenter.m; sourceTree = "<group>"; };
		BB4847BE1E380E1000622FA4 /* DDHotKeyUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDHotKeyUtilities.h; path = ../../DDHotKey/DDHotKeyUtilities.h; sourceTree = "<group>"; };
		BB4847BF1E380E1000622FA4 /* DDHotKeyUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DDHotKeyUtilities.m; path = ../../DDHotKey/DDHotKeyUtilities.m; sourceTree = "<group>"; };
		BB5A609E1E221EA600B6C1D9 /* closed_folder_orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = closed_folder_orange.png; path = ../DiskTree/closed_folder_orange.png; sourceTree = "<group>"; };
		BB5A609F1E221EA600B6C1D9 /* open_folder_orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = open_folder_orange.png; path = ../DiskTree/open_folder_orange.png; sourceTree = "<group>"; };
		BB5A60A01E221EA600B6C1D9 /* document.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = document.png; path = ../DiskTree/document.png; sourceTree = "<group>"; };
		BB5A60A11E221EA600B6C1D9 /* scan2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = scan2.png; path = ../DiskTree/scan2.png; sourceTree = "<group>"; };
		BB5A60A21E221EA600B6C1D9 /* scan.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = scan.png; path = ../DiskTree/scan.png; sourceTree = "<group>"; };
		BB5A60A81E221EB400B6C1D9 /* DiskTreeAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DiskTreeAppDelegate.h; path = ../DiskTree/DiskTreeAppDelegate.h; sourceTree = "<group>"; };
		BB5A60A91E221EB400B6C1D9 /* DiskTreeAppDelegate.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = DiskTreeAppDelegate.m; path = ../DiskTree/DiskTreeAppDelegate.m; sourceTree = "<group>"; };
		BB5A60B11E221F5C00B6C1D9 /* DiskTree.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = DiskTree.html; path = DiskTree/DiskTree.html; sourceTree = "<group>"; };
		BB5A60B21E221F5C00B6C1D9 /* DiskTree.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = DiskTree.xib; path = DiskTree/DiskTree.xib; sourceTree = "<group>"; };
		BB5A60B91E22211900B6C1D9 /* tree */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tree; sourceTree = BUILT_PRODUCTS_DIR; };
		BB5A60C61E2221EC00B6C1D9 /* tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tree.c; path = DiskTree/tree.c; sourceTree = "<group>"; };
		BB5A60C91E2222A200B6C1D9 /* objcpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = objcpp.h; path = ../ObjCpp/objcpp.h; sourceTree = "<group>"; };
		BB5A60CA1E2222A200B6C1D9 /* objstr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = objstr.h; path = ../ObjCpp/objstr.h; sourceTree = "<group>"; };
		BB63C9D21F78105D0048D83B /* InjectUnitTests.pm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = InjectUnitTests.pm; path = ../../injectionforxcode/InjectionPluginLite/InjectUnitTests.pm; sourceTree = "<group>"; };
		BB63C9D81F7862A30048D83B /* docs */ = {isa = PBXFileReference; lastKnownFileType = folder; path = docs; sourceTree = "<group>"; };
		BB6528301E698C4100B8FB95 /* coverage.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; name = coverage.rb; path = ../../RefactoratorApp/Refactorator/coverage.rb; sourceTree = "<group>"; };
		BB6528311E698C4100B8FB95 /* Coverage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Coverage.swift; path = ../../RefactoratorApp/Refactorator/Coverage.swift; sourceTree = "<group>"; };
		BB7D5F0D1E15B94200393CA1 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
		BBCE04D71E0E16350097E1E6 /* openBundle.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; name = openBundle.pl; path = ../../injectionforxcode/InjectionPluginLite/openBundle.pl; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		BB356A4A1E0AF2780056B10F /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				BB356A901E0AF4AC0056B10F /* WebKit.framework in Frameworks */,
				BB010C0F1E1F85FF00C3AACA /* QTKit.framework in Frameworks */,
				BB356A8B1E0AF40B0056B10F /* libsqlite3.tbd in Frameworks */,
				BB356ABB1E0AF8130056B10F /* libz.tbd in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		BB356AD31E0B09000056B10F /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		BB356AF91E0B0B8A0056B10F /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		BB356BCE1E0C4C0E0056B10F /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		BB5A60B61E22211900B6C1D9 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		BB010BBD1E1F39BE00C3AACA /* Remote */ = {
			isa = PBXGroup;
			children = (
				BB010BC01E1F39E800C3AACA /* RMPluginController.h */,
				BB010BC11E1F39E800C3AACA /* RMPluginController.m */,
				BB010BC21E1F39E800C3AACA /* RMPluginController.xib */,
				BB010BC31E1F39E800C3AACA /* RMWindowController.h */,
				BB010BC41E1F39E800C3AACA /* RMWindowController.m */,
				BB010BC51E1F39E800C3AACA /* RMWindowController.xib */,
				BB010BC61E1F39E800C3AACA /* RMMacroManager.h */,
				BB010BC71E1F39E800C3AACA /* RMMacroManager.m */,
				BB010BC81E1F39E800C3AACA /* RMDeviceController.h */,
				BB010BC91E1F39E800C3AACA /* RMDeviceController.m */,
				BB010BCA1E1F39E800C3AACA /* RMImageView.h */,
				BB010BCB1E1F39E800C3AACA /* RMImageView.m */,
				BB010BCC1E1F39E800C3AACA /* RemoteCapture.h */,
				BB010BCD1E1F39E800C3AACA /* RemoteHeaders.h */,
				BB010BD31E1F39FE00C3AACA /* Resources */,
			);
			name = Remote;
			sourceTree = "<group>";
		};
		BB010BD31E1F39FE00C3AACA /* Resources */ = {
			isa = PBXGroup;
			children = (
				BB010BD41E1F3A0B00C3AACA /* iphone.png */,
				BB010BD51E1F3A0B00C3AACA /* log.html */,
				BB010BD71E1F3A0B00C3AACA /* patch.py */,
				BB010BD81E1F3A0B00C3AACA /* unpatch.py */,
			);
			name = Resources;
			sourceTree = "<group>";
		};
		BB356A441E0AF2780056B10F = {
			isa = PBXGroup;
			children = (
				BB63C9D81F7862A30048D83B /* docs */,
				BB25263D1F65CC9700898347 /* LICENSE */,
				BB7D5F0D1E15B94200393CA1 /* README.md */,
				BB356A4F1E0AF2780056B10F /* Injectorator */,
				BB356ABE1E0B04B80056B10F /* Refactorator */,
				BB356A971E0AF6710056B10F /* Injection */,
				BB356A981E0AF67D0056B10F /* Xprobe */,
				BB010BBD1E1F39BE00C3AACA /* Remote */,
				BB5A609B1E221E7000B6C1D9 /* DiskTree */,
				BB356AD71E0B09000056B10F /* InjectionHelper */,
				BB356AFD1E0B0B8A0056B10F /* InjectionBootstrap */,
				BB356B5C1E0B184C0056B10F /* InjectionLoader.xcodeproj */,
				BB356BAE1E0B8E930056B10F /* XprobeSwift.xcodeproj */,
				BB356B8A1E0B72890056B10F /* iOSBundleTemplate */,
				BB356B8B1E0B72890056B10F /* OSXBundleTemplate */,
				BB356BD21E0C4C0F0056B10F /* injectSource */,
				BB356A891E0AF40A0056B10F /* Frameworks */,
				BB356A4E1E0AF2780056B10F /* Products */,
			);
			sourceTree = "<group>";
		};
		BB356A4E1E0AF2780056B10F /* Products */ = {
			isa = PBXGroup;
			children = (
				BB356A4D1E0AF2780056B10F /* Injection.app */,
				BB356AD61E0B09000056B10F /* com.johnholdsworth.Injectorator.Helper */,
				BB356AFC1E0B0B8A0056B10F /* Bootstrap.bundle */,
				BB356BD11E0C4C0E0056B10F /* injectSource */,
				BB5A60B91E22211900B6C1D9 /* tree */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		BB356A4F1E0AF2780056B10F /* Injectorator */ = {
			isa = PBXGroup;
			children = (
				BB356BDF1E0C758F0056B10F /* Integration.swift */,
				BB356C001E0D9B410056B10F /* Integration.xib */,
				BB248A921E210E2F003F0DF6 /* Benchmark.swift */,
				BB356B861E0B5D450056B10F /* INController.swift */,
				BB010BE51E1F3D5A00C3AACA /* RMController.swift */,
				BB356B081E0B0D0A0056B10F /* HelperInstaller.h */,
				BB356B091E0B0D0A0056B10F /* HelperInstaller.m */,
				BB356B0A1E0B0D0A0056B10F /* HelperProxy.h */,
				BB356B0B1E0B0D0A0056B10F /* HelperProxy.m */,
				BB4847BC1E380E1000622FA4 /* DDHotKeyCenter.h */,
				BB4847BD1E380E1000622FA4 /* DDHotKeyCenter.m */,
				BB4847BE1E380E1000622FA4 /* DDHotKeyUtilities.h */,
				BB4847BF1E380E1000622FA4 /* DDHotKeyUtilities.m */,
				BB356B841E0B5A500056B10F /* InjectionIdle.tif */,
				BB356B121E0B0E680056B10F /* InjectionOK.tif */,
				BB356B881E0B72270056B10F /* common.pm */,
				BB356C051E0DA0E40056B10F /* patchProject.pl */,
				BB356C081E0DA37C0056B10F /* revertProject.pl */,
				BB356B901E0B75030056B10F /* injectSource.pl */,
				BBCE04D71E0E16350097E1E6 /* openBundle.pl */,
				BB356BC41E0B976E0056B10F /* evalCode.pl */,
				BB63C9D21F78105D0048D83B /* InjectUnitTests.pm */,
				BB356A5D1E0AF2AC0056B10F /* Injectorator-Bridging-Header.h */,
				BB356A781E0AF32A0056B10F /* Resources */,
			);
			path = Injectorator;
			sourceTree = "<group>";
		};
		BB356A781E0AF32A0056B10F /* Resources */ = {
			isa = PBXGroup;
			children = (
				BB356A521E0AF2780056B10F /* Assets.xcassets */,
				BB356A791E0AF36E0056B10F /* MainMenu.xib */,
				BB356B7B1E0B4A9A0056B10F /* Credits.rtf */,
				BB356A8D1E0AF4890056B10F /* App.icns */,
				BB356A571E0AF2780056B10F /* Info.plist */,
				BB356A7C1E0AF37A0056B10F /* Source.html */,
				BB356A7D1E0AF37A0056B10F /* canviz.html */,
				BB356A7E1E0AF37A0056B10F /* canviz2.html */,
				BB356A7F1E0AF37A0056B10F /* Intro.html */,
				BB356A841E0AF3910056B10F /* canviz-0.1 */,
			);
			name = Resources;
			sourceTree = "<group>";
		};
		BB356A891E0AF40A0056B10F /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				BB010C0E1E1F85FF00C3AACA /* QTKit.framework */,
				BB356ABA1E0AF8130056B10F /* libz.tbd */,
				BB356A911E
Download .txt
gitextract_2rj_t86d/

├── .gitignore
├── DiskTree/
│   ├── DiskTree.html
│   ├── DiskTree.xib
│   └── tree.c
├── InjectionAppCode/
│   ├── .idea/
│   │   ├── InjectionAppCode.iml
│   │   ├── ant.xml
│   │   ├── compiler.xml
│   │   ├── copyright/
│   │   │   └── profiles_settings.xml
│   │   ├── dictionaries/
│   │   │   └── johnholdsworth.xml
│   │   ├── encodings.xml
│   │   ├── misc.xml
│   │   ├── modules.xml
│   │   ├── scopes/
│   │   │   └── scope_settings.xml
│   │   ├── uiDesigner.xml
│   │   └── workspace.xml
│   ├── Injection.iml
│   ├── Injection.jar
│   ├── META-INF/
│   │   └── plugin.xml
│   └── src/
│       └── com/
│           └── injectionforxcode/
│               └── InjectionAppAction.java
├── InjectionBootstrap/
│   └── Info.plist
├── InjectionHelper/
│   ├── Info-Launchd.plist
│   └── Info.plist
├── InjectionLoader/
│   ├── BundleContents.h
│   ├── BundleContents.mm
│   ├── Info.plist
│   └── InjectionLoader.xcodeproj/
│       └── project.pbxproj
├── Injectorator/
│   ├── App.icns
│   ├── Assets.xcassets/
│   │   └── AppIcon.appiconset/
│   │       └── Contents.json
│   ├── Benchmark.swift
│   ├── Credits.rtf
│   ├── INController.swift
│   ├── Info.plist
│   ├── InjectionIdle.tif
│   ├── InjectionOK.tif
│   ├── Injectorator-Bridging-Header.h
│   ├── Integration.swift
│   ├── Integration.xib
│   └── RMController.swift
├── Injectorator.xcodeproj/
│   ├── project.pbxproj
│   └── project.xcworkspace/
│       ├── contents.xcworkspacedata
│       └── xcshareddata/
│           └── Injectorator.xcscmblueprint
├── LICENSE
├── README.md
├── XprobeSwift/
│   ├── Info.plist
│   ├── XprobeSwift-Bridging-Header.h
│   └── XprobeSwift.xcodeproj/
│       └── project.pbxproj
├── docs/
│   ├── index.html
│   └── injectionfaq.html
└── injectSource/
    └── main.m
Download .txt
SYMBOL INDEX (6 symbols across 2 files)

FILE: DiskTree/tree.c
  type usage_t (line 33) | typedef unsigned long long usage_t;
  function usage_t (line 39) | static usage_t du( char *dir, int level ) {
  function catcher (line 91) | static void catcher( int sig ) {
  function main (line 96) | int main( int argc, char *argv[] ) {

FILE: InjectionAppCode/src/com/injectionforxcode/InjectionAppAction.java
  class InjectionAppAction (line 32) | public class InjectionAppAction extends AnAction {
    method actionPerformed (line 34) | public void actionPerformed(AnActionEvent event) {
Condensed preview — 49 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (284K chars).
[
  {
    "path": ".gitignore",
    "chars": 46,
    "preview": "*/build*\n*Library/*\n*xcuserdata*\n*xccheckout*\n"
  },
  {
    "path": "DiskTree/DiskTree.html",
    "chars": 2654,
    "preview": "<html><head><style>\n\nbody, .treeview { font: 12pt -apple-system; background-color: #303238; }\n\n.treeview UL {\n\tPADDING-R"
  },
  {
    "path": "DiskTree/DiskTree.xib",
    "chars": 3413,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3"
  },
  {
    "path": "DiskTree/tree.c",
    "chars": 2271,
    "preview": "/*\n  Recursive version of du for DiskUsage Applet.\n  (c) John Holdsworth 2011\n\n  Usage is:\n\n$ tree <MIN_FILE> <UTIME> di"
  },
  {
    "path": "InjectionAppCode/.idea/InjectionAppCode.iml",
    "chars": 336,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"JAVA_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\" "
  },
  {
    "path": "InjectionAppCode/.idea/ant.xml",
    "chars": 64,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\" />\n\n"
  },
  {
    "path": "InjectionAppCode/.idea/compiler.xml",
    "chars": 711,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <option name"
  },
  {
    "path": "InjectionAppCode/.idea/copyright/profiles_settings.xml",
    "chars": 74,
    "preview": "<component name=\"CopyrightManager\">\n  <settings default=\"\" />\n</component>"
  },
  {
    "path": "InjectionAppCode/.idea/dictionaries/johnholdsworth.xml",
    "chars": 93,
    "preview": "<component name=\"ProjectDictionaryState\">\n  <dictionary name=\"johnholdsworth\" />\n</component>"
  },
  {
    "path": "InjectionAppCode/.idea/encodings.xml",
    "chars": 220,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\" useUTFGuessing=\"true\" native2A"
  },
  {
    "path": "InjectionAppCode/.idea/misc.xml",
    "chars": 399,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"EntryPointsManager\">\n    <entry_points v"
  },
  {
    "path": "InjectionAppCode/.idea/modules.xml",
    "chars": 385,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n   "
  },
  {
    "path": "InjectionAppCode/.idea/scopes/scope_settings.xml",
    "chars": 139,
    "preview": "<component name=\"DependencyValidationManager\">\n  <state>\n    <option name=\"SKIP_IMPORT_STATEMENTS\" value=\"false\" />\n  </"
  },
  {
    "path": "InjectionAppCode/.idea/uiDesigner.xml",
    "chars": 8794,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Palette2\">\n    <group name=\"Swing\">\n    "
  },
  {
    "path": "InjectionAppCode/.idea/workspace.xml",
    "chars": 56501,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ChangeListManager\">\n    <list default=\"t"
  },
  {
    "path": "InjectionAppCode/Injection.iml",
    "chars": 525,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"PLUGIN_MODULE\" version=\"4\">\n  <component name=\"DevKit.ModuleBuildPr"
  },
  {
    "path": "InjectionAppCode/META-INF/plugin.xml",
    "chars": 1720,
    "preview": "<idea-plugin version=\"2\">\n  <id>com.injectionforxcode.injectionapp.plugin.id</id>\n  <name>Injection App for AppCode</nam"
  },
  {
    "path": "InjectionAppCode/src/com/injectionforxcode/InjectionAppAction.java",
    "chars": 2016,
    "preview": "package com.injectionforxcode;\n\nimport com.intellij.openapi.actionSystem.AnAction;\nimport com.intellij.openapi.actionSys"
  },
  {
    "path": "InjectionBootstrap/Info.plist",
    "chars": 838,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "InjectionHelper/Info-Launchd.plist",
    "chars": 372,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "InjectionHelper/Info.plist",
    "chars": 773,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "InjectionLoader/BundleContents.h",
    "chars": 194,
    "preview": "//\n//  BundleContents.h\n//  InjectionLoader\n//\n//  Created by John Holdsworth on 17/01/2012.\n//  Copyright (c) 2012 John"
  },
  {
    "path": "InjectionLoader/BundleContents.mm",
    "chars": 2926,
    "preview": "//\n//  BundleContents.m\n//  InjectionLoader\n//\n//  Created by John Holdsworth on 17/01/2012.\n//  Copyright (c) 2012 John"
  },
  {
    "path": "InjectionLoader/Info.plist",
    "chars": 838,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "InjectionLoader/InjectionLoader.xcodeproj/project.pbxproj",
    "chars": 12275,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Injectorator/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 903,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"16x16\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : "
  },
  {
    "path": "Injectorator/Benchmark.swift",
    "chars": 2227,
    "preview": "//\n//  Benchmark.swift\n//  Injectorator\n//\n//  Created by John Holdsworth on 07/01/2017.\n//  Copyright © 2017 John Holds"
  },
  {
    "path": "Injectorator/Credits.rtf",
    "chars": 9243,
    "preview": "{\\rtf1\\ansi\\ansicpg1252\\cocoartf1504\\cocoasubrtf830\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;\\f1\\fnil\\fcharset0 Menlo-Reg"
  },
  {
    "path": "Injectorator/INController.swift",
    "chars": 1858,
    "preview": "//\n//  InjectionMenuController.swift\n//  Injectorator\n//\n//  Created by John Holdsworth on 22/12/2016.\n//  Copyright © 2"
  },
  {
    "path": "Injectorator/Info.plist",
    "chars": 3421,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Injectorator/Injectorator-Bridging-Header.h",
    "chars": 563,
    "preview": "//\n//  Use this file to import your target's public headers that you would like to expose to Swift.\n//\n\n#import <sqlite3"
  },
  {
    "path": "Injectorator/Integration.swift",
    "chars": 14104,
    "preview": "//\n//  SubApp.swift\n//  Injectorator\n//\n//  Created by John Holdsworth on 21/12/2016.\n//  Copyright © 2016 John Holdswor"
  },
  {
    "path": "Injectorator/Integration.xib",
    "chars": 9858,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.XIB\" version=\"3.0\" toolsVersion"
  },
  {
    "path": "Injectorator/RMController.swift",
    "chars": 657,
    "preview": "//\n//  RMController.swift\n//  Injectorator\n//\n//  Created by John Holdsworth on 06/01/2017.\n//  Copyright © 2017 John Ho"
  },
  {
    "path": "Injectorator.xcodeproj/project.pbxproj",
    "chars": 86761,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Injectorator.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 157,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:Injectorator.xc"
  },
  {
    "path": "Injectorator.xcodeproj/project.xcworkspace/xcshareddata/Injectorator.xcscmblueprint",
    "chars": 4670,
    "preview": "{\n  \"DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey\" : \"A535CCAD0622E97CAD9CF9E1E3C6AC64A6475A1F\",\n  \"DVTS"
  },
  {
    "path": "LICENSE",
    "chars": 1059,
    "preview": "Copyright (c) 2017 John Holdsworth\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
  },
  {
    "path": "README.md",
    "chars": 1053,
    "preview": "# Injection as an App\n\n![Icon](http://johnholdsworth.com/menu.gif)\n\nIssue tracking Repo for the new Injection as an App\n"
  },
  {
    "path": "XprobeSwift/Info.plist",
    "chars": 838,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "XprobeSwift/XprobeSwift-Bridging-Header.h",
    "chars": 231,
    "preview": "//\n//  Use this file to import your target's public headers that you would like to expose to Swift.\n//\n\n#import \"SwiftTr"
  },
  {
    "path": "XprobeSwift/XprobeSwift.xcodeproj/project.pbxproj",
    "chars": 12918,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "docs/index.html",
    "chars": 1501,
    "preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html lang"
  },
  {
    "path": "docs/injectionfaq.html",
    "chars": 11847,
    "preview": "<html lang=\"en\" xml:lang=\"en\" xmlns=\n\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta content=\"text/html; charset=utf-8\" htt"
  },
  {
    "path": "injectSource/main.m",
    "chars": 688,
    "preview": "//\n//  main.m\n//  injectSource\n//\n//  Created by John Holdsworth on 22/12/2016.\n//  Copyright © 2016 John Holdsworth. Al"
  }
]

// ... and 4 more files (download for full content)

About this extraction

This page contains the full source code of the johnno1962/InjectionApp GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 49 files (257.0 KB), approximately 80.4k tokens, and a symbol index with 6 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!