public class nl.basjes.parse.useragent.analyze.Matcher extends java.lang.Object implements java.io.Serializable
{
private static final org.apache.logging.log4j.Logger LOG;
private final nl.basjes.parse.useragent.analyze.MatchMaker analyzer;
private final java.util.List variableActions;
private final java.util.List dynamicActions;
private final java.util.List fixedStringActions;
private nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent;
private long actionsThatRequireInput;
private boolean verbose;
private boolean permanentVerbose;
private java.lang.String sourceFileName;
private java.lang.Integer sourceFileLineNumber;
private java.lang.String matcherSourceLocation;
private final java.util.Map informMatcherActionsAboutVariables;
private boolean alreadyNotifiedAnalyzerWeReceivedInput;
private long actionsThatRequireInputAndReceivedInput;
public java.lang.String getMatcherSourceLocation()
{
java.lang.String v;
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
return v;
}
public java.lang.String getSourceFileName()
{
java.lang.String v;
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String sourceFileName>;
return v;
}
public java.lang.Integer getSourceFileLineNumber()
{
nl.basjes.parse.useragent.analyze.Matcher v;
java.lang.Integer v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.Integer sourceFileLineNumber>;
return v;
}
private void <init>()
{
java.util.HashMap v;
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.ArrayList v, v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent> = null;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>(int)>(8);
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Map informMatcherActionsAboutVariables> = v;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean alreadyNotifiedAnalyzerWeReceivedInput> = 0;
v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput> = 0L;
v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer> = null;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions> = v;
return;
}
void <init>(nl.basjes.parse.useragent.analyze.MatchMaker)
{
nl.basjes.parse.useragent.analyze.MatchMaker v;
java.util.HashMap v;
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.ArrayList v, v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: nl.basjes.parse.useragent.analyze.MatchMaker;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent> = null;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>(int)>(8);
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Map informMatcherActionsAboutVariables> = v;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean alreadyNotifiedAnalyzerWeReceivedInput> = 0;
v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput> = 0L;
v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions> = v;
return;
}
public void destroy()
{
java.util.function.Consumer v, v;
java.util.List v, v, v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = staticinvoke <nl.basjes.parse.useragent.analyze.Matcher$destroy__15: java.util.function.Consumer bootstrap$()>();
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
interfaceinvoke v.<java.util.List: void clear()>();
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions>;
v = staticinvoke <nl.basjes.parse.useragent.analyze.Matcher$destroy__16: java.util.function.Consumer bootstrap$()>();
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions>;
interfaceinvoke v.<java.util.List: void clear()>();
return;
}
public java.util.Map getLookups()
{
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.Map v;
nl.basjes.parse.useragent.analyze.MatchMaker v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer>;
v = interfaceinvoke v.<nl.basjes.parse.useragent.analyze.MatchMaker: java.util.Map getLookups()>();
return v;
}
public java.util.Map getLookupSets()
{
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.Map v;
nl.basjes.parse.useragent.analyze.MatchMaker v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer>;
v = interfaceinvoke v.<nl.basjes.parse.useragent.analyze.MatchMaker: java.util.Map getLookupSets()>();
return v;
}
public void <init>(nl.basjes.parse.useragent.analyze.MatchMaker, java.util.Collection, nl.basjes.parse.useragent.config.MatcherConfig) throws nl.basjes.parse.useragent.analyze.UselessMatcherException
{
java.lang.Integer v, v;
java.lang.Long v;
org.apache.logging.log4j.Logger v, v, v;
nl.basjes.parse.useragent.analyze.MatchMaker v;
nl.basjes.parse.useragent.analyze.MatcherVariableAction v;
nl.basjes.parse.useragent.analyze.MatcherExtractAction v;
long v;
java.util.ArrayList v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine$Type v, v;
nl.basjes.parse.useragent.AgentField$MutableAgentField v;
nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException v;
int[] v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v, v, v;
boolean v, v, v, v, v, v, v;
java.util.Collection v;
java.util.List v, v, v, v, v, v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.HashMap v;
nl.basjes.parse.useragent.analyze.Matcher$MatcherDemotedExtractAction v;
int v, v, v;
java.util.Iterator v;
nl.basjes.parse.useragent.config.MatcherConfig v;
java.lang.Object v;
nl.basjes.parse.useragent.analyze.MatcherRequireAction v;
nl.basjes.parse.useragent.analyze.MatcherFailIfFoundAction v;
nl.basjes.parse.useragent.analyze.UselessMatcherException v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: nl.basjes.parse.useragent.analyze.MatchMaker;
v := @parameter: java.util.Collection;
v := @parameter: nl.basjes.parse.useragent.config.MatcherConfig;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent> = null;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>(int)>(8);
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Map informMatcherActionsAboutVariables> = v;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean alreadyNotifiedAnalyzerWeReceivedInput> = 0;
v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput> = 0L;
v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions> = v;
v = new nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
specialinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void <init>(java.util.Collection)>(v);
v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent> = v;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig: java.lang.String getMatcherSourceFilename()>();
v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String sourceFileName> = v;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig: int getMatcherSourceLineNumber()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.Integer sourceFileLineNumber> = v;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String sourceFileName>;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.Integer sourceFileLineNumber>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Integer)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001:\u0001");
v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation> = v;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose> = 0;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig: java.util.List getOptions()>();
if v == null goto label;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>("verbose");
if v == 0 goto label;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose> = 1;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean permanentVerbose> = 1;
label:
v = 0;
v = 0;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose>;
if v == 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String)>("---------------------------");
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String)>("- MATCHER -");
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig: java.util.List getConfigLines()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose>;
if v == 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine$Type getType()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getExpression()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("{}: {}", v, v);
label:
v = <nl.basjes.parse.useragent.analyze.Matcher$1: int[] $SwitchMap$nl$basjes$parse$useragent$config$MatcherConfig$ConfigLine$Type>;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine$Type getType()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine$Type: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
default: goto label;
};
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions>;
v = new nl.basjes.parse.useragent.analyze.MatcherVariableAction;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getAttribute()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getExpression()>();
specialinvoke v.<nl.basjes.parse.useragent.analyze.MatcherVariableAction: void <init>(java.lang.String,java.lang.String,nl.basjes.parse.useragent.analyze.Matcher)>(v, v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = new nl.basjes.parse.useragent.analyze.MatcherRequireAction;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getExpression()>();
specialinvoke v.<nl.basjes.parse.useragent.analyze.MatcherRequireAction: void <init>(java.lang.String,nl.basjes.parse.useragent.analyze.Matcher)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = new nl.basjes.parse.useragent.analyze.MatcherFailIfFoundAction;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getExpression()>();
specialinvoke v.<nl.basjes.parse.useragent.analyze.MatcherFailIfFoundAction: void <init>(java.lang.String,nl.basjes.parse.useragent.analyze.Matcher)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = 1;
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getAttribute()>();
v = interfaceinvoke v.<java.util.Collection: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = new nl.basjes.parse.useragent.analyze.MatcherExtractAction;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getAttribute()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.Long getConfidence()>();
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getExpression()>();
specialinvoke v.<nl.basjes.parse.useragent.analyze.MatcherExtractAction: void <init>(java.lang.String,long,java.lang.String,nl.basjes.parse.useragent.analyze.Matcher)>(v, v, v, v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent>;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getAttribute()>();
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void set(java.lang.String,java.lang.String,long)>(v, "Dummy", -9999L);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent>;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getAttribute()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>(v);
virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherExtractAction: void setResultAgentField(nl.basjes.parse.useragent.AgentField$MutableAgentField)>(v);
v = 1;
goto label;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = new nl.basjes.parse.useragent.analyze.Matcher$MatcherDemotedExtractAction;
v = virtualinvoke v.<nl.basjes.parse.useragent.config.MatcherConfig$ConfigLine: java.lang.String getExpression()>();
specialinvoke v.<nl.basjes.parse.useragent.analyze.Matcher$MatcherDemotedExtractAction: void <init>(java.lang.String,nl.basjes.parse.useragent.analyze.Matcher)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
if v != 0 goto label;
v = new nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Matcher does not extract anything:\u0001");
specialinvoke v.<nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
if v != 0 goto label;
v = new nl.basjes.parse.useragent.analyze.UselessMatcherException;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Does not extract any wanted fields\u0001");
specialinvoke v.<nl.basjes.parse.useragent.analyze.UselessMatcherException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
public void initialize()
{
byte v;
java.lang.Long v, v;
java.util.Map v, v;
java.util.Set v;
org.apache.logging.log4j.Logger v, v;
long v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.analyze.MatcherAction v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.List v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.HashSet v, v, v, v;
int v;
java.util.Iterator v, v, v, v, v, v;
java.util.function.Consumer v, v, v;
java.lang.Object v, v, v, v, v, v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = 0L;
v = staticinvoke <java.lang.System: long nanoTime()>();
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherVariableAction: long initialize()>();
v = v + v;
goto label;
label:
v := @caughtexception;
v = new nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Syntax error.(\u)");
specialinvoke v.<nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException: void <init>(java.lang.String,java.lang.Exception)>(v, v);
throw v;
label:
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: long initialize()>();
v = v + v;
label:
goto label;
label:
v := @caughtexception;
v = v instanceof nl.basjes.parse.useragent.analyze.Matcher$MatcherDemotedExtractAction;
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException: java.lang.String getMessage()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("It is useless to put a fixed value");
if v != 0 goto label;
label:
v = new nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException: java.lang.String getMessage()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Syntax error.(\u)\u0001");
specialinvoke v.<nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException: void <init>(java.lang.String,java.lang.Exception)>(v, v);
throw v;
label:
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v instanceof nl.basjes.parse.useragent.analyze.MatcherExtractAction;
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherExtractAction: boolean isFixedValue()>();
if v == 0 goto label;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions>;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: boolean obtainResult()>();
goto label;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions>;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <nl.basjes.parse.useragent.analyze.Matcher$remove__17: java.util.function.Consumer bootstrap$(java.util.List)>(v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <nl.basjes.parse.useragent.analyze.Matcher$remove__18: java.util.function.Consumer bootstrap$(java.util.List)>(v);
interfaceinvoke v.<java.util.Set: void forEach(java.util.function.Consumer)>(v);
v = new java.util.HashSet;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions>;
v = interfaceinvoke v.<java.util.List: int size()>();
specialinvoke v.<java.util.HashSet: void <init>(int)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Map informMatcherActionsAboutVariables>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherVariableAction: java.lang.String getVariableName()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v != 0 goto label;
virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherVariableAction: void setInterestedActions(java.util.Set)>(v);
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = new nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherVariableAction: java.lang.String getVariableName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,nl.basjes.parse.useragent.analyze.MatcherAction,java.lang.String)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Syntax error (\u): The line >>\u0001<< is referencing variable @\u which is not defined yet.");
specialinvoke v.<nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = staticinvoke <nl.basjes.parse.useragent.analyze.Matcher$lambda_initialize_0__19: java.util.function.Consumer bootstrap$(java.util.Set)>(v);
interfaceinvoke v.<java.util.Set: void forEach(java.util.function.Consumer)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Map informMatcherActionsAboutVariables>;
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v != 0 goto label;
v = new nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.util.HashSet)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Syntax error (\u): Used, yet undefined variables: \u0001");
specialinvoke v.<nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List variableActions>;
interfaceinvoke v.<java.util.List: boolean addAll(int,java.util.Collection)>(0, v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = specialinvoke v.<nl.basjes.parse.useragent.analyze.Matcher: long countActionsThatMustHaveMatches(java.util.List)>(v);
v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInput> = v;
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v cmp 3000L;
if v <= 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = v - v;
v = v / 1000000L;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object)>("Large matcher: {} in {} ms:.({})", v, v, v);
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose>;
if v == 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String)>("---------------------------");
label:
return;
catch nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException from label to label with label;
catch nl.basjes.parse.useragent.analyze.InvalidParserConfigurationException from label to label with label;
}
private long countActionsThatMustHaveMatches(java.util.List)
{
java.util.List v;
java.util.Iterator v;
java.lang.Object v;
long v;
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: java.util.List;
v = 0L;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: void reset()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: boolean mustHaveMatches()>();
if v == 0 goto label;
v = v + 1L;
goto label;
label:
return v;
}
public java.util.Set getAllPossibleFieldNames()
{
java.util.List v, v;
java.util.Set v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.TreeSet v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = new java.util.TreeSet;
specialinvoke v.<java.util.TreeSet: void <init>()>();
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = specialinvoke v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Set getAllPossibleFieldNames(java.util.List)>(v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions>;
v = specialinvoke v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Set getAllPossibleFieldNames(java.util.List)>(v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>("__Set_ALL_Fields__");
return v;
}
private java.util.Set getAllPossibleFieldNames(java.util.List)
{
java.util.Iterator v;
nl.basjes.parse.useragent.analyze.MatcherAction v;
java.util.TreeSet v;
java.util.List v;
java.lang.Object v;
java.lang.String v;
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: java.util.List;
v = new java.util.TreeSet;
specialinvoke v.<java.util.TreeSet: void <init>()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v instanceof nl.basjes.parse.useragent.analyze.MatcherExtractAction;
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherExtractAction: java.lang.String getAttribute()>();
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
public void lookingForRange(java.lang.String, nl.basjes.parse.useragent.analyze.WordRangeVisitor$Range)
{
nl.basjes.parse.useragent.analyze.WordRangeVisitor$Range v;
nl.basjes.parse.useragent.analyze.MatchMaker v;
java.lang.String v;
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: java.lang.String;
v := @parameter: nl.basjes.parse.useragent.analyze.WordRangeVisitor$Range;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer>;
interfaceinvoke v.<nl.basjes.parse.useragent.analyze.MatchMaker: void lookingForRange(java.lang.String,nl.basjes.parse.useragent.analyze.WordRangeVisitor$Range)>(v, v);
return;
}
public void informMeAbout(nl.basjes.parse.useragent.analyze.MatcherAction, java.lang.String)
{
nl.basjes.parse.useragent.analyze.MatchMaker v;
java.lang.String v;
nl.basjes.parse.useragent.analyze.Matcher v;
nl.basjes.parse.useragent.analyze.MatcherAction v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: nl.basjes.parse.useragent.analyze.MatcherAction;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer>;
interfaceinvoke v.<nl.basjes.parse.useragent.analyze.MatchMaker: void informMeAbout(nl.basjes.parse.useragent.analyze.MatcherAction,java.lang.String)>(v, v);
return;
}
public void informMeAboutPrefix(nl.basjes.parse.useragent.analyze.MatcherAction, java.lang.String, java.lang.String)
{
nl.basjes.parse.useragent.analyze.MatchMaker v;
java.lang.String v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
nl.basjes.parse.useragent.analyze.MatcherAction v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: nl.basjes.parse.useragent.analyze.MatcherAction;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer>;
interfaceinvoke v.<nl.basjes.parse.useragent.analyze.MatchMaker: void informMeAboutPrefix(nl.basjes.parse.useragent.analyze.MatcherAction,java.lang.String,java.lang.String)>(v, v, v);
return;
}
void informMeAboutVariable(nl.basjes.parse.useragent.analyze.MatcherAction, java.lang.String)
{
java.util.Map v;
java.lang.Object v;
java.lang.String v;
nl.basjes.parse.useragent.analyze.Matcher v;
nl.basjes.parse.useragent.analyze.MatcherAction v;
java.util.function.Function v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: nl.basjes.parse.useragent.analyze.MatcherAction;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.Map informMatcherActionsAboutVariables>;
v = staticinvoke <nl.basjes.parse.useragent.analyze.Matcher$lambda_informMeAboutVariable_1__20: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object computeIfAbsent(java.lang.Object,java.util.function.Function)>(v, v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
return;
}
public void analyze(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)
{
byte v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v, v;
boolean v, v, v, v, v, v, v, v;
java.util.List v, v, v;
org.apache.logging.log4j.Logger v, v, v, v, v, v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
long v, v;
java.lang.String v, v, v;
java.util.Iterator v, v, v;
java.lang.Object v, v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose>;
if v == 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String)>("");
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String,java.lang.Object)>("--- Matcher.({}) ------------------------", v);
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String)>("ANALYSE ----------------------------");
v = 1;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: boolean cannotBeValid()>();
if v == 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: java.lang.String getMatchExpression()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String,java.lang.Object)>("CANNOT BE VALID : {}", v);
v = 0;
goto label;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: boolean obtainResult()>();
if v != 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: java.lang.String getMatchExpression()>();
interfaceinvoke v.<org.apache.logging.log4j.Logger: void error(java.lang.String,java.lang.Object)>("FAILED : {}", v);
v = 0;
goto label;
label:
if v == 0 goto label;
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String)>("COMPLETE ----------------------------");
goto label;
label:
v = <nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG>;
interfaceinvoke v.<org.apache.logging.log4j.Logger: void info(java.lang.String)>("INCOMPLETE ----------------------------");
return;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInput>;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput>;
v = v cmp v;
if v == 0 goto label;
return;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: boolean obtainResult()>();
if v != 0 goto label;
return;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.UserAgent$MutableUserAgent newValuesUserAgent>;
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void set(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.analyze.Matcher)>(v, v);
return;
}
public boolean getVerbose()
{
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose>;
return v;
}
void receivedInput()
{
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v;
nl.basjes.parse.useragent.analyze.MatchMaker v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: boolean alreadyNotifiedAnalyzerWeReceivedInput>;
if v == 0 goto label;
return;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: nl.basjes.parse.useragent.analyze.MatchMaker analyzer>;
interfaceinvoke v.<nl.basjes.parse.useragent.analyze.MatchMaker: void receivedInput(nl.basjes.parse.useragent.analyze.Matcher)>(v);
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean alreadyNotifiedAnalyzerWeReceivedInput> = 1;
return;
}
public long getActionsThatRequireInput()
{
long v;
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInput>;
return v;
}
public long getActionsThatRequireInputAndReceivedInput()
{
long v;
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput>;
return v;
}
void gotMyFirstStartingPoint()
{
long v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput>;
v = v + 1L;
v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput> = v;
return;
}
protected void failImmediately()
{
nl.basjes.parse.useragent.analyze.Matcher v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput> = -9223372036854775808L;
return;
}
public void setVerboseTemporarily(boolean)
{
java.util.List v;
java.util.Iterator v;
java.lang.Object v;
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v := @parameter: boolean;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: void setVerbose(boolean,boolean)>(v, 1);
goto label;
label:
return;
}
public void reset()
{
java.util.List v;
java.util.Iterator v;
java.lang.Object v;
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean alreadyNotifiedAnalyzerWeReceivedInput> = 0;
v.<nl.basjes.parse.useragent.analyze.Matcher: long actionsThatRequireInputAndReceivedInput> = 0L;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: boolean permanentVerbose>;
v.<nl.basjes.parse.useragent.analyze.Matcher: boolean verbose> = v;
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: void reset()>();
goto label;
label:
return;
}
public java.util.List getMatches()
{
java.util.List v;
java.util.Iterator v;
java.lang.Object v;
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v;
java.util.ArrayList v;
nl.basjes.parse.useragent.analyze.MatchesList v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(128);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
goto label;
label:
return v;
}
public java.util.List getUsedMatches()
{
java.util.Iterator v, v;
java.util.ArrayList v, v, v;
nl.basjes.parse.useragent.analyze.MatchesList v;
java.util.List v, v;
java.lang.Object v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
boolean v, v, v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(128);
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: boolean cannotBeValid()>();
if v == 0 goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
return v;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: boolean obtainResult()>();
if v != 0 goto label;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
return v;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
goto label;
label:
return v;
}
public java.lang.String toString()
{
java.lang.StringBuilder v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.analyze.MatcherAction v;
nl.basjes.parse.useragent.analyze.MatchesList v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v;
java.util.List v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.analyze.Matcher v;
java.util.Iterator v, v, v, v, v;
java.lang.Object v, v, v, v, v;
v := @this: nl.basjes.parse.useragent.analyze.Matcher;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(512);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("MATCHER.(");
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.lang.String matcherSourceLocation>;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("):\n");
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("    VARIABLE:\n");
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v instanceof nl.basjes.parse.useragent.analyze.MatcherVariableAction;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        @");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherVariableAction: java.lang.String getVariableName()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(":    ");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: java.lang.String getMatchExpression()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        -->");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatchesList: java.util.List toStrings()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("    REQUIRE:\n");
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v instanceof nl.basjes.parse.useragent.analyze.MatcherRequireAction;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        ");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: java.lang.String getMatchExpression()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        -->");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatchesList: java.util.List toStrings()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("    FAIL_IF_FOUND:\n");
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v instanceof nl.basjes.parse.useragent.analyze.MatcherFailIfFoundAction;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        ");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: java.lang.String getMatchExpression()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        -->");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatchesList: java.util.List toStrings()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("    EXTRACT:\n");
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List dynamicActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v instanceof nl.basjes.parse.useragent.analyze.MatcherExtractAction;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        ");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        -->");
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.MatcherAction: nl.basjes.parse.useragent.analyze.MatchesList getMatches()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
goto label;
label:
v = v.<nl.basjes.parse.useragent.analyze.Matcher: java.util.List fixedStringActions>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("        ");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(10);
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
static void <clinit>()
{
org.apache.logging.log4j.Logger v;
v = staticinvoke <org.apache.logging.log4j.LogManager: org.apache.logging.log4j.Logger getLogger(java.lang.Class)>(class "Lnl/basjes/parse/useragent/analyze/Matcher;");
<nl.basjes.parse.useragent.analyze.Matcher: org.apache.logging.log4j.Logger LOG> = v;
return;
}
}