Add decompiled APK source code (JADX)

- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-18 14:52:23 -08:00
parent cc210a65ea
commit f9d20bb3fc
26991 changed files with 2541449 additions and 0 deletions

View File

@@ -0,0 +1,301 @@
package androidx.core.text.util;
import androidx.annotation.RestrictTo;
import androidx.annotation.VisibleForTesting;
import com.facebook.appevents.UserDataStore;
import java.util.Locale;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
/* loaded from: classes.dex */
class FindAddress {
private static final String HOUSE_COMPONENT = "(?:one|[0-9]+([a-z](?=[^a-z]|$)|st|nd|rd|th)?)";
private static final String HOUSE_END = "(?=[,\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)";
private static final String HOUSE_POST_DELIM = ",\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final String HOUSE_PRE_DELIM = ":,\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final int MAX_ADDRESS_LINES = 5;
private static final int MAX_ADDRESS_WORDS = 14;
private static final int MAX_LOCATION_NAME_DISTANCE = 5;
private static final int MIN_ADDRESS_WORDS = 4;
private static final String NL = "\n\u000b\f\r\u0085\u2028\u2029";
private static final String SP = "\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000";
private static final String WORD_DELIM = ",*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final String WORD_END = "(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)";
private static final String WS = "\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029";
private static final int kMaxAddressNameWordLength = 25;
private static final ZipRange[] sStateZipCodeRanges = {new ZipRange(99, 99, -1, -1), new ZipRange(35, 36, -1, -1), new ZipRange(71, 72, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(85, 86, -1, -1), new ZipRange(90, 96, -1, -1), new ZipRange(80, 81, -1, -1), new ZipRange(6, 6, -1, -1), new ZipRange(20, 20, -1, -1), new ZipRange(19, 19, -1, -1), new ZipRange(32, 34, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(30, 31, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(50, 52, -1, -1), new ZipRange(83, 83, -1, -1), new ZipRange(60, 62, -1, -1), new ZipRange(46, 47, -1, -1), new ZipRange(66, 67, 73, -1), new ZipRange(40, 42, -1, -1), new ZipRange(70, 71, -1, -1), new ZipRange(1, 2, -1, -1), new ZipRange(20, 21, -1, -1), new ZipRange(3, 4, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(48, 49, -1, -1), new ZipRange(55, 56, -1, -1), new ZipRange(63, 65, -1, -1), new ZipRange(96, 96, -1, -1), new ZipRange(38, 39, -1, -1), new ZipRange(55, 56, -1, -1), new ZipRange(27, 28, -1, -1), new ZipRange(58, 58, -1, -1), new ZipRange(68, 69, -1, -1), new ZipRange(3, 4, -1, -1), new ZipRange(7, 8, -1, -1), new ZipRange(87, 88, 86, -1), new ZipRange(88, 89, 96, -1), new ZipRange(10, 14, 0, 6), new ZipRange(43, 45, -1, -1), new ZipRange(73, 74, -1, -1), new ZipRange(97, 97, -1, -1), new ZipRange(15, 19, -1, -1), new ZipRange(6, 6, 0, 9), new ZipRange(96, 96, -1, -1), new ZipRange(2, 2, -1, -1), new ZipRange(29, 29, -1, -1), new ZipRange(57, 57, -1, -1), new ZipRange(37, 38, -1, -1), new ZipRange(75, 79, 87, 88), new ZipRange(84, 84, -1, -1), new ZipRange(22, 24, 20, -1), new ZipRange(6, 9, -1, -1), new ZipRange(5, 5, -1, -1), new ZipRange(98, 99, -1, -1), new ZipRange(53, 54, -1, -1), new ZipRange(24, 26, -1, -1), new ZipRange(82, 83, -1, -1)};
private static final Pattern sWordRe = Pattern.compile("[^,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]+(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sHouseNumberRe = Pattern.compile("(?:one|[0-9]+([a-z](?=[^a-z]|$)|st|nd|rd|th)?)(?:-(?:one|[0-9]+([a-z](?=[^a-z]|$)|st|nd|rd|th)?))*(?=[,\"'\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sStateRe = Pattern.compile("(?:(ak|alaska)|(al|alabama)|(ar|arkansas)|(as|american[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+samoa)|(az|arizona)|(ca|california)|(co|colorado)|(ct|connecticut)|(dc|district[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+of[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+columbia)|(de|delaware)|(fl|florida)|(fm|federated[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+states[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+of[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+micronesia)|(ga|georgia)|(gu|guam)|(hi|hawaii)|(ia|iowa)|(id|idaho)|(il|illinois)|(in|indiana)|(ks|kansas)|(ky|kentucky)|(la|louisiana)|(ma|massachusetts)|(md|maryland)|(me|maine)|(mh|marshall[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+islands)|(mi|michigan)|(mn|minnesota)|(mo|missouri)|(mp|northern[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+mariana[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+islands)|(ms|mississippi)|(mt|montana)|(nc|north[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+carolina)|(nd|north[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+dakota)|(ne|nebraska)|(nh|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+hampshire)|(nj|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+jersey)|(nm|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+mexico)|(nv|nevada)|(ny|new[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+york)|(oh|ohio)|(ok|oklahoma)|(or|oregon)|(pa|pennsylvania)|(pr|puerto[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+rico)|(pw|palau)|(ri|rhode[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+island)|(sc|south[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+carolina)|(sd|south[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+dakota)|(tn|tennessee)|(tx|texas)|(ut|utah)|(va|virginia)|(vi|virgin[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+islands)|(vt|vermont)|(wa|washington)|(wi|wisconsin)|(wv|west[\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]+virginia)|(wy|wyoming))(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sLocationNameRe = Pattern.compile("(?:alley|annex|arcade|ave[.]?|avenue|alameda|bayou|beach|bend|bluffs?|bottom|boulevard|branch|bridge|brooks?|burgs?|bypass|broadway|camino|camp|canyon|cape|causeway|centers?|circles?|cliffs?|club|common|corners?|course|courts?|coves?|creek|crescent|crest|crossing|crossroad|curve|circulo|dale|dam|divide|drives?|estates?|expressway|extensions?|falls?|ferry|fields?|flats?|fords?|forest|forges?|forks?|fort|freeway|gardens?|gateway|glens?|greens?|groves?|harbors?|haven|heights|highway|hills?|hollow|inlet|islands?|isle|junctions?|keys?|knolls?|lakes?|land|landing|lane|lights?|loaf|locks?|lodge|loop|mall|manors?|meadows?|mews|mills?|mission|motorway|mount|mountains?|neck|orchard|oval|overpass|parks?|parkways?|pass|passage|path|pike|pines?|plains?|plaza|points?|ports?|prairie|privada|radial|ramp|ranch|rapids?|rd[.]?|rest|ridges?|river|roads?|route|row|rue|run|shoals?|shores?|skyway|springs?|spurs?|squares?|station|stravenue|stream|st[.]?|streets?|summit|speedway|terrace|throughway|trace|track|trafficway|trail|tunnel|turnpike|underpass|unions?|valleys?|viaduct|views?|villages?|ville|vista|walks?|wall|ways?|wells?|xing|xrd)(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
private static final Pattern sSuffixedNumberRe = Pattern.compile("([0-9]+)(st|nd|rd|th)", 2);
private static final Pattern sZipCodeRe = Pattern.compile("(?:[0-9]{5}(?:-[0-9]{4})?)(?=[,*•\t  \u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000\n\u000b\f\r\u0085\u2028\u2029]|$)", 2);
public static class ZipRange {
int mException1;
int mException2;
int mHigh;
int mLow;
public ZipRange(int i, int i2, int i3, int i4) {
this.mLow = i;
this.mHigh = i2;
this.mException1 = i3;
this.mException2 = i4;
}
public boolean matches(String str) {
int parseInt = Integer.parseInt(str.substring(0, 2));
return (this.mLow <= parseInt && parseInt <= this.mHigh) || parseInt == this.mException1 || parseInt == this.mException2;
}
}
private static boolean checkHouseNumber(String str) {
int i = 0;
for (int i2 = 0; i2 < str.length(); i2++) {
if (Character.isDigit(str.charAt(i2))) {
i++;
}
}
if (i > 5) {
return false;
}
Matcher matcher = sSuffixedNumberRe.matcher(str);
if (!matcher.find()) {
return true;
}
int parseInt = Integer.parseInt(matcher.group(1));
if (parseInt == 0) {
return false;
}
String lowerCase = matcher.group(2).toLowerCase(Locale.getDefault());
int i3 = parseInt % 10;
if (i3 == 1) {
return lowerCase.equals(parseInt % 100 != 11 ? UserDataStore.STATE : "th");
}
if (i3 == 2) {
return lowerCase.equals(parseInt % 100 != 12 ? "nd" : "th");
}
if (i3 != 3) {
return lowerCase.equals("th");
}
return lowerCase.equals(parseInt % 100 != 13 ? "rd" : "th");
}
@VisibleForTesting
public static MatchResult matchHouseNumber(String str, int i) {
if (i > 0 && HOUSE_PRE_DELIM.indexOf(str.charAt(i - 1)) == -1) {
return null;
}
Matcher region = sHouseNumberRe.matcher(str).region(i, str.length());
if (region.lookingAt()) {
MatchResult matchResult = region.toMatchResult();
if (checkHouseNumber(matchResult.group(0))) {
return matchResult;
}
}
return null;
}
@VisibleForTesting
public static MatchResult matchState(String str, int i) {
if (i > 0 && WORD_DELIM.indexOf(str.charAt(i - 1)) == -1) {
return null;
}
Matcher region = sStateRe.matcher(str).region(i, str.length());
if (region.lookingAt()) {
return region.toMatchResult();
}
return null;
}
private static boolean isValidZipCode(String str, MatchResult matchResult) {
if (matchResult == null) {
return false;
}
int groupCount = matchResult.groupCount();
while (true) {
if (groupCount <= 0) {
break;
}
int i = groupCount - 1;
if (matchResult.group(groupCount) != null) {
groupCount = i;
break;
}
groupCount = i;
}
return sZipCodeRe.matcher(str).matches() && sStateZipCodeRanges[groupCount].matches(str);
}
@VisibleForTesting
public static boolean isValidZipCode(String str, String str2) {
return isValidZipCode(str, matchState(str2, 0));
}
@VisibleForTesting
public static boolean isValidZipCode(String str) {
return sZipCodeRe.matcher(str).matches();
}
@VisibleForTesting
public static boolean isValidLocationName(String str) {
return sLocationNameRe.matcher(str).matches();
}
/* JADX WARN: Code restructure failed: missing block: B:73:0x0026, code lost:
return -r13;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private static int attemptMatch(java.lang.String r13, java.util.regex.MatchResult r14) {
/*
int r14 = r14.end()
java.util.regex.Pattern r0 = androidx.core.text.util.FindAddress.sWordRe
java.util.regex.Matcher r0 = r0.matcher(r13)
r1 = -1
r2 = 1
r3 = 0
java.lang.String r4 = ""
r9 = r1
r10 = r9
r5 = r2
r6 = r5
r7 = r6
r8 = r3
L15:
int r11 = r13.length()
if (r14 >= r11) goto Ld5
boolean r11 = r0.find(r14)
if (r11 != 0) goto L27
int r13 = r13.length()
L25:
int r13 = -r13
return r13
L27:
int r11 = r0.end()
int r12 = r0.start()
int r11 = r11 - r12
r12 = 25
if (r11 <= r12) goto L39
int r13 = r0.end()
goto L25
L39:
int r11 = r0.start()
if (r14 >= r11) goto L51
int r11 = r14 + 1
char r14 = r13.charAt(r14)
java.lang.String r12 = "\n\u000b\f\r\u0085\u2028\u2029"
int r14 = r12.indexOf(r14)
if (r14 == r1) goto L4f
int r5 = r5 + 1
L4f:
r14 = r11
goto L39
L51:
r11 = 5
if (r5 <= r11) goto L56
goto Ld5
L56:
int r6 = r6 + r2
r12 = 14
if (r6 <= r12) goto L5d
goto Ld5
L5d:
java.util.regex.MatchResult r12 = matchHouseNumber(r13, r14)
if (r12 == 0) goto L6d
if (r7 == 0) goto L69
if (r5 <= r2) goto L69
int r13 = -r14
return r13
L69:
if (r9 != r1) goto Lcb
r9 = r14
goto Lcb
L6d:
java.lang.String r7 = r0.group(r3)
boolean r7 = isValidLocationName(r7)
if (r7 == 0) goto L7a
r8 = r2
L78:
r7 = r3
goto Lcb
L7a:
if (r6 != r11) goto L83
if (r8 != 0) goto L83
int r14 = r0.end()
goto Ld5
L83:
if (r8 == 0) goto L78
r7 = 4
if (r6 <= r7) goto L78
java.util.regex.MatchResult r14 = matchState(r13, r14)
if (r14 == 0) goto L78
java.lang.String r7 = "et"
boolean r4 = r4.equals(r7)
if (r4 == 0) goto La7
java.lang.String r4 = r14.group(r3)
java.lang.String r7 = "al"
boolean r4 = r4.equals(r7)
if (r4 == 0) goto La7
int r14 = r14.end()
goto Ld5
La7:
java.util.regex.Pattern r4 = androidx.core.text.util.FindAddress.sWordRe
java.util.regex.Matcher r4 = r4.matcher(r13)
int r7 = r14.end()
boolean r7 = r4.find(r7)
if (r7 == 0) goto Lc6
java.lang.String r7 = r4.group(r3)
boolean r14 = isValidZipCode(r7, r14)
if (r14 == 0) goto L78
int r13 = r4.end()
return r13
Lc6:
int r10 = r14.end()
goto L78
Lcb:
java.lang.String r4 = r0.group(r3)
int r14 = r0.end()
goto L15
Ld5:
if (r10 <= 0) goto Ld8
return r10
Ld8:
if (r9 <= 0) goto Ldb
goto Ldc
Ldb:
r9 = r14
Ldc:
int r13 = -r9
return r13
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.core.text.util.FindAddress.attemptMatch(java.lang.String, java.util.regex.MatchResult):int");
}
public static String findAddress(String str) {
Matcher matcher = sHouseNumberRe.matcher(str);
int i = 0;
while (matcher.find(i)) {
if (checkHouseNumber(matcher.group(0))) {
int start = matcher.start();
int attemptMatch = attemptMatch(str, matcher);
if (attemptMatch > 0) {
return str.substring(start, attemptMatch);
}
i = -attemptMatch;
} else {
i = matcher.end();
}
}
return null;
}
private FindAddress() {
}
}

View File

@@ -0,0 +1,350 @@
package androidx.core.text.util;
import android.os.Build;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan;
import android.text.util.Linkify;
import android.webkit.WebView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.core.net.MailTo;
import androidx.core.text.util.LinkifyCompat;
import androidx.core.util.PatternsCompat;
import java.io.UnsupportedEncodingException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* loaded from: classes.dex */
public final class LinkifyCompat {
private static final String[] EMPTY_STRING = new String[0];
private static final Comparator<LinkSpec> COMPARATOR = new Comparator() { // from class: androidx.core.text.util.LinkifyCompat$$ExternalSyntheticLambda0
@Override // java.util.Comparator
public final int compare(Object obj, Object obj2) {
int lambda$static$0;
lambda$static$0 = LinkifyCompat.lambda$static$0((LinkifyCompat.LinkSpec) obj, (LinkifyCompat.LinkSpec) obj2);
return lambda$static$0;
}
};
public static class LinkSpec {
int end;
URLSpan frameworkAddedSpan;
int start;
String url;
}
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public @interface LinkifyMask {
}
private static boolean shouldAddLinksFallbackToFramework() {
return Build.VERSION.SDK_INT >= 28;
}
/* JADX INFO: Access modifiers changed from: private */
public static /* synthetic */ int lambda$static$0(LinkSpec linkSpec, LinkSpec linkSpec2) {
int i = linkSpec.start;
int i2 = linkSpec2.start;
if (i < i2) {
return -1;
}
if (i > i2) {
return 1;
}
return Integer.compare(linkSpec2.end, linkSpec.end);
}
public static boolean addLinks(@NonNull Spannable spannable, int i) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(spannable, i);
}
if (i == 0) {
return false;
}
URLSpan[] uRLSpanArr = (URLSpan[]) spannable.getSpans(0, spannable.length(), URLSpan.class);
for (int length = uRLSpanArr.length - 1; length >= 0; length--) {
spannable.removeSpan(uRLSpanArr[length]);
}
if ((i & 4) != 0) {
Linkify.addLinks(spannable, 4);
}
ArrayList arrayList = new ArrayList();
if ((i & 1) != 0) {
gatherLinks(arrayList, spannable, PatternsCompat.AUTOLINK_WEB_URL, new String[]{"http://", "https://", "rtsp://"}, Linkify.sUrlMatchFilter, null);
}
if ((i & 2) != 0) {
gatherLinks(arrayList, spannable, PatternsCompat.AUTOLINK_EMAIL_ADDRESS, new String[]{MailTo.MAILTO_SCHEME}, null, null);
}
if ((i & 8) != 0) {
gatherMapLinks(arrayList, spannable);
}
pruneOverlaps(arrayList, spannable);
if (arrayList.size() == 0) {
return false;
}
Iterator it = arrayList.iterator();
while (it.hasNext()) {
LinkSpec linkSpec = (LinkSpec) it.next();
if (linkSpec.frameworkAddedSpan == null) {
applyLink(linkSpec.url, linkSpec.start, linkSpec.end, spannable);
}
}
return true;
}
public static boolean addLinks(@NonNull TextView textView, int i) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(textView, i);
}
if (i == 0) {
return false;
}
CharSequence text = textView.getText();
if (text instanceof Spannable) {
if (addLinks((Spannable) text, i)) {
addLinkMovementMethod(textView);
return true;
}
} else {
SpannableString valueOf = SpannableString.valueOf(text);
if (addLinks(valueOf, i)) {
addLinkMovementMethod(textView);
textView.setText(valueOf);
return true;
}
}
return false;
}
public static void addLinks(@NonNull TextView textView, @NonNull Pattern pattern, @Nullable String str) {
if (shouldAddLinksFallbackToFramework()) {
Linkify.addLinks(textView, pattern, str);
} else {
addLinks(textView, pattern, str, (String[]) null, (Linkify.MatchFilter) null, (Linkify.TransformFilter) null);
}
}
public static void addLinks(@NonNull TextView textView, @NonNull Pattern pattern, @Nullable String str, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
Linkify.addLinks(textView, pattern, str, matchFilter, transformFilter);
} else {
addLinks(textView, pattern, str, (String[]) null, matchFilter, transformFilter);
}
}
public static void addLinks(@NonNull TextView textView, @NonNull Pattern pattern, @Nullable String str, @Nullable String[] strArr, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
Api24Impl.addLinks(textView, pattern, str, strArr, matchFilter, transformFilter);
return;
}
SpannableString valueOf = SpannableString.valueOf(textView.getText());
if (addLinks(valueOf, pattern, str, strArr, matchFilter, transformFilter)) {
textView.setText(valueOf);
addLinkMovementMethod(textView);
}
}
public static boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern, @Nullable String str) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(spannable, pattern, str);
}
return addLinks(spannable, pattern, str, (String[]) null, (Linkify.MatchFilter) null, (Linkify.TransformFilter) null);
}
public static boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern, @Nullable String str, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
return Linkify.addLinks(spannable, pattern, str, matchFilter, transformFilter);
}
return addLinks(spannable, pattern, str, (String[]) null, matchFilter, transformFilter);
}
public static boolean addLinks(@NonNull Spannable spannable, @NonNull Pattern pattern, @Nullable String str, @Nullable String[] strArr, @Nullable Linkify.MatchFilter matchFilter, @Nullable Linkify.TransformFilter transformFilter) {
if (shouldAddLinksFallbackToFramework()) {
return Api24Impl.addLinks(spannable, pattern, str, strArr, matchFilter, transformFilter);
}
if (str == null) {
str = "";
}
if (strArr == null || strArr.length < 1) {
strArr = EMPTY_STRING;
}
String[] strArr2 = new String[strArr.length + 1];
strArr2[0] = str.toLowerCase(Locale.ROOT);
int i = 0;
while (i < strArr.length) {
String str2 = strArr[i];
i++;
strArr2[i] = str2 == null ? "" : str2.toLowerCase(Locale.ROOT);
}
Matcher matcher = pattern.matcher(spannable);
boolean z = false;
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
String group = matcher.group(0);
if (matchFilter == null || matchFilter.acceptMatch(spannable, start, end)) {
if (group != null) {
applyLink(makeUrl(group, strArr2, matcher, transformFilter), start, end, spannable);
z = true;
}
}
}
return z;
}
private static void addLinkMovementMethod(@NonNull TextView textView) {
if ((textView.getMovementMethod() instanceof LinkMovementMethod) || !textView.getLinksClickable()) {
return;
}
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
private static String makeUrl(@NonNull String str, @NonNull String[] strArr, Matcher matcher, @Nullable Linkify.TransformFilter transformFilter) {
boolean z;
if (transformFilter != null) {
str = transformFilter.transformUrl(matcher, str);
}
int length = strArr.length;
int i = 0;
while (true) {
if (i >= length) {
z = false;
break;
}
String str2 = strArr[i];
if (str.regionMatches(true, 0, str2, 0, str2.length())) {
z = true;
if (!str.regionMatches(false, 0, str2, 0, str2.length())) {
str = str2 + str.substring(str2.length());
}
} else {
i++;
}
}
if (z || strArr.length <= 0) {
return str;
}
return strArr[0] + str;
}
private static void gatherLinks(ArrayList<LinkSpec> arrayList, Spannable spannable, Pattern pattern, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
Matcher matcher = pattern.matcher(spannable);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
String group = matcher.group(0);
if (matchFilter == null || matchFilter.acceptMatch(spannable, start, end)) {
if (group != null) {
LinkSpec linkSpec = new LinkSpec();
linkSpec.url = makeUrl(group, strArr, matcher, transformFilter);
linkSpec.start = start;
linkSpec.end = end;
arrayList.add(linkSpec);
}
}
}
}
private static void applyLink(String str, int i, int i2, Spannable spannable) {
spannable.setSpan(new URLSpan(str), i, i2, 33);
}
private static void gatherMapLinks(ArrayList<LinkSpec> arrayList, Spannable spannable) {
int indexOf;
String obj = spannable.toString();
int i = 0;
while (true) {
try {
String findAddress = findAddress(obj);
if (findAddress != null && (indexOf = obj.indexOf(findAddress)) >= 0) {
LinkSpec linkSpec = new LinkSpec();
int length = findAddress.length() + indexOf;
linkSpec.start = indexOf + i;
i += length;
linkSpec.end = i;
obj = obj.substring(length);
try {
linkSpec.url = "geo:0,0?q=" + URLEncoder.encode(findAddress, "UTF-8");
arrayList.add(linkSpec);
} catch (UnsupportedEncodingException unused) {
}
}
return;
} catch (UnsupportedOperationException unused2) {
return;
}
}
}
private static String findAddress(String str) {
if (Build.VERSION.SDK_INT >= 28) {
return WebView.findAddress(str);
}
return FindAddress.findAddress(str);
}
private static void pruneOverlaps(ArrayList<LinkSpec> arrayList, Spannable spannable) {
int i;
int i2 = 0;
for (URLSpan uRLSpan : (URLSpan[]) spannable.getSpans(0, spannable.length(), URLSpan.class)) {
LinkSpec linkSpec = new LinkSpec();
linkSpec.frameworkAddedSpan = uRLSpan;
linkSpec.start = spannable.getSpanStart(uRLSpan);
linkSpec.end = spannable.getSpanEnd(uRLSpan);
arrayList.add(linkSpec);
}
Collections.sort(arrayList, COMPARATOR);
int size = arrayList.size();
while (i2 < size - 1) {
LinkSpec linkSpec2 = arrayList.get(i2);
int i3 = i2 + 1;
LinkSpec linkSpec3 = arrayList.get(i3);
int i4 = linkSpec2.start;
int i5 = linkSpec3.start;
if (i4 <= i5 && (i = linkSpec2.end) > i5) {
int i6 = linkSpec3.end;
int i7 = (i6 > i && i - i4 <= i6 - i5) ? i - i4 < i6 - i5 ? i2 : -1 : i3;
if (i7 != -1) {
Object obj = arrayList.get(i7).frameworkAddedSpan;
if (obj != null) {
spannable.removeSpan(obj);
}
arrayList.remove(i7);
size--;
}
}
i2 = i3;
}
}
private LinkifyCompat() {
}
@RequiresApi(24)
public static class Api24Impl {
private Api24Impl() {
}
public static void addLinks(TextView textView, Pattern pattern, String str, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
Linkify.addLinks(textView, pattern, str, strArr, matchFilter, transformFilter);
}
public static boolean addLinks(Spannable spannable, Pattern pattern, String str, String[] strArr, Linkify.MatchFilter matchFilter, Linkify.TransformFilter transformFilter) {
return Linkify.addLinks(spannable, pattern, str, strArr, matchFilter, transformFilter);
}
}
}

View File

@@ -0,0 +1,5 @@
package androidx.core.text.util;
/* loaded from: classes.dex */
public abstract /* synthetic */ class LocalePreferences$1$$ExternalSyntheticApiModelOutline0 {
}

View File

@@ -0,0 +1,5 @@
package androidx.core.text.util;
/* loaded from: classes.dex */
public abstract /* synthetic */ class LocalePreferences$1$$ExternalSyntheticApiModelOutline1 {
}

View File

@@ -0,0 +1,5 @@
package androidx.core.text.util;
/* loaded from: classes.dex */
public abstract /* synthetic */ class LocalePreferences$1$$ExternalSyntheticApiModelOutline2 {
}

View File

@@ -0,0 +1,5 @@
package androidx.core.text.util;
/* loaded from: classes.dex */
public abstract /* synthetic */ class LocalePreferences$1$$ExternalSyntheticApiModelOutline3 {
}

View File

@@ -0,0 +1,5 @@
package androidx.core.text.util;
/* loaded from: classes.dex */
public abstract /* synthetic */ class LocalePreferences$1$$ExternalSyntheticApiModelOutline4 {
}

View File

@@ -0,0 +1,5 @@
package androidx.core.text.util;
/* loaded from: classes.dex */
public abstract /* synthetic */ class LocalePreferences$1$$ExternalSyntheticApiModelOutline5 {
}

View File

@@ -0,0 +1,313 @@
package androidx.core.text.util;
import android.icu.number.NumberFormatter;
import android.icu.number.UnlocalizedNumberFormatter;
import android.icu.text.DateFormat;
import android.icu.text.DateTimePatternGenerator;
import android.icu.util.MeasureUnit;
import android.os.Build;
import android.text.format.DateFormat;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import com.mbridge.msdk.foundation.download.core.DownloadCommon;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Locale;
@RequiresApi(21)
/* loaded from: classes.dex */
public final class LocalePreferences {
private static final String TAG = "LocalePreferences";
private static final String[] WEATHER_FAHRENHEIT_COUNTRIES = {"BS", "BZ", "KY", "PR", "PW", "US"};
public static class HourCycle {
public static final String DEFAULT = "";
public static final String H11 = "h11";
public static final String H12 = "h12";
public static final String H23 = "h23";
public static final String H24 = "h24";
private static final String U_EXTENSION_TAG = "hc";
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public @interface HourCycleTypes {
}
private HourCycle() {
}
}
@NonNull
public static String getHourCycle() {
return getHourCycle(true);
}
@NonNull
public static String getHourCycle(@NonNull Locale locale) {
return getHourCycle(locale, true);
}
@NonNull
public static String getHourCycle(boolean z) {
return getHourCycle(Api24Impl.getDefaultLocale(), z);
}
@NonNull
public static String getHourCycle(@NonNull Locale locale, boolean z) {
String unicodeLocaleType = getUnicodeLocaleType("hc", "", locale, z);
if (unicodeLocaleType != null) {
return unicodeLocaleType;
}
if (Build.VERSION.SDK_INT >= 33) {
return Api33Impl.getHourCycle(locale);
}
return getBaseHourCycle(locale);
}
public static class CalendarType {
public static final String CHINESE = "chinese";
public static final String DANGI = "dangi";
public static final String DEFAULT = "";
public static final String GREGORIAN = "gregorian";
public static final String HEBREW = "hebrew";
public static final String INDIAN = "indian";
public static final String ISLAMIC = "islamic";
public static final String ISLAMIC_CIVIL = "islamic-civil";
public static final String ISLAMIC_RGSA = "islamic-rgsa";
public static final String ISLAMIC_TBLA = "islamic-tbla";
public static final String ISLAMIC_UMALQURA = "islamic-umalqura";
public static final String PERSIAN = "persian";
private static final String U_EXTENSION_TAG = "ca";
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public @interface CalendarTypes {
}
private CalendarType() {
}
}
@NonNull
public static String getCalendarType() {
return getCalendarType(true);
}
@NonNull
public static String getCalendarType(@NonNull Locale locale) {
return getCalendarType(locale, true);
}
@NonNull
public static String getCalendarType(boolean z) {
return getCalendarType(Api24Impl.getDefaultLocale(), z);
}
@NonNull
public static String getCalendarType(@NonNull Locale locale, boolean z) {
String unicodeLocaleType = getUnicodeLocaleType(DownloadCommon.DOWNLOAD_REPORT_CANCEL, "", locale, z);
return unicodeLocaleType != null ? unicodeLocaleType : Api24Impl.getCalendarType(locale);
}
public static class TemperatureUnit {
public static final String CELSIUS = "celsius";
public static final String DEFAULT = "";
public static final String FAHRENHEIT = "fahrenhe";
public static final String KELVIN = "kelvin";
private static final String U_EXTENSION_TAG = "mu";
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public @interface TemperatureUnits {
}
private TemperatureUnit() {
}
}
@NonNull
public static String getTemperatureUnit() {
return getTemperatureUnit(true);
}
@NonNull
public static String getTemperatureUnit(@NonNull Locale locale) {
return getTemperatureUnit(locale, true);
}
@NonNull
public static String getTemperatureUnit(boolean z) {
return getTemperatureUnit(Api24Impl.getDefaultLocale(), z);
}
@NonNull
public static String getTemperatureUnit(@NonNull Locale locale, boolean z) {
String unicodeLocaleType = getUnicodeLocaleType("mu", "", locale, z);
if (unicodeLocaleType != null) {
return unicodeLocaleType;
}
if (Build.VERSION.SDK_INT >= 33) {
return Api33Impl.getResolvedTemperatureUnit(locale);
}
return getTemperatureHardCoded(locale);
}
public static class FirstDayOfWeek {
public static final String DEFAULT = "";
public static final String FRIDAY = "fri";
public static final String MONDAY = "mon";
public static final String SATURDAY = "sat";
public static final String SUNDAY = "sun";
public static final String THURSDAY = "thu";
public static final String TUESDAY = "tue";
private static final String U_EXTENSION_TAG = "fw";
public static final String WEDNESDAY = "wed";
@Retention(RetentionPolicy.SOURCE)
@RestrictTo({RestrictTo.Scope.LIBRARY})
public @interface Days {
}
private FirstDayOfWeek() {
}
}
@NonNull
public static String getFirstDayOfWeek() {
return getFirstDayOfWeek(true);
}
@NonNull
public static String getFirstDayOfWeek(@NonNull Locale locale) {
return getFirstDayOfWeek(locale, true);
}
@NonNull
public static String getFirstDayOfWeek(boolean z) {
return getFirstDayOfWeek(Api24Impl.getDefaultLocale(), z);
}
@NonNull
public static String getFirstDayOfWeek(@NonNull Locale locale, boolean z) {
String unicodeLocaleType = getUnicodeLocaleType("fw", "", locale, z);
return unicodeLocaleType != null ? unicodeLocaleType : getBaseFirstDayOfWeek(locale);
}
private static String getUnicodeLocaleType(String str, String str2, Locale locale, boolean z) {
String unicodeLocaleType = locale.getUnicodeLocaleType(str);
if (unicodeLocaleType != null) {
return unicodeLocaleType;
}
if (z) {
return null;
}
return str2;
}
private static String getTemperatureHardCoded(Locale locale) {
return Arrays.binarySearch(WEATHER_FAHRENHEIT_COUNTRIES, locale.getCountry()) >= 0 ? TemperatureUnit.FAHRENHEIT : TemperatureUnit.CELSIUS;
}
private static String getBaseHourCycle(@NonNull Locale locale) {
return DateFormat.getBestDateTimePattern(locale, "jm").contains("H") ? HourCycle.H23 : HourCycle.H12;
}
private static String getBaseFirstDayOfWeek(@NonNull Locale locale) {
return getStringOfFirstDayOfWeek(Calendar.getInstance(locale).getFirstDayOfWeek());
}
private static String getStringOfFirstDayOfWeek(int i) {
return (i < 1 || i > 7) ? "" : new String[]{FirstDayOfWeek.SUNDAY, FirstDayOfWeek.MONDAY, FirstDayOfWeek.TUESDAY, FirstDayOfWeek.WEDNESDAY, FirstDayOfWeek.THURSDAY, FirstDayOfWeek.FRIDAY, FirstDayOfWeek.SATURDAY}[i - 1];
}
private static Locale getDefaultLocale() {
return Locale.getDefault();
}
@RequiresApi(24)
public static class Api24Impl {
public static String getCalendarType(@NonNull Locale locale) {
return android.icu.util.Calendar.getInstance(locale).getType();
}
public static Locale getDefaultLocale() {
return Locale.getDefault(Locale.Category.FORMAT);
}
private Api24Impl() {
}
}
@RequiresApi(33)
public static class Api33Impl {
public static String getResolvedTemperatureUnit(@NonNull Locale locale) {
String identifier = ((UnlocalizedNumberFormatter) ((UnlocalizedNumberFormatter) NumberFormatter.with().usage("weather")).unit(MeasureUnit.CELSIUS)).locale(locale).format(1L).getOutputUnit().getIdentifier();
return identifier.startsWith(TemperatureUnit.FAHRENHEIT) ? TemperatureUnit.FAHRENHEIT : identifier;
}
public static String getHourCycle(@NonNull Locale locale) {
return getHourCycleType(DateTimePatternGenerator.getInstance(locale).getDefaultHourCycle());
}
private static String getHourCycleType(DateFormat.HourCycle hourCycle) {
int i = AnonymousClass1.$SwitchMap$android$icu$text$DateFormat$HourCycle[hourCycle.ordinal()];
return i != 1 ? i != 2 ? i != 3 ? i != 4 ? "" : HourCycle.H24 : HourCycle.H23 : HourCycle.H12 : HourCycle.H11;
}
private Api33Impl() {
}
}
/* renamed from: androidx.core.text.util.LocalePreferences$1, reason: invalid class name */
public static /* synthetic */ class AnonymousClass1 {
static final /* synthetic */ int[] $SwitchMap$android$icu$text$DateFormat$HourCycle;
static {
DateFormat.HourCycle[] values;
DateFormat.HourCycle hourCycle;
int ordinal;
DateFormat.HourCycle hourCycle2;
int ordinal2;
DateFormat.HourCycle hourCycle3;
int ordinal3;
DateFormat.HourCycle hourCycle4;
int ordinal4;
values = DateFormat.HourCycle.values();
int[] iArr = new int[values.length];
$SwitchMap$android$icu$text$DateFormat$HourCycle = iArr;
try {
hourCycle4 = DateFormat.HourCycle.HOUR_CYCLE_11;
ordinal4 = hourCycle4.ordinal();
iArr[ordinal4] = 1;
} catch (NoSuchFieldError unused) {
}
try {
int[] iArr2 = $SwitchMap$android$icu$text$DateFormat$HourCycle;
hourCycle3 = DateFormat.HourCycle.HOUR_CYCLE_12;
ordinal3 = hourCycle3.ordinal();
iArr2[ordinal3] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
int[] iArr3 = $SwitchMap$android$icu$text$DateFormat$HourCycle;
hourCycle2 = DateFormat.HourCycle.HOUR_CYCLE_23;
ordinal2 = hourCycle2.ordinal();
iArr3[ordinal2] = 3;
} catch (NoSuchFieldError unused3) {
}
try {
int[] iArr4 = $SwitchMap$android$icu$text$DateFormat$HourCycle;
hourCycle = DateFormat.HourCycle.HOUR_CYCLE_24;
ordinal = hourCycle.ordinal();
iArr4[ordinal] = 4;
} catch (NoSuchFieldError unused4) {
}
}
}
private LocalePreferences() {
}
}