diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 13d317f..de3de08 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -7,7 +7,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index e79da7e..fa513c6 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -1,6 +1,13 @@
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 4b661a5..0918945 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,10 +5,11 @@
-
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..14ca6ef 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index c15c296..7a1af76 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,163 +2,14 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -178,25 +29,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -204,61 +36,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -277,8 +66,8 @@
-
-
+
+
@@ -289,17 +78,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -313,37 +203,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -354,111 +213,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
29
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
50
-
-
- file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java
- 62
-
-
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java
74
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java
56
-
-
- file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java
- 61
-
-
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java
95
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java
56
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java
81
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/utils/EDiffHelper.java
- 276
-
+ 265
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java
107
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java
44
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java
51
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
98
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
64
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/utils/ClusterToPattern.java
28
-
file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
95
-
+
+ file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/TestRealCases.java
+ 387
+
+
+
+ file://$PROJECT_DIR$/../gumtree/gen.srcml/src/main/java/com/github/gumtreediff/gen/srcml/AbstractSrcmlTreeGenerator.java
+ 133
+
+
+
+ file://$PROJECT_DIR$/../gumtree/gen.srcml/src/main/java/com/github/gumtreediff/gen/srcml/AbstractSrcmlTreeGenerator.java
+ 456
+
+
+
+ file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
+ 81
+
+
+
+ file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java
+ 40
+
+
+
+ file://$PROJECT_DIR$/src/main/java/edu/lu/uni/serval/fixminer/jobs/EnhancedASTDiff.java
+ 42
+
+
@@ -514,384 +442,4 @@ String key = split[0] + "/"+split[1]+"/" + dist2load;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1.7
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/FixPatternMiner.iml b/FixPatternMiner.iml
new file mode 100644
index 0000000..e470354
--- /dev/null
+++ b/FixPatternMiner.iml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 5eb9b1c..a893250 100755
--- a/pom.xml
+++ b/pom.xml
@@ -12,9 +12,14 @@
UTF-8
- 2.4.11
+ 2.4.17
1.1.2
1.7.7
+ 2.0.0-SNAPSHOT
+ 4.12
+ 2.8.1
+ 1.3
+ 2.4
@@ -24,13 +29,13 @@
javatuples
1.2
+
+
+ me.tongfei
+ progressbar
+ 0.8.1
+
-
-
-
-
-
-
com.typesafe.akka
@@ -41,13 +46,22 @@
com.github.gumtreediff
core
- 2.0.0-SNAPSHOT
+ compile
+ ${gumtree.version}
com.github.gumtreediff
gen.jdt
- 2.0.0-SNAPSHOT
+ compile
+ ${gumtree.version}
+
+
+
+ com.github.gumtreediff
+ gen.srcml
+ compile
+ ${gumtree.version}
@@ -69,92 +83,35 @@
${logback.version}
-
-
-
-
-
-
-
junit
junit
- 4.12
- test
+ ${junit.version}
+
redis.clients
jedis
- 2.8.1
+ ${redis.version}
org.apache.commons
commons-text
- 1.3
+ ${commons.version}
-
- com.rabbitmq
- amqp-client
- 4.0.0
-
-
- junit
- junit
- 4.11
-
-
-
- org.apache.lucene
- lucene-core
- 4.8.0
-
-
-
- org.apache.lucene
- lucene-analyzers-common
- 4.8.0
-
-
-
- org.apache.commons
- commons-math3
- 3.6.1
-
-
-
-
- com.thoughtworks.xstream
- xstream
- 1.3.1
-
commons-io
commons-io
- 2.4
+ ${commons-io.version}
-
- org.redisson
- redisson
- 3.3.0
-
-
- org.eclipse.jetty
- jetty-util
- 9.4.4.v20170414
- compile
-
-
- com.esotericsoftware
- kryo
- 4.0.2
-
+
@@ -184,7 +141,7 @@
-
+
edu.lu.uni.serval.fixminer.Launcher
@@ -201,6 +158,6 @@
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
index 80ccf6e..6b158c0 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/Launcher.java
@@ -1,6 +1,6 @@
package edu.lu.uni.serval.fixminer;
-import edu.lu.uni.serval.fixminer.akka.compare.CompareTrees;
+import edu.lu.uni.serval.fixminer.jobs.CompareTrees;
import edu.lu.uni.serval.fixminer.jobs.EnhancedASTDiff;
import edu.lu.uni.serval.utils.ClusterToPattern;
import org.slf4j.Logger;
@@ -8,6 +8,8 @@ import org.slf4j.LoggerFactory;
import java.io.FileInputStream;
import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.Properties;
/**
@@ -22,45 +24,59 @@ public class Launcher {
Properties appProps = new Properties();
-// String appConfigPath = "/Users/anilkoyuncu/bugStudy/release/code/app.properties";
- String appConfigPath = args[0];
+ String hostname = "Unknown";
+ try
+ {
+ InetAddress addr;
+ addr = InetAddress.getLocalHost();
+ hostname = addr.getHostName();
+ }
+ catch (UnknownHostException ex)
+ {
+ System.out.println("Hostname can not be resolved");
+ }
+ String appConfigPath;
+ if (hostname.equals("Unknown")){
+ appConfigPath = "src/main/resource/app.properties";
+ }
+ else{
+ appConfigPath = "src/main/resource/"+hostname+".app.properties";
+ }
+// String appConfigPath = args[0];
appProps.load(new FileInputStream(appConfigPath));
- String portInner = appProps.getProperty("portInner","6380");
String numOfWorkers = appProps.getProperty("numOfWorkers", "10");
String portDumps = appProps.getProperty("portDumps","6399");
- String pjName = appProps.getProperty("pjName","allDataset");
- String actionType = appProps.getProperty("actionType","ALL");
- String eDiffTimeout = appProps.getProperty("eDiffTimeout","900");
- String parallelism = appProps.getProperty("parallelism","FORKJOIN");
+ String projectType = appProps.getProperty("projectType","java");
+
+ String hunkLimit = appProps.getProperty("hunkLimit","10");
+ String patchSize = appProps.getProperty("patchSize","50");
+ String projectL = appProps.getProperty("projectList","");
+ String[] projectList = projectL.split(",");
String input = appProps.getProperty("inputPath","FORKJOIN");
String redisPath = appProps.getProperty("redisPath","FORKJOIN");
+ String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN");
- String parameter = args[2];
- String jobType = args[1];
+// String parameter = args[2];
+ String parameter = "L1";
+// String jobType = args[1];
+// String jobType = "RICHEDITSCRIPT";
+ String jobType = "COMPARE";
-// String parameters = String.format("\nportInner %s " +
-// "\nnumOfWorkers %s " +
-// "\njobType %s \nport %s " +
-// "\npythonPath %s \ndatasetPath %s" +
-// "\npjName %s \nactionType %s \nthreshold %s \ncursor %s \neDiffTimeout %s \nisBigPair %s \nparallelism %s"
-// , portInner, numOfWorkers, jobType, portDumps, pythonPath,datasetPath,pjName,actionType,threshold,cursor,eDiffTimeout,isBig,parallelism);
-//
-// log.info(parameters);
- mainLaunch(portInner, numOfWorkers, jobType, portDumps, pjName,actionType,eDiffTimeout,parallelism,input,redisPath,parameter);
+ mainLaunch( numOfWorkers, jobType, portDumps,projectType,input,redisPath,parameter, srcMLPath,hunkLimit,projectList,patchSize);
}
- public static void mainLaunch(String portInner, String numOfWorkers, String jobType, String portDumps, String pjName, String actionType, String eDiffTimeout, String parallelism,String input, String redisPath,String parameter){
+ public static void mainLaunch(String numOfWorkers, String jobType, String portDumps, String projectType, String input, String redisPath,String parameter,String srcMLPath,String hunkLimit,String[] projectList,String patchSize){
String dbDir;
String dumpsName;
String gumInput;
- dumpsName = "dumps-"+pjName+".rdb";
+ dumpsName = "dumps-"+projectType+".rdb";
gumInput = input;
dbDir = redisPath;
@@ -69,7 +85,7 @@ public class Launcher {
try {
switch (jobType) {
case "RICHEDITSCRIPT":
- EnhancedASTDiff.main(gumInput, numOfWorkers, pjName, eDiffTimeout,parallelism,portDumps, dbDir, actionType+dumpsName);
+ EnhancedASTDiff.main(gumInput, portDumps, dbDir, dumpsName, srcMLPath,parameter,hunkLimit,projectList,patchSize,projectType);
break;
case "COMPARE":
@@ -77,7 +93,8 @@ public class Launcher {
String compareDBName;
switch (parameter){
case "L1":
- job = "shape";
+// job = "shape";
+ job = "single";
compareDBName = "clusterl0-gumInputALL.rdb";
break;
case "L2":
@@ -93,10 +110,10 @@ public class Launcher {
}
- CompareTrees.main(redisPath, portInner,portDumps,actionType+dumpsName,compareDBName, job);
+ CompareTrees.main(redisPath, portDumps,dumpsName, job,numOfWorkers);
break;
case "PATTERN":
- ClusterToPattern.main(portDumps,redisPath, actionType+dumpsName, parameter);
+ ClusterToPattern.main(portDumps,redisPath, dumpsName, parameter);
break;
default:
throw new Error("unknown Job");
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java
deleted file mode 100755
index d00ffbb..0000000
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/AkkaTreeParser.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package edu.lu.uni.serval.fixminer.akka.compare;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-import redis.clients.jedis.ScanParams;
-import redis.clients.jedis.ScanResult;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * Created by anilkoyuncu on 12/09/2018.
- */
-public class AkkaTreeParser {
-
- private static Logger log = LoggerFactory.getLogger(AkkaTreeParser.class);
-
- public static List getMessages(JedisPool innerPool, int cursor){
-
-
- ScanResult scan;
-
- try (Jedis inner = innerPool.getResource()) {
- while (!inner.ping().equals("PONG")){
- log.info("wait");
- }
- ScanParams sc = new ScanParams();
- //150000000
- log.info("Scanning ");
- sc.count(cursor);
-
- sc.match("*");
-// sc.match("pair_[0-9]*");
-
- scan = inner.scan("0", sc);
-
- int size = scan.getResult().size();
- log.info("Scanned " + String.valueOf(size));
-
- }
- List result = scan.getResult();
- log.info("Getting results");
- return result;
- }
-
- public static HashMap filenames(JedisPool innerPool){
-
-
- HashMap fileMap =new HashMap();
-
- try (Jedis inner = innerPool.getResource()) {
- while (!inner.ping().equals("PONG")){
- log.info("wait");
- }
-
- inner.select(1);
- Map filenames = inner.hgetAll("filenames");
-
-
- for (Map.Entry stringStringEntry : filenames.entrySet().stream().collect(Collectors.toList())) {
- fileMap.put(stringStringEntry.getKey(),stringStringEntry.getValue());
- }
-
-
-
-
-
- }
-
- log.info("Getting results");
- return fileMap;
- }
-
-
-}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java
deleted file mode 100755
index 5d8af81..0000000
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/compare/CompareTrees.java
+++ /dev/null
@@ -1,269 +0,0 @@
-package edu.lu.uni.serval.fixminer.akka.compare;
-
-import com.github.gumtreediff.tree.ITree;
-import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet;
-import edu.lu.uni.serval.utils.CallShell;
-import edu.lu.uni.serval.utils.EDiffHelper;
-import edu.lu.uni.serval.utils.PoolBuilder;
-import org.apache.commons.text.similarity.JaroWinklerDistance;
-import org.javatuples.Pair;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-
-/**
- * Created by anilkoyuncu on 03/04/2018.
- */
-public class CompareTrees {
-
- private static Logger log = LoggerFactory.getLogger(CompareTrees.class);
-
-
- public static void main(String redisPath, String portInner, String portDumps, String dumpsName, String compareDBName, String job) throws Exception {
-
- // shape /Users/anil.koyuncu/projects/test/fixminer-core/python/data/redis ALLdumps-gumInput.rdb clusterl0-gumInputALL.rdb /Users/anil.koyuncu/projects/test/fixminer-core/python/data/richEditScript
-
-// String portInner = "6380";
- String port = portDumps; //"6399";
- CallShell cs = new CallShell();
- String cmd = "bash "+redisPath + "/" + "startServer.sh" +" %s %s %s";
- cmd = String.format(cmd, redisPath,dumpsName,Integer.valueOf(port));
- log.info(cmd);
- cs.runShell(cmd, port);
-
- String cmdInner = "bash "+redisPath + "/" + "startServer.sh" +" %s %s %s";
- cmdInner = String.format(cmdInner, redisPath,compareDBName,Integer.valueOf(portInner));
- log.info(cmdInner);
- cs.runShell(cmdInner, portInner);
-
- String numOfWorkers = "100000000";//args[4];
- String host = "localhost";//args[5];
-// -Djava.util.concurrent.ForkJoinPool.common.parallelism=256
-
- final JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), host,Integer.valueOf(portInner),20000000);
-
- final JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), host,Integer.valueOf(port),20000000);
-
- List listOfPairs = AkkaTreeParser.getMessages(innerPool,Integer.valueOf(numOfWorkers));
- HashMap filenames = AkkaTreeParser.filenames(innerPool);
-
-
- ArrayList samePairs = new ArrayList<>();
- ArrayList errorPairs = new ArrayList<>();
-
-
-
- listOfPairs.stream().parallel().forEach(m->coreCompare(m, job,innerPool, samePairs,errorPairs,filenames,outerPool));
-
- try (Jedis jedis = innerPool.getResource()) {
-
- jedis.select(0);
- jedis.flushDB();
- for (String errorPair : errorPairs) {
- jedis.hset(errorPair, "0", "1");
- }
-
-
- }
- log.info("End process");
- }
- public static void coreCompare(String pairName, String treeType,JedisPool innerPool,ArrayList samePairs,ArrayList errorPairs, HashMap filenames,JedisPool outerPool ) {
-
-// if (samePairs.size() % 1000 == 0) {
-// log.info("Same pairs size "+samePairs.size());
-// }
-
- ITree oldTree = null;
- ITree newTree = null;
- Pair oldPair = null;
- Pair newPair = null;
- String matchKey = null;
-
- try {
-
- String[] split = pairName.split("_");
-
-
- String i = split[1];
- String j = split[2];
- String keyName = split[0];
- matchKey = keyName + "_" + (String.valueOf(i)) + "_" + String.valueOf(j);
-// jedis.select(0);
-// Set keys = jedis.keys(matchKey);
-// if (keys.size() > 0) {
-// jedis.del(matchKey);
-// } else {
-// return;
-// }
-// jedis.srem("pairs",matchKey);
-// JedisPool outerPool = null;
- switch (treeType) {
- case "shape":
- oldTree = EDiffHelper.getShapes(keyName, i, outerPool,filenames);
- newTree = EDiffHelper.getShapes(keyName, j, outerPool,filenames);
- break;
- case "action":
-
- oldPair = EDiffHelper.getActions(keyName, i, outerPool, filenames);
- newPair = EDiffHelper.getActions(keyName, j, outerPool, filenames);
- oldTree = oldPair.getValue0();
- newTree = newPair.getValue0();
-
-
- break;
- case "token":
- oldTree = EDiffHelper.getTokens(keyName, i, outerPool, filenames);
- newTree = EDiffHelper.getTokens(keyName, j, outerPool, filenames);
-
- String oldTokens = EDiffHelper.getNames2(oldTree);
- String newTokens = EDiffHelper.getNames2(newTree);
-
- JaroWinklerDistance jwd = new JaroWinklerDistance();
-
-
- Double overallSimi = Double.valueOf(0);
-
- if (!(oldTokens.trim().isEmpty() || newTokens.trim().isEmpty())) {
- overallSimi = jwd.apply(oldTokens, newTokens);
-
- }
-
-
- int retval = Double.compare(overallSimi, Double.valueOf(1));
-
- if (retval >= 0) {
- String result = i + "," + j + "," + String.join(",", oldTokens);
-// jedis.select(2);
-// jedis.set(matchKey, result);
- try (Jedis jedis = innerPool.getResource()) {
-// jedis.del(matchKey);
- jedis.select(2);
- jedis.set(matchKey, result);
- }
-// samePairs.add(matchKey);
-// try (Jedis jedis = innerPool.getResource()) {
-//// jedis.del(matchKey);
-// jedis.select(2);
-// jedis.set(matchKey, result);
-// }
- }
-// jedis.select(0);
-//// jedis.srem("pairs",matchKey);
-// jedis.del(matchKey);
-
- return;
- default:
- break;
- }
-
-
-
- if(oldTree.toStaticHashString().equals(newTree.toStaticHashString())){
- String editDistance = "0";
- String result = i + "," + j + "," + editDistance;
- if (editDistance.equals("0")) {
-
- if (treeType.equals("action")) {
- HierarchicalActionSet oldProject = oldPair.getValue1();
- HierarchicalActionSet newProject = newPair.getValue1();
-
- oldTree = EDiffHelper.getTargets(oldProject);
- newTree = EDiffHelper.getTargets(newProject);
- if (oldTree.toStaticHashString().equals(newTree.toStaticHashString())) {
- try (Jedis jedis = innerPool.getResource()) {
-// jedis.del(matchKey);
- jedis.select(2);
- jedis.set(matchKey, result);
- }
- }
- } else {
- try (Jedis jedis = innerPool.getResource()) {
-// jedis.del(matchKey);
- jedis.select(2);
- jedis.set(matchKey, result);
- }
- }
- }
-
-
- }
-// if(oldTree.toString().equals(newTree.toString())) {
-// Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree);
-// m.match();
-//
-//
-// ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings());
-// ag.generate();
-// List actions = ag.getActions();
-//
-//
-// String editDistance;
-//
-// editDistance = String.valueOf(actions.size());
-// String result = i + "," + j + "," + editDistance;
-//
-//
-// if (editDistance.equals("0")) {
-//
-// if (treeType.equals("action")) {
-//
-// HierarchicalActionSet oldProject = oldPair.getValue1();
-// HierarchicalActionSet newProject = newPair.getValue1();
-//
-// oldTree = EDiffHelper.getTargets(oldProject);
-// newTree = EDiffHelper.getTargets(newProject);
-//
-// if(oldTree.toString().equals(newTree.toString())) {
-// m = Matchers.getInstance().getMatcher(oldTree, newTree);
-// m.match();
-//
-//
-// ag = new ActionGenerator(oldTree, newTree, m.getMappings());
-// ag.generate();
-// actions = ag.getActions();
-//
-// editDistance = String.valueOf(actions.size());
-//
-// if (editDistance.equals("0")) {
-// try (Jedis jedis = innerPool.getResource()) {
-// jedis.del(matchKey);
-// jedis.select(2);
-// jedis.set(matchKey, result);
-// }
-// }
-// }
-//
-//
-// } else {
-// try (Jedis jedis = innerPool.getResource()) {
-// jedis.del(matchKey);
-// jedis.select(2);
-// jedis.set(matchKey, result);
-// }
-//// jedis.select(2);
-//// jedis.set(matchKey, result);
-//// samePairs.add(matchKey);
-// }
-//
-// }
-// }
-
- } catch (Exception e) {
- errorPairs.add(matchKey);
-// jedis.select(0);
-//// jedis.srem("pairs",matchKey);
-//
-// jedis.hset(matchKey, "0", "1");
-
- log.debug("{} not comparable", pairName);
- }
- }
-
-
-}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/DefaultKryoContext.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/DefaultKryoContext.java
deleted file mode 100644
index 7941ab1..0000000
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/DefaultKryoContext.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
-
-import java.io.ByteArrayOutputStream;
-
-import com.esotericsoftware.kryo.Kryo;
-import com.esotericsoftware.kryo.io.Input;
-import com.esotericsoftware.kryo.io.Output;
-import com.esotericsoftware.kryo.pool.KryoFactory;
-import com.esotericsoftware.kryo.pool.KryoPool;
-import org.objenesis.strategy.SerializingInstantiatorStrategy;
-
-
-public class DefaultKryoContext implements KryoContext{
-
- private static final int DEFAULT_BUFFER = 1024 * 100;
-
- private KryoPool pool;
-
- public static KryoContext newKryoContextFactory()
- {
- return new DefaultKryoContext();
- }
-
- private DefaultKryoContext()
- {
- KryoFactory factory = new KryoFactoryImpl();
-
- pool = new KryoPool.Builder(factory).softReferences().build();
- }
-
- private static class KryoFactoryImpl implements KryoFactory
- {
- @Override
- public Kryo create() {
- Kryo kryo = new Kryo();
- kryo.setInstantiatorStrategy(new Kryo.DefaultInstantiatorStrategy(new SerializingInstantiatorStrategy()));
- return kryo;
- }
- }
-
-
- @Override
- public byte[] serialze(Object obj)
- {
- return serialze(obj, DEFAULT_BUFFER);
- }
-
- @Override
- public byte[] serialze(Object obj, int bufferSize)
- {
- ByteArrayOutputStream base = new ByteArrayOutputStream();
- Output output = new Output(base, bufferSize);
-
- Kryo kryo = pool.borrow();
-
- kryo.writeObject(output, obj);
-
- output.flush();
- byte[] serialized = base.toByteArray();
- output.close();
-
-// byte[] serialized = output.toBytes();
-
- pool.release(kryo);
-
- return serialized;
- }
-
- @Override
- public Object deserialze(Class clazz, byte[] serialized)
- {
- Object obj;
-
- Kryo kryo = pool.borrow();
-
- Input input = new Input(serialized);
- obj = kryo.readObject(input, clazz);
-
- pool.release(kryo);
-
- return obj;
- }
-
-}
\ No newline at end of file
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java
deleted file mode 100755
index cd30b79..0000000
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffHunkParser.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
-
-import edu.lu.uni.serval.utils.EDiffHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.util.List;
-
-
-
-/**
- * Parse fix violations with GumTree in terms of multiple statements.
- *
- * @author kui.liu
- *
- */
-public class EDiffHunkParser extends EDiffParser {
-
- private static Logger logger = LoggerFactory.getLogger(EDiffHunkParser.class);
- @Override
- public void parseFixPatterns(File prevFile, File revFile, File diffentryFile, String project, JedisPool innerPool) {
- List actionSets = parseChangedSourceCodeWithGumTree2(prevFile, revFile);
- if (actionSets.size() != 0) {
-
- boolean processActionSet = true;
-
- int hunkSet = 0;
- if(processActionSet){
- for (HierarchicalActionSet actionSet : actionSets) {
- FileOutputStream f = null;
-
- try {
-
- String astNodeType = actionSet.getAstNodeType();
- actionSet.toString();
- int size = actionSet.getActionSize();
-
- String datasetName = project;
- String[] split1 = diffentryFile.getParent().split(datasetName);
- String root = split1[0];
- String pj = split1[1].split("/")[1];
-
-
- String key = astNodeType+"/"+String.valueOf(size)+"/" + pj +"_" + diffentryFile.getName() + "_" + String.valueOf(hunkSet);
-
- try (Jedis inner = innerPool.getResource()) {
-
- inner.hset("dump".getBytes(),key.getBytes(),EDiffHelper.kryoSerialize(actionSet));
- }
-
- } catch (Exception e) {
- logger.error("error",e);
- e.printStackTrace();
- }
- hunkSet++;
- }
-
- }
- }
-
- }
-
-
-
-}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java
deleted file mode 100755
index 1f8d203..0000000
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffParser.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
-
-import com.github.gumtreediff.actions.model.Action;
-import edu.lu.uni.serval.gumtree.GumTreeComparer;
-import edu.lu.uni.serval.utils.ListSorter;
-import redis.clients.jedis.JedisPool;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Parse fix patterns with GumTree.
- *
- * @author kui.liu
- *
- */
-public class EDiffParser extends Parser {
-
- /*
- * ResultType:
- * 0: normal GumTree results.
- * 1: null GumTree result.
- * 2: No source code changes.
- * 3: No Statement Change.
- * 4: useless violations
- */
- public int resultType = 0;
-
-
-
- /**
- * Regroup GumTree results without remove the modification of variable names.
- *
- * @param prevFile
- * @param revFile
- * @return
- */
- protected List parseChangedSourceCodeWithGumTree2(File prevFile, File revFile) {
- List actionSets = new ArrayList<>();
- // GumTree results
- List gumTreeResults = new GumTreeComparer().compareTwoFilesWithGumTree(prevFile, revFile);
- if (gumTreeResults == null) {
- this.resultType = 1;
- return null;
- } else if (gumTreeResults.size() == 0){
- this.resultType = 2;
- return actionSets;
- } else {
- // Regroup GumTre results.
- List allActionSets = new HierarchicalRegrouper().regroupGumTreeResults(gumTreeResults);
-
-
- ListSorter sorter = new ListSorter<>(allActionSets);
- actionSets = sorter.sortAscending();
-
- if (actionSets.size() == 0) {
- this.resultType = 3;
- }
-
- return actionSets;
- }
- }
-
- @Override
- public void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, JedisPool innerPool) {
-
- }
-
-
-
-}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/KryoContext.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/KryoContext.java
deleted file mode 100644
index d641ede..0000000
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/KryoContext.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
-
-public interface KryoContext {
-
- byte[] serialze(Object obj);
-
- byte[] serialze(Object obj, int bufferSize);
-
- Object deserialze(Class clazz, byte[] serialized);
-}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/RunnableParser.java b/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/RunnableParser.java
deleted file mode 100755
index b4b48a4..0000000
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/RunnableParser.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
-
-import redis.clients.jedis.JedisPool;
-
-import java.io.File;
-
-public class RunnableParser implements Runnable {
-
- private File prevFile;
- private File revFile;
- private File diffentryFile;
- private Parser parser;
- private String project;
- private JedisPool pool;
-
- public RunnableParser(File prevFile, File revFile, File diffentryFile, Parser parser) {
- this.prevFile = prevFile;
- this.revFile = revFile;
- this.diffentryFile = diffentryFile;
- this.parser = parser;
- }
-
- public RunnableParser(File prevFile, File revFile, File diffentryFile, Parser parser, String project, JedisPool innerPool) {
- this.prevFile = prevFile;
- this.revFile = revFile;
- this.diffentryFile = diffentryFile;
- this.parser = parser;
- this.project = project;
- this.pool = innerPool;
- }
-
- @Override
- public void run() {
- parser.parseFixPatterns(prevFile, revFile, diffentryFile,project,pool);
- }
-}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffActor.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffActor.java
similarity index 93%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffActor.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffActor.java
index 9e714ea..342f058 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffActor.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffActor.java
@@ -1,4 +1,4 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
import akka.actor.ActorRef;
import akka.actor.Props;
@@ -54,7 +54,7 @@ public class EDiffActor extends UntypedActor {
int toIndex = (i + 1) * average + counter;
List filesOfWorkers = files.subList(fromIndex, toIndex);
- final EDiffMessage workMsg = new EDiffMessage(i + 1, filesOfWorkers,((EDiffMessage) message).getSECONDS_TO_WAIT(),((EDiffMessage) message).getInnerPool());
+ final EDiffMessage workMsg = new EDiffMessage(i + 1, filesOfWorkers,((EDiffMessage) message).getSECONDS_TO_WAIT(),((EDiffMessage) message).getInnerPool(),((EDiffMessage) message).getSrcMLPath(),((EDiffMessage) message).getRootType());
mineRouter.tell(workMsg, getSelf());
logger.info("Assign {} task to worker #" + (i + 1) ,filesOfWorkers.size());
}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffHunkParser.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffHunkParser.java
new file mode 100755
index 0000000..3b7daf9
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffHunkParser.java
@@ -0,0 +1,103 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+import com.github.gumtreediff.tree.ITree;
+import edu.lu.uni.serval.utils.EDiffHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+
+import java.io.File;
+import java.util.List;
+
+
+
+/**
+ * Parse fix violations with GumTree in terms of multiple statements.
+ *
+ * @author kui.liu
+ *
+ */
+public class EDiffHunkParser extends EDiffParser {
+
+ private static Logger logger = LoggerFactory.getLogger(EDiffHunkParser.class);
+ @Override
+ public void parseFixPatterns(File prevFile, File revFile, File diffentryFile, String project, JedisPool innerPool,String srcMLPath,String hunkLimit,boolean isJava) {
+
+ String datasetName = project;
+ String[] split1 = diffentryFile.getParent().split(datasetName);
+ String root = split1[0];
+ String pj = split1[1].split("/")[1];
+
+
+ List actionSets = parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,isJava);
+
+ if (actionSets != null && actionSets.size() != 0) {
+
+ boolean processActionSet = true;
+
+ if (actionSets.size() > Integer.valueOf(hunkLimit)) {
+ processActionSet = false;
+ logger.debug("Skipping {} set size {}", diffentryFile.getName(), hunkLimit);
+ }
+
+ int hunkSet = 0;
+ if (processActionSet) {
+
+ for (HierarchicalActionSet actionSet : actionSets) {
+// FileOutputStream f = null;
+
+ try {
+
+ String astNodeType = actionSet.getAstNodeType();
+// if (astNodeType.equals(rootType)){
+//
+// }
+ actionSet.toString();
+ int size = actionSet.getActionSize();
+
+
+ String key = astNodeType + "/" + String.valueOf(size) + "/" + pj + "_" + diffentryFile.getName() + "_" + String.valueOf(hunkSet);
+
+ ITree targetTree = EDiffHelper.getTargets(actionSet,isJava);
+ ITree actionTree = EDiffHelper.getActionTrees(actionSet);
+ ITree shapeTree = EDiffHelper.getShapeTree(actionSet,isJava);
+ try (Jedis inner = innerPool.getResource()) {
+
+ inner.hset("dump", key, actionSet.toString());
+ inner.hset(key, "actionTree", actionTree.toStaticHashString());
+ inner.hset(key, "targetTree", targetTree.toStaticHashString());
+ inner.hset(key, "shapeTree", shapeTree.toStaticHashString());
+ }
+// File f = new File(root+"dumps/"+astNodeType+"/"+String.valueOf(size)+"/");
+// f.mkdirs();
+// f = new File(root+"dumps/"+key);
+//
+// FileUtils.writeByteArrayToFile(f,EDiffHelper.kryoSerialize(actionSet));
+// FileUtils.writeByteArrayToFile(f,EDiffHelper.commonsSerialize(actionSet));
+// FileUtils.writeByteArrayToFile(f,actionSet.toString().getBytes());
+// FileOutputStream fos = new FileOutputStream(f);
+// ObjectOutputStream oos = new ObjectOutputStream(fos);
+// oos.writeObject(EDiffHelper.kryoSerialize(actionSet));
+// oos.flush();
+// oos.close();
+
+ } catch (Exception e) {
+ logger.error("error", e);
+// e.printStackTrace();
+ }
+ hunkSet++;
+ }
+ try (Jedis inner = innerPool.getResource()) {
+ inner.hset("diffEntry", pj + "_" + diffentryFile.getName(), "1");
+ }
+
+ }
+ }
+
+
+ }
+
+
+
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffMessage.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffMessage.java
similarity index 55%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffMessage.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffMessage.java
index a2c8697..8d57ec1 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffMessage.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffMessage.java
@@ -1,4 +1,4 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
import edu.lu.uni.serval.fixminer.akka.BaseMessage;
import redis.clients.jedis.JedisPool;
@@ -10,6 +10,7 @@ public class EDiffMessage extends BaseMessage{
private List msgFiles;
+
public JedisPool getInnerPool() {
return innerPool;
}
@@ -20,14 +21,28 @@ public class EDiffMessage extends BaseMessage{
private JedisPool innerPool;
+ public String getSrcMLPath() {
+ return srcMLPath;
+ }
+
+ private String srcMLPath;
+
+ public String getRootType() {
+ return rootType;
+ }
+
+ private String rootType;
+
- public EDiffMessage(int id, List msgFiles,String eDiffTimeout,JedisPool pool) {
+ public EDiffMessage(int id, List msgFiles,String eDiffTimeout,JedisPool pool,String srcMLPath,String rootType) {
super(id,new Long(eDiffTimeout));
this.msgFiles = msgFiles;
this.innerPool = pool;
+ this.srcMLPath = srcMLPath;
+ this.rootType = rootType;
}
public EDiffMessage(int id, List msgFiles,Long eDiffTimeout,JedisPool pool) {
super(id,eDiffTimeout);
@@ -36,6 +51,15 @@ public class EDiffMessage extends BaseMessage{
}
+ public EDiffMessage(int id, List filesOfWorkers, long seconds_to_wait, JedisPool innerPool, String srcMLPath,String rootType) {
+
+ super(id,seconds_to_wait);
+ this.msgFiles = filesOfWorkers;
+ this.innerPool = innerPool;
+ this.srcMLPath = srcMLPath;
+ this.rootType = rootType;
+ }
+
public List getMsgFiles() {
return msgFiles;
}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffParser.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffParser.java
new file mode 100755
index 0000000..42b4a91
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffParser.java
@@ -0,0 +1,104 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+import com.github.gumtreediff.actions.model.Action;
+import com.github.gumtreediff.gen.srcml.GumTreeCComparer;
+import edu.lu.uni.serval.gumtree.GumTreeComparer;
+
+
+import edu.lu.uni.serval.utils.ListSorter;
+import redis.clients.jedis.JedisPool;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * Parse fix patterns with GumTree.
+ *
+ * @author kui.liu
+ *
+ */
+public class EDiffParser extends Parser {
+
+ /*
+ * ResultType:
+ * 0: normal GumTree results.
+ * 1: null GumTree result.
+ * 2: No source code changes.
+ * 3: No Statement Change.
+ * 4: useless violations
+ */
+ public int resultType = 0;
+
+
+
+ /**
+ * Regroup GumTree results without remove the modification of variable names.
+ *
+ * @param prevFile
+ * @param revFile
+ * @return
+ */
+ protected List parseChangedSourceCodeWithGumTree2(File prevFile, File revFile,String srcMLPath,boolean isJava) {
+ List actionSets = new ArrayList<>();
+ // GumTree results
+// boolean isJava =false;
+ List gumTreeResults = null;
+ if (isJava){
+// if (revFile.getName().endsWith(".c") & prevFile.getName().endsWith(".c") || revFile.getName().endsWith(".h") & prevFile.getName().endsWith(".h")){
+// gumTreeResults = new GumTreeComparer().compareCFilesWithGumTree(prevFile, revFile);
+
+ gumTreeResults = new GumTreeComparer().compareTwoFilesWithGumTree(prevFile, revFile);
+
+
+ }else{
+ gumTreeResults = new GumTreeCComparer().compareCFilesWithGumTree(prevFile, revFile,srcMLPath);
+
+ }
+ if (gumTreeResults == null) {
+ this.resultType = 1;
+ return null;
+ } else if (gumTreeResults.size() == 0){
+ this.resultType = 2;
+ return actionSets;
+ } else {
+ // Regroup GumTre results.
+ List allActionSets = null;
+ if (isJava){
+ allActionSets = new HierarchicalRegrouper().regroupGumTreeResults(gumTreeResults);
+ }else{
+ HashSet removeType = new HashSet(Arrays.asList(171,172,99,100,101,102));
+ boolean b = gumTreeResults.stream().anyMatch(p -> removeType.contains(p.getNode().getType()));
+ if(b){
+ return actionSets;
+ }
+ allActionSets = new HierarchicalRegrouperForC().regroupGumTreeResults(gumTreeResults);
+ }
+
+
+ ListSorter sorter = new ListSorter<>(allActionSets);
+ actionSets = sorter.sortAscending();
+
+ if (actionSets.size() == 0) {
+ this.resultType = 3;
+ }
+
+ return actionSets;
+ }
+ }
+
+ @Override
+ public void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, JedisPool innerPool, String srcMLPath,String rootType,boolean isJava) {
+
+ }
+
+// @Override
+// public void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, JedisPool innerPool) {
+//
+// }
+
+
+
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffWorker.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffWorker.java
similarity index 92%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffWorker.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffWorker.java
index 2b18154..afc3011 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/EDiffWorker.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/EDiffWorker.java
@@ -1,4 +1,4 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
import akka.actor.Props;
import akka.actor.UntypedActor;
@@ -43,6 +43,8 @@ public class EDiffWorker extends UntypedActor {
int id = msg.getId();
int counter = 0;
JedisPool innerPool = msg.getInnerPool();
+ String srcMLPath = msg.getSrcMLPath();
+ String rootType = msg.getRootType();
for (MessageFile msgFile : files) {
File revFile = msgFile.getRevFile();
@@ -55,13 +57,15 @@ public class EDiffWorker extends UntypedActor {
final ExecutorService executor = Executors.newSingleThreadExecutor();
// schedule the work
- final Future> future = executor.submit(new RunnableParser(prevFile, revFile, diffentryFile, parser,project,msg.getInnerPool()));
+
+
+ final Future> future = executor.submit(new RunnableParser(prevFile, revFile, diffentryFile, parser,project,msg.getInnerPool(),srcMLPath,rootType,false));
try {
// wait for task to complete
future.get(msg.getSECONDS_TO_WAIT(), TimeUnit.SECONDS);
counter ++;
- if (counter % 10 == 0) {
+ if (counter % 1000 == 0) {
log.info("Worker #" + id +" finalized parsing " + counter + " files... remaing "+ (files.size() - counter));
}
} catch (TimeoutException e) {
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalActionSet.java
similarity index 98%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalActionSet.java
index a338d64..aaa87d3 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalActionSet.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalActionSet.java
@@ -1,4 +1,4 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
import com.github.gumtreediff.actions.model.Action;
import com.github.gumtreediff.tree.ITree;
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouper.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalRegrouper.java
similarity index 99%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouper.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalRegrouper.java
index 09c0686..dd3c1fd 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/HierarchicalRegrouper.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalRegrouper.java
@@ -1,10 +1,11 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
import com.github.gumtreediff.actions.model.*;
import com.github.gumtreediff.tree.ITree;
import edu.lu.uni.serval.utils.ASTNodeMap;
import edu.lu.uni.serval.utils.ListSorter;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalRegrouperForC.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalRegrouperForC.java
new file mode 100644
index 0000000..be0e9c3
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HierarchicalRegrouperForC.java
@@ -0,0 +1,534 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+
+import com.github.gumtreediff.actions.model.Action;
+import com.github.gumtreediff.actions.model.*;
+import com.github.gumtreediff.gen.srcml.NodeMap_new;
+import com.github.gumtreediff.tree.ITree;
+import edu.lu.uni.serval.utils.ListSorter;
+
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Regroup GumTree results to a hierarchical construction.
+ *
+ * @author kui.liu
+ *
+ */
+public class HierarchicalRegrouperForC {
+
+// public static void main(String[] args) {
+// GumTreeComparer com = new GumTreeComparer();
+// File cFile1 = new File("/Users/anilkoyuncu/bugStudy/dataset/GumTreeInput/linux-stable/prevFiles/prev_0a3d00_b404bc_drivers#pci#iov.c");
+// File cFile2 = new File("/Users/anilkoyuncu/bugStudy/dataset/GumTreeInput/linux-stable/revFiles/0a3d00_b404bc_drivers#pci#iov.c");
+// List action = com.compareTwoFilesWithGumTreeForCCode(cFile1, cFile2);
+// List actionSet = new HierarchicalRegrouperForC().regroupGumTreeResults(action);
+// System.out.println(actionSet);
+// }
+
+ List actionSets = new ArrayList<>();
+
+ public List regroupGumTreeResults(List actions) {
+ /*
+ * First, sort actions by their positions.
+ */
+// List actions = new ListSorter(actionsArgu).sortAscending();
+// if (actions == null) {
+// actions = actionsArgu;
+// }
+
+ /*
+ * Second, group actions by their positions.
+ */
+ HierarchicalActionSet actionSet = null;
+ for(Action act : actions){
+// if(act.getNode().getType() == 19 && act.getNode().getLabel().equals("")){
+// continue;
+// }
+ Action parentAct = findParentAction(act, actions);
+
+ if (parentAct == null) {
+ actionSet = createActionSet(act, parentAct, null);
+ actionSets.add(actionSet);
+ } else {
+ if (!addToAactionSet(act, parentAct, actionSets)) {
+ // The index of the parent action in the actions' list is larger than the index of this action.
+ actionSet = createActionSet(act, parentAct, null);
+ actionSets.add(actionSet);
+ }
+ }
+ }
+
+ /*
+ * Third, add the subActionSet to its parent ActionSet.
+ */
+ List reActionSets = new ArrayList<>();
+ for (HierarchicalActionSet actSet : actionSets) {
+ Action parentAct = actSet.getParentAction();
+ if (parentAct != null) {
+ addToActionSets(actSet, parentAct, actionSets);
+ } else {
+ // TypeDeclaration, FieldDeclaration, MethodDeclaration, Statement.
+ // CatchClause, ConstructorInvocation, SuperConstructorInvocation, SwitchCase
+// String astNodeType = actSet.getAstNodeType();
+// if (astNodeType.endsWith("TypeDeclaration") || astNodeType.endsWith("FieldDeclaration") || astNodeType.endsWith("EnumDeclaration") ||
+// astNodeType.endsWith("MethodDeclaration") || astNodeType.endsWith("Statement") ||
+// astNodeType.endsWith("ConstructorInvocation") || astNodeType.endsWith("CatchClause") || astNodeType.endsWith("SwitchCase")) {
+ if (isStatement(actSet.getNode())) {
+ reActionSets.add(actSet);
+ }
+// }
+ }
+ }
+
+ List reActionSets1 = new ArrayList<>();
+ for(HierarchicalActionSet a:reActionSets){
+ HierarchicalActionSet hierarchicalActionSet = purifyActionSet(a);
+ List hierarchicalActionSets = divideBlocks(hierarchicalActionSet);
+ if(hierarchicalActionSets != null){
+ reActionSets1.addAll(hierarchicalActionSets);
+ }else{
+ reActionSets1.add(hierarchicalActionSet);
+ }
+
+ }
+
+
+
+ return reActionSets1;
+// return reActionSets;
+ }
+ private HierarchicalActionSet purifyActionSet(HierarchicalActionSet actionSet){
+ HierarchicalActionSet hierarchicalActionSet = removeBlocks(actionSet);
+// hierarchicalActionSet = removeIFthenBlocks(hierarchicalActionSet);
+// hierarchicalActionSet = removeParentForSingle(hierarchicalActionSet);
+// hierarchicalActionSet = removeParentNode(hierarchicalActionSet);
+ return hierarchicalActionSet;
+// return actionSet;
+ }
+
+ private List divideBlocks(HierarchicalActionSet actionSet){
+ if (actionSet.getAstNodeType().equals("block") || actionSet.getAstNodeType().equals("function")){
+ List subActions = actionSet.getSubActions();
+ if (subActions.size() > 1) {
+ boolean b = subActions.stream().allMatch(p -> NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, p.getAstNodeType()).size() == 1 && p.getAstNodeType().equals(subActions.get(0).getAstNodeType()) && p.getAction().getName().equals(subActions.get(0).getAction().getName()));
+ if (b ) {
+ subActions.stream().forEach(p -> p.setParent(null));
+ List collect = subActions.stream().map(p -> purifyActionSet(p)).collect(Collectors.toList());
+ return collect;
+ }
+
+ }
+ }
+ return null;
+ }
+
+ public List postOrder(HierarchicalActionSet a) {
+ List trees = new ArrayList<>();
+ getAllSubActions(a, trees);
+ return trees;
+ }
+ private void getAllSubActions(HierarchicalActionSet a,List as) {
+
+ List subActions = a.getSubActions();
+ if (subActions.size() != 0){
+ for (HierarchicalActionSet s : subActions) {
+ getAllSubActions(s, as);
+ }
+
+ }
+ as.add(a);
+// List b = new ArrayList();
+// for (HierarchicalActionSet child: this.getSubActions())
+// b.add(child);
+// return b;
+ }
+
+
+ Predicate predicate = x->NodeMap_new.getKeysByValue(NodeMap_new.StatementMap,x.getAstNodeType()).size() == 1 ;
+ Predicate predicate1 = x->!x.getAstNodeType().equals("block");
+ Predicate predicate2 = x->!x.getAstNodeType().equals("then");
+// Predicate predicate3 = p->p.getAction().getName().equals(subActions.get(0).getAction().getName()));
+ private HierarchicalActionSet removeBlocks(HierarchicalActionSet actionSet){
+ List subActions = actionSet.getSubActions();
+
+
+
+ Action action = actionSet.getAction();
+ if (subActions.size() == 1){
+ HierarchicalActionSet subaction = subActions.get(0);
+// if(!postOrder(subaction).stream().anyMatch(predicate.and(predicate1.and(predicate2)))){
+// return actionSet;
+// }
+ List collect = postOrder(subaction).stream().filter(predicate.and(predicate1.and(predicate2))).collect(Collectors.toList());
+ if(collect.size() == 0){
+ return actionSet;
+ }
+ boolean b = collect.stream().anyMatch(p -> p.getAction().getName().equals(subActions.get(0).getAction().getName()));
+ if(!b){
+ return actionSet;
+ }
+ Action action1 = subaction.getAction();
+ //else,then,block
+ if(action.getClass().equals(action1.getClass()) && action.getName().equals("UPD")) {
+
+// List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subaction.getAstNodeType());
+// if (keysByValue != null && keysByValue.size() == 1) {
+
+ subaction.setParent(null);
+ return removeBlocks(subaction);
+
+// }
+// if(areRelatedActions(action,action1)) {
+// if (subaction.getAstNodeType().equals("block")) {//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){
+// List subSubActions = subaction.getSubActions();
+// if (subSubActions.size() == 1) {
+//
+// HierarchicalActionSet subsubsubAction = subSubActions.get(0);
+// List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subsubsubAction.getAstNodeType());
+// if (keysByValue != null && keysByValue.size() == 1) {
+//
+// subsubsubAction.setParent(null);
+// return removeBlocks(subsubsubAction);
+//
+// }
+// }
+// }
+ }
+ }
+ return actionSet;
+
+ }
+
+ private HierarchicalActionSet removeParentNode(HierarchicalActionSet actionSet){
+ List subActions = actionSet.getSubActions();
+ Action action = actionSet.getAction();
+ if (subActions.size() == 1) {
+ HierarchicalActionSet subaction = subActions.get(0);
+ if(!postOrder(subaction).stream().anyMatch(predicate.and(predicate1.and(predicate2)))){
+ return actionSet;
+ }
+ Action action1 = subaction.getAction();
+ if (!action.getClass().equals(action1.getClass())) {
+ List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subaction.getAstNodeType());
+ if (keysByValue != null && keysByValue.size() == 1) {
+ subaction.setParent(null);
+ return removeParentNode(subaction);
+
+ }
+ }
+
+ }
+ return actionSet;
+ }
+
+ private HierarchicalActionSet removeParentForSingle(HierarchicalActionSet actionSet){
+ List subActions = actionSet.getSubActions();
+ Action action = actionSet.getAction();
+ if (subActions.size() == 1){
+ HierarchicalActionSet subaction = subActions.get(0);
+ if(!postOrder(subaction).stream().anyMatch(predicate.and(predicate1.and(predicate2)))){
+ return actionSet;
+ }
+ //else,then,block
+ Action action1 = subaction.getAction();
+ //else,then,block
+ if(action.getClass().equals(action1.getClass()) && action.getName().equals("UPD")) {
+
+// if(areRelatedActions(action,action1)) {
+ if(!(subaction.getAstNodeType().equals("condition") || subaction.getAstNodeType().equals("init"))){
+ List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, subaction.getAstNodeType());
+ if(keysByValue != null && keysByValue.size() ==1){
+ subaction.setParent(null);
+ return removeParentForSingle(subaction);
+ }
+ }
+ }
+ }
+ return actionSet;
+
+ }
+ private HierarchicalActionSet removeIFthenBlocks(HierarchicalActionSet actionSet){
+ List subActions = actionSet.getSubActions();
+ Action action = actionSet.getAction();
+ if (subActions.size() == 1){
+ HierarchicalActionSet subaction = subActions.get(0);
+ //else,then,block
+ Action action1 = subaction.getAction();
+ //else,then,block
+ if(action.getClass().equals(action1.getClass())) {
+// if(areRelatedActions(action,action1)) {
+ if (subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")) {//|| subaction.getAstNodeType().equals("then") || subaction.getAstNodeType().equals("else")){
+ List subSubActions = subaction.getSubActions();
+ if (subSubActions.size() == 1) {
+
+ HierarchicalActionSet subsubsubAction = subSubActions.get(0);
+ if(!postOrder(subsubsubAction).stream().anyMatch(predicate.and(predicate1.and(predicate2)))){
+ return actionSet;
+ }
+ if (subsubsubAction.getAstNodeType().equals("block")) {
+ List subActions1 = subsubsubAction.getSubActions();
+ if (subActions1.size() == 1) {
+ HierarchicalActionSet hierarchicalActionSet = subActions1.get(0);
+ List keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.StatementMap, hierarchicalActionSet.getAstNodeType());
+ if (keysByValue != null && keysByValue.size() == 1) {
+ hierarchicalActionSet.setParent(null);
+ return removeBlocks(hierarchicalActionSet);
+
+ }
+ }
+ }
+
+ }
+ }
+ }
+ }
+ return actionSet;
+
+ }
+
+ private HierarchicalActionSet createActionSet(Action act, Action parentAct, HierarchicalActionSet parent) {
+ HierarchicalActionSet actionSet = new HierarchicalActionSet();
+ actionSet.setAction(act);
+ actionSet.setActionString(parseAction(act.toString()));
+ actionSet.setParentAction(parentAct);
+ actionSet.setNode(act.getNode());
+ actionSet.setParent(parent);
+ return actionSet;
+ }
+
+ private String parseAction(String actStr1) {
+ // UPD 25@@!a from !a to isTrue(a) at 69
+ String[] actStrArrays = actStr1.split("@@");
+ String actStr = "";
+ int length = actStrArrays.length;
+ for (int i =0; i < length - 1; i ++) {
+ String actStrFrag = actStrArrays[i];
+ int index = actStrFrag.lastIndexOf(" ") + 1;
+ String nodeType = actStrFrag.substring(index);
+ if (!"".equals(nodeType)) {
+ if (Character.isDigit(nodeType.charAt(0)) || (nodeType.startsWith("-") && Character.isDigit(nodeType.charAt(1)))) {
+ try {
+ int typeInt = Integer.parseInt(nodeType);
+ if (NodeMap_new.map.containsKey(typeInt)) {
+ String type = NodeMap_new.map.get(Integer.parseInt(nodeType));
+ nodeType = type;
+ }
+ } catch (NumberFormatException e) {
+ nodeType = actStrFrag.substring(index);
+ }
+ }
+ }
+ actStrFrag = actStrFrag.substring(0, index) + nodeType + "@@";
+ actStr += actStrFrag;
+ }
+ actStr += actStrArrays[length - 1];
+ return actStr;
+ }
+
+ private void addToActionSets(HierarchicalActionSet actionSet, Action parentAct, List actionSets) {
+ Action act = actionSet.getAction();
+ for (HierarchicalActionSet actSet : actionSets) {
+ if (actSet.equals(actionSet)) continue;
+ Action action = actSet.getAction();
+
+ if (!areRelatedActions(action, act)) continue;
+ if (action.equals(parentAct)) { // actSet is the parent of actionSet.
+ actionSet.setParent(actSet);
+ actSet.getSubActions().add(actionSet);
+ sortSubActions(actSet);
+ break;
+ } else {
+ if (isPossibileSubAction(action, act)) {
+ // SubAction range: startPosition2 <= startPosition && startPosition + length <= startPosition2 + length2
+ addToActionSets(actionSet, parentAct, actSet.getSubActions());
+ }
+ }
+ }
+ }
+
+ private boolean isPossibileSubAction(Action parent, Action child) {
+// if ((parent instanceof Update && !(child instanceof Addition))
+// || (parent instanceof Delete && child instanceof Delete)
+// || (parent instanceof Insert && (child instanceof Insert))) {
+// int startPosition = child.getPosition();
+// int length = child.getLength();
+// int startPosition2 = parent.getPosition();
+// int length2 = parent.getLength();
+//
+// if (!(startPosition2 <= startPosition && startPosition + length <= startPosition2 + length2)) {
+// // when act is not the sub-set of action.
+// return false;
+// }
+// }
+ return true;
+ }
+
+ private void sortSubActions(HierarchicalActionSet actionSet) {
+ ListSorter sorter = new ListSorter(actionSet.getSubActions());
+ List subActions = sorter.sortAscending();
+ if (subActions != null) {
+ actionSet.setSubActions(subActions);
+ }
+ }
+
+ private boolean addToAactionSet(Action act, Action parentAct, List actionSets) {
+ for(HierarchicalActionSet actionSet : actionSets) {
+ Action action = actionSet.getAction();
+
+ if (!areRelatedActions(action, act)) continue;
+
+ if (action.equals(parentAct)) { // actionSet is the parent of actSet.
+ HierarchicalActionSet actSet = createActionSet(act, actionSet.getAction(), actionSet);
+ actionSet.getSubActions().add(actSet);
+ sortSubActions(actionSet);
+ return true;
+ } else {
+ if (isPossibileSubAction(action, act)) {
+ // SubAction range: startPosition2 <= startPosition && startPosition + length <= startP + length2
+ List subActionSets = actionSet.getSubActions();
+ if (subActionSets.size() > 0) {
+ boolean added = addToAactionSet(act, parentAct, subActionSets);
+ if (added) {
+ return true;
+ } else {
+ continue;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private Action findParentAction(Action action, List actions) {
+
+ ITree parent = action.getNode().getParent();
+ if (action instanceof Addition) {
+ parent = ((Addition) action).getParent(); // parent in the fixed source code tree
+ }
+
+// if (parent.getType() == 55) {
+// int type = action.getNode().getType();
+// // Modifier, NormalAnnotation, MarkerAnnotation, SingleMemberAnnotation
+// if (type != 83 && type != 77 && type != 78 && type != 79
+// && type != 5 && type != 39 && type != 43 && type != 74 && type != 75
+// && type != 76 && type != 84 && type != 87 && type != 88 && type != 42) {
+// // ArrayType, PrimitiveType, SimpleType, ParameterizedType,
+// // QualifiedType, WildcardType, UnionType, IntersectionType, NameQualifiedType, SimpleName
+// return null;
+// }
+//
+//
+// }
+
+ for (Action act : actions) {
+ if (act instanceof Move){
+ if(act.getNode().equals(action.getNode())){
+ return act;
+ }
+ }
+ else if (act.getNode().equals(parent)) {
+ if (areRelatedActions(act, action)) {
+ return act;
+ }
+ }
+ }
+ return null;
+ }
+
+// List newParentActions = new ArrayList<>();
+// //TODO
+// private Action findParentAction(Action action, List actions) {
+//
+// ITree parent = action.getNode().getParent();
+// if (parent == null) return null;
+// if (action instanceof Addition) {
+// parent = ((Addition) action).getParent(); // parent in the fixed source code tree
+// }
+//
+// for (Action act : actions) {
+// if (act.getNode().equals(parent)) {
+// if (areRelatedActions(act, action)) {
+// return act;
+// }
+// }
+// }
+// for (Action act : newParentActions) {
+// if (act.getNode().equals(parent)) {
+// if (areRelatedActions(act, action)) {
+// return act;
+// }
+// }
+// }
+//
+// ITree tree = action.getNode();
+// Action parentAction = null;
+// if (!isStatement(tree)) {
+// parentAction = new Update(parent, action.getNode().getParent());
+// newParentActions.add(parentAction);
+//
+// Action higherParentAct = findParentAction(parentAction, actions);
+// HierarchicalActionSet actionSet = null;
+// if (higherParentAct == null) {
+// actionSet = createActionSet(parentAction, higherParentAct, null);
+// actionSets.add(actionSet);
+// } else {
+// if (!addToAactionSet(parentAction, higherParentAct, actionSets)) {
+// // The index of the parent action in the actions' list is larger than the index of this action.
+// actionSet = createActionSet(parentAction, higherParentAct, null);
+// actionSets.add(actionSet);
+// }
+// }
+// }
+// return parentAction;
+// }
+
+ private boolean isStatement(ITree tree) {
+
+
+ int nodeType = tree.getType();
+// List collect = tree.getChildren().stream().filter(m -> m.getType() == 6).collect(Collectors.toList());
+// if (collect.size() > 0){
+// return true;
+// }
+ if (NodeMap_new.StatementMap.containsKey(nodeType)){
+ return true;
+ }
+// else{
+// if((nodeType ==6) && tree.getParent().getType() == 1){
+// return true;
+// }
+// }
+
+// if (nodeType == 11 || nodeType == 16 || nodeType == 18 || nodeType == 21
+// || nodeType == 22 || nodeType == 23 || nodeType == 24 || nodeType == 84
+// || 30 == nodeType || nodeType == 31 || nodeType == 32 || nodeType == 33
+// || nodeType == 34 || nodeType == 35 || nodeType == 36 || nodeType == 40
+// || nodeType == 41 || nodeType == 49 || nodeType == 73 || nodeType == 81 || nodeType == 80 || nodeType == 46 || nodeType == 60
+// ||nodeType == 62 || nodeType == 64 || nodeType == 45 || nodeType == 85 || nodeType == 86 || nodeType == 59 || nodeType == 27 || nodeType == 25
+// || nodeType == 26 || nodeType ==93 || nodeType == 37 || nodeType == 38 || nodeType == 39 || nodeType == 89) {// TODO
+// return true;
+// }
+ return false;
+ }
+
+ private boolean areRelatedActions(Action parent, Action child) {
+// if (parent instanceof Move && !(child instanceof Move)) {// If action is MOV, its children must be MOV.
+// return false;
+// }
+ if (parent instanceof Delete && !(child instanceof Delete)) {// If action is DEL, its children must be DEL.
+ return false;
+ }
+ if (parent instanceof Insert && !(child instanceof Addition)) {// If action is INS, its children must be MOV or INS.
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/HunkParserTest.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HunkParserTest.java
new file mode 100644
index 0000000..dfc0cb7
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/HunkParserTest.java
@@ -0,0 +1,265 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+import com.github.gumtreediff.tree.ITree;
+import edu.lu.uni.serval.utils.ClusterToPattern;
+import edu.lu.uni.serval.utils.EDiffHelper;
+import edu.lu.uni.serval.utils.PoolBuilder;
+import org.apache.commons.io.FileUtils;
+import org.javatuples.Pair;
+import org.junit.Test;
+import redis.clients.jedis.JedisPool;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.Duration;
+import java.time.Instant;
+import java.util.*;
+
+public class HunkParserTest {
+
+ @Test
+ public void testSimple() throws IOException {
+// String input = "/Users/anil.koyuncu/projects/test/fixminer-core/python/data/gumInputLinux/revFiles/7f52f3_3845d29_drivers#pci#host#pcie-altera.c";
+
+// String root = "//Users/anilkoyuncu/projects/gumInputLinux/";
+ String root = "/Users/anilkoyuncu/projects/fixminer/fixminer-core/python/data/gumInputLinux/";
+ String filename ="";
+// filename ="freebsd_ceca9b8_b864ac4_sys#kern#sched_ule.c"; //too long
+// filename ="openbsd_e592ec_39c81a_sys#arch#i386#pci#pci_machdep.c"; //not parseable 56 "parameter_list" "" () ( (57 "parameter" "" () ( (22 "decl" "" () ())))
+// filename ="openbsd_cbb6d2_4cab495_sys#lib#libsa#printf.c";
+// filename ="freebsd_bb1ce4_10d4c2_sbin#gvinum#gvinum.c"; //too long
+// filename ="freebsd_253913_35ea52_sys#netinet#ip_carp.c"; //ok
+// filename ="FFmpeg_4c9d1c_3da860_libavutil#file_open.c"; //not sure ifdef
+// filename ="gstreamer_0af74c_e8bae0_libs#gst#net#gstptpclock.c"; //not sure ifder
+// filename ="freebsd_abdbcc6_030063_sys#netinet#ip_carp.c"; //ok
+// filename ="linux_80d348_5b394b_fs#overlayfs#inode.c"; //ok
+// filename ="openbsd_43b185_e7495b_usr.bin#cvs#rcs.c"; //okish
+// filename ="openbsd_e592ec_39c81a_sys#arch#i386#pci#pci_machdep.c"; //(56 "parameter_list" "" () ( (57 "parameter" "" () ( (22 "decl" "" () ())))
+// filename ="openbsd_cbb6d2_4cab495_sys#lib#libsa#printf.c"; //not parseable 56 "parameter_list" "" () ( (57 "parameter" "" () ( (22 "decl" "" () ())))
+// filename ="FFmpeg_9219ec_647696_libavfilter#trim.c"; //partial
+// filename ="vlc_92b7fd_f745f6_modules#control#dbus#dbus.c"; //okish
+// filename ="vlc_eeb662_966879_modules#video_chroma#copy.c"; //ok
+// filename ="omp_19fae3_1e4dcd_src#mca#mpool#sm#mpool_sm_mmap.c"; // cannot find
+// filename ="FFmpeg_a8343bf_2b2039_libavformat#riff.c"; // ok
+// filename ="freebsd_32766e4_200ff4_sbin#routed#parms.c"; // ok
+// filename ="openbsd_150ddd_cf0e20_usr.sbin#user#user.c"; //notok
+// filename ="openbsd_6fac1e_c3b383_usr.bin#tmux#window-copy.c"; //notok
+// filename ="freebsd_0cb6f2_b4c742_sys#dev#ipw#if_ipw.c"; //notok
+// filename ="php-src_7defd5_da06f7_ext#mbstring#mbstring.c"; //notok (19 "expr_stmt" "" () ()))))
+// filename ="libtiff_177169_71715f_tools#tiff2ps.c"; //notok (19 "expr_stmt" "" () ()))))
+ filename ="linux_955c1dd_0aaee4_drivers#gpu#drm#i915#gvt#handlers.c"; //notok (19 "expr_stmt" "" () ()))))
+
+// filename ="FFmpeg_0726b2_66d2ff_libav#jpeg.c";
+ String pj = filename.split("_")[0];
+ filename = filename.replace(pj+"_","");
+// root = root + pj + "/";
+ root = root + "codeflaws/";
+
+
+ filename ="287-A-14208510-14208532.c";
+// filename = "474-A-15925943-15925951.c"; //mot ok
+// filename = "6-C-11536006-11536039.c"; //okish
+// filename = "500-A-18298071-18298124.c"; //ok
+// filename = "106-B-4027414-4027447.c"; //ok
+// filename = "572-B-12669194-12669278.c"; //ok
+// filename = "514-A-16254510-16254521.c"; //ok
+// filename = "405-B-12287356-12287584.c"; //ok
+// filename = "630-R-17825199-17825235.c"; //notok
+ File revFile = new File(root + "revFiles/"+ filename);
+ File prevFile =new File(root + "prevFiles/prev_"+filename);
+// File diffFile =new File();
+ String path = root + "DiffEntries/"+filename + ".txt";
+ System.out.println(path);
+// String data = "";
+// data = new String(Files.readAllBytes(Paths.get(root + "DiffEntries/"+filename + ".txt")));
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+ String srcMLPath = "/usr/local/bin/srcml";
+// String srcMLPath = "/Users/anil.koyuncu/Downloads/srcML.0.9.5/bin/srcml";
+ parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+// ITree t = new SrcmlCppTreeGenerator().generateFromFile(input).getRoot();
+// Assert.assertEquals(148, t.getSize());
+
+ }
+
+
+ @Test
+ public void dumpFnction() throws Exception {
+ String pattern = "function/20/gstreamer_0af74c_e8bae0_libs#gst#net#gstptpclock.c.txt_0";
+// String pattern = "function/20/FFmpeg_4c9d1c_3da860_libavutil#file_open.c.txt_0";
+ ClusterToPattern.main("6399","/Users/anil.koyuncu/projects/fixminer/fixminer-core/python/data/redis","ALLdumps-gumInput.rdb ",pattern);
+ }
+
+ @Test
+ public void newCTest(){
+ String root = "/Users/anilkoyuncu/projects/gumInputLinux/linux/";
+ String filename = "6a28fd_93ad867_drivers#tty#goldfish.c";
+
+ String srcMLPath = "/Users/anilkoyuncu/Downloads/srcML2/src2srcml";
+ File revFile = new File(root + "revFiles/"+ filename);
+ File prevFile =new File(root + "prevFiles/prev_"+filename);
+ File diffFile = new File(root + "DiffEntries/"+filename+".txt");
+ EDiffHunkParser parser = new EDiffHunkParser();
+ parser.parseFixPatterns(prevFile,revFile,diffFile,"gumInputLinux",null,srcMLPath,null,false);
+ }
+
+
+ @Test
+ public void testSimpleJava() throws IOException {
+
+
+ String root = "/Users/anil.koyuncu/projects/test/fixminer-core/python/data/gumInput/spring-amqp/";
+
+ String filename = "5d6e02_e597c5_spring-rabbit#src#main#java#org#springframework#amqp#rabbit#connection#ConnectionFactoryUtils.java";
+ File revFile = new File(root +"/revFiles/"+filename);
+// File oldFile = new File(root +"first.c");
+ File prevFile = new File(root +"/prevFiles/prev_"+filename);
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+ parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile,"",true);
+// ITree t = new SrcmlCppTreeGenerator().generateFromFile(input).getRoot();
+// Assert.assertEquals(148, t.getSize());
+ }
+
+
+
+ @Test
+ public void rich() throws IOException {
+ Instant start = Instant.now();
+ final JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "localhost",Integer.valueOf("6399"),20000000);
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+ String root = "/Users/anil.koyuncu/projects/fixminer/gumInputLinux/linux/";
+ String filename = "43f8987_f596c8_drivers#acpi#nfit#core.c";
+ File revFile = new File(root + "revFiles/"+ filename);
+ File prevFile =new File(root + "prevFiles/prev_"+filename);
+ File diffFile = new File(root + "DiffEntries/"+filename+".txt");
+ String srcMLPath = "/Users/anil.koyuncu/Downloads/srcML/src2srcml";
+ parser.parseFixPatterns(prevFile,revFile,diffFile,"gumInputLinux",outerPool,srcMLPath,"if",false);
+ String key = "if/3/linux_bb67dd_0922c7_sound#soc#sof#intel#hda.c.txt_0";
+ File file2load = new File("/Users/anil.koyuncu/projects/fixminer/dumps/"+ key);
+ byte[] dump = FileUtils.readFileToByteArray(file2load);
+
+// String line = FileHelper.readFile(file2load);
+// ITree parent = null;
+// ITree children = null;
+//// if(line.isEmpty())
+//// continue;
+// TreeContext tc = new TreeContext();
+// line = line.replace("\"", "");
+// String[] split1 = line.split("\n");
+// int length = split1.length;
+// List strings = new LinkedList(Arrays.asList(split1));
+// ITree treeFromString = null;
+// int prevLev = 0;
+// int childPosition = 0;
+// for (String l:strings) {
+// int level = 0;
+// Pattern pattern = Pattern.compile("---");
+// Matcher matcher = pattern.matcher(l);
+// while (matcher.find())
+// level++;
+//
+// l = l.replace("---","");
+// l = l.trim();
+//
+// String[] split2;
+// List keysByValue;
+// split2 = l.split(" ");
+// keysByValue = NodeMap_new.getKeysByValue(NodeMap_new.map, split2[1]);
+//
+//
+//
+// if(level == 0){
+// parent = tc.createTree(keysByValue.get(0), split2[0], null);
+// tc.setRoot(parent);
+//
+// }else if (level > prevLev) {
+// if (children == null) {
+// children = tc.createTree(keysByValue.get(0), split2[0], null);
+// children.setParentAndUpdateChildren(parent);
+// } else {
+//
+// ITree tree = tc.createTree(keysByValue.get(0), split2[0], null);
+// tree.setParentAndUpdateChildren(children);
+// children = tree;
+// }
+// }else if (level == prevLev){
+// ITree innerParent = children.getParent();
+// children = tc.createTree(keysByValue.get(0), split2[0], null);
+// children.setParentAndUpdateChildren(innerParent);
+// }else {
+// ITree innerParent = children.getParent();
+// children = tc.createTree(keysByValue.get(0), split2[0], null);
+// children.setParentAndUpdateChildren(innerParent.getParent());
+// }
+// prevLev = level;
+// }
+// tc.validate();
+// parent.getLength();
+
+// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.kryoDeseerialize(dump);
+// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.commonsDeserialize(dump);
+// actionSet.toString();
+
+
+// CODE HERE
+ Instant finish = Instant.now();
+ long timeElapsed = Duration.between(start, finish).toMillis();
+ System.out.println(timeElapsed);
+
+// try (Jedis outer = outerPool.getResource()) {
+// try {
+//
+//
+//
+// byte[] s = outer.hget("dump".getBytes(), key.getBytes());
+// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.kryoDeseerialize(s);
+// actionSet.getActionSize();
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+ }
+ @Test
+ public void testCompare(){
+ final JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "localhost",Integer.valueOf("6399"),20000000);
+
+ Pair oldPair = null;
+ Pair newPair = null;
+ String matchKey = null;
+ ArrayList samePairs = new ArrayList<>();
+
+ String keyName = "if-3";
+ String i = "2";
+ String j = "21";
+// HashMap filenames = AkkaTreeParser.filenames(outerPool);
+
+// oldPair = EDiffHelper.getActions(keyName, i, outerPool, filenames);
+// newPair = EDiffHelper.getActions(keyName, j, outerPool, filenames);
+ ITree oldActionTree = oldPair.getValue0();
+ ITree newActionTree = newPair.getValue0();
+ HierarchicalActionSet oldProject = oldPair.getValue1();
+ HierarchicalActionSet newProject = newPair.getValue1();
+
+ ITree oldShapeTree = EDiffHelper.getShapeTree(oldProject,false);
+ ITree newShapeTree = EDiffHelper.getShapeTree(newProject,false);
+
+ ITree oldTargetTree = EDiffHelper.getTargets(oldProject,false);
+ ITree newTargetTree = EDiffHelper.getTargets(newProject,false);
+ String oldShape = oldShapeTree.toStaticHashString();
+ String newShape = newShapeTree.toStaticHashString();
+
+ if(oldShape.equals(newShape)){
+ if(oldActionTree.toStaticHashString().equals(newActionTree.toStaticHashString())){
+ if(oldTargetTree.toStaticHashString().equals(newTargetTree.toStaticHashString())){
+ samePairs.add(matchKey);
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/MessageFile.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/MessageFile.java
similarity index 73%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/MessageFile.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/MessageFile.java
index b51e597..e5a6597 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/MessageFile.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/MessageFile.java
@@ -1,4 +1,4 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
import java.io.File;
@@ -8,14 +8,22 @@ public class MessageFile {
private File prevFile;
private File diffEntryFile;
private File positionFile;
+
+
+
+ private String project;
- public MessageFile(File revFile, File prevFile, File diffEntryFile) {
+ public MessageFile(File revFile, File prevFile, File diffEntryFile,String project) {
super();
this.revFile = revFile;
this.prevFile = prevFile;
this.diffEntryFile = diffEntryFile;
+ this.project = project;
}
+ public String getProject() { return project;}
+
+ public void setProject(String project) { this.project = project;}
public File getRevFile() {
return revFile;
}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/Parser.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/Parser.java
similarity index 89%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/Parser.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/Parser.java
index 349410b..c6ac037 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/Parser.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/Parser.java
@@ -1,4 +1,4 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
import redis.clients.jedis.JedisPool;
@@ -20,7 +20,7 @@ public abstract class Parser implements ParserInterface {
protected String originalTree = ""; // Guide of generating patches.
protected String actionSets = ""; // Guide of generating patches.
- public abstract void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, JedisPool innerPool);
+ public abstract void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, JedisPool innerPool, String srcMLPath,String rootType,boolean isJava);
@Override
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/ParserInterface.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/ParserInterface.java
similarity index 88%
rename from src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/ParserInterface.java
rename to src/main/java/edu/lu/uni/serval/fixminer/ediff/ParserInterface.java
index aac3e0f..e373440 100755
--- a/src/main/java/edu/lu/uni/serval/fixminer/akka/ediff/ParserInterface.java
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/ParserInterface.java
@@ -1,4 +1,4 @@
-package edu.lu.uni.serval.fixminer.akka.ediff;
+package edu.lu.uni.serval.fixminer.ediff;
public interface ParserInterface {
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/RunnableParser.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/RunnableParser.java
new file mode 100755
index 0000000..7a05e23
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/RunnableParser.java
@@ -0,0 +1,51 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+import redis.clients.jedis.JedisPool;
+
+import java.io.File;
+
+public class RunnableParser implements Runnable {
+
+ private File prevFile;
+ private File revFile;
+ private File diffEntryFile;
+ private Parser parser;
+ private String project;
+ private JedisPool pool;
+ private String srcMLPath;
+ private String rootType;
+ boolean isJava;
+
+ public RunnableParser(File prevFile, File revFile, File diffEntryFile, Parser parser) {
+ this.prevFile = prevFile;
+ this.revFile = revFile;
+ this.diffEntryFile = diffEntryFile;
+ this.parser = parser;
+ }
+
+ public RunnableParser(File prevFile, File revFile, File diffEntryFile, Parser parser, String project, JedisPool innerPool) {
+ this.prevFile = prevFile;
+ this.revFile = revFile;
+ this.diffEntryFile = diffEntryFile;
+ this.parser = parser;
+ this.project = project;
+ this.pool = innerPool;
+ }
+
+ public RunnableParser(File prevFile, File revFile, File diffEntryFile, Parser parser, String project, JedisPool innerPool,String srcMLPath,String rootType,boolean isJava) {
+ this.prevFile = prevFile;
+ this.revFile = revFile;
+ this.diffEntryFile = diffEntryFile;
+ this.parser = parser;
+ this.project = project;
+ this.pool = innerPool;
+ this.srcMLPath = srcMLPath;
+ this.rootType = rootType;
+ this.isJava = isJava;
+ }
+
+ @Override
+ public void run() {
+ parser.parseFixPatterns(prevFile, revFile, diffEntryFile,project,pool,srcMLPath,rootType,isJava);
+ }
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestInputCases.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestInputCases.java
new file mode 100644
index 0000000..ffe942b
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestInputCases.java
@@ -0,0 +1,1249 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+import edu.lu.uni.serval.utils.CallShell;
+import edu.lu.uni.serval.utils.EDiffHelper;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+
+public class TestInputCases {
+
+
+ @Test
+ @Ignore
+ //libtiff_3ecb08_53fc4b_libtiff#tif_jpeg.c
+ public void test_libtiff_3ecb08_53fc4b() throws IOException {
+ //cpython_b3a601_63d5c1_Objects#unicodeobject.c
+ //linux_659d8c_fd2a50a_tools#perf#builtin-kmem.c
+ //openssl_6a14fe7_0ff368_crypto#LPdir_win.c
+ //linux_d1dc69_cc2115c_sound#soc#codecs#wm8776.c
+ //linux_ff244c6_a0917e0_drivers#net#tun.c .
+// List hierarchicalActionSets = getHierarchicalActionSets("libtiff_3ecb08_53fc4b_libtiff#tif_jpeg.c");
+// List hierarchicalActionSets = getHierarchicalActionSets("gmp_bdba4d_c2ebf1_tests#devel#addmul_1.c");
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_92f011_647dac_Python#fileutils.c");
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_0b5faa_596f48_ext#phar#phar_object.c");
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_3d733c_85fcab_ext#curl#streams.c");
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_177c1f_a1a124_ext#pdo#pdo_stmt.c");
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_c4ee76_2a1218_ext#ftp#ftp.c");//write test
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_bb5faa_c5152b_TSRM#tsrm_virtual_cwd.c");//write test
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_d4f9cf_1005c8_Modules#_pickle.c");
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_ec042f_9cfc55_ext#libxml#libxml.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_f989a8_8f8576_ext#zlib#zlib.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("lighttpd1.4_b6b6ed_0c6a56_src#md5.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("wireshark_1ac8e9_072650_tools#lemon#lemon.c");//good
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_1a3f7f_1aa32a_ext#pdo#pdo_dbh.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_039f42_968952_ext#pdo#pdo_dbh.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_171fd9_75d681_ext#ereg#ereg.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_85e8f3_fe9485_ext#dom#php_dom.c");//good
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_9979ac_895e79_ext#pdo#pdo_dbh.c");//good
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_7af331_b7311e_ext#date#php_date.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_6819ee_555ca8_main#main.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_18c0b6_5e4b47_ext#pdo#pdo_dbh.c");//wrong //todo
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_0f9a03_3531b3_ext#standard#array.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("wireshark_020e25_522036_epan#dissectors#packet-gtp.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_0c11675_b8c5cd_ext#sqlite#sqlite.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_050f94_11c47d_ext#bcmath#bcmath.c");//write test case
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_050f94_11c47d_ext#mhash#mhash.c");//write test case
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_99b31a_6d9788_ext#date#php_date.c");//write test case
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_99e69d_4d2998_Python#pystate.c");//write test case
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_fc0e59_6700a2_Zend#zend_ini.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_2e5820_511112_Objects#capsule.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_c410d6_1a494b_Modules#_sqlite#cursor.c");//can write test case
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_320a5c_59b359_Objects#xxobject.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("wireshark_8d7807_539418_epan#dissectors#packet-btrfcomm.c");//wrong partially correct
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_4af5c8c_ef1701_Modules#arraymodule.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_5a2a68_52c1f5_Python#import.c");//entersan
+// List hierarchicalActionSets = getHierarchicalActionSets("wireshark_8c14dd_f3470d_packet-portmap.c");//can write test
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_49e175b_1e06c7_win32#glob.c");//ifdef
+// List hierarchicalActionSets = getHierarchicalActionSets("wireshark_aba9a5_f1c697_epan#dissectors#packet-isup.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_1143d3_b34e50_Optimizer#block_pass.c");//
+
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_bf5d29_fa0a17_ext#opcache#Optimizer#pass3.c");//ok
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_287ac2_9efa1d_ext#oci8#oci8_interface.c");//maybe wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_f4a70fa_7f527d_Zend#zend_object_handlers.c");// wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("wireshark_26f28b_84f7a0_plugins#profinet#packet-pn-dcp.c");//ok
+// List hierarchicalActionSets = getHierarchicalActionSets("wireshark_a9e926_877728_epan#dissectors#packet-ndps.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_041867_5d66c3_ext#pdo#pdo_dbh.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_d810cf_2d8fd4_Zend#zend_builtin_functions.c");//wrong
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_c56492_008fb2_sapi#phpdbg#phpdbg.c");//wrong
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_96ba09_755c08_epan#dissectors#packet-gsm_a_rr.c");//wrong
+//php-src_acd809_1d3d39_ext#standard#scanf.c
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_67a100_505f61_TSRM#tsrm_virtual_cwd.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("cpython_2cf5d3_9a0d7a_Objects#object.c");//
+
+// List hierarchicalActionSets1 = getHierarchicalActionSets("php-src_fc0349_0ed538_Zend#zend.c");//
+// List hierarchicalActionSets = getHierarchicalActionSets("php-src_477e2b3_98599a_main#fopen_wrappers.c");//
+// // good
+// String s = EDiffHelper.getShapeTree(hierarchicalActionSets.get(0), false).toStaticHashString();
+// String s1 = EDiffHelper.getShapeTree(hierarchicalActionSets1.get(0), false).toStaticHashString();
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if gsm_rr_csn_HL_flag tvb subtree tvb_len bit_offset ++ \"Priority 2\" \"Present\" \"Not present\" @TO@ if gsm_rr_csn_HL_flag tvb subtree tvb_len bit_offset ++ \"Priority 2\" \"Present\" \"Not present\" item2 = proto_tree_add_bits_item subtree hf_gsm_a_call_prio tvb bit_offset 3 FALSE bit_offset += 3 proto_item_append_text item2 \" for Mobile Identity 2\" @AT@ 157870 @LENGTH@ 92\n" +
+ "---UPD then@@ @TO@ item2 = proto_tree_add_bits_item subtree hf_gsm_a_call_prio tvb bit_offset 3 FALSE bit_offset += 3 proto_item_append_text item2 \" for Mobile Identity 2\" @AT@ -1 @LENGTH@ 0\n" +
+ "------MOV block@@item2 = proto_tree_add_bits_item subtree hf_gsm_a_call_prio tvb bit_offset 3 FALSE bit_offset += 3 proto_item_append_text item2 \" for Mobile Identity 2\" @TO@ then@@ @AT@ 157973 @LENGTH@ 152\n");
+
+ }
+ @Test
+ public void test_wireshark_96ba09_755c08() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_96ba09_755c08_epan#dissectors#packet-gsm_a_rr.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if gsm_rr_csn_HL_flag tvb subtree tvb_len bit_offset ++ \"Priority 2\" \"Present\" \"Not present\" @TO@ if gsm_rr_csn_HL_flag tvb subtree tvb_len bit_offset ++ \"Priority 2\" \"Present\" \"Not present\" item2 = proto_tree_add_bits_item subtree hf_gsm_a_call_prio tvb bit_offset 3 FALSE bit_offset += 3 proto_item_append_text item2 \" for Mobile Identity 2\" @AT@ 157870 @LENGTH@ 92\n" +
+ "---UPD then@@ @TO@ item2 = proto_tree_add_bits_item subtree hf_gsm_a_call_prio tvb bit_offset 3 FALSE bit_offset += 3 proto_item_append_text item2 \" for Mobile Identity 2\" @AT@ -1 @LENGTH@ 0\n" +
+ "------MOV block@@item2 = proto_tree_add_bits_item subtree hf_gsm_a_call_prio tvb bit_offset 3 FALSE bit_offset += 3 proto_item_append_text item2 \" for Mobile Identity 2\" @TO@ then@@ @AT@ 157973 @LENGTH@ 152\n");
+
+ }
+ @Test
+ public void test_php_src_cf4a29_40becd() throws IOException {//todo upd mov with delete (get rid of delete
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_cf4a29_40becd_main#safe_mode.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if mode == CHECKUID_DISALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename return 0 elseif if mode == CHECKUID_ALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename @TO@ if mode == CHECKUID_DISALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename return 0 elseif if mode == CHECKUID_ALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename return 1 @AT@ 2519 @LENGTH@ 204\n" +
+ "---UPD elseif@@elseif if mode == CHECKUID_ALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename @TO@ elseif if mode == CHECKUID_ALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename return 1 @AT@ 2651 @LENGTH@ 99\n" +
+ "------UPD if@@if mode == CHECKUID_ALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename @TO@ if mode == CHECKUID_ALLOW_FILE_NOT_EXISTS php_error E_WARNING \"Unable to access %s\" filename return 1 @AT@ 2651 @LENGTH@ 92\n" +
+ "---------UPD then@@php_error E_WARNING \"Unable to access %s\" filename @TO@ php_error E_WARNING \"Unable to access %s\" filename return 1 @AT@ 2696 @LENGTH@ 50\n" +
+ "------------UPD block@@php_error E_WARNING \"Unable to access %s\" filename @TO@ php_error E_WARNING \"Unable to access %s\" filename return 1 @AT@ 2696 @LENGTH@ 50\n" +
+ "---------------MOV return@@return 1 @TO@ block@@php_error E_WARNING \"Unable to access %s\" filename @AT@ 2756 @LENGTH@ 8\n");
+ }
+ @Test
+ public void test_cpython_1a8501_c47253() throws IOException {//todo wrong
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_1a8501_c47253_Modules#signalmodule.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"");
+ }
+ @Test
+ public void test_cpython_58fb90_c9e435() throws IOException {//TODO definitely wrong
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_58fb90_c9e435_Modules#_stringio.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"");
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"");
+ }
+ @Test
+ public void test_cpython_1c76b7_d6056b() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_1c76b7_d6056b_Modules#faulthandler.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD function@@static void faulthandler_thread void * unused PyLockStatus st const char * errmsg PyThreadState * current int ok do thread . running = 0 PyThread_release_lock thread . join_event PyThread_release_lock thread . cancel_event @TO@ static void faulthandler_thread void * unused PyLockStatus st const char * errmsg PyThreadState * current int ok do thread . running = 0 PyThread_release_lock thread . join_event @AT@ 10367 @LENGTH@ 223\n" +
+ "---UPD block@@PyLockStatus st const char * errmsg PyThreadState * current int ok do thread . running = 0 PyThread_release_lock thread . join_event PyThread_release_lock thread . cancel_event @TO@ PyLockStatus st const char * errmsg PyThreadState * current int ok do thread . running = 0 PyThread_release_lock thread . join_event @AT@ 10413 @LENGTH@ 177\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"MOV expr_stmt@@PyThread_release_lock thread . cancel_event @TO@ block@@break; @AT@ 11259 @LENGTH@ 43\n");
+ }
+ @Test
+ public void test_php_src_acd809_1d3d39() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_acd809_1d3d39_ext#standard#scanf.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD switch@@* ch 'n' if ! ( flags & SCAN_SUPPRESS ) if numVars zend_uint refcount current = args ][objIndex ++ refcount = ( * current ) -> refcount zval_dtor * current ZVAL_LONG * current long string - baseString ( * current ) -> refcount = refcount ( * current ) -> is_ref = 1 else add_index_long * return_value objIndex ++ string - baseString nconversions ++ continue; 'd' 'D' op = 'i' base = 10 fn = ( long * ) strtol break; 'i' op = 'i' base = 0 fn = ( long * ) strtol break; 'o' op = 'i' base = 8 fn = ( long * ) strtol break; 'x' op = 'i' base = 16 fn = ( long * ) strtol break; 'u' op = 'i' base = 10 flags |= SCAN_UNSIGNED fn = ( long * ) strtoul break; 'f' 'e' 'E' 'g' op = 'f' break; 's' op = 's' break; 'c' op = 's' flags |= SCAN_NOSKIP if 0 == width width = 1 break; '[' op = '[' flags |= SCAN_NOSKIP break; @TO@ * ch 'n' if ! ( flags & SCAN_SUPPRESS ) if numVars zend_uint refcount current = args ][objIndex ++ refcount = ( * current ) -> refcount zval_dtor * current ZVAL_LONG * current long string - baseString ( * current ) -> refcount = refcount ( * current ) -> is_ref = 1 else add_index_long * return_value objIndex ++ string - baseString nconversions ++ continue; 'd' 'D' op = 'i' base = 10 fn = ( long * ) strtol break; 'i' op = 'i' base = 0 fn = ( long * ) strtol break; 'o' op = 'i' base = 8 fn = ( long * ) strtol break; 'x' 'X' op = 'i' base = 16 fn = ( long * ) strtol break; 'u' op = 'i' base = 10 flags |= SCAN_UNSIGNED fn = ( long * ) strtoul break; 'f' 'e' 'E' 'g' op = 'f' break; 's' op = 's' break; 'c' op = 's' flags |= SCAN_NOSKIP if 0 == width width = 1 break; '[' op = '[' flags |= SCAN_NOSKIP break; @AT@ 19173 @LENGTH@ 807\n" +
+ "---UPD block@@'n' if ! ( flags & SCAN_SUPPRESS ) if numVars zend_uint refcount current = args ][objIndex ++ refcount = ( * current ) -> refcount zval_dtor * current ZVAL_LONG * current long string - baseString ( * current ) -> refcount = refcount ( * current ) -> is_ref = 1 else add_index_long * return_value objIndex ++ string - baseString nconversions ++ continue; 'd' 'D' op = 'i' base = 10 fn = ( long * ) strtol break; 'i' op = 'i' base = 0 fn = ( long * ) strtol break; 'o' op = 'i' base = 8 fn = ( long * ) strtol break; 'x' op = 'i' base = 16 fn = ( long * ) strtol break; 'u' op = 'i' base = 10 flags |= SCAN_UNSIGNED fn = ( long * ) strtoul break; 'f' 'e' 'E' 'g' op = 'f' break; 's' op = 's' break; 'c' op = 's' flags |= SCAN_NOSKIP if 0 == width width = 1 break; '[' op = '[' flags |= SCAN_NOSKIP break; @TO@ 'n' if ! ( flags & SCAN_SUPPRESS ) if numVars zend_uint refcount current = args ][objIndex ++ refcount = ( * current ) -> refcount zval_dtor * current ZVAL_LONG * current long string - baseString ( * current ) -> refcount = refcount ( * current ) -> is_ref = 1 else add_index_long * return_value objIndex ++ string - baseString nconversions ++ continue; 'd' 'D' op = 'i' base = 10 fn = ( long * ) strtol break; 'i' op = 'i' base = 0 fn = ( long * ) strtol break; 'o' op = 'i' base = 8 fn = ( long * ) strtol break; 'x' 'X' op = 'i' base = 16 fn = ( long * ) strtol break; 'u' op = 'i' base = 10 flags |= SCAN_UNSIGNED fn = ( long * ) strtoul break; 'f' 'e' 'E' 'g' op = 'f' break; 's' op = 's' break; 'c' op = 's' flags |= SCAN_NOSKIP if 0 == width width = 1 break; '[' op = '[' flags |= SCAN_NOSKIP break; @AT@ 19179 @LENGTH@ 802\n" +
+ "------INS case@@'X' @TO@ block@@'n' if ! ( flags & SCAN_SUPPRESS ) if numVars zend_uint refcount current = args ][objIndex ++ refcount = ( * current ) -> refcount zval_dtor * current ZVAL_LONG * current long string - baseString ( * current ) -> refcount = refcount ( * current ) -> is_ref = 1 else add_index_long * return_value objIndex ++ string - baseString nconversions ++ continue; 'd' 'D' op = 'i' base = 10 fn = ( long * ) strtol break; 'i' op = 'i' base = 0 fn = ( long * ) strtol break; 'o' op = 'i' base = 8 fn = ( long * ) strtol break; 'x' op = 'i' base = 16 fn = ( long * ) strtol break; 'u' op = 'i' base = 10 flags |= SCAN_UNSIGNED fn = ( long * ) strtoul break; 'f' 'e' 'E' 'g' op = 'f' break; 's' op = 's' break; 'c' op = 's' flags |= SCAN_NOSKIP if 0 == width width = 1 break; '[' op = '[' flags |= SCAN_NOSKIP break; @AT@ 19912 @LENGTH@ 3\n" +
+ "---------INS expr@@'X' @TO@ case@@'X' @AT@ 19917 @LENGTH@ 3\n" +
+ "------------INS literal:char@@'X' @TO@ expr@@'X' @AT@ 19917 @LENGTH@ 3\n");
+ }
+ @Test
+ public void test_lighttpd14_f27b8d_4a86d3() throws IOException {//TODO not sure
+ List hierarchicalActionSets = getHierarchicalActionSets("lighttpd1.4_f27b8d_4a86d3_src#connections.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),3);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@400 505 207 break; default: con -> http_status = 501 break; @TO@ 400 414 505 207 break; default: con -> http_status = 501 break; @AT@ 8385 @LENGTH@ 59\n" +
+ "---INS case@@414 @TO@ block@@400 505 207 break; default: con -> http_status = 501 break; @AT@ 8421 @LENGTH@ 3\n" +
+ "------INS expr@@414 @TO@ case@@414 @AT@ 8426 @LENGTH@ 3\n" +
+ "---------INS literal@@414 @TO@ expr@@414 @AT@ 8426 @LENGTH@ 3\n");
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@log_error_write srv __FILE__ __LINE__ \"sd\" \"http-header larger then 64k -> disconnected\" chunkqueue_length cq @TO@ log_error_write srv __FILE__ __LINE__ \"s\" \"oversized request-header -> sending Status 414\" @AT@ 23540 @LENGTH@ 109\n" +
+ "---UPD expr@@log_error_write srv __FILE__ __LINE__ \"sd\" \"http-header larger then 64k -> disconnected\" chunkqueue_length cq @TO@ log_error_write srv __FILE__ __LINE__ \"s\" \"oversized request-header -> sending Status 414\" @AT@ 23540 @LENGTH@ 109\n" +
+ "------UPD call@@log_error_write srv __FILE__ __LINE__ \"sd\" \"http-header larger then 64k -> disconnected\" chunkqueue_length cq @TO@ log_error_write srv __FILE__ __LINE__ \"s\" \"oversized request-header -> sending Status 414\" @AT@ 23540 @LENGTH@ 109\n" +
+ "---------UPD argument_list@@srv __FILE__ __LINE__ \"sd\" \"http-header larger then 64k -> disconnected\" chunkqueue_length cq @TO@ srv __FILE__ __LINE__ \"s\" \"oversized request-header -> sending Status 414\" @AT@ 23555 @LENGTH@ 93\n" +
+ "------------UPD argument@@\"sd\" @TO@ \"s\" @AT@ 23581 @LENGTH@ 4\n" +
+ "---------------UPD expr@@\"sd\" @TO@ \"s\" @AT@ 23581 @LENGTH@ 4\n" +
+ "------------------UPD literal@@\"sd\" @TO@ \"s\" @AT@ 23581 @LENGTH@ 4\n" +
+ "------------UPD argument@@\"http-header larger then 64k -> disconnected\" @TO@ \"oversized request-header -> sending Status 414\" @AT@ 23587 @LENGTH@ 45\n" +
+ "---------------UPD expr@@\"http-header larger then 64k -> disconnected\" @TO@ \"oversized request-header -> sending Status 414\" @AT@ 23587 @LENGTH@ 45\n" +
+ "------------------UPD literal@@\"http-header larger then 64k -> disconnected\" @TO@ \"oversized request-header -> sending Status 414\" @AT@ 23587 @LENGTH@ 45\n" +
+ "------------DEL argument@@chunkqueue_length cq @AT@ 23634 @LENGTH@ 20\n" +
+ "---------------DEL expr@@chunkqueue_length cq @AT@ 23634 @LENGTH@ 20\n" +
+ "------------------DEL call@@chunkqueue_length cq @AT@ 23634 @LENGTH@ 20\n" +
+ "---------------------DEL name@@chunkqueue_length @AT@ 23634 @LENGTH@ 17\n" +
+ "---------------------DEL argument_list@@cq @AT@ 23651 @LENGTH@ 2\n" +
+ "------------------------DEL argument@@cq @AT@ 23652 @LENGTH@ 2\n" +
+ "---------------------------DEL expr@@cq @AT@ 23652 @LENGTH@ 2\n" +
+ "------------------------------DEL name@@cq @AT@ 23652 @LENGTH@ 2\n");
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@connection_set_state srv con CON_STATE_REQUEST_END @TO@ connection_set_state srv con CON_STATE_HANDLE_REQUEST @AT@ 23741 @LENGTH@ 50\n" +
+ "---UPD expr@@connection_set_state srv con CON_STATE_REQUEST_END @TO@ connection_set_state srv con CON_STATE_HANDLE_REQUEST @AT@ 23741 @LENGTH@ 50\n" +
+ "------UPD call@@connection_set_state srv con CON_STATE_REQUEST_END @TO@ connection_set_state srv con CON_STATE_HANDLE_REQUEST @AT@ 23741 @LENGTH@ 50\n" +
+ "---------UPD argument_list@@srv con CON_STATE_REQUEST_END @TO@ srv con CON_STATE_HANDLE_REQUEST @AT@ 23761 @LENGTH@ 29\n" +
+ "------------UPD argument@@CON_STATE_REQUEST_END @TO@ CON_STATE_HANDLE_REQUEST @AT@ 23772 @LENGTH@ 21\n" +
+ "---------------UPD expr@@CON_STATE_REQUEST_END @TO@ CON_STATE_HANDLE_REQUEST @AT@ 23772 @LENGTH@ 21\n" +
+ "------------------UPD name@@CON_STATE_REQUEST_END @TO@ CON_STATE_HANDLE_REQUEST @AT@ 23772 @LENGTH@ 21\n");
+ }
+ @Test
+ public void test_wireshark_87646b_2cc0fb() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_87646b_2cc0fb_epan#proto.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+ @Test
+ public void test_php_src_a0a56e_7afbb7() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_a0a56e_7afbb7_ext#com_dotnet#com_extension.c");//ok
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@( ) STD_PHP_INI_ENTRY \"com.allow_dcom\" \"0\" PHP_INI_SYSTEM OnUpdateBool allow_dcom zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_verbose\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_verbose zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_typelib\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_on zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_casesensitive\" \"1\" PHP_INI_ALL OnUpdateBool autoreg_case_sensitive zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.code_page\" \"\" PHP_INI_ALL OnUpdateLong code_page zend_com_dotnet_globals com_dotnet_globals PHP_INI_ENTRY \"com.typelib_file\" \"\" PHP_INI_SYSTEM OnTypeLibFileUpdate PHP_INI_END static PHP_GINIT_FUNCTION com_dotnet memset com_dotnet_globals 0 * com_dotnet_globals com_dotnet_globals -> code_page = CP_ACP PHP_MINIT_FUNCTION com_dotnet zend_class_entry ce * tmp REGISTER_INI_ENTRIES php_com_wrapper_minit INIT_FUNC_ARGS_PASSTHRU php_com_persist_minit INIT_FUNC_ARGS_PASSTHRU INIT_CLASS_ENTRY ce \"com_exception\" NULL php_com_exception_class_entry = zend_register_internal_class_ex &ce zend_exception_get_default(TSRMLS_C) NULL TSRMLS_CC php_com_exception_class_entry -> ce_flags |= ZEND_ACC_FINAL INIT_CLASS_ENTRY ce \"com_safearray_proxy\" NULL php_com_saproxy_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_saproxy_class_entry -> ce_flags |= ZEND_ACC_FINAL php_com_saproxy_class_entry -> get_iterator = php_com_saproxy_iter_get INIT_CLASS_ENTRY ce \"variant\" NULL ce . create_object = php_com_object_new php_com_variant_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_variant_class_entry -> get_iterator = php_com_iter_get INIT_CLASS_ENTRY ce \"com\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get zend_ts_hash_init & php_com_typelibraries 0 NULL php_com_typelibrary_dtor 1 HAVE_MSCOREE_H INIT_CLASS_ENTRY ce \"dotnet\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get COM_CONST x REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT) COM_CONST CLSCTX_INPROC_SERVER COM_CONST CLSCTX_INPROC_HANDLER COM_CONST CLSCTX_LOCAL_SERVER COM_CONST CLSCTX_REMOTE_SERVER COM_CONST CLSCTX_SERVER COM_CONST CLSCTX_ALL 0 COM_CONST VT_NULL COM_CONST VT_EMPTY COM_CONST VT_UI1 COM_CONST VT_I1 COM_CONST VT_UI2 COM_CONST VT_I2 COM_CONST VT_UI4 COM_CONST VT_I4 COM_CONST VT_R4 COM_CONST VT_R8 COM_CONST VT_BOOL COM_CONST VT_ERROR COM_CONST VT_CY COM_CONST VT_DATE COM_CONST VT_BSTR COM_CONST VT_DECIMAL COM_CONST VT_UNKNOWN COM_CONST VT_DISPATCH COM_CONST VT_VARIANT COM_CONST VT_INT COM_CONST VT_UINT COM_CONST VT_ARRAY COM_CONST VT_BYREF COM_CONST CP_ACP COM_CONST CP_MACCP COM_CONST CP_OEMCP COM_CONST CP_UTF7 COM_CONST CP_UTF8 COM_CONST CP_SYMBOL COM_CONST CP_THREAD_ACP COM_CONST VARCMP_LT COM_CONST VARCMP_EQ COM_CONST VARCMP_GT COM_CONST VARCMP_NULL COM_CONST NORM_IGNORECASE COM_CONST NORM_IGNORENONSPACE COM_CONST NORM_IGNORESYMBOLS COM_CONST NORM_IGNOREWIDTH COM_CONST NORM_IGNOREKANATYPE NORM_IGNOREKASHIDA COM_CONST NORM_IGNOREKASHIDA COM_CONST DISP_E_DIVBYZERO COM_CONST DISP_E_OVERFLOW COM_CONST DISP_E_BADINDEX COM_CONST MK_E_UNAVAILABLE return SUCCESS @TO@ ( ) STD_PHP_INI_ENTRY \"com.allow_dcom\" \"0\" PHP_INI_SYSTEM OnUpdateBool allow_dcom zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_verbose\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_verbose zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_typelib\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_on zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_casesensitive\" \"1\" PHP_INI_ALL OnUpdateBool autoreg_case_sensitive zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.code_page\" \"\" PHP_INI_ALL OnUpdateLong code_page zend_com_dotnet_globals com_dotnet_globals PHP_INI_ENTRY \"com.typelib_file\" \"\" PHP_INI_SYSTEM OnTypeLibFileUpdate PHP_INI_END static PHP_GINIT_FUNCTION com_dotnet memset com_dotnet_globals 0 * com_dotnet_globals com_dotnet_globals -> code_page = CP_ACP PHP_MINIT_FUNCTION com_dotnet zend_class_entry ce * tmp php_com_wrapper_minit INIT_FUNC_ARGS_PASSTHRU php_com_persist_minit INIT_FUNC_ARGS_PASSTHRU INIT_CLASS_ENTRY ce \"com_exception\" NULL php_com_exception_class_entry = zend_register_internal_class_ex &ce zend_exception_get_default(TSRMLS_C) NULL TSRMLS_CC php_com_exception_class_entry -> ce_flags |= ZEND_ACC_FINAL INIT_CLASS_ENTRY ce \"com_safearray_proxy\" NULL php_com_saproxy_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_saproxy_class_entry -> ce_flags |= ZEND_ACC_FINAL php_com_saproxy_class_entry -> get_iterator = php_com_saproxy_iter_get INIT_CLASS_ENTRY ce \"variant\" NULL ce . create_object = php_com_object_new php_com_variant_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_variant_class_entry -> get_iterator = php_com_iter_get INIT_CLASS_ENTRY ce \"com\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get zend_ts_hash_init & php_com_typelibraries 0 NULL php_com_typelibrary_dtor 1 HAVE_MSCOREE_H INIT_CLASS_ENTRY ce \"dotnet\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get REGISTER_INI_ENTRIES COM_CONST x REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT) COM_CONST CLSCTX_INPROC_SERVER COM_CONST CLSCTX_INPROC_HANDLER COM_CONST CLSCTX_LOCAL_SERVER COM_CONST CLSCTX_REMOTE_SERVER COM_CONST CLSCTX_SERVER COM_CONST CLSCTX_ALL 0 COM_CONST VT_NULL COM_CONST VT_EMPTY COM_CONST VT_UI1 COM_CONST VT_I1 COM_CONST VT_UI2 COM_CONST VT_I2 COM_CONST VT_UI4 COM_CONST VT_I4 COM_CONST VT_R4 COM_CONST VT_R8 COM_CONST VT_BOOL COM_CONST VT_ERROR COM_CONST VT_CY COM_CONST VT_DATE COM_CONST VT_BSTR COM_CONST VT_DECIMAL COM_CONST VT_UNKNOWN COM_CONST VT_DISPATCH COM_CONST VT_VARIANT COM_CONST VT_INT COM_CONST VT_UINT COM_CONST VT_ARRAY COM_CONST VT_BYREF COM_CONST CP_ACP COM_CONST CP_MACCP COM_CONST CP_OEMCP COM_CONST CP_UTF7 COM_CONST CP_UTF8 COM_CONST CP_SYMBOL COM_CONST CP_THREAD_ACP COM_CONST VARCMP_LT COM_CONST VARCMP_EQ COM_CONST VARCMP_GT COM_CONST VARCMP_NULL COM_CONST NORM_IGNORECASE COM_CONST NORM_IGNORENONSPACE COM_CONST NORM_IGNORESYMBOLS COM_CONST NORM_IGNOREWIDTH COM_CONST NORM_IGNOREKANATYPE NORM_IGNOREKASHIDA COM_CONST NORM_IGNOREKASHIDA COM_CONST DISP_E_DIVBYZERO COM_CONST DISP_E_OVERFLOW COM_CONST DISP_E_BADINDEX COM_CONST MK_E_UNAVAILABLE return SUCCESS @AT@ 4914 @LENGTH@ 3385\n" +
+ "---UPD expr@@( ) STD_PHP_INI_ENTRY \"com.allow_dcom\" \"0\" PHP_INI_SYSTEM OnUpdateBool allow_dcom zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_verbose\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_verbose zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_typelib\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_on zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_casesensitive\" \"1\" PHP_INI_ALL OnUpdateBool autoreg_case_sensitive zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.code_page\" \"\" PHP_INI_ALL OnUpdateLong code_page zend_com_dotnet_globals com_dotnet_globals PHP_INI_ENTRY \"com.typelib_file\" \"\" PHP_INI_SYSTEM OnTypeLibFileUpdate PHP_INI_END static PHP_GINIT_FUNCTION com_dotnet memset com_dotnet_globals 0 * com_dotnet_globals com_dotnet_globals -> code_page = CP_ACP PHP_MINIT_FUNCTION com_dotnet zend_class_entry ce * tmp REGISTER_INI_ENTRIES php_com_wrapper_minit INIT_FUNC_ARGS_PASSTHRU php_com_persist_minit INIT_FUNC_ARGS_PASSTHRU INIT_CLASS_ENTRY ce \"com_exception\" NULL php_com_exception_class_entry = zend_register_internal_class_ex &ce zend_exception_get_default(TSRMLS_C) NULL TSRMLS_CC php_com_exception_class_entry -> ce_flags |= ZEND_ACC_FINAL INIT_CLASS_ENTRY ce \"com_safearray_proxy\" NULL php_com_saproxy_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_saproxy_class_entry -> ce_flags |= ZEND_ACC_FINAL php_com_saproxy_class_entry -> get_iterator = php_com_saproxy_iter_get INIT_CLASS_ENTRY ce \"variant\" NULL ce . create_object = php_com_object_new php_com_variant_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_variant_class_entry -> get_iterator = php_com_iter_get INIT_CLASS_ENTRY ce \"com\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get zend_ts_hash_init & php_com_typelibraries 0 NULL php_com_typelibrary_dtor 1 HAVE_MSCOREE_H INIT_CLASS_ENTRY ce \"dotnet\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get COM_CONST x REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT) COM_CONST CLSCTX_INPROC_SERVER COM_CONST CLSCTX_INPROC_HANDLER COM_CONST CLSCTX_LOCAL_SERVER COM_CONST CLSCTX_REMOTE_SERVER COM_CONST CLSCTX_SERVER COM_CONST CLSCTX_ALL 0 COM_CONST VT_NULL COM_CONST VT_EMPTY COM_CONST VT_UI1 COM_CONST VT_I1 COM_CONST VT_UI2 COM_CONST VT_I2 COM_CONST VT_UI4 COM_CONST VT_I4 COM_CONST VT_R4 COM_CONST VT_R8 COM_CONST VT_BOOL COM_CONST VT_ERROR COM_CONST VT_CY COM_CONST VT_DATE COM_CONST VT_BSTR COM_CONST VT_DECIMAL COM_CONST VT_UNKNOWN COM_CONST VT_DISPATCH COM_CONST VT_VARIANT COM_CONST VT_INT COM_CONST VT_UINT COM_CONST VT_ARRAY COM_CONST VT_BYREF COM_CONST CP_ACP COM_CONST CP_MACCP COM_CONST CP_OEMCP COM_CONST CP_UTF7 COM_CONST CP_UTF8 COM_CONST CP_SYMBOL COM_CONST CP_THREAD_ACP COM_CONST VARCMP_LT COM_CONST VARCMP_EQ COM_CONST VARCMP_GT COM_CONST VARCMP_NULL COM_CONST NORM_IGNORECASE COM_CONST NORM_IGNORENONSPACE COM_CONST NORM_IGNORESYMBOLS COM_CONST NORM_IGNOREWIDTH COM_CONST NORM_IGNOREKANATYPE NORM_IGNOREKASHIDA COM_CONST NORM_IGNOREKASHIDA COM_CONST DISP_E_DIVBYZERO COM_CONST DISP_E_OVERFLOW COM_CONST DISP_E_BADINDEX COM_CONST MK_E_UNAVAILABLE return SUCCESS @TO@ ( ) STD_PHP_INI_ENTRY \"com.allow_dcom\" \"0\" PHP_INI_SYSTEM OnUpdateBool allow_dcom zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_verbose\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_verbose zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_typelib\" \"0\" PHP_INI_ALL OnUpdateBool autoreg_on zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.autoregister_casesensitive\" \"1\" PHP_INI_ALL OnUpdateBool autoreg_case_sensitive zend_com_dotnet_globals com_dotnet_globals STD_PHP_INI_ENTRY \"com.code_page\" \"\" PHP_INI_ALL OnUpdateLong code_page zend_com_dotnet_globals com_dotnet_globals PHP_INI_ENTRY \"com.typelib_file\" \"\" PHP_INI_SYSTEM OnTypeLibFileUpdate PHP_INI_END static PHP_GINIT_FUNCTION com_dotnet memset com_dotnet_globals 0 * com_dotnet_globals com_dotnet_globals -> code_page = CP_ACP PHP_MINIT_FUNCTION com_dotnet zend_class_entry ce * tmp php_com_wrapper_minit INIT_FUNC_ARGS_PASSTHRU php_com_persist_minit INIT_FUNC_ARGS_PASSTHRU INIT_CLASS_ENTRY ce \"com_exception\" NULL php_com_exception_class_entry = zend_register_internal_class_ex &ce zend_exception_get_default(TSRMLS_C) NULL TSRMLS_CC php_com_exception_class_entry -> ce_flags |= ZEND_ACC_FINAL INIT_CLASS_ENTRY ce \"com_safearray_proxy\" NULL php_com_saproxy_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_saproxy_class_entry -> ce_flags |= ZEND_ACC_FINAL php_com_saproxy_class_entry -> get_iterator = php_com_saproxy_iter_get INIT_CLASS_ENTRY ce \"variant\" NULL ce . create_object = php_com_object_new php_com_variant_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_variant_class_entry -> get_iterator = php_com_iter_get INIT_CLASS_ENTRY ce \"com\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get zend_ts_hash_init & php_com_typelibraries 0 NULL php_com_typelibrary_dtor 1 HAVE_MSCOREE_H INIT_CLASS_ENTRY ce \"dotnet\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get REGISTER_INI_ENTRIES COM_CONST x REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT) COM_CONST CLSCTX_INPROC_SERVER COM_CONST CLSCTX_INPROC_HANDLER COM_CONST CLSCTX_LOCAL_SERVER COM_CONST CLSCTX_REMOTE_SERVER COM_CONST CLSCTX_SERVER COM_CONST CLSCTX_ALL 0 COM_CONST VT_NULL COM_CONST VT_EMPTY COM_CONST VT_UI1 COM_CONST VT_I1 COM_CONST VT_UI2 COM_CONST VT_I2 COM_CONST VT_UI4 COM_CONST VT_I4 COM_CONST VT_R4 COM_CONST VT_R8 COM_CONST VT_BOOL COM_CONST VT_ERROR COM_CONST VT_CY COM_CONST VT_DATE COM_CONST VT_BSTR COM_CONST VT_DECIMAL COM_CONST VT_UNKNOWN COM_CONST VT_DISPATCH COM_CONST VT_VARIANT COM_CONST VT_INT COM_CONST VT_UINT COM_CONST VT_ARRAY COM_CONST VT_BYREF COM_CONST CP_ACP COM_CONST CP_MACCP COM_CONST CP_OEMCP COM_CONST CP_UTF7 COM_CONST CP_UTF8 COM_CONST CP_SYMBOL COM_CONST CP_THREAD_ACP COM_CONST VARCMP_LT COM_CONST VARCMP_EQ COM_CONST VARCMP_GT COM_CONST VARCMP_NULL COM_CONST NORM_IGNORECASE COM_CONST NORM_IGNORENONSPACE COM_CONST NORM_IGNORESYMBOLS COM_CONST NORM_IGNOREWIDTH COM_CONST NORM_IGNOREKANATYPE NORM_IGNOREKASHIDA COM_CONST NORM_IGNOREKASHIDA COM_CONST DISP_E_DIVBYZERO COM_CONST DISP_E_OVERFLOW COM_CONST DISP_E_BADINDEX COM_CONST MK_E_UNAVAILABLE return SUCCESS @AT@ 4914 @LENGTH@ 3385\n" +
+ "------UPD block@@zend_class_entry ce * tmp REGISTER_INI_ENTRIES php_com_wrapper_minit INIT_FUNC_ARGS_PASSTHRU php_com_persist_minit INIT_FUNC_ARGS_PASSTHRU INIT_CLASS_ENTRY ce \"com_exception\" NULL php_com_exception_class_entry = zend_register_internal_class_ex &ce zend_exception_get_default(TSRMLS_C) NULL TSRMLS_CC php_com_exception_class_entry -> ce_flags |= ZEND_ACC_FINAL INIT_CLASS_ENTRY ce \"com_safearray_proxy\" NULL php_com_saproxy_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_saproxy_class_entry -> ce_flags |= ZEND_ACC_FINAL php_com_saproxy_class_entry -> get_iterator = php_com_saproxy_iter_get INIT_CLASS_ENTRY ce \"variant\" NULL ce . create_object = php_com_object_new php_com_variant_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_variant_class_entry -> get_iterator = php_com_iter_get INIT_CLASS_ENTRY ce \"com\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get zend_ts_hash_init & php_com_typelibraries 0 NULL php_com_typelibrary_dtor 1 HAVE_MSCOREE_H INIT_CLASS_ENTRY ce \"dotnet\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get COM_CONST x REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT) COM_CONST CLSCTX_INPROC_SERVER COM_CONST CLSCTX_INPROC_HANDLER COM_CONST CLSCTX_LOCAL_SERVER COM_CONST CLSCTX_REMOTE_SERVER COM_CONST CLSCTX_SERVER COM_CONST CLSCTX_ALL 0 COM_CONST VT_NULL COM_CONST VT_EMPTY COM_CONST VT_UI1 COM_CONST VT_I1 COM_CONST VT_UI2 COM_CONST VT_I2 COM_CONST VT_UI4 COM_CONST VT_I4 COM_CONST VT_R4 COM_CONST VT_R8 COM_CONST VT_BOOL COM_CONST VT_ERROR COM_CONST VT_CY COM_CONST VT_DATE COM_CONST VT_BSTR COM_CONST VT_DECIMAL COM_CONST VT_UNKNOWN COM_CONST VT_DISPATCH COM_CONST VT_VARIANT COM_CONST VT_INT COM_CONST VT_UINT COM_CONST VT_ARRAY COM_CONST VT_BYREF COM_CONST CP_ACP COM_CONST CP_MACCP COM_CONST CP_OEMCP COM_CONST CP_UTF7 COM_CONST CP_UTF8 COM_CONST CP_SYMBOL COM_CONST CP_THREAD_ACP COM_CONST VARCMP_LT COM_CONST VARCMP_EQ COM_CONST VARCMP_GT COM_CONST VARCMP_NULL COM_CONST NORM_IGNORECASE COM_CONST NORM_IGNORENONSPACE COM_CONST NORM_IGNORESYMBOLS COM_CONST NORM_IGNOREWIDTH COM_CONST NORM_IGNOREKANATYPE NORM_IGNOREKASHIDA COM_CONST NORM_IGNOREKASHIDA COM_CONST DISP_E_DIVBYZERO COM_CONST DISP_E_OVERFLOW COM_CONST DISP_E_BADINDEX COM_CONST MK_E_UNAVAILABLE return SUCCESS @TO@ zend_class_entry ce * tmp php_com_wrapper_minit INIT_FUNC_ARGS_PASSTHRU php_com_persist_minit INIT_FUNC_ARGS_PASSTHRU INIT_CLASS_ENTRY ce \"com_exception\" NULL php_com_exception_class_entry = zend_register_internal_class_ex &ce zend_exception_get_default(TSRMLS_C) NULL TSRMLS_CC php_com_exception_class_entry -> ce_flags |= ZEND_ACC_FINAL INIT_CLASS_ENTRY ce \"com_safearray_proxy\" NULL php_com_saproxy_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_saproxy_class_entry -> ce_flags |= ZEND_ACC_FINAL php_com_saproxy_class_entry -> get_iterator = php_com_saproxy_iter_get INIT_CLASS_ENTRY ce \"variant\" NULL ce . create_object = php_com_object_new php_com_variant_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_variant_class_entry -> get_iterator = php_com_iter_get INIT_CLASS_ENTRY ce \"com\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get zend_ts_hash_init & php_com_typelibraries 0 NULL php_com_typelibrary_dtor 1 HAVE_MSCOREE_H INIT_CLASS_ENTRY ce \"dotnet\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get REGISTER_INI_ENTRIES COM_CONST x REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT) COM_CONST CLSCTX_INPROC_SERVER COM_CONST CLSCTX_INPROC_HANDLER COM_CONST CLSCTX_LOCAL_SERVER COM_CONST CLSCTX_REMOTE_SERVER COM_CONST CLSCTX_SERVER COM_CONST CLSCTX_ALL 0 COM_CONST VT_NULL COM_CONST VT_EMPTY COM_CONST VT_UI1 COM_CONST VT_I1 COM_CONST VT_UI2 COM_CONST VT_I2 COM_CONST VT_UI4 COM_CONST VT_I4 COM_CONST VT_R4 COM_CONST VT_R8 COM_CONST VT_BOOL COM_CONST VT_ERROR COM_CONST VT_CY COM_CONST VT_DATE COM_CONST VT_BSTR COM_CONST VT_DECIMAL COM_CONST VT_UNKNOWN COM_CONST VT_DISPATCH COM_CONST VT_VARIANT COM_CONST VT_INT COM_CONST VT_UINT COM_CONST VT_ARRAY COM_CONST VT_BYREF COM_CONST CP_ACP COM_CONST CP_MACCP COM_CONST CP_OEMCP COM_CONST CP_UTF7 COM_CONST CP_UTF8 COM_CONST CP_SYMBOL COM_CONST CP_THREAD_ACP COM_CONST VARCMP_LT COM_CONST VARCMP_EQ COM_CONST VARCMP_GT COM_CONST VARCMP_NULL COM_CONST NORM_IGNORECASE COM_CONST NORM_IGNORENONSPACE COM_CONST NORM_IGNORESYMBOLS COM_CONST NORM_IGNOREWIDTH COM_CONST NORM_IGNOREKANATYPE NORM_IGNOREKASHIDA COM_CONST NORM_IGNOREKASHIDA COM_CONST DISP_E_DIVBYZERO COM_CONST DISP_E_OVERFLOW COM_CONST DISP_E_BADINDEX COM_CONST MK_E_UNAVAILABLE return SUCCESS @AT@ 5962 @LENGTH@ 2498\n" +
+ "---------MOV expr@@REGISTER_INI_ENTRIES @TO@ block@@zend_class_entry ce * tmp REGISTER_INI_ENTRIES php_com_wrapper_minit INIT_FUNC_ARGS_PASSTHRU php_com_persist_minit INIT_FUNC_ARGS_PASSTHRU INIT_CLASS_ENTRY ce \"com_exception\" NULL php_com_exception_class_entry = zend_register_internal_class_ex &ce zend_exception_get_default(TSRMLS_C) NULL TSRMLS_CC php_com_exception_class_entry -> ce_flags |= ZEND_ACC_FINAL INIT_CLASS_ENTRY ce \"com_safearray_proxy\" NULL php_com_saproxy_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_saproxy_class_entry -> ce_flags |= ZEND_ACC_FINAL php_com_saproxy_class_entry -> get_iterator = php_com_saproxy_iter_get INIT_CLASS_ENTRY ce \"variant\" NULL ce . create_object = php_com_object_new php_com_variant_class_entry = zend_register_internal_class &ce TSRMLS_CC php_com_variant_class_entry -> get_iterator = php_com_iter_get INIT_CLASS_ENTRY ce \"com\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get zend_ts_hash_init & php_com_typelibraries 0 NULL php_com_typelibrary_dtor 1 HAVE_MSCOREE_H INIT_CLASS_ENTRY ce \"dotnet\" NULL ce . create_object = php_com_object_new tmp = zend_register_internal_class_ex & ce php_com_variant_class_entry \"variant\" TSRMLS_CC tmp -> get_iterator = php_com_iter_get COM_CONST x REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT) COM_CONST CLSCTX_INPROC_SERVER COM_CONST CLSCTX_INPROC_HANDLER COM_CONST CLSCTX_LOCAL_SERVER COM_CONST CLSCTX_REMOTE_SERVER COM_CONST CLSCTX_SERVER COM_CONST CLSCTX_ALL 0 COM_CONST VT_NULL COM_CONST VT_EMPTY COM_CONST VT_UI1 COM_CONST VT_I1 COM_CONST VT_UI2 COM_CONST VT_I2 COM_CONST VT_UI4 COM_CONST VT_I4 COM_CONST VT_R4 COM_CONST VT_R8 COM_CONST VT_BOOL COM_CONST VT_ERROR COM_CONST VT_CY COM_CONST VT_DATE COM_CONST VT_BSTR COM_CONST VT_DECIMAL COM_CONST VT_UNKNOWN COM_CONST VT_DISPATCH COM_CONST VT_VARIANT COM_CONST VT_INT COM_CONST VT_UINT COM_CONST VT_ARRAY COM_CONST VT_BYREF COM_CONST CP_ACP COM_CONST CP_MACCP COM_CONST CP_OEMCP COM_CONST CP_UTF7 COM_CONST CP_UTF8 COM_CONST CP_SYMBOL COM_CONST CP_THREAD_ACP COM_CONST VARCMP_LT COM_CONST VARCMP_EQ COM_CONST VARCMP_GT COM_CONST VARCMP_NULL COM_CONST NORM_IGNORECASE COM_CONST NORM_IGNORENONSPACE COM_CONST NORM_IGNORESYMBOLS COM_CONST NORM_IGNOREWIDTH COM_CONST NORM_IGNOREKANATYPE NORM_IGNOREKASHIDA COM_CONST NORM_IGNOREKASHIDA COM_CONST DISP_E_DIVBYZERO COM_CONST DISP_E_OVERFLOW COM_CONST DISP_E_BADINDEX COM_CONST MK_E_UNAVAILABLE return SUCCESS @AT@ 5994 @LENGTH@ 20\n");
+ }
+ @Test
+ public void test_php_src_a29791_796ff1() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_a29791_796ff1_Zend#zend_API.c");//ok
+ Assert.assertEquals(hierarchicalActionSets.size(),4);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD while@@while param_count > 0 param = va_arg ptr zval * * param_ptr = * ( p - param_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr * param = param_ptr param_count -- @TO@ while param_count -- > 0 param = va_arg ptr zval * * param_ptr = * ( p - arg_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - param_count ) = param_ptr * param = param_ptr arg_count -- @AT@ 1892 @LENGTH@ 381\n" +
+ "---UPD condition@@param_count > 0 @TO@ param_count -- > 0 @AT@ 1892 @LENGTH@ 15\n" +
+ "------UPD expr@@param_count > 0 @TO@ param_count -- > 0 @AT@ 1893 @LENGTH@ 15\n" +
+ "---------INS operator@@-- @TO@ expr@@param_count > 0 @AT@ 1904 @LENGTH@ 2\n" +
+ "---UPD block@@param = va_arg ptr zval * * param_ptr = * ( p - param_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr * param = param_ptr param_count -- @TO@ param = va_arg ptr zval * * param_ptr = * ( p - arg_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - param_count ) = param_ptr * param = param_ptr arg_count -- @AT@ 1908 @LENGTH@ 359\n" +
+ "------UPD expr_stmt@@param_ptr = * ( p - param_count ) @TO@ param_ptr = * ( p - arg_count ) @AT@ 1944 @LENGTH@ 33\n" +
+ "---------UPD expr@@param_ptr = * ( p - param_count ) @TO@ param_ptr = * ( p - arg_count ) @AT@ 1944 @LENGTH@ 33\n" +
+ "------------UPD name@@param_count @TO@ arg_count @AT@ 1960 @LENGTH@ 11\n" +
+ "------UPD if@@if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @TO@ if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @AT@ 1979 @LENGTH@ 262\n" +
+ "---------UPD then@@zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @TO@ zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @AT@ 2031 @LENGTH@ 205\n" +
+ "------------UPD block@@zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @TO@ zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @AT@ 2031 @LENGTH@ 205\n" +
+ "---------------UPD expr_stmt@@( ( zval * ) * ( p - param_count ) ) -> refcount -- @TO@ ( ( zval * ) * ( p - arg_count ) ) -> refcount -- @AT@ 2181 @LENGTH@ 51\n" +
+ "------------------UPD expr@@( ( zval * ) * ( p - param_count ) ) -> refcount -- @TO@ ( ( zval * ) * ( p - arg_count ) ) -> refcount -- @AT@ 2181 @LENGTH@ 51\n" +
+ "---------------------UPD name@@param_count @TO@ arg_count @AT@ 2195 @LENGTH@ 11\n" +
+ "------UPD expr_stmt@@param_count -- @TO@ arg_count -- @AT@ 2283 @LENGTH@ 14\n" +
+ "---------UPD expr@@param_count -- @TO@ arg_count -- @AT@ 2283 @LENGTH@ 14\n" +
+ "------------UPD name@@param_count @TO@ arg_count @AT@ 2283 @LENGTH@ 11\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD while@@while param_count > 0 param_ptr = * ( p - param_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr * ( argument_array ++ ) = param_ptr param_count -- @TO@ while param_count -- > 0 param_ptr = * ( p - arg_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - arg_count ) = param_ptr * ( argument_array ++ ) = param_ptr arg_count -- @AT@ 2611 @LENGTH@ 369\n" +
+ "---UPD condition@@param_count > 0 @TO@ param_count -- > 0 @AT@ 2611 @LENGTH@ 15\n" +
+ "------UPD expr@@param_count > 0 @TO@ param_count -- > 0 @AT@ 2612 @LENGTH@ 15\n" +
+ "---------INS operator@@-- @TO@ expr@@param_count > 0 @AT@ 2619 @LENGTH@ 2\n" +
+ "---UPD block@@param_ptr = * ( p - param_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr * ( argument_array ++ ) = param_ptr param_count -- @TO@ param_ptr = * ( p - arg_count ) if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - arg_count ) = param_ptr * ( argument_array ++ ) = param_ptr arg_count -- @AT@ 2627 @LENGTH@ 347\n" +
+ "------UPD expr_stmt@@param_ptr = * ( p - param_count ) @TO@ param_ptr = * ( p - arg_count ) @AT@ 2631 @LENGTH@ 33\n" +
+ "---------UPD expr@@param_ptr = * ( p - param_count ) @TO@ param_ptr = * ( p - arg_count ) @AT@ 2631 @LENGTH@ 33\n" +
+ "------------UPD name@@param_count @TO@ arg_count @AT@ 2647 @LENGTH@ 11\n" +
+ "------UPD if@@if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @TO@ if ! PZVAL_IS_REF param_ptr && param_ptr -> refcount > 1 zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - arg_count ) = param_ptr @AT@ 2666 @LENGTH@ 262\n" +
+ "---------UPD then@@zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @TO@ zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - arg_count ) = param_ptr @AT@ 2718 @LENGTH@ 205\n" +
+ "------------UPD block@@zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - param_count ) ) -> refcount -- * ( p - param_count ) = param_ptr @TO@ zval * new_tmp ALLOC_ZVAL new_tmp * new_tmp = * param_ptr zval_copy_ctor new_tmp INIT_PZVAL new_tmp param_ptr = new_tmp ( ( zval * ) * ( p - arg_count ) ) -> refcount -- * ( p - arg_count ) = param_ptr @AT@ 2718 @LENGTH@ 205\n" +
+ "---------------UPD expr_stmt@@( ( zval * ) * ( p - param_count ) ) -> refcount -- @TO@ ( ( zval * ) * ( p - arg_count ) ) -> refcount -- @AT@ 2868 @LENGTH@ 51\n" +
+ "------------------UPD expr@@( ( zval * ) * ( p - param_count ) ) -> refcount -- @TO@ ( ( zval * ) * ( p - arg_count ) ) -> refcount -- @AT@ 2868 @LENGTH@ 51\n" +
+ "---------------------UPD name@@param_count @TO@ arg_count @AT@ 2882 @LENGTH@ 11\n" +
+ "---------------UPD expr_stmt@@* ( p - param_count ) = param_ptr @TO@ * ( p - arg_count ) = param_ptr @AT@ 2912 @LENGTH@ 33\n" +
+ "------------------UPD expr@@* ( p - param_count ) = param_ptr @TO@ * ( p - arg_count ) = param_ptr @AT@ 2912 @LENGTH@ 33\n" +
+ "---------------------UPD name@@param_count @TO@ arg_count @AT@ 2916 @LENGTH@ 11\n" +
+ "------UPD expr_stmt@@param_count -- @TO@ arg_count -- @AT@ 2983 @LENGTH@ 14\n" +
+ "---------UPD expr@@param_count -- @TO@ arg_count -- @AT@ 2983 @LENGTH@ 14\n" +
+ "------------UPD name@@param_count @TO@ arg_count @AT@ 2983 @LENGTH@ 11\n");
+ Assert.assertEquals(hierarchicalActionSets.get(2).toString(),"UPD while@@while param_count > 0 param = va_arg ptr zval * * * * param = ( zval * * ) p - ( param_count -- ) @TO@ while param_count -- > 0 param = va_arg ptr zval * * * * param = ( zval * * ) p - ( arg_count -- ) @AT@ 3408 @LENGTH@ 97\n" +
+ "---UPD condition@@param_count > 0 @TO@ param_count -- > 0 @AT@ 3408 @LENGTH@ 15\n" +
+ "------UPD expr@@param_count > 0 @TO@ param_count -- > 0 @AT@ 3409 @LENGTH@ 15\n" +
+ "---------INS operator@@-- @TO@ expr@@param_count > 0 @AT@ 3410 @LENGTH@ 2\n" +
+ "---UPD block@@param = va_arg ptr zval * * * * param = ( zval * * ) p - ( param_count -- ) @TO@ param = va_arg ptr zval * * * * param = ( zval * * ) p - ( arg_count -- ) @AT@ 3424 @LENGTH@ 75\n" +
+ "------UPD expr_stmt@@* param = ( zval * * ) p - ( param_count -- ) @TO@ * param = ( zval * * ) p - ( arg_count -- ) @AT@ 3461 @LENGTH@ 45\n" +
+ "---------UPD expr@@* param = ( zval * * ) p - ( param_count -- ) @TO@ * param = ( zval * * ) p - ( arg_count -- ) @AT@ 3461 @LENGTH@ 45\n" +
+ "------------UPD name@@param_count @TO@ arg_count @AT@ 3483 @LENGTH@ 11\n");
+ Assert.assertEquals(hierarchicalActionSets.get(3).toString(),"UPD while@@while param_count > 0 * ( argument_array ++ ) = ( zval * * ) p - ( param_count -- ) @TO@ while param_count -- > 0 * ( argument_array ++ ) = ( zval * * ) p - ( arg_count -- ) @AT@ 3789 @LENGTH@ 83\n" +
+ "---UPD condition@@param_count > 0 @TO@ param_count -- > 0 @AT@ 3789 @LENGTH@ 15\n" +
+ "------UPD expr@@param_count > 0 @TO@ param_count -- > 0 @AT@ 3790 @LENGTH@ 15\n" +
+ "---------INS operator@@-- @TO@ expr@@param_count > 0 @AT@ 3791 @LENGTH@ 2\n" +
+ "---UPD block@@* ( argument_array ++ ) = ( zval * * ) p - ( param_count -- ) @TO@ * ( argument_array ++ ) = ( zval * * ) p - ( arg_count -- ) @AT@ 3805 @LENGTH@ 61\n" +
+ "------UPD expr_stmt@@* ( argument_array ++ ) = ( zval * * ) p - ( param_count -- ) @TO@ * ( argument_array ++ ) = ( zval * * ) p - ( arg_count -- ) @AT@ 3809 @LENGTH@ 61\n" +
+ "---------UPD expr@@* ( argument_array ++ ) = ( zval * * ) p - ( param_count -- ) @TO@ * ( argument_array ++ ) = ( zval * * ) p - ( arg_count -- ) @AT@ 3809 @LENGTH@ 61\n" +
+ "------------UPD name@@param_count @TO@ arg_count @AT@ 3844 @LENGTH@ 11\n");
+ }
+ @Test
+ public void test_wireshark_2cc860_12fddb() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_2cc860_12fddb_packet-rtps.c");//ok
+ Assert.assertEquals(hierarchicalActionSets.size(),4);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@param_length -= 4 @TO@ block@@char * ip_string ip_string = IP_to_string offset tvb little_endian buff_tmp proto_item_append_text ti \"%c %s\" sep ip_string proto_tree_add_text rtps_parameter_tree tvb offset param_length \"Address[%d]: %s\" i ip_string ++ i offset += 4 sep = ',' @AT@ 43110 @LENGTH@ 17\n" +
+ "---INS expr@@param_length -= 4 @TO@ expr_stmt@@param_length -= 4 @AT@ 43110 @LENGTH@ 17\n" +
+ "------INS name@@param_length @TO@ expr@@param_length -= 4 @AT@ 43110 @LENGTH@ 12\n" +
+ "------INS operator@@-= @TO@ expr@@param_length -= 4 @AT@ 43123 @LENGTH@ 2\n" +
+ "------INS literal:number@@4 @TO@ expr@@param_length -= 4 @AT@ 43126 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"INS expr_stmt@@param_length -= 4 @TO@ block@@char * ip_string ip_string = IP_to_string offset tvb little_endian buff_tmp proto_item_append_text ti \"%c %s\" sep ip_string proto_tree_add_text rtps_parameter_tree tvb offset param_length \"Address[%d]: %s\" i ip_string ++ i offset += 4 sep = ',' @AT@ 43696 @LENGTH@ 17\n" +
+ "---INS expr@@param_length -= 4 @TO@ expr_stmt@@param_length -= 4 @AT@ 43696 @LENGTH@ 17\n" +
+ "------INS name@@param_length @TO@ expr@@param_length -= 4 @AT@ 43696 @LENGTH@ 12\n" +
+ "------INS operator@@-= @TO@ expr@@param_length -= 4 @AT@ 43709 @LENGTH@ 2\n" +
+ "------INS literal:number@@4 @TO@ expr@@param_length -= 4 @AT@ 43712 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(2).toString(),"INS expr_stmt@@param_length -= 4 @TO@ block@@char * ip_string ip_string = IP_to_string offset tvb little_endian buff_tmp proto_item_append_text ti \"%c %s\" sep ip_string proto_tree_add_text rtps_parameter_tree tvb offset param_length \"Address[%d]: %s\" i ip_string ++ i offset += 4 @AT@ 46139 @LENGTH@ 17\n" +
+ "---INS expr@@param_length -= 4 @TO@ expr_stmt@@param_length -= 4 @AT@ 46139 @LENGTH@ 17\n" +
+ "------INS name@@param_length @TO@ expr@@param_length -= 4 @AT@ 46139 @LENGTH@ 12\n" +
+ "------INS operator@@-= @TO@ expr@@param_length -= 4 @AT@ 46152 @LENGTH@ 2\n" +
+ "------INS literal:number@@4 @TO@ expr@@param_length -= 4 @AT@ 46155 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(3).toString(),"INS expr_stmt@@param_length -= 4 @TO@ block@@guint32 manager_key manager_key = get_guint32 tvb offset little_endian proto_item_append_text ti \"%c 0x%X\" sep manager_key proto_tree_add_text rtps_parameter_tree tvb offset param_length \"Key[%d]: 0x%X\" i manager_key ++ i offset += 4 sep = ',' @AT@ 46723 @LENGTH@ 17\n" +
+ "---INS expr@@param_length -= 4 @TO@ expr_stmt@@param_length -= 4 @AT@ 46723 @LENGTH@ 17\n" +
+ "------INS name@@param_length @TO@ expr@@param_length -= 4 @AT@ 46723 @LENGTH@ 12\n" +
+ "------INS operator@@-= @TO@ expr@@param_length -= 4 @AT@ 46736 @LENGTH@ 2\n" +
+ "------INS literal:number@@4 @TO@ expr@@param_length -= 4 @AT@ 46739 @LENGTH@ 1\n");
+ }
+ @Test
+ public void test_wireshark_3f2283_9e184d() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_3f2283_9e184d_epan#dissectors#packet-bacapp.c");//ok
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"DEL return@@return offset @AT@ 79332 @LENGTH@ 13\n" +
+ "---DEL expr@@offset @AT@ 79339 @LENGTH@ 6\n" +
+ "------DEL name@@offset @AT@ 79339 @LENGTH@ 6\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"DEL return@@return offset @AT@ 84806 @LENGTH@ 13\n" +
+ "---DEL expr@@offset @AT@ 84813 @LENGTH@ 6\n" +
+ "------DEL name@@offset @AT@ 84813 @LENGTH@ 6\n");
+ }
+ @Test
+ public void test_wireshark_1a76dd_1d1a48() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_1a76dd_1d1a48_epan#dissectors#packet-ua3g.c");//removeParentForSingle??
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_NA @AT@ 62819 @LENGTH@ 129\n" +
+ "---UPD expr@@proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_NA @AT@ 62819 @LENGTH@ 129\n" +
+ "------UPD call@@proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_NA @AT@ 62819 @LENGTH@ 129\n" +
+ "---------UPD argument_list@@ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ ua3g_param_tree hf_ua3g_ip_device_routing_redirect_parameter_value tvb offset parameter_length ENC_NA @AT@ 62838 @LENGTH@ 109\n" +
+ "------------UPD argument@@ENC_BIG_ENDIAN @TO@ ENC_NA @AT@ 62939 @LENGTH@ 14\n" +
+ "---------------UPD expr@@ENC_BIG_ENDIAN @TO@ ENC_NA @AT@ 62939 @LENGTH@ 14\n" +
+ "------------------UPD name@@ENC_BIG_ENDIAN @TO@ ENC_NA @AT@ 62939 @LENGTH@ 14\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD expr_stmt@@proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_NA @AT@ 77911 @LENGTH@ 142\n" +
+ "---UPD expr@@proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_NA @AT@ 77911 @LENGTH@ 142\n" +
+ "------UPD call@@proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ proto_tree_add_item ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_NA @AT@ 77911 @LENGTH@ 142\n" +
+ "---------UPD argument_list@@ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_BIG_ENDIAN @TO@ ua3g_param_tree hf_ua3g_ip_device_routing_start_stop_record_rtp_parameter_value tvb offset parameter_length ENC_NA @AT@ 77930 @LENGTH@ 122\n" +
+ "------------UPD argument@@ENC_BIG_ENDIAN @TO@ ENC_NA @AT@ 78044 @LENGTH@ 14\n" +
+ "---------------UPD expr@@ENC_BIG_ENDIAN @TO@ ENC_NA @AT@ 78044 @LENGTH@ 14\n" +
+ "------------------UPD name@@ENC_BIG_ENDIAN @TO@ ENC_NA @AT@ 78044 @LENGTH@ 14\n");
+ }
+ @Test
+ public void test_wireshark_bb4516_9597f6() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_bb4516_9597f6_epan#sigcomp-udvm.c");//removeParentForSingle?? and others maybe
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS if@@if k + handle_now >= UDVM_MEMORY_SIZE THROW ReportedBoundsError @TO@ block@@guint16 handle_now length if k < byte_copy_right && byte_copy_right <= k + ( length - n ) handle_now = byte_copy_right - position sha1_update & ctx & buff ][k handle_now k = ( k + handle_now ) & 0xffff n = ( n + handle_now ) & 0xffff if k >= byte_copy_right k = byte_copy_left @AT@ 30752 @LENGTH@ 63\n" +
+ "---INS condition@@k + handle_now >= UDVM_MEMORY_SIZE @TO@ if@@if k + handle_now >= UDVM_MEMORY_SIZE THROW ReportedBoundsError @AT@ 30752 @LENGTH@ 34\n" +
+ "------INS expr@@k + handle_now >= UDVM_MEMORY_SIZE @TO@ condition@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 30753 @LENGTH@ 34\n" +
+ "---------INS name@@k @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 30753 @LENGTH@ 1\n" +
+ "---------INS operator@@+ @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 30755 @LENGTH@ 1\n" +
+ "---------INS name@@handle_now @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 30757 @LENGTH@ 10\n" +
+ "---------INS operator@@>= @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 30768 @LENGTH@ 2\n" +
+ "---------INS name@@UDVM_MEMORY_SIZE @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 30771 @LENGTH@ 16\n" +
+ "---INS then@@THROW ReportedBoundsError @TO@ if@@if k + handle_now >= UDVM_MEMORY_SIZE THROW ReportedBoundsError @AT@ 30793 @LENGTH@ 25\n" +
+ "------INS block@@THROW ReportedBoundsError @TO@ then@@THROW ReportedBoundsError @AT@ 30793 @LENGTH@ 25\n" +
+ "---------INS expr_stmt@@THROW ReportedBoundsError @TO@ block@@THROW ReportedBoundsError @AT@ 30793 @LENGTH@ 25\n" +
+ "------------INS expr@@THROW ReportedBoundsError @TO@ expr_stmt@@THROW ReportedBoundsError @AT@ 30793 @LENGTH@ 25\n" +
+ "---------------INS call@@THROW ReportedBoundsError @TO@ expr@@THROW ReportedBoundsError @AT@ 30793 @LENGTH@ 25\n" +
+ "------------------INS name@@THROW @TO@ call@@THROW ReportedBoundsError @AT@ 30793 @LENGTH@ 5\n" +
+ "------------------INS argument_list@@ReportedBoundsError @TO@ call@@THROW ReportedBoundsError @AT@ 30798 @LENGTH@ 19\n" +
+ "---------------------INS argument@@ReportedBoundsError @TO@ argument_list@@ReportedBoundsError @AT@ 30799 @LENGTH@ 19\n" +
+ "------------------------INS expr@@ReportedBoundsError @TO@ argument@@ReportedBoundsError @AT@ 30799 @LENGTH@ 19\n" +
+ "---------------------------INS name@@ReportedBoundsError @TO@ expr@@ReportedBoundsError @AT@ 30799 @LENGTH@ 19\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"INS if@@if k + handle_now >= UDVM_MEMORY_SIZE THROW ReportedBoundsError @TO@ block@@guint16 handle_now length - n if k < byte_copy_right && byte_copy_right <= k + ( length - n ) handle_now = byte_copy_right - k result = crc16_ccitt_seed & buff ][k handle_now result ^ 0xffff k = ( k + handle_now ) & 0xffff n = ( n + handle_now ) & 0xffff if k >= byte_copy_right k = byte_copy_left @AT@ 61659 @LENGTH@ 63\n" +
+ "---INS condition@@k + handle_now >= UDVM_MEMORY_SIZE @TO@ if@@if k + handle_now >= UDVM_MEMORY_SIZE THROW ReportedBoundsError @AT@ 61659 @LENGTH@ 34\n" +
+ "------INS expr@@k + handle_now >= UDVM_MEMORY_SIZE @TO@ condition@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 61660 @LENGTH@ 34\n" +
+ "---------INS name@@k @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 61660 @LENGTH@ 1\n" +
+ "---------INS operator@@+ @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 61662 @LENGTH@ 1\n" +
+ "---------INS name@@handle_now @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 61664 @LENGTH@ 10\n" +
+ "---------INS operator@@>= @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 61675 @LENGTH@ 2\n" +
+ "---------INS name@@UDVM_MEMORY_SIZE @TO@ expr@@k + handle_now >= UDVM_MEMORY_SIZE @AT@ 61678 @LENGTH@ 16\n" +
+ "---INS then@@THROW ReportedBoundsError @TO@ if@@if k + handle_now >= UDVM_MEMORY_SIZE THROW ReportedBoundsError @AT@ 61700 @LENGTH@ 25\n" +
+ "------INS block@@THROW ReportedBoundsError @TO@ then@@THROW ReportedBoundsError @AT@ 61700 @LENGTH@ 25\n" +
+ "---------INS expr_stmt@@THROW ReportedBoundsError @TO@ block@@THROW ReportedBoundsError @AT@ 61700 @LENGTH@ 25\n" +
+ "------------INS expr@@THROW ReportedBoundsError @TO@ expr_stmt@@THROW ReportedBoundsError @AT@ 61700 @LENGTH@ 25\n" +
+ "---------------INS call@@THROW ReportedBoundsError @TO@ expr@@THROW ReportedBoundsError @AT@ 61700 @LENGTH@ 25\n" +
+ "------------------INS name@@THROW @TO@ call@@THROW ReportedBoundsError @AT@ 61700 @LENGTH@ 5\n" +
+ "------------------INS argument_list@@ReportedBoundsError @TO@ call@@THROW ReportedBoundsError @AT@ 61705 @LENGTH@ 19\n" +
+ "---------------------INS argument@@ReportedBoundsError @TO@ argument_list@@ReportedBoundsError @AT@ 61706 @LENGTH@ 19\n" +
+ "------------------------INS expr@@ReportedBoundsError @TO@ argument@@ReportedBoundsError @AT@ 61706 @LENGTH@ 19\n" +
+ "---------------------------INS name@@ReportedBoundsError @TO@ expr@@ReportedBoundsError @AT@ 61706 @LENGTH@ 19\n");
+ }
+ @Test
+ public void test_php_src_a347ed_d2b435() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_a347ed_d2b435_ext#ereg#ereg.c");//removeParentForSingle?? and others maybe
+ Assert.fail(); //todo wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 else new_l ++ walk ++ @TO@ if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 else new_l ++ walk ++ @AT@ 8933 @LENGTH@ 236\n" +
+ "---UPD condition@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @TO@ '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 8933 @LENGTH@ 130\n" +
+ "------UPD expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @TO@ '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 8934 @LENGTH@ 130\n" +
+ "---------INS name@@walk ][1 @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 8997 @LENGTH@ 8\n" +
+ "------------INS name@@walk @TO@ name@@walk ][1 @AT@ 8997 @LENGTH@ 4\n" +
+ "------------INS index@@][1 @TO@ name@@walk ][1 @AT@ 9002 @LENGTH@ 3\n" +
+ "---------------INS expr@@[1 @TO@ index@@][1 @AT@ 9002 @LENGTH@ 2\n" +
+ "------------------INS literal:number@@[1 @TO@ expr@@[1 @AT@ 9002 @LENGTH@ 2\n" +
+ "---------INS operator@@- @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9005 @LENGTH@ 1\n" +
+ "---------INS literal:char@@'0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9007 @LENGTH@ 3\n" +
+ "---------INS operator@@<= @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9011 @LENGTH@ 2\n" +
+ "---------INS name@@re . re_nsub @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9014 @LENGTH@ 12\n" +
+ "------------INS name@@re @TO@ name@@re . re_nsub @AT@ 9014 @LENGTH@ 2\n" +
+ "------------INS operator@@. @TO@ name@@re . re_nsub @AT@ 9016 @LENGTH@ 1\n" +
+ "------------INS name@@re_nsub @TO@ name@@re . re_nsub @AT@ 9017 @LENGTH@ 7\n" +
+ "---------DEL operator@@. @AT@ 9016 @LENGTH@ 1\n" +
+ "---------INS operator@@&& @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9030 @LENGTH@ 2\n" +
+ "---------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9036 @LENGTH@ 21\n" +
+ "---------INS operator@@. @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9052 @LENGTH@ 1\n" +
+ "---------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9675 @LENGTH@ 21\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 else * walkbuf ++ = * walk ++ @TO@ if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 else * walkbuf ++ = * walk ++ @AT@ 9611 @LENGTH@ 388\n" +
+ "---UPD condition@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @TO@ '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9611 @LENGTH@ 196\n" +
+ "------UPD expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @TO@ '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9612 @LENGTH@ 196\n" +
+ "---------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 8997 @LENGTH@ 21\n" +
+ "---------MOV name@@[walk ][1 @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9680 @LENGTH@ 9\n" +
+ "---------MOV operator@@- @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9688 @LENGTH@ 1\n" +
+ "---------MOV literal:char@@'0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9690 @LENGTH@ 3\n" +
+ "---------DEL operator@@. @AT@ 9694 @LENGTH@ 1\n" +
+ "---------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9714 @LENGTH@ 21\n" +
+ "---------INS operator@@<= @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9725 @LENGTH@ 2\n" +
+ "---------INS name@@re . re_nsub @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9728 @LENGTH@ 12\n" +
+ "------------INS name@@re @TO@ name@@re . re_nsub @AT@ 9728 @LENGTH@ 2\n" +
+ "------------INS operator@@. @TO@ name@@re . re_nsub @AT@ 9730 @LENGTH@ 1\n" +
+ "------------INS name@@re_nsub @TO@ name@@re . re_nsub @AT@ 9731 @LENGTH@ 7\n" +
+ "---------INS operator@@&& @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9744 @LENGTH@ 2\n" +
+ "---------INS operator@@. @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9766 @LENGTH@ 1\n" +
+ "---------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9806 @LENGTH@ 21\n" +
+ "---------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9835 @LENGTH@ 21\n");
+ }
+ @Test//TODO
+ public void test_php_src_f91b3d_5f1bff() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_f91b3d_5f1bff_ext#ereg#ereg.c");//removeParentForSingle?? and others maybe
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 else new_l ++ walk ++ @TO@ if '\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 else new_l ++ walk ++ @AT@ 8933 @LENGTH@ 283\n" +
+ "---DEL condition@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 8933 @LENGTH@ 177\n" +
+ "------DEL expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 8934 @LENGTH@ 177\n" +
+ "---------DEL literal@@'0' @AT@ 8956 @LENGTH@ 3\n" +
+ "---------DEL operator@@<= @AT@ 8960 @LENGTH@ 2\n" +
+ "---------DEL operator@@&& @AT@ 8971 @LENGTH@ 2\n" +
+ "---------DEL literal@@'9' @AT@ 8974 @LENGTH@ 3\n" +
+ "---------DEL operator@@>= @AT@ 8978 @LENGTH@ 2\n" +
+ "---------DEL operator@@&& @AT@ 8994 @LENGTH@ 2\n" +
+ "---------DEL name@@walk ][1 @AT@ 8997 @LENGTH@ 8\n" +
+ "------------DEL name@@walk @AT@ 8997 @LENGTH@ 4\n" +
+ "------------DEL index@@][1 @AT@ 9002 @LENGTH@ 3\n" +
+ "---------------DEL expr@@[1 @AT@ 9002 @LENGTH@ 2\n" +
+ "------------------DEL literal@@[1 @AT@ 9002 @LENGTH@ 2\n" +
+ "---INS condition@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @TO@ if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 else new_l ++ walk ++ @AT@ 8952 @LENGTH@ 81\n" +
+ "------INS expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @TO@ condition@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8953 @LENGTH@ 81\n" +
+ "---------MOV literal@@'\\\\' @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8934 @LENGTH@ 4\n" +
+ "---------MOV operator@@== @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8939 @LENGTH@ 2\n" +
+ "---------MOV operator@@* @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8942 @LENGTH@ 1\n" +
+ "---------MOV name@@walk @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8943 @LENGTH@ 4\n" +
+ "---------MOV operator@@&& @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8953 @LENGTH@ 2\n" +
+ "---------MOV name@@walk ][1 @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8963 @LENGTH@ 8\n" +
+ "---------INS call@@isdigit walk ][1 @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8970 @LENGTH@ 16\n" +
+ "------------INS name@@isdigit @TO@ call@@isdigit walk ][1 @AT@ 8970 @LENGTH@ 7\n" +
+ "------------INS argument_list@@walk ][1 @TO@ call@@isdigit walk ][1 @AT@ 8977 @LENGTH@ 8\n" +
+ "---------------INS argument@@walk ][1 @TO@ argument_list@@walk ][1 @AT@ 8978 @LENGTH@ 8\n" +
+ "------------------INS expr@@walk ][1 @TO@ argument@@walk ][1 @AT@ 8978 @LENGTH@ 8\n" +
+ "---------------------MOV name@@walk ][1 @TO@ expr@@walk ][1 @AT@ 8981 @LENGTH@ 8\n" +
+ "---------INS operator@@&& @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 8987 @LENGTH@ 2\n" +
+ "---------MOV operator@@- @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9005 @LENGTH@ 1\n" +
+ "---------MOV literal@@'0' @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9007 @LENGTH@ 3\n" +
+ "---------MOV operator@@<= @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9011 @LENGTH@ 2\n" +
+ "---------MOV operator@@( @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9014 @LENGTH@ 1\n" +
+ "---------MOV operator@@( @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9015 @LENGTH@ 1\n" +
+ "---------MOV name@@char @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9016 @LENGTH@ 4\n" +
+ "---------MOV operator@@) @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9020 @LENGTH@ 1\n" +
+ "---------MOV name@@re . re_nsub @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9022 @LENGTH@ 12\n" +
+ "---------MOV operator@@) @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) @AT@ 9032 @LENGTH@ 1\n" +
+ "---INS then@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @TO@ if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= ( ( char ) re . re_nsub ) && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 else new_l ++ walk ++ @AT@ 9028 @LENGTH@ 158\n" +
+ "------INS block@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @TO@ then@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @AT@ 9028 @LENGTH@ 158\n" +
+ "---------INS if@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so @TO@ block@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @AT@ 9038 @LENGTH@ 148\n" +
+ "------------INS condition@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @TO@ if@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so @AT@ 9038 @LENGTH@ 74\n" +
+ "---------------INS expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @TO@ condition@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9039 @LENGTH@ 74\n" +
+ "------------------MOV operator@@. @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9061 @LENGTH@ 1\n" +
+ "------------------MOV name@@rm_so @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9062 @LENGTH@ 5\n" +
+ "------------------MOV operator@@> @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9068 @LENGTH@ 1\n" +
+ "------------------MOV operator@@- @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9070 @LENGTH@ 1\n" +
+ "------------------MOV literal@@1 @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9071 @LENGTH@ 1\n" +
+ "------------------MOV operator@@&& @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9078 @LENGTH@ 2\n" +
+ "------------------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9081 @LENGTH@ 21\n" +
+ "------------------MOV operator@@. @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9100 @LENGTH@ 1\n" +
+ "------------------MOV name@@rm_eo @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9101 @LENGTH@ 5\n" +
+ "------------------MOV operator@@> @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9107 @LENGTH@ 1\n" +
+ "------------------MOV operator@@- @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9109 @LENGTH@ 1\n" +
+ "------------------MOV literal@@1 @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9110 @LENGTH@ 1\n" +
+ "------------------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 @AT@ 9916 @LENGTH@ 21\n" +
+ "------------MOV then@@new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @TO@ if@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so @AT@ 9113 @LENGTH@ 80\n" +
+ "---------MOV expr_stmt@@walk += 2 @TO@ block@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @AT@ 9195 @LENGTH@ 9\n" +
+ "---UPD then@@new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @TO@ new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so @AT@ 9113 @LENGTH@ 80\n" +
+ "------UPD block@@new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so walk += 2 @TO@ new_l += subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so @AT@ 9113 @LENGTH@ 80\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 else * walkbuf ++ = * walk ++ @TO@ if '\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 else * walkbuf ++ = * walk ++ @AT@ 9656 @LENGTH@ 424\n" +
+ "---INS condition@@ '\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @TO@ if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 else * walkbuf ++ = * walk ++ @AT@ 9654 @LENGTH@ 67\n" +
+ "------INS expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @TO@ condition@@ '\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9655 @LENGTH@ 69\n" +
+ "---------MOV literal@@'\\\\' @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9657 @LENGTH@ 4\n" +
+ "---------MOV operator@@== @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9662 @LENGTH@ 2\n" +
+ "---------MOV operator@@* @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9665 @LENGTH@ 1\n" +
+ "---------MOV name@@walk @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9666 @LENGTH@ 4\n" +
+ "---------INS call@@isdigit walk ][1 @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9672 @LENGTH@ 17\n" +
+ "------------INS name@@isdigit @TO@ call@@isdigit walk ][1 @AT@ 9672 @LENGTH@ 7\n" +
+ "------------INS argument_list@@ walk ][1 @TO@ call@@isdigit walk ][1 @AT@ 9679 @LENGTH@ 10\n" +
+ "---------------INS argument@@walk ][1 @TO@ argument_list@@ walk ][1 @AT@ 9680 @LENGTH@ 8\n" +
+ "------------------INS expr@@walk ][1 @TO@ argument@@walk ][1 @AT@ 9680 @LENGTH@ 8\n" +
+ "---------------------MOV name@@walk ][1 @TO@ expr@@walk ][1 @AT@ 9704 @LENGTH@ 8\n" +
+ "---------MOV operator@@&& @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9676 @LENGTH@ 2\n" +
+ "---------MOV name@@walk ][1 @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9686 @LENGTH@ 8\n" +
+ "---------INS operator@@&& @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9689 @LENGTH@ 2\n" +
+ "---------MOV operator@@- @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9728 @LENGTH@ 1\n" +
+ "---------MOV literal@@'0' @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9730 @LENGTH@ 3\n" +
+ "---------MOV operator@@<= @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9734 @LENGTH@ 2\n" +
+ "---------MOV name@@re . re_nsub @TO@ expr@@'\\\\' == * walk && isdigit walk ][1 && walk ][1 - '0' <= re . re_nsub @AT@ 9737 @LENGTH@ 12\n" +
+ "---DEL condition@@ '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9656 @LENGTH@ 287\n" +
+ "------DEL expr@@'\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9657 @LENGTH@ 230\n" +
+ "---------DEL literal@@'0' @AT@ 9679 @LENGTH@ 3\n" +
+ "---------DEL operator@@<= @AT@ 9683 @LENGTH@ 2\n" +
+ "---------DEL operator@@&& @AT@ 9694 @LENGTH@ 2\n" +
+ "---------DEL literal@@'9' @AT@ 9697 @LENGTH@ 3\n" +
+ "---------DEL operator@@>= @AT@ 9701 @LENGTH@ 2\n" +
+ "---------DEL operator@@&& @AT@ 9717 @LENGTH@ 2\n" +
+ "---------DEL name@@walk ][1 @AT@ 9720 @LENGTH@ 8\n" +
+ "------------DEL name@@walk @AT@ 9720 @LENGTH@ 4\n" +
+ "------------DEL index@@][1 @AT@ 9725 @LENGTH@ 3\n" +
+ "---------------DEL expr@@[1 @AT@ 9725 @LENGTH@ 2\n" +
+ "------------------DEL literal@@[1 @AT@ 9725 @LENGTH@ 2\n" +
+ "---------DEL operator@@&& @AT@ 9753 @LENGTH@ 2\n" +
+ "---INS then@@ if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @TO@ if@@if '\\\\' == * walk && '0' <= walk ][1 && '9' >= walk ][1 && walk ][1 - '0' <= re . re_nsub && subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 else * walkbuf ++ = * walk ++ @AT@ 9721 @LENGTH@ 305\n" +
+ "------INS block@@ if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @TO@ then@@ if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @AT@ 9721 @LENGTH@ 393\n" +
+ "---------INS if@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp @TO@ block@@ if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @AT@ 9731 @LENGTH@ 294\n" +
+ "------------INS condition@@ subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @TO@ if@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp @AT@ 9731 @LENGTH@ 185\n" +
+ "---------------INS expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @TO@ condition@@ subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9732 @LENGTH@ 140\n" +
+ "------------------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9042 @LENGTH@ 21\n" +
+ "------------------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9756 @LENGTH@ 21\n" +
+ "------------------MOV operator@@. @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9775 @LENGTH@ 1\n" +
+ "------------------MOV name@@rm_so @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9776 @LENGTH@ 5\n" +
+ "------------------MOV operator@@> @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9782 @LENGTH@ 1\n" +
+ "------------------MOV operator@@- @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9784 @LENGTH@ 1\n" +
+ "------------------MOV literal@@1 @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9785 @LENGTH@ 1\n" +
+ "------------------MOV operator@@&& @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9792 @LENGTH@ 2\n" +
+ "------------------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9795 @LENGTH@ 21\n" +
+ "------------------MOV operator@@. @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9814 @LENGTH@ 1\n" +
+ "------------------MOV name@@rm_eo @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9815 @LENGTH@ 5\n" +
+ "------------------MOV operator@@> @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9821 @LENGTH@ 1\n" +
+ "------------------MOV operator@@- @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9823 @LENGTH@ 1\n" +
+ "------------------MOV literal@@1 @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9824 @LENGTH@ 1\n" +
+ "------------------MOV operator@@&& @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9884 @LENGTH@ 2\n" +
+ "------------------MOV name@@subs ][walk ][1 - '0' @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9887 @LENGTH@ 21\n" +
+ "------------------MOV operator@@. @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9906 @LENGTH@ 1\n" +
+ "------------------MOV name@@rm_so @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9907 @LENGTH@ 5\n" +
+ "------------------MOV operator@@<= @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9913 @LENGTH@ 2\n" +
+ "------------------MOV operator@@. @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9935 @LENGTH@ 1\n" +
+ "------------------MOV name@@rm_eo @TO@ expr@@subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo @AT@ 9936 @LENGTH@ 5\n" +
+ "------------MOV then@@ tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @TO@ if@@if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp @AT@ 9943 @LENGTH@ 160\n" +
+ "---------MOV expr_stmt@@walk += 2 @TO@ block@@ if subs ][walk ][1 - '0' . rm_so > - 1 && subs ][walk ][1 - '0' . rm_eo > - 1 && subs ][walk ][1 - '0' . rm_so <= subs ][walk ][1 - '0' . rm_eo tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @AT@ 10127 @LENGTH@ 9\n" +
+ "---UPD then@@ tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @TO@ tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp @AT@ 9943 @LENGTH@ 160\n" +
+ "------UPD block@@ tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp walk += 2 @TO@ tmp = subs ][walk ][1 - '0' . rm_eo - subs ][walk ][1 - '0' . rm_so memcpy walkbuf & string ][pos + subs ][walk ][1 - '0' . rm_so tmp walkbuf += tmp @AT@ 9943 @LENGTH@ 201\n" +
+ "---UPD else@@else * walkbuf ++ = * walk ++ @TO@ else * walkbuf ++ = * walk ++ @AT@ 10154 @LENGTH@ 29\n" +
+ "------UPD block@@* walkbuf ++ = * walk ++ @TO@ * walkbuf ++ = * walk ++ @AT@ 10154 @LENGTH@ 24\n");
+ }
+ @Test
+ public void test_wireshark_606866_c79cf4() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_606866_c79cf4_epan#dissectors#packet-atalk.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),3);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 1 i <= count i ++ len = tvb_get_guint8 tvb offset proto_tree_add_item sub_tree hf_zip_zone_name tvb offset 1 FALSE offset += len + 1 @TO@ for i = 0 i < count i ++ len = tvb_get_guint8 tvb offset proto_tree_add_item sub_tree hf_zip_zone_name tvb offset 1 FALSE offset += len + 1 @AT@ 47203 @LENGTH@ 140\n" +
+ "---UPD control@@i = 1 i <= count i ++ @TO@ i = 0 i < count i ++ @AT@ 47203 @LENGTH@ 21\n" +
+ "------UPD init@@i = 1 @TO@ i = 0 @AT@ 47204 @LENGTH@ 5\n" +
+ "---------UPD expr@@i = 1 @TO@ i = 0 @AT@ 47204 @LENGTH@ 5\n" +
+ "------------UPD literal:number@@1 @TO@ 0 @AT@ 47207 @LENGTH@ 1\n" +
+ "------UPD condition@@i <= count @TO@ i < count @AT@ 47210 @LENGTH@ 10\n" +
+ "---------UPD expr@@i <= count @TO@ i < count @AT@ 47210 @LENGTH@ 10\n" +
+ "------------UPD operator@@<= @TO@ < @AT@ 47212 @LENGTH@ 2\n");
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 1 i <= count i ++ len = tvb_get_guint8 tvb offset proto_tree_add_item sub_tree hf_zip_zone_name tvb offset 1 FALSE offset += len + 1 @TO@ for i = 0 i < count i ++ len = tvb_get_guint8 tvb offset proto_tree_add_item sub_tree hf_zip_zone_name tvb offset 1 FALSE offset += len + 1 @AT@ 47203 @LENGTH@ 140\n" +
+ "---UPD control@@i = 1 i <= count i ++ @TO@ i = 0 i < count i ++ @AT@ 47203 @LENGTH@ 21\n" +
+ "------UPD init@@i = 1 @TO@ i = 0 @AT@ 47204 @LENGTH@ 5\n" +
+ "---------UPD expr@@i = 1 @TO@ i = 0 @AT@ 47204 @LENGTH@ 5\n" +
+ "------------UPD literal:number@@1 @TO@ 0 @AT@ 47207 @LENGTH@ 1\n" +
+ "------UPD condition@@i <= count @TO@ i < count @AT@ 47210 @LENGTH@ 10\n" +
+ "---------UPD expr@@i <= count @TO@ i < count @AT@ 47210 @LENGTH@ 10\n" +
+ "------------UPD operator@@<= @TO@ < @AT@ 47212 @LENGTH@ 2\n");
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 1 i <= count i ++ len = tvb_get_guint8 tvb offset proto_tree_add_item sub_tree hf_zip_zone_name tvb offset 1 FALSE offset += len + 1 @TO@ for i = 0 i < count i ++ len = tvb_get_guint8 tvb offset proto_tree_add_item sub_tree hf_zip_zone_name tvb offset 1 FALSE offset += len + 1 @AT@ 47203 @LENGTH@ 140\n" +
+ "---UPD control@@i = 1 i <= count i ++ @TO@ i = 0 i < count i ++ @AT@ 47203 @LENGTH@ 21\n" +
+ "------UPD init@@i = 1 @TO@ i = 0 @AT@ 47204 @LENGTH@ 5\n" +
+ "---------UPD expr@@i = 1 @TO@ i = 0 @AT@ 47204 @LENGTH@ 5\n" +
+ "------------UPD literal:number@@1 @TO@ 0 @AT@ 47207 @LENGTH@ 1\n" +
+ "------UPD condition@@i <= count @TO@ i < count @AT@ 47210 @LENGTH@ 10\n" +
+ "---------UPD expr@@i <= count @TO@ i < count @AT@ 47210 @LENGTH@ 10\n" +
+ "------------UPD operator@@<= @TO@ < @AT@ 47212 @LENGTH@ 2\n");
+ }
+ @Test
+ public void test_php_src_72da689_cba426() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_72da689_cba426_ext#dom#document.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid Schema file source\" RETURN_FALSE parser = xmlSchemaNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlSchemaNewMemParserCtxt source source_len break; @TO@ DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid Schema file source\" RETURN_FALSE parser = xmlSchemaNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlSchemaNewMemParserCtxt source source_len break; default: @AT@ 38060 @LENGTH@ 298\n" +
+ "---INS default@@default: @TO@ block@@DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid Schema file source\" RETURN_FALSE parser = xmlSchemaNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlSchemaNewMemParserCtxt source source_len break; @AT@ 38554 @LENGTH@ 8\n" +
+ "---INS return@@ @TO@ block@@DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid Schema file source\" RETURN_FALSE parser = xmlSchemaNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlSchemaNewMemParserCtxt source source_len break; @AT@ 38565 @LENGTH@ 0\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD block@@DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid RelaxNG file source\" RETURN_FALSE parser = xmlRelaxNGNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlRelaxNGNewMemParserCtxt source source_len break; @TO@ DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid RelaxNG file source\" RETURN_FALSE parser = xmlRelaxNGNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlRelaxNGNewMemParserCtxt source source_len break; default: @AT@ 40374 @LENGTH@ 301\n" +
+ "---INS default@@default: @TO@ block@@DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid RelaxNG file source\" RETURN_FALSE parser = xmlRelaxNGNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlRelaxNGNewMemParserCtxt source source_len break; @AT@ 40891 @LENGTH@ 8\n" +
+ "---INS return@@ @TO@ block@@DOM_LOAD_FILE valid_file = _dom_get_valid_file_path source resolved_path MAXPATHLEN TSRMLS_CC if ! valid_file php_error E_WARNING \"Invalid RelaxNG file source\" RETURN_FALSE parser = xmlRelaxNGNewParserCtxt valid_file break; DOM_LOAD_STRING parser = xmlRelaxNGNewMemParserCtxt source source_len break; @AT@ 40902 @LENGTH@ 0\n");
+ }
+ @Test
+ public void test_php_src_81f05c1_b1d8f1() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_81f05c1_b1d8f1_ext#mysqli#mysqli_nonapi.c");//can write test
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD decl_stmt@@unsigned int port 0 @TO@ long port 0 @AT@ 1775 @LENGTH@ 19\n" +
+ "---UPD decl@@unsigned int port 0 @TO@ long port 0 @AT@ 1775 @LENGTH@ 19\n" +
+ "------UPD type@@unsigned int @TO@ long @AT@ 1775 @LENGTH@ 12\n" +
+ "---------UPD name@@unsigned @TO@ long @AT@ 1775 @LENGTH@ 8\n" +
+ "---------DEL name@@int @AT@ 1784 @LENGTH@ 3\n");
+ }
+ @Test
+ public void test_wireshark_02dff2_2fba8c() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_02dff2_2fba8c_epan#dissectors#packet-usb.c");//entersan
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD decl_stmt@@static value_string_ext usb_langid_vals_ext VALUE_STRING_EXT_INIT usb_langid_vals @TO@ value_string_ext usb_langid_vals_ext VALUE_STRING_EXT_INIT usb_langid_vals @AT@ 11326 @LENGTH@ 81\n" +
+ "---UPD decl@@static value_string_ext usb_langid_vals_ext VALUE_STRING_EXT_INIT usb_langid_vals @TO@ value_string_ext usb_langid_vals_ext VALUE_STRING_EXT_INIT usb_langid_vals @AT@ 11326 @LENGTH@ 81\n" +
+ "------DEL specifier@@static @AT@ 11326 @LENGTH@ 6\n");
+ }
+ @Test
+ public void test_php_src_5317e8_9068c2() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_5317e8_9068c2_main#php_variables.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@is_array = 0 @TO@ plain_var @AT@ 10177 @LENGTH@ 12\n" +
+ "---INS goto@@plain_var @TO@ block@@is_array = 0 @AT@ 10183 @LENGTH@ 9\n" +
+ "------INS name@@plain_var @TO@ goto@@plain_var @AT@ 10188 @LENGTH@ 9\n" +
+ "---DEL expr_stmt@@is_array = 0 @AT@ 10183 @LENGTH@ 12\n" +
+ "------DEL expr@@is_array = 0 @AT@ 10183 @LENGTH@ 12\n" +
+ "---------DEL name@@is_array @AT@ 10183 @LENGTH@ 8\n" +
+ "---------DEL operator@@= @AT@ 10192 @LENGTH@ 1\n" +
+ "---------DEL literal:number@@0 @AT@ 10194 @LENGTH@ 1\n");
+ }
+ @Test
+ public void test_cpython_09705f_db2a0f() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_09705f_db2a0f_Modules#_sre.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD decl_stmt@@static char copyright [] \" SRE 2.2.1 Copyright (c) 1997-2001 by Secret Labs AB \" @TO@ static char copyright [] \" SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB \" @AT@ 2421 @LENGTH@ 80\n" +
+ "---UPD decl@@static char copyright [] \" SRE 2.2.1 Copyright (c) 1997-2001 by Secret Labs AB \" @TO@ static char copyright [] \" SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB \" @AT@ 2421 @LENGTH@ 80\n" +
+ "------UPD init@@\" SRE 2.2.1 Copyright (c) 1997-2001 by Secret Labs AB \" @TO@ \" SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB \" @AT@ 2451 @LENGTH@ 55\n" +
+ "---------UPD expr@@\" SRE 2.2.1 Copyright (c) 1997-2001 by Secret Labs AB \" @TO@ \" SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB \" @AT@ 2451 @LENGTH@ 55\n" +
+ "------------UPD literal:string@@\" SRE 2.2.1 Copyright (c) 1997-2001 by Secret Labs AB \" @TO@ \" SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB \" @AT@ 2451 @LENGTH@ 55\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD return@@return PyString_FromString \"\" @TO@ return PySequence_GetSlice pattern 0 0 @AT@ 52066 @LENGTH@ 29\n" +
+ "---UPD expr@@PyString_FromString \"\" @TO@ PySequence_GetSlice pattern 0 0 @AT@ 52073 @LENGTH@ 22\n" +
+ "------UPD call@@PyString_FromString \"\" @TO@ PySequence_GetSlice pattern 0 0 @AT@ 52073 @LENGTH@ 22\n" +
+ "---------UPD name@@PyString_FromString @TO@ PySequence_GetSlice @AT@ 52073 @LENGTH@ 19\n" +
+ "---------UPD argument_list@@\"\" @TO@ pattern 0 0 @AT@ 52092 @LENGTH@ 2\n" +
+ "------------INS argument@@0 @TO@ argument_list@@\"\" @AT@ 51100 @LENGTH@ 1\n" +
+ "---------------INS expr@@0 @TO@ argument@@0 @AT@ 51100 @LENGTH@ 1\n" +
+ "------------------INS literal:number@@0 @TO@ expr@@0 @AT@ 51100 @LENGTH@ 1\n" +
+ "------------INS argument@@0 @TO@ argument_list@@\"\" @AT@ 51103 @LENGTH@ 1\n" +
+ "---------------INS expr@@0 @TO@ argument@@0 @AT@ 51103 @LENGTH@ 1\n" +
+ "------------------INS literal:number@@0 @TO@ expr@@0 @AT@ 51103 @LENGTH@ 1\n" +
+ "------------UPD argument@@\"\" @TO@ pattern @AT@ 52093 @LENGTH@ 2\n" +
+ "---------------UPD expr@@\"\" @TO@ pattern @AT@ 52093 @LENGTH@ 2\n" +
+ "------------------INS name@@pattern @TO@ expr@@\"\" @AT@ 51091 @LENGTH@ 7\n" +
+ "------------------DEL literal:string@@\"\" @AT@ 52093 @LENGTH@ 2\n");
+ }
+ @Test
+ public void test_cpython_03897e_8fcc8e() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_03897e_8fcc8e_Python#sysmodule.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS if@@if builtins == NULL PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @TO@ block@@PyObject * o * outf PyInterpreterState * interp PyThreadState_Get -> interp PyObject * modules interp -> modules PyObject * builtins PyDict_GetItemString modules \"__builtin__\" if ! PyArg_ParseTuple args \"O:displayhook\" & o return NULL if o == Py_None Py_INCREF Py_None return Py_None if PyObject_SetAttrString builtins \"_\" Py_None != 0 return NULL if Py_FlushLine != 0 return NULL outf = PySys_GetObject \"stdout\" if outf == NULL PyErr_SetString PyExc_RuntimeError \"lost sys.stdout\" return NULL if PyFile_WriteObject o outf 0 != 0 return NULL PyFile_SoftSpace outf 1 if Py_FlushLine != 0 return NULL if PyObject_SetAttrString builtins \"_\" o != 0 return NULL Py_INCREF Py_None return Py_None @AT@ 1681 @LENGTH@ 85\n" +
+ "---INS condition@@builtins == NULL @TO@ if@@if builtins == NULL PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @AT@ 1681 @LENGTH@ 16\n" +
+ "------INS expr@@builtins == NULL @TO@ condition@@builtins == NULL @AT@ 1682 @LENGTH@ 16\n" +
+ "---------INS name@@builtins @TO@ expr@@builtins == NULL @AT@ 1682 @LENGTH@ 8\n" +
+ "---------INS operator@@== @TO@ expr@@builtins == NULL @AT@ 1691 @LENGTH@ 2\n" +
+ "---------INS name@@NULL @TO@ expr@@builtins == NULL @AT@ 1694 @LENGTH@ 4\n" +
+ "---INS then@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @TO@ if@@if builtins == NULL PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @AT@ 1700 @LENGTH@ 65\n" +
+ "------INS block@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @TO@ then@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @AT@ 1700 @LENGTH@ 65\n" +
+ "---------INS expr_stmt@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" @TO@ block@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @AT@ 1704 @LENGTH@ 53\n" +
+ "------------INS expr@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" @TO@ expr_stmt@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" @AT@ 1704 @LENGTH@ 53\n" +
+ "---------------INS call@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" @TO@ expr@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" @AT@ 1704 @LENGTH@ 53\n" +
+ "------------------INS name@@PyErr_SetString @TO@ call@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" @AT@ 1704 @LENGTH@ 15\n" +
+ "------------------INS argument_list@@PyExc_RuntimeError \"lost __builtin__\" @TO@ call@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" @AT@ 1719 @LENGTH@ 37\n" +
+ "---------------------INS argument@@PyExc_RuntimeError @TO@ argument_list@@PyExc_RuntimeError \"lost __builtin__\" @AT@ 1720 @LENGTH@ 18\n" +
+ "------------------------INS expr@@PyExc_RuntimeError @TO@ argument@@PyExc_RuntimeError @AT@ 1720 @LENGTH@ 18\n" +
+ "---------------------------INS name@@PyExc_RuntimeError @TO@ expr@@PyExc_RuntimeError @AT@ 1720 @LENGTH@ 18\n" +
+ "---------------------INS argument@@\"lost __builtin__\" @TO@ argument_list@@PyExc_RuntimeError \"lost __builtin__\" @AT@ 1740 @LENGTH@ 18\n" +
+ "------------------------INS expr@@\"lost __builtin__\" @TO@ argument@@\"lost __builtin__\" @AT@ 1740 @LENGTH@ 18\n" +
+ "---------------------------INS literal:string@@\"lost __builtin__\" @TO@ expr@@\"lost __builtin__\" @AT@ 1740 @LENGTH@ 18\n" +
+ "---------INS return@@return NULL @TO@ block@@PyErr_SetString PyExc_RuntimeError \"lost __builtin__\" return NULL @AT@ 1763 @LENGTH@ 11\n" +
+ "------------INS expr@@NULL @TO@ return@@return NULL @AT@ 1770 @LENGTH@ 4\n" +
+ "---------------INS name@@NULL @TO@ expr@@NULL @AT@ 1770 @LENGTH@ 4\n");
+ }
+ @Test
+ public void test_cpython_b110da_5abaa2() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_b110da_5abaa2_Modules#_cursesmodule.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD decl_stmt@@chtype cch @TO@ chtype cch 0 @AT@ 20374 @LENGTH@ 10\n" +
+ "---UPD decl@@chtype cch @TO@ chtype cch 0 @AT@ 20374 @LENGTH@ 10\n" +
+ "------INS init@@0 @TO@ decl@@chtype cch @AT@ 20387 @LENGTH@ 1\n" +
+ "---------INS expr@@0 @TO@ init@@0 @AT@ 20387 @LENGTH@ 1\n" +
+ "------------INS literal:number@@0 @TO@ expr@@0 @AT@ 20387 @LENGTH@ 1\n");
+ }
+ @Test
+ public void test_cpython_516999_437567() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_516999_437567_Modules#posixmodule.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),3);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD decl_stmt@@BOOL result @TO@ BOOL result FALSE @AT@ 42461 @LENGTH@ 11\n" +
+ "---UPD decl@@BOOL result @TO@ BOOL result FALSE @AT@ 42461 @LENGTH@ 11\n" +
+ "------INS init@@FALSE @TO@ decl@@BOOL result @AT@ 42475 @LENGTH@ 5\n" +
+ "---------INS expr@@FALSE @TO@ init@@FALSE @AT@ 42475 @LENGTH@ 5\n" +
+ "------------INS name@@FALSE @TO@ expr@@FALSE @AT@ 42475 @LENGTH@ 5\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD block@@if wFileData . cFileName ][0 == L' .' && ( wFileData . cFileName ][1 == L' \\0' || wFileData . cFileName ][1 == L' .' && wFileData . cFileName ][2 == L' \\0') continue; v = PyUnicode_FromUnicode wFileData . cFileName wcslen wFileData . cFileName if v == NULL Py_DECREF d d = NULL break; if PyList_Append d v != 0 Py_DECREF v Py_DECREF d d = NULL break; Py_DECREF v Py_BEGIN_ALLOW_THREADS result FindNextFileW hFindFile & wFileData Py_END_ALLOW_THREADS @TO@ if wFileData . cFileName ][0 == L' .' && ( wFileData . cFileName ][1 == L' \\0' || wFileData . cFileName ][1 == L' .' && wFileData . cFileName ][2 == L' \\0') loop_w v = PyUnicode_FromUnicode wFileData . cFileName wcslen wFileData . cFileName if v == NULL Py_DECREF d d = NULL break; if PyList_Append d v != 0 Py_DECREF v Py_DECREF d d = NULL break; Py_DECREF v loop_w Py_BEGIN_ALLOW_THREADS result FindNextFileW hFindFile & wFileData Py_END_ALLOW_THREADS @AT@ 43591 @LENGTH@ 449\n" +
+ "---UPD if@@if wFileData . cFileName ][0 == L' .' && ( wFileData . cFileName ][1 == L' \\0' || wFileData . cFileName ][1 == L' .' && wFileData . cFileName ][2 == L' \\0') continue; @TO@ if wFileData . cFileName ][0 == L' .' && ( wFileData . cFileName ][1 == L' \\0' || wFileData . cFileName ][1 == L' .' && wFileData . cFileName ][2 == L' \\0') loop_w @AT@ 43600 @LENGTH@ 166\n" +
+ "------UPD then@@continue; @TO@ loop_w @AT@ 43761 @LENGTH@ 9\n" +
+ "---------UPD block@@continue; @TO@ loop_w @AT@ 43761 @LENGTH@ 9\n" +
+ "------------DEL continue@@continue; @AT@ 43761 @LENGTH@ 9\n" +
+ "------------INS goto@@loop_w @TO@ block@@continue; @AT@ 43769 @LENGTH@ 6\n" +
+ "---------------INS name@@loop_w @TO@ goto@@loop_w @AT@ 43774 @LENGTH@ 6\n" +
+ "---INS label@@loop_w @TO@ block@@if wFileData . cFileName ][0 == L' .' && ( wFileData . cFileName ][1 == L' \\0' || wFileData . cFileName ][1 == L' .' && wFileData . cFileName ][2 == L' \\0') continue; v = PyUnicode_FromUnicode wFileData . cFileName wcslen wFileData . cFileName if v == NULL Py_DECREF d d = NULL break; if PyList_Append d v != 0 Py_DECREF v Py_DECREF d d = NULL break; Py_DECREF v Py_BEGIN_ALLOW_THREADS result FindNextFileW hFindFile & wFileData Py_END_ALLOW_THREADS @AT@ 44061 @LENGTH@ 6\n" +
+ "------INS name@@loop_w @TO@ label@@loop_w @AT@ 44061 @LENGTH@ 6\n");
+ Assert.assertEquals(hierarchicalActionSets.get(2).toString(),"UPD block@@if FileData . cFileName ][0 == '.' && ( FileData . cFileName ][1 == '\\0' || FileData . cFileName ][1 == '.' && FileData . cFileName ][2 == '\\0' ) continue; v = PyString_FromString FileData . cFileName if v == NULL Py_DECREF d d = NULL break; if PyList_Append d v != 0 Py_DECREF v Py_DECREF d d = NULL break; Py_DECREF v Py_BEGIN_ALLOW_THREADS result FindNextFile hFindFile & FileData Py_END_ALLOW_THREADS @TO@ if FileData . cFileName ][0 == '.' && ( FileData . cFileName ][1 == '\\0' || FileData . cFileName ][1 == '.' && FileData . cFileName ][2 == '\\0' ) loop_a v = PyString_FromString FileData . cFileName if v == NULL Py_DECREF d d = NULL break; if PyList_Append d v != 0 Py_DECREF v Py_DECREF d d = NULL break; Py_DECREF v loop_a Py_BEGIN_ALLOW_THREADS result FindNextFile hFindFile & FileData Py_END_ALLOW_THREADS @AT@ 44990 @LENGTH@ 404\n" +
+ "---UPD if@@if FileData . cFileName ][0 == '.' && ( FileData . cFileName ][1 == '\\0' || FileData . cFileName ][1 == '.' && FileData . cFileName ][2 == '\\0' ) continue; @TO@ if FileData . cFileName ][0 == '.' && ( FileData . cFileName ][1 == '\\0' || FileData . cFileName ][1 == '.' && FileData . cFileName ][2 == '\\0' ) loop_a @AT@ 44997 @LENGTH@ 155\n" +
+ "------UPD then@@continue; @TO@ loop_a @AT@ 45151 @LENGTH@ 9\n" +
+ "---------UPD block@@continue; @TO@ loop_a @AT@ 45151 @LENGTH@ 9\n" +
+ "------------DEL continue@@continue; @AT@ 45151 @LENGTH@ 9\n" +
+ "------------INS goto@@loop_a @TO@ block@@continue; @AT@ 45170 @LENGTH@ 6\n" +
+ "---------------INS name@@loop_a @TO@ goto@@loop_a @AT@ 45175 @LENGTH@ 6\n" +
+ "---INS label@@loop_a @TO@ block@@if FileData . cFileName ][0 == '.' && ( FileData . cFileName ][1 == '\\0' || FileData . cFileName ][1 == '.' && FileData . cFileName ][2 == '\\0' ) continue; v = PyString_FromString FileData . cFileName if v == NULL Py_DECREF d d = NULL break; if PyList_Append d v != 0 Py_DECREF v Py_DECREF d d = NULL break; Py_DECREF v Py_BEGIN_ALLOW_THREADS result FindNextFile hFindFile & FileData Py_END_ALLOW_THREADS @AT@ 45404 @LENGTH@ 6\n" +
+ "------INS name@@loop_a @TO@ label@@loop_a @AT@ 45404 @LENGTH@ 6\n");
+
+ }
+ @Test
+ public void test_php_src_499b55_595741() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_499b55_595741_Zend#zend_execute_API.c");//wrong
+
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@const char * function_name ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name -> val if function_name return function_name else return \"main\" @TO@ zend_string * function_name ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name if function_name return function_name -> val else return \"main\" @AT@ 11770 @LENGTH@ 184\n" +
+ "---UPD decl_stmt@@const char * function_name ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name -> val @TO@ zend_string * function_name ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name @AT@ 11776 @LENGTH@ 127\n" +
+ "------UPD decl@@const char * function_name ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name -> val @TO@ zend_string * function_name ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name @AT@ 11776 @LENGTH@ 127\n" +
+ "---------UPD type@@const char * @TO@ zend_string * @AT@ 11776 @LENGTH@ 12\n" +
+ "------------DEL specifier@@const @AT@ 11776 @LENGTH@ 5\n" +
+ "------------UPD name@@char @TO@ zend_string @AT@ 11782 @LENGTH@ 4\n" +
+ "---------UPD init@@( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name -> val @TO@ ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name @AT@ 11804 @LENGTH@ 100\n" +
+ "------------UPD expr@@( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name -> val @TO@ ( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name @AT@ 11804 @LENGTH@ 100\n" +
+ "---------------DEL name@@function_name -> val @AT@ 11875 @LENGTH@ 20\n" +
+ "------------------DEL name@@function_name @AT@ 11875 @LENGTH@ 13\n" +
+ "------------------DEL operator@@-> @AT@ 11888 @LENGTH@ 2\n" +
+ "------------------DEL name@@val @AT@ 11890 @LENGTH@ 3\n" +
+ "---------------INS name@@function_name @TO@ expr@@( ( zend_op_array * ) EG current_execute_data -> function_state . function ) -> function_name -> val @AT@ 11876 @LENGTH@ 13\n" +
+ "---UPD if@@if function_name return function_name else return \"main\" @TO@ if function_name return function_name -> val else return \"main\" @AT@ 11903 @LENGTH@ 56\n" +
+ "------UPD then@@return function_name @TO@ return function_name -> val @AT@ 11919 @LENGTH@ 20\n" +
+ "---------UPD block@@return function_name @TO@ return function_name -> val @AT@ 11919 @LENGTH@ 20\n" +
+ "------------UPD return@@return function_name @TO@ return function_name -> val @AT@ 11926 @LENGTH@ 20\n" +
+ "---------------UPD expr@@function_name @TO@ function_name -> val @AT@ 11933 @LENGTH@ 13\n" +
+ "------------------INS name@@function_name -> val @TO@ expr@@function_name @AT@ 11929 @LENGTH@ 20\n" +
+ "---------------------INS name@@function_name @TO@ name@@function_name -> val @AT@ 11929 @LENGTH@ 13\n" +
+ "---------------------INS operator@@-> @TO@ name@@function_name -> val @AT@ 11942 @LENGTH@ 2\n" +
+ "---------------------INS name@@val @TO@ name@@function_name -> val @AT@ 11944 @LENGTH@ 3\n" +
+ "------------------DEL name@@function_name @AT@ 11933 @LENGTH@ 13\n");
+ }
+ @Test
+ public void test_php_src_52ffe2_9b50cf() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_52ffe2_9b50cf_ext#fileinfo#libmagic#cdf.c");//can write test case
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD return@@return ( size_t ) - 1 @TO@ return - 1 @AT@ 10242 @LENGTH@ 21\n" +
+ "---UPD expr@@( size_t ) - 1 @TO@ - 1 @AT@ 10249 @LENGTH@ 14\n" +
+ "------DEL operator@@( @AT@ 10249 @LENGTH@ 1\n" +
+ "------DEL name@@size_t @AT@ 10250 @LENGTH@ 6\n" +
+ "------DEL operator@@) @AT@ 10256 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD return@@return ( size_t ) - 1 @TO@ return - 1 @AT@ 11065 @LENGTH@ 21\n" +
+ "---UPD expr@@( size_t ) - 1 @TO@ - 1 @AT@ 11072 @LENGTH@ 14\n" +
+ "------DEL operator@@( @AT@ 11072 @LENGTH@ 1\n" +
+ "------DEL name@@size_t @AT@ 11073 @LENGTH@ 6\n" +
+ "------DEL operator@@) @AT@ 11079 @LENGTH@ 1\n");
+ }
+ @Test
+ public void test_cpython_1fc238a_a33099() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_1fc238a_a33099_Objects#dictobject.c");//can write test case
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD return@@return NULL @TO@ return - 1 @AT@ 17150 @LENGTH@ 11\n" +
+ "---UPD expr@@NULL @TO@ - 1 @AT@ 17157 @LENGTH@ 4\n" +
+ "------INS operator@@- @TO@ expr@@NULL @AT@ 17157 @LENGTH@ 1\n" +
+ "------DEL name@@NULL @AT@ 17157 @LENGTH@ 4\n" +
+ "------INS literal:number@@1 @TO@ expr@@NULL @AT@ 17158 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD return@@return NULL @TO@ return - 1 @AT@ 17461 @LENGTH@ 11\n" +
+ "---UPD expr@@NULL @TO@ - 1 @AT@ 17468 @LENGTH@ 4\n" +
+ "------INS operator@@- @TO@ expr@@NULL @AT@ 17466 @LENGTH@ 1\n" +
+ "------INS literal:number@@1 @TO@ expr@@NULL @AT@ 17467 @LENGTH@ 1\n" +
+ "------DEL name@@NULL @AT@ 17468 @LENGTH@ 4\n");
+ }
+ @Test
+ public void test_php_src_ea27fd_5645de() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_ea27fd_5645de_ext#fileinfo#libmagic#cdf.c");//can write test case
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD return@@return ( size_t ) - 1 @TO@ return - 1 @AT@ 10242 @LENGTH@ 21\n" +
+ "---UPD expr@@( size_t ) - 1 @TO@ - 1 @AT@ 10249 @LENGTH@ 14\n" +
+ "------DEL operator@@( @AT@ 10249 @LENGTH@ 1\n" +
+ "------DEL name@@size_t @AT@ 10250 @LENGTH@ 6\n" +
+ "------DEL operator@@) @AT@ 10256 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD return@@return ( size_t ) - 1 @TO@ return - 1 @AT@ 11065 @LENGTH@ 21\n" +
+ "---UPD expr@@( size_t ) - 1 @TO@ - 1 @AT@ 11072 @LENGTH@ 14\n" +
+ "------DEL operator@@( @AT@ 11072 @LENGTH@ 1\n" +
+ "------DEL name@@size_t @AT@ 11073 @LENGTH@ 6\n" +
+ "------DEL operator@@) @AT@ 11079 @LENGTH@ 1\n");
+ }
+ @Test
+ public void test_cpython_ed6219_939667() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_ed6219_939667_Objects#abstract.c");//can write test case
+ Assert.assertEquals(hierarchicalActionSets.size(),5);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD return@@return NULL @TO@ return - 1 @AT@ 18828 @LENGTH@ 11\n" +
+ "---UPD expr@@NULL @TO@ - 1 @AT@ 18835 @LENGTH@ 4\n" +
+ "------INS operator@@- @TO@ expr@@NULL @AT@ 18835 @LENGTH@ 1\n" +
+ "------DEL name@@NULL @AT@ 18835 @LENGTH@ 4\n" +
+ "------INS literal:number@@1 @TO@ expr@@NULL @AT@ 18836 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD return@@return NULL @TO@ return - 1 @AT@ 19249 @LENGTH@ 11\n" +
+ "---UPD expr@@NULL @TO@ - 1 @AT@ 19256 @LENGTH@ 4\n" +
+ "------INS operator@@- @TO@ expr@@NULL @AT@ 19254 @LENGTH@ 1\n" +
+ "------INS literal:number@@1 @TO@ expr@@NULL @AT@ 19255 @LENGTH@ 1\n" +
+ "------DEL name@@NULL @AT@ 19256 @LENGTH@ 4\n");
+ Assert.assertEquals(hierarchicalActionSets.get(2).toString(),"UPD return@@return NULL @TO@ return - 1 @AT@ 19728 @LENGTH@ 11\n" +
+ "---UPD expr@@NULL @TO@ - 1 @AT@ 19735 @LENGTH@ 4\n" +
+ "------INS operator@@- @TO@ expr@@NULL @AT@ 19731 @LENGTH@ 1\n" +
+ "------INS literal:number@@1 @TO@ expr@@NULL @AT@ 19732 @LENGTH@ 1\n" +
+ "------DEL name@@NULL @AT@ 19735 @LENGTH@ 4\n");
+ Assert.assertEquals(hierarchicalActionSets.get(3).toString(),"UPD return@@return NULL @TO@ return - 1 @AT@ 20231 @LENGTH@ 11\n" +
+ "---UPD expr@@NULL @TO@ - 1 @AT@ 20238 @LENGTH@ 4\n" +
+ "------INS operator@@- @TO@ expr@@NULL @AT@ 20232 @LENGTH@ 1\n" +
+ "------INS literal:number@@1 @TO@ expr@@NULL @AT@ 20233 @LENGTH@ 1\n" +
+ "------DEL name@@NULL @AT@ 20238 @LENGTH@ 4\n");
+ Assert.assertEquals(hierarchicalActionSets.get(4).toString(),"UPD return@@return NULL @TO@ return - 1 @AT@ 25175 @LENGTH@ 11\n" +
+ "---UPD expr@@NULL @TO@ - 1 @AT@ 25182 @LENGTH@ 4\n" +
+ "------INS operator@@- @TO@ expr@@NULL @AT@ 25174 @LENGTH@ 1\n" +
+ "------INS literal:number@@1 @TO@ expr@@NULL @AT@ 25175 @LENGTH@ 1\n" +
+ "------DEL name@@NULL @AT@ 25182 @LENGTH@ 4\n");
+ }
+
+ @Test
+ public void test_php_src_470a39_b38730() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_470a39_b38730_Zend#zend_stream.c");//can write test case
+ Assert.assertEquals(hierarchicalActionSets.size(),0);
+// Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@ buf . st_size @TO@ S_ISREG if ! S_ISREG buf . st_mode 0 buf . st_size @AT@ 2021 @LENGTH@ 27\n" +
+// "---INS ifdef@@S_ISREG @TO@ block@@ buf . st_size @AT@ 2024 @LENGTH@ 7\n" +
+// "------INS directive@@ @TO@ ifdef@@S_ISREG @AT@ 2024 @LENGTH@ 0\n" +
+// "------INS name@@S_ISREG @TO@ ifdef@@S_ISREG @AT@ 2030 @LENGTH@ 7\n" +
+// "---INS if@@if ! S_ISREG buf . st_mode 0 @TO@ block@@ buf . st_size @AT@ 2043 @LENGTH@ 30\n" +
+// "------INS condition@@ ! S_ISREG buf . st_mode @TO@ if@@if ! S_ISREG buf . st_mode 0 @AT@ 2043 @LENGTH@ 24\n" +
+// "---------INS expr@@! S_ISREG buf . st_mode @TO@ condition@@ ! S_ISREG buf . st_mode @AT@ 2044 @LENGTH@ 24\n" +
+// "------------INS operator@@! @TO@ expr@@! S_ISREG buf . st_mode @AT@ 2044 @LENGTH@ 1\n" +
+// "------------INS call@@S_ISREG buf . st_mode @TO@ expr@@! S_ISREG buf . st_mode @AT@ 2045 @LENGTH@ 22\n" +
+// "---------------INS name@@S_ISREG @TO@ call@@S_ISREG buf . st_mode @AT@ 2045 @LENGTH@ 7\n" +
+// "---------------INS argument_list@@ buf . st_mode @TO@ call@@S_ISREG buf . st_mode @AT@ 2052 @LENGTH@ 14\n" +
+// "------------------INS argument@@buf . st_mode @TO@ argument_list@@ buf . st_mode @AT@ 2053 @LENGTH@ 13\n" +
+// "---------------------INS expr@@buf . st_mode @TO@ argument@@buf . st_mode @AT@ 2053 @LENGTH@ 13\n" +
+// "------------------------INS name@@buf . st_mode @TO@ expr@@buf . st_mode @AT@ 2053 @LENGTH@ 13\n" +
+// "---------------------------INS name@@buf @TO@ name@@buf . st_mode @AT@ 2053 @LENGTH@ 3\n" +
+// "---------------------------INS operator@@. @TO@ name@@buf . st_mode @AT@ 2056 @LENGTH@ 1\n" +
+// "---------------------------INS name@@st_mode @TO@ name@@buf . st_mode @AT@ 2057 @LENGTH@ 7\n" +
+// "------INS then@@ 0 @TO@ if@@if ! S_ISREG buf . st_mode 0 @AT@ 2067 @LENGTH@ 2\n" +
+// "---------INS block@@ 0 @TO@ then@@ 0 @AT@ 2067 @LENGTH@ 19\n" +
+// "------------INS return@@ 0 @TO@ block@@ 0 @AT@ 2072 @LENGTH@ 10\n" +
+// "---------------INS expr@@0 @TO@ return@@ 0 @AT@ 2079 @LENGTH@ 1\n" +
+// "------------------INS literal@@0 @TO@ expr@@0 @AT@ 2079 @LENGTH@ 1\n" +
+// "---INS endif@@ @TO@ block@@ buf . st_size @AT@ 2087 @LENGTH@ 0\n" +
+// "------INS directive@@ @TO@ endif@@ @AT@ 2087 @LENGTH@ 0\n");
+// Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD block@@ buf . st_size @TO@ S_ISREG if ! S_ISREG buf . st_mode 0 buf . st_size @AT@ 3287 @LENGTH@ 27\n" +
+// "---INS ifdef@@S_ISREG @TO@ block@@ buf . st_size @AT@ 3360 @LENGTH@ 7\n" +
+// "------INS directive@@ @TO@ ifdef@@S_ISREG @AT@ 3360 @LENGTH@ 0\n" +
+// "------INS name@@S_ISREG @TO@ ifdef@@S_ISREG @AT@ 3366 @LENGTH@ 7\n" +
+// "---INS if@@if ! S_ISREG buf . st_mode 0 @TO@ block@@ buf . st_size @AT@ 3379 @LENGTH@ 30\n" +
+// "------INS condition@@ ! S_ISREG buf . st_mode @TO@ if@@if ! S_ISREG buf . st_mode 0 @AT@ 3379 @LENGTH@ 24\n" +
+// "---------INS expr@@! S_ISREG buf . st_mode @TO@ condition@@ ! S_ISREG buf . st_mode @AT@ 3380 @LENGTH@ 24\n" +
+// "------------INS operator@@! @TO@ expr@@! S_ISREG buf . st_mode @AT@ 3380 @LENGTH@ 1\n" +
+// "------------INS call@@S_ISREG buf . st_mode @TO@ expr@@! S_ISREG buf . st_mode @AT@ 3381 @LENGTH@ 22\n" +
+// "---------------INS name@@S_ISREG @TO@ call@@S_ISREG buf . st_mode @AT@ 3381 @LENGTH@ 7\n" +
+// "---------------INS argument_list@@ buf . st_mode @TO@ call@@S_ISREG buf . st_mode @AT@ 3388 @LENGTH@ 14\n" +
+// "------------------INS argument@@buf . st_mode @TO@ argument_list@@ buf . st_mode @AT@ 3389 @LENGTH@ 13\n" +
+// "---------------------INS expr@@buf . st_mode @TO@ argument@@buf . st_mode @AT@ 3389 @LENGTH@ 13\n" +
+// "------------------------INS name@@buf . st_mode @TO@ expr@@buf . st_mode @AT@ 3389 @LENGTH@ 13\n" +
+// "---------------------------INS name@@buf @TO@ name@@buf . st_mode @AT@ 3389 @LENGTH@ 3\n" +
+// "---------------------------INS operator@@. @TO@ name@@buf . st_mode @AT@ 3392 @LENGTH@ 1\n" +
+// "---------------------------INS name@@st_mode @TO@ name@@buf . st_mode @AT@ 3393 @LENGTH@ 7\n" +
+// "------INS then@@ 0 @TO@ if@@if ! S_ISREG buf . st_mode 0 @AT@ 3403 @LENGTH@ 2\n" +
+// "---------INS block@@ 0 @TO@ then@@ 0 @AT@ 3403 @LENGTH@ 19\n" +
+// "------------INS return@@ 0 @TO@ block@@ 0 @AT@ 3408 @LENGTH@ 10\n" +
+// "---------------INS expr@@0 @TO@ return@@ 0 @AT@ 3415 @LENGTH@ 1\n" +
+// "------------------INS literal@@0 @TO@ expr@@0 @AT@ 3415 @LENGTH@ 1\n" +
+// "---INS endif@@ @TO@ block@@ buf . st_size @AT@ 3423 @LENGTH@ 0\n" +
+// "------INS directive@@ @TO@ endif@@ @AT@ 3423 @LENGTH@ 0\n");
+ }
+ @Test
+ public void test_php_src_9baa92_f9c232() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_9baa92_f9c232_sapi#apache2handler#sapi_apache2.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD function@@static void php_apache_request_ctor request_rec * r php_struct * ctx TSRMLS_DC char * content_type char * content_length const char * auth SG sapi_headers . http_response_code = ! r -> status HTTP_OK else r -> status SG request_info . content_type = apr_table_get r -> headers_in \"Content-Type\" SG request_info . query_string = apr_pstrdup r -> pool r -> args SG request_info . request_method = r -> method SG request_info . request_uri = apr_pstrdup r -> pool r -> uri SG request_info . path_translated = apr_pstrdup r -> pool r -> filename r -> no_local_copy = 1 content_type = sapi_get_default_content_type TSRMLS_C ap_set_content_type r apr_pstrdup r -> pool content_type efree content_type content_length = ( char * ) apr_table_get r -> headers_in \"Content-Length\" SG request_info . content_length = ( content_length atoi content_length else 0 ) apr_table_unset r -> headers_out \"Content-Length\" apr_table_unset r -> headers_out \"Last-Modified\" apr_table_unset r -> headers_out \"Expires\" apr_table_unset r -> headers_out \"ETag\" if ! PG safe_mode || ( PG safe_mode && ! ap_auth_type r ) auth = apr_table_get r -> headers_in \"Authorization\" php_handle_auth_data auth TSRMLS_CC ctx -> r -> user = apr_pstrdup ctx -> r -> pool SG request_info . auth_user else SG request_info . auth_user = NULL SG request_info . auth_password = NULL php_request_startup TSRMLS_C @TO@ static int php_apache_request_ctor request_rec * r php_struct * ctx TSRMLS_DC char * content_type char * content_length const char * auth SG sapi_headers . http_response_code = ! r -> status HTTP_OK else r -> status SG request_info . content_type = apr_table_get r -> headers_in \"Content-Type\" SG request_info . query_string = apr_pstrdup r -> pool r -> args SG request_info . request_method = r -> method SG request_info . request_uri = apr_pstrdup r -> pool r -> uri SG request_info . path_translated = apr_pstrdup r -> pool r -> filename r -> no_local_copy = 1 content_type = sapi_get_default_content_type TSRMLS_C ap_set_content_type r apr_pstrdup r -> pool content_type efree content_type content_length = ( char * ) apr_table_get r -> headers_in \"Content-Length\" SG request_info . content_length = ( content_length atoi content_length else 0 ) apr_table_unset r -> headers_out \"Content-Length\" apr_table_unset r -> headers_out \"Last-Modified\" apr_table_unset r -> headers_out \"Expires\" apr_table_unset r -> headers_out \"ETag\" if ! PG safe_mode || ( PG safe_mode && ! ap_auth_type r ) auth = apr_table_get r -> headers_in \"Authorization\" php_handle_auth_data auth TSRMLS_CC ctx -> r -> user = apr_pstrdup ctx -> r -> pool SG request_info . auth_user else SG request_info . auth_user = NULL SG request_info . auth_password = NULL return php_request_startup TSRMLS_C @AT@ 11008 @LENGTH@ 1363\n" +
+ "---UPD type@@void @TO@ int @AT@ 11015 @LENGTH@ 4\n" +
+ "------UPD name@@void @TO@ int @AT@ 11015 @LENGTH@ 4\n" +
+ "---UPD block@@char * content_type char * content_length const char * auth SG sapi_headers . http_response_code = ! r -> status HTTP_OK else r -> status SG request_info . content_type = apr_table_get r -> headers_in \"Content-Type\" SG request_info . query_string = apr_pstrdup r -> pool r -> args SG request_info . request_method = r -> method SG request_info . request_uri = apr_pstrdup r -> pool r -> uri SG request_info . path_translated = apr_pstrdup r -> pool r -> filename r -> no_local_copy = 1 content_type = sapi_get_default_content_type TSRMLS_C ap_set_content_type r apr_pstrdup r -> pool content_type efree content_type content_length = ( char * ) apr_table_get r -> headers_in \"Content-Length\" SG request_info . content_length = ( content_length atoi content_length else 0 ) apr_table_unset r -> headers_out \"Content-Length\" apr_table_unset r -> headers_out \"Last-Modified\" apr_table_unset r -> headers_out \"Expires\" apr_table_unset r -> headers_out \"ETag\" if ! PG safe_mode || ( PG safe_mode && ! ap_auth_type r ) auth = apr_table_get r -> headers_in \"Authorization\" php_handle_auth_data auth TSRMLS_CC ctx -> r -> user = apr_pstrdup ctx -> r -> pool SG request_info . auth_user else SG request_info . auth_user = NULL SG request_info . auth_password = NULL php_request_startup TSRMLS_C @TO@ char * content_type char * content_length const char * auth SG sapi_headers . http_response_code = ! r -> status HTTP_OK else r -> status SG request_info . content_type = apr_table_get r -> headers_in \"Content-Type\" SG request_info . query_string = apr_pstrdup r -> pool r -> args SG request_info . request_method = r -> method SG request_info . request_uri = apr_pstrdup r -> pool r -> uri SG request_info . path_translated = apr_pstrdup r -> pool r -> filename r -> no_local_copy = 1 content_type = sapi_get_default_content_type TSRMLS_C ap_set_content_type r apr_pstrdup r -> pool content_type efree content_type content_length = ( char * ) apr_table_get r -> headers_in \"Content-Length\" SG request_info . content_length = ( content_length atoi content_length else 0 ) apr_table_unset r -> headers_out \"Content-Length\" apr_table_unset r -> headers_out \"Last-Modified\" apr_table_unset r -> headers_out \"Expires\" apr_table_unset r -> headers_out \"ETag\" if ! PG safe_mode || ( PG safe_mode && ! ap_auth_type r ) auth = apr_table_get r -> headers_in \"Authorization\" php_handle_auth_data auth TSRMLS_CC ctx -> r -> user = apr_pstrdup ctx -> r -> pool SG request_info . auth_user else SG request_info . auth_user = NULL SG request_info . auth_password = NULL return php_request_startup TSRMLS_C @AT@ 11087 @LENGTH@ 1284\n" +
+ "------INS return@@return php_request_startup TSRMLS_C @TO@ block@@char * content_type char * content_length const char * auth SG sapi_headers . http_response_code = ! r -> status HTTP_OK else r -> status SG request_info . content_type = apr_table_get r -> headers_in \"Content-Type\" SG request_info . query_string = apr_pstrdup r -> pool r -> args SG request_info . request_method = r -> method SG request_info . request_uri = apr_pstrdup r -> pool r -> uri SG request_info . path_translated = apr_pstrdup r -> pool r -> filename r -> no_local_copy = 1 content_type = sapi_get_default_content_type TSRMLS_C ap_set_content_type r apr_pstrdup r -> pool content_type efree content_type content_length = ( char * ) apr_table_get r -> headers_in \"Content-Length\" SG request_info . content_length = ( content_length atoi content_length else 0 ) apr_table_unset r -> headers_out \"Content-Length\" apr_table_unset r -> headers_out \"Last-Modified\" apr_table_unset r -> headers_out \"Expires\" apr_table_unset r -> headers_out \"ETag\" if ! PG safe_mode || ( PG safe_mode && ! ap_auth_type r ) auth = apr_table_get r -> headers_in \"Authorization\" php_handle_auth_data auth TSRMLS_CC ctx -> r -> user = apr_pstrdup ctx -> r -> pool SG request_info . auth_user else SG request_info . auth_user = NULL SG request_info . auth_password = NULL php_request_startup TSRMLS_C @AT@ 12380 @LENGTH@ 35\n" +
+ "---------MOV expr@@php_request_startup TSRMLS_C @TO@ return@@return php_request_startup TSRMLS_C @AT@ 12381 @LENGTH@ 28\n" +
+ "------DEL expr_stmt@@php_request_startup TSRMLS_C @AT@ 12381 @LENGTH@ 28\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"INS if@@if php_apache_request_ctor r ctx TSRMLS_CC != SUCCESS zend_bailout @TO@ block@@ctx = SG server_context = apr_pcalloc r -> pool * ctx apr_pool_cleanup_register r -> pool ( void * ) & SG server_context php_server_context_cleanup apr_pool_cleanup_null ctx -> r = r brigade = apr_brigade_create r -> pool r -> connection -> bucket_alloc ctx -> brigade = brigade php_apache_request_ctor r ctx TSRMLS_CC @AT@ 14608 @LENGTH@ 66\n" +
+ "---INS condition@@php_apache_request_ctor r ctx TSRMLS_CC != SUCCESS @TO@ if@@if php_apache_request_ctor r ctx TSRMLS_CC != SUCCESS zend_bailout @AT@ 14608 @LENGTH@ 50\n" +
+ "------MOV macro@@php_apache_request_ctor r ctx TSRMLS_CC @TO@ condition@@php_apache_request_ctor r ctx TSRMLS_CC != SUCCESS @AT@ 14599 @LENGTH@ 39\n" +
+ "------INS expr@@!= SUCCESS @TO@ condition@@php_apache_request_ctor r ctx TSRMLS_CC != SUCCESS @AT@ 14650 @LENGTH@ 10\n" +
+ "---------INS operator@@!= @TO@ expr@@!= SUCCESS @AT@ 14650 @LENGTH@ 2\n" +
+ "---------INS name@@SUCCESS @TO@ expr@@!= SUCCESS @AT@ 14652 @LENGTH@ 7\n" +
+ "---INS then@@zend_bailout @TO@ if@@if php_apache_request_ctor r ctx TSRMLS_CC != SUCCESS zend_bailout @AT@ 14661 @LENGTH@ 12\n" +
+ "------INS block@@zend_bailout @TO@ then@@zend_bailout @AT@ 14661 @LENGTH@ 12\n" +
+ "---------INS expr_stmt@@zend_bailout @TO@ block@@zend_bailout @AT@ 14666 @LENGTH@ 12\n" +
+ "------------INS expr@@zend_bailout @TO@ expr_stmt@@zend_bailout @AT@ 14666 @LENGTH@ 12\n" +
+ "---------------INS call@@zend_bailout @TO@ expr@@zend_bailout @AT@ 14666 @LENGTH@ 12\n" +
+ "------------------INS name@@zend_bailout @TO@ call@@zend_bailout @AT@ 14666 @LENGTH@ 12\n" +
+ "------------------INS argument_list@@ @TO@ call@@zend_bailout @AT@ 14678 @LENGTH@ 0\n");
+ }
+ @Test
+ public void test_cpython_719f5f_dcc6ef() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_719f5f_dcc6ef_Objects#intobject.c");//wrong
+
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@long d long m if i_divmod x y & d & m < 0 return NULL newintobject m @TO@ long d long m if i_divmod x y & d & m < 0 return NULL return newintobject m @AT@ 4993 @LENGTH@ 68\n" +
+ "---DEL expr_stmt@@newintobject m @AT@ 5056 @LENGTH@ 14\n" +
+ "---INS return@@return newintobject m @TO@ block@@long d long m if i_divmod x y & d & m < 0 return NULL newintobject m @AT@ 5112 @LENGTH@ 21\n" +
+ "------MOV expr@@newintobject m @TO@ return@@return newintobject m @AT@ 5056 @LENGTH@ 14\n");
+ }
+ @Test
+ public void test_php_src_b88698_34b3dc() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_b88698_34b3dc_ext#standard#reg.c");//wrong
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD return@@return ( char * ) string @TO@ return estrndup \"\" 0 @AT@ 9219 @LENGTH@ 24\n" +
+ "---UPD expr@@( char * ) string @TO@ estrndup \"\" 0 @AT@ 9226 @LENGTH@ 17\n" +
+ "------INS call@@estrndup \"\" 0 @TO@ expr@@( char * ) string @AT@ 9226 @LENGTH@ 13\n" +
+ "---------INS name@@estrndup @TO@ call@@estrndup \"\" 0 @AT@ 9226 @LENGTH@ 8\n" +
+ "---------INS argument_list@@\"\" 0 @TO@ call@@estrndup \"\" 0 @AT@ 9234 @LENGTH@ 4\n" +
+ "------------INS argument@@\"\" @TO@ argument_list@@\"\" 0 @AT@ 9235 @LENGTH@ 2\n" +
+ "---------------INS expr@@\"\" @TO@ argument@@\"\" @AT@ 9235 @LENGTH@ 2\n" +
+ "------------------INS literal:string@@\"\" @TO@ expr@@\"\" @AT@ 9235 @LENGTH@ 2\n" +
+ "------------INS argument@@0 @TO@ argument_list@@\"\" 0 @AT@ 9239 @LENGTH@ 1\n" +
+ "---------------INS expr@@0 @TO@ argument@@0 @AT@ 9239 @LENGTH@ 1\n" +
+ "------------------INS literal:number@@0 @TO@ expr@@0 @AT@ 9239 @LENGTH@ 1\n" +
+ "------DEL operator@@( @AT@ 9226 @LENGTH@ 1\n" +
+ "------DEL name@@char @AT@ 9227 @LENGTH@ 4\n" +
+ "------DEL operator@@* @AT@ 9232 @LENGTH@ 1\n" +
+ "------DEL operator@@) @AT@ 9233 @LENGTH@ 1\n" +
+ "------DEL name@@string @AT@ 9234 @LENGTH@ 6\n");
+ }
+
+ @Test
+ public void test_php_src_395434_d3a0db() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_395434_d3a0db_ext#date#lib#parse_tz.c");//write test case
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD return@@return t -> z * 60 @TO@ return ( t -> z + t -> dst ) * - 60 @AT@ 10151 @LENGTH@ 18\n" +
+ "---UPD expr@@t -> z * 60 @TO@ ( t -> z + t -> dst ) * - 60 @AT@ 10158 @LENGTH@ 11\n" +
+ "------INS operator@@( @TO@ expr@@t -> z * 60 @AT@ 10158 @LENGTH@ 1\n" +
+ "------INS operator@@+ @TO@ expr@@t -> z * 60 @AT@ 10164 @LENGTH@ 1\n" +
+ "------INS name@@t -> dst @TO@ expr@@t -> z * 60 @AT@ 10166 @LENGTH@ 8\n" +
+ "---------INS name@@t @TO@ name@@t -> dst @AT@ 10166 @LENGTH@ 1\n" +
+ "---------INS operator@@-> @TO@ name@@t -> dst @AT@ 10167 @LENGTH@ 2\n" +
+ "---------INS name@@dst @TO@ name@@t -> dst @AT@ 10169 @LENGTH@ 3\n" +
+ "------INS operator@@) @TO@ expr@@t -> z * 60 @AT@ 10172 @LENGTH@ 1\n" +
+ "------INS operator@@- @TO@ expr@@t -> z * 60 @AT@ 10176 @LENGTH@ 1\n");
+ }
+ @Test
+ public void test_cpython_0aed3a4_404cdc() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_0aed3a4_404cdc_Objects#obmalloc.c");//write test case
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@_PyMem_DebugCheckGIL return _PyMem_DebugRawFree ctx ptr @TO@ _PyMem_DebugCheckGIL _PyMem_DebugRawFree ctx ptr @AT@ 70812 @LENGTH@ 55\n" +
+ "---INS expr_stmt@@_PyMem_DebugRawFree ctx ptr @TO@ block@@_PyMem_DebugCheckGIL return _PyMem_DebugRawFree ctx ptr @AT@ 70846 @LENGTH@ 27\n" +
+ "------MOV expr@@_PyMem_DebugRawFree ctx ptr @TO@ expr_stmt@@_PyMem_DebugRawFree ctx ptr @AT@ 70853 @LENGTH@ 27\n" +
+ "---DEL return@@return _PyMem_DebugRawFree ctx ptr @AT@ 70846 @LENGTH@ 34\n");
+ }
+
+ @Test
+ public void test_cpython_671582_f8e322() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_671582_f8e322_PC#_msi.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(), 4);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD decl_stmt@@UINT result ( UINT ) _read hf memory cb @TO@ UINT result ( UINT ) _read ( int ) hf memory cb @AT@ 1430 @LENGTH@ 39\n" +
+ "---UPD decl@@UINT result ( UINT ) _read hf memory cb @TO@ UINT result ( UINT ) _read ( int ) hf memory cb @AT@ 1430 @LENGTH@ 39\n" +
+ "------UPD init@@( UINT ) _read hf memory cb @TO@ ( UINT ) _read ( int ) hf memory cb @AT@ 1444 @LENGTH@ 27\n" +
+ "---------UPD expr@@( UINT ) _read hf memory cb @TO@ ( UINT ) _read ( int ) hf memory cb @AT@ 1444 @LENGTH@ 27\n" +
+ "------------UPD call@@_read hf memory cb @TO@ _read ( int ) hf memory cb @AT@ 1450 @LENGTH@ 18\n" +
+ "---------------UPD argument_list@@hf memory cb @TO@ ( int ) hf memory cb @AT@ 1455 @LENGTH@ 12\n" +
+ "------------------UPD argument@@hf @TO@ ( int ) hf @AT@ 1456 @LENGTH@ 2\n" +
+ "---------------------UPD expr@@hf @TO@ ( int ) hf @AT@ 1456 @LENGTH@ 2\n" +
+ "------------------------INS operator@@( @TO@ expr@@hf @AT@ 1456 @LENGTH@ 1\n" +
+ "------------------------INS name@@int @TO@ expr@@hf @AT@ 1457 @LENGTH@ 3\n" +
+ "------------------------INS operator@@) @TO@ expr@@hf @AT@ 1460 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD expr_stmt@@static FNFCIWRITE cb_write UINT result = ( UINT ) _write hf memory cb if result != cb * err = errno @TO@ static FNFCIWRITE cb_write UINT result = ( UINT ) _write ( int ) hf memory cb if result != cb * err = errno @AT@ 1539 @LENGTH@ 99\n" +
+ "---UPD expr@@static FNFCIWRITE cb_write UINT result = ( UINT ) _write hf memory cb if result != cb * err = errno @TO@ static FNFCIWRITE cb_write UINT result = ( UINT ) _write ( int ) hf memory cb if result != cb * err = errno @AT@ 1539 @LENGTH@ 99\n" +
+ "------UPD block@@UINT result = ( UINT ) _write hf memory cb if result != cb * err = errno @TO@ UINT result = ( UINT ) _write ( int ) hf memory cb if result != cb * err = errno @AT@ 1573 @LENGTH@ 72\n" +
+ "---------UPD expr@@UINT result = ( UINT ) _write hf memory cb @TO@ UINT result = ( UINT ) _write ( int ) hf memory cb @AT@ 1573 @LENGTH@ 42\n" +
+ "------------UPD call@@_write hf memory cb @TO@ _write ( int ) hf memory cb @AT@ 1593 @LENGTH@ 19\n" +
+ "---------------UPD argument_list@@hf memory cb @TO@ ( int ) hf memory cb @AT@ 1599 @LENGTH@ 12\n" +
+ "------------------UPD argument@@hf @TO@ ( int ) hf @AT@ 1600 @LENGTH@ 2\n" +
+ "---------------------UPD expr@@hf @TO@ ( int ) hf @AT@ 1600 @LENGTH@ 2\n" +
+ "------------------------INS operator@@( @TO@ expr@@hf @AT@ 1605 @LENGTH@ 1\n" +
+ "------------------------INS name@@int @TO@ expr@@hf @AT@ 1606 @LENGTH@ 3\n" +
+ "------------------------INS operator@@) @TO@ expr@@hf @AT@ 1609 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(2).toString(),"UPD decl_stmt@@int result _close hf @TO@ int result _close ( int ) hf @AT@ 1717 @LENGTH@ 20\n" +
+ "---UPD decl@@int result _close hf @TO@ int result _close ( int ) hf @AT@ 1717 @LENGTH@ 20\n" +
+ "------UPD init@@_close hf @TO@ _close ( int ) hf @AT@ 1730 @LENGTH@ 9\n" +
+ "---------UPD expr@@_close hf @TO@ _close ( int ) hf @AT@ 1730 @LENGTH@ 9\n" +
+ "------------UPD call@@_close hf @TO@ _close ( int ) hf @AT@ 1730 @LENGTH@ 9\n" +
+ "---------------UPD argument_list@@hf @TO@ ( int ) hf @AT@ 1736 @LENGTH@ 2\n" +
+ "------------------UPD argument@@hf @TO@ ( int ) hf @AT@ 1737 @LENGTH@ 2\n" +
+ "---------------------UPD expr@@hf @TO@ ( int ) hf @AT@ 1737 @LENGTH@ 2\n" +
+ "------------------------INS operator@@( @TO@ expr@@hf @AT@ 1747 @LENGTH@ 1\n" +
+ "------------------------INS name@@int @TO@ expr@@hf @AT@ 1748 @LENGTH@ 3\n" +
+ "------------------------INS operator@@) @TO@ expr@@hf @AT@ 1751 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(3).toString(),"UPD expr_stmt@@static FNFCISEEK cb_seek long result = ( long ) _lseek hf dist seektype if result == - 1 * err = errno @TO@ static FNFCISEEK cb_seek long result = ( long ) _lseek ( int ) hf dist seektype if result == - 1 * err = errno @AT@ 1807 @LENGTH@ 102\n" +
+ "---UPD expr@@static FNFCISEEK cb_seek long result = ( long ) _lseek hf dist seektype if result == - 1 * err = errno @TO@ static FNFCISEEK cb_seek long result = ( long ) _lseek ( int ) hf dist seektype if result == - 1 * err = errno @AT@ 1807 @LENGTH@ 102\n" +
+ "------UPD block@@long result = ( long ) _lseek hf dist seektype if result == - 1 * err = errno @TO@ long result = ( long ) _lseek ( int ) hf dist seektype if result == - 1 * err = errno @AT@ 1839 @LENGTH@ 77\n" +
+ "---------UPD expr@@long result = ( long ) _lseek hf dist seektype @TO@ long result = ( long ) _lseek ( int ) hf dist seektype @AT@ 1839 @LENGTH@ 46\n" +
+ "------------UPD call@@_lseek hf dist seektype @TO@ _lseek ( int ) hf dist seektype @AT@ 1859 @LENGTH@ 23\n" +
+ "---------------UPD argument_list@@hf dist seektype @TO@ ( int ) hf dist seektype @AT@ 1865 @LENGTH@ 16\n" +
+ "------------------UPD argument@@hf @TO@ ( int ) hf @AT@ 1866 @LENGTH@ 2\n" +
+ "---------------------UPD expr@@hf @TO@ ( int ) hf @AT@ 1866 @LENGTH@ 2\n" +
+ "------------------------INS operator@@( @TO@ expr@@hf @AT@ 1881 @LENGTH@ 1\n" +
+ "------------------------INS name@@int @TO@ expr@@hf @AT@ 1882 @LENGTH@ 3\n" +
+ "------------------------INS operator@@) @TO@ expr@@hf @AT@ 1885 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_php_src_820983_90ee88() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_820983_90ee88_ext#standard#html.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS else@@else if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @TO@ if@@if ( code >= 0x80 && code < 0xa0 ) || code > 0xff invalid_code = 1 else * ( q ++ ) = code @AT@ 31567 @LENGTH@ 75\n" +
+ "---INS block@@if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @TO@ else@@else if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @AT@ 31567 @LENGTH@ 70\n" +
+ "------INS if@@if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @TO@ block@@if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @AT@ 31581 @LENGTH@ 70\n" +
+ "---------MOV else@@else * ( q ++ ) = code @TO@ if@@if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @AT@ 31567 @LENGTH@ 22\n" +
+ "---------INS condition@@code == 39 || ! quote_style @TO@ if@@if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @AT@ 31581 @LENGTH@ 27\n" +
+ "------------INS expr@@code == 39 || ! quote_style @TO@ condition@@code == 39 || ! quote_style @AT@ 31582 @LENGTH@ 27\n" +
+ "---------------INS name@@code @TO@ expr@@code == 39 || ! quote_style @AT@ 31582 @LENGTH@ 4\n" +
+ "---------------INS operator@@== @TO@ expr@@code == 39 || ! quote_style @AT@ 31587 @LENGTH@ 2\n" +
+ "---------------INS literal:number@@39 @TO@ expr@@code == 39 || ! quote_style @AT@ 31590 @LENGTH@ 2\n" +
+ "---------------INS operator@@|| @TO@ expr@@code == 39 || ! quote_style @AT@ 31593 @LENGTH@ 2\n" +
+ "---------------INS operator@@! @TO@ expr@@code == 39 || ! quote_style @AT@ 31596 @LENGTH@ 1\n" +
+ "---------------INS name@@quote_style @TO@ expr@@code == 39 || ! quote_style @AT@ 31597 @LENGTH@ 11\n" +
+ "---------INS then@@invalid_code = 1 @TO@ if@@if code == 39 || ! quote_style invalid_code = 1 else * ( q ++ ) = code @AT@ 31610 @LENGTH@ 16\n" +
+ "------------INS block@@invalid_code = 1 @TO@ then@@invalid_code = 1 @AT@ 31610 @LENGTH@ 16\n" +
+ "---------------INS expr_stmt@@invalid_code = 1 @TO@ block@@invalid_code = 1 @AT@ 31622 @LENGTH@ 16\n" +
+ "------------------INS expr@@invalid_code = 1 @TO@ expr_stmt@@invalid_code = 1 @AT@ 31622 @LENGTH@ 16\n" +
+ "---------------------INS name@@invalid_code @TO@ expr@@invalid_code = 1 @AT@ 31622 @LENGTH@ 12\n" +
+ "---------------------INS operator@@= @TO@ expr@@invalid_code = 1 @AT@ 31635 @LENGTH@ 1\n" +
+ "---------------------INS literal:number@@1 @TO@ expr@@invalid_code = 1 @AT@ 31637 @LENGTH@ 1\n");
+ }
+ @Test
+ public void test_wireshark_c3a535_1153ff() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("wireshark_c3a535_1153ff_print.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS else@@else fputs \"\\n\" pdata -> fh @TO@ if@@if fi -> hfinfo -> id != proto_data if fi -> hfinfo -> type == FT_PROTOCOL fputs \"\\n\" pdata -> fh else fputs \"\\n\" pdata -> fh @AT@ 13991 @LENGTH@ 35\n" +
+ "---INS block@@fputs \"\\n\" pdata -> fh @TO@ else@@else fputs \"\\n\" pdata -> fh @AT@ 13991 @LENGTH@ 30\n" +
+ "------INS expr_stmt@@fputs \"\\n\" pdata -> fh @TO@ block@@fputs \"\\n\" pdata -> fh @AT@ 13996 @LENGTH@ 30\n" +
+ "---------INS expr@@fputs \"\\n\" pdata -> fh @TO@ expr_stmt@@fputs \"\\n\" pdata -> fh @AT@ 13996 @LENGTH@ 30\n" +
+ "------------INS call@@fputs \"\\n\" pdata -> fh @TO@ expr@@fputs \"\\n\" pdata -> fh @AT@ 13996 @LENGTH@ 30\n" +
+ "---------------INS name@@fputs @TO@ call@@fputs \"\\n\" pdata -> fh @AT@ 13996 @LENGTH@ 5\n" +
+ "---------------INS argument_list@@\"\\n\" pdata -> fh @TO@ call@@fputs \"\\n\" pdata -> fh @AT@ 14001 @LENGTH@ 24\n" +
+ "------------------INS argument@@\"\\n\" @TO@ argument_list@@\"\\n\" pdata -> fh @AT@ 14002 @LENGTH@ 12\n" +
+ "---------------------INS expr@@\"\\n\" @TO@ argument@@\"\\n\" @AT@ 14002 @LENGTH@ 12\n" +
+ "------------------------INS literal:string@@\"\\n\" @TO@ expr@@\"\\n\" @AT@ 14002 @LENGTH@ 12\n" +
+ "------------------INS argument@@pdata -> fh @TO@ argument_list@@\"\\n\" pdata -> fh @AT@ 14016 @LENGTH@ 11\n" +
+ "---------------------INS expr@@pdata -> fh @TO@ argument@@pdata -> fh @AT@ 14016 @LENGTH@ 11\n" +
+ "------------------------INS name@@pdata -> fh @TO@ expr@@pdata -> fh @AT@ 14016 @LENGTH@ 11\n" +
+ "---------------------------INS name@@pdata @TO@ name@@pdata -> fh @AT@ 14016 @LENGTH@ 5\n" +
+ "---------------------------INS operator@@-> @TO@ name@@pdata -> fh @AT@ 14021 @LENGTH@ 2\n" +
+ "---------------------------INS name@@fh @TO@ name@@pdata -> fh @AT@ 14023 @LENGTH@ 2\n");
+ }
+ @Test
+ public void test_php_src_a10e77_634012() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_a10e77_634012_ext#phar#tar.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS if@@if entry . filename_len == UINT_MAX if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @TO@ block@@last_was_longlink = 1 entry . filename_len = entry . uncompressed_filesize entry . filename = pemalloc entry . filename_len + 1 myphar -> is_persistent read = php_stream_read fp entry . filename entry . filename_len if read != entry . filename_len efree entry . filename if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (truncated)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE entry . filename ][entry . filename_len = '\\0' size = ( ( size + 511 ) & ~ 511 ) - size php_stream_seek fp size SEEK_CUR if ( uint ) php_stream_tell fp > totalsize efree entry . filename if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (truncated)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE read = php_stream_read fp buf sizeof buf if read != sizeof buf efree entry . filename if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (truncated)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE continue; @AT@ 11511 @LENGTH@ 211\n" +
+ "---INS condition@@entry . filename_len == UINT_MAX @TO@ if@@if entry . filename_len == UINT_MAX if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @AT@ 11511 @LENGTH@ 32\n" +
+ "------INS expr@@entry . filename_len == UINT_MAX @TO@ condition@@entry . filename_len == UINT_MAX @AT@ 11512 @LENGTH@ 32\n" +
+ "---------INS name@@entry . filename_len @TO@ expr@@entry . filename_len == UINT_MAX @AT@ 11512 @LENGTH@ 20\n" +
+ "------------INS name@@entry @TO@ name@@entry . filename_len @AT@ 11512 @LENGTH@ 5\n" +
+ "------------INS operator@@. @TO@ name@@entry . filename_len @AT@ 11517 @LENGTH@ 1\n" +
+ "------------INS name@@filename_len @TO@ name@@entry . filename_len @AT@ 11518 @LENGTH@ 12\n" +
+ "---------INS operator@@== @TO@ expr@@entry . filename_len == UINT_MAX @AT@ 11531 @LENGTH@ 2\n" +
+ "---------INS name@@UINT_MAX @TO@ expr@@entry . filename_len == UINT_MAX @AT@ 11534 @LENGTH@ 8\n" +
+ "---INS then@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @TO@ if@@if entry . filename_len == UINT_MAX if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @AT@ 11544 @LENGTH@ 175\n" +
+ "------INS block@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @TO@ then@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @AT@ 11544 @LENGTH@ 175\n" +
+ "---------INS if@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @TO@ block@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @AT@ 11553 @LENGTH@ 100\n" +
+ "------------INS condition@@error @TO@ if@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11553 @LENGTH@ 5\n" +
+ "---------------INS expr@@error @TO@ condition@@error @AT@ 11554 @LENGTH@ 5\n" +
+ "------------------INS name@@error @TO@ expr@@error @AT@ 11554 @LENGTH@ 5\n" +
+ "------------INS then@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @TO@ if@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11561 @LENGTH@ 91\n" +
+ "---------------INS block@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @TO@ then@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11561 @LENGTH@ 91\n" +
+ "------------------INS expr_stmt@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @TO@ block@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11568 @LENGTH@ 91\n" +
+ "---------------------INS expr@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @TO@ expr_stmt@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11568 @LENGTH@ 91\n" +
+ "------------------------INS call@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @TO@ expr@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11568 @LENGTH@ 91\n" +
+ "---------------------------INS name@@spprintf @TO@ call@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11568 @LENGTH@ 8\n" +
+ "---------------------------INS argument_list@@error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @TO@ call@@spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11576 @LENGTH@ 82\n" +
+ "------------------------------INS argument@@error @TO@ argument_list@@error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11577 @LENGTH@ 5\n" +
+ "---------------------------------INS expr@@error @TO@ argument@@error @AT@ 11577 @LENGTH@ 5\n" +
+ "------------------------------------INS name@@error @TO@ expr@@error @AT@ 11577 @LENGTH@ 5\n" +
+ "------------------------------INS argument@@4096 @TO@ argument_list@@error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11584 @LENGTH@ 4\n" +
+ "---------------------------------INS expr@@4096 @TO@ argument@@4096 @AT@ 11584 @LENGTH@ 4\n" +
+ "------------------------------------INS literal:number@@4096 @TO@ expr@@4096 @AT@ 11584 @LENGTH@ 4\n" +
+ "------------------------------INS argument@@\"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" @TO@ argument_list@@error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11590 @LENGTH@ 65\n" +
+ "---------------------------------INS expr@@\"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" @TO@ argument@@\"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" @AT@ 11590 @LENGTH@ 65\n" +
+ "------------------------------------INS literal:string@@\"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" @TO@ expr@@\"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" @AT@ 11590 @LENGTH@ 65\n" +
+ "------------------------------INS argument@@fname @TO@ argument_list@@error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname @AT@ 11657 @LENGTH@ 5\n" +
+ "---------------------------------INS expr@@fname @TO@ argument@@fname @AT@ 11657 @LENGTH@ 5\n" +
+ "------------------------------------INS name@@fname @TO@ expr@@fname @AT@ 11657 @LENGTH@ 5\n" +
+ "---------INS expr_stmt@@php_stream_close fp @TO@ block@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @AT@ 11675 @LENGTH@ 19\n" +
+ "------------INS expr@@php_stream_close fp @TO@ expr_stmt@@php_stream_close fp @AT@ 11675 @LENGTH@ 19\n" +
+ "---------------INS call@@php_stream_close fp @TO@ expr@@php_stream_close fp @AT@ 11675 @LENGTH@ 19\n" +
+ "------------------INS name@@php_stream_close @TO@ call@@php_stream_close fp @AT@ 11675 @LENGTH@ 16\n" +
+ "------------------INS argument_list@@fp @TO@ call@@php_stream_close fp @AT@ 11691 @LENGTH@ 2\n" +
+ "---------------------INS argument@@fp @TO@ argument_list@@fp @AT@ 11692 @LENGTH@ 2\n" +
+ "------------------------INS expr@@fp @TO@ argument@@fp @AT@ 11692 @LENGTH@ 2\n" +
+ "---------------------------INS name@@fp @TO@ expr@@fp @AT@ 11692 @LENGTH@ 2\n" +
+ "---------INS macro@@phar_destroy_phar_data myphar TSRMLS_CC @TO@ block@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @AT@ 11701 @LENGTH@ 39\n" +
+ "------------INS name@@phar_destroy_phar_data @TO@ macro@@phar_destroy_phar_data myphar TSRMLS_CC @AT@ 11701 @LENGTH@ 22\n" +
+ "------------INS argument_list@@myphar TSRMLS_CC @TO@ macro@@phar_destroy_phar_data myphar TSRMLS_CC @AT@ 11723 @LENGTH@ 16\n" +
+ "---------------INS argument@@myphar TSRMLS_CC @TO@ argument_list@@myphar TSRMLS_CC @AT@ 11724 @LENGTH@ 16\n" +
+ "---------INS return@@return FAILURE @TO@ block@@if error spprintf error 4096 \"phar error: \\\"%s\\\" is a corrupted tar file (invalid entry size)\" fname php_stream_close fp phar_destroy_phar_data myphar TSRMLS_CC return FAILURE @AT@ 11747 @LENGTH@ 14\n" +
+ "------------INS expr@@FAILURE @TO@ return@@return FAILURE @AT@ 11754 @LENGTH@ 7\n" +
+ "---------------INS name@@FAILURE @TO@ expr@@FAILURE @AT@ 11754 @LENGTH@ 7\n");
+ }
+ @Test//TODO
+ public void test_php_src_c71358_283565() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_c71358_283565_main#main.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && strcmp new_value \"syslog\" if PG safe_mode && ( ! php_checkuid new_value NULL CHECKUID_CHECK_FILE_AND_DIR ) return FAILURE if PG open_basedir && php_check_open_basedir new_value TSRMLS_CC return FAILURE @TO@ if ( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && new_value && strcmp new_value \"syslog\" if PG safe_mode && ( ! php_checkuid new_value NULL CHECKUID_CHECK_FILE_AND_DIR ) return FAILURE if PG open_basedir && php_check_open_basedir new_value TSRMLS_CC return FAILURE @AT@ 7907 @LENGTH@ 277\n" +
+ "---UPD condition@@( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && strcmp new_value \"syslog\" @TO@ ( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && new_value && strcmp new_value \"syslog\" @AT@ 7907 @LENGTH@ 98\n" +
+ "------UPD expr@@( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && strcmp new_value \"syslog\" @TO@ ( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && new_value && strcmp new_value \"syslog\" @AT@ 7908 @LENGTH@ 98\n" +
+ "---------INS name@@new_value @TO@ expr@@( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && strcmp new_value \"syslog\" @AT@ 7979 @LENGTH@ 9\n" +
+ "---------INS operator@@&& @TO@ expr@@( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && strcmp new_value \"syslog\" @AT@ 7989 @LENGTH@ 2\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD if@@if stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS if PG safe_mode && ( ! php_checkuid new_value NULL CHECKUID_CHECK_FILE_AND_DIR ) return FAILURE @TO@ if ( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && new_value if PG safe_mode && ( ! php_checkuid new_value NULL CHECKUID_CHECK_FILE_AND_DIR ) return FAILURE @AT@ 8472 @LENGTH@ 164\n" +
+ "---UPD condition@@stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS @TO@ ( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && new_value @AT@ 8472 @LENGTH@ 65\n" +
+ "------UPD expr@@stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS @TO@ ( stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS ) && new_value @AT@ 8473 @LENGTH@ 65\n" +
+ "---------INS operator@@( @TO@ expr@@stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS @AT@ 8484 @LENGTH@ 1\n" +
+ "---------INS operator@@) @TO@ expr@@stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS @AT@ 8550 @LENGTH@ 1\n" +
+ "---------INS operator@@&& @TO@ expr@@stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS @AT@ 8552 @LENGTH@ 2\n" +
+ "---------INS name@@new_value @TO@ expr@@stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS @AT@ 8555 @LENGTH@ 9\n");
+ }
+
+ @Test
+ public void test_php_src_920358_bd306c() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_920358_bd306c_ext#dom#xpath.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS else@@else RETURN_FALSE @TO@ if@@if xpathobjp -> type == XPATH_NODESET int i xmlNodeSetPtr nodesetp if NULL == ( nodesetp = xpathobjp -> nodesetval ) xmlXPathFreeObject xpathobjp RETURN_FALSE MAKE_STD_ZVAL retval array_init retval for i = 0 i < nodesetp -> nodeNr i ++ xmlNodePtr node nodesetp -> nodeTab ][i zval * child MAKE_STD_ZVAL child if node -> type == XML_NAMESPACE_DECL xmlNsPtr curns xmlNodePtr nsparent nsparent = node -> _private curns = xmlNewNs NULL node -> name NULL if node -> children curns -> prefix = xmlStrdup ( char * ) node -> children if node -> children node = xmlNewDocNode docp NULL ( char * ) node -> children node -> name else node = xmlNewDocNode docp NULL \"xmlns\" node -> name node -> type = XML_NAMESPACE_DECL node -> parent = nsparent node -> ns = curns child = php_dom_create_object node &ret NULL child intern TSRMLS_CC add_next_index_zval retval child @AT@ 6427 @LENGTH@ 17\n" +
+ "---INS block@@RETURN_FALSE @TO@ else@@else RETURN_FALSE @AT@ 6427 @LENGTH@ 12\n" +
+ "------INS expr_stmt@@RETURN_FALSE @TO@ block@@RETURN_FALSE @AT@ 6431 @LENGTH@ 12\n" +
+ "---------INS expr@@RETURN_FALSE @TO@ expr_stmt@@RETURN_FALSE @AT@ 6431 @LENGTH@ 12\n" +
+ "------------INS name@@RETURN_FALSE @TO@ expr@@RETURN_FALSE @AT@ 6431 @LENGTH@ 12\n");
+ }
+ @Test
+ public void test_php_src_c3c87e_c9c279() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_c3c87e_c9c279_ext#zip#php_zip.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS else@@else RETURN_FALSE @TO@ if@@if stream php_stream_to_zval stream return_value @AT@ 64780 @LENGTH@ 17\n" +
+ "---INS block@@RETURN_FALSE @TO@ else@@else RETURN_FALSE @AT@ 64780 @LENGTH@ 12\n" +
+ "------INS expr_stmt@@RETURN_FALSE @TO@ block@@RETURN_FALSE @AT@ 64784 @LENGTH@ 12\n" +
+ "---------INS expr@@RETURN_FALSE @TO@ expr_stmt@@RETURN_FALSE @AT@ 64784 @LENGTH@ 12\n" +
+ "------------INS name@@RETURN_FALSE @TO@ expr@@RETURN_FALSE @AT@ 64784 @LENGTH@ 12\n");
+ }
+ @Test
+ public void test_php_src_c4ee76_2a1218() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_c4ee76_2a1218_ext#ftp#ftp.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@SSL_CTX_set_options ctx SSL_OP_ALL @TO@ block@@ctx = SSL_CTX_new SSLv23_client_method if ctx == NULL php_error_docref NULL TSRMLS_CC E_WARNING \"failed to create the SSL context\" return 0 ftp -> ssl_handle = SSL_new ctx if ftp -> ssl_handle == NULL php_error_docref NULL TSRMLS_CC E_WARNING \"failed to create the SSL handle\" SSL_CTX_free ctx return 0 SSL_set_fd ftp -> ssl_handle ftp -> fd if SSL_connect ftp -> ssl_handle <= 0 php_error_docref NULL TSRMLS_CC E_WARNING \"SSL/TLS handshake failed\" SSL_shutdown ftp -> ssl_handle return 0 ftp -> ssl_active = 1 if ! ftp -> old_ssl if ! ftp_putcmd ftp \"PBSZ\" \"0\" return 0 if ! ftp_getresp ftp return 0 if ! ftp_putcmd ftp \"PROT\" \"P\" return 0 if ! ftp_getresp ftp return 0 ftp -> use_ssl_for_data = ( ftp -> resp >= 200 && ftp -> resp <= 299 ) @AT@ 6309 @LENGTH@ 34\n" +
+ "---INS expr@@SSL_CTX_set_options ctx SSL_OP_ALL @TO@ expr_stmt@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 6309 @LENGTH@ 34\n" +
+ "------INS call@@SSL_CTX_set_options ctx SSL_OP_ALL @TO@ expr@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 6309 @LENGTH@ 34\n" +
+ "---------INS name@@SSL_CTX_set_options @TO@ call@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 6309 @LENGTH@ 19\n" +
+ "---------INS argument_list@@ctx SSL_OP_ALL @TO@ call@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 6328 @LENGTH@ 14\n" +
+ "------------INS argument@@ctx @TO@ argument_list@@ctx SSL_OP_ALL @AT@ 6329 @LENGTH@ 3\n" +
+ "---------------INS expr@@ctx @TO@ argument@@ctx @AT@ 6329 @LENGTH@ 3\n" +
+ "------------------INS name@@ctx @TO@ expr@@ctx @AT@ 6329 @LENGTH@ 3\n" +
+ "------------INS argument@@SSL_OP_ALL @TO@ argument_list@@ctx SSL_OP_ALL @AT@ 6334 @LENGTH@ 10\n" +
+ "---------------INS expr@@SSL_OP_ALL @TO@ argument@@SSL_OP_ALL @AT@ 6334 @LENGTH@ 10\n" +
+ "------------------INS name@@SSL_OP_ALL @TO@ expr@@SSL_OP_ALL @AT@ 6334 @LENGTH@ 10\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"INS expr_stmt@@SSL_CTX_set_options ctx SSL_OP_ALL @TO@ block@@ctx = SSL_CTX_new SSLv23_client_method if ctx == NULL php_error_docref NULL TSRMLS_CC E_WARNING \"data_accept: failed to create the SSL context\" return 0 data -> ssl_handle = SSL_new ctx if data -> ssl_handle == NULL php_error_docref NULL TSRMLS_CC E_WARNING \"data_accept: failed to create the SSL handle\" SSL_CTX_free ctx return 0 SSL_set_fd data -> ssl_handle data -> fd if ftp -> old_ssl SSL_copy_session_id data -> ssl_handle ftp -> ssl_handle if SSL_connect data -> ssl_handle <= 0 php_error_docref NULL TSRMLS_CC E_WARNING \"data_accept: SSL/TLS handshake failed\" SSL_shutdown data -> ssl_handle return 0 data -> ssl_active = 1 @AT@ 28312 @LENGTH@ 34\n" +
+ "---INS expr@@SSL_CTX_set_options ctx SSL_OP_ALL @TO@ expr_stmt@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 28312 @LENGTH@ 34\n" +
+ "------INS call@@SSL_CTX_set_options ctx SSL_OP_ALL @TO@ expr@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 28312 @LENGTH@ 34\n" +
+ "---------INS name@@SSL_CTX_set_options @TO@ call@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 28312 @LENGTH@ 19\n" +
+ "---------INS argument_list@@ctx SSL_OP_ALL @TO@ call@@SSL_CTX_set_options ctx SSL_OP_ALL @AT@ 28331 @LENGTH@ 14\n" +
+ "------------INS argument@@ctx @TO@ argument_list@@ctx SSL_OP_ALL @AT@ 28332 @LENGTH@ 3\n" +
+ "---------------INS expr@@ctx @TO@ argument@@ctx @AT@ 28332 @LENGTH@ 3\n" +
+ "------------------INS name@@ctx @TO@ expr@@ctx @AT@ 28332 @LENGTH@ 3\n" +
+ "------------INS argument@@SSL_OP_ALL @TO@ argument_list@@ctx SSL_OP_ALL @AT@ 28337 @LENGTH@ 10\n" +
+ "---------------INS expr@@SSL_OP_ALL @TO@ argument@@SSL_OP_ALL @AT@ 28337 @LENGTH@ 10\n" +
+ "------------------INS name@@SSL_OP_ALL @TO@ expr@@SSL_OP_ALL @AT@ 28337 @LENGTH@ 10\n");
+ }
+ @Test
+ public void test_php_src_bb5faa_c5152b() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_bb5faa_c5152b_TSRM#tsrm_virtual_cwd.c");//
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@tsrm_free_alloca tmp use_heap @TO@ block@@return - 1 @AT@ 28559 @LENGTH@ 29\n" +
+ "---INS expr@@tsrm_free_alloca tmp use_heap @TO@ expr_stmt@@tsrm_free_alloca tmp use_heap @AT@ 28559 @LENGTH@ 29\n" +
+ "------INS call@@tsrm_free_alloca tmp use_heap @TO@ expr@@tsrm_free_alloca tmp use_heap @AT@ 28559 @LENGTH@ 29\n" +
+ "---------INS name@@tsrm_free_alloca @TO@ call@@tsrm_free_alloca tmp use_heap @AT@ 28559 @LENGTH@ 16\n" +
+ "---------INS argument_list@@tmp use_heap @TO@ call@@tsrm_free_alloca tmp use_heap @AT@ 28575 @LENGTH@ 12\n" +
+ "------------INS argument@@tmp @TO@ argument_list@@tmp use_heap @AT@ 28576 @LENGTH@ 3\n" +
+ "---------------INS expr@@tmp @TO@ argument@@tmp @AT@ 28576 @LENGTH@ 3\n" +
+ "------------------INS name@@tmp @TO@ expr@@tmp @AT@ 28576 @LENGTH@ 3\n" +
+ "------------INS argument@@use_heap @TO@ argument_list@@tmp use_heap @AT@ 28581 @LENGTH@ 8\n" +
+ "---------------INS expr@@use_heap @TO@ argument@@use_heap @AT@ 28581 @LENGTH@ 8\n" +
+ "------------------INS name@@use_heap @TO@ expr@@use_heap @AT@ 28581 @LENGTH@ 8\n");
+ }
+ @Test
+ public void test_php_src_4f7339_317bcb() throws IOException {
+ //cpython_b3a601_63d5c1_Objects#unicodeobject.c
+ //linux_659d8c_fd2a50a_tools#perf#builtin-kmem.c
+ //openssl_6a14fe7_0ff368_crypto#LPdir_win.c
+ //linux_d1dc69_cc2115c_sound#soc#codecs#wm8776.c
+ //linux_ff244c6_a0917e0_drivers#net#tun.c .
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_4f7339_317bcb_ext#standard#dns.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS if@@if ( ll + n ) >= dlen n = dlen - ( ll + 1 ) @TO@ block@@n = cp ][ll memcpy tp + ll cp + ll + 1 n add_next_index_stringl entries cp + ll + 1 n 1 ll = ll + n + 1 @AT@ 13114 @LENGTH@ 43\n" +
+ "---INS condition@@( ll + n ) >= dlen @TO@ if@@if ( ll + n ) >= dlen n = dlen - ( ll + 1 ) @AT@ 13114 @LENGTH@ 18\n" +
+ "------INS expr@@( ll + n ) >= dlen @TO@ condition@@( ll + n ) >= dlen @AT@ 13115 @LENGTH@ 18\n" +
+ "---------INS operator@@( @TO@ expr@@( ll + n ) >= dlen @AT@ 13115 @LENGTH@ 1\n" +
+ "---------INS name@@ll @TO@ expr@@( ll + n ) >= dlen @AT@ 13116 @LENGTH@ 2\n" +
+ "---------INS operator@@+ @TO@ expr@@( ll + n ) >= dlen @AT@ 13119 @LENGTH@ 1\n" +
+ "---------INS name@@n @TO@ expr@@( ll + n ) >= dlen @AT@ 13121 @LENGTH@ 1\n" +
+ "---------INS operator@@) @TO@ expr@@( ll + n ) >= dlen @AT@ 13122 @LENGTH@ 1\n" +
+ "---------INS operator@@>= @TO@ expr@@( ll + n ) >= dlen @AT@ 13124 @LENGTH@ 2\n" +
+ "---------INS name@@dlen @TO@ expr@@( ll + n ) >= dlen @AT@ 13127 @LENGTH@ 4\n" +
+ "---INS then@@n = dlen - ( ll + 1 ) @TO@ if@@if ( ll + n ) >= dlen n = dlen - ( ll + 1 ) @AT@ 13133 @LENGTH@ 21\n" +
+ "------INS block@@n = dlen - ( ll + 1 ) @TO@ then@@n = dlen - ( ll + 1 ) @AT@ 13133 @LENGTH@ 21\n" +
+ "---------INS expr_stmt@@n = dlen - ( ll + 1 ) @TO@ block@@n = dlen - ( ll + 1 ) @AT@ 13181 @LENGTH@ 21\n" +
+ "------------INS expr@@n = dlen - ( ll + 1 ) @TO@ expr_stmt@@n = dlen - ( ll + 1 ) @AT@ 13181 @LENGTH@ 21\n" +
+ "---------------INS name@@n @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13181 @LENGTH@ 1\n" +
+ "---------------INS operator@@= @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13183 @LENGTH@ 1\n" +
+ "---------------INS name@@dlen @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13185 @LENGTH@ 4\n" +
+ "---------------INS operator@@- @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13190 @LENGTH@ 1\n" +
+ "---------------INS operator@@( @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13192 @LENGTH@ 1\n" +
+ "---------------INS name@@ll @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13193 @LENGTH@ 2\n" +
+ "---------------INS operator@@+ @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13196 @LENGTH@ 1\n" +
+ "---------------INS literal:number@@1 @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13198 @LENGTH@ 1\n" +
+ "---------------INS operator@@) @TO@ expr@@n = dlen - ( ll + 1 ) @AT@ 13199 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_php_src_e76cf8_39753f() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("php-src_e76cf8_39753f_Zend#zend.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+ @Test
+ public void test_cpython_f62026_71eb864() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_f62026_71eb864_Python#ceval.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+ @Test
+ public void test_cpython_df0d00_1254d7() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_df0d00_1254d7_Python#ceval.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+ @Test
+ public void test_cpython_6a619f_46ab6d() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("cpython_6a619f_46ab6d_Modules#posixmodule.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+ @Test
+ public void test_gzip_051ed8_8b83dc() throws IOException {
+ //null pointer
+ List hierarchicalActionSets = getHierarchicalActionSets("gzip_051ed8_8b83dc_gzip.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+
+ public List getHierarchicalActionSets(String s) throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath", "FORKJOIN");
+// String root = appProps.getProperty("inputPath");
+ String root = "src/main/resource/testFiles";
+ String project = s.split("_")[0];
+ root = root + "/"+project+"/";
+ String filename = s.replace(project+"_","");
+ try{
+ File revFile = new File(root + "revFiles/" + filename);
+ File prevFile = new File(root + "prevFiles/prev_" + filename);
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+// srcMLPath = "/usr/local/bin/srcml";
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ return hierarchicalActionSets;
+ }catch (NullPointerException n){
+ String cmd = "cp /Users/anil.koyuncu/projects/test/fixminer-data/patches/"+project+"/"+n.getMessage().split(root)[1] + " /Users/anil.koyuncu/projects/test/fixminerC/"+n.getMessage();
+ CallShell cs = new CallShell();
+ try {
+ cs.runShell(cmd);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ }
+
+
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestIntroClass.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestIntroClass.java
new file mode 100644
index 0000000..fb980bd
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestIntroClass.java
@@ -0,0 +1,441 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class TestIntroClass {
+
+
+
+ @Test
+ public void test_manybugs_gmp_14166_14167() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gmp:14166-14167");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@ssize = SIZ a >= 0 1 else - 1 @TO@ ssize = SIZ a >= 0 ( asize != 0 ) else - 1 @AT@ 1795 @LENGTH@ 29\n" +
+ "---UPD expr@@ssize = SIZ a >= 0 1 else - 1 @TO@ ssize = SIZ a >= 0 ( asize != 0 ) else - 1 @AT@ 1795 @LENGTH@ 29\n" +
+ "------UPD ternary@@SIZ a >= 0 1 else - 1 @TO@ SIZ a >= 0 ( asize != 0 ) else - 1 @AT@ 1803 @LENGTH@ 21\n" +
+ "---------UPD then@@1 @TO@ ( asize != 0 ) @AT@ 1817 @LENGTH@ 4\n" +
+ "------------UPD expr@@1 @TO@ ( asize != 0 ) @AT@ 1818 @LENGTH@ 1\n" +
+ "---------------INS operator@@( @TO@ expr@@1 @AT@ 1813 @LENGTH@ 1\n" +
+ "---------------INS name@@asize @TO@ expr@@1 @AT@ 1814 @LENGTH@ 5\n" +
+ "---------------UPD literal@@1 @TO@ 0 @AT@ 1818 @LENGTH@ 1\n" +
+ "---------------INS operator@@!= @TO@ expr@@1 @AT@ 1820 @LENGTH@ 2\n" +
+ "---------------INS operator@@) @TO@ expr@@1 @AT@ 1824 @LENGTH@ 1\n");
+ }
+
+
+ @Test
+ public void test_manybugs_gzip_2009_09_26_a1d3d4019d_f17cbd13a1() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gzip:2009-09-26-a1d3d4019d-f17cbd13a1");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@ifd = fileno stdin @TO@ block@@if ! force && ! list && isatty fileno ( FILE * ) ( decompress stdin else stdout ) fprintf stderr \"%s: compressed data not %s a terminal. Use -f to force %scompression.\\n\" program_name decompress \"read from\" else \"written to\" decompress \"de\" else \"\" fprintf stderr \"For help, type: %s -h\\n\" program_name do_exit ERROR if decompress || ! ascii if ! test && ! list && ( ! decompress || ! ascii ) strcpy ifname \"stdin\" strcpy ofname \"stdout\" if fstat fileno stdin & istat != 0 progerror \"standard input\" do_exit ERROR ifile_size = S_ISREG istat . st_mode istat . st_size else - 1 time_stamp . tv_nsec = - 1 if ! no_time || list time_stamp = get_stat_mtime & istat clear_bufs to_stdout = 1 part_nb = 0 if decompress method = get_method ifd if method < 0 do_exit exit_code if list do_list ifd method for if * work fileno stdin fileno stdout != OK if input_eof break; method = get_method ifd if method < 0 bytes_out = 0 if verbose @AT@ 20290 @LENGTH@ 18\n" +
+ "---INS expr@@ifd = fileno stdin @TO@ expr_stmt@@ifd = fileno stdin @AT@ 20290 @LENGTH@ 18\n" +
+ "------INS name@@ifd @TO@ expr@@ifd = fileno stdin @AT@ 20290 @LENGTH@ 3\n" +
+ "------INS operator@@= @TO@ expr@@ifd = fileno stdin @AT@ 20294 @LENGTH@ 1\n" +
+ "------INS call@@fileno stdin @TO@ expr@@ifd = fileno stdin @AT@ 20296 @LENGTH@ 12\n" +
+ "---------INS name@@fileno @TO@ call@@fileno stdin @AT@ 20296 @LENGTH@ 6\n" +
+ "---------INS argument_list@@stdin @TO@ call@@fileno stdin @AT@ 20302 @LENGTH@ 8\n" +
+ "------------INS argument@@stdin @TO@ argument_list@@stdin @AT@ 20303 @LENGTH@ 5\n" +
+ "---------------INS expr@@stdin @TO@ argument@@stdin @AT@ 20303 @LENGTH@ 5\n" +
+ "------------------INS name@@stdin @TO@ expr@@stdin @AT@ 20303 @LENGTH@ 5\n");
+ }
+
+ @Test
+ public void test_manybugs_gzip_2010_02_19_3eb6091d69_884ef6d16c() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gzip:2010-02-19-3eb6091d69-884ef6d16c");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ( z_len == 0 && ! decompress ) || z_len > MAX_SUFFIX fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix do_exit ERROR @TO@ if z_len == 0 || z_len > MAX_SUFFIX fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix do_exit ERROR @AT@ 18150 @LENGTH@ 136\n" +
+ "---UPD condition@@( z_len == 0 && ! decompress ) || z_len > MAX_SUFFIX @TO@ z_len == 0 || z_len > MAX_SUFFIX @AT@ 18150 @LENGTH@ 52\n" +
+ "------UPD expr@@( z_len == 0 && ! decompress ) || z_len > MAX_SUFFIX @TO@ z_len == 0 || z_len > MAX_SUFFIX @AT@ 18151 @LENGTH@ 52\n" +
+ "---------DEL operator@@( @AT@ 18151 @LENGTH@ 1\n" +
+ "---------DEL operator@@&& @AT@ 18163 @LENGTH@ 2\n" +
+ "---------DEL operator@@! @AT@ 18166 @LENGTH@ 1\n" +
+ "---------DEL name@@decompress @AT@ 18167 @LENGTH@ 10\n" +
+ "---------DEL operator@@) @AT@ 18177 @LENGTH@ 1\n" +
+ "---UPD then@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix do_exit ERROR @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix do_exit ERROR @AT@ 18202 @LENGTH@ 80\n" +
+ "------UPD block@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix do_exit ERROR @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix do_exit ERROR @AT@ 18202 @LENGTH@ 128\n" +
+ "---------UPD expr_stmt@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18212 @LENGTH@ 66\n" +
+ "------------UPD expr@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18212 @LENGTH@ 66\n" +
+ "---------------UPD call@@fprintf stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ fprintf stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18212 @LENGTH@ 66\n" +
+ "------------------UPD argument_list@@stderr \"%s: incorrect suffix '%s'\\n\" program_name z_suffix @TO@ stderr \"%s: invalid suffix '%s'\\n\" program_name z_suffix @AT@ 18219 @LENGTH@ 80\n" +
+ "---------------------UPD argument@@\"%s: incorrect suffix '%s'\\n\" @TO@ \"%s: invalid suffix '%s'\\n\" @AT@ 18228 @LENGTH@ 29\n" +
+ "------------------------UPD expr@@\"%s: incorrect suffix '%s'\\n\" @TO@ \"%s: invalid suffix '%s'\\n\" @AT@ 18228 @LENGTH@ 29\n" +
+ "---------------------------UPD literal@@\"%s: incorrect suffix '%s'\\n\" @TO@ \"%s: invalid suffix '%s'\\n\" @AT@ 18228 @LENGTH@ 29\n");
+ }
+ @Test
+ public void test_manybugs_libtiff_2005_12_21_3b848a7_3edb9cd() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2005-12-21-3b848a7-3edb9cd");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if td -> td_nstrips > 1 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 TIFFWarning module \"%s: Wrong \\\"%s\\\" field, ignoring and calculating from imagelength\" tif -> tif_name _TIFFFieldWithTag tif TIFFTAG_STRIPBYTECOUNTS -> field_name if EstimateStripByteCounts tif dir dircount < 0 bad @TO@ if td -> td_nstrips > 2 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 TIFFWarning module \"%s: Wrong \\\"%s\\\" field, ignoring and calculating from imagelength\" tif -> tif_name _TIFFFieldWithTag tif TIFFTAG_STRIPBYTECOUNTS -> field_name if EstimateStripByteCounts tif dir dircount < 0 bad @AT@ 19379 @LENGTH@ 344\n" +
+ "---UPD condition@@td -> td_nstrips > 1 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @TO@ td -> td_nstrips > 2 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @AT@ 19379 @LENGTH@ 129\n" +
+ "------UPD expr@@td -> td_nstrips > 1 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @TO@ td -> td_nstrips > 2 && td -> td_compression == COMPRESSION_NONE && td -> td_stripbytecount ][0 != td -> td_stripbytecount ][1 @AT@ 19380 @LENGTH@ 126\n" +
+ "---------UPD literal@@1 @TO@ 2 @AT@ 19397 @LENGTH@ 1\n");
+
+ }
+ @Test
+ public void test_manybugs_libtiff_2007_07_19_ce4b7af_7d6e298() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-07-19-ce4b7af-7d6e298");
+ Assert.assertEquals(hierarchicalActionSets.size(), 4);
+
+// Assert.fail();
+ }
+ @Test
+ public void test_manybugs_libtiff_2009_02_05_764dbba_2e42d63() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2009-02-05-764dbba-2e42d63");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@TIFFGetFieldDefaulted in TIFFTAG_RESOLUTIONUNIT & res_unit @TO@ TIFFGetField in TIFFTAG_RESOLUTIONUNIT & res_unit @AT@ 163079 @LENGTH@ 58\n" +
+ "---UPD expr@@TIFFGetFieldDefaulted in TIFFTAG_RESOLUTIONUNIT & res_unit @TO@ TIFFGetField in TIFFTAG_RESOLUTIONUNIT & res_unit @AT@ 163079 @LENGTH@ 58\n" +
+ "------UPD call@@TIFFGetFieldDefaulted in TIFFTAG_RESOLUTIONUNIT & res_unit @TO@ TIFFGetField in TIFFTAG_RESOLUTIONUNIT & res_unit @AT@ 163079 @LENGTH@ 58\n" +
+ "---------UPD name@@TIFFGetFieldDefaulted @TO@ TIFFGetField @AT@ 163079 @LENGTH@ 21\n");
+
+
+ }
+ @Test
+ public void test_manybugs_libtiff_2008_04_15_2e8b2f1_0d27dc0() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2008-04-15-2e8b2f1-0d27dc0");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(), StringUtils.join( new String[] {"UPD decl_stmt@@static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1793 @LENGTH@ 17245\n" ,
+ "---UPD decl@@static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ static TIFFField tiffFields [] TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1793 @LENGTH@ 17245\n" ,
+ "------UPD init@@TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1825 @LENGTH@ 17214\n" ,
+ "---------UPD expr@@TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1825 @LENGTH@ 17214\n" ,
+ "------------UPD block@@TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @TO@ TIFFTAG_SUBFILETYPE 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"SubfileType\" NULL TIFFTAG_OSUBFILETYPE 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_SUBFILETYPE 1 0 \"OldSubfileType\" NULL TIFFTAG_IMAGEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 0 0 \"ImageWidth\" NULL TIFFTAG_IMAGELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDIMENSIONS 1 0 \"ImageLength\" NULL TIFFTAG_BITSPERSAMPLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_BITSPERSAMPLE 0 0 \"BitsPerSample\" NULL TIFFTAG_COMPRESSION - 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_COMPRESSION 0 0 \"Compression\" NULL TIFFTAG_PHOTOMETRIC 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PHOTOMETRIC 0 0 \"PhotometricInterpretation\" NULL TIFFTAG_THRESHHOLDING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_THRESHHOLDING 1 0 \"Threshholding\" NULL TIFFTAG_CELLWIDTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellWidth\" NULL TIFFTAG_CELLLENGTH 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"CellLength\" NULL TIFFTAG_FILLORDER 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_FILLORDER 0 0 \"FillOrder\" NULL TIFFTAG_DOCUMENTNAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DocumentName\" NULL TIFFTAG_IMAGEDESCRIPTION - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageDescription\" NULL TIFFTAG_MAKE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Make\" NULL TIFFTAG_MODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Model\" NULL TIFFTAG_STRIPOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"StripOffsets\" NULL TIFFTAG_ORIENTATION 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_ORIENTATION 0 0 \"Orientation\" NULL TIFFTAG_SAMPLESPERPIXEL 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLESPERPIXEL 0 0 \"SamplesPerPixel\" NULL TIFFTAG_ROWSPERSTRIP 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_ROWSPERSTRIP 0 0 \"RowsPerStrip\" NULL TIFFTAG_STRIPBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"StripByteCounts\" NULL TIFFTAG_MINSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MINSAMPLEVALUE 1 0 \"MinSampleValue\" NULL TIFFTAG_MAXSAMPLEVALUE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_MAXSAMPLEVALUE 1 0 \"MaxSampleValue\" NULL TIFFTAG_XRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"XResolution\" NULL TIFFTAG_YRESOLUTION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_RESOLUTION 1 0 \"YResolution\" NULL TIFFTAG_PLANARCONFIG 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_PLANARCONFIG 0 0 \"PlanarConfiguration\" NULL TIFFTAG_PAGENAME - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PageName\" NULL TIFFTAG_XPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"XPosition\" NULL TIFFTAG_YPOSITION 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_POSITION 1 0 \"YPosition\" NULL TIFFTAG_FREEOFFSETS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeOffsets\" NULL TIFFTAG_FREEBYTECOUNTS - 1 - 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 0 0 \"FreeByteCounts\" NULL TIFFTAG_GRAYRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseUnit\" NULL TIFFTAG_GRAYRESPONSECURVE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"GrayResponseCurve\" NULL TIFFTAG_RESOLUTIONUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_RESOLUTIONUNIT 1 0 \"ResolutionUnit\" NULL TIFFTAG_PAGENUMBER 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_PAGENUMBER 1 0 \"PageNumber\" NULL TIFFTAG_COLORRESPONSEUNIT 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_IGNORE 1 0 \"ColorResponseUnit\" NULL TIFFTAG_TRANSFERFUNCTION - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_TRANSFERFUNCTION 1 0 \"TransferFunction\" NULL TIFFTAG_SOFTWARE - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Software\" NULL TIFFTAG_DATETIME 20 20 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"DateTime\" NULL TIFFTAG_ARTIST - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Artist\" NULL TIFFTAG_HOSTCOMPUTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"HostComputer\" NULL TIFFTAG_WHITEPOINT 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"WhitePoint\" NULL TIFFTAG_PRIMARYCHROMATICITIES 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"PrimaryChromaticities\" NULL TIFFTAG_COLORMAP - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_OTHER TIFF_SETGET_UNDEFINED FIELD_COLORMAP 1 0 \"ColorMap\" NULL TIFFTAG_HALFTONEHINTS 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_HALFTONEHINTS 1 0 \"HalftoneHints\" NULL TIFFTAG_TILEWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileWidth\" NULL TIFFTAG_TILELENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDIMENSIONS 0 0 \"TileLength\" NULL TIFFTAG_TILEOFFSETS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPOFFSETS 0 0 \"TileOffsets\" NULL TIFFTAG_TILEBYTECOUNTS - 1 1 TIFF_LONG8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_STRIPBYTECOUNTS 0 0 \"TileByteCounts\" NULL TIFFTAG_SUBIFD - 1 - 1 TIFF_IFD8 0 TIFF_SETGET_C16_IFD8 TIFF_SETGET_UNDEFINED FIELD_SUBIFD 1 1 \"SubIFD\" & tiffFieldArray TIFFTAG_INKSET 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InkSet\" NULL TIFFTAG_INKNAMES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_C16_ASCII TIFF_SETGET_UNDEFINED FIELD_INKNAMES 1 1 \"InkNames\" NULL TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL TIFFTAG_DOTRANGE 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DotRange\" NULL TIFFTAG_TARGETPRINTER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TargetPrinter\" NULL TIFFTAG_EXTRASAMPLES - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 1 \"ExtraSamples\" NULL TIFFTAG_SAMPLEFORMAT - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"SampleFormat\" NULL TIFFTAG_SMINSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMINSAMPLEVALUE 1 0 \"SMinSampleValue\" NULL TIFFTAG_SMAXSAMPLEVALUE - 2 - 1 TIFF_ANY 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_SMAXSAMPLEVALUE 1 0 \"SMaxSampleValue\" NULL TIFFTAG_CLIPPATH - 1 - 3 TIFF_BYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ClipPath\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_XCLIPPATHUNITS 1 1 TIFF_SBYTE 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"XClipPathUnits\" NULL TIFFTAG_YCLIPPATHUNITS 1 1 TIFF_SLONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YClipPathUnits\" NULL TIFFTAG_YCBCRCOEFFICIENTS 3 3 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"YCbCrCoefficients\" NULL TIFFTAG_YCBCRSUBSAMPLING 2 2 TIFF_SHORT 0 TIFF_SETGET_UINT16_PAIR TIFF_SETGET_UNDEFINED FIELD_YCBCRSUBSAMPLING 0 0 \"YCbCrSubsampling\" NULL TIFFTAG_YCBCRPOSITIONING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_YCBCRPOSITIONING 0 0 \"YCbCrPositioning\" NULL TIFFTAG_REFERENCEBLACKWHITE 6 6 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ReferenceBlackWhite\" NULL TIFFTAG_XMLPACKET - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"XMLPacket\" NULL TIFFTAG_MATTEING 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_EXTRASAMPLES 0 0 \"Matteing\" NULL TIFFTAG_DATATYPE - 2 - 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_SAMPLEFORMAT 0 0 \"DataType\" NULL TIFFTAG_IMAGEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_IMAGEDEPTH 0 0 \"ImageDepth\" NULL TIFFTAG_TILEDEPTH 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_TILEDEPTH 0 0 \"TileDepth\" NULL TIFFTAG_PIXAR_IMAGEFULLWIDTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullWidth\" NULL TIFFTAG_PIXAR_IMAGEFULLLENGTH 1 1 TIFF_LONG 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"ImageFullLength\" NULL TIFFTAG_PIXAR_TEXTUREFORMAT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureFormat\" NULL TIFFTAG_PIXAR_WRAPMODES - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"TextureWrapModes\" NULL TIFFTAG_PIXAR_FOVCOT 1 1 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"FieldOfViewCotangent\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToScreen\" NULL TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 16 16 TIFF_FLOAT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"MatrixWorldToCamera\" NULL TIFFTAG_COPYRIGHT - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"Copyright\" NULL TIFFTAG_RICHTIFFIPTC - 3 - 3 TIFF_LONG 0 TIFF_SETGET_C32_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"RichTIFFIPTC\" NULL TIFFTAG_PHOTOSHOP - 3 - 3 TIFF_BYTE 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"Photoshop\" NULL TIFFTAG_EXIFIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"EXIFIFDOffset\" & exifFieldArray TIFFTAG_ICCPROFILE - 3 - 3 TIFF_UNDEFINED 0 TIFF_SETGET_C32_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ICC Profile\" NULL TIFFTAG_GPSIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_IFD8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"GPSIFDOffset\" NULL TIFFTAG_FAXRECVPARAMS 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvParams\" NULL TIFFTAG_FAXSUBADDRESS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxSubAddress\" NULL TIFFTAG_FAXRECVTIME 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UINT32 FIELD_CUSTOM TRUE FALSE \"FaxRecvTime\" NULL TIFFTAG_FAXDCS - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_ASCII FIELD_CUSTOM TRUE FALSE \"FaxDcs\" NULL TIFFTAG_STONITS 1 1 TIFF_DOUBLE 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"StoNits\" NULL TIFFTAG_INTEROPERABILITYIFD 1 1 TIFF_IFD8 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"InteroperabilityIFDOffset\" NULL TIFFTAG_DNGVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGVersion\" NULL TIFFTAG_DNGBACKWARDVERSION 4 4 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DNGBackwardVersion\" NULL TIFFTAG_UNIQUECAMERAMODEL - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"UniqueCameraModel\" NULL TIFFTAG_LOCALIZEDCAMERAMODEL - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"LocalizedCameraModel\" NULL TIFFTAG_CFAPLANECOLOR - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CFAPlaneColor\" NULL TIFFTAG_CFALAYOUT 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CFALayout\" NULL TIFFTAG_LINEARIZATIONTABLE - 1 - 1 TIFF_SHORT 0 TIFF_SETGET_C16_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"LinearizationTable\" NULL TIFFTAG_BLACKLEVELREPEATDIM 2 2 TIFF_SHORT 0 TIFF_SETGET_C0_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BlackLevelRepeatDim\" NULL TIFFTAG_BLACKLEVEL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevel\" NULL TIFFTAG_BLACKLEVELDELTAH - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaH\" NULL TIFFTAG_BLACKLEVELDELTAV - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"BlackLevelDeltaV\" NULL TIFFTAG_WHITELEVEL - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"WhiteLevel\" NULL TIFFTAG_DEFAULTSCALE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultScale\" NULL TIFFTAG_BESTQUALITYSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BestQualityScale\" NULL TIFFTAG_DEFAULTCROPORIGIN 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropOrigin\" NULL TIFFTAG_DEFAULTCROPSIZE 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"DefaultCropSize\" NULL TIFFTAG_COLORMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix1\" NULL TIFFTAG_COLORMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ColorMatrix2\" NULL TIFFTAG_CAMERACALIBRATION1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration1\" NULL TIFFTAG_CAMERACALIBRATION2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CameraCalibration2\" NULL TIFFTAG_REDUCTIONMATRIX1 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix1\" NULL TIFFTAG_REDUCTIONMATRIX2 - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"ReductionMatrix2\" NULL TIFFTAG_ANALOGBALANCE - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AnalogBalance\" NULL TIFFTAG_ASSHOTNEUTRAL - 1 - 1 TIFF_RATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotNeutral\" NULL TIFFTAG_ASSHOTWHITEXY 2 2 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AsShotWhiteXY\" NULL TIFFTAG_BASELINEEXPOSURE 1 1 TIFF_SRATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineExposure\" NULL TIFFTAG_BASELINENOISE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineNoise\" NULL TIFFTAG_BASELINESHARPNESS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BaselineSharpness\" NULL TIFFTAG_BAYERGREENSPLIT 1 1 TIFF_LONG 0 TIFF_SETGET_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"BayerGreenSplit\" NULL TIFFTAG_LINEARRESPONSELIMIT 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LinearResponseLimit\" NULL TIFFTAG_CAMERASERIALNUMBER - 1 - 1 TIFF_ASCII 0 TIFF_SETGET_ASCII TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"CameraSerialNumber\" NULL TIFFTAG_LENSINFO 4 4 TIFF_RATIONAL 0 TIFF_SETGET_C0_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"LensInfo\" NULL TIFFTAG_CHROMABLURRADIUS 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ChromaBlurRadius\" NULL TIFFTAG_ANTIALIASSTRENGTH 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"AntiAliasStrength\" NULL TIFFTAG_SHADOWSCALE 1 1 TIFF_RATIONAL 0 TIFF_SETGET_DOUBLE TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ShadowScale\" NULL TIFFTAG_DNGPRIVATEDATA - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"DNGPrivateData\" NULL TIFFTAG_MAKERNOTESAFETY 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"MakerNoteSafety\" NULL TIFFTAG_CALIBRATIONILLUMINANT1 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant1\" NULL TIFFTAG_CALIBRATIONILLUMINANT2 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"CalibrationIlluminant2\" NULL TIFFTAG_RAWDATAUNIQUEID 16 16 TIFF_BYTE 0 TIFF_SETGET_C0_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"RawDataUniqueID\" NULL TIFFTAG_ORIGINALRAWFILENAME - 1 - 1 TIFF_BYTE 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 1 \"OriginalRawFileName\" NULL TIFFTAG_ORIGINALRAWFILEDATA - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"OriginalRawFileData\" NULL TIFFTAG_ACTIVEAREA 4 4 TIFF_LONG 0 TIFF_SETGET_C0_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 0 \"ActiveArea\" NULL TIFFTAG_MASKEDAREAS - 1 - 1 TIFF_LONG 0 TIFF_SETGET_C16_UINT32 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"MaskedAreas\" NULL TIFFTAG_ASSHOTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotICCProfile\" NULL TIFFTAG_ASSHOTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"AsShotPreProfileMatrix\" NULL TIFFTAG_CURRENTICCPROFILE - 1 - 1 TIFF_UNDEFINED 0 TIFF_SETGET_C16_UINT8 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentICCProfile\" NULL TIFFTAG_CURRENTPREPROFILEMATRIX - 1 - 1 TIFF_SRATIONAL 0 TIFF_SETGET_C16_FLOAT TIFF_SETGET_UNDEFINED FIELD_CUSTOM 0 1 \"CurrentPreProfileMatrix\" NULL @AT@ 1825 @LENGTH@ 19568\n" ,
+ "---------------UPD expr@@TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @TO@ TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @AT@ 8859 @LENGTH@ 118\n" ,
+ "------------------UPD block@@TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UNDEFINED TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @TO@ TIFFTAG_NUMBEROFINKS 1 1 TIFF_SHORT 0 TIFF_SETGET_UINT16 TIFF_SETGET_UNDEFINED FIELD_CUSTOM 1 0 \"NumberOfInks\" NULL @AT@ 8859 @LENGTH@ 134\n" ,
+ "---------------------UPD expr@@TIFF_SETGET_UNDEFINED @TO@ TIFF_SETGET_UINT16 @AT@ 8904 @LENGTH@ 21\n" ,
+ "------------------------UPD name@@TIFF_SETGET_UNDEFINED @TO@ TIFF_SETGET_UINT16 @AT@ 8904 @LENGTH@ 21\n"}));
+
+ }
+ @Test
+ public void test_manybugs_libtiff_2007_11_02_371336d_865f7b2() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-11-02-371336d-865f7b2");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@tmsize_t orig_rawcc tif -> tif_rawcc if tif -> tif_flags & TIFF_POSTENCODE tif -> tif_flags &= ~ TIFF_POSTENCODE if ! * tif -> tif_postencode tif TIFFErrorExt tif -> tif_clientdata module \"Error post-encoding before directory write\" ( 0 ) * tif -> tif_close tif if tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) if ( tif -> tif_flags & TIFF_MYBUFFER ) && tif -> tif_rawdata _TIFFfree tif -> tif_rawdata tif -> tif_rawdata = NULL tif -> tif_rawcc = 0 tif -> tif_rawdatasize = 0 tif -> tif_flags &= ~ ( TIFF_BEENWRITING | TIFF_BUFFERSETUP ) @TO@ if tif -> tif_flags & TIFF_POSTENCODE tif -> tif_flags &= ~ TIFF_POSTENCODE if ! * tif -> tif_postencode tif TIFFErrorExt tif -> tif_clientdata module \"Error post-encoding before directory write\" ( 0 ) * tif -> tif_close tif if tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) if ( tif -> tif_flags & TIFF_MYBUFFER ) && tif -> tif_rawdata _TIFFfree tif -> tif_rawdata tif -> tif_rawdata = NULL tif -> tif_rawcc = 0 tif -> tif_rawdatasize = 0 tif -> tif_flags &= ~ ( TIFF_BEENWRITING | TIFF_BUFFERSETUP ) @AT@ 15470 @LENGTH@ 1194\n" +
+ "---DEL decl_stmt@@tmsize_t orig_rawcc tif -> tif_rawcc @AT@ 15488 @LENGTH@ 36\n" +
+ "------DEL decl@@tmsize_t orig_rawcc tif -> tif_rawcc @AT@ 15488 @LENGTH@ 36\n" +
+ "---------DEL type@@tmsize_t @AT@ 15488 @LENGTH@ 8\n" +
+ "------------DEL name@@tmsize_t @AT@ 15488 @LENGTH@ 8\n" +
+ "---------DEL name@@orig_rawcc @AT@ 15497 @LENGTH@ 10\n" +
+ "---------DEL init@@tif -> tif_rawcc @AT@ 15510 @LENGTH@ 16\n" +
+ "------------DEL expr@@tif -> tif_rawcc @AT@ 15510 @LENGTH@ 16\n" +
+ "---------------DEL name@@tif -> tif_rawcc @AT@ 15510 @LENGTH@ 16\n" +
+ "------------------DEL name@@tif @AT@ 15510 @LENGTH@ 3\n" +
+ "------------------DEL operator@@-> @AT@ 15513 @LENGTH@ 2\n" +
+ "------------------DEL name@@tif_rawcc @AT@ 15515 @LENGTH@ 9\n" +
+ "---UPD if@@if tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) @TO@ if tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif TIFFErrorExt tif -> tif_clientdata module \"Error flushing data before directory write\" ( 0 ) @AT@ 16168 @LENGTH@ 222\n" +
+ "------UPD condition@@tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @TO@ tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @AT@ 16168 @LENGTH@ 133\n" +
+ "---------UPD expr@@tif -> tif_rawcc > 0 && tif -> tif_rawcc != orig_rawcc && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @TO@ tif -> tif_rawcc > 0 && ( tif -> tif_flags & TIFF_BEENWRITING ) != 0 && ! TIFFFlushData1 tif @AT@ 16169 @LENGTH@ 126\n" +
+ "------------DEL name@@tif -> tif_rawcc @AT@ 16191 @LENGTH@ 16\n" +
+ "---------------DEL name@@tif @AT@ 16191 @LENGTH@ 3\n" +
+ "---------------DEL operator@@-> @AT@ 16194 @LENGTH@ 2\n" +
+ "---------------DEL name@@tif_rawcc @AT@ 16196 @LENGTH@ 9\n" +
+ "------------DEL operator@@!= @AT@ 16206 @LENGTH@ 2\n" +
+ "------------DEL name@@orig_rawcc @AT@ 16209 @LENGTH@ 10\n" +
+ "------------DEL operator@@&& @AT@ 16226 @LENGTH@ 2\n");
+
+
+ }
+ @Test
+ public void test_manybugs_libtiff_2007_08_24_827b6bc_22da1d6() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-08-24-827b6bc-22da1d6");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@const char module [] \"_TIFFMergeFields\" const char reason [] \"for fields array\" TIFFField * * tp uint32 i for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 tif -> tif_foundfield = NULL if tif -> tif_fields && tif -> tif_nfields > 0 else if ! tif -> tif_fields TIFFErrorExt tif -> tif_clientdata module \"Failed to allocate fields array\" 0 tp = tif -> tif_fields + tif -> tif_nfields for i = 0 i < n i ++ * tp ++ = ( TIFFField * ) ( info + i ) qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare n @TO@ const char module [] \"_TIFFMergeFields\" const char reason [] \"for fields array\" TIFFField * * tp uint32 i tif -> tif_foundfield = NULL if tif -> tif_fields && tif -> tif_nfields > 0 else if ! tif -> tif_fields TIFFErrorExt tif -> tif_clientdata module \"Failed to allocate fields array\" 0 tp = tif -> tif_fields + tif -> tif_nfields for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare n @AT@ 31106 @LENGTH@ 1161\n" +
+ "---MOV for@@for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ block@@const char module [] \"_TIFFMergeFields\" const char reason [] \"for fields array\" TIFFField * * tp uint32 i for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 tif -> tif_foundfield = NULL if tif -> tif_fields && tif -> tif_nfields > 0 else if ! tif -> tif_fields TIFFErrorExt tif -> tif_clientdata module \"Failed to allocate fields array\" 0 tp = tif -> tif_fields + tif -> tif_nfields for i = 0 i < n i ++ * tp ++ = ( TIFFField * ) ( info + i ) qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare n @AT@ 31228 @LENGTH@ 250\n" +
+ "---UPD for@@for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ for i = 0 i < n i ++ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31228 @LENGTH@ 250\n" +
+ "------UPD block@@const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ const TIFFField * fip TIFFFindField tif info ][i . field_tag TIFF_ANY if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31248 @LENGTH@ 284\n" +
+ "---------UPD if@@if fip TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ if ! fip tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31332 @LENGTH@ 159\n" +
+ "------------UPD condition@@fip @TO@ ! fip @AT@ 31332 @LENGTH@ 6\n" +
+ "---------------UPD expr@@fip @TO@ ! fip @AT@ 31333 @LENGTH@ 3\n" +
+ "------------------INS operator@@! @TO@ expr@@fip @AT@ 31918 @LENGTH@ 1\n" +
+ "------------UPD then@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31338 @LENGTH@ 152\n" +
+ "---------------UPD block@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @TO@ tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) tif -> tif_nfields ++ @AT@ 31338 @LENGTH@ 191\n" +
+ "------------------DEL expr_stmt@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31343 @LENGTH@ 150\n" +
+ "---------------------DEL expr@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31343 @LENGTH@ 150\n" +
+ "------------------------DEL call@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31343 @LENGTH@ 150\n" +
+ "---------------------------DEL name@@TIFFErrorExt @AT@ 31343 @LENGTH@ 12\n" +
+ "---------------------------DEL argument_list@@tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name @AT@ 31355 @LENGTH@ 156\n" +
+ "------------------------------DEL argument@@tif -> tif_clientdata @AT@ 31356 @LENGTH@ 21\n" +
+ "---------------------------------DEL expr@@tif -> tif_clientdata @AT@ 31356 @LENGTH@ 21\n" +
+ "------------------------------DEL argument@@module @AT@ 31377 @LENGTH@ 6\n" +
+ "---------------------------------DEL expr@@module @AT@ 31377 @LENGTH@ 6\n" +
+ "------------------------------------DEL name@@module @AT@ 31377 @LENGTH@ 6\n" +
+ "------------------------------DEL argument@@\"Field with tag %lu is already registered as \\\"%s\\\"\" @AT@ 31388 @LENGTH@ 52\n" +
+ "---------------------------------DEL expr@@\"Field with tag %lu is already registered as \\\"%s\\\"\" @AT@ 31388 @LENGTH@ 52\n" +
+ "------------------------------------DEL literal@@\"Field with tag %lu is already registered as \\\"%s\\\"\" @AT@ 31388 @LENGTH@ 52\n" +
+ "------------------------------DEL argument@@( unsigned int ) info ][i . field_tag @AT@ 31451 @LENGTH@ 37\n" +
+ "---------------------------------DEL expr@@( unsigned int ) info ][i . field_tag @AT@ 31451 @LENGTH@ 37\n" +
+ "------------------------------------DEL name@@int @AT@ 31461 @LENGTH@ 3\n" +
+ "------------------------------------DEL name@@info ][i @AT@ 31466 @LENGTH@ 8\n" +
+ "---------------------------------------DEL name@@info @AT@ 31466 @LENGTH@ 4\n" +
+ "---------------------------------------DEL index@@][i @AT@ 31471 @LENGTH@ 3\n" +
+ "------------------------------------------DEL expr@@[i @AT@ 31471 @LENGTH@ 2\n" +
+ "------------------------------------DEL name@@field_tag @AT@ 31474 @LENGTH@ 9\n" +
+ "------------------------------DEL argument@@fip -> field_name @AT@ 31494 @LENGTH@ 17\n" +
+ "---------------------------------DEL expr@@fip -> field_name @AT@ 31494 @LENGTH@ 17\n" +
+ "------------------DEL return@@0 @AT@ 31515 @LENGTH@ 10\n" +
+ "---------------------DEL expr@@0 @AT@ 31522 @LENGTH@ 1\n" +
+ "------------------------DEL literal@@0 @AT@ 31522 @LENGTH@ 1\n" +
+ "------------------INS expr_stmt@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @TO@ block@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @AT@ 31950 @LENGTH@ 69\n" +
+ "---------------------INS expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @TO@ expr_stmt@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31950 @LENGTH@ 69\n" +
+ "------------------------MOV operator@@( @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31451 @LENGTH@ 1\n" +
+ "------------------------MOV name@@unsigned @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31452 @LENGTH@ 8\n" +
+ "------------------------MOV operator@@) @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31464 @LENGTH@ 1\n" +
+ "------------------------MOV name@@[i @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31471 @LENGTH@ 2\n" +
+ "------------------------MOV operator@@. @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31473 @LENGTH@ 1\n" +
+ "------------------------INS name@@tif -> tif_fields ][tif -> tif_nfields @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31950 @LENGTH@ 38\n" +
+ "---------------------------INS name@@tif @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31950 @LENGTH@ 3\n" +
+ "---------------------------INS operator@@-> @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31953 @LENGTH@ 2\n" +
+ "---------------------------INS name@@tif_fields @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31955 @LENGTH@ 10\n" +
+ "---------------------------INS index@@][tif -> tif_nfields @TO@ name@@tif -> tif_fields ][tif -> tif_nfields @AT@ 31966 @LENGTH@ 20\n" +
+ "------------------------------INS expr@@[tif -> tif_nfields @TO@ index@@][tif -> tif_nfields @AT@ 31966 @LENGTH@ 19\n" +
+ "---------------------------------MOV name@@tif -> tif_clientdata @TO@ expr@@[tif -> tif_nfields @AT@ 31356 @LENGTH@ 21\n" +
+ "------------------------INS operator@@= @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31984 @LENGTH@ 1\n" +
+ "------------------------INS operator@@* @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 31997 @LENGTH@ 1\n" +
+ "------------------------INS operator@@( @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 32000 @LENGTH@ 1\n" +
+ "------------------------INS name@@info @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 32001 @LENGTH@ 4\n" +
+ "------------------------INS operator@@+ @TO@ expr@@tif -> tif_fields ][tif -> tif_nfields = ( TIFFField * ) ( info + i ) @AT@ 32005 @LENGTH@ 1\n" +
+ "------------------INS expr_stmt@@tif -> tif_nfields ++ @TO@ block@@TIFFErrorExt tif -> tif_clientdata module \"Field with tag %lu is already registered as \\\"%s\\\"\" ( unsigned int ) info ][i . field_tag fip -> field_name 0 @AT@ 32034 @LENGTH@ 21\n" +
+ "---------------------INS expr@@tif -> tif_nfields ++ @TO@ expr_stmt@@tif -> tif_nfields ++ @AT@ 32034 @LENGTH@ 21\n" +
+ "------------------------MOV name@@fip -> field_name @TO@ expr@@tif -> tif_nfields ++ @AT@ 31494 @LENGTH@ 17\n" +
+ "------------------------INS operator@@++ @TO@ expr@@tif -> tif_nfields ++ @AT@ 32050 @LENGTH@ 2\n" +
+ "---DEL for@@for i = 0 i < n i ++ * tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32050 @LENGTH@ 59\n" +
+ "------DEL control@@i = 0 i < n i ++ @AT@ 32050 @LENGTH@ 20\n" +
+ "---------DEL init@@i = 0 @AT@ 32051 @LENGTH@ 5\n" +
+ "------------DEL expr@@i = 0 @AT@ 32051 @LENGTH@ 5\n" +
+ "---------------DEL name@@i @AT@ 32051 @LENGTH@ 1\n" +
+ "---------------DEL operator@@= @AT@ 32053 @LENGTH@ 1\n" +
+ "---------------DEL literal@@0 @AT@ 32055 @LENGTH@ 1\n" +
+ "---------DEL condition@@i < n @AT@ 32058 @LENGTH@ 5\n" +
+ "------------DEL expr@@i < n @AT@ 32058 @LENGTH@ 5\n" +
+ "---------------DEL name@@i @AT@ 32058 @LENGTH@ 1\n" +
+ "---------------DEL operator@@< @AT@ 32060 @LENGTH@ 1\n" +
+ "---------------DEL name@@n @AT@ 32062 @LENGTH@ 1\n" +
+ "---------DEL incr@@i ++ @AT@ 32065 @LENGTH@ 4\n" +
+ "------------DEL expr@@i ++ @AT@ 32065 @LENGTH@ 4\n" +
+ "---------------DEL name@@i @AT@ 32065 @LENGTH@ 1\n" +
+ "---------------DEL operator@@++ @AT@ 32066 @LENGTH@ 2\n" +
+ "------DEL block@@* tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32072 @LENGTH@ 38\n" +
+ "---------DEL expr_stmt@@* tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32072 @LENGTH@ 38\n" +
+ "------------DEL expr@@* tp ++ = ( TIFFField * ) ( info + i ) @AT@ 32072 @LENGTH@ 38\n" +
+ "---------------DEL operator@@* @AT@ 32072 @LENGTH@ 1\n" +
+ "---------------DEL name@@tp @AT@ 32073 @LENGTH@ 2\n" +
+ "---------------DEL operator@@++ @AT@ 32075 @LENGTH@ 2\n" +
+ "---------------DEL operator@@= @AT@ 32078 @LENGTH@ 1\n" +
+ "---------------DEL operator@@( @AT@ 32080 @LENGTH@ 1\n" +
+ "---------------DEL name@@TIFFField @AT@ 32081 @LENGTH@ 9\n" +
+ "---------------DEL operator@@* @AT@ 32091 @LENGTH@ 1\n" +
+ "---------------DEL operator@@) @AT@ 32092 @LENGTH@ 1\n" +
+ "---------------DEL operator@@( @AT@ 32094 @LENGTH@ 1\n" +
+ "---------------DEL name@@info @AT@ 32095 @LENGTH@ 4\n" +
+ "---------------DEL operator@@+ @AT@ 32100 @LENGTH@ 1\n" +
+ "---------------DEL name@@i @AT@ 32102 @LENGTH@ 1\n" +
+ "---------------DEL operator@@) @AT@ 32103 @LENGTH@ 1\n" +
+ "---UPD expr_stmt@@qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32166 @LENGTH@ 70\n" +
+ "------UPD expr@@qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32166 @LENGTH@ 70\n" +
+ "---------UPD call@@qsort tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ qsort tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32166 @LENGTH@ 70\n" +
+ "------------UPD argument_list@@tif -> tif_fields tif -> tif_nfields += n TIFFField * tagCompare @TO@ tif -> tif_fields tif -> tif_nfields TIFFField * tagCompare @AT@ 32171 @LENGTH@ 81\n" +
+ "---------------UPD argument@@tif -> tif_nfields += n @TO@ tif -> tif_nfields @AT@ 32189 @LENGTH@ 23\n" +
+ "------------------UPD expr@@tif -> tif_nfields += n @TO@ tif -> tif_nfields @AT@ 32189 @LENGTH@ 23\n" +
+ "---------------------DEL operator@@+= @AT@ 32206 @LENGTH@ 2\n" +
+ "---------------------DEL name@@n @AT@ 32209 @LENGTH@ 1\n");
+
+
+ }
+ @Test
+ public void test_manybugs_libtiff_2007_07_13_09e8220_f2d989d() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2007-07-13-09e8220-f2d989d");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@static const char module [] \"TIFFReadEncodedStrip\" TIFFDirectory * td & tif -> tif_dir uint32 rowsperstrip uint32 stripsperplane uint32 stripinplane uint16 plane uint32 rows tmsize_t stripsize if ! TIFFCheckRead tif 0 ( tmsize_t - 1 ) if strip >= td -> td_nstrips TIFFErrorExt tif -> tif_clientdata module \"%uld: Strip out of range, max %uld\" ( unsigned long ) strip ( unsigned long ) td -> td_nstrips ( tmsize_t - 1 ) rowsperstrip = td -> td_rowsperstrip if rowsperstrip > td -> td_imagelength rowsperstrip = td -> td_imagelength stripsperplane = ( ( td -> td_imagelength + rowsperstrip - 1 ) / rowsperstrip ) stripinplane = ( strip % stripsperplane ) plane = ( strip / stripsperplane ) rows = td -> td_imagelength - stripinplane * rowsperstrip if rows > rowsperstrip rows = rowsperstrip stripsize = TIFFVStripSize tif rows if stripsize == 0 ( tmsize_t - 1 ) if ( size != tmsize_t - 1 ) && ( size < stripsize ) stripsize = size if ! TIFFFillStrip tif strip ( tmsize_t - 1 ) if * tif -> tif_decodestrip tif buf size plane <= 0 ( tmsize_t - 1 ) * tif -> tif_postdecode tif buf size ( size ) @TO@ static const char module [] \"TIFFReadEncodedStrip\" TIFFDirectory * td & tif -> tif_dir uint32 rowsperstrip uint32 stripsperplane uint32 stripinplane uint16 plane uint32 rows tmsize_t stripsize if ! TIFFCheckRead tif 0 ( tmsize_t - 1 ) if strip >= td -> td_nstrips TIFFErrorExt tif -> tif_clientdata module \"%uld: Strip out of range, max %uld\" ( unsigned long ) strip ( unsigned long ) td -> td_nstrips ( tmsize_t - 1 ) rowsperstrip = td -> td_rowsperstrip if rowsperstrip > td -> td_imagelength rowsperstrip = td -> td_imagelength stripsperplane = ( ( td -> td_imagelength + rowsperstrip - 1 ) / rowsperstrip ) stripinplane = ( strip % stripsperplane ) plane = ( strip / stripsperplane ) rows = td -> td_imagelength - stripinplane * rowsperstrip if rows > rowsperstrip rows = rowsperstrip stripsize = TIFFVStripSize tif rows if stripsize == 0 ( tmsize_t - 1 ) if ( size != tmsize_t - 1 ) && ( size < stripsize ) stripsize = size if ! TIFFFillStrip tif strip ( tmsize_t - 1 ) if * tif -> tif_decodestrip tif buf stripsize plane <= 0 ( tmsize_t - 1 ) * tif -> tif_postdecode tif buf stripsize ( stripsize ) @AT@ 3869 @LENGTH@ 1303\n" +
+ "---UPD if@@if * tif -> tif_decodestrip tif buf size plane <= 0 ( tmsize_t - 1 ) @TO@ if * tif -> tif_decodestrip tif buf stripsize plane <= 0 ( tmsize_t - 1 ) @AT@ 5041 @LENGTH@ 68\n" +
+ "------UPD condition@@* tif -> tif_decodestrip tif buf size plane <= 0 @TO@ * tif -> tif_decodestrip tif buf stripsize plane <= 0 @AT@ 5041 @LENGTH@ 49\n" +
+ "---------UPD expr@@* tif -> tif_decodestrip tif buf size plane <= 0 @TO@ * tif -> tif_decodestrip tif buf stripsize plane <= 0 @AT@ 5043 @LENGTH@ 48\n" +
+ "------------UPD call@@* tif -> tif_decodestrip tif buf size plane @TO@ * tif -> tif_decodestrip tif buf stripsize plane @AT@ 5043 @LENGTH@ 43\n" +
+ "---------------UPD argument_list@@tif buf size plane @TO@ tif buf stripsize plane @AT@ 5065 @LENGTH@ 21\n" +
+ "------------------UPD argument@@size @TO@ stripsize @AT@ 5074 @LENGTH@ 4\n" +
+ "---------------------UPD expr@@size @TO@ stripsize @AT@ 5074 @LENGTH@ 4\n" +
+ "------------------------UPD name@@size @TO@ stripsize @AT@ 5074 @LENGTH@ 4\n" +
+ "---UPD expr_stmt@@* tif -> tif_postdecode tif buf size @TO@ * tif -> tif_postdecode tif buf stripsize @AT@ 5118 @LENGTH@ 36\n" +
+ "------UPD expr@@* tif -> tif_postdecode tif buf size @TO@ * tif -> tif_postdecode tif buf stripsize @AT@ 5118 @LENGTH@ 36\n" +
+ "---------UPD call@@* tif -> tif_postdecode tif buf size @TO@ * tif -> tif_postdecode tif buf stripsize @AT@ 5118 @LENGTH@ 36\n" +
+ "------------UPD argument_list@@tif buf size @TO@ tif buf stripsize @AT@ 5139 @LENGTH@ 15\n" +
+ "---------------UPD argument@@size @TO@ stripsize @AT@ 5148 @LENGTH@ 4\n" +
+ "------------------UPD expr@@size @TO@ stripsize @AT@ 5148 @LENGTH@ 4\n" +
+ "---------------------UPD name@@size @TO@ stripsize @AT@ 5148 @LENGTH@ 4\n" +
+ "---UPD return@@( size ) @TO@ ( stripsize ) @AT@ 5156 @LENGTH@ 14\n" +
+ "------UPD expr@@( size ) @TO@ ( stripsize ) @AT@ 5162 @LENGTH@ 8\n" +
+ "---------UPD name@@size @TO@ stripsize @AT@ 5163 @LENGTH@ 4\n");
+
+ }
+
+ @Test
+ public void test_manybugs_libtiff_2006_03_03_a72cf60_0a36d7f() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2006-03-03-a72cf60-0a36d7f");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc bad @TO@ if ! dir -> tdir_count || ! w || cc / w != ( tsize_t ) dir -> tdir_count bad @AT@ 30669 @LENGTH@ 76\n" +
+ "---UPD condition@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @TO@ ! dir -> tdir_count || ! w || cc / w != ( tsize_t ) dir -> tdir_count @AT@ 30669 @LENGTH@ 63\n" +
+ "------UPD expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @TO@ ! dir -> tdir_count || ! w || cc / w != ( tsize_t ) dir -> tdir_count @AT@ 30670 @LENGTH@ 69\n" +
+ "---------INS name@@cc @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30696 @LENGTH@ 2\n" +
+ "---------INS operator@@/ @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30699 @LENGTH@ 1\n" +
+ "---------INS name@@w @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30701 @LENGTH@ 1\n" +
+ "---------INS operator@@!= @TO@ expr@@! dir -> tdir_count || ! w || ( tsize_t ) dir -> tdir_count / w != cc @AT@ 30703 @LENGTH@ 2\n" +
+ "---------DEL operator@@/ @AT@ 30721 @LENGTH@ 1\n" +
+ "---------DEL name@@w @AT@ 30723 @LENGTH@ 1\n" +
+ "---------DEL operator@@!= @AT@ 30725 @LENGTH@ 2\n" +
+ "---------DEL name@@cc @AT@ 30728 @LENGTH@ 2\n");
+
+ }
+ @Test
+ public void test_manybugs_libtiff_2006_02_23_b2ce5d8_207c78a() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:libtiff:2006-02-23-b2ce5d8-207c78a");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @TO@ block@@FIELD_STRIPOFFSETS tag = isTiled tif TIFFTAG_TILEOFFSETS else TIFFTAG_STRIPOFFSETS if tag != fip -> field_tag continue; dir -> tdir_tag = ( uint16 ) tag dir -> tdir_type = ( uint16 ) TIFF_LONG dir -> tdir_count = ( uint32 ) td -> td_nstrips if ! TIFFWriteLongArray tif dir td -> td_stripoffset bad break; FIELD_STRIPBYTECOUNTS tag = isTiled tif TIFFTAG_TILEBYTECOUNTS else TIFFTAG_STRIPBYTECOUNTS if tag != fip -> field_tag continue; dir -> tdir_tag = ( uint16 ) tag dir -> tdir_type = ( uint16 ) TIFF_LONG dir -> tdir_count = ( uint32 ) td -> td_nstrips if ! TIFFWriteLongArray tif dir td -> td_stripbytecount bad break; FIELD_ROWSPERSTRIP TIFFSetupShortLong tif TIFFTAG_ROWSPERSTRIP dir td -> td_rowsperstrip break; FIELD_COLORMAP if ! TIFFWriteShortTable tif TIFFTAG_COLORMAP dir 3 td -> td_colormap bad break; FIELD_IMAGEDIMENSIONS TIFFSetupShortLong tif TIFFTAG_IMAGEWIDTH dir ++ td -> td_imagewidth TIFFSetupShortLong tif TIFFTAG_IMAGELENGTH dir td -> td_imagelength break; FIELD_TILEDIMENSIONS TIFFSetupShortLong tif TIFFTAG_TILEWIDTH dir ++ td -> td_tilewidth TIFFSetupShortLong tif TIFFTAG_TILELENGTH dir td -> td_tilelength break; FIELD_COMPRESSION TIFFSetupShort tif TIFFTAG_COMPRESSION dir td -> td_compression break; FIELD_PHOTOMETRIC TIFFSetupShort tif TIFFTAG_PHOTOMETRIC dir td -> td_photometric break; FIELD_POSITION WriteRationalPair TIFF_RATIONAL TIFFTAG_XPOSITION td -> td_xposition TIFFTAG_YPOSITION td -> td_yposition break; FIELD_RESOLUTION WriteRationalPair TIFF_RATIONAL TIFFTAG_XRESOLUTION td -> td_xresolution TIFFTAG_YRESOLUTION td -> td_yresolution break; FIELD_BITSPERSAMPLE FIELD_MINSAMPLEVALUE FIELD_MAXSAMPLEVALUE FIELD_SAMPLEFORMAT if ! TIFFWritePerSampleShorts tif fip -> field_tag dir bad break; FIELD_SMINSAMPLEVALUE FIELD_SMAXSAMPLEVALUE if ! TIFFWritePerSampleAnys tif _TIFFSampleToTagType tif fip -> field_tag dir bad break; FIELD_PAGENUMBER FIELD_HALFTONEHINTS FIELD_YCBCRSUBSAMPLING if ! TIFFSetupShortPair tif fip -> field_tag dir bad break; FIELD_INKNAMES if ! TIFFWriteInkNames tif dir bad break; FIELD_TRANSFERFUNCTION if ! TIFFWriteTransferFunction tif dir bad break; FIELD_SUBIFD dir -> tdir_tag = ( uint16 ) fip -> field_tag dir -> tdir_type = ( uint16 ) TIFF_LONG dir -> tdir_count = ( uint32 ) td -> td_nsubifd if ! TIFFWriteLongArray tif dir td -> td_subifd bad if dir -> tdir_count > 0 tif -> tif_flags |= TIFF_INSUBIFD tif -> tif_nsubifd = ( uint16 ) dir -> tdir_count if dir -> tdir_count > 1 tif -> tif_subifdoff = dir -> tdir_offset else tif -> tif_subifdoff = uint32 tif -> tif_diroff + uint16 + ( ( char * ) & dir -> tdir_offset - data ) break; if ! TIFFWriteNormalTag tif dir fip bad break; @AT@ 11058 @LENGTH@ 86\n" +
+ "---INS condition@@fip -> field_tag == TIFFTAG_DOTRANGE @TO@ if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11058 @LENGTH@ 37\n" +
+ "------INS expr@@fip -> field_tag == TIFFTAG_DOTRANGE @TO@ condition@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11059 @LENGTH@ 36\n" +
+ "---------INS name@@fip -> field_tag @TO@ expr@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11059 @LENGTH@ 16\n" +
+ "------------INS name@@fip @TO@ name@@fip -> field_tag @AT@ 11059 @LENGTH@ 3\n" +
+ "------------INS operator@@-> @TO@ name@@fip -> field_tag @AT@ 11062 @LENGTH@ 2\n" +
+ "------------INS name@@field_tag @TO@ name@@fip -> field_tag @AT@ 11064 @LENGTH@ 9\n" +
+ "---------INS operator@@== @TO@ expr@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11074 @LENGTH@ 2\n" +
+ "---------INS name@@TIFFTAG_DOTRANGE @TO@ expr@@fip -> field_tag == TIFFTAG_DOTRANGE @AT@ 11077 @LENGTH@ 16\n" +
+ "---INS then@@ @TO@ if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11095 @LENGTH@ 0\n" +
+ "------INS block@@ @TO@ then@@ @AT@ 11095 @LENGTH@ 77\n" +
+ "---------INS if@@if ! TIFFSetupShortPair tif fip -> field_tag dir bad @TO@ block@@ @AT@ 11104 @LENGTH@ 52\n" +
+ "------------INS condition@@! TIFFSetupShortPair tif fip -> field_tag dir @TO@ if@@if ! TIFFSetupShortPair tif fip -> field_tag dir bad @AT@ 11104 @LENGTH@ 48\n" +
+ "---------------INS expr@@! TIFFSetupShortPair tif fip -> field_tag dir @TO@ condition@@! TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11105 @LENGTH@ 45\n" +
+ "------------------INS operator@@! @TO@ expr@@! TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11105 @LENGTH@ 1\n" +
+ "------------------INS call@@TIFFSetupShortPair tif fip -> field_tag dir @TO@ expr@@! TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11106 @LENGTH@ 43\n" +
+ "---------------------INS name@@TIFFSetupShortPair @TO@ call@@TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11106 @LENGTH@ 18\n" +
+ "---------------------INS argument_list@@tif fip -> field_tag dir @TO@ call@@TIFFSetupShortPair tif fip -> field_tag dir @AT@ 11124 @LENGTH@ 27\n" +
+ "------------------------INS argument@@tif @TO@ argument_list@@tif fip -> field_tag dir @AT@ 11125 @LENGTH@ 3\n" +
+ "---------------------------INS expr@@tif @TO@ argument@@tif @AT@ 11125 @LENGTH@ 3\n" +
+ "------------------------------INS name@@tif @TO@ expr@@tif @AT@ 11125 @LENGTH@ 3\n" +
+ "------------------------INS argument@@fip -> field_tag @TO@ argument_list@@tif fip -> field_tag dir @AT@ 11130 @LENGTH@ 16\n" +
+ "---------------------------INS expr@@fip -> field_tag @TO@ argument@@fip -> field_tag @AT@ 11130 @LENGTH@ 16\n" +
+ "------------------------------INS name@@fip -> field_tag @TO@ expr@@fip -> field_tag @AT@ 11130 @LENGTH@ 16\n" +
+ "---------------------------------INS name@@fip @TO@ name@@fip -> field_tag @AT@ 11130 @LENGTH@ 3\n" +
+ "---------------------------------INS operator@@-> @TO@ name@@fip -> field_tag @AT@ 11133 @LENGTH@ 2\n" +
+ "---------------------------------INS name@@field_tag @TO@ name@@fip -> field_tag @AT@ 11135 @LENGTH@ 9\n" +
+ "------------------------INS argument@@dir @TO@ argument_list@@tif fip -> field_tag dir @AT@ 11146 @LENGTH@ 3\n" +
+ "---------------------------INS expr@@dir @TO@ argument@@dir @AT@ 11146 @LENGTH@ 3\n" +
+ "------------------------------INS name@@dir @TO@ expr@@dir @AT@ 11146 @LENGTH@ 3\n" +
+ "------------INS then@@bad @TO@ if@@if ! TIFFSetupShortPair tif fip -> field_tag dir bad @AT@ 11157 @LENGTH@ 3\n" +
+ "---------------INS block@@bad @TO@ then@@bad @AT@ 11157 @LENGTH@ 3\n" +
+ "------------------INS goto@@bad @TO@ block@@bad @AT@ 11157 @LENGTH@ 10\n" +
+ "---------------------INS name@@bad @TO@ goto@@bad @AT@ 11162 @LENGTH@ 3\n" +
+ "---INS elseif@@elseif if ! TIFFWriteNormalTag tif dir fip bad @TO@ if@@if fip -> field_tag == TIFFTAG_DOTRANGE elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11183 @LENGTH@ 46\n" +
+ "------MOV if@@if ! TIFFWriteNormalTag tif dir fip bad @TO@ elseif@@elseif if ! TIFFWriteNormalTag tif dir fip bad @AT@ 11015 @LENGTH@ 39\n");
+
+ }
+
+
+ @Test
+ public void test_manybugs_gzip_2009_08_16_3fe0caeada_39a362ae9d() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("manybugs:gzip:2009-08-16-3fe0caeada-39a362ae9d");
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@q = ( structhuft * ) malloc 2 * *q if ! q 3 hufts += 2 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 * t = q + 1 * m = 1 0 @TO@ q = ( structhuft * ) malloc 3 * *q if ! q 3 hufts += 3 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 q ][2 . e = 99 q ][2 . b = 1 * t = q + 1 * m = 1 0 @AT@ 16283 @LENGTH@ 239\n" +
+ "---UPD expr_stmt@@q = ( structhuft * ) malloc 2 * *q @TO@ q = ( structhuft * ) malloc 3 * *q @AT@ 16289 @LENGTH@ 34\n" +
+ "------UPD expr@@q = ( structhuft * ) malloc 2 * *q @TO@ q = ( structhuft * ) malloc 3 * *q @AT@ 16289 @LENGTH@ 34\n" +
+ "---------UPD call@@malloc 2 * *q @TO@ malloc 3 * *q @AT@ 16309 @LENGTH@ 13\n" +
+ "------------UPD argument_list@@2 * *q @TO@ 3 * *q @AT@ 16316 @LENGTH@ 16\n" +
+ "---------------UPD argument@@2 * *q @TO@ 3 * *q @AT@ 16317 @LENGTH@ 6\n" +
+ "------------------UPD expr@@2 * *q @TO@ 3 * *q @AT@ 16317 @LENGTH@ 6\n" +
+ "---------------------UPD literal@@2 @TO@ 3 @AT@ 16317 @LENGTH@ 1\n" +
+ "---UPD expr_stmt@@hufts += 2 @TO@ hufts += 3 @AT@ 16365 @LENGTH@ 10\n" +
+ "------UPD expr@@hufts += 2 @TO@ hufts += 3 @AT@ 16365 @LENGTH@ 10\n" +
+ "---------UPD literal@@2 @TO@ 3 @AT@ 16374 @LENGTH@ 1\n" +
+ "---INS expr_stmt@@q ][2 . e = 99 @TO@ block@@q = ( structhuft * ) malloc 2 * *q if ! q 3 hufts += 2 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 * t = q + 1 * m = 1 0 @AT@ 16480 @LENGTH@ 14\n" +
+ "------INS expr@@q ][2 . e = 99 @TO@ expr_stmt@@q ][2 . e = 99 @AT@ 16480 @LENGTH@ 14\n" +
+ "---------INS name@@q ][2 @TO@ expr@@q ][2 . e = 99 @AT@ 16480 @LENGTH@ 5\n" +
+ "------------INS name@@q @TO@ name@@q ][2 @AT@ 16480 @LENGTH@ 1\n" +
+ "------------INS index@@][2 @TO@ name@@q ][2 @AT@ 16482 @LENGTH@ 3\n" +
+ "---------------INS expr@@[2 @TO@ index@@][2 @AT@ 16482 @LENGTH@ 2\n" +
+ "------------------INS literal@@[2 @TO@ expr@@[2 @AT@ 16482 @LENGTH@ 2\n" +
+ "---------INS operator@@. @TO@ expr@@q ][2 . e = 99 @AT@ 16484 @LENGTH@ 1\n" +
+ "---------INS name@@e @TO@ expr@@q ][2 . e = 99 @AT@ 16485 @LENGTH@ 1\n" +
+ "---------INS operator@@= @TO@ expr@@q ][2 . e = 99 @AT@ 16487 @LENGTH@ 1\n" +
+ "---------INS literal@@99 @TO@ expr@@q ][2 . e = 99 @AT@ 16489 @LENGTH@ 2\n" +
+ "---INS expr_stmt@@q ][2 . b = 1 @TO@ block@@q = ( structhuft * ) malloc 2 * *q if ! q 3 hufts += 2 q ][0 . v . t = ( structhuft * ) NULL q ][1 . e = 99 q ][1 . b = 1 * t = q + 1 * m = 1 0 @AT@ 16526 @LENGTH@ 13\n" +
+ "------INS expr@@q ][2 . b = 1 @TO@ expr_stmt@@q ][2 . b = 1 @AT@ 16526 @LENGTH@ 13\n" +
+ "---------INS name@@q ][2 @TO@ expr@@q ][2 . b = 1 @AT@ 16526 @LENGTH@ 5\n" +
+ "------------INS name@@q @TO@ name@@q ][2 @AT@ 16526 @LENGTH@ 1\n" +
+ "------------INS index@@][2 @TO@ name@@q ][2 @AT@ 16528 @LENGTH@ 3\n" +
+ "---------------INS expr@@[2 @TO@ index@@][2 @AT@ 16528 @LENGTH@ 2\n" +
+ "------------------INS literal@@[2 @TO@ expr@@[2 @AT@ 16528 @LENGTH@ 2\n" +
+ "---------INS operator@@. @TO@ expr@@q ][2 . b = 1 @AT@ 16530 @LENGTH@ 1\n" +
+ "---------INS name@@b @TO@ expr@@q ][2 . b = 1 @AT@ 16531 @LENGTH@ 1\n" +
+ "---------INS operator@@= @TO@ expr@@q ][2 . b = 1 @AT@ 16533 @LENGTH@ 1\n" +
+ "---------INS literal@@1 @TO@ expr@@q ][2 . b = 1 @AT@ 16535 @LENGTH@ 1\n");
+ }
+
+ public List getHierarchicalActionSets(String s) throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath", "FORKJOIN");
+ String root = appProps.getProperty("inputPath");
+// root = root + "/codeflaws/";
+ root = "/Users/anilkoyuncu/projects/spinferResults/manybugs/";
+ String filename = s;
+//// filename = "manybugs:python:70019-70023";
+// filename = "manybugs:python:70098-70101";
+// filename = "manybugs:python:70120-70124";
+// filename = "manybugs:libtiff:2007-07-19-ce4b7af-7d6e298";
+// filename = "manybugs:libtiff:2008-09-05-d59e7df-5f42dba";
+// filename = "manybugs:libtiff:2009-02-05-764dbba-2e42d63";
+// filename = "manybugs:gzip:2009-10-09-1a085b1446-118a107f2d";
+// filename = "manybugs:gzip:2009-09-26-a1d3d4019d-f17cbd13a1";
+ Pattern pattern = Pattern.compile("([0-9]{4}-[0-9]{2}-[0-9]{2}-)?([0-9a-z]+-[0-9a-z]+)");
+ Matcher matcher = pattern.matcher(filename);
+ String g1 = "";
+ String g2 = "";
+
+ while (matcher.find()){
+ g1 = matcher.group(1);
+ g2 = matcher.group(2);
+ }
+ String[] ids = g2.split("-");
+ String bug = ids[0];
+ String fix = ids[1];
+
+ List collect = Files.walk(Paths.get(root + filename + "/diffs"))
+ .filter(Files::isRegularFile)
+ .collect(Collectors.toList());
+
+ List collect1 = collect.stream().filter(a -> a.getFileName().toString().contains(bug)).collect(Collectors.toList());
+ List collect2 = collect.stream().filter(a -> a.getFileName().toString().contains(fix)).collect(Collectors.toList());
+ File revFile = new File(collect2.get(0).toString());
+ File prevFile = new File(collect1.get(0).toString());
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ return hierarchicalActionSets;
+ }
+
+
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestPredefinedCases.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestPredefinedCases.java
new file mode 100644
index 0000000..f5d746c
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestPredefinedCases.java
@@ -0,0 +1,157 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+
+public class TestPredefinedCases {
+
+
+
+
+ @Test
+ public void testIFCase1() throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN");
+
+ File revFile = new File("src/main/resource/testFiles/if_example_1.c");
+ File prevFile =new File("src/main/resource/testFiles/prev_if_example_1.c");
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+
+
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ hierarchicalActionSets.size();
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if x >= 5 y += 4 @TO@ if x > 5 y += 4 @AT@ 2 @LENGTH@ 16\n" +
+ "---UPD condition@@x >= 5 @TO@ x > 5 @AT@ 2 @LENGTH@ 9\n" +
+ "------UPD expr@@x >= 5 @TO@ x > 5 @AT@ 3 @LENGTH@ 6\n" +
+ "---------UPD operator@@>= @TO@ > @AT@ 5 @LENGTH@ 2\n");
+
+ }
+ @Test
+ public void testForCase1() throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN");
+
+ File revFile = new File("src/main/resource/testFiles/for_example_1.c");
+ File prevFile =new File("src/main/resource/testFiles/prev_for_example_1.c");
+
+
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+
+
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ hierarchicalActionSets.size();
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@i = 0 i < max i ++ if line ] == ' ' if line ] == '\\t' tab ++ @TO@ i = 0 i < max i ++ if line ] == ' ' space ++ if line ] == '\\t' tab ++ @AT@ 4 @LENGTH@ 60\n" +
+ "---UPD block@@if line ] == ' ' if line ] == '\\t' tab ++ @TO@ if line ] == ' ' space ++ if line ] == '\\t' tab ++ @AT@ 26 @LENGTH@ 98\n" +
+ "------UPD if@@if line ] == ' ' @TO@ if line ] == ' ' space ++ @AT@ 33 @LENGTH@ 16\n" +
+ "---------UPD then@@ @TO@ space ++ @AT@ 54 @LENGTH@ 0\n" +
+ "------------UPD block@@ @TO@ space ++ @AT@ 54 @LENGTH@ 22\n" +
+ "---------------INS expr_stmt@@space ++ @TO@ block@@ @AT@ 62 @LENGTH@ 8\n" +
+ "------------------INS expr@@space ++ @TO@ expr_stmt@@space ++ @AT@ 62 @LENGTH@ 8\n" +
+ "---------------------INS name@@space @TO@ expr@@space ++ @AT@ 62 @LENGTH@ 5\n" +
+ "---------------------INS operator@@++ @TO@ expr@@space ++ @AT@ 67 @LENGTH@ 2\n" +
+ "---------------DEL continue@@ @AT@ 62 @LENGTH@ 0\n");
+
+ }
+ @Test
+ public void testWhileCase1() throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath", "FORKJOIN");
+
+ File revFile = new File("src/main/resource/testFiles/while_example_1.c");
+ File prevFile = new File("src/main/resource/testFiles/prev_while_example_1.c");
+
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ hierarchicalActionSets.size();
+ Assert.assertEquals(hierarchicalActionSets.size(), 1);
+
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(), "UPD do@@y = f x x -- print x x > 0 @TO@ y = f x x -- x > 0 @AT@ 0 @LENGTH@ 62\n" +
+ "---UPD block@@y = f x x -- print x @TO@ y = f x x -- @AT@ 3 @LENGTH@ 42\n" +
+ "------DEL expr_stmt@@print x @AT@ 33 @LENGTH@ 7\n" +
+ "---------DEL expr@@print x @AT@ 33 @LENGTH@ 7\n" +
+ "------------DEL call@@print x @AT@ 33 @LENGTH@ 7\n" +
+ "---------------DEL name@@print @AT@ 33 @LENGTH@ 5\n" +
+ "---------------DEL argument_list@@x @AT@ 38 @LENGTH@ 4\n" +
+ "------------------DEL argument@@x @AT@ 39 @LENGTH@ 1\n" +
+ "---------------------DEL expr@@x @AT@ 39 @LENGTH@ 1\n" +
+ "------------------------DEL name@@x @AT@ 39 @LENGTH@ 1\n");
+ }
+
+
+ @Test
+ public void testIFRetrun() throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN");
+
+ File revFile = new File("src/main/resource/testFiles/if_return.c");
+ File prevFile =new File("src/main/resource/testFiles/prev_if_return.c");
+
+
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ hierarchicalActionSets.size();
+// Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+ @Test
+ public void testIfElse() throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN");
+
+ File revFile = new File("src/main/resource/testFiles/if_else.c");
+ File prevFile =new File("src/main/resource/testFiles/prev_if_else.c");
+
+
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ hierarchicalActionSets.size();
+ // Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+
+ @Test
+ public void testStruct() throws IOException {
+ Properties appProps = new Properties();
+ appProps.load(new FileInputStream("src/main/resource/app.properties"));
+ String srcMLPath = appProps.getProperty("srcMLPath","FORKJOIN");
+
+ File revFile = new File("src/main/resource/testFiles/struct.c");
+ File prevFile =new File("src/main/resource/testFiles/prev_struct.c");
+
+
+
+ EDiffHunkParser parser = new EDiffHunkParser();
+
+ List hierarchicalActionSets = parser.parseChangedSourceCodeWithGumTree2(prevFile, revFile, srcMLPath,false);
+ hierarchicalActionSets.size();
+ // Assert.assertEquals(hierarchicalActionSets.size(),1);
+ }
+
+
+
+
+
+
+}
diff --git a/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestRealCases.java b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestRealCases.java
new file mode 100644
index 0000000..f54c60a
--- /dev/null
+++ b/src/main/java/edu/lu/uni/serval/fixminer/ediff/TestRealCases.java
@@ -0,0 +1,898 @@
+package edu.lu.uni.serval.fixminer.ediff;
+
+import com.github.gumtreediff.tree.ITree;
+import edu.lu.uni.serval.utils.CallShell;
+import edu.lu.uni.serval.utils.EDiffHelper;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+
+public class TestRealCases {
+
+
+
+
+ @Test
+ public void test_287_A_14208510_14208532() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("287-A-14208510-14208532.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" return 0 @TO@ if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" return 0 d = 0 h = 0 @AT@ 199 @LENGTH@ 197\n" +
+ "---UPD if@@if d == 3 || h == 3 printf \"YES\" return 0 @TO@ if d >= 3 || h >= 3 printf \"YES\" return 0 @AT@ 449 @LENGTH@ 41\n" +
+ "------UPD condition@@d == 3 || h == 3 @TO@ d >= 3 || h >= 3 @AT@ 449 @LENGTH@ 16\n" +
+ "---------UPD expr@@d == 3 || h == 3 @TO@ d >= 3 || h >= 3 @AT@ 450 @LENGTH@ 16\n" +
+ "------------UPD operator@@== @TO@ >= @AT@ 451 @LENGTH@ 2\n" +
+ "------------UPD operator@@== @TO@ >= @AT@ 459 @LENGTH@ 2\n" +
+ "---INS expr_stmt@@d = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" return 0 @AT@ 548 @LENGTH@ 5\n" +
+ "------INS expr@@d = 0 @TO@ expr_stmt@@d = 0 @AT@ 548 @LENGTH@ 5\n" +
+ "---------INS name@@d @TO@ expr@@d = 0 @AT@ 548 @LENGTH@ 1\n" +
+ "---------INS operator@@= @TO@ expr@@d = 0 @AT@ 549 @LENGTH@ 1\n" +
+ "---------INS literal:number@@0 @TO@ expr@@d = 0 @AT@ 550 @LENGTH@ 1\n" +
+ "---INS expr_stmt@@h = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d == 3 || h == 3 printf \"YES\" return 0 @AT@ 553 @LENGTH@ 5\n" +
+ "------INS expr@@h = 0 @TO@ expr_stmt@@h = 0 @AT@ 553 @LENGTH@ 5\n" +
+ "---------INS name@@h @TO@ expr@@h = 0 @AT@ 553 @LENGTH@ 1\n" +
+ "---------INS operator@@= @TO@ expr@@h = 0 @AT@ 554 @LENGTH@ 1\n" +
+ "---------INS literal:number@@0 @TO@ expr@@h = 0 @AT@ 555 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_287_A_14208521_14208532() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("287-A-14208521-14208532.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@d = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" return 0 @AT@ 548 @LENGTH@ 5\n" +
+ "---INS expr@@d = 0 @TO@ expr_stmt@@d = 0 @AT@ 548 @LENGTH@ 5\n" +
+ "------INS name@@d @TO@ expr@@d = 0 @AT@ 548 @LENGTH@ 1\n" +
+ "------INS operator@@= @TO@ expr@@d = 0 @AT@ 549 @LENGTH@ 1\n" +
+ "------INS literal:number@@0 @TO@ expr@@d = 0 @AT@ 550 @LENGTH@ 1\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"INS expr_stmt@@h = 0 @TO@ block@@if g ][i ][j == '.' d ++ else h ++ if g ][i ][j + 1 == '.' d ++ else h ++ if g ][i + 1 ][j == '.' d ++ else h ++ if g ][i + 1 ][j + 1 == '.' d ++ else h ++ if d >= 3 || h >= 3 printf \"YES\" return 0 @AT@ 553 @LENGTH@ 5\n" +
+ "---INS expr@@h = 0 @TO@ expr_stmt@@h = 0 @AT@ 553 @LENGTH@ 5\n" +
+ "------INS name@@h @TO@ expr@@h = 0 @AT@ 553 @LENGTH@ 1\n" +
+ "------INS operator@@= @TO@ expr@@h = 0 @AT@ 554 @LENGTH@ 1\n" +
+ "------INS literal:number@@0 @TO@ expr@@h = 0 @AT@ 555 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_189_1682083_1682218() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("189-B-1682083-1682218.c");
+// Assert.assertFalse(true);
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@k = MIN k h - j @TO@ t = MIN t h - j @AT@ 254 @LENGTH@ 15\n" +
+ "---UPD expr@@k = MIN k h - j @TO@ t = MIN t h - j @AT@ 254 @LENGTH@ 15\n" +
+ "------UPD name@@k @TO@ t @AT@ 254 @LENGTH@ 1\n" +
+ "------UPD call@@MIN k h - j @TO@ MIN t h - j @AT@ 258 @LENGTH@ 11\n" +
+ "---------UPD argument_list@@k h - j @TO@ t h - j @AT@ 261 @LENGTH@ 7\n" +
+ "------------UPD argument@@k @TO@ t @AT@ 262 @LENGTH@ 1\n" +
+ "---------------UPD expr@@k @TO@ t @AT@ 262 @LENGTH@ 1\n" +
+ "------------------UPD name@@k @TO@ t @AT@ 262 @LENGTH@ 1\n");
+
+ }
+
+
+ @Test
+ public void test_177_A2_1594730_1595168() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("177-A2-1594730-1595168.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if i == ( n - 1 ) / 2 && j == ( n - 1 ) / 2 mid = a @TO@ if i == ( n + 1 ) / 2 && j == ( n + 1 ) / 2 mid = a @AT@ 350 @LENGTH@ 51\n" +
+ "---UPD condition@@i == ( n - 1 ) / 2 && j == ( n - 1 ) / 2 @TO@ i == ( n + 1 ) / 2 && j == ( n + 1 ) / 2 @AT@ 350 @LENGTH@ 40\n" +
+ "------UPD expr@@i == ( n - 1 ) / 2 && j == ( n - 1 ) / 2 @TO@ i == ( n + 1 ) / 2 && j == ( n + 1 ) / 2 @AT@ 351 @LENGTH@ 40\n" +
+ "---------UPD operator@@- @TO@ + @AT@ 356 @LENGTH@ 1\n" +
+ "---------UPD operator@@- @TO@ + @AT@ 370 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_680_A_18343132_18343191() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("680-A-18343132-18343191.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),2);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if b ][a ][i == 3 max = 3 * a ][i break; @TO@ if b ][a ][i >= 3 max = 3 * a ][i break; @AT@ 176 @LENGTH@ 40\n" +
+ "---UPD condition@@b ][a ][i == 3 @TO@ b ][a ][i >= 3 @AT@ 176 @LENGTH@ 14\n" +
+ "------UPD expr@@b ][a ][i == 3 @TO@ b ][a ][i >= 3 @AT@ 177 @LENGTH@ 14\n" +
+ "---------UPD operator@@== @TO@ >= @AT@ 184 @LENGTH@ 2\n");
+ Assert.assertEquals(hierarchicalActionSets.get(1).toString(),"UPD if@@if temp > max max = temp break; @TO@ if temp > max max = temp @AT@ 270 @LENGTH@ 31\n" +
+ "---UPD then@@max = temp break; @TO@ max = temp @AT@ 282 @LENGTH@ 17\n" +
+ "------UPD block@@max = temp break; @TO@ max = temp @AT@ 282 @LENGTH@ 17\n" +
+ "---------DEL break@@break; @AT@ 296 @LENGTH@ 6\n");
+
+ }
+
+ @Test
+ public void test_245_D_3671804_3671831() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("245-D-3671804-3671831.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"MOV expr_stmt@@ans |= a @TO@ block@@ @AT@ 194 @LENGTH@ 8\n");
+
+ }
+
+ @Test
+ public void test_197_B_18221952_18221968() throws IOException {
+ //TODO not sure
+ List hierarchicalActionSets = getHierarchicalActionSets("197-B-18221952-18221968.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@i -- @TO@ block@@a ][0 /= i b ][0 /= i @AT@ 831 @LENGTH@ 4\n" +
+ "---INS expr@@i -- @TO@ expr_stmt@@i -- @AT@ 831 @LENGTH@ 4\n" +
+ "------INS name@@i @TO@ expr@@i -- @AT@ 831 @LENGTH@ 1\n" +
+ "------INS operator@@-- @TO@ expr@@i -- @AT@ 832 @LENGTH@ 2\n");
+
+ }
+
+ @Test
+ public void test_474_A_15226851_15226912() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("474-A-15226851-15226912.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@str ][i = s ][j + 1 @TO@ j ++ str ][i = s ][j @AT@ 560 @LENGTH@ 19\n" +
+ "---INS expr_stmt@@j ++ @TO@ block@@str ][i = s ][j + 1 @AT@ 582 @LENGTH@ 4\n" +
+ "------INS expr@@j ++ @TO@ expr_stmt@@j ++ @AT@ 582 @LENGTH@ 4\n" +
+ "---------INS name@@j @TO@ expr@@j ++ @AT@ 582 @LENGTH@ 1\n" +
+ "---------INS operator@@++ @TO@ expr@@j ++ @AT@ 583 @LENGTH@ 2\n" +
+ "---UPD expr_stmt@@str ][i = s ][j + 1 @TO@ str ][i = s ][j @AT@ 582 @LENGTH@ 19\n" +
+ "------UPD expr@@str ][i = s ][j + 1 @TO@ str ][i = s ][j @AT@ 582 @LENGTH@ 19\n" +
+ "---------UPD name@@s ][j + 1 @TO@ s ][j @AT@ 589 @LENGTH@ 9\n" +
+ "------------UPD index@@][j + 1 @TO@ ][j @AT@ 591 @LENGTH@ 7\n" +
+ "---------------UPD expr@@[j + 1 @TO@ [j @AT@ 591 @LENGTH@ 6\n" +
+ "------------------DEL operator@@+ @AT@ 592 @LENGTH@ 1\n" +
+ "------------------DEL literal:number@@1 @AT@ 593 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_469_B_8248222_8248281() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("469-B-8248222-8248281.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if temp1 < r && temp2 > l for k = temp1 k <= temp2 k ++ t ][k = 1 @TO@ if temp1 <= r && temp2 >= l for k = temp1 k <= temp2 k ++ t ][k = 1 @AT@ 432 @LENGTH@ 65\n" +
+ "---UPD condition@@temp1 < r && temp2 > l @TO@ temp1 <= r && temp2 >= l @AT@ 432 @LENGTH@ 22\n" +
+ "------UPD expr@@temp1 < r && temp2 > l @TO@ temp1 <= r && temp2 >= l @AT@ 433 @LENGTH@ 22\n" +
+ "---------UPD operator@@< @TO@ <= @AT@ 438 @LENGTH@ 1\n" +
+ "---------UPD operator@@> @TO@ >= @AT@ 447 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_189_B_17295034_17295064() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("189-B-17295034-17295064.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for b = 2 b <= w b += 2 count += ( w - a + 1 ) * ( h - b + 1 ) @TO@ for b = 2 b <= h b += 2 count += ( w - a + 1 ) * ( h - b + 1 ) @AT@ 183 @LENGTH@ 62\n" +
+ "---UPD control@@b = 2 b <= w b += 2 @TO@ b = 2 b <= h b += 2 @AT@ 183 @LENGTH@ 19\n" +
+ "------UPD condition@@b <= w @TO@ b <= h @AT@ 188 @LENGTH@ 6\n" +
+ "---------UPD expr@@b <= w @TO@ b <= h @AT@ 188 @LENGTH@ 6\n" +
+ "------------UPD name@@w @TO@ h @AT@ 191 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_244_B_5291533_5291541() throws IOException {
+ //TODO not sure
+ List hierarchicalActionSets = getHierarchicalActionSets("244-B-5291533-5291541.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS elseif@@elseif if a == 784262 printf \"4079\\n\" @TO@ if@@if a <= 101 printf \"%d\\n\" a elseif if a == 123 printf \"113\\n\" elseif if a == 1000 printf \"352\\n\" elseif if a == 1000000000 printf \"40744\\n\" elseif if a == 999999999 printf \"40743\\n\" elseif if a == 999999998 printf \"40742\\n\" elseif if a == 999999997 printf \"40741\\n\" elseif if a == 909090901 printf \"38532\\n\" elseif if a == 142498040 printf \"21671\\n\" elseif if a == 603356456 printf \"31623\\n\" elseif if a == 64214872 printf \"15759\\n\" elseif if a == 820040584 printf \"36407\\n\" elseif if a == 442198 printf \"3071\\n\" elseif if a == 642678 printf \"3615\\n\" elseif if a == 468390 printf \"3223\\n\" elseif if a == 326806 printf \"2759\\n\" elseif if a == 940 printf \"331\\n\" elseif if a == 356 printf \"175\\n\" elseif if a == 132 printf \"114\\n\" elseif if a == 102 printf \"101\\n\" @AT@ 877 @LENGTH@ 37\n" +
+ "---INS if@@if a == 784262 printf \"4079\\n\" @TO@ elseif@@elseif if a == 784262 printf \"4079\\n\" @AT@ 877 @LENGTH@ 30\n" +
+ "------INS condition@@a == 784262 @TO@ if@@if a == 784262 printf \"4079\\n\" @AT@ 877 @LENGTH@ 11\n" +
+ "---------INS expr@@a == 784262 @TO@ condition@@a == 784262 @AT@ 878 @LENGTH@ 11\n" +
+ "------------INS name@@a @TO@ expr@@a == 784262 @AT@ 878 @LENGTH@ 1\n" +
+ "------------INS operator@@== @TO@ expr@@a == 784262 @AT@ 879 @LENGTH@ 2\n" +
+ "------------INS literal:number@@784262 @TO@ expr@@a == 784262 @AT@ 881 @LENGTH@ 6\n" +
+ "------INS then@@printf \"4079\\n\" @TO@ if@@if a == 784262 printf \"4079\\n\" @AT@ 901 @LENGTH@ 15\n" +
+ "---------INS block@@printf \"4079\\n\" @TO@ then@@printf \"4079\\n\" @AT@ 901 @LENGTH@ 15\n" +
+ "------------INS expr_stmt@@printf \"4079\\n\" @TO@ block@@printf \"4079\\n\" @AT@ 901 @LENGTH@ 15\n" +
+ "---------------INS expr@@printf \"4079\\n\" @TO@ expr_stmt@@printf \"4079\\n\" @AT@ 901 @LENGTH@ 15\n" +
+ "------------------INS call@@printf \"4079\\n\" @TO@ expr@@printf \"4079\\n\" @AT@ 901 @LENGTH@ 15\n" +
+ "---------------------INS name@@printf @TO@ call@@printf \"4079\\n\" @AT@ 901 @LENGTH@ 6\n" +
+ "---------------------INS argument_list@@\"4079\\n\" @TO@ call@@printf \"4079\\n\" @AT@ 907 @LENGTH@ 8\n" +
+ "------------------------INS argument@@\"4079\\n\" @TO@ argument_list@@\"4079\\n\" @AT@ 908 @LENGTH@ 8\n" +
+ "---------------------------INS expr@@\"4079\\n\" @TO@ argument@@\"4079\\n\" @AT@ 908 @LENGTH@ 8\n" +
+ "------------------------------INS literal:string@@\"4079\\n\" @TO@ expr@@\"4079\\n\" @AT@ 908 @LENGTH@ 8\n");
+
+ }
+ @Test
+ public void test_166_C_1395587_1395933() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("166-C-1395587-1395933.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if array ][( n + 1 ) / 2 == x printf \"0\\n\" elseif if last < ( n + 1 ) / 2 printf \"%d\\n\" n - 2 * last elseif if first > ( n + 1 ) / 2 printf \"%d\\n\" 2 * first - n - 1 @TO@ if array ][( n + 1 ) / 2 - 1 == x printf \"0\\n\" elseif if last < ( n + 1 ) / 2 printf \"%d\\n\" n - 2 * last elseif if first > ( n + 1 ) / 2 printf \"%d\\n\" 2 * first - n - 1 elseif if n == 1 printf \"0\\n\" @AT@ 771 @LENGTH@ 164\n" +
+ "---UPD condition@@array ][( n + 1 ) / 2 == x @TO@ array ][( n + 1 ) / 2 - 1 == x @AT@ 771 @LENGTH@ 26\n" +
+ "------UPD expr@@array ][( n + 1 ) / 2 == x @TO@ array ][( n + 1 ) / 2 - 1 == x @AT@ 772 @LENGTH@ 26\n" +
+ "---------UPD name@@array ][( n + 1 ) / 2 @TO@ array ][( n + 1 ) / 2 - 1 @AT@ 772 @LENGTH@ 21\n" +
+ "------------UPD index@@][( n + 1 ) / 2 @TO@ ][( n + 1 ) / 2 - 1 @AT@ 778 @LENGTH@ 15\n" +
+ "---------------UPD expr@@[( n + 1 ) / 2 @TO@ [( n + 1 ) / 2 - 1 @AT@ 778 @LENGTH@ 14\n" +
+ "------------------INS operator@@- @TO@ expr@@[( n + 1 ) / 2 @AT@ 785 @LENGTH@ 1\n" +
+ "------------------INS literal:number@@1 @TO@ expr@@[( n + 1 ) / 2 @AT@ 786 @LENGTH@ 1\n" +
+ "---INS elseif@@elseif if n == 1 printf \"0\\n\" @TO@ if@@if array ][( n + 1 ) / 2 == x printf \"0\\n\" elseif if last < ( n + 1 ) / 2 printf \"%d\\n\" n - 2 * last elseif if first > ( n + 1 ) / 2 printf \"%d\\n\" 2 * first - n - 1 @AT@ 925 @LENGTH@ 29\n" +
+ "------INS if@@if n == 1 printf \"0\\n\" @TO@ elseif@@elseif if n == 1 printf \"0\\n\" @AT@ 925 @LENGTH@ 22\n" +
+ "---------INS condition@@n == 1 @TO@ if@@if n == 1 printf \"0\\n\" @AT@ 925 @LENGTH@ 6\n" +
+ "------------INS expr@@n == 1 @TO@ condition@@n == 1 @AT@ 926 @LENGTH@ 6\n" +
+ "---------------INS name@@n @TO@ expr@@n == 1 @AT@ 926 @LENGTH@ 1\n" +
+ "---------------INS operator@@== @TO@ expr@@n == 1 @AT@ 927 @LENGTH@ 2\n" +
+ "---------------INS literal:number@@1 @TO@ expr@@n == 1 @AT@ 929 @LENGTH@ 1\n" +
+ "---------INS then@@printf \"0\\n\" @TO@ if@@if n == 1 printf \"0\\n\" @AT@ 932 @LENGTH@ 12\n" +
+ "------------INS block@@printf \"0\\n\" @TO@ then@@printf \"0\\n\" @AT@ 932 @LENGTH@ 12\n" +
+ "---------------INS expr_stmt@@printf \"0\\n\" @TO@ block@@printf \"0\\n\" @AT@ 932 @LENGTH@ 12\n" +
+ "------------------INS expr@@printf \"0\\n\" @TO@ expr_stmt@@printf \"0\\n\" @AT@ 932 @LENGTH@ 12\n" +
+ "---------------------INS call@@printf \"0\\n\" @TO@ expr@@printf \"0\\n\" @AT@ 932 @LENGTH@ 12\n" +
+ "------------------------INS name@@printf @TO@ call@@printf \"0\\n\" @AT@ 932 @LENGTH@ 6\n" +
+ "------------------------INS argument_list@@\"0\\n\" @TO@ call@@printf \"0\\n\" @AT@ 938 @LENGTH@ 5\n" +
+ "---------------------------INS argument@@\"0\\n\" @TO@ argument_list@@\"0\\n\" @AT@ 939 @LENGTH@ 5\n" +
+ "------------------------------INS expr@@\"0\\n\" @TO@ argument@@\"0\\n\" @AT@ 939 @LENGTH@ 5\n" +
+ "---------------------------------INS literal:string@@\"0\\n\" @TO@ expr@@\"0\\n\" @AT@ 939 @LENGTH@ 5\n");
+
+ }
+
+ @Test
+ public void test_315_A_6149995_6150754() throws IOException {
+ //TODO not sure
+ List hierarchicalActionSets = getHierarchicalActionSets("315-A-6149995-6150754.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"INS expr_stmt@@a ][j = 0 @TO@ block@@ans -- @AT@ 377 @LENGTH@ 9\n" +
+ "---INS expr@@a ][j = 0 @TO@ expr_stmt@@a ][j = 0 @AT@ 377 @LENGTH@ 9\n" +
+ "------INS name@@a ][j @TO@ expr@@a ][j = 0 @AT@ 377 @LENGTH@ 5\n" +
+ "---------INS name@@a @TO@ name@@a ][j @AT@ 377 @LENGTH@ 1\n" +
+ "---------INS index@@][j @TO@ name@@a ][j @AT@ 379 @LENGTH@ 3\n" +
+ "------------INS expr@@[j @TO@ index@@][j @AT@ 379 @LENGTH@ 2\n" +
+ "---------------INS name@@[j @TO@ expr@@[j @AT@ 379 @LENGTH@ 2\n" +
+ "------INS operator@@= @TO@ expr@@a ][j = 0 @AT@ 381 @LENGTH@ 1\n" +
+ "------INS literal:number@@0 @TO@ expr@@a ][j = 0 @AT@ 382 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_158_A_18237828_18237840() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("158-A-18237828-18237840.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ara ][i >= ara ][k - 1 count ++ @TO@ if ara ][i >= ara ][k - 1 && ara ][i != 0 count ++ @AT@ 219 @LENGTH@ 34\n" +
+ "---UPD condition@@ara ][i >= ara ][k - 1 @TO@ ara ][i >= ara ][k - 1 && ara ][i != 0 @AT@ 219 @LENGTH@ 22\n" +
+ "------UPD expr@@ara ][i >= ara ][k - 1 @TO@ ara ][i >= ara ][k - 1 && ara ][i != 0 @AT@ 220 @LENGTH@ 22\n" +
+ "---------INS operator@@&& @TO@ expr@@ara ][i >= ara ][k - 1 @AT@ 236 @LENGTH@ 2\n" +
+ "---------INS name@@ara ][i @TO@ expr@@ara ][i >= ara ][k - 1 @AT@ 239 @LENGTH@ 7\n" +
+ "------------INS name@@ara @TO@ name@@ara ][i @AT@ 239 @LENGTH@ 3\n" +
+ "------------INS index@@][i @TO@ name@@ara ][i @AT@ 243 @LENGTH@ 3\n" +
+ "---------------INS expr@@[i @TO@ index@@][i @AT@ 243 @LENGTH@ 2\n" +
+ "------------------INS name@@[i @TO@ expr@@[i @AT@ 243 @LENGTH@ 2\n" +
+ "---------INS operator@@!= @TO@ expr@@ara ][i >= ara ][k - 1 @AT@ 245 @LENGTH@ 2\n" +
+ "---------INS literal:number@@0 @TO@ expr@@ara ][i >= ara ][k - 1 @AT@ 247 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_405_B_9434593_9434605() throws IOException {
+ //TODO not sure
+ List hierarchicalActionSets = getHierarchicalActionSets("405-B-9434593-9434605.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),
+ "INS else@@else i1 = 0 @TO@ if@@if input ][0 == '.' count = 1 @AT@ 295 @LENGTH@ 11\n" +
+ "---INS block@@i1 = 0 @TO@ else@@else i1 = 0 @AT@ 295 @LENGTH@ 6\n" +
+ "------INS expr_stmt@@i1 = 0 @TO@ block@@i1 = 0 @AT@ 295 @LENGTH@ 6\n" +
+ "---------INS expr@@i1 = 0 @TO@ expr_stmt@@i1 = 0 @AT@ 295 @LENGTH@ 6\n" +
+ "------------INS name@@i1 @TO@ expr@@i1 = 0 @AT@ 295 @LENGTH@ 2\n" +
+ "------------INS operator@@= @TO@ expr@@i1 = 0 @AT@ 297 @LENGTH@ 1\n" +
+ "------------INS literal:number@@0 @TO@ expr@@i1 = 0 @AT@ 298 @LENGTH@ 1\n");
+
+ }
+
+
+ @Test
+ public void test_489_A_9343123_9343126() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("489-A-9343123-9343126.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ZA ][d < ZA ][c d = c @TO@ if ZA ][d > ZA ][c d = c @AT@ 252 @LENGTH@ 24\n" +
+ "---UPD condition@@ZA ][d < ZA ][c @TO@ ZA ][d > ZA ][c @AT@ 252 @LENGTH@ 15\n" +
+ "------UPD expr@@ZA ][d < ZA ][c @TO@ ZA ][d > ZA ][c @AT@ 253 @LENGTH@ 15\n" +
+ "---------UPD operator@@< @TO@ > @AT@ 259 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_143_A_17964626_17964657() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("143-A-17964626-17964657.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for a = 1 a < ( r1 % 10 ) a ++ for i = 1 i <= 1000 i ++ ar ][i = 0 ar ][a = 1 if a >= c1 || a >= d1 continue; b = r1 - a if ar ][b == 1 continue; else ar ][b = 1 if b >= c2 || b >= d2 continue; c = c1 - a if ar ][c == 1 continue; else ar ][c = 1 if c >= r2 || c >= d2 continue; d = d1 - a if ar ][d == 1 continue; if d >= r2 || d >= c2 continue; if b + c != d2 continue; if b + d != c2 continue; if c + d != r2 continue; if a > 9 || b > 9 || c > 9 || d > 9 continue; flag = 1 break; @TO@ for a = 1 a < r1 a ++ for i = 1 i <= 1000 i ++ ar ][i = 0 ar ][a = 1 if a >= c1 || a >= d1 continue; b = r1 - a if ar ][b == 1 continue; else ar ][b = 1 if b >= c2 || b >= d2 continue; c = c1 - a if ar ][c == 1 continue; else ar ][c = 1 if c >= r2 || c >= d2 continue; d = d1 - a if ar ][d == 1 continue; if d >= r2 || d >= c2 continue; if b + c != d2 continue; if b + d != c2 continue; if c + d != r2 continue; if a > 9 || b > 9 || c > 9 || d > 9 continue; flag = 1 break; @AT@ 187 @LENGTH@ 482\n" +
+ "---UPD control@@a = 1 a < ( r1 % 10 ) a ++ @TO@ a = 1 a < r1 a ++ @AT@ 187 @LENGTH@ 26\n" +
+ "------UPD condition@@a < ( r1 % 10 ) @TO@ a < r1 @AT@ 193 @LENGTH@ 15\n" +
+ "---------UPD expr@@a < ( r1 % 10 ) @TO@ a < r1 @AT@ 193 @LENGTH@ 15\n" +
+ "------------DEL operator@@( @AT@ 195 @LENGTH@ 1\n" +
+ "------------DEL operator@@% @AT@ 198 @LENGTH@ 1\n" +
+ "------------DEL literal:number@@10 @AT@ 199 @LENGTH@ 2\n" +
+ "------------DEL operator@@) @AT@ 201 @LENGTH@ 1\n");
+
+ }
+
+
+ @Test
+ public void test_612_A_15750192_15750273() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("612-A-15750192-15750273.c");
+
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = p i <= k i ++ printf \"%c\" a ][i @TO@ for i = p i < k i ++ printf \"%c\" a ][i @AT@ 262 @LENGTH@ 39\n" +
+ "---UPD control@@i = p i <= k i ++ @TO@ i = p i < k i ++ @AT@ 262 @LENGTH@ 17\n" +
+ "------UPD condition@@i <= k @TO@ i < k @AT@ 267 @LENGTH@ 6\n" +
+ "---------UPD expr@@i <= k @TO@ i < k @AT@ 267 @LENGTH@ 6\n" +
+ "------------UPD operator@@<= @TO@ < @AT@ 268 @LENGTH@ 2\n");
+
+ }
+ @Test
+ public void test_344_A_17290259_17290309() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("344-A-17290259-17290309.c");
+
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 0 i < n i ++ if a ][i + 1 == a ][i d = d + 1 else f = f + 1 i = i + 2 @TO@ for i = 0 i < n - 1 i ++ if a ][i + 1 == a ][i d = d + 1 else f = f + 1 @AT@ 158 @LENGTH@ 77\n" +
+ "---UPD control@@i = 0 i < n i ++ @TO@ i = 0 i < n - 1 i ++ @AT@ 158 @LENGTH@ 16\n" +
+ "------UPD condition@@i < n @TO@ i < n - 1 @AT@ 163 @LENGTH@ 5\n" +
+ "---------UPD expr@@i < n @TO@ i < n - 1 @AT@ 163 @LENGTH@ 5\n" +
+ "------------INS operator@@- @TO@ expr@@i < n @AT@ 166 @LENGTH@ 1\n" +
+ "------------INS literal:number@@1 @TO@ expr@@i < n @AT@ 167 @LENGTH@ 1\n" +
+ "---UPD block@@if a ][i + 1 == a ][i d = d + 1 else f = f + 1 i = i + 2 @TO@ if a ][i + 1 == a ][i d = d + 1 else f = f + 1 @AT@ 173 @LENGTH@ 56\n" +
+ "------UPD if@@if a ][i + 1 == a ][i d = d + 1 else f = f + 1 i = i + 2 @TO@ if a ][i + 1 == a ][i d = d + 1 else f = f + 1 @AT@ 179 @LENGTH@ 56\n" +
+ "---------UPD else@@else f = f + 1 i = i + 2 @TO@ else f = f + 1 @AT@ 218 @LENGTH@ 24\n" +
+ "------------UPD block@@f = f + 1 i = i + 2 @TO@ f = f + 1 @AT@ 218 @LENGTH@ 19\n" +
+ "---------------DEL expr_stmt@@i = i + 2 @AT@ 233 @LENGTH@ 9\n" +
+ "------------------DEL expr@@i = i + 2 @AT@ 233 @LENGTH@ 9\n" +
+ "---------------------DEL name@@i @AT@ 233 @LENGTH@ 1\n" +
+ "---------------------DEL operator@@= @AT@ 234 @LENGTH@ 1\n" +
+ "---------------------DEL name@@i @AT@ 235 @LENGTH@ 1\n" +
+ "---------------------DEL operator@@+ @AT@ 236 @LENGTH@ 1\n" +
+ "---------------------DEL literal:number@@2 @AT@ 237 @LENGTH@ 1\n");
+
+ }
+ @Test
+ public void test_452_B_7271987_7272004() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("452-B-7271987-7272004.c");
+
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@int i j n m x i_temp 1 scanf \"%d %d\" & n & m if n == 0 printf \"0 1\\n\" printf \"0 %d\\n\" m printf \"0 0\\n\" printf \"0 %d\\n\" ( m - 1 ) return 0 elseif if m == 0 printf \"1 0\\n\" printf \"%d 0\\n\" n printf \"0 0\\n\" printf \"%d 0\\n\" ( n - 1 ) return 0 elseif if ( m == n ) && ( n == 1 ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" ( m ) return 0 elseif if m == n if m + m * 1.41f > ( 2 * sqrt double m * m + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" n else printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 elseif if n < m if m + sqrt ( double ) n * n + m * m < ( 2 * sqrt double n - 1 * ( n - 1 ) + ( m ) * ( m ) ) printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 else printf \"%d %d\\n0 0 \\n0 %d\\n%d 0\\n\" n m m n return 0 elseif if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ int i j n m x i_temp 1 scanf \"%d %d\" & n & m if n == 0 printf \"0 1\\n\" printf \"0 %d\\n\" m printf \"0 0\\n\" printf \"0 %d\\n\" ( m - 1 ) return 0 elseif if m == 0 printf \"1 0\\n\" printf \"%d 0\\n\" n printf \"0 0\\n\" printf \"%d 0\\n\" ( n - 1 ) return 0 elseif if ( m == n ) && ( n == 1 ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" ( m ) return 0 elseif if m == n if m + m * 1.41f > ( 2 * sqrt double m * m + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" n else printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 elseif if n < m if m + sqrt ( double ) n * n + m * m < ( 2 * sqrt double n - 1 * ( n - 1 ) + ( m ) * ( m ) ) printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 else printf \"%d %d\\n0 0 \\n0 %d\\n%d 0\\n\" n m m n return 0 elseif if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 return 0 @AT@ 115 @LENGTH@ 1106\n" +
+ "---UPD if@@if n == 0 printf \"0 1\\n\" printf \"0 %d\\n\" m printf \"0 0\\n\" printf \"0 %d\\n\" ( m - 1 ) return 0 elseif if m == 0 printf \"1 0\\n\" printf \"%d 0\\n\" n printf \"0 0\\n\" printf \"%d 0\\n\" ( n - 1 ) return 0 elseif if ( m == n ) && ( n == 1 ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" ( m ) return 0 elseif if m == n if m + m * 1.41f > ( 2 * sqrt double m * m + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" n else printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 elseif if n < m if m + sqrt ( double ) n * n + m * m < ( 2 * sqrt double n - 1 * ( n - 1 ) + ( m ) * ( m ) ) printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 else printf \"%d %d\\n0 0 \\n0 %d\\n%d 0\\n\" n m m n return 0 elseif if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ if n == 0 printf \"0 1\\n\" printf \"0 %d\\n\" m printf \"0 0\\n\" printf \"0 %d\\n\" ( m - 1 ) return 0 elseif if m == 0 printf \"1 0\\n\" printf \"%d 0\\n\" n printf \"0 0\\n\" printf \"%d 0\\n\" ( n - 1 ) return 0 elseif if ( m == n ) && ( n == 1 ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" ( m ) return 0 elseif if m == n if m + m * 1.41f > ( 2 * sqrt double m * m + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" n else printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 elseif if n < m if m + sqrt ( double ) n * n + m * m < ( 2 * sqrt double n - 1 * ( n - 1 ) + ( m ) * ( m ) ) printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 else printf \"%d %d\\n0 0 \\n0 %d\\n%d 0\\n\" n m m n return 0 elseif if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 168 @LENGTH@ 1061\n" +
+ "------UPD elseif@@elseif if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ elseif if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 1116 @LENGTH@ 249\n" +
+ "---------UPD if@@if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 1116 @LENGTH@ 242\n" +
+ "------------UPD then@@if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 1123 @LENGTH@ 233\n" +
+ "---------------UPD block@@if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 1123 @LENGTH@ 233\n" +
+ "------------------UPD if@@if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 1129 @LENGTH@ 233\n" +
+ "---------------------UPD else@@else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ else printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 1313 @LENGTH@ 55\n" +
+ "------------------------UPD block@@printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @TO@ printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m return 0 @AT@ 1313 @LENGTH@ 50\n" +
+ "---------------------------UPD expr_stmt@@printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m @TO@ printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m @AT@ 1318 @LENGTH@ 41\n" +
+ "------------------------------UPD expr@@printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m @TO@ printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m @AT@ 1318 @LENGTH@ 41\n" +
+ "---------------------------------UPD call@@printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m @TO@ printf \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m @AT@ 1318 @LENGTH@ 41\n" +
+ "------------------------------------UPD argument_list@@\"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m @TO@ \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" n m n m @AT@ 1324 @LENGTH@ 34\n" +
+ "---------------------------------------UPD argument@@\"%d %d\\n0 0 \\n%d \\n0 %d\\n\" @TO@ \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" @AT@ 1325 @LENGTH@ 26\n" +
+ "------------------------------------------UPD expr@@\"%d %d\\n0 0 \\n%d \\n0 %d\\n\" @TO@ \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" @AT@ 1325 @LENGTH@ 26\n" +
+ "---------------------------------------------UPD literal:string@@\"%d %d\\n0 0 \\n%d \\n0 %d\\n\" @TO@ \"%d %d\\n0 0 \\n%d 0\\n0 %d\\n\" @AT@ 1325 @LENGTH@ 26\n" +
+ "---INS return@@return 0 @TO@ block@@int i j n m x i_temp 1 scanf \"%d %d\" & n & m if n == 0 printf \"0 1\\n\" printf \"0 %d\\n\" m printf \"0 0\\n\" printf \"0 %d\\n\" ( m - 1 ) return 0 elseif if m == 0 printf \"1 0\\n\" printf \"%d 0\\n\" n printf \"0 0\\n\" printf \"%d 0\\n\" ( n - 1 ) return 0 elseif if ( m == n ) && ( n == 1 ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" ( m ) return 0 elseif if m == n if m + m * 1.41f > ( 2 * sqrt double m * m + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m printf \"0 0\\n\" printf \"%d 0\\n\" n printf \"0 %d\\n\" n else printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 elseif if n < m if m + sqrt ( double ) n * n + m * m < ( 2 * sqrt double n - 1 * ( n - 1 ) + ( m ) * ( m ) ) printf \"%d %d\\n\" n - 1 m printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"1 0\\n\" return 0 else printf \"%d %d\\n0 0 \\n0 %d\\n%d 0\\n\" n m m n return 0 elseif if n > m if n + sqrt ( double ) n * n + m * m < ( 2 * sqrt ( double ) n * n + ( m - 1 ) * ( m - 1 ) ) printf \"%d %d\\n\" n m - 1 printf \"0 0\\n\" printf \"%d %d\\n\" n m printf \"0 1\\n\" return 0 else printf \"%d %d\\n0 0 \\n%d \\n0 %d\\n\" n m n m return 0 @AT@ 1385 @LENGTH@ 8\n" +
+ "------INS expr@@0 @TO@ return@@return 0 @AT@ 1392 @LENGTH@ 1\n" +
+ "---------INS literal:number@@0 @TO@ expr@@0 @AT@ 1392 @LENGTH@ 1\n");
+
+
+ }
+ @Test
+ public void test_158_E_1314159_1314160() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("158-E-1314159-1314160.c");
+
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@ans = max ans 86401 - dp ][k @TO@ ans = max ans 86400 - dp ][k @AT@ 377 @LENGTH@ 28\n" +
+ "---UPD expr@@ans = max ans 86401 - dp ][k @TO@ ans = max ans 86400 - dp ][k @AT@ 377 @LENGTH@ 28\n" +
+ "------UPD call@@max ans 86401 - dp ][k @TO@ max ans 86400 - dp ][k @AT@ 383 @LENGTH@ 22\n" +
+ "---------UPD argument_list@@ans 86401 - dp ][k @TO@ ans 86400 - dp ][k @AT@ 386 @LENGTH@ 18\n" +
+ "------------UPD argument@@86401 - dp ][k @TO@ 86400 - dp ][k @AT@ 393 @LENGTH@ 14\n" +
+ "---------------UPD expr@@86401 - dp ][k @TO@ 86400 - dp ][k @AT@ 393 @LENGTH@ 14\n" +
+ "------------------UPD literal:number@@86401 @TO@ 86400 @AT@ 393 @LENGTH@ 5\n");
+
+ }
+ @Test
+ public void test_250_A_2762401_2762408() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("250-A-2762401-2762408.c");
+
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD expr_stmt@@folders = ceil negative / 2 @TO@ folders = ceil negative / 2.0 @AT@ 289 @LENGTH@ 27\n" +
+ "---UPD expr@@folders = ceil negative / 2 @TO@ folders = ceil negative / 2.0 @AT@ 289 @LENGTH@ 27\n" +
+ "------UPD call@@ceil negative / 2 @TO@ ceil negative / 2.0 @AT@ 299 @LENGTH@ 17\n" +
+ "---------UPD argument_list@@negative / 2 @TO@ negative / 2.0 @AT@ 303 @LENGTH@ 12\n" +
+ "------------UPD argument@@negative / 2 @TO@ negative / 2.0 @AT@ 304 @LENGTH@ 12\n" +
+ "---------------UPD expr@@negative / 2 @TO@ negative / 2.0 @AT@ 304 @LENGTH@ 12\n" +
+ "------------------UPD literal:number@@2 @TO@ 2.0 @AT@ 313 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_31_B_6435804_6435825() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("31-B-6435804-6435825.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 1 i <= strlen s i ++ if n == - 1 if s ][i != '@' n = i else printf \"No solution\\n\" return ( 0 ) if fl == 1 if s ][i != '@' fl = 0 if flag != 0 jj ++ cc ][jj = ',' for j = n j <= i j ++ jj ++ cc ][jj = s ][j else for j = n j <= i j ++ jj ++ cc ][jj = s ][j flag = 1 n = - 1 kon = i exit = 1 else printf \"No solution\\n\" return ( 0 ) elseif if s ][i == '@' fl = 1 @TO@ for i = 1 i < strlen s i ++ if n == - 1 if s ][i != '@' n = i else printf \"No solution\\n\" return ( 0 ) if fl == 1 if s ][i != '@' fl = 0 if flag != 0 jj ++ cc ][jj = ',' for j = n j <= i j ++ jj ++ cc ][jj = s ][j else for j = n j <= i j ++ jj ++ cc ][jj = s ][j flag = 1 n = - 1 kon = i exit = 1 else printf \"No solution\\n\" return ( 0 ) elseif if s ][i == '@' fl = 1 @AT@ 225 @LENGTH@ 368\n" +
+ "---UPD control@@i = 1 i <= strlen s i ++ @TO@ i = 1 i < strlen s i ++ @AT@ 225 @LENGTH@ 24\n" +
+ "------UPD condition@@i <= strlen s @TO@ i < strlen s @AT@ 233 @LENGTH@ 13\n" +
+ "---------UPD expr@@i <= strlen s @TO@ i < strlen s @AT@ 233 @LENGTH@ 13\n" +
+ "------------UPD operator@@<= @TO@ < @AT@ 235 @LENGTH@ 2\n");
+
+ }
+
+ @Test
+ public void test_644_A_18166947_18166954() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("644-A-18166947-18166954.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD for@@for i = 0 i < b i ++ for j = 0 j < b j ++ printf \"%lld \" array ][i ][j printf \"\\n\" @TO@ for i = 0 i < a i ++ for j = 0 j < b j ++ printf \"%lld \" array ][i ][j printf \"\\n\" @AT@ 1251 @LENGTH@ 82\n" +
+ "---UPD control@@i = 0 i < b i ++ @TO@ i = 0 i < a i ++ @AT@ 1251 @LENGTH@ 16\n" +
+ "------UPD condition@@i < b @TO@ i < a @AT@ 1256 @LENGTH@ 5\n" +
+ "---------UPD expr@@i < b @TO@ i < a @AT@ 1256 @LENGTH@ 5\n" +
+ "------------UPD name@@b @TO@ a @AT@ 1258 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_5_B_10350073_10350082() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("5-B-10350073-10350082.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD if@@if ! ( ( ml - l ) % 2 ) if right sl += 1 right = 1 - right @TO@ if ( ml - l ) % 2 if right sl += 1 right = 1 - right @AT@ 515 @LENGTH@ 58\n" +
+ "---UPD condition@@! ( ( ml - l ) % 2 ) @TO@ ( ml - l ) % 2 @AT@ 515 @LENGTH@ 20\n" +
+ "------UPD expr@@! ( ( ml - l ) % 2 ) @TO@ ( ml - l ) % 2 @AT@ 516 @LENGTH@ 20\n" +
+ "---------DEL operator@@! @AT@ 516 @LENGTH@ 1\n" +
+ "---------DEL operator@@( @AT@ 518 @LENGTH@ 1\n" +
+ "---------DEL operator@@) @AT@ 530 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_675_A_18211752_18211767() throws IOException {
+ List hierarchicalActionSets = getHierarchicalActionSets("675-A-18211752-18211767.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"MOV return@@return 0 @TO@ block@@if a == b printf \"YES\" else printf \"NO\" @AT@ 242 @LENGTH@ 8\n");
+
+ }
+
+ @Test
+ public void test_158_A_18278572_18278586() throws IOException {
+ //TODO
+ List hierarchicalActionSets = getHierarchicalActionSets("158-A-18278572-18278586.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD while@@while a ][i >= a ][k && i <= n count ++ i ++ @TO@ while a ][i >= a ][k && i <= n && a ][i != 0 count ++ i ++ @AT@ 501 @LENGTH@ 44\n" +
+ "---UPD condition@@a ][i >= a ][k && i <= n @TO@ a ][i >= a ][k && i <= n && a ][i != 0 @AT@ 501 @LENGTH@ 24\n" +
+ "------UPD expr@@a ][i >= a ][k && i <= n @TO@ a ][i >= a ][k && i <= n && a ][i != 0 @AT@ 502 @LENGTH@ 24\n" +
+ "---------INS operator@@&& @TO@ expr@@a ][i >= a ][k && i <= n @AT@ 518 @LENGTH@ 2\n" +
+ "---------INS name@@a ][i @TO@ expr@@a ][i >= a ][k && i <= n @AT@ 520 @LENGTH@ 5\n" +
+ "------------INS name@@a @TO@ name@@a ][i @AT@ 520 @LENGTH@ 1\n" +
+ "------------INS index@@][i @TO@ name@@a ][i @AT@ 522 @LENGTH@ 3\n" +
+ "---------------INS expr@@[i @TO@ index@@][i @AT@ 522 @LENGTH@ 2\n" +
+ "------------------INS name@@[i @TO@ expr@@[i @AT@ 522 @LENGTH@ 2\n" +
+ "---------INS operator@@!= @TO@ expr@@a ][i >= a ][k && i <= n @AT@ 524 @LENGTH@ 2\n" +
+ "---------INS literal:number@@0 @TO@ expr@@a ][i >= a ][k && i <= n @AT@ 526 @LENGTH@ 1\n");
+
+ }
+
+ @Test
+ public void test_31_B_136044_136045() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("31-B-136044-136045.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"MOV if@@if flag puts ans + 1 else printf \"No solution\\n\" @TO@ block@@long i long l long flag 0 long tot 0 gets str + 1 l = strlen str + 1 if str ][1 == '@' || str ][l == '@' end for i = 1 i <= l - 2 i ++ if str ][i == '@' && ( str ][i + 1 == '@' || str ][i + 2 == '@' ) end for i = 1 i <= l i ++ if flag && str ][i + 1 == '@' ans ][++ tot = ',' if str ][i == '@' flag = 1 ans ][++ tot = str ][i if flag puts ans + 1 else printf \"No solution\\n\" end return 0 @AT@ 937 @LENGTH@ 48\n");
+ }
+
+ @Test
+ public void test_432_A_16886797_16886828() throws IOException {
+
+ List hierarchicalActionSets = getHierarchicalActionSets("432-A-16886797-16886828.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"MOV if@@if z <= 5 - y s ++ @TO@ block@@scanf \"%d\" & z @AT@ 132 @LENGTH@ 18\n");
+ }
+
+ @Test
+ public void test_507_A_16886367_16886377() throws IOException {
+ //TODO macro
+ List hierarchicalActionSets = getHierarchicalActionSets("507-A-16886367-16886377.c");
+ Assert.assertEquals(hierarchicalActionSets.size(),1);
+ Assert.assertEquals(hierarchicalActionSets.get(0).toString(),"UPD block@@int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 n printf \"%d \" a ][j return 0 @TO@ int x 0 n 0 s 0 i j k h ][105 0 a ][105 0 c ][105 0 y 0 top 0 scanf \"%d %d\" & n & k FOR i 0 n scanf \"%d\" & c ][i FOR i 0 n a ][i = i + 1 FOR i 0 n FOR j 1 n if c ][j - 1 > c ][j s = c ][j c ][j = c ][j - 1 c ][j - 1 = s s = a ][j a ][j = a ][j - 1 a ][j - 1 = s FOR i 0 n top += c ][i if top > k break; printf \"%d\\n\" i FOR j 0 i printf \"%d \" a ][j return 0 @AT@ 270 @LENGTH@ 356\n" +
+ "---UPD macro@@FOR j 0 n @TO@ FOR j 0 i @AT@ 701 @LENGTH@ 9\n" +
+ "------UPD argument_list@@j 0 n @TO@ j 0 i @AT@ 704 @LENGTH@ 5\n" +
+ "---------UPD argument@@n @TO@ i @AT@ 709 @LENGTH@ 1\n");
+ }
+
+ @Test
+ public void test_25_D_110126_110132() throws IOException {
+ //TODO macro
+ List