CrackMe.apk
Download file
package com.google.android.exoplayer2.text.webvtt;
import android.graphics.Color;
import android.text.Layout;
import android.text.SpannableStringBuilder;
import android.text.SpannedString;
import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.TypefaceSpan;
import android.text.style.UnderlineSpan;
import com.facebook.react.uimanager.ViewProps;
import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.text.span.HorizontalTextInVerticalContextSpan;
import com.google.android.exoplayer2.text.span.RubySpan;
import com.google.android.exoplayer2.text.span.SpanUtil;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.ParsableByteArray;
import com.google.android.exoplayer2.util.Util;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class WebvttCueParser {
private static final char CHAR_AMPERSAND = '&';
private static final char CHAR_GREATER_THAN = '>';
private static final char CHAR_LESS_THAN = '<';
private static final char CHAR_SEMI_COLON = ';';
private static final char CHAR_SLASH = '/';
private static final char CHAR_SPACE = ' ';
public static final Pattern CUE_HEADER_PATTERN = Pattern.compile("^(\\S+)\\s+-->\\s+(\\S+)(.*)?$");
private static final Pattern CUE_SETTING_PATTERN = Pattern.compile("(\\S+?):(\\S+)");
private static final Map<String, Integer> DEFAULT_BACKGROUND_COLORS;
static final float DEFAULT_POSITION = 0.5f;
private static final Map<String, Integer> DEFAULT_TEXT_COLORS;
private static final String ENTITY_AMPERSAND = "amp";
private static final String ENTITY_GREATER_THAN = "gt";
private static final String ENTITY_LESS_THAN = "lt";
private static final String ENTITY_NON_BREAK_SPACE = "nbsp";
private static final int STYLE_BOLD = 1;
private static final int STYLE_ITALIC = 2;
private static final String TAG = "WebvttCueParser";
private static final String TAG_BOLD = "b";
private static final String TAG_CLASS = "c";
private static final String TAG_ITALIC = "i";
private static final String TAG_LANG = "lang";
private static final String TAG_RUBY = "ruby";
private static final String TAG_RUBY_TEXT = "rt";
private static final String TAG_UNDERLINE = "u";
private static final String TAG_VOICE = "v";
private static final int TEXT_ALIGNMENT_CENTER = 2;
private static final int TEXT_ALIGNMENT_END = 3;
private static final int TEXT_ALIGNMENT_LEFT = 4;
private static final int TEXT_ALIGNMENT_RIGHT = 5;
private static final int TEXT_ALIGNMENT_START = 1;
static {
HashMap hashMap = new HashMap();
hashMap.put("white", Integer.valueOf(Color.rgb(255, 255, 255)));
hashMap.put("lime", Integer.valueOf(Color.rgb(0, 255, 0)));
hashMap.put("cyan", Integer.valueOf(Color.rgb(0, 255, 255)));
hashMap.put("red", Integer.valueOf(Color.rgb(255, 0, 0)));
hashMap.put("yellow", Integer.valueOf(Color.rgb(255, 255, 0)));
hashMap.put("magenta", Integer.valueOf(Color.rgb(255, 0, 255)));
hashMap.put("blue", Integer.valueOf(Color.rgb(0, 0, 255)));
hashMap.put("black", Integer.valueOf(Color.rgb(0, 0, 0)));
DEFAULT_TEXT_COLORS = Collections.unmodifiableMap(hashMap);
HashMap hashMap2 = new HashMap();
hashMap2.put("bg_white", Integer.valueOf(Color.rgb(255, 255, 255)));
hashMap2.put("bg_lime", Integer.valueOf(Color.rgb(0, 255, 0)));
hashMap2.put("bg_cyan", Integer.valueOf(Color.rgb(0, 255, 255)));
hashMap2.put("bg_red", Integer.valueOf(Color.rgb(255, 0, 0)));
hashMap2.put("bg_yellow", Integer.valueOf(Color.rgb(255, 255, 0)));
hashMap2.put("bg_magenta", Integer.valueOf(Color.rgb(255, 0, 255)));
hashMap2.put("bg_blue", Integer.valueOf(Color.rgb(0, 0, 255)));
hashMap2.put("bg_black", Integer.valueOf(Color.rgb(0, 0, 0)));
DEFAULT_BACKGROUND_COLORS = Collections.unmodifiableMap(hashMap2);
}
public static WebvttCueInfo parseCue(ParsableByteArray parsableByteArray, List<WebvttCssStyle> list) {
String readLine = parsableByteArray.readLine();
if (readLine == null) {
return null;
}
Pattern pattern = CUE_HEADER_PATTERN;
Matcher matcher = pattern.matcher(readLine);
if (matcher.matches()) {
return parseCue((String) null, matcher, parsableByteArray, list);
}
String readLine2 = parsableByteArray.readLine();
if (readLine2 == null) {
return null;
}
Matcher matcher2 = pattern.matcher(readLine2);
if (matcher2.matches()) {
return parseCue(readLine.trim(), matcher2, parsableByteArray, list);
}
return null;
}
static Cue.Builder parseCueSettingsList(String str) {
WebvttCueInfoBuilder webvttCueInfoBuilder = new WebvttCueInfoBuilder();
parseCueSettingsList(str, webvttCueInfoBuilder);
return webvttCueInfoBuilder.toCueBuilder();
}
static Cue newCueForText(CharSequence charSequence) {
WebvttCueInfoBuilder webvttCueInfoBuilder = new WebvttCueInfoBuilder();
webvttCueInfoBuilder.text = charSequence;
return webvttCueInfoBuilder.toCueBuilder().build();
}
static SpannedString parseCueText(String str, String str2, List<WebvttCssStyle> list) {
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
ArrayDeque arrayDeque = new ArrayDeque();
ArrayList arrayList = new ArrayList();
int i = 0;
while (i < str2.length()) {
char charAt = str2.charAt(i);
if (charAt == '&') {
i++;
int indexOf = str2.indexOf(59, i);
int indexOf2 = str2.indexOf(32, i);
if (indexOf == -1) {
indexOf = indexOf2;
} else if (indexOf2 != -1) {
indexOf = Math.min(indexOf, indexOf2);
}
if (indexOf != -1) {
applyEntity(str2.substring(i, indexOf), spannableStringBuilder);
if (indexOf == indexOf2) {
spannableStringBuilder.append(" ");
}
i = indexOf + 1;
} else {
spannableStringBuilder.append(charAt);
}
} else if (charAt != '<') {
spannableStringBuilder.append(charAt);
i++;
} else {
int i2 = i + 1;
if (i2 < str2.length()) {
int i3 = 1;
boolean z = str2.charAt(i2) == '/';
i2 = findEndOfTag(str2, i2);
int i4 = i2 - 2;
boolean z2 = str2.charAt(i4) == '/';
if (z) {
i3 = 2;
}
int i5 = i + i3;
if (!z2) {
i4 = i2 - 1;
}
String substring = str2.substring(i5, i4);
if (!substring.trim().isEmpty()) {
String tagName = getTagName(substring);
if (isSupportedTag(tagName)) {
if (z) {
while (!arrayDeque.isEmpty()) {
StartTag startTag = (StartTag) arrayDeque.pop();
applySpansForTag(str, startTag, arrayList, spannableStringBuilder, list);
if (!arrayDeque.isEmpty()) {
arrayList.add(new Element(startTag, spannableStringBuilder.length()));
} else {
arrayList.clear();
}
if (startTag.name.equals(tagName)) {
break;
}
}
} else if (!z2) {
arrayDeque.push(StartTag.buildStartTag(substring, spannableStringBuilder.length()));
}
}
}
}
i = i2;
}
}
while (!arrayDeque.isEmpty()) {
applySpansForTag(str, (StartTag) arrayDeque.pop(), arrayList, spannableStringBuilder, list);
}
applySpansForTag(str, StartTag.buildWholeCueVirtualTag(), Collections.emptyList(), spannableStringBuilder, list);
return SpannedString.valueOf(spannableStringBuilder);
}
private static WebvttCueInfo parseCue(String str, Matcher matcher, ParsableByteArray parsableByteArray, List<WebvttCssStyle> list) {
WebvttCueInfoBuilder webvttCueInfoBuilder = new WebvttCueInfoBuilder();
try {
webvttCueInfoBuilder.startTimeUs = WebvttParserUtil.parseTimestampUs((String) Assertions.checkNotNull(matcher.group(1)));
webvttCueInfoBuilder.endTimeUs = WebvttParserUtil.parseTimestampUs((String) Assertions.checkNotNull(matcher.group(2)));
parseCueSettingsList((String) Assertions.checkNotNull(matcher.group(3)), webvttCueInfoBuilder);
StringBuilder sb = new StringBuilder();
String readLine = parsableByteArray.readLine();
while (!TextUtils.isEmpty(readLine)) {
if (sb.length() > 0) {
sb.append("\n");
}
sb.append(readLine.trim());
readLine = parsableByteArray.readLine();
}
webvttCueInfoBuilder.text = parseCueText(str, sb.toString(), list);
return webvttCueInfoBuilder.build();
} catch (NumberFormatException unused) {
Log.w(TAG, "Skipping cue with bad header: " + matcher.group());
return null;
}
}
private static void parseCueSettingsList(String str, WebvttCueInfoBuilder webvttCueInfoBuilder) {
Matcher matcher = CUE_SETTING_PATTERN.matcher(str);
while (matcher.find()) {
String str2 = (String) Assertions.checkNotNull(matcher.group(1));
String str3 = (String) Assertions.checkNotNull(matcher.group(2));
try {
if ("line".equals(str2)) {
parseLineAttribute(str3, webvttCueInfoBuilder);
} else if ("align".equals(str2)) {
webvttCueInfoBuilder.textAlignment = parseTextAlignment(str3);
} else if (ViewProps.POSITION.equals(str2)) {
parsePositionAttribute(str3, webvttCueInfoBuilder);
} else if ("size".equals(str2)) {
webvttCueInfoBuilder.size = WebvttParserUtil.parsePercentage(str3);
} else if ("vertical".equals(str2)) {
webvttCueInfoBuilder.verticalType = parseVerticalAttribute(str3);
} else {
Log.w(TAG, "Unknown cue setting " + str2 + ":" + str3);
}
} catch (NumberFormatException unused) {
Log.w(TAG, "Skipping bad cue setting: " + matcher.group());
}
}
}
private static void parseLineAttribute(String str, WebvttCueInfoBuilder webvttCueInfoBuilder) {
int indexOf = str.indexOf(44);
if (indexOf != -1) {
webvttCueInfoBuilder.lineAnchor = parseLineAnchor(str.substring(indexOf + 1));
str = str.substring(0, indexOf);
}
if (str.endsWith("%")) {
webvttCueInfoBuilder.line = WebvttParserUtil.parsePercentage(str);
webvttCueInfoBuilder.lineType = 0;
return;
}
webvttCueInfoBuilder.line = (float) Integer.parseInt(str);
webvttCueInfoBuilder.lineType = 1;
}
private static int parseLineAnchor(String str) {
str.hashCode();
char c = 65535;
switch (str.hashCode()) {
case -1364013995:
if (str.equals(TtmlNode.CENTER)) {
c = 0;
break;
}
break;
case -1074341483:
if (str.equals("middle")) {
c = 1;
break;
}
break;
case 100571:
if (str.equals("end")) {
c = 2;
break;
}
break;
case 109757538:
if (str.equals("start")) {
c = 3;
break;
}
break;
}
switch (c) {
case 0:
case 1:
return 1;
case 2:
return 2;
case 3:
return 0;
default:
Log.w(TAG, "Invalid anchor value: " + str);
return Integer.MIN_VALUE;
}
}
private static void parsePositionAttribute(String str, WebvttCueInfoBuilder webvttCueInfoBuilder) {
int indexOf = str.indexOf(44);
if (indexOf != -1) {
webvttCueInfoBuilder.positionAnchor = parsePositionAnchor(str.substring(indexOf + 1));
str = str.substring(0, indexOf);
}
webvttCueInfoBuilder.position = WebvttParserUtil.parsePercentage(str);
}
private static int parsePositionAnchor(String str) {
str.hashCode();
char c = 65535;
switch (str.hashCode()) {
case -1842484672:
if (str.equals("line-left")) {
c = 0;
break;
}
break;
case -1364013995:
if (str.equals(TtmlNode.CENTER)) {
c = 1;
break;
}
break;
case -1276788989:
if (str.equals("line-right")) {
c = 2;
break;
}
break;
case -1074341483:
if (str.equals("middle")) {
c = 3;
break;
}
break;
case 100571:
if (str.equals("end")) {
c = 4;
break;
}
break;
case 109757538:
if (str.equals("start")) {
c = 5;
break;
}
break;
}
switch (c) {
case 0:
case 5:
return 0;
case 1:
case 3:
return 1;
case 2:
case 4:
return 2;
default:
Log.w(TAG, "Invalid anchor value: " + str);
return Integer.MIN_VALUE;
}
}
private static int parseVerticalAttribute(String str) {
str.hashCode();
if (str.equals("lr")) {
return 2;
}
if (str.equals("rl")) {
return 1;
}
Log.w(TAG, "Invalid 'vertical' value: " + str);
return Integer.MIN_VALUE;
}
private static int parseTextAlignment(String str) {
str.hashCode();
char c = 65535;
switch (str.hashCode()) {
case -1364013995:
if (str.equals(TtmlNode.CENTER)) {
c = 0;
break;
}
break;
case -1074341483:
if (str.equals("middle")) {
c = 1;
break;
}
break;
case 100571:
if (str.equals("end")) {
c = 2;
break;
}
break;
case 3317767:
if (str.equals("left")) {
c = 3;
break;
}
break;
case 108511772:
if (str.equals("right")) {
c = 4;
break;
}
break;
case 109757538:
if (str.equals("start")) {
c = 5;
break;
}
break;
}
switch (c) {
case 0:
case 1:
return 2;
case 2:
return 3;
case 3:
return 4;
case 4:
return 5;
case 5:
return 1;
default:
Log.w(TAG, "Invalid alignment value: " + str);
return 2;
}
}
private static int findEndOfTag(String str, int i) {
int indexOf = str.indexOf(62, i);
return indexOf == -1 ? str.length() : indexOf + 1;
}
private static void applyEntity(String str, SpannableStringBuilder spannableStringBuilder) {
str.hashCode();
char c = 65535;
switch (str.hashCode()) {
case 3309:
if (str.equals(ENTITY_GREATER_THAN)) {
c = 0;
break;
}
break;
case 3464:
if (str.equals(ENTITY_LESS_THAN)) {
c = 1;
break;
}
break;
case 96708:
if (str.equals(ENTITY_AMPERSAND)) {
c = 2;
break;
}
break;
case 3374865:
if (str.equals(ENTITY_NON_BREAK_SPACE)) {
c = 3;
break;
}
break;
}
switch (c) {
case 0:
spannableStringBuilder.append('>');
return;
case 1:
spannableStringBuilder.append('<');
return;
case 2:
spannableStringBuilder.append('&');
return;
case 3:
spannableStringBuilder.append(CHAR_SPACE);
return;
default:
Log.w(TAG, "ignoring unsupported entity: '&" + str + ";'");
return;
}
}
private static boolean isSupportedTag(String str) {
str.hashCode();
char c = 65535;
switch (str.hashCode()) {
case 98:
if (str.equals(TAG_BOLD)) {
c = 0;
break;
}
break;
case 99:
if (str.equals(TAG_CLASS)) {
c = 1;
break;
}
break;
case 105:
if (str.equals("i")) {
c = 2;
break;
}
break;
case 117:
if (str.equals(TAG_UNDERLINE)) {
c = 3;
break;
}
break;
case 118:
if (str.equals(TAG_VOICE)) {
c = 4;
break;
}
break;
case 3650:
if (str.equals(TAG_RUBY_TEXT)) {
c = 5;
break;
}
break;
case 3314158:
if (str.equals(TAG_LANG)) {
c = 6;
break;
}
break;
case 3511770:
if (str.equals("ruby")) {
c = 7;
break;
}
break;
}
switch (c) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
return true;
default:
return false;
}
}
private static void applySpansForTag(String str, StartTag startTag, List<Element> list, SpannableStringBuilder spannableStringBuilder, List<WebvttCssStyle> list2) {
int i = startTag.position;
int length = spannableStringBuilder.length();
String str2 = startTag.name;
str2.hashCode();
char c = 65535;
switch (str2.hashCode()) {
case 0:
if (str2.equals("")) {
c = 0;
break;
}
break;
case 98:
if (str2.equals(TAG_BOLD)) {
c = 1;
break;
}
break;
case 99:
if (str2.equals(TAG_CLASS)) {
c = 2;
break;
}
break;
case 105:
if (str2.equals("i")) {
c = 3;
break;
}
break;
case 117:
if (str2.equals(TAG_UNDERLINE)) {
c = 4;
break;
}
break;
case 118:
if (str2.equals(TAG_VOICE)) {
c = 5;
break;
}
break;
case 3314158:
if (str2.equals(TAG_LANG)) {
c = 6;
break;
}
break;
case 3511770:
if (str2.equals("ruby")) {
c = 7;
break;
}
break;
}
switch (c) {
case 0:
case 5:
case 6:
break;
case 1:
spannableStringBuilder.setSpan(new StyleSpan(1), i, length, 33);
break;
case 2:
applyDefaultColors(spannableStringBuilder, startTag.classes, i, length);
break;
case 3:
spannableStringBuilder.setSpan(new StyleSpan(2), i, length, 33);
break;
case 4:
spannableStringBuilder.setSpan(new UnderlineSpan(), i, length, 33);
break;
case 7:
applyRubySpans(spannableStringBuilder, str, startTag, list, list2);
break;
default:
return;
}
List<StyleMatch> applicableStyles = getApplicableStyles(list2, str, startTag);
for (int i2 = 0; i2 < applicableStyles.size(); i2++) {
applyStyleToText(spannableStringBuilder, applicableStyles.get(i2).style, i, length);
}
}
private static void applyRubySpans(SpannableStringBuilder spannableStringBuilder, String str, StartTag startTag, List<Element> list, List<WebvttCssStyle> list2) {
int rubyPosition = getRubyPosition(list2, str, startTag);
ArrayList arrayList = new ArrayList(list.size());
arrayList.addAll(list);
Collections.sort(arrayList, Element.BY_START_POSITION_ASC);
int i = startTag.position;
int i2 = 0;
for (int i3 = 0; i3 < arrayList.size(); i3++) {
if (TAG_RUBY_TEXT.equals(((Element) arrayList.get(i3)).startTag.name)) {
Element element = (Element) arrayList.get(i3);
int firstKnownRubyPosition = firstKnownRubyPosition(getRubyPosition(list2, str, element.startTag), rubyPosition, 1);
int i4 = element.startTag.position - i2;
int access$300 = element.endPosition - i2;
CharSequence subSequence = spannableStringBuilder.subSequence(i4, access$300);
spannableStringBuilder.delete(i4, access$300);
spannableStringBuilder.setSpan(new RubySpan(subSequence.toString(), firstKnownRubyPosition), i, i4, 33);
i2 += subSequence.length();
i = i4;
}
}
}
private static int getRubyPosition(List<WebvttCssStyle> list, String str, StartTag startTag) {
List<StyleMatch> applicableStyles = getApplicableStyles(list, str, startTag);
for (int i = 0; i < applicableStyles.size(); i++) {
WebvttCssStyle webvttCssStyle = applicableStyles.get(i).style;
if (webvttCssStyle.getRubyPosition() != -1) {
return webvttCssStyle.getRubyPosition();
}
}
return -1;
}
private static int firstKnownRubyPosition(int i, int i2, int i3) {
if (i != -1) {
return i;
}
if (i2 != -1) {
return i2;
}
if (i3 != -1) {
return i3;
}
throw new IllegalArgumentException();
}
private static void applyDefaultColors(SpannableStringBuilder spannableStringBuilder, Set<String> set, int i, int i2) {
for (String next : set) {
Map<String, Integer> map = DEFAULT_TEXT_COLORS;
if (map.containsKey(next)) {
spannableStringBuilder.setSpan(new ForegroundColorSpan(map.get(next).intValue()), i, i2, 33);
} else {
Map<String, Integer> map2 = DEFAULT_BACKGROUND_COLORS;
if (map2.containsKey(next)) {
spannableStringBuilder.setSpan(new BackgroundColorSpan(map2.get(next).intValue()), i, i2, 33);
}
}
}
}
private static void applyStyleToText(SpannableStringBuilder spannableStringBuilder, WebvttCssStyle webvttCssStyle, int i, int i2) {
if (webvttCssStyle != null) {
if (webvttCssStyle.getStyle() != -1) {
SpanUtil.addOrReplaceSpan(spannableStringBuilder, new StyleSpan(webvttCssStyle.getStyle()), i, i2, 33);
}
if (webvttCssStyle.isLinethrough()) {
spannableStringBuilder.setSpan(new StrikethroughSpan(), i, i2, 33);
}
if (webvttCssStyle.isUnderline()) {
spannableStringBuilder.setSpan(new UnderlineSpan(), i, i2, 33);
}
if (webvttCssStyle.hasFontColor()) {
SpanUtil.addOrReplaceSpan(spannableStringBuilder, new ForegroundColorSpan(webvttCssStyle.getFontColor()), i, i2, 33);
}
if (webvttCssStyle.hasBackgroundColor()) {
SpanUtil.addOrReplaceSpan(spannableStringBuilder, new BackgroundColorSpan(webvttCssStyle.getBackgroundColor()), i, i2, 33);
}
if (webvttCssStyle.getFontFamily() != null) {
SpanUtil.addOrReplaceSpan(spannableStringBuilder, new TypefaceSpan(webvttCssStyle.getFontFamily()), i, i2, 33);
}
int fontSizeUnit = webvttCssStyle.getFontSizeUnit();
if (fontSizeUnit == 1) {
SpanUtil.addOrReplaceSpan(spannableStringBuilder, new AbsoluteSizeSpan((int) webvttCssStyle.getFontSize(), true), i, i2, 33);
} else if (fontSizeUnit == 2) {
SpanUtil.addOrReplaceSpan(spannableStringBuilder, new RelativeSizeSpan(webvttCssStyle.getFontSize()), i, i2, 33);
} else if (fontSizeUnit == 3) {
SpanUtil.addOrReplaceSpan(spannableStringBuilder, new RelativeSizeSpan(webvttCssStyle.getFontSize() / 100.0f), i, i2, 33);
}
if (webvttCssStyle.getCombineUpright()) {
spannableStringBuilder.setSpan(new HorizontalTextInVerticalContextSpan(), i, i2, 33);
}
}
}
private static String getTagName(String str) {
String trim = str.trim();
Assertions.checkArgument(!trim.isEmpty());
return Util.splitAtFirst(trim, "[ \\.]")[0];
}
private static List<StyleMatch> getApplicableStyles(List<WebvttCssStyle> list, String str, StartTag startTag) {
ArrayList arrayList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
WebvttCssStyle webvttCssStyle = list.get(i);
int specificityScore = webvttCssStyle.getSpecificityScore(str, startTag.name, startTag.classes, startTag.voice);
if (specificityScore > 0) {
arrayList.add(new StyleMatch(specificityScore, webvttCssStyle));
}
}
Collections.sort(arrayList);
return arrayList;
}
private static final class WebvttCueInfoBuilder {
public long endTimeUs = 0;
public float line = -3.4028235E38f;
public int lineAnchor = 0;
public int lineType = 1;
public float position = -3.4028235E38f;
public int positionAnchor = Integer.MIN_VALUE;
public float size = 1.0f;
public long startTimeUs = 0;
public CharSequence text;
public int textAlignment = 2;
public int verticalType = Integer.MIN_VALUE;
private static float computeLine(float f, int i) {
int i2 = (f > -3.4028235E38f ? 1 : (f == -3.4028235E38f ? 0 : -1));
if (i2 == 0 || i != 0 || (f >= 0.0f && f <= 1.0f)) {
return i2 != 0 ? f : i == 0 ? 1.0f : -3.4028235E38f;
}
return 1.0f;
}
private static float derivePosition(int i) {
if (i == 4) {
return 0.0f;
}
if (i != 5) {
return WebvttCueParser.DEFAULT_POSITION;
}
return 1.0f;
}
private static int derivePositionAnchor(int i) {
if (i == 1) {
return 0;
}
if (i == 3) {
return 2;
}
if (i != 4) {
return i != 5 ? 1 : 2;
}
return 0;
}
public WebvttCueInfo build() {
return new WebvttCueInfo(toCueBuilder().build(), this.startTimeUs, this.endTimeUs);
}
public Cue.Builder toCueBuilder() {
float f = this.position;
if (f == -3.4028235E38f) {
f = derivePosition(this.textAlignment);
}
int i = this.positionAnchor;
if (i == Integer.MIN_VALUE) {
i = derivePositionAnchor(this.textAlignment);
}
Cue.Builder verticalType2 = new Cue.Builder().setTextAlignment(convertTextAlignment(this.textAlignment)).setLine(computeLine(this.line, this.lineType), this.lineType).setLineAnchor(this.lineAnchor).setPosition(f).setPositionAnchor(i).setSize(Math.min(this.size, deriveMaxSize(i, f))).setVerticalType(this.verticalType);
CharSequence charSequence = this.text;
if (charSequence != null) {
verticalType2.setText(charSequence);
}
return verticalType2;
}
private static Layout.Alignment convertTextAlignment(int i) {
if (i != 1) {
if (i == 2) {
return Layout.Alignment.ALIGN_CENTER;
}
if (i != 3) {
if (i != 4) {
if (i != 5) {
Log.w(WebvttCueParser.TAG, "Unknown textAlignment: " + i);
return null;
}
}
}
return Layout.Alignment.ALIGN_OPPOSITE;
}
return Layout.Alignment.ALIGN_NORMAL;
}
private static float deriveMaxSize(int i, float f) {
if (i == 0) {
return 1.0f - f;
}
if (i == 1) {
return f <= WebvttCueParser.DEFAULT_POSITION ? f * 2.0f : (1.0f - f) * 2.0f;
}
if (i == 2) {
return f;
}
throw new IllegalStateException(String.valueOf(i));
}
}
private static final class StyleMatch implements Comparable<StyleMatch> {
public final int score;
public final WebvttCssStyle style;
public StyleMatch(int i, WebvttCssStyle webvttCssStyle) {
this.score = i;
this.style = webvttCssStyle;
}
public int compareTo(StyleMatch styleMatch) {
return Integer.compare(this.score, styleMatch.score);
}
}
private static final class StartTag {
public final Set<String> classes;
public final String name;
public final int position;
public final String voice;
private StartTag(String str, int i, String str2, Set<String> set) {
this.position = i;
this.name = str;
this.voice = str2;
this.classes = set;
}
public static StartTag buildStartTag(String str, int i) {
String str2;
String trim = str.trim();
Assertions.checkArgument(!trim.isEmpty());
int indexOf = trim.indexOf(" ");
if (indexOf == -1) {
str2 = "";
} else {
String trim2 = trim.substring(indexOf).trim();
trim = trim.substring(0, indexOf);
str2 = trim2;
}
String[] split = Util.split(trim, "\\.");
String str3 = split[0];
HashSet hashSet = new HashSet();
for (int i2 = 1; i2 < split.length; i2++) {
hashSet.add(split[i2]);
}
return new StartTag(str3, i, str2, hashSet);
}
public static StartTag buildWholeCueVirtualTag() {
return new StartTag("", 0, "", Collections.emptySet());
}
}
private static class Element {
/* access modifiers changed from: private */
public static final Comparator<Element> BY_START_POSITION_ASC = WebvttCueParser$Element$$ExternalSyntheticLambda0.INSTANCE;
/* access modifiers changed from: private */
public final int endPosition;
/* access modifiers changed from: private */
public final StartTag startTag;
private Element(StartTag startTag2, int i) {
this.startTag = startTag2;
this.endPosition = i;
}
}
}
Download file