package com.airbnb.deeplinkdispatch.base; import com.airbnb.deeplinkdispatch.DeepLinkEntry; import com.airbnb.deeplinkdispatch.DeepLinkMatchResult; import com.airbnb.deeplinkdispatch.DeepLinkUri; import com.airbnb.deeplinkdispatch.MatchType; import com.airbnb.deeplinkdispatch.NodeMetadata; import com.airbnb.deeplinkdispatch.UrlTreeKt; import com.google.common.primitives.UnsignedBytes; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; /* loaded from: classes.dex */ public class MatchIndex { public static final char ALLOWED_VALUES_SEPARATOR = '|'; private static final String ALLOWED_VALUES_SEPARATOR_REGEX_STRING = "\\|"; public static final int HEADER_CHILDREN_LENGTH = 4; public static final int HEADER_LENGTH = 9; public static final int HEADER_MATCH_LENGTH = 2; public static final int HEADER_NODE_METADATA_LENGTH = 1; public static final int HEADER_VALUE_LENGTH = 2; public static final int MATCH_DATA_CLASS_LENGTH = 2; public static final int MATCH_DATA_METHOD_LENGTH = 1; public static final int MATCH_DATA_TYPE_LENGTH = 1; public static final int MATCH_DATA_URL_TEMPLATE_LENGTH = 2; public static final String MATCH_INDEX_ENCODING = "ISO_8859_1"; public static final String MATCH_PARAM_DIVIDER_CHAR = "\u001e"; public static final String ROOT_VALUE = "r"; public final byte[] byteArray; public static final char[] VARIABLE_DELIMITER = {UrlTreeKt.componentParamPrefixChar, UrlTreeKt.componentParamSuffixChar}; public static final char[] ALLOWED_VALUES_DELIMITER = {'(', ')'}; public MatchIndex(byte[] bArr) { this.byteArray = bArr; } /* JADX WARN: Removed duplicated region for block: B:17:0x0099 */ /* JADX WARN: Removed duplicated region for block: B:23:0x0098 A[SYNTHETIC] */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public com.airbnb.deeplinkdispatch.DeepLinkMatchResult matchUri(com.airbnb.deeplinkdispatch.DeepLinkUri r17, java.util.List r18, java.util.Map r19, int r20, int r21, int r22, java.util.Map r23) { /* r16 = this; r8 = r16 r9 = r20 r10 = 0 r12 = r18 r11 = r21 r0 = r10 La: java.lang.Object r1 = r12.get(r9) com.airbnb.deeplinkdispatch.UrlElement r1 = (com.airbnb.deeplinkdispatch.UrlElement) r1 byte r2 = r1.getTypeFlag() byte[] r1 = r1.getValue() r13 = r23 com.airbnb.deeplinkdispatch.base.CompareResult r1 = r8.compareValue(r11, r2, r1, r13) r14 = -1 if (r1 == 0) goto L94 java.lang.String r2 = r1.getPlaceholderValue() boolean r2 = r2.isEmpty() r3 = 1 if (r2 != 0) goto L4d if (r19 == 0) goto L31 r2 = r19 goto L35 L31: java.util.Map r2 = java.util.Collections.emptyMap() L35: java.util.HashMap r4 = new java.util.HashMap r4.(r2) java.lang.String r2 = r1.getPlaceholderValue() java.lang.String r5 = com.airbnb.deeplinkdispatch.base.MatchIndex.MATCH_PARAM_DIVIDER_CHAR java.lang.String[] r2 = r2.split(r5, r14) r5 = 0 r5 = r2[r5] r2 = r2[r3] r4.put(r5, r2) goto L4f L4d: r4 = r19 L4f: int r2 = r18.size() int r2 = r2 - r3 if (r9 < r2) goto L6d boolean r2 = r1.isEmptyConfigurablePathSegmentMatch() if (r2 != 0) goto L6d int r1 = r8.getMatchLength(r11) if (r1 <= 0) goto L94 int r0 = r8.getMatchDataPos(r11) r15 = r17 com.airbnb.deeplinkdispatch.DeepLinkMatchResult r0 = r8.getMatchResultFromIndex(r1, r0, r15, r4) goto L96 L6d: r15 = r17 int r5 = r8.getChildrenPos(r11) if (r5 == r14) goto L96 boolean r0 = r1.isEmptyConfigurablePathSegmentMatch() if (r0 == 0) goto L7d r6 = r9 goto L80 L7d: int r0 = r9 + 1 r6 = r0 L80: int r7 = r8.getElementBoundaryPos(r11) r0 = r16 r1 = r17 r2 = r18 r3 = r4 r4 = r6 r6 = r7 r7 = r23 com.airbnb.deeplinkdispatch.DeepLinkMatchResult r0 = r0.matchUri(r1, r2, r3, r4, r5, r6, r7) goto L96 L94: r15 = r17 L96: if (r0 == 0) goto L99 return r0 L99: r1 = r22 int r11 = r8.getNextElementStartPosition(r11, r1) if (r11 != r14) goto La return r10 */ throw new UnsupportedOperationException("Method not decompiled: com.airbnb.deeplinkdispatch.base.MatchIndex.matchUri(com.airbnb.deeplinkdispatch.DeepLinkUri, java.util.List, java.util.Map, int, int, int, java.util.Map):com.airbnb.deeplinkdispatch.DeepLinkMatchResult"); } public List getAllEntries(int i, int i2) { ArrayList arrayList = new ArrayList(); do { int matchLength = getMatchLength(i); if (matchLength > 0) { arrayList.add(getDeepLinkEntryFromIndex(this.byteArray, matchLength, getMatchDataPos(i))); } if (getChildrenPos(i) != -1) { arrayList.addAll(getAllEntries(getChildrenPos(i), getElementBoundaryPos(i))); } i = getNextElementStartPosition(i, i2); } while (i != -1); return arrayList; } public DeepLinkMatchResult getMatchResultFromIndex(int i, int i2, DeepLinkUri deepLinkUri, Map map) { DeepLinkEntry deepLinkEntryFromIndex = getDeepLinkEntryFromIndex(this.byteArray, i, i2); if (deepLinkEntryFromIndex == null) { return null; } return new DeepLinkMatchResult(deepLinkEntryFromIndex, Collections.singletonMap(deepLinkUri, map)); } private static DeepLinkEntry getDeepLinkEntryFromIndex(byte[] bArr, int i, int i2) { if (i == 0) { return null; } MatchType fromInt = MatchType.fromInt(readOneByteAsInt(bArr, i2)); int readTwoBytesAsInt = readTwoBytesAsInt(bArr, i2 + 1); int i3 = i2 + 3; String stringFromByteArray = getStringFromByteArray(bArr, i3, readTwoBytesAsInt); int i4 = i3 + readTwoBytesAsInt; int readTwoBytesAsInt2 = readTwoBytesAsInt(bArr, i4); int i5 = i4 + 2; String stringFromByteArray2 = getStringFromByteArray(bArr, i5, readTwoBytesAsInt2); int i6 = i5 + readTwoBytesAsInt2; int readOneByteAsInt = readOneByteAsInt(bArr, i6); String stringFromByteArray3 = readOneByteAsInt > 0 ? getStringFromByteArray(bArr, i6 + 1, readOneByteAsInt) : null; int i7 = AnonymousClass1.$SwitchMap$com$airbnb$deeplinkdispatch$MatchType[fromInt.ordinal()]; if (i7 == 1) { return new DeepLinkEntry.ActivityDeeplinkEntry(stringFromByteArray, stringFromByteArray2); } if (i7 == 2) { return new DeepLinkEntry.MethodDeeplinkEntry(stringFromByteArray, stringFromByteArray2, stringFromByteArray3); } if (i7 == 3) { return new DeepLinkEntry.HandlerDeepLinkEntry(stringFromByteArray, stringFromByteArray2); } throw new IllegalStateException("Unhandled match type: ".concat(String.valueOf(fromInt))); } /* JADX INFO: Access modifiers changed from: package-private */ /* renamed from: com.airbnb.deeplinkdispatch.base.MatchIndex$1, reason: invalid class name */ /* loaded from: classes.dex */ public static /* synthetic */ class AnonymousClass1 { static final int[] $SwitchMap$com$airbnb$deeplinkdispatch$MatchType; static { int[] iArr = new int[MatchType.values().length]; $SwitchMap$com$airbnb$deeplinkdispatch$MatchType = iArr; try { iArr[MatchType.Activity.ordinal()] = 1; } catch (NoSuchFieldError unused) { } try { $SwitchMap$com$airbnb$deeplinkdispatch$MatchType[MatchType.Method.ordinal()] = 2; } catch (NoSuchFieldError unused2) { } try { $SwitchMap$com$airbnb$deeplinkdispatch$MatchType[MatchType.Handler.ordinal()] = 3; } catch (NoSuchFieldError unused3) { } } } private CompareResult compareValue(int i, byte b, byte[] bArr, Map map) { int i2 = i + 9; NodeMetadata nodeMetadata = new NodeMetadata(this.byteArray[i]); if (nodeMetadata.isComponentTypeMismatch(b)) { return null; } int valueLength = getValueLength(i); if (valueLength != bArr.length && nodeMetadata.isValueLiteralValue) { return null; } if (nodeMetadata.isComponentParam) { return compareComponentParam(i2, valueLength, bArr, VARIABLE_DELIMITER); } if (nodeMetadata.isConfigurablePathSegment) { return compareConfigurablePathSegment(bArr, map, i2, valueLength); } return arrayCompare(this.byteArray, i2, valueLength, bArr); } private CompareResult arrayCompare(byte[] bArr, int i, int i2, byte[] bArr2) { if (i2 != bArr2.length) { return null; } for (int i3 = 0; i3 < i2; i3++) { if (bArr2[i3] != bArr[i + i3]) { return null; } } return new CompareResult("", false); } private CompareResult compareConfigurablePathSegment(byte[] bArr, Map map, int i, int i2) { byte[] bArr2 = null; for (Map.Entry entry : map.entrySet()) { if (arrayCompare(this.byteArray, i, i2, entry.getKey()) != null) { bArr2 = entry.getValue(); } } if (bArr2 == null) { return null; } if (bArr2.length == 0) { return new CompareResult("", true); } if (arrayCompare(bArr, 0, bArr.length, bArr2) != null) { return new CompareResult("", false); } return null; } private CompareResult compareComponentParam(int i, int i2, byte[] bArr, char[] cArr) { int length = bArr.length; byte[] bArr2 = this.byteArray; if ((bArr2[i] == cArr[0] && bArr2[i + 1] == cArr[1]) || length == 0) { return null; } int i3 = 0; while (i3 < length) { int i4 = i + i3; byte b = this.byteArray[i4]; boolean z = b == bArr[i3] && i3 == length + (-1) && i2 > length; if (b == cArr[0] || z) { int i5 = i2 - 1; int i6 = length - 1; while (i5 >= 0) { int i7 = i + i5; byte b2 = this.byteArray[i7]; if (b2 == cArr[1]) { if (z) { i3++; } int i8 = (i6 - i3) + 1; byte[] bArr3 = new byte[i8]; int i9 = i + i3; int i10 = (i7 - i9) - 1; byte[] bArr4 = new byte[i10]; System.arraycopy(bArr, i3, bArr3, 0, i8); System.arraycopy(this.byteArray, i9 + 1, bArr4, 0, i10); int verifyAllowedValues = verifyAllowedValues(bArr4, bArr3); if (verifyAllowedValues < 0) { return null; } if (verifyAllowedValues != Integer.MAX_VALUE) { bArr4 = Arrays.copyOfRange(bArr4, 0, verifyAllowedValues); } String str = new String(bArr4); String str2 = MATCH_PARAM_DIVIDER_CHAR; String str3 = new String(bArr3); StringBuilder sb = new StringBuilder(); sb.append(str); sb.append(str2); sb.append(str3); return new CompareResult(sb.toString(), false); } if (b2 != bArr[i6]) { return null; } i5--; i6--; } } if (this.byteArray[i4] != bArr[i3]) { return null; } i3++; } return new CompareResult("", false); } private int verifyAllowedValues(byte[] bArr, byte[] bArr2) { int charPos; char[] cArr = ALLOWED_VALUES_DELIMITER; int charPos2 = charPos(bArr, cArr[0]); if (charPos2 == -1 || charPos2 > (charPos = charPos(bArr, cArr[1]))) { return Integer.MAX_VALUE; } if (Arrays.binarySearch(new String(Arrays.copyOfRange(bArr, charPos2 + 1, charPos)).split(ALLOWED_VALUES_SEPARATOR_REGEX_STRING), new String(bArr2)) >= 0) { return charPos2; } return -1; } private int charPos(byte[] bArr, char c) { if (bArr == null) { return -1; } for (int i = 0; i < bArr.length; i++) { if (bArr[i] == c) { return i; } } return -1; } private int getNextElementStartPosition(int i, int i2) { int elementBoundaryPos = getElementBoundaryPos(i); if (elementBoundaryPos == i2) { return -1; } return elementBoundaryPos; } private int getElementBoundaryPos(int i) { return getMatchDataPos(i) + getMatchLength(i) + getChildrenLength(i); } private int getChildrenPos(int i) { if (getChildrenLength(i) == 0) { return -1; } return getMatchDataPos(i) + getMatchLength(i); } private int getMatchDataPos(int i) { return i + 9 + getValueLength(i); } private int getValueLength(int i) { return readTwoBytesAsInt(this.byteArray, i + 1); } private int getMatchLength(int i) { return readTwoBytesAsInt(this.byteArray, i + 3); } private int getChildrenLength(int i) { return readFourBytesAsInt(this.byteArray, i + 5); } public int length() { return this.byteArray.length; } private static int readOneByteAsInt(byte[] bArr, int i) { return bArr[i] & UnsignedBytes.MAX_VALUE; } private static int readTwoBytesAsInt(byte[] bArr, int i) { return readOneByteAsInt(bArr, i + 1) | (readOneByteAsInt(bArr, i) << 8); } private static int readFourBytesAsInt(byte[] bArr, int i) { return readOneByteAsInt(bArr, i + 3) | (readOneByteAsInt(bArr, i) << 24) | (readOneByteAsInt(bArr, i + 1) << 16) | (readOneByteAsInt(bArr, i + 2) << 8); } private static String getStringFromByteArray(byte[] bArr, int i, int i2) { byte[] bArr2 = new byte[i2]; System.arraycopy(bArr, i, bArr2, 0, i2); try { return new String(bArr2, "utf-8"); } catch (UnsupportedEncodingException unused) { return null; } } public static String getMatchIdxFileName(String str) { String lowerCase = str.toLowerCase(); StringBuilder sb = new StringBuilder("dld_match_"); sb.append(lowerCase); sb.append(".idx"); return sb.toString(); } }