Closed baltpeter closed 2 weeks ago
There are two request formats: JSON body and Protobuf body. From a quick glance, it looks like iOS always uses the Protobuf format and Android always uses the JSON format.
But even in the JSON format, the "interesting" data is wrapped in a Protobuf further down.
In both cases, it's not too hard to understand a good chunk of the data without more information.
Taking monkey-july-2023,97960 as an example:
As the endpoint URL implies, this is clearly an endpoint for dumping logging data in batches. We only have one root-level property, logRequest
, which is an array of multiple log requests:
{
"logRequest": [
{
"requestTimeMs": 1690282473347,
"requestUptimeMs": 328566,
"clientInfo": {
"clientType": "ANDROID_FIREBASE",
"androidClientInfo": {
"sdkVersion": 33,
"model": "sdk_gphone_x86_64",
"hardware": "ranchu",
"device": "emu64xa",
"product": "sdk_gphone_x86_64",
"osBuild": "TE1A.220922.025",
"manufacturer": "Google",
"fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
"locale": "en",
"country": "US",
"mccMnc": "310260",
"applicationBuild": "124390000"
}
},
"logSourceName": "GDT_CLIENT_METRICS",
"logEvent": [
{
"eventTimeMs": 1690282473344,
"eventUptimeMs": 328564,
"sourceExtension": "Cg4Ildq85ZgxEIDvvuWYMRoLCgkIgOAEEICAgAUiEGNvbS53b2x0LmFuZHJvaWQ=",
"timezoneOffsetSeconds": 7200,
"networkConnectionInfo": { "networkType": "WIFI" }
}
],
"qosTier": "DEFAULT"
},
// […]
]
}
logInfo.*.clientInfo
has a bunch of metadata with pretty obvious property names. And it's all fairly benign.
In logInfo.*.logEvent
, we then find the actual events that are being logged, again as an array:
[
{
"eventTimeMs": 1690282438854,
"eventUptimeMs": 294074,
"sourceExtension": "CmcKJzE6OTcwMDk4MTU3MDAwOmFuZHJvaWQ6MGQyZDdhY2JiYzNmOTVkORIWZjVWaFFpTFZRRnlLOUExcGNleTJfNRoiChBjb20ud29sdC5hbmRyb2lkEgYyMC4zLjIaBjQuMzkuMCgCGpABCjJodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTYuMC9hcHAvbW9iaWxlX3Nka19naxABIIsTKMgBMh50ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9VVRGLTg4iJCs4tipgANIjgFQxsMXaiIKIDg1NmE2ZGU0ZGM0NTQ2ZDFhZDU5ZTdjMzQ1ODc3YmM3",
"timezoneOffsetSeconds": 7200,
"networkConnectionInfo": { "networkType": "WIFI" }
},
{
"eventTimeMs": 1690282438856,
"eventUptimeMs": 294076,
"sourceExtension": "CmcKJzE6OTcwMDk4MTU3MDAwOmFuZHJvaWQ6MGQyZDdhY2JiYzNmOTVkORIWZjVWaFFpTFZRRnlLOUExcGNleTJfNRoiChBjb20ud29sdC5hbmRyb2lkEgYyMC4zLjIaBjQuMzkuMCgCGoEBCiRodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTYuMC9hcHAQASD8BijIATIedGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PVVURi04OPCXrOLYqYADSAtQgLsaaiIKIDg1NmE2ZGU0ZGM0NTQ2ZDFhZDU5ZTdjMzQ1ODc3YmM3",
"timezoneOffsetSeconds": 7200,
"networkConnectionInfo": { "networkType": "WIFI" }
},
// […]
]
Here, *.sourceExtension
is a base64-encoded Protobuf. Decoding those two, we get:
{
"1": {
"1": "1:970098157000:android:0d2d7acbbc3f95d9",
"2": "f5VhQiLVQFyK9A1pcey2_5",
"3": {
"1": "com.wolt.android",
"2": "20.3.2",
"3": "4.39.0"
},
"5": 2
},
"3": {
"1": "https://graph.facebook.com/v16.0/app/mobile_sdk_gk",
"2": 1,
"4": 2443,
"5": 200,
"6": "text/javascript; charset=UTF-8",
"7": 1690282438101000,
"9": 142,
"10": 385478,
"13": {
"1": "856a6de4dc4546d1ad59e7c345877bc7"
}
}
}
{
"1": {
"1": "1:970098157000:android:0d2d7acbbc3f95d9",
"2": "f5VhQiLVQFyK9A1pcey2_5",
"3": {
"1": "com.wolt.android",
"2": "20.3.2",
"3": "4.39.0"
},
"5": 2
},
"3": {
"1": "https://graph.facebook.com/v16.0/app",
"2": 1,
"4": 892,
"5": 200,
"6": "text/javascript; charset=UTF-8",
"7": 1690282438102000,
"9": 11,
"10": 433536,
"13": {
"1": "856a6de4dc4546d1ad59e7c345877bc7"
}
}
}
com.wolt.android
is clearly the app ID, 4.39.0
is the app version. The 3
property clearly logs requests made the app with URL, content type, timestamp. Maybe response status code (200
)?
There are also other possible log formats:
{
"1": {
"1": 1690282437909,
"2": 1690282473344
},
"3": {
"1": {
"1": 77824,
"2": 10485760
}
},
"4": "com.wolt.android"
}
Here, only the app ID is obvious. There are some timestamps, I don't know what they and everything else represent.
{
"1": {
"1": "1:970098157000:android:0d2d7acbbc3f95d9",
"2": "f5VhQiLVQFyK9A1pcey2_5",
"3": {
"1": "com.wolt.android",
"2": "20.3.2",
"3": "4.39.0"
},
"5": 1
},
"2": {
"1": "_st_SignInHubActivity",
"4": 1690282468516000,
"5": 278632,
"6": [
{
"1": "_fr_slo",
"2": 1
},
{
"1": "_fr_tot",
"2": 1
}
],
"9": {
"1": "856a6de4dc4546d1ad59e7c345877bc7"
}
}
}
And it seems like 2
is responsible for viewed activities.
In none of the formats do I see an obvious ID (not in the cookies or headers, either). 856a6de4dc4546d1ad59e7c345877bc7
might be one? Might also be something else entirely, though.
Looking at monkey-july-2023,18795 for an iOS example:
Decoding that, we get:
{
"1": {
"1": {
"1": 15,
"4": {
"3": "15",
"4": "15.6.1",
"5": "2",
"6": "DE",
"7": "iPhone10,6",
"8": {
"12": 1111960942
},
"11": "com.limebike"
}
},
"2": 462,
"3": [
{
"1": 1690446520548,
"6": {
"1": {
"1": "1:299973870560:ios:7bce0198695615e7",
"2": "dIo7NP3vB0gwr42_PVqWd_",
"4": {
"2": "10.5.0",
"3": "3.117.0",
"5": {
"1": 1
}
},
"5": 1
},
"3": {
"1": "https://web-production.lime.bike/api/rider/v2/onboarding/experiments",
"2": 1,
"3": 0,
"4": 1364,
"5": 200,
"6": "application/json",
"7": 1690446519783417,
"9": 763035,
"10": 763717,
"13": {
"1": "8be1061ec99f46f9aa8a5ce5019a5178"
}
}
},
"15": 14400,
"17": 4276913727
},
{
"1": 1690446520071,
"6": {
"1": {
"1": "1:299973870560:ios:7bce0198695615e7",
"2": "dIo7NP3vB0gwr42_PVqWd_",
"4": {
"2": "10.5.0",
"3": "3.117.0",
"5": {
"1": 1
}
},
"5": 1
},
"3": {
"1": "https://api.statsig.com/v1/initialize",
"2": 3,
"3": 411,
"4": 78756,
"5": 200,
"6": "application/json",
"7": 1690446519797025,
"10": 272482,
"13": {
"1": "8be1061ec99f46f9aa8a5ce5019a5178"
}
}
},
"15": 14400,
"17": 4276913250
},
// […]
],
"4": 1690446549645,
"8": 4276942824
}
}
Clearly very similar. Looks like the events 1.3.*.6
are pretty much the exact same Protobuf format.
Looking at the user agents (datatransport/3.1.9 android/
, datatransport/3.1.8 android/
, datatransport/Unknown fllsupport/UNKNOWN apple/
) to discover the responsible SDK package, I stumbled upon https://github.com/xamarin/GooglePlayServicesComponents/ and https://mvnrepository.com/artifact/com.google.android.datatransport/transport-runtime/3.1.9.
The latter lists https://mvnrepository.com/artifact/com.google.firebase/firebase-encoders/17.0.0 and https://mvnrepository.com/artifact/com.google.firebase/firebase-encoders-proto/16.0.0 as dependencies, which sound very interesting.
Running those two through jadx, I unfortunately didn't discover anything interesting.
Oh look, these packages are open source, even: https://github.com/firebase/firebase-android-sdk/tree/43eec0e4d8660d12cd2649444d3866a13676b853/encoders/firebase-encoders-proto
No schemas there either, though. But since the rest of the Firebase SDK is also open, I'll look at that next.
GoogleDataTransport is also open: https://github.com/google/GoogleDataTransport
https://github.com/google/GoogleDataTransport/blob/78c44ad53d41c84d7d04ceab9e8773327befbf2c/GoogleDataTransport/ProtoSupport/Protos/cct.proto is the schema for the iOS messages!
The transmitted type is BatchedLogRequest
. Our request being parsed using that schema in CyberChef&input=CswhCjgIDyI0GgIxNSIGMTUuNi4xKgEyMgJERToKaVBob25lMTAsNkIFZW4tR0JaDGNvbS5saW1lYmlrZRDOAxqGAgjkwduzmTEy8gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGpcBCkRodHRwczovL3dlYi1wcm9kdWN0aW9uLmxpbWUuYmlrZS9hcGkvcmlkZXIvdjIvb25ib2FyZGluZy9leHBlcmltZW50cxABGAAg1AooyAEyEGFwcGxpY2F0aW9uL2pzb244%2BZ/LgryugANIm8kuUMXOLmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBv4yy9w8a5AEIh77bs5kxMtABClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp2CiVodHRwczovL2FwaS5zdGF0c2lnLmNvbS92MS9pbml0aWFsaXplEAMYmwMgpOcEKMgBMhBhcHBsaWNhdGlvbi9qc29uOKGKzIK8roADUOLQEGoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgB4oiy9w8a6gEI2cnbs5kxMtYBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp8Ci1odHRwczovL2Nkbi5icmFuY2guaW8vc2RrL3VyaXNraXBsaXN0X3YwLmpzb24QARgAIO0BKMgBMhBhcHBsaWNhdGlvbi9qc29uOLDurIO8roADUMTYCmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBtJSy9w8a3wEIn7Pcs5kxMssBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARpxCiVodHRwczovL3JlZ2lvbjEuYXBwLW1lYXN1cmVtZW50LmNvbS9hEAMY4gQgACjMATIJaW1hZ2UvZ2lmOL/85om8roADQIH4BlDZjQlqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAfr9svcPGu0BCMqy3LOZMTLZAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEafwowaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1EAEYACCNASjIATIQYXBwbGljYXRpb24vanNvbjjRnMeJvK6AA1DdhyJqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAaX9svcPGo8CCIW23LOZMTL7AQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEaoAEKUmh0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tL3YxNC4wLzM2NjgxNTI1MDc4ODk1NS9pb3Nfc2thZG5ldHdvcmtfY29udmVyc2lvbl9jb25maWcQARgAIAsoyAEyEGFwcGxpY2F0aW9uL2pzb244r4vqibyugANQx%2BobaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHggLP3Dxr6AQj%2BtdyzmTEy5gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGosBCjxodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMC8zNjY4MTUyNTA3ODg5NTUvbW9kZWxfYXNzZXQQARgAIJkIKMgBMhBhcHBsaWNhdGlvbi9qc29uOND46Ym8roADUKevG2oiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgB2YCz9w8a8wEIscTbs5kxMt8BClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqEAQo3aHR0cHM6Ly9hc3NldHMubGltZS5iaWtlL2ltYWdlX2ZpbGVzL3NpZ25pbnYybm9sb2dvLnBuZxABGAAghXwoyAEyCmltYWdlL2pwZWc45aH/gryugANI%2BpcNUKz%2BDmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBjI%2By9w8ahAIIkLbcs5kxMvABClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqVAQpHaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1L2FlbV9jb252ZXJzaW9uX2NvbmZpZ3MQARgAIAsoyAEyEGFwcGxpY2F0aW9uL2pzb244karqibyugANQ%2B6IcaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHqgLP3DxqTAgi7wtuzmTEy/wEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGqQBClVodHRwczovL2ZpcmViYXNlaW5zdGFsbGF0aW9ucy5nb29nbGVhcGlzLmNvbS92MS9wcm9qZWN0cy9saW1lYmlrZS1wcm9kL2luc3RhbGxhdGlvbnMvEAMYfSDnBCjIATIQYXBwbGljYXRpb24vanNvbji3i86CvK6AA1Cv9CtqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAZaNsvcPGuIBCIK/27OZMTLOAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEadAogaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAQAxjoAiCTFSjIATIQYXBwbGljYXRpb24vanNvbji3g7WCvK6AA0CjviVQw/IuaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHdibL3DxqSAgi2sdyzmTEy/gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGqMBCkpodHRwczovL2FwcC1tZWFzdXJlbWVudC5jb20vY29uZmlnL2FwcC8xOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxABGAAgyQUoyAEyFmFwcGxpY2F0aW9uL3gtcHJvdG9idWY4t/W8ibyugANIsvskUO/7JGoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBkfyy9w8a/QEIjrbcs5kxMukBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqOAQo7aHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1L2FjdGl2aXRpZXMQAxi0AiAQKMgBMhBhcHBsaWNhdGlvbi9qc29uOJGy6om8roADQMSPEVCakRxqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAemAs/cPGuMBCKjI27OZMTLPAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEadQohaHR0cHM6Ly9hcGkyLmJyYW5jaC5pby92MS9pbnN0YWxsEAMYkw4gmwIoyAEyEGFwcGxpY2F0aW9uL2pzb244xLeJg7yugANAzq0HUPHsIWoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBgpOy9w8a6QEI44ncs5kxMtUBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp7CihodHRwczovL3Nkay5pYWQtMDMuYnJhemUuY29tL2FwaS92My9kYXRhEAMY2AIgAijJATIQYXBwbGljYXRpb24vanNvbjjqvpOHvK6AA0DPlxBQ5tcYaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAG%2B1LL3Dxr9AQjwttyzmTEy6QEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGo4BCjtodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMC8zNjY4MTUyNTA3ODg5NTUvYWN0aXZpdGllcxADGMQEIBAoyAEyEGFwcGxpY2F0aW9uL2pzb244ovrqibyugANAyLgRUPHLIWoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBy4Gz9w8a4gEIkL/bs5kxMs4BClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp0CiBodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMBADGJEDIIogKMgBMhBhcHBsaWNhdGlvbi9qc29uOJmItYK8roADQPTuJVDS8S9qIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAeuJsvcPII2l3bOZMUDo77P3Dw) (I had to move BatchedLogRequest
to the top for CyberChef to parse the message as that).
We get the same output as the requests on Android!
Unfortunately, that doesn't help us for source_extension
. That is still a base64-encoded Protobuf that we don't have the schema for.
There is a different version of the schema in the Android SDK: https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/transport/transport-backend-cct/src/test/proto/google/cct/google_cct.proto
https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto#L50 is the schema for sourceExtension
/source_extension
(PerfMetric
)!
It fails in CyberChef for some reason but does work in https://www.protobufpal.com/ Here's what a message decodes as:
{
"application_info": {
"custom_attributes": {},
"google_app_id": "1:299973870560:ios:7bce0198695615e7",
"app_instance_id": "dIo7NP3vB0gwr42_PVqWd_",
"android_app_info": null,
"application_process_state": "FOREGROUND"
},
"trace_metric": null,
"network_request_metric": {
"perf_sessions": [
{
"session_verbosity": [],
"session_id": "8be1061ec99f46f9aa8a5ce5019a5178"
}
],
"custom_attributes": {},
"url": "https://graph.facebook.com/v14.0/366815250788955/activities",
"http_method": "POST",
"request_payload_bytes": 580,
"response_payload_bytes": 16,
"http_response_code": 200,
"response_content_type": "application/json",
"client_start_time_us": 1690446534982946,
"time_to_request_completed_us": 285768,
"time_to_response_initiated_us": 0,
"time_to_response_completed_us": 550385,
"network_client_error_reason": "NETWORK_CLIENT_ERROR_REASON_UNKNOWN"
},
"gauge_metric": null,
"transport_info": null
}
Also works for Android:
{
"application_info": {
"custom_attributes": {},
"google_app_id": "1:970098157000:android:0d2d7acbbc3f95d9",
"app_instance_id": "f5VhQiLVQFyK9A1pcey2_5",
"android_app_info": {
"package_name": "com.wolt.android",
"sdk_version": "20.3.2",
"version_name": "4.39.0"
},
"application_process_state": "BACKGROUND"
},
"trace_metric": null,
"network_request_metric": {
"perf_sessions": [
{
"session_verbosity": [],
"session_id": "856a6de4dc4546d1ad59e7c345877bc7"
}
],
"custom_attributes": {},
"url": "https://graph.facebook.com/v16.0/app/mobile_sdk_gk",
"http_method": "GET",
"request_payload_bytes": 0,
"response_payload_bytes": 2443,
"http_response_code": 200,
"response_content_type": "text/javascript; charset=UTF-8",
"client_start_time_us": 1690282438101000,
"time_to_request_completed_us": 0,
"time_to_response_initiated_us": 142,
"time_to_response_completed_us": 385478,
"network_client_error_reason": "NETWORK_CLIENT_ERROR_REASON_UNKNOWN"
},
"gauge_metric": null,
"transport_info": null
}
{
"application_info": {
"custom_attributes": {},
"google_app_id": "1:970098157000:android:0d2d7acbbc3f95d9",
"app_instance_id": "f5VhQiLVQFyK9A1pcey2_5",
"android_app_info": {
"package_name": "com.wolt.android",
"sdk_version": "20.3.2",
"version_name": "4.39.0"
},
"application_process_state": "FOREGROUND"
},
"trace_metric": {
"subtraces": [],
"perf_sessions": [
{
"session_verbosity": [],
"session_id": "856a6de4dc4546d1ad59e7c345877bc7"
}
],
"counters": {
"_fr_slo": 1,
"_fr_tot": 1
},
"custom_attributes": {},
"name": "_st_SignInHubActivity",
"is_auto": false,
"client_start_time_us": 1690282468516000,
"duration_us": 278632
},
"network_request_metric": null,
"gauge_metric": null,
"transport_info": null
}
It does however not work for the shorter message we saw (Cg4Ildq85ZgxEIDvvuWYMRoLCgkIgOAEEICAgAUiEGNvbS53b2x0LmFuZHJvaWQ=
). But that makes sense. That message has "logSourceName": "GDT_CLIENT_METRICS"
, the other ones have "logSourceName": "FIREPERF"
, and our schema is in the firebase-perf
folder, after all.
Ask and you shall find. :D Searching for gdt
in the repo led me to the schema: https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/transport/transport-runtime/src/main/proto/client_analytics.proto
The comment makes it pretty obvious that this is the correct schema and it does work:
// These metrics should be sent as a part of every request that is uploaded to
// FireLog server. In more detail, an additional LogRequest should be added to
// the BatchedLogRequest, where the LogSource of the LogRequest should be
// GDT_CLIENT_METRICS and the LogRequest should have a single LogEvent whose
// payload is a ClientMetrics message.
{
"log_source_metrics": [],
"window": {
"start_ms": 1690282437909,
"end_ms": 1690282473344
},
"global_metrics": {
"storage_metrics": {
"current_cache_size_bytes": 77824,
"max_cache_size_bytes": 10485760
}
},
"app_namespace": "com.wolt.android"
}
This looks like the class that produces the Protobufs: https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/transport/transport-backend-cct/src/main/java/com/google/android/datatransport/cct/CctTransportBackend.java
Looks like https://crashlyticsreports-pa.googleapis.com/v1/firelog/legacy/batchlog
is another endpoint for the same tracker.
The question is now what the best way forward here is. This is the first case where we have a Protobuf schema.
My obvious initial thought was to use the discovered schema files for the parsing such that we could work with "nice" property names. However, that has a number of problems:
Given all that, maybe it's better to not use the schema for parsing and only link to the corresponding lines under reasoning
for each property?
There is some public information on the firebaselogging-pa.googleapis.com endpoint: https://stackoverflow.com/a/76334853, https://github.com/firebase/firebase-ios-sdk/issues/8220
Based on the above, it doesn't look Firebase SDK is actual a source of the issue by itself. The requests to firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog in a native iOS project should be sent by GoogleDataTransport SDK. The GoogleDataTransport SDK is used as a transport layer by Firebase SDKs like Crashlytics, Performance, Core, etc. but also by some other Google SDKs, like ML Kit. Also the request may potentially be send from a JavaScript part of ReactNative.
tl;dr: many non-Firebase Google use the https://firebaselogging.googleapis.com/ endpoint to log data to Google's servers, so calls to that endpoint do not have to originate from Firebase SDKs.
Most Google developer products that come with an SDK use a common infrastructure for logging application specific data from within the app back to Google. They use common endpoints for sending this logging, so that they can combine API calls from multiple SDKs into a single call to the logging backend - reducing/amortize the overhead of the logging.
At some point many of the SDKs for Google developer products switched over from a Google-branded endpoint to using a Firebase-branded endpoint. But the data flows is the same either way, and calls to the https://firebaselogging.googleapis.com/ does not necessarily mean that the product uses a Firebase SDK.
Update: Look at the table in https://github.com/tweaselORG/TrackHAR/issues/52#issuecomment-2092708683 instead.
To summarize, these are the types of logEvent
s/sourceExtension
s we have seen and their respective Protobuf schemas on firebaselogging-pa.googleapis.com
:
On Android, FIREBASE_CRASHLYTICS_REPORT
events have a JSON string in sourceExtensionJsonProto3
instead of a Protobuf in sourceExtension
(e.g. https://data.tweasel.org/data/requests/monkey-july-2023,91524):
{
"requestTimeMs": 1690282466588,
"requestUptimeMs": 321808,
"clientInfo": {
"clientType": "ANDROID_FIREBASE",
"androidClientInfo": {
"sdkVersion": 33,
"model": "sdk_gphone_x86_64",
"hardware": "ranchu",
"device": "emu64xa",
"product": "sdk_gphone_x86_64",
"osBuild": "TE1A.220922.025",
"manufacturer": "Google",
"fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
"locale": "en",
"country": "US",
"mccMnc": "310260",
"applicationBuild": "61"
}
},
"logSourceName": "FIREBASE_CRASHLYTICS_REPORT",
"logEvent": [
{
"eventTimeMs": 1690282460991,
"eventUptimeMs": 316211,
"sourceExtensionJsonProto3": "{\"sdkVersion\":\"18.2.13\",\"gmpAppId\":\"1:107894635142:android:330dfc4a3fd7d6294caf07\",\"platform\":4,\"installationUuid\":\"d86951fe414142dfa1bc015c38b7b820\",\"buildVersion\":\"61\",\"displayVersion\":\"1.3.12\",\"session\":{\"generator\":\"Crashlytics Android SDK/18.2.13\",\"identifier\":\"NjRCRkE5QzQwMDNEMDAwMTE5MkMyQkNBQUI2NkMzRTc=\",\"startedAt\":1690282436,\"endedAt\":1690282460,\"crashed\":true,\"app\":{\"identifier\":\"app.visory.security_camera\",\"version\":\"61\",\"displayVersion\":\"1.3.12\",\"installationUuid\":\"d86951fe414142dfa1bc015c38b7b820\",\"developmentPlatform\":\"Flutter\"},\"os\":{\"platform\":3,\"version\":\"13\",\"buildVersion\":\"REL\",\"jailbroken\":false},\"device\":{\"arch\":1,\"model\":\"sdk_gphone_x86_64\",\"cores\":4,\"ram\":2061852672,\"diskSpace\":6228115456,\"simulator\":true,\"state\":1,\"manufacturer\":\"Google\",\"modelClass\":\"sdk_gphone_x86_64\"},\"events\":[{\"timestamp\":1690282447,\"type\":\"error\",\"app\":{\"execution\":{\"threads\":[{\"name\":\"pool-32-thread-3\",\"importance\":4,\"frames\":[{\"pc\":0,\"symbol\":\"FirebaseCrashlytics.recordError\",\"file\":\"package:firebase_crashlytics/src/firebase_crashlytics.dart\",\"offset\":120,\"importance\":4},{\"pc\":0,\"symbol\":\"Crash.record\",\"file\":\"package:visory_flutter/core/crash.dart\",\"offset\":17,\"importance\":4},{\"pc\":0,\"symbol\":\"SubscriptionInteractor._init\",\"file\":\"package:visory_flutter/subscription/domain/subscription_interactor.dart\",\"offset\":62,\"importance\":4}]}],\"exception\":{\"type\":\"io.flutter.plugins.firebase.crashlytics.FlutterError\",\"reason\":\"Exception: Subscription not available. Error thrown null.\",\"frames\":[{\"pc\":0,\"symbol\":\"FirebaseCrashlytics.recordError\",\"file\":\"package:firebase_crashlytics/src/firebase_crashlytics.dart\",\"offset\":120,\"importance\":4},{\"pc\":0,\"symbol\":\"Crash.record\",\"file\":\"package:visory_flutter/core/crash.dart\",\"offset\":17,\"importance\":4},{\"pc\":0,\"symbol\":\"SubscriptionInteractor._init\",\"file\":\"package:visory_flutter/subscription/domain/subscription_interactor.dart\",\"offset\":62,\"importance\":4}],\"overflowCount\":0},\"signal\":{\"name\":\"0\",\"code\":\"0\",\"address\":0},\"binaries\":[{\"baseAddress\":0,\"size\":0,\"name\":\"app.visory.security_camera\",\"uuid\":\"OGNlOWZhNDY2NjIyNDk4ZWI0YzMxY2FmYTY3NjViMzY=\"}]},\"customAttributes\":[{\"key\":\"flutter_error_exception\",\"value\":\"Exception: Subscription not available\"},{\"key\":\"flutter_error_reason\",\"value\":\"thrown null\"},{\"key\":\"place\",\"value\":\"NO_PLACE_ID\"}],\"internalKeys\":[],\"uiOrientation\":1},\"device\":{\"batteryLevel\":1.0,\"batteryVelocity\":1,\"proximityOn\":false,\"orientation\":1,\"ramUsed\":1293557760,\"diskUsed\":901656576},\"log\":{\"content\":\"1663 $A$:{\\\"name\\\":\\\"_vs\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n8876 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"role_picker\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":0,\\\"stepName\\\":\\\"initial\\\"}}\\n10882 $A$:{\\\"name\\\":\\\"onboarding_pages\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"selected\\\":\\\"onboarding_pages\\\"}}\\n10933 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"boarding_welcome\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n\"}},{\"timestamp\":1690282460,\"type\":\"crash\",\"app\":{\"execution\":{\"threads\":[{\"name\":\"pool-32-thread-3\",\"importance\":4,\"frames\":[{\"pc\":0,\"symbol\":\"StandardMethodCodec.decodeEnvelope\",\"file\":\"package:flutter/src/services/message_codecs.dart\",\"offset\":653,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannel._invokeMethod\",\"file\":\"package:flutter/src/services/platform_channel.dart\",\"offset\":315,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannelFirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart\",\"offset\":146,\"importance\":4},{\"pc\":0,\"symbol\":\"FirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config/src/firebase_remote_config.dart\",\"offset\":87,\"importance\":4},{\"pc\":0,\"symbol\":\"Config._init\",\"file\":\"package:visory_flutter/data/firebase/remote_config.dart\",\"offset\":39,\"importance\":4}]},{\"name\":\"firebase-installations-executor-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Thread-2\",\"importance\":0,\"frames\":[]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"TubeSockReader-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"java.io.DataInputStream.readFully\",\"file\":\"DataInputStream.java\",\"offset\":203,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.h.e\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.h.f\",\"offset\":16,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c.n\",\"offset\":266,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c.a\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c$b.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Intent-Handle\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-7\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"pool-45-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-26-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Profile Saver\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-32-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-32-thread-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"1.ui\",\"importance\":0,\"frames\":[]},{\"name\":\"HeapTaskDaemon\",\"importance\":0,\"frames\":[]},{\"name\":\"queued-work-looper\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$c.a\",\"offset\":25,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.d\",\"offset\":181,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":3,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Crashlytics Exception Handler1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"dalvik.system.VMStack.getThreadStackTrace\",\"file\":\"VMStack.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.getStackTrace\",\"file\":\"Thread.java\",\"offset\":1841,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.getAllStackTraces\",\"file\":\"Thread.java\",\"offset\":1909,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.x\",\"offset\":16,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.n\",\"offset\":4,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.i\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.c\",\"offset\":44,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.d0.q\",\"offset\":19,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.d0.r\",\"offset\":32,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.j$b.a\",\"offset\":49,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.j$b.call\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.h$c.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e7.y.run\",\"offset\":8,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"queue-1-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"queue-1-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-11-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"ReferenceQueueDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$ReferenceQueueDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":232,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Okio Watchdog\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$a.c\",\"offset\":24,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$b.run\",\"offset\":5,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-installations-executor-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"GmsDynamite\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"j6.a.run\",\"offset\":6,\"importance\":0}]},{\"name\":\"FinalizerDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.ref.ReferenceQueue.remove\",\"file\":\"ReferenceQueue.java\",\"offset\":203,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.ref.ReferenceQueue.remove\",\"file\":\"ReferenceQueue.java\",\"offset\":224,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":300,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-iid-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-32-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-9-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-18-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-5\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"hwuiTask0\",\"importance\":0,\"frames\":[]},{\"name\":\"binder:6444_3\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-30-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"jb.j.d\",\"offset\":10,\"importance\":0},{\"pc\":0,\"symbol\":\"jb.w.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_2\",\"importance\":0,\"frames\":[]},{\"name\":\"Measurement Worker\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"ip.run\",\"file\":\":com.google.android.gms.dynamite_measurementdynamite@225014047@22.50.14 (190800-0)\",\"offset\":7,\"importance\":0}]},{\"name\":\"heartbeat-information-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-31-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-19-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-8\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"Timer-0\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.TimerThread.mainLoop\",\"file\":\"Timer.java\",\"offset\":534,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.TimerThread.run\",\"file\":\"Timer.java\",\"offset\":513,\"importance\":0}]},{\"name\":\"GoogleApiHandler\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"hwuiTask1\",\"importance\":0,\"frames\":[]},{\"name\":\"DefaultDispatcher-worker-9\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"flutter-worker-0\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"flutter-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_4\",\"importance\":0,\"frames\":[]},{\"name\":\"DefaultDispatcher-worker-6\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-48-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-19-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"1.raster\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-25-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"MessengerIpcClient\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Okio Watchdog\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout.awaitTimeout\",\"file\":\"AsyncTimeout.java\",\"offset\":313,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout.access$000\",\"file\":\"AsyncTimeout.java\",\"offset\":42,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout$Watchdog.run\",\"file\":\"AsyncTimeout.java\",\"offset\":288,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"awaitEvenIfOnMainThread task continuation executor1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"AsyncTask #1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":461,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.take\",\"file\":\"SynchronousQueue.java\",\"offset\":922,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-iid-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Jit thread pool worker thread 0\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-50-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"main\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.app.ActivityThread.main\",\"file\":\"ActivityThread.java\",\"offset\":7872,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.reflect.Method.invoke\",\"file\":\"Method.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run\",\"file\":\"RuntimeInit.java\",\"offset\":548,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.internal.os.ZygoteInit.main\",\"file\":\"ZygoteInit.java\",\"offset\":936,\"importance\":0}]},{\"name\":\"queue-1-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_1\",\"importance\":0,\"frames\":[]},{\"name\":\"MLHandler\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"FirebaseDatabaseWorker\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Init\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"RenderThread\",\"importance\":0,\"frames\":[]},{\"name\":\"FinalizerWatchdogDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":450,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":355,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.sleepForNanos\",\"file\":\"Daemons.java\",\"offset\":438,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.waitForProgress\",\"file\":\"Daemons.java\",\"offset\":480,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":369,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"internal\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"pool-50-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"FirebaseInstanceId\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-6\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"ScionFrontendApi\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Topics-Io\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-37-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-5\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"flutter-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-16-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"pool-27-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":450,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":355,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.internal.BillingWrapper.connectIfNeeded\",\"offset\":151,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.internal.BillingWrapper.detailsEx\",\"offset\":80,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.ApphudInternal$fetchDetails$3$inap$1.invokeSuspend\",\"offset\":44,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlin.coroutines.jvm.internal.a.resumeWith\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.y0.run\",\"offset\":129,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.internal.n.run\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.k.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a.l\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.d\",\"offset\":14,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":28,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"com.google.firebase.crashlytics.startup1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"TokenRefresher\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"pool-11-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-46-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-7\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"Signal Catcher\",\"importance\":0,\"frames\":[]},{\"name\":\"2.ui\",\"importance\":0,\"frames\":[]},{\"name\":\"TubeSockWriter-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.j\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.f\",\"offset\":10,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.a\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i$a.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]}],\"exception\":{\"type\":\"io.flutter.plugins.firebase.crashlytics.FlutterError\",\"reason\":\"[firebase_remote_config/internal] internal remote config fetch error. Error thrown null.\",\"frames\":[{\"pc\":0,\"symbol\":\"StandardMethodCodec.decodeEnvelope\",\"file\":\"package:flutter/src/services/message_codecs.dart\",\"offset\":653,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannel._invokeMethod\",\"file\":\"package:flutter/src/services/platform_channel.dart\",\"offset\":315,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannelFirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart\",\"offset\":146,\"importance\":4},{\"pc\":0,\"symbol\":\"FirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config/src/firebase_remote_config.dart\",\"offset\":87,\"importance\":4},{\"pc\":0,\"symbol\":\"Config._init\",\"file\":\"package:visory_flutter/data/firebase/remote_config.dart\",\"offset\":39,\"importance\":4}],\"overflowCount\":0},\"signal\":{\"name\":\"0\",\"code\":\"0\",\"address\":0},\"binaries\":[{\"baseAddress\":0,\"size\":0,\"name\":\"app.visory.security_camera\",\"uuid\":\"OGNlOWZhNDY2NjIyNDk4ZWI0YzMxY2FmYTY3NjViMzY=\"}]},\"customAttributes\":[{\"key\":\"flutter_error_exception\",\"value\":\"[firebase_remote_config/internal] internal remote config fetch error\"},{\"key\":\"flutter_error_reason\",\"value\":\"thrown null\"},{\"key\":\"place\",\"value\":\"NO_PLACE_ID\"}],\"internalKeys\":[{\"key\":\"com.crashlytics.on-demand.dropped-exceptions\",\"value\":\"0\"},{\"key\":\"com.crashlytics.on-demand.recorded-exceptions\",\"value\":\"0\"}],\"uiOrientation\":1},\"device\":{\"batteryLevel\":1.0,\"batteryVelocity\":1,\"proximityOn\":false,\"orientation\":1,\"ramUsed\":1328398336,\"diskUsed\":905932800},\"log\":{\"content\":\"1663 $A$:{\\\"name\\\":\\\"_vs\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n8876 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"role_picker\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":0,\\\"stepName\\\":\\\"initial\\\"}}\\n10882 $A$:{\\\"name\\\":\\\"onboarding_pages\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"selected\\\":\\\"onboarding_pages\\\"}}\\n10933 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"boarding_welcome\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n11885 $A$:{\\\"name\\\":\\\"_e\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_et\\\":6325,\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n13517 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"insall_on_second_device\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n15654 $A$:{\\\"name\\\":\\\"_e\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_et\\\":2434,\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n19862 $A$:{\\\"name\\\":\\\"_ab\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\"}}\\n\"}}],\"generatorType\":3}}",
"timezoneOffsetSeconds": 7200,
"networkConnectionInfo": {
"networkType": "WIFI"
}
}
],
"qosTier": "DEFAULT"
}
Same for FIREBASE_APPQUALITY_SESSION
—of which we currently only have a single instance, https://data.tweasel.org/data/requests/monkey-july-2023,98267, but more to come with tweaselORG/experiments#2:
{
"requestTimeMs": 1690282467989,
"requestUptimeMs": 323208,
"clientInfo": {
"clientType": "ANDROID_FIREBASE",
"androidClientInfo": {
"sdkVersion": 33,
"model": "sdk_gphone_x86_64",
"hardware": "ranchu",
"device": "emu64xa",
"product": "sdk_gphone_x86_64",
"osBuild": "TE1A.220922.025",
"manufacturer": "Google",
"fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
"locale": "en",
"country": "US",
"mccMnc": "310260",
"applicationBuild": "25"
}
},
"logSourceName": "FIREBASE_APPQUALITY_SESSION",
"logEvent": [
{
"eventTimeMs": 1690282437597,
"eventUptimeMs": 292817,
"sourceExtensionJsonProto3": "{\"eventType\":1,\"sessionData\":{\"sessionId\":\"73dd844e56db4cffbaff800f21050fc0\",\"firstSessionId\":\"73dd844e56db4cffbaff800f21050fc0\",\"sessionIndex\":0,\"eventTimestampUs\":1690282437157000,\"dataCollectionStatus\":{\"performance\":2,\"crashlytics\":2,\"sessionSamplingRate\":1.0},\"firebaseInstallationId\":\"ell0zhyfQnSPtxBoga7Q_V\"},\"applicationInfo\":{\"appId\":\"1:214211646137:android:4172fcfbea1636db54c168\",\"deviceModel\":\"sdk_gphone_x86_64\",\"sessionSdkVersion\":\"1.0.0\",\"osVersion\":\"13\",\"logEnvironment\":3,\"androidAppInfo\":{\"packageName\":\"com.xray.tida\",\"versionName\":\"1.0.3\",\"appBuildVersion\":\"25\",\"deviceManufacturer\":\"Google\"}}}",
"timezoneOffsetSeconds": 7200,
"networkConnectionInfo": {
"networkType": "WIFI"
}
}
],
"qosTier": "DEFAULT"
}
I noticed an issue with string decoding in Protobufs, but won't tackle that as part of this issue. See #71.
There is also a newer endpoint at https://firebaselogging.googleapis.com/v0cc/log/batch
that appears to be replacing https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog
.
In previous runs, we had seen a few instances of firebaselogging.googleapis.com but almost exclusively on iOS. With tweaselORG/experiments#2, we are now also seeing a lot of requests from Android.
As far as I can tell, the request format is identical. There are few new (to us) logEvent
s/sourceExtension
s, though.
So far, we have observed the following logSourceName
s in JSON messages:
GDT_CLIENT_METRICS
PLAY_BILLING_LIBRARY
FIREBASE_ML_SDK
FIREBASE_ML_LOG_SDK
CAST_SENDER_SDK
LE
And the following logSource
s in Protobuf messages:
462
137
715
I'll start a new table here to preserve the issue history.
These are the types of logEvent
s/sourceExtension
s we have seen and their respective Protobuf schemas on both firebaselogging-pa.googleapis.com
and firebaselogging.googleapis.com
:
Of those, FIREBASE_APPQUALITY_SESSION
, FIREBASE_CRASHLYTICS_REPORT
, FIREBASE_ML_LOG_SDK
are transmitted as JSON on Android. The rest is always transmitted as Protobuf.
I can't find a schema for PLAY_BILLING_LIBRARY
but the important stuff is easy enough to guess:
1
holds information about the app and SDK, where:
1.1
is the SDK version (observed values: 6.0.0
, 6.0.1
, 6.1.0
, 6.1.0-ktx
, 6.2.0
, 6.0.1-ktx
, 6.2.1
, 6.2.0-ktx
, 6.1.0-get-billing-config-eap
, 6.2.0-amazon-eap02
, 6.0.0-kt
)1.2
is clearly the app ID2
is some kind of billing event, where:
2.2.2
is a messageExample:
{
"1": {
"1": "6.0.0",
"2": "com.appsky.android.bloodpressure"
},
"2": {
"1": 5,
"2": {
"1": 3,
"2": "Billing service unavailable on device.",
"4": 40
}
}
}
Can't find a schema for FIREBASE_ML_SDK
, either.
{
"1": {
"1": "com.speakandtranslate.voicetranslator.alllanguages",
"2": "69",
"4": "17.0.2",
"5": "NA",
"8": {
"12": 1398091118
},
"9": "75d23644-e349-4d99-a295-b4da680601f0",
"11": 1,
"13": 10,
"14": 18446744073709552000
},
"2": 251,
"39": {
"1": 3
}
}
Found a mapping between numeric and string logSource
s: https://github.com/aarch64-android-emulator/aarch64-qemu/blob/0582a5f95da065a431f83ab6a46ecde11410a3f1/android/android-emu/android/metrics/proto/clientanalytics.proto#L408
Unfortunately, it's quite old and doesn't contain many of the ones we've observed.
No schema for CAST_SENDER_SDK
, either.
{
"9": "e2c23e21-829c-428b-99df-10a9062a775e",
"48": {
"1": {
"1": "com.audible.application",
"2": "21.3.0"
},
"4": 5
},
"59": "e2c23e21-829c-428b-99df-10a9062a775e"
}
Or LE
…
{
"1": 1,
"2": {
"1": 1,
"2": {
"1": "com.bonial.kaufda",
"2": 1039921
},
"5": {
"1": 5,
"2": "en",
"9": {
"3": {
"2": "postal_code"
}
}
},
"27": 1,
"28": "3ccd8e05-4590-4b95-ae5d-7d25f64c6909",
"30": "3.4.0",
"32": 1,
"33": "AIzaSyAqLMSRndKfPVh12JWcLtjnt_8qbP8gPE0",
"34": 1
}
}
That one's labelled "location engine statistics". Sounds potentially juicy.
Don't have a schema for 715
, either, but that's probably related to Google Translate as we only have two instances, both from translation apps.
{
"1": 1690384081426,
"6": {
"1": {
"1": "mobile.app.tools.translator",
"2": "2781",
"4": "3.0.0",
"5": "NA",
"8": [
{
"12": 1162095982
},
"de-DE"
],
"10": 0,
"11": 1
},
"2": 251,
"39": {
"1": 3,
"2": 0
}
},
"15": 14400,
"17": 4214474692
}
https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog
is the fourth most common endpoint in our dataset)+appCount%2C+count(1)+requestCount%2C+endpointUrl+from+requests%0D%0Awhere+endpointUrl+is+not+null%0D%0Agroup+by+endpointUrl++order+by+appCount+desc+limit+101%3B) and we don't have an adapter for it yet.