Add Discord community version (64-bit only)

- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
This commit is contained in:
2026-02-18 15:48:36 -08:00
parent c19eb3d7ff
commit c080f0d97f
26930 changed files with 2529574 additions and 0 deletions

View File

@@ -0,0 +1,196 @@
package com.google.firebase.installations.local;
import com.google.firebase.installations.local.PersistedInstallation;
import com.google.firebase.installations.local.PersistedInstallationEntry;
/* loaded from: classes3.dex */
public final class AutoValue_PersistedInstallationEntry extends PersistedInstallationEntry {
public final String authToken;
public final long expiresInSecs;
public final String firebaseInstallationId;
public final String fisError;
public final String refreshToken;
public final PersistedInstallation.RegistrationStatus registrationStatus;
public final long tokenCreationEpochInSecs;
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public String getAuthToken() {
return this.authToken;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public long getExpiresInSecs() {
return this.expiresInSecs;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public String getFirebaseInstallationId() {
return this.firebaseInstallationId;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public String getFisError() {
return this.fisError;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public String getRefreshToken() {
return this.refreshToken;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public PersistedInstallation.RegistrationStatus getRegistrationStatus() {
return this.registrationStatus;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public long getTokenCreationEpochInSecs() {
return this.tokenCreationEpochInSecs;
}
public AutoValue_PersistedInstallationEntry(String str, PersistedInstallation.RegistrationStatus registrationStatus, String str2, String str3, long j, long j2, String str4) {
this.firebaseInstallationId = str;
this.registrationStatus = registrationStatus;
this.authToken = str2;
this.refreshToken = str3;
this.expiresInSecs = j;
this.tokenCreationEpochInSecs = j2;
this.fisError = str4;
}
public String toString() {
return "PersistedInstallationEntry{firebaseInstallationId=" + this.firebaseInstallationId + ", registrationStatus=" + this.registrationStatus + ", authToken=" + this.authToken + ", refreshToken=" + this.refreshToken + ", expiresInSecs=" + this.expiresInSecs + ", tokenCreationEpochInSecs=" + this.tokenCreationEpochInSecs + ", fisError=" + this.fisError + "}";
}
public boolean equals(Object obj) {
String str;
String str2;
if (obj == this) {
return true;
}
if (!(obj instanceof PersistedInstallationEntry)) {
return false;
}
PersistedInstallationEntry persistedInstallationEntry = (PersistedInstallationEntry) obj;
String str3 = this.firebaseInstallationId;
if (str3 != null ? str3.equals(persistedInstallationEntry.getFirebaseInstallationId()) : persistedInstallationEntry.getFirebaseInstallationId() == null) {
if (this.registrationStatus.equals(persistedInstallationEntry.getRegistrationStatus()) && ((str = this.authToken) != null ? str.equals(persistedInstallationEntry.getAuthToken()) : persistedInstallationEntry.getAuthToken() == null) && ((str2 = this.refreshToken) != null ? str2.equals(persistedInstallationEntry.getRefreshToken()) : persistedInstallationEntry.getRefreshToken() == null) && this.expiresInSecs == persistedInstallationEntry.getExpiresInSecs() && this.tokenCreationEpochInSecs == persistedInstallationEntry.getTokenCreationEpochInSecs()) {
String str4 = this.fisError;
if (str4 == null) {
if (persistedInstallationEntry.getFisError() == null) {
return true;
}
} else if (str4.equals(persistedInstallationEntry.getFisError())) {
return true;
}
}
}
return false;
}
public int hashCode() {
String str = this.firebaseInstallationId;
int hashCode = ((((str == null ? 0 : str.hashCode()) ^ 1000003) * 1000003) ^ this.registrationStatus.hashCode()) * 1000003;
String str2 = this.authToken;
int hashCode2 = (hashCode ^ (str2 == null ? 0 : str2.hashCode())) * 1000003;
String str3 = this.refreshToken;
int hashCode3 = (hashCode2 ^ (str3 == null ? 0 : str3.hashCode())) * 1000003;
long j = this.expiresInSecs;
int i = (hashCode3 ^ ((int) (j ^ (j >>> 32)))) * 1000003;
long j2 = this.tokenCreationEpochInSecs;
int i2 = (i ^ ((int) (j2 ^ (j2 >>> 32)))) * 1000003;
String str4 = this.fisError;
return i2 ^ (str4 != null ? str4.hashCode() : 0);
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry
public PersistedInstallationEntry.Builder toBuilder() {
return new Builder(this);
}
public static final class Builder extends PersistedInstallationEntry.Builder {
public String authToken;
public Long expiresInSecs;
public String firebaseInstallationId;
public String fisError;
public String refreshToken;
public PersistedInstallation.RegistrationStatus registrationStatus;
public Long tokenCreationEpochInSecs;
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry.Builder setAuthToken(String str) {
this.authToken = str;
return this;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry.Builder setFirebaseInstallationId(String str) {
this.firebaseInstallationId = str;
return this;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry.Builder setFisError(String str) {
this.fisError = str;
return this;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry.Builder setRefreshToken(String str) {
this.refreshToken = str;
return this;
}
public Builder() {
}
public Builder(PersistedInstallationEntry persistedInstallationEntry) {
this.firebaseInstallationId = persistedInstallationEntry.getFirebaseInstallationId();
this.registrationStatus = persistedInstallationEntry.getRegistrationStatus();
this.authToken = persistedInstallationEntry.getAuthToken();
this.refreshToken = persistedInstallationEntry.getRefreshToken();
this.expiresInSecs = Long.valueOf(persistedInstallationEntry.getExpiresInSecs());
this.tokenCreationEpochInSecs = Long.valueOf(persistedInstallationEntry.getTokenCreationEpochInSecs());
this.fisError = persistedInstallationEntry.getFisError();
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry.Builder setRegistrationStatus(PersistedInstallation.RegistrationStatus registrationStatus) {
if (registrationStatus == null) {
throw new NullPointerException("Null registrationStatus");
}
this.registrationStatus = registrationStatus;
return this;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry.Builder setExpiresInSecs(long j) {
this.expiresInSecs = Long.valueOf(j);
return this;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry.Builder setTokenCreationEpochInSecs(long j) {
this.tokenCreationEpochInSecs = Long.valueOf(j);
return this;
}
@Override // com.google.firebase.installations.local.PersistedInstallationEntry.Builder
public PersistedInstallationEntry build() {
String str = "";
if (this.registrationStatus == null) {
str = " registrationStatus";
}
if (this.expiresInSecs == null) {
str = str + " expiresInSecs";
}
if (this.tokenCreationEpochInSecs == null) {
str = str + " tokenCreationEpochInSecs";
}
if (!str.isEmpty()) {
throw new IllegalStateException("Missing required properties:" + str);
}
return new AutoValue_PersistedInstallationEntry(this.firebaseInstallationId, this.registrationStatus, this.authToken, this.refreshToken, this.expiresInSecs.longValue(), this.tokenCreationEpochInSecs.longValue(), this.fisError);
}
}
}

View File

@@ -0,0 +1,141 @@
package com.google.firebase.installations.local;
import android.content.SharedPreferences;
import android.util.Base64;
import android.util.Log;
import androidx.webkit.ProxyConfig;
import com.applovin.exoplayer2.common.base.Ascii;
import com.facebook.internal.security.CertificateUtil;
import com.google.android.gms.stats.CodePackage;
import com.google.firebase.FirebaseApp;
import java.security.KeyFactory;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class IidStore {
public static final String[] ALLOWABLE_SCOPES = {ProxyConfig.MATCH_ALL_SCHEMES, "FCM", CodePackage.GCM, ""};
public final String defaultSenderId;
public final SharedPreferences iidPrefs;
public IidStore(FirebaseApp firebaseApp) {
this.iidPrefs = firebaseApp.getApplicationContext().getSharedPreferences("com.google.android.gms.appid", 0);
this.defaultSenderId = getDefaultSenderId(firebaseApp);
}
public static String getDefaultSenderId(FirebaseApp firebaseApp) {
String gcmSenderId = firebaseApp.getOptions().getGcmSenderId();
if (gcmSenderId != null) {
return gcmSenderId;
}
String applicationId = firebaseApp.getOptions().getApplicationId();
if (!applicationId.startsWith("1:") && !applicationId.startsWith("2:")) {
return applicationId;
}
String[] split = applicationId.split(CertificateUtil.DELIMITER);
if (split.length != 4) {
return null;
}
String str = split[1];
if (str.isEmpty()) {
return null;
}
return str;
}
public final String createTokenKey(String str, String str2) {
return "|T|" + str + "|" + str2;
}
public String readToken() {
synchronized (this.iidPrefs) {
try {
for (String str : ALLOWABLE_SCOPES) {
String string = this.iidPrefs.getString(createTokenKey(this.defaultSenderId, str), null);
if (string != null && !string.isEmpty()) {
if (string.startsWith("{")) {
string = parseIidTokenFromJson(string);
}
return string;
}
}
return null;
} catch (Throwable th) {
throw th;
}
}
}
public final String parseIidTokenFromJson(String str) {
try {
return new JSONObject(str).getString("token");
} catch (JSONException unused) {
return null;
}
}
public String readIid() {
synchronized (this.iidPrefs) {
try {
String readInstanceIdFromLocalStorage = readInstanceIdFromLocalStorage();
if (readInstanceIdFromLocalStorage != null) {
return readInstanceIdFromLocalStorage;
}
return readPublicKeyFromLocalStorageAndCalculateInstanceId();
} catch (Throwable th) {
throw th;
}
}
}
public final String readInstanceIdFromLocalStorage() {
String string;
synchronized (this.iidPrefs) {
string = this.iidPrefs.getString("|S|id", null);
}
return string;
}
public final String readPublicKeyFromLocalStorageAndCalculateInstanceId() {
synchronized (this.iidPrefs) {
try {
String string = this.iidPrefs.getString("|S||P|", null);
if (string == null) {
return null;
}
PublicKey parseKey = parseKey(string);
if (parseKey == null) {
return null;
}
return getIdFromPublicKey(parseKey);
} catch (Throwable th) {
throw th;
}
}
}
public static String getIdFromPublicKey(PublicKey publicKey) {
try {
byte[] digest = MessageDigest.getInstance("SHA1").digest(publicKey.getEncoded());
digest[0] = (byte) (((digest[0] & Ascii.SI) + 112) & 255);
return Base64.encodeToString(digest, 0, 8, 11);
} catch (NoSuchAlgorithmException unused) {
Log.w("ContentValues", "Unexpected error, device missing required algorithms");
return null;
}
}
public final PublicKey parseKey(String str) {
try {
return KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.decode(str, 8)));
} catch (IllegalArgumentException | NoSuchAlgorithmException | InvalidKeySpecException e) {
Log.w("ContentValues", "Invalid key stored " + e);
return null;
}
}
}

View File

@@ -0,0 +1,105 @@
package com.google.firebase.installations.local;
import com.google.firebase.FirebaseApp;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.json.JSONException;
import org.json.JSONObject;
/* loaded from: classes3.dex */
public class PersistedInstallation {
public File dataFile;
public final FirebaseApp firebaseApp;
public enum RegistrationStatus {
ATTEMPT_MIGRATION,
NOT_GENERATED,
UNREGISTERED,
REGISTERED,
REGISTER_ERROR
}
public PersistedInstallation(FirebaseApp firebaseApp) {
this.firebaseApp = firebaseApp;
}
public final File getDataFile() {
if (this.dataFile == null) {
synchronized (this) {
try {
if (this.dataFile == null) {
this.dataFile = new File(this.firebaseApp.getApplicationContext().getFilesDir(), "PersistedInstallation." + this.firebaseApp.getPersistenceKey() + ".json");
}
} finally {
}
}
}
return this.dataFile;
}
public PersistedInstallationEntry readPersistedInstallationEntryValue() {
JSONObject readJSONFromFile = readJSONFromFile();
String optString = readJSONFromFile.optString("Fid", null);
int optInt = readJSONFromFile.optInt("Status", RegistrationStatus.ATTEMPT_MIGRATION.ordinal());
String optString2 = readJSONFromFile.optString("AuthToken", null);
String optString3 = readJSONFromFile.optString("RefreshToken", null);
long optLong = readJSONFromFile.optLong("TokenCreationEpochInSecs", 0L);
long optLong2 = readJSONFromFile.optLong("ExpiresInSecs", 0L);
return PersistedInstallationEntry.builder().setFirebaseInstallationId(optString).setRegistrationStatus(RegistrationStatus.values()[optInt]).setAuthToken(optString2).setRefreshToken(optString3).setTokenCreationEpochInSecs(optLong).setExpiresInSecs(optLong2).setFisError(readJSONFromFile.optString("FisError", null)).build();
}
public final JSONObject readJSONFromFile() {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] bArr = new byte[16384];
try {
FileInputStream fileInputStream = new FileInputStream(getDataFile());
while (true) {
try {
int read = fileInputStream.read(bArr, 0, 16384);
if (read >= 0) {
byteArrayOutputStream.write(bArr, 0, read);
} else {
JSONObject jSONObject = new JSONObject(byteArrayOutputStream.toString());
fileInputStream.close();
return jSONObject;
}
} catch (Throwable th) {
try {
fileInputStream.close();
} catch (Throwable th2) {
th.addSuppressed(th2);
}
throw th;
}
}
} catch (IOException | JSONException unused) {
return new JSONObject();
}
}
public PersistedInstallationEntry insertOrUpdatePersistedInstallationEntry(PersistedInstallationEntry persistedInstallationEntry) {
File createTempFile;
try {
JSONObject jSONObject = new JSONObject();
jSONObject.put("Fid", persistedInstallationEntry.getFirebaseInstallationId());
jSONObject.put("Status", persistedInstallationEntry.getRegistrationStatus().ordinal());
jSONObject.put("AuthToken", persistedInstallationEntry.getAuthToken());
jSONObject.put("RefreshToken", persistedInstallationEntry.getRefreshToken());
jSONObject.put("TokenCreationEpochInSecs", persistedInstallationEntry.getTokenCreationEpochInSecs());
jSONObject.put("ExpiresInSecs", persistedInstallationEntry.getExpiresInSecs());
jSONObject.put("FisError", persistedInstallationEntry.getFisError());
createTempFile = File.createTempFile("PersistedInstallation", "tmp", this.firebaseApp.getApplicationContext().getFilesDir());
FileOutputStream fileOutputStream = new FileOutputStream(createTempFile);
fileOutputStream.write(jSONObject.toString().getBytes("UTF-8"));
fileOutputStream.close();
} catch (IOException | JSONException unused) {
}
if (createTempFile.renameTo(getDataFile())) {
return persistedInstallationEntry;
}
throw new IOException("unable to rename the tmpfile to PersistedInstallation");
}
}

View File

@@ -0,0 +1,91 @@
package com.google.firebase.installations.local;
import com.google.firebase.installations.local.AutoValue_PersistedInstallationEntry;
import com.google.firebase.installations.local.PersistedInstallation;
/* loaded from: classes3.dex */
public abstract class PersistedInstallationEntry {
public static PersistedInstallationEntry INSTANCE = builder().build();
public static abstract class Builder {
public abstract PersistedInstallationEntry build();
public abstract Builder setAuthToken(String str);
public abstract Builder setExpiresInSecs(long j);
public abstract Builder setFirebaseInstallationId(String str);
public abstract Builder setFisError(String str);
public abstract Builder setRefreshToken(String str);
public abstract Builder setRegistrationStatus(PersistedInstallation.RegistrationStatus registrationStatus);
public abstract Builder setTokenCreationEpochInSecs(long j);
}
public abstract String getAuthToken();
public abstract long getExpiresInSecs();
public abstract String getFirebaseInstallationId();
public abstract String getFisError();
public abstract String getRefreshToken();
public abstract PersistedInstallation.RegistrationStatus getRegistrationStatus();
public abstract long getTokenCreationEpochInSecs();
public abstract Builder toBuilder();
public boolean isRegistered() {
return getRegistrationStatus() == PersistedInstallation.RegistrationStatus.REGISTERED;
}
public boolean isErrored() {
return getRegistrationStatus() == PersistedInstallation.RegistrationStatus.REGISTER_ERROR;
}
public boolean isUnregistered() {
return getRegistrationStatus() == PersistedInstallation.RegistrationStatus.UNREGISTERED;
}
public boolean isNotGenerated() {
return getRegistrationStatus() == PersistedInstallation.RegistrationStatus.NOT_GENERATED || getRegistrationStatus() == PersistedInstallation.RegistrationStatus.ATTEMPT_MIGRATION;
}
public boolean shouldAttemptMigration() {
return getRegistrationStatus() == PersistedInstallation.RegistrationStatus.ATTEMPT_MIGRATION;
}
public PersistedInstallationEntry withUnregisteredFid(String str) {
return toBuilder().setFirebaseInstallationId(str).setRegistrationStatus(PersistedInstallation.RegistrationStatus.UNREGISTERED).build();
}
public PersistedInstallationEntry withRegisteredFid(String str, String str2, long j, String str3, long j2) {
return toBuilder().setFirebaseInstallationId(str).setRegistrationStatus(PersistedInstallation.RegistrationStatus.REGISTERED).setAuthToken(str3).setRefreshToken(str2).setExpiresInSecs(j2).setTokenCreationEpochInSecs(j).build();
}
public PersistedInstallationEntry withFisError(String str) {
return toBuilder().setFisError(str).setRegistrationStatus(PersistedInstallation.RegistrationStatus.REGISTER_ERROR).build();
}
public PersistedInstallationEntry withNoGeneratedFid() {
return toBuilder().setRegistrationStatus(PersistedInstallation.RegistrationStatus.NOT_GENERATED).build();
}
public PersistedInstallationEntry withAuthToken(String str, long j, long j2) {
return toBuilder().setAuthToken(str).setExpiresInSecs(j).setTokenCreationEpochInSecs(j2).build();
}
public PersistedInstallationEntry withClearedAuthToken() {
return toBuilder().setAuthToken(null).build();
}
public static Builder builder() {
return new AutoValue_PersistedInstallationEntry.Builder().setTokenCreationEpochInSecs(0L).setRegistrationStatus(PersistedInstallation.RegistrationStatus.ATTEMPT_MIGRATION).setExpiresInSecs(0L);
}
}