anchor.diff:  
   :: Check if ConEmu is available
   if exist "%~dp0vendors\ConEmu\ConEmu.exe" if exist "%~dp0etc\ConEmu\%~1.xml" (
  -	start "%~1 starting" "%~dp0vendors\ConEmu\ConEmu.exe" /LoadCfgFile "%~dp0etc\ConEmu\%~1.xml" /Icon "%~dp0etc\images\%~1.ico"
  -	goto :EOF
  +	call :conemu.check.config "%~dp0etc\ConEmu\%~1.xml" && (
  +		start "%~1 starting" "%~dp0vendors\ConEmu\ConEmu.exe" /LoadCfgFile "%~dp0etc\ConEmu\%~1.xml" /Icon "%~dp0etc\images\%~1.ico"
  +		goto :EOF
  +	)
   )
   
   if exist "%~dp0vendors\ConEmu\ConEmu.exe" if exist "%~dp0etc\ConEmu\ConEmu.xml" (
  -	start "%~1 starting" "%~dp0vendors\ConEmu\ConEmu.exe" /LoadCfgFile "%~dp0etc\ConEmu\ConEmu.xml" /Icon "%~dp0etc\images\ConEmu.ico" /cmd "{%~1}"
  -	goto :EOF
  +	call :conemu.check.config "%~dp0etc\ConEmu\ConEmu.xml" "/confname:%~1" && (
  +		start "%~1 starting" "%~dp0vendors\ConEmu\ConEmu.exe" /LoadCfgFile "%~dp0etc\ConEmu\ConEmu.xml" /Icon "%~dp0etc\images\ConEmu.ico" /Config "%~1"
  +		goto :EOF
  +	)
  +	call :conemu.check.config "%~dp0etc\ConEmu\ConEmu.xml" "/taskname:%~1" && (
  +		start "%~1 starting" "%~dp0vendors\ConEmu\ConEmu.exe" /LoadCfgFile "%~dp0etc\ConEmu\ConEmu.xml" /Icon "%~dp0etc\images\ConEmu.ico" /Cmd "{%~1}"
  +		goto :EOF
  +	)
   )
   
   :: Check if git-bash launcher is available
  
positive.code: @echo off
  
  if "%~1" == "" (
  
negative.code: >&2 pause
  exit /b 1
  
  :conemu.check.config
  cscript //nologo //e:javascript "%~f0" %*
  goto :EOF
  
  */0;
  
  var debug = 0;
  
  var alert = alert || function(msg)
  {
  	WScript.Echo(msg);
  };
  
  var exit = exit || function(exitCode)
  {
  	WScript.Quit(exitCode);
  };
  
  if ( WScript.Arguments.Unnamed.length == 0 ) {
  	alert('Usage: ' + WScript.ScriptName + ' options');
  	exit(1);
  }
  
  var filename = WScript.Arguments.Unnamed.item(0);
  var confname = WScript.Arguments.Named.item('CONFNAME') || '.Vanilla';
  var taskname = WScript.Arguments.Named.item('TASKNAME') || '';
  
  var xpath = '/key[@name="Software"]/key[@name="ConEmu"]/key[lower-case(@name)=lower-case("' + confname + '")]/key[@name="Tasks"]/key';
  
  if ( taskname ) {
  	xpath += '/value[@name="Name"][lower-case(@data)=lower-case("{' + taskname + '}")]';
  }
  
  // Comparison in XPath is case sensitive. Using of "lower-case" XPath 
  // function could be good solution to escape differencies between "abc",
  // "ABC" and so on. Unfortunately, "lower-case" is a part of XPath 2.0 and 
  // is not supportable by MS JScript. To resolve this issue we introduce 
  // the partial workaround replacement with the available XPath 1.0 
  // function "translate". 
  // See for details: http://stackoverflow.com/a/1625859/3627676
  xpath = xpath.replace(/lower-case\(([^()]+)\)/g, 'translate($1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")');
  
  debug && alert('FILENAME = ' + filename);
  debug && alert('XPATHSTR = ' + xpath);
  
  var e;
  try {
  	var xmldoc = new ActiveXObject('Microsoft.XMLDOM');
  	xmldoc.setProperty('SelectionLanguage', 'XPath');
  	xmldoc.load(filename);
  
  	var xml = xmldoc.selectNodes(xpath);
  } catch(e) {
  	// If a file or XML are bad, exit with error immediately
  	exit(1);
  }
  
  debug && alert('LEN = ' + xml.length);
  
  exit( xml.length != 0 ? 0 : 1 );
  