public class nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer extends nl.basjes.parse.useragent.clienthints.ClientHintsHeadersParser
{
private static final nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING;
private static final java.util.List GENERIC_DEVICE_NAMES;
private static final java.util.regex.Pattern DOT_SPLITTER;
private static final java.util.Map BROWSER_ANCESTORS;
private static final java.util.Set CHROMIUMNAMES;
private static final java.util.Map BROWSER_RENAME;
private static final java.util.Map EXTRA_FIELD_DEPENDENCIES;
public void <init>()
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsHeadersParser: void <init>()>();
return;
}
public static void configureKryo(java.lang.Object)
{
java.lang.Object v;
v := @parameter: java.lang.Object;
virtualinvoke v.<com.esotericsoftware.kryo.Kryo: com.esotericsoftware.kryo.Registration register(java.lang.Class)>(class "Lnl/basjes/parse/useragent/clienthints/ClientHintsAnalyzer;");
staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsHeadersParser: void configureKryo(java.lang.Object)>(v);
return;
}
public nl.basjes.parse.useragent.UserAgent$MutableUserAgent merge(nl.basjes.parse.useragent.config.AnalyzerConfigHolder, nl.basjes.parse.useragent.UserAgent$MutableUserAgent, nl.basjes.parse.useragent.clienthints.ClientHints)
{
java.util.ArrayList v, v, v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
nl.basjes.parse.useragent.clienthints.ClientHints v;
java.lang.Boolean v, v;
java.lang.String v, v, v, v, v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
nl.basjes.parse.useragent.config.AnalyzerConfigHolder v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.config.AnalyzerConfigHolder;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: nl.basjes.parse.useragent.clienthints.ClientHints;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.util.ArrayList getBrands()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHBrandVersionsList(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.util.ArrayList)>(v, "UAClientHintBrands", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getArchitecture()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHString(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.String)>(v, "UAClientHintArchitecture", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getBitness()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHString(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.String)>(v, "UAClientHintBitness", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.util.ArrayList getFormFactors()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHStringList(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.util.ArrayList)>(v, "UAClientHintFormFactor", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getFullVersion()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHString(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.String)>(v, "UAClientHintFullVersion", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.util.ArrayList getFullVersionList()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHBrandVersionsList(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.util.ArrayList)>(v, "UAClientHintFullVersionList", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.Boolean getMobile()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHBoolean(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.Boolean)>(v, "UAClientHintMobile", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getModel()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHString(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.String)>(v, "UAClientHintModel", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getPlatform()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHString(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.String)>(v, "UAClientHintPlatform", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getPlatformVersion()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHString(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.String)>(v, "UAClientHintPlatformVersion", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.Boolean getWow64()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void setCHBoolean(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,java.lang.String,java.lang.Boolean)>(v, "UAClientHintWow64", v);
virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void improveOperatingSystem(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.clienthints.ClientHints)>(v, v);
virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void improveMobileDeviceClass(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.clienthints.ClientHints)>(v, v);
virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void improveDeviceBrandName(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.clienthints.ClientHints)>(v, v);
virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void improveDeviceCPU(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.clienthints.ClientHints)>(v, v);
virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void improveLayoutEngineAndAgentInfo(nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.clienthints.ClientHints)>(v, v);
virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void improveUsingBrandLookups(nl.basjes.parse.useragent.config.AnalyzerConfigHolder,nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.clienthints.ClientHints)>(v, v, v);
return v;
}
private void setCHBrandVersionsList(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, java.lang.String, java.util.ArrayList)
{
java.util.Iterator v;
java.util.ArrayList v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
int v;
java.lang.Object v;
java.lang.String v, v, v, v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: java.lang.String;
v := @parameter: java.util.ArrayList;
if v == null goto label;
v = 0;
v = virtualinvoke v.<java.util.ArrayList: 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 = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(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_Brand");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getName()>();
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void set(java.lang.String,java.lang.String,long)>(v, v, 1L);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(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_Version");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getVersion()>();
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void set(java.lang.String,java.lang.String,long)>(v, v, 1L);
v = v + 1;
goto label;
label:
return;
}
private void setCHStringList(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, java.lang.String, java.util.ArrayList)
{
java.util.Iterator v;
java.util.ArrayList v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
int v;
java.lang.Object v;
java.lang.String v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: java.lang.String;
v := @parameter: java.util.ArrayList;
if v == null goto label;
v = 0;
v = virtualinvoke v.<java.util.ArrayList: 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 = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(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");
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void set(java.lang.String,java.lang.String,long)>(v, v, 1L);
v = v + 1;
goto label;
label:
return;
}
private void setCHString(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, java.lang.String, java.lang.String)
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
java.lang.String v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
if v == null goto label;
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void set(java.lang.String,java.lang.String,long)>(v, v, 1L);
label:
return;
}
private void setCHBoolean(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, java.lang.String, java.lang.Boolean)
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
java.lang.Boolean v, v;
java.lang.String v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Boolean;
if v == null goto label;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<java.lang.Boolean: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = "true";
goto label;
label:
v = "false";
label:
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void set(java.lang.String,java.lang.String,long)>(v, v, 1L);
label:
return;
}
public void improveMobileDeviceClass(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, nl.basjes.parse.useragent.clienthints.ClientHints)
{
long v, v, v, v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
java.lang.Boolean v, v, v;
java.lang.String v, v, v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v, v;
nl.basjes.parse.useragent.AgentField$MutableAgentField v;
nl.basjes.parse.useragent.clienthints.ClientHints v;
nl.basjes.parse.useragent.classify.DeviceClass v, v, v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: nl.basjes.parse.useragent.clienthints.ClientHints;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.Boolean getMobile()>();
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass MOBILE>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.Boolean getMobile()>();
v = virtualinvoke v.<java.lang.Boolean: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass PHONE>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: long getConfidence()>();
v = v + 1L;
virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: boolean setValue(java.lang.String,long)>(v, v);
goto label;
label:
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass TABLET>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: long getConfidence()>();
v = v + 1L;
virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: boolean setValue(java.lang.String,long)>(v, v);
label:
return;
}
public void improveDeviceBrandName(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, nl.basjes.parse.useragent.clienthints.ClientHints)
{
nl.basjes.parse.useragent.AgentField$MutableAgentField v, v;
java.util.List v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
nl.basjes.parse.useragent.clienthints.ClientHints v;
java.lang.String v, v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: nl.basjes.parse.useragent.clienthints.ClientHints;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getModel()>();
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceName");
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.List GENERIC_DEVICE_NAMES>;
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getModel()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
label:
return;
}
public void improveDeviceCPU(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, nl.basjes.parse.useragent.clienthints.ClientHints)
{
nl.basjes.parse.useragent.AgentField$MutableAgentField v, v;
byte v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
int v;
nl.basjes.parse.useragent.clienthints.ClientHints v;
java.lang.String v, v, v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v, v, v, v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: nl.basjes.parse.useragent.clienthints.ClientHints;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getArchitecture()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getBitness()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceCpuBits");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
label:
if v == null goto label;
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case 96860: goto label;
case 117110: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("x86");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("arm");
if v == 0 goto label;
v = 1;
label:
lookupswitch(v)
{
case 0: goto label;
case 1: goto label;
default: goto label;
};
label:
v = "Intel x86_64";
v = "32";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = "Intel x86";
goto label;
label:
v = "ARM";
goto label;
label:
v = v;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceCpu");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
label:
return;
}
public void improveOperatingSystem(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, nl.basjes.parse.useragent.clienthints.ClientHints)
{
byte v, v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
java.io.Serializable v;
nl.basjes.parse.useragent.classify.DeviceClass v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.collections.PrefixMap v;
java.lang.String v, v, v, v, v, 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.utils.VersionSplitter v;
nl.basjes.parse.useragent.AgentField$MutableAgentField v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, 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.clienthints.ClientHints v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
int v, v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: nl.basjes.parse.useragent.clienthints.ClientHints;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getPlatform()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getPlatformVersion()>();
if v == null goto label;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = staticinvoke <nl.basjes.parse.useragent.utils.VersionSplitter: nl.basjes.parse.useragent.utils.VersionSplitter getInstance()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.utils.VersionSplitter: java.lang.String getSingleSplit(java.lang.String,int)>(v, 1);
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case -1280820637: goto label;
case -187773587: goto label;
case 103437: goto label;
case 73425108: goto label;
case 103651187: goto label;
case 803262031: goto label;
case 1144999607: goto label;
case 1379812394: goto label;
case 1401029930: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("macOS");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Mac OS X");
if v == 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("iOS");
if v == 0 goto label;
v = 2;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Android");
if v == 0 goto label;
v = 3;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Fuchsia");
if v == 0 goto label;
v = 4;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Linux");
if v == 0 goto label;
v = 5;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Chrome OS");
if v == 0 goto label;
v = 6;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Windows");
if v == 0 goto label;
v = 7;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Unknown");
if v == 0 goto label;
v = 8;
label:
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Apple");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass MOBILE>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Apple");
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass MOBILE>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceName");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Linux Desktop");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceVersion");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceFirmwareVersion");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceName");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentClass");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Browser");
label:
v = -1;
v = virtualinvoke v.<java.lang.String: int hashCode()>();
lookupswitch(v)
{
case -1280820637: goto label;
case -187773587: goto label;
case 103437: goto label;
case 73425108: goto label;
case 103651187: goto label;
case 803262031: goto label;
case 1144999607: goto label;
case 1379812394: goto label;
case 1401029930: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("macOS");
if v == 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Mac OS X");
if v == 0 goto label;
v = 1;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Android");
if v == 0 goto label;
v = 2;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Fuchsia");
if v == 0 goto label;
v = 3;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Chrome OS");
if v == 0 goto label;
v = 4;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("iOS");
if v == 0 goto label;
v = 5;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Linux");
if v == 0 goto label;
v = 6;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Windows");
if v == 0 goto label;
v = 7;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("Unknown");
if v == 0 goto label;
v = 8;
label:
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemName");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Mac OS");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersion");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersionMajor");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersion");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>("Mac OS", 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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersionMajor");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>("Mac OS", 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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemName");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersion");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersionMajor");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersion");
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersionMajor");
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
goto label;
label:
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable getLongestMatch(java.lang.String)>(v);
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = <nl.basjes.parse.useragent.classify.DeviceClass: nl.basjes.parse.useragent.classify.DeviceClass DESKTOP>;
v = virtualinvoke v.<nl.basjes.parse.useragent.classify.DeviceClass: java.lang.String getValue()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "<<<null>>>");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemName");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: java.lang.String getName()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: java.lang.String getVersion()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersionMajor");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: java.lang.String getVersionMajor()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: java.lang.String getNameVersion()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersionMajor");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: java.lang.String getNameVersionMajor()>();
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: java.lang.String getValue(java.lang.String)>("OperatingSystemName");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersion");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemVersionMajor");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersion");
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("OperatingSystemNameVersionMajor");
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
label:
return;
}
private boolean newVersionIsBetter(nl.basjes.parse.useragent.AgentField$MutableAgentField, java.lang.String)
{
nl.basjes.parse.useragent.AgentField$MutableAgentField v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
int v, v;
java.lang.String v, v;
boolean v, v, v, v, v, v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.AgentField$MutableAgentField;
v := @parameter: java.lang.String;
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(46);
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(46);
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: boolean isDefaultValue()>();
if v != 0 goto label;
if v != 0 goto label;
if v == 0 goto label;
label:
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void improveLayoutEngineAndAgentInfo(nl.basjes.parse.useragent.UserAgent$MutableUserAgent, nl.basjes.parse.useragent.clienthints.ClientHints)
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
java.util.Map v, v;
java.util.stream.Stream v;
java.util.TreeMap v, v;
nl.basjes.parse.useragent.clienthints.ClientHints v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
java.util.Collection v;
int v, v, v, v, v, v, v, v, v;
java.util.function.Consumer v;
java.lang.Object v, v, v, v, v, v;
java.util.Set v, v;
java.util.ArrayList v;
java.util.function.BiConsumer v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.NumberFormatException v;
nl.basjes.parse.useragent.AgentField$MutableAgentField v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.Optional v;
java.util.regex.Pattern v, v, v, v, v;
java.lang.String[] v, v, v, v, v;
java.util.Iterator v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: nl.basjes.parse.useragent.clienthints.ClientHints;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.util.ArrayList getFullVersionList()>();
if v != null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.util.ArrayList getBrands()>();
if v != null goto label;
return;
label:
v = new java.util.TreeMap;
specialinvoke v.<java.util.TreeMap: void <init>()>();
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$lambda_improveLayoutEngineAndAgentInfo_0__581: java.util.function.Consumer bootstrap$(java.util.Map)>(v);
interfaceinvoke v.<java.util.List: void forEach(java.util.function.Consumer)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("Chromium");
if v == null goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getVersion()>();
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.regex.Pattern DOT_SPLITTER>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
v = v[0];
v = lengthof v;
if v != 4 goto label;
v = "0";
v = v[1];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v[1];
v = v[2];
v = v[3];
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,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[])>("\u.0.\u.\u0001");
v = v[1];
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineName");
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: boolean isDefaultValue()>();
if v != 0 goto label;
v = "Blink";
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
label:
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Blink");
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineVersionMajor");
v = v;
v = lengthof v;
if v <= 1 goto label;
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[])>("\u.0");
label:
v = specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: boolean newVersionIsBetter(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
if v == 0 goto label;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineNameVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("LayoutEngineNameVersionMajor");
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 1 goto label;
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set CHROMIUMNAMES>;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: java.lang.String getValue(java.lang.String)>("AgentName");
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersion");
v = specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: boolean newVersionIsBetter(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentName");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Chromium");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersion");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersion");
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[])>("Chromium \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersionMajor");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersionMajor");
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[])>("Chromium \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
goto label;
label:
v = "Chrome";
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: java.lang.String getValue(java.lang.String)>("AgentName");
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentName");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Chromium");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
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[])>("Chromium \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: java.lang.String getValue(java.lang.String)>("AgentVersionMajor");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersionMajor");
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[])>("Chromium \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
label:
return;
label:
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>("Chromium");
label:
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_ANCESTORS>;
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$lambda_improveLayoutEngineAndAgentInfo_1__582: java.util.function.BiConsumer bootstrap$(java.util.Map)>(v);
interfaceinvoke v.<java.util.Map: void forEach(java.util.function.BiConsumer)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>("Android WebView");
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("Chrome");
if v != null goto label;
interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("Google Chrome");
label:
if v == null goto label;
v = interfaceinvoke v.<java.util.Map: int size()>();
if v != 1 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getVersion()>();
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.regex.Pattern DOT_SPLITTER>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence)>(v);
v = v[0];
v = lengthof v;
if v != 4 goto label;
v = "0";
v = v[1];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v[1];
v = v[2];
v = v[3];
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,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[])>("\u.0.\u.\u0001");
v = v[1];
label:
v = specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: boolean newVersionIsBetter(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentName");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, "Chrome");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersion");
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[])>("Chrome \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersionMajor");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersionMajor");
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[])>("Chrome \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
return;
label:
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>("Chrome");
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>("Google Chrome");
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentName");
v = "Opera";
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.regex.Pattern DOT_SPLITTER>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence,int)>(v, 2);
v = v[0];
label:
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v >= 98 goto label;
interfaceinvoke v.<java.util.Map: java.lang.Object remove(java.lang.Object)>("Opera");
label:
goto label;
label:
v := @caughtexception;
label:
v = new java.util.TreeMap;
specialinvoke v.<java.util.TreeMap: void <init>()>();
v = 0;
v = interfaceinvoke v.<java.util.Map: java.util.Collection values()>();
v = interfaceinvoke v.<java.util.Collection: 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 + 1;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getVersion()>();
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(46);
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(".0.0.0");
label:
if v == 0 goto label;
v = "1";
goto label;
label:
v = "0";
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int,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[])>("\u0001_\u0001_\u0001");
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentName");
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersion");
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: java.lang.String getValue()>();
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(46);
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(".0.0.0");
label:
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.stream.Stream stream()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.Optional findFirst()>();
v = virtualinvoke v.<java.util.Optional: boolean isPresent()>();
if v != 0 goto label;
return;
label:
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getName()>();
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_RENAME>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = v;
label:
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints$Brand: java.lang.String getVersion()>();
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.regex.Pattern DOT_SPLITTER>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence,int)>(v, 2);
v = v[0];
v = v;
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.regex.Pattern DOT_SPLITTER>;
v = virtualinvoke v.<java.util.regex.Pattern: java.lang.String[] split(java.lang.CharSequence,int)>(v, 2);
v = v[0];
if v == 0 goto label;
v = v;
v = v;
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v;
v = v;
label:
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersion");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersion");
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentVersionMajor");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("AgentNameVersionMajor");
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[])>("\u \u0001");
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
return;
catch java.lang.NumberFormatException from label to label with label;
}
public void improveUsingBrandLookups(nl.basjes.parse.useragent.config.AnalyzerConfigHolder, nl.basjes.parse.useragent.UserAgent$MutableUserAgent, nl.basjes.parse.useragent.clienthints.ClientHints)
{
java.lang.String[] v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
java.util.Locale v;
java.util.Map v;
java.lang.String v, v, v, v, v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
boolean v, v;
nl.basjes.parse.useragent.AgentField$MutableAgentField v, v, v;
nl.basjes.parse.useragent.clienthints.ClientHints v;
java.lang.Object v, v;
nl.basjes.parse.useragent.config.AnalyzerConfigHolder v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.config.AnalyzerConfigHolder;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v := @parameter: nl.basjes.parse.useragent.clienthints.ClientHints;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHints: java.lang.String getModel()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
label:
return;
label:
v = interfaceinvoke v.<nl.basjes.parse.useragent.config.AnalyzerConfigHolder: java.util.Map getLookups()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("AmazonDeviceTags");
if v == null goto label;
v = interfaceinvoke v.<java.util.Map: boolean isEmpty()>();
if v == 0 goto label;
label:
return;
label:
v = <java.util.Locale: java.util.Locale ROOT>;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase(java.util.Locale)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String,int)>("\\|", 3);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceClass");
v = v[0];
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceBrand");
v = v[1];
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: nl.basjes.parse.useragent.AgentField$MutableAgentField get(java.lang.String)>("DeviceName");
v = v[2];
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField,java.lang.String)>(v, v);
label:
return;
}
private static transient java.util.Set setOfStrings(java.lang.String[])
{
java.util.HashSet v;
java.lang.String[] v;
java.util.List v;
v := @parameter: java.lang.String[];
v = new java.util.HashSet;
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<java.util.HashSet: void <init>(java.util.Collection)>(v);
return v;
}
public static java.util.Set extraDependenciesNeededByClientCalculator(java.util.Set)
{
java.util.HashSet v;
java.util.Iterator v;
java.util.Map v;
java.util.Set v;
java.lang.Object v, v;
boolean v;
v := @parameter: java.util.Set;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
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 = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
virtualinvoke v.<java.util.HashSet: boolean addAll(java.util.Collection)>(v);
goto label;
label:
return v;
}
private void overrideValue(nl.basjes.parse.useragent.AgentField$MutableAgentField, java.lang.String)
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
long v, v;
java.lang.String v;
nl.basjes.parse.useragent.AgentField$MutableAgentField v;
v := @this: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
v := @parameter: nl.basjes.parse.useragent.AgentField$MutableAgentField;
v := @parameter: java.lang.String;
v = virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: long getConfidence()>();
v = v + 1L;
virtualinvoke v.<nl.basjes.parse.useragent.AgentField$MutableAgentField: boolean setValue(java.lang.String,long)>(v, v);
return;
}
static void <clinit>()
{
java.util.Map v, v, v, v, v, v, v, v, v, v, v, v;
java.util.Set v, v, v, v, v, v, v, v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
nl.basjes.collections.PrefixMap v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.TreeMap v, v, v;
nl.basjes.collections.prefixmap.StringPrefixMap v;
java.util.List v;
java.util.regex.Pattern v;
java.lang.String[] v, v, v, v, v, v, v;
java.util.HashSet v;
v = new nl.basjes.collections.prefixmap.StringPrefixMap;
specialinvoke v.<nl.basjes.collections.prefixmap.StringPrefixMap: void <init>(boolean)>(0);
<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING> = v;
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "7", "7", "Windows 7", "Windows 7");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("0.1", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "8", "8", "Windows 8", "Windows 8");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("0.2", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "8.1", "8", "Windows 8.1", "Windows 8");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("0.3", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("1", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("2", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("3", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("4", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("5", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("6", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("7", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("8", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("9", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "10", "10", "Windows 10", "Windows 10");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("10", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "11", "11", "Windows 11", "Windows 11");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("13", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "11", "11", "Windows 11", "Windows 11");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("14", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "11", "11", "Windows 11", "Windows 11");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("15", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.collections.PrefixMap WINDOWS_VERSION_MAPPING>;
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer$OSFields: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("Windows NT", "11", "11", "Windows 11", "Windows 11");
interfaceinvoke v.<nl.basjes.collections.PrefixMap: java.io.Serializable put(java.lang.String,java.io.Serializable)>("16", v);
v = newarray (java.lang.String)[7];
v[0] = "Unknown";
v[1] = "Android Mobile";
v[2] = "Fuchsia Mobile";
v[3] = "Fuchsia Device";
v[4] = "iOS Device";
v[5] = "Desktop";
v[6] = "Linux Desktop";
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.List GENERIC_DEVICE_NAMES> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("\\.");
<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.regex.Pattern DOT_SPLITTER> = v;
v = new java.util.TreeMap;
specialinvoke v.<java.util.TreeMap: void <init>()>();
<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_ANCESTORS> = v;
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_ANCESTORS>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("Google Chrome", "Chromium");
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_ANCESTORS>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("Chrome", "Chromium");
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_ANCESTORS>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("OperaMobile", "Opera");
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set CHROMIUMNAMES> = v;
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set CHROMIUMNAMES>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("Chromium");
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set CHROMIUMNAMES>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("Chrome");
v = new java.util.TreeMap;
specialinvoke v.<java.util.TreeMap: void <init>()>();
<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_RENAME> = v;
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_RENAME>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("OperaMobile", "Opera Mobile");
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_RENAME>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("Microsoft Edge", "Edge");
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map BROWSER_RENAME>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("Samsung Internet", "SamsungBrowser");
v = new java.util.TreeMap;
specialinvoke v.<java.util.TreeMap: void <init>()>();
<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES> = v;
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES>;
v = newarray (java.lang.String)[2];
v[0] = "AgentName";
v[1] = "AgentVersion";
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set setOfStrings(java.lang.String[])>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("AgentClass", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES>;
v = newarray (java.lang.String)[1];
v[0] = "AgentVersion";
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set setOfStrings(java.lang.String[])>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("AgentName", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES>;
v = newarray (java.lang.String)[1];
v[0] = "AgentName";
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set setOfStrings(java.lang.String[])>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("AgentVersion", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES>;
v = newarray (java.lang.String)[1];
v[0] = "AgentName";
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set setOfStrings(java.lang.String[])>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("AgentNameVersion", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES>;
v = newarray (java.lang.String)[1];
v[0] = "AgentName";
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set setOfStrings(java.lang.String[])>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("AgentVersionMajor", v);
v = <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Map EXTRA_FIELD_DEPENDENCIES>;
v = newarray (java.lang.String)[1];
v[0] = "AgentName";
v = staticinvoke <nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.Set setOfStrings(java.lang.String[])>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>("AgentNameVersionMajor", v);
return;
}
}