Works
diff --git a/.gitignore b/.gitignore index a4b5251..3dc4fbf 100644 --- a/.gitignore +++ b/.gitignore
@@ -11,6 +11,7 @@ .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf +.idea/runConfigurations # Generated files .idea/**/contentModel.xml
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 601ecd9..9b5f4f6 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -12,12 +12,17 @@ <option name="composableFile" value="true" /> <option name="previewFile" value="true" /> </inspection_tool> + <inspection_tool class="PreviewApiLevelMustBeValid" enabled="true" level="ERROR" enabled_by_default="true"> + <option name="composableFile" value="true" /> + <option name="previewFile" value="true" /> + </inspection_tool> <inspection_tool class="PreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true"> <option name="composableFile" value="true" /> <option name="previewFile" value="true" /> </inspection_tool> <inspection_tool class="PreviewFontScaleMustBeGreaterThanZero" enabled="true" level="ERROR" enabled_by_default="true"> <option name="composableFile" value="true" /> + <option name="previewFile" value="true" /> </inspection_tool> <inspection_tool class="PreviewMultipleParameterProviders" enabled="true" level="ERROR" enabled_by_default="true"> <option name="composableFile" value="true" /> @@ -33,9 +38,11 @@ </inspection_tool> <inspection_tool class="PreviewNotSupportedInUnitTestFiles" enabled="true" level="ERROR" enabled_by_default="true"> <option name="composableFile" value="true" /> + <option name="previewFile" value="true" /> </inspection_tool> <inspection_tool class="PreviewPickerAnnotation" enabled="true" level="ERROR" enabled_by_default="true"> <option name="composableFile" value="true" /> + <option name="previewFile" value="true" /> </inspection_tool> <inspection_tool class="SameParameterValue" enabled="false" level="WARNING" enabled_by_default="false" /> <inspection_tool class="SwitchStatementWithTooFewBranches" enabled="false" level="WARNING" enabled_by_default="false">
diff --git a/After Effects Samples/Benchmark.aep b/After Effects Samples/Benchmark.aep new file mode 100644 index 0000000..e059a56 --- /dev/null +++ b/After Effects Samples/Benchmark.aep Binary files differ
diff --git a/app-benchmark/build.gradle b/app-benchmark/build.gradle new file mode 100755 index 0000000..a06f954 --- /dev/null +++ b/app-benchmark/build.gradle
@@ -0,0 +1,50 @@ +import static de.fayard.refreshVersions.core.Versions.versionFor + +plugins { + id 'com.android.application' + id "org.jetbrains.kotlin.android" + id 'androidx.baselineprofile' +} + +android { + namespace 'com.airbnb.lottie.benchmark.app' + compileSdk 34 + defaultConfig { + applicationId "com.airbnb.lottie.benchmark.app" + minSdk 21 + targetSdk 34 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + signingConfig signingConfigs.debug + debuggable false + proguardFiles("proguard-rules.pro") + } + create("benchmark") { + initWith(release) + signingConfig = signingConfigs.getByName("debug") + } + } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler) + } +} + +dependencies { + implementation project(':lottie-compose') + implementation libs.androidx.appcompat + implementation libs.androidx.activity.compose + implementation platform(libs.compose.bom) + implementation libs.compose.ui + implementation libs.compose.material + implementation libs.compose.material.icons.extended + implementation libs.compose.ui.tooling + // Need this to side load a Baseline Profile when Benchmarking + implementation libs.profileinstaller +}
diff --git a/app-benchmark/proguard-rules.pro b/app-benchmark/proguard-rules.pro new file mode 100644 index 0000000..7ca8254 --- /dev/null +++ b/app-benchmark/proguard-rules.pro
@@ -0,0 +1,7 @@ +# Proguard rules that are applied to your test apk/code. +-dontoptimize +-dontobfuscate +-dontshrink +-ignorewarnings +-dontwarn * +-dontnote *
diff --git a/app-benchmark/src/main/AndroidManifest.xml b/app-benchmark/src/main/AndroidManifest.xml new file mode 100755 index 0000000..dcb38f3 --- /dev/null +++ b/app-benchmark/src/main/AndroidManifest.xml
@@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> + + <application + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:theme="@style/Theme.AppCompat.Light.NoActionBar"> + <profileable android:shell="true" /> + + <activity + android:name=".BenchmarkActivity" + android:exported="true"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> +</manifest>
diff --git a/app-benchmark/src/main/kotlin/com/airbnb/lottie/benchmark/app/BenchmarkActivity.kt b/app-benchmark/src/main/kotlin/com/airbnb/lottie/benchmark/app/BenchmarkActivity.kt new file mode 100644 index 0000000..9529885 --- /dev/null +++ b/app-benchmark/src/main/kotlin/com/airbnb/lottie/benchmark/app/BenchmarkActivity.kt
@@ -0,0 +1,28 @@ +package com.airbnb.lottie.benchmark.app + +import android.os.Bundle +import androidx.activity.compose.setContent +import androidx.appcompat.app.AppCompatActivity +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import com.airbnb.lottie.compose.LottieAnimation +import com.airbnb.lottie.compose.LottieCompositionSpec +import com.airbnb.lottie.compose.LottieConstants +import com.airbnb.lottie.compose.animateLottieCompositionAsState +import com.airbnb.lottie.compose.rememberLottieComposition + +class BenchmarkActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + Content() + } + } + + @Composable + fun Content() { + val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.benchmark)) + val progress by animateLottieCompositionAsState(composition, iterations = LottieConstants.IterateForever) + LottieAnimation(composition, { progress }) + } +}
diff --git a/app-benchmark/src/main/res/mipmap-hdpi/ic_launcher.png b/app-benchmark/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100755 index 0000000..898f3ed --- /dev/null +++ b/app-benchmark/src/main/res/mipmap-hdpi/ic_launcher.png Binary files differ
diff --git a/app-benchmark/src/main/res/mipmap-mdpi/ic_launcher.png b/app-benchmark/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100755 index 0000000..64ba76f --- /dev/null +++ b/app-benchmark/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differ
diff --git a/app-benchmark/src/main/res/mipmap-xhdpi/ic_launcher.png b/app-benchmark/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100755 index 0000000..e5ed465 --- /dev/null +++ b/app-benchmark/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differ
diff --git a/app-benchmark/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app-benchmark/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100755 index 0000000..b0907ca --- /dev/null +++ b/app-benchmark/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differ
diff --git a/app-benchmark/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app-benchmark/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100755 index 0000000..2c18de9 --- /dev/null +++ b/app-benchmark/src/main/res/mipmap-xxxhdpi/ic_launcher.png Binary files differ
diff --git a/app-benchmark/src/main/res/raw/benchmark.json b/app-benchmark/src/main/res/raw/benchmark.json new file mode 100644 index 0000000..8ab630b --- /dev/null +++ b/app-benchmark/src/main/res/raw/benchmark.json
@@ -0,0 +1 @@ +{"v":"5.10.2","fr":60,"ip":0,"op":60,"w":400,"h":400,"nm":"Benchmark","ddd":0,"assets":[{"id":"image_0","w":80,"h":80,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAF8klEQVR4nO2ca6gUZRjHf8+e3ZnxqKWB2IUQ6oNiH7qIGZUXJKhMU7tKUJEoRdKHLnQhwuiDaPVRKyqV/FKJWWIpGAhSQtgpi1LRJCIqKsGCTOed3ZmnD3sU252dM7s7M3vGMz84LLyX5/3v/8zMe52FgoKCgoKCgoJcIkkFUrAol6dTLk9F9QpEJgI+8CNBcAj4RjzvUFLtRWoZNepSfH8aMAWYQqnkoPoXcBCRQ7jugMDfSbTVlYE6ZswEPG85IjcC1wATh6jyHar7Edkixmzvpu0mLZXKdEqlB1G9GpHrgFJE8X+AL4EBYIMYc7jTdjsyUPv7L8b3XwSWAGM7a1n2obpJjFnXUf3TWixrISIPA7d2EWYrQbBGqtV97VZs20C1rJWIPAWMabduC/YSBE+0K15Hj55IrbYOuDMhHQBvY8yjAtW4FWIbqDAWx9mK6k2daRuqAX1OPG91rKKWdRcibwHjUlBylCC4R6rV/XEKxzJQ4RJsey8ik1DtTl4068WYZZFaLOtpRNakKQKRGrXazVKr7R6y6FAFFM7DcQ4Cl6Rs3qAieV9cd0moFsd5AdWXMtBQ//T96VKtDkQVjeqp6ljWLrIyD0D1XrXtN5qSK5VHMjGvrqH+WSrtVjg/qmikgdrfvxKYkZl5pxF5WG17xRkdlcp19PW9nqmG+ncei+O8F1Ws5S2sMAnb/ilZVW1iTL/AKXWc48D4zP+Rp6nV5onv7wzLKresZFmvpiYoLqNGbVY4gmrvzAMol9fi+5eHZYVegQoXYtu/AH2pCssLIlCtLhLf39aYFf4MtKzHESnMO5tyeXlYcqtOZFZPb5nhRt2LGxQqjVlNBiqMR2RaFrpyxjhs+5bGxOYr0LJmE+J0AQBzGhPCbuEr09eRU0QuakxqNlDk0jNTmYL/o9q0AhVm4JiiA2mJ1Zgw9Fy4IJJmA4Mg9mLiCMRvTAi7hU9kIiWfeI0JYQb+mYmUPCLyb2NSs4Gqv2ciJo+onmpMCutEjmYgJX+IhF5czQb29R3IRFA+afKmyUA5efI34EgmcvKEKpRKXzQmtxoH/pCynDxyWFz3p8bEcANVDxXTubOoP/8OhmW1ugI3FdO5BkT2hCa3Kq+WdYBSaWphJAAuxkwQaJpkRM2Ft6QoKD/UH2W7wsyD6G3Nsdj2McBOSVp+8P1ZUqt9FpbV8gqU+hm6d0Z0Z1LvPL5sZR4McTZG6/sAx4jaPz7X8f2ZUqt93io7cj1w8Bjss4mLyg8fRJkHcY+32fZX1I/wjiROYMxEgZNRheKtSBuzAJGRM54RAd+/YyjzIKaBAr8RBItHUIeySmq1T+MUjL0nIp63jSBYOQJM3Cqu+3zcwu0fMrftNxFZfs7NUOpDlr1izI1tVeukLbWsDYg81EndYYvIPlz3BoFaW9U6bU8dZzOqd3daf5ixH2NmtZquRdHxvrC47j2IvNtp/WGDyADGzOzEPOhyY11c9z5gfY47lj247kyBpt22uHR9MkGMWYbqK93GyRzVbWLMHAG3mzCJHO0QY55G9ZkkYmWC6kbxvEVJhErsbIx43suo3p9UvNQQWSWetzSxcEkFOo06zlxUdzAc1xGDYIVUq68lGTKVp7/a9mTgEyD01YAe4AOLxJiPkw6cWvepcAGOsxPVa9NqIyZ/EATzpFr9Oo3gqZ0PFDgurjsD1Y/SaiMG31IqTUvLPMjggKV43mJgbdrthLADY66VU6d+TbORTE6oijGPZTzMWS/G3CYh5/mSJtMphFrW3YhsTrcRXSmel81rsWRsIICWy9fT1/cJabyuHwRLpVrdmHjcCHoyiVXHuWxwrDg5oZAucLsYE2sVOUl6tgow+FMCH6I6t8tQP6N6m3je94kIa5OeL6OobW8H5ndY/eDgUtTxJDW1Q8/fExFjFqDayXPrM4y5qpfmDSvUcVarbWvMv14OzocvattPDmmeZa3vtc5hjVYqD0QYmL+F216glrUw5MqLvVdbAGi5PPssAx/ttZ5corY9/+wf4CkoKCgoKCgoKEiM/wDSaB3QR6Qn0wAAAABJRU5ErkJggg==","e":1}],"fonts":{"list":[{"fName":"Helvetica","fFamily":"Helvetica","fStyle":"Regular","ascent":72.8994140625}]},"layers":[{"ddd":0,"ind":1,"ty":5,"nm":"Benchmark","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,57,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"t":{"d":{"k":[{"s":{"s":72,"f":"Helvetica","t":"Benchmark","ca":0,"j":2,"tr":0,"lh":112,"ls":0,"fc":[0,0,0],"sc":[1,0,0],"sw":1,"of":true},"t":0}]},"p":{},"m":{"g":1,"a":{"a":0,"k":[0,0],"ix":2}},"a":[]},"ip":0,"op":60,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[233,170,0],"to":[-11.167,11,0],"ti":[11.167,-11,0]},{"t":59,"s":[166,236,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[332.711,332.711],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0.355,0.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 1","parent":2,"tt":1,"tp":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[5]},{"t":59,"s":[6]}],"ix":3},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[0,0],"to":[0.833,1.333],"ti":[-0.833,-1.333]},{"t":59,"s":[5,8]}],"ix":4},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[187.839]},{"t":59,"s":[204.839]}],"ix":5},"ir":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[54.99]},{"t":59,"s":[61.99]}],"ix":6},"is":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":59,"s":[5]}],"ix":8},"or":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[109.981]},{"t":59,"s":[123.981]}],"ix":7},"os":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":59,"s":[40]}],"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[104.031,-124.953],"to":[-36.333,40.167],"ti":[36.333,-40.167]},{"t":59,"s":[-113.969,116.047]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[67.556,62.26],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":5,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":0,"k":74.562,"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"rp","c":{"a":0,"k":3,"ix":1},"o":{"a":0,"k":0,"ix":2},"m":1,"ix":4,"tr":{"ty":"tr","p":{"a":0,"k":[100,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":4},"so":{"a":0,"k":100,"ix":5},"eo":{"a":0,"k":100,"ix":6},"nm":"Transform"},"nm":"Repeater 1","mn":"ADBE Vector Filter - Repeater","hd":false},{"ty":"tr","p":{"a":0,"k":[-124.641,3.805],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[89.898,89.898],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-9.051,-127.051],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[101.414,91.422],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-135.293,-134.289],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":60,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"Heart-80.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[352,357,0],"ix":2,"l":2},"a":{"a":0,"k":[40,40,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":1,"nm":"Yellow Solid 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[200,200,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"sw":400,"sh":400,"sc":"#ffe100","ip":0,"op":60,"st":0,"bm":0}],"markers":[],"chars":[{"ch":"B","size":72,"style":"Regular","w":66.7,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.171,-0.911],[0,-4.688],[3.618,-1.79],[4.144,0]],"o":[[0,0],[0,0],[4.276,0],[3.848,1.628],[0,4.655],[-2.303,1.14],[0,0]],"v":[[16.895,-41.406],[16.895,-63.623],[34.41,-63.623],[44.081,-62.256],[49.854,-52.783],[44.426,-43.115],[34.756,-41.406]],"c":true},"ix":2},"nm":"B","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.498,-1.009],[0,-5.208],[1.61,-2.18],[6.013,0]],"o":[[0,0],[0,0],[4.108,0],[4.699,1.888],[0,3.093],[-2.563,3.451],[0,0]],"v":[[16.895,-8.301],[16.895,-33.545],[36.364,-33.545],[46.272,-32.031],[53.32,-21.387],[50.905,-13.477],[38.04,-8.301]],"c":true},"ix":2},"nm":"B","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-4.356,5.599],[0,4.623],[3.223,3.125],[3.678,1.4],[-1.335,1.53],[0,4.525],[2.097,2.962],[8.453,0],[0,0]],"o":[[0,0],[9.498,0],[2.914,-3.743],[0,-5.501],[-1.823,-1.758],[2.506,-1.27],[2.571,-2.897],[0,-3.873],[-3.572,-5.013],[0,0],[0,0]],"v":[[7.373,0],[37.883,0],[58.665,-8.398],[63.037,-20.947],[58.203,-33.887],[49.951,-38.623],[55.713,-42.822],[59.57,-53.955],[56.425,-64.209],[38.387,-71.729],[7.373,-71.729]],"c":true},"ix":2},"nm":"B","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"B","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"e","size":72,"style":"Regular","w":55.62,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.688,0],[4.529,-5.241],[0,-8.398],[-4.497,-4.736],[-6.47,0],[-2.1,0.52],[-2.65,2.605],[-1.286,2.361],[-0.228,1.921],[0,0],[1.518,-1.765],[4.554,0],[2.325,3.215],[0.162,5.321],[0,0],[0.517,2.409],[1.747,2.637],[3.461,1.742]],"o":[[-7.312,0],[-4.53,5.241],[0,8.529],[4.497,4.736],[2.649,0],[3.909,-0.912],[1.582,-1.497],[1.286,-2.36],[0,0],[-0.633,2.322],[-2.713,3.041],[-4.877,0],[-2.325,-3.215],[0,0],[0,-5.273],[-0.583,-3.516],[-1.812,-2.766],[-3.462,-1.741]],"v":[[28.022,-53.467],[10.261,-45.605],[3.467,-25.146],[10.211,-5.249],[26.661,1.855],[33.784,1.074],[43.622,-4.199],[47.925,-9.985],[50.195,-16.406],[41.553,-16.406],[38.326,-10.275],[27.425,-5.713],[16.621,-10.535],[12.891,-23.34],[50.928,-23.34],[50.151,-34.863],[46.657,-44.092],[38.747,-50.854]],"c":true},"ix":2},"nm":"e","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-2.711,2.914],[-4.002,0],[-2.389,-4.231],[-0.356,-3.809]],"o":[[0.161,-4.492],[2.711,-2.913],[5.584,0],[1.291,2.279],[0,0]],"v":[[13.086,-30.322],[17.395,-41.431],[27.466,-45.801],[39.425,-39.453],[41.895,-30.322]],"c":true},"ix":2},"nm":"e","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"e","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"n","size":72,"style":"Regular","w":55.62,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-0.439,1.839],[-1.465,1.726],[-2.409,0.716],[-2.084,0],[-1.562,-3.255],[0,-3.19],[0,0],[0,0],[0,0],[1.432,2.832],[7.422,0],[2.766,-1.334],[2.473,-3.059],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-3.418],[0.439,-1.839],[1.823,-2.148],[1.334,-0.423],[4.102,0],[0.944,1.953],[0,0],[0,0],[0,0],[0,-5.273],[-2.605,-5.176],[-3.386,0],[-2.767,1.335],[0,0],[0,0],[0,0]],"v":[[6.445,0],[15.234,0],[15.234,-27.393],[15.894,-35.278],[18.75,-40.625],[25.098,-44.922],[30.225,-45.557],[38.721,-40.674],[40.137,-32.959],[40.137,0],[49.072,0],[49.072,-33.545],[46.924,-45.703],[31.885,-53.467],[22.656,-51.465],[14.795,-44.873],[14.795,-52.295],[6.445,-52.295]],"c":true},"ix":2},"nm":"n","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"n","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"c","size":72,"style":"Regular","w":50,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.891,0],[4.459,-5.11],[0,-9.18],[-4.07,-4.996],[-6.836,0],[-3.906,3.207],[-0.977,6.934],[0,0],[2.132,-2.221],[3.645,0],[2.213,3.577],[0,5.235],[-1.562,3.544],[-5.599,0],[-1.855,-2.132],[-0.521,-3.223],[0,0],[3.694,2.865]],"o":[[-6.902,0],[-4.46,5.111],[0,7.487],[4.069,4.997],[6.087,0],[3.906,-3.206],[0,0],[-0.814,3.859],[-2.132,2.222],[-4.753,0],[-2.214,-3.577],[0,-5.202],[2.409,-5.462],[4.102,0],[1.855,2.132],[0,0],[-0.749,-6.998],[-3.695,-2.864]],"v":[[26.611,-53.809],[9.57,-46.143],[2.881,-24.707],[8.984,-5.981],[25.342,1.514],[40.332,-3.296],[47.656,-18.506],[39.111,-18.506],[34.692,-9.386],[26.025,-6.055],[15.576,-11.419],[12.256,-24.635],[14.6,-37.754],[26.611,-45.947],[35.547,-42.749],[39.111,-34.717],[47.656,-34.717],[40.991,-49.512]],"c":true},"ix":2},"nm":"c","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"c","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"h","size":72,"style":"Regular","w":55.62,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.962,2.507],[-3.646,0],[-1.595,-2.864],[0,-3.841],[0,0],[0,0],[0,0],[1.465,2.898],[7.584,0],[2.832,-1.855],[2.083,-2.637],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-6.966],[2.962,-2.506],[4.395,0],[0.977,1.791],[0,0],[0,0],[0,0],[0,-5.143],[-2.702,-5.305],[-4.232,0],[-1.66,1.074],[0,0],[0,0],[0,0]],"v":[[6.445,0],[15.234,0],[15.234,-27.734],[19.678,-41.943],[29.59,-45.703],[38.574,-41.406],[40.039,-32.959],[40.039,0],[49.072,0],[49.072,-33.545],[46.875,-45.605],[31.445,-53.564],[20.85,-50.781],[15.234,-45.215],[15.234,-71.973],[6.445,-71.973]],"c":true},"ix":2},"nm":"h","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"h","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"m","size":72,"style":"Regular","w":83.3,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.718,2.572],[-3.32,0],[-1.335,-2.441],[0,-3.548],[0,0],[0,0],[0,0],[-2.49,2.312],[-3.451,0],[-1.742,-1.302],[0,-3.483],[0,0],[0,0],[0,0],[1.367,2.734],[7.031,0],[2.637,-1.35],[1.953,-2.799],[1.432,1.172],[4.166,0],[2.897,-1.985],[2.083,-2.571],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-6.738],[2.718,-2.571],[3.645,0],[0.846,1.628],[0,0],[0,0],[0,0],[0,-5.403],[2.49,-2.311],[2.506,0],[1.741,1.302],[0,0],[0,0],[0,0],[0,-4.622],[-2.539,-5.078],[-3.288,0],[-2.637,1.351],[-1.172,-2.278],[-2.539,-2.051],[-3.679,0],[-1.693,1.172],[0,0],[0,0],[0,0]],"v":[[6.445,0],[15.234,0],[15.234,-27.734],[19.312,-41.699],[28.369,-45.557],[35.84,-41.895],[37.109,-34.131],[37.109,0],[46.045,0],[46.045,-30.42],[49.78,-41.992],[58.691,-45.459],[65.063,-43.506],[67.676,-36.328],[67.676,0],[76.807,0],[76.807,-34.814],[74.756,-45.85],[60.4,-53.467],[51.514,-51.44],[44.629,-45.215],[40.723,-50.391],[30.664,-53.467],[20.801,-50.488],[15.137,-44.873],[15.137,-52.295],[6.445,-52.295]],"c":true},"ix":2},"nm":"m","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"m","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"a","size":72,"style":"Regular","w":55.62,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,2.533],[-2.718,1.527],[-3.184,0.423],[0,0],[-1.689,0.458],[-1.073,0.686],[0,0],[4.883,-2.373],[3.092,0],[1.855,1.462]],"o":[[0,-3.345],[1.604,-0.909],[0,0],[1.624,-0.195],[1.689,-0.457],[0,0],[0,5.396],[-2.898,1.43],[-2.539,0],[-1.855,-1.462]],"v":[[13.184,-13.897],[17.261,-21.204],[24.443,-23.203],[29.755,-23.885],[34.725,-24.863],[38.867,-26.578],[38.867,-19.509],[31.543,-7.858],[22.559,-5.713],[15.967,-7.905]],"c":true},"ix":2},"nm":"a","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[3.027,-2.666],[0,-4.844],[-3.076,-2.942],[-4.851,0],[-3.353,1.724],[-1.791,2.344],[-0.716,-1.139],[-3.027,0],[-0.716,0.098],[-1.367,0.391],[0,0],[0.488,-0.049],[0.391,0],[0.374,0.552],[0,0.912],[0,0],[3.804,2.344],[6.145,0],[4.015,-2.53],[0.163,-6.464],[0,0],[-1.072,1.375],[-4.581,0],[-2.128,-1.356],[0,-3.006],[0.39,-0.784],[2.018,-0.259]],"o":[[-4.916,0.618],[-3.027,2.666],[0,4.422],[3.076,2.942],[4.036,0],[3.352,-1.725],[0.293,2.083],[1.367,2.148],[1.237,0],[0.716,-0.098],[0,0],[-0.554,0.098],[-0.488,0.049],[-1.205,0],[-0.375,-0.552],[0,0],[0,-4.948],[-3.837,-2.344],[-5.299,0],[-4.015,2.53],[0,0],[0.325,-2.715],[1.917,-2.486],[3.963,0],[2.128,1.357],[0,1.471],[-0.684,1.43],[0,0]],"v":[[20.459,-29.893],[8.545,-24.966],[4.004,-13.702],[8.618,-2.656],[20.508,1.758],[31.592,-0.829],[39.307,-6.932],[40.82,-2.099],[47.412,1.123],[50.342,0.977],[53.467,0.244],[53.467,-6.249],[51.904,-6.03],[50.586,-5.957],[48.218,-6.786],[47.656,-8.982],[47.656,-39.111],[41.95,-50.049],[26.978,-53.564],[13.005,-49.77],[6.738,-36.279],[14.941,-36.279],[17.036,-42.413],[26.783,-46.143],[35.919,-44.109],[39.111,-37.565],[38.526,-34.183],[34.473,-31.648]],"c":true},"ix":2},"nm":"a","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"a","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"r","size":72,"style":"Regular","w":33.3,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.377,2.849],[-4.427,0],[-0.439,-0.032],[-0.521,-0.098],[0,0],[0.391,0.033],[0.163,0],[2.669,-2.522],[0.684,-1.758],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-3.711],[2.376,-2.848],[0.52,0],[0.439,0.033],[0,0],[-0.945,-0.098],[-0.391,-0.032],[-3.484,0],[-2.67,2.523],[0,0],[0,0],[0,0]],"v":[[6.689,0],[15.479,0],[15.479,-30.078],[19.043,-39.917],[29.248,-44.189],[30.688,-44.141],[32.129,-43.945],[32.129,-53.223],[30.127,-53.418],[29.297,-53.467],[20.068,-49.683],[15.039,-43.262],[15.039,-52.295],[6.689,-52.295]],"c":true},"ix":2},"nm":"r","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"r","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"},{"ch":"k","size":72,"style":"Regular","w":50,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.25,0],[14.697,0],[14.697,-19.629],[21.914,-26.611],[38.362,0],[49.59,0],[28.364,-32.851],[48.463,-52.295],[37.235,-52.295],[14.697,-30.083],[14.697,-71.729],[6.25,-71.729]],"c":true},"ix":2},"nm":"k","mn":"ADBE Vector Shape - Group","hd":false}],"nm":"k","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}]},"fFamily":"Helvetica"}]} \ No newline at end of file
diff --git a/app-benchmark/src/main/res/values/strings.xml b/app-benchmark/src/main/res/values/strings.xml new file mode 100755 index 0000000..1ec0afc --- /dev/null +++ b/app-benchmark/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@ +<resources> + <string name="app_name">Lottie Benchmark</string> +</resources>
diff --git a/baselineprofile/.gitignore b/baselineprofile/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/baselineprofile/.gitignore
@@ -0,0 +1 @@ +/build \ No newline at end of file
diff --git a/baselineprofile/build.gradle b/baselineprofile/build.gradle new file mode 100644 index 0000000..bd34c21 --- /dev/null +++ b/baselineprofile/build.gradle
@@ -0,0 +1,43 @@ +import com.android.build.api.dsl.ManagedVirtualDevice + +plugins { + id 'com.android.test' + id 'org.jetbrains.kotlin.android' + id 'androidx.baselineprofile' +} + +android { + namespace 'com.airbnb.lottie.baselineprofile' + compileSdk 34 + + defaultConfig { + minSdk 28 + targetSdk 34 + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR" + } + + targetProjectPath = ":app-benchmark" + + testOptions.managedDevices.devices { + pixel6Api34(ManagedVirtualDevice) { + device = "Pixel 6" + apiLevel = 34 + systemImageSource = "google" + } + } +} + +baselineProfile { + managedDevices += "pixel6Api34" + useConnectedDevices = false +} + +dependencies { + implementation libs.okio + implementation libs.androidx.test.junit + implementation libs.androidx.test.espresso + implementation libs.androidx.test.uiautomator + implementation libs.androidx.test.macrobenchmark +}
diff --git a/baselineprofile/src/main/AndroidManifest.xml b/baselineprofile/src/main/AndroidManifest.xml new file mode 100644 index 0000000..227314e --- /dev/null +++ b/baselineprofile/src/main/AndroidManifest.xml
@@ -0,0 +1 @@ +<manifest /> \ No newline at end of file
diff --git a/baselineprofile/src/main/java/com/airbnb/lottie/baselineprofile/BaselineProfileGenerator.kt b/baselineprofile/src/main/java/com/airbnb/lottie/baselineprofile/BaselineProfileGenerator.kt new file mode 100644 index 0000000..8c35830 --- /dev/null +++ b/baselineprofile/src/main/java/com/airbnb/lottie/baselineprofile/BaselineProfileGenerator.kt
@@ -0,0 +1,32 @@ +package com.airbnb.lottie.baselineprofile + +import androidx.benchmark.macro.junit4.BaselineProfileRule +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +/** + * You can run the generator with the Generate Baseline Profile gradle task. + * ``` + * ./gradlew :lottie(-compose):generateReleaseBaselineProfile -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile + * ``` + * + * After you run the generator, you can verify the improvements running the [StartupBenchmarks] benchmark. + **/ +@RunWith(AndroidJUnit4::class) +@LargeTest +class BaselineProfileGenerator { + + @get:Rule + val rule = BaselineProfileRule() + + @Test + fun generate() { + rule.collect("com.airbnb.lottie.benchmark.app") { + pressHome() + startActivityAndWait() + } + } +}
diff --git a/baselineprofile/src/main/java/com/airbnb/lottie/baselineprofile/StartupBenchmarks.kt b/baselineprofile/src/main/java/com/airbnb/lottie/baselineprofile/StartupBenchmarks.kt new file mode 100644 index 0000000..41a2d29 --- /dev/null +++ b/baselineprofile/src/main/java/com/airbnb/lottie/baselineprofile/StartupBenchmarks.kt
@@ -0,0 +1,78 @@ +package com.airbnb.lottie.baselineprofile + +import androidx.benchmark.macro.BaselineProfileMode +import androidx.benchmark.macro.CompilationMode +import androidx.benchmark.macro.StartupMode +import androidx.benchmark.macro.StartupTimingMetric +import androidx.benchmark.macro.junit4.MacrobenchmarkRule +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +/** + * This test class benchmarks the speed of app startup. + * Run this benchmark to verify how effective a Baseline Profile is. + * It does this by comparing [CompilationMode.None], which represents the app with no Baseline + * Profiles optimizations, and [CompilationMode.Partial], which uses Baseline Profiles. + * + * Run this benchmark to see startup measurements and captured system traces for verifying + * the effectiveness of your Baseline Profiles. You can run it directly from Android + * Studio as an instrumentation test, or run all benchmarks with this Gradle task: + * ``` + * ./gradlew :baselineprofile:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=Macrobenchmark + * ``` + * + * You should run the benchmarks on a physical device, not an Android emulator, because the + * emulator doesn't represent real world performance and shares system resources with its host. + * + * For more information, see the [Macrobenchmark documentation](https://d.android.com/macrobenchmark#create-macrobenchmark) + * and the [instrumentation arguments documentation](https://d.android.com/topic/performance/benchmarking/macrobenchmark-instrumentation-args). + * + * Note that the performance impact of this test is only tangentially related to the impact of the baseline profile for Lottie. + * The benefit of the baseline profile for Lottie is less about startup time and more about time spent running the hot path + * of the Lottie rendering code. + * + * Ideally, this test would be updated to reflect that rather than just startup time but that's a task for another time… + **/ +@RunWith(AndroidJUnit4::class) +@LargeTest +class StartupBenchmarks { + + @get:Rule + val rule = MacrobenchmarkRule() + + @Test + fun startupCompilationNone() = + benchmark(CompilationMode.None()) + + @Test + fun startupCompilationBaselineProfiles() = + benchmark(CompilationMode.Partial(BaselineProfileMode.Require)) + + private fun benchmark(compilationMode: CompilationMode) { + rule.measureRepeated( + packageName = "com.airbnb.lottie.benchmark.app", + metrics = listOf(StartupTimingMetric()), + compilationMode = compilationMode, + startupMode = StartupMode.COLD, + iterations = 10, + setupBlock = { + pressHome() + }, + measureBlock = { + startActivityAndWait() + + // TODO Add interactions to wait for when your app is fully drawn. + // The app is fully drawn when Activity.reportFullyDrawn is called. + // For Jetpack Compose, you can use ReportDrawn, ReportDrawnWhen and ReportDrawnAfter + // from the AndroidX Activity library. + + // Check the UiAutomator documentation for more information on how to + // interact with the app. + // https://d.android.com/training/testing/other-components/ui-automator + } + ) + } +}
diff --git a/benchmark/build.gradle b/benchmark/build.gradle new file mode 100644 index 0000000..7d00c7d --- /dev/null +++ b/benchmark/build.gradle
@@ -0,0 +1,62 @@ +plugins { + id 'com.android.test' + id 'org.jetbrains.kotlin.android' + id 'androidx.baselineprofile' +} + +android { + namespace 'com.airbnb.lottie.benchmark' + compileSdk 34 + + kotlinOptions { + freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn" + } + + defaultConfig { + minSdk 30 + targetSdk 34 + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + debuggable = true + signingConfig = debug.signingConfig + } + } + + targetProjectPath = ":app-benchmark" + experimentalProperties["android.experimental.self-instrumenting"] = true + + testOptions.managedDevices.devices { + pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) { + device = "Pixel 6" + apiLevel = 31 + systemImageSource = "aosp" + } + } +} + +baselineProfile { + managedDevices += "pixel6Api31" + + // Enables using connected devices to generate profiles. The default is + // `true`. When using connected devices, they must be rooted or API 33 and + // higher. + useConnectedDevices = false +} + +dependencies { + implementation libs.androidx.test.junit + implementation libs.androidx.test.espresso + implementation libs.androidx.test.uiautomator + implementation libs.androidx.test.macrobenchmark + implementation libs.compose.ui.test.junit +} + +//androidComponents { +// beforeVariants(selector().all()) { +// enabled = buildType == "release" +// } +//}
diff --git a/sample-compose-benchmark/src/main/AndroidManifest.xml b/benchmark/src/main/AndroidManifest.xml similarity index 82% rename from sample-compose-benchmark/src/main/AndroidManifest.xml rename to benchmark/src/main/AndroidManifest.xml index 16687da..2dbdaab 100644 --- a/sample-compose-benchmark/src/main/AndroidManifest.xml +++ b/benchmark/src/main/AndroidManifest.xml
@@ -3,9 +3,9 @@ xmlns:tools="http://schemas.android.com/tools"> <queries> - <package android:name="com.airbnb.lottie.sample.compose" /> + <package android:name="com.airbnb.lottie.benchmark.app" /> </queries> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> -</manifest> \ No newline at end of file +</manifest>
diff --git a/sample-compose-benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineBenchmark.kt b/benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineBenchmark.kt similarity index 100% rename from sample-compose-benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineBenchmark.kt rename to benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineBenchmark.kt
diff --git a/benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineProfiles.kt b/benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineProfiles.kt new file mode 100644 index 0000000..c246cb3 --- /dev/null +++ b/benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineProfiles.kt
@@ -0,0 +1,40 @@ +package com.airbnb.lottie.sample.compose.benchmark + +import android.content.Context +import androidx.benchmark.macro.junit4.BaselineProfileRule +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.UiDevice +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class LottieBaselineProfiles { + + @get:Rule + val baselineProfileRule = BaselineProfileRule() + + private lateinit var context: Context + private lateinit var device: UiDevice + + @Before + fun setUp() { + val instrumentation = InstrumentationRegistry.getInstrumentation() + context = ApplicationProvider.getApplicationContext() + device = UiDevice.getInstance(instrumentation) + } + + @Test + fun baselineProfiles() { + baselineProfileRule.collect( + packageName = "com.airbnb.lottie.benchmark.app", + ) { + pressHome() + startActivityAndWait() + Thread.sleep(5_000L) + } + } +}
diff --git a/build.gradle b/build.gradle index c923c31..0a3cfd2 100644 --- a/build.gradle +++ b/build.gradle
@@ -3,12 +3,15 @@ plugins { id "com.android.tools.build" apply false + id "com.android.application" apply false + id "com.android.test" apply false id 'net.ltgt.errorprone' apply false id "com.google.devtools.ksp" apply false id "org.ajoberstar.grgit" apply false - id "org.jetbrains.kotlin.jvm" apply false + id "org.jetbrains.kotlin.android" apply false id "com.vanniktech.maven.publish" apply false id "org.jetbrains.dokka" apply false + id "androidx.baselineprofile" apply false } allprojects {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 859b55b..30e3499 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml
@@ -21,6 +21,8 @@ androidx-test-espresso-idling = "androidx.test.espresso:espresso-idling-resource:_" androidx-test-junit = "androidx.test.ext:junit:_" androidx-test-rules = "androidx.test:rules:_" +androidx-test-uiautomator = "androidx.test.uiautomator:uiautomator:_" +androidx-test-macrobenchmark = "androidx.benchmark:benchmark-macro-junit4:_" androidx-viewmodel-ktx = "androidx.lifecycle:lifecycle-viewmodel-ktx:_" aws-android-sdk-auth-userpools = "com.amazonaws:aws-android-sdk-auth-userpools:_" aws-android-sdk-mobile-client = "com.amazonaws:aws-android-sdk-mobile-client:_" @@ -42,14 +44,9 @@ errorprone-core = "com.google.errorprone:error_prone_core:_" glide = "com.github.bumptech.glide:glide:_" google-material = "com.google.android.material:material:_" -grgit-plugin = "org.ajoberstar.grgit:grgit-gradle:_" gson = "com.google.code.gson:gson:_" -javac = "com.google.errorprone:javac:_" jjwt = "io.jsonwebtoken:jjwt:_" junit4 = "junit:junit:_" -kotlin-annotation-processing-gradle = "org.jetbrains.kotlin:kotlin-annotation-processing-gradle:_" -kotlin-parcelize-compiler = "org.jetbrains.kotlin:kotlin-parcelize-compiler:_" -kotlin-parcelize-runtime = "org.jetbrains.kotlin:kotlin-parcelize-runtime:_" kotlinx-coroutines-android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:_" kotlinx-coroutines-test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:_" mavericks = "com.airbnb.android:mavericks:_" @@ -58,11 +55,9 @@ mockito-core = "org.mockito:mockito-core:_" mockito-kotlin = "org.mockito:mockito-android:_" mpandroidchart = "com.github.PhilJay:MPAndroidChart:_" -mvrx = "com.airbnb.android:mvrx:_" nullaway = "com.uber.nullaway:nullaway:_" okhttp = "com.squareup.okhttp3:okhttp:_" okio = "com.squareup.okio:okio:_" -org-jacoco-ant = "org.jacoco:org.jacoco.ant:_" profileinstaller = "androidx.profileinstaller:profileinstaller:_" qrcodereaderview = "com.dlazaro66.qrcodereaderview:qrcodereaderview:_" retrofit = "com.squareup.retrofit2:retrofit:_" @@ -70,4 +65,3 @@ retrofit-moshi = "com.squareup.retrofit2:converter-moshi:_" retrofit-rxjava = "com.squareup.retrofit2:adapter-rxjava2:_" robolectric = "org.robolectric:robolectric:_" -viewbinding = "androidx.databinding:viewbinding:_"
diff --git a/lottie-compose/build.gradle b/lottie-compose/build.gradle index 099aa04..8f6313c 100644 --- a/lottie-compose/build.gradle +++ b/lottie-compose/build.gradle
@@ -5,6 +5,7 @@ id 'com.android.library' id 'org.jetbrains.kotlin.android' id 'com.vanniktech.maven.publish' + id 'androidx.baselineprofile' } android { @@ -38,12 +39,20 @@ signAllPublications() } +baselineProfile { + filter { + include 'com.airbnb.lottie.compose.**' + } +} + dependencies { api project(':lottie') implementation platform(libs.compose.bom) implementation libs.compose.foundation implementation libs.compose.ui + baselineProfile project(':baselineprofile') + testImplementation libs.robolectric testImplementation libs.androidx.collection.ktx testImplementation libs.kotlinx.coroutines.test
diff --git a/lottie-compose/src/main/generated/baselineProfiles/baseline-prof.txt b/lottie-compose/src/main/generated/baselineProfiles/baseline-prof.txt new file mode 100644 index 0000000..ced1092 --- /dev/null +++ b/lottie-compose/src/main/generated/baselineProfiles/baseline-prof.txt
@@ -0,0 +1,176 @@ +Lcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt; +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt;->access$animateLottieCompositionAsState$lambda$3(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt;->access$animateLottieCompositionAsState$lambda$4(Landroidx/compose/runtime/MutableState;Z)V +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt;->animateLottieCompositionAsState$lambda$3(Landroidx/compose/runtime/MutableState;)Z +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt;->animateLottieCompositionAsState$lambda$4(Landroidx/compose/runtime/MutableState;Z)V +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt;->animateLottieCompositionAsState(Lcom/airbnb/lottie/LottieComposition;ZZZLcom/airbnb/lottie/compose/LottieClipSpec;FILcom/airbnb/lottie/compose/LottieCancellationBehavior;ZZLandroidx/compose/runtime/Composer;II)Lcom/airbnb/lottie/compose/LottieAnimationState; +Lcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt$animateLottieCompositionAsState$3; +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt$animateLottieCompositionAsState$3;-><init>(ZZLcom/airbnb/lottie/compose/LottieAnimatable;Lcom/airbnb/lottie/LottieComposition;IZFLcom/airbnb/lottie/compose/LottieClipSpec;Lcom/airbnb/lottie/compose/LottieCancellationBehavior;ZLandroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt$animateLottieCompositionAsState$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/airbnb/lottie/compose/AnimateLottieCompositionAsStateKt$animateLottieCompositionAsState$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieAnimatable; +Lcom/airbnb/lottie/compose/LottieAnimatable$DefaultImpls; +HSPLcom/airbnb/lottie/compose/LottieAnimatable$DefaultImpls;->animate$default(Lcom/airbnb/lottie/compose/LottieAnimatable;Lcom/airbnb/lottie/LottieComposition;IIZFLcom/airbnb/lottie/compose/LottieClipSpec;FZLcom/airbnb/lottie/compose/LottieCancellationBehavior;ZZLkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieAnimatableImpl; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;-><init>()V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$doFrame(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;ILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$onFrame(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;IJ)Z +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setClipSpec(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;Lcom/airbnb/lottie/compose/LottieClipSpec;)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setComposition(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;Lcom/airbnb/lottie/LottieComposition;)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setIteration(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;I)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setIterations(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;I)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setLastFrameNanos(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;J)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setPlaying(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;Z)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setReverseOnRepeat(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;Z)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setSpeed(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;F)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$setUseCompositionFrameRate(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;Z)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->access$updateProgress(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;F)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->animate(Lcom/airbnb/lottie/LottieComposition;IIZFLcom/airbnb/lottie/compose/LottieClipSpec;FZLcom/airbnb/lottie/compose/LottieCancellationBehavior;ZZLkotlin/coroutines/Continuation;)Ljava/lang/Object; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->doFrame(ILkotlin/coroutines/Continuation;)Ljava/lang/Object; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getClipSpec()Lcom/airbnb/lottie/compose/LottieClipSpec; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getComposition()Lcom/airbnb/lottie/LottieComposition; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getFrameSpeed()F +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getIteration()I +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getLastFrameNanos()J +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getProgress()F +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getProgressRaw()F +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getReverseOnRepeat()Z +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getSpeed()F +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getUseCompositionFrameRate()Z +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getValue()Ljava/lang/Float; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->getValue()Ljava/lang/Object; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->onFrame(IJ)Z +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setClipSpec(Lcom/airbnb/lottie/compose/LottieClipSpec;)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setComposition(Lcom/airbnb/lottie/LottieComposition;)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setIteration(I)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setIterations(I)V +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setLastFrameNanos(J)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setPlaying(Z)V +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setProgress(F)V +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setProgressRaw(F)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setReverseOnRepeat(Z)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setSpeed(F)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->setUseCompositionFrameRate(Z)V +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl;->updateProgress(F)V +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2;-><init>(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;IIZFLcom/airbnb/lottie/compose/LottieClipSpec;Lcom/airbnb/lottie/LottieComposition;FZZLcom/airbnb/lottie/compose/LottieCancellationBehavior;Lkotlin/coroutines/Continuation;)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1;-><init>(Lcom/airbnb/lottie/compose/LottieCancellationBehavior;Lkotlinx/coroutines/Job;IILcom/airbnb/lottie/compose/LottieAnimatableImpl;Lkotlin/coroutines/Continuation;)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1$WhenMappings; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$1$WhenMappings;-><clinit>()V +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$WhenMappings; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$animate$2$WhenMappings;-><clinit>()V +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$doFrame$2; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl$doFrame$2;-><init>(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;I)V +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl$doFrame$2;->invoke(J)Ljava/lang/Boolean; +HPLcom/airbnb/lottie/compose/LottieAnimatableImpl$doFrame$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$endProgress$2; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$endProgress$2;-><init>(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;)V +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$frameSpeed$2; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$frameSpeed$2;-><init>(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;)V +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$frameSpeed$2;->invoke()Ljava/lang/Float; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$frameSpeed$2;->invoke()Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieAnimatableImpl$isAtEnd$2; +HSPLcom/airbnb/lottie/compose/LottieAnimatableImpl$isAtEnd$2;-><init>(Lcom/airbnb/lottie/compose/LottieAnimatableImpl;)V +Lcom/airbnb/lottie/compose/LottieAnimatableKt; +HSPLcom/airbnb/lottie/compose/LottieAnimatableKt;->LottieAnimatable()Lcom/airbnb/lottie/compose/LottieAnimatable; +HSPLcom/airbnb/lottie/compose/LottieAnimatableKt;->rememberLottieAnimatable(Landroidx/compose/runtime/Composer;I)Lcom/airbnb/lottie/compose/LottieAnimatable; +Lcom/airbnb/lottie/compose/LottieAnimationKt; +HPLcom/airbnb/lottie/compose/LottieAnimationKt;->LottieAnimation$lambda$3(Landroidx/compose/runtime/MutableState;)Lcom/airbnb/lottie/compose/LottieDynamicProperties; +HSPLcom/airbnb/lottie/compose/LottieAnimationKt;->LottieAnimation(Lcom/airbnb/lottie/LottieComposition;Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZZZLcom/airbnb/lottie/RenderMode;ZLcom/airbnb/lottie/compose/LottieDynamicProperties;Landroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;ZLjava/util/Map;Lcom/airbnb/lottie/AsyncUpdates;Landroidx/compose/runtime/Composer;III)V +HPLcom/airbnb/lottie/compose/LottieAnimationKt;->access$LottieAnimation$lambda$3(Landroidx/compose/runtime/MutableState;)Lcom/airbnb/lottie/compose/LottieDynamicProperties; +HSPLcom/airbnb/lottie/compose/LottieAnimationKt;->access$times-UQTWf7w(JJ)J +HPLcom/airbnb/lottie/compose/LottieAnimationKt;->times-UQTWf7w(JJ)J +Lcom/airbnb/lottie/compose/LottieAnimationKt$LottieAnimation$2; +HSPLcom/airbnb/lottie/compose/LottieAnimationKt$LottieAnimation$2;-><init>(Lcom/airbnb/lottie/LottieComposition;Landroidx/compose/ui/layout/ContentScale;Landroidx/compose/ui/Alignment;Landroid/graphics/Matrix;Lcom/airbnb/lottie/LottieDrawable;ZLcom/airbnb/lottie/RenderMode;Lcom/airbnb/lottie/AsyncUpdates;Ljava/util/Map;Lcom/airbnb/lottie/compose/LottieDynamicProperties;ZZZZLkotlin/jvm/functions/Function0;Landroidx/compose/runtime/MutableState;)V +HPLcom/airbnb/lottie/compose/LottieAnimationKt$LottieAnimation$2;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V +HPLcom/airbnb/lottie/compose/LottieAnimationKt$LottieAnimation$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieAnimationState; +Lcom/airbnb/lottie/compose/LottieCancellationBehavior; +HSPLcom/airbnb/lottie/compose/LottieCancellationBehavior;->$values()[Lcom/airbnb/lottie/compose/LottieCancellationBehavior; +HSPLcom/airbnb/lottie/compose/LottieCancellationBehavior;-><clinit>()V +HSPLcom/airbnb/lottie/compose/LottieCancellationBehavior;-><init>(Ljava/lang/String;I)V +HSPLcom/airbnb/lottie/compose/LottieCancellationBehavior;->values()[Lcom/airbnb/lottie/compose/LottieCancellationBehavior; +Lcom/airbnb/lottie/compose/LottieClipSpec; +Lcom/airbnb/lottie/compose/LottieCompositionResult; +Lcom/airbnb/lottie/compose/LottieCompositionResultImpl; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;-><init>()V +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;->complete$lottie_compose_release(Lcom/airbnb/lottie/LottieComposition;)V +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;->getError()Ljava/lang/Throwable; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;->getValue()Lcom/airbnb/lottie/LottieComposition; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;->getValue()Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;->isComplete()Z +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;->isSuccess()Z +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl;->setValue(Lcom/airbnb/lottie/LottieComposition;)V +Lcom/airbnb/lottie/compose/LottieCompositionResultImpl$isComplete$2; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isComplete$2;-><init>(Lcom/airbnb/lottie/compose/LottieCompositionResultImpl;)V +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isComplete$2;->invoke()Ljava/lang/Boolean; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isComplete$2;->invoke()Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieCompositionResultImpl$isFailure$2; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isFailure$2;-><init>(Lcom/airbnb/lottie/compose/LottieCompositionResultImpl;)V +Lcom/airbnb/lottie/compose/LottieCompositionResultImpl$isLoading$2; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isLoading$2;-><init>(Lcom/airbnb/lottie/compose/LottieCompositionResultImpl;)V +Lcom/airbnb/lottie/compose/LottieCompositionResultImpl$isSuccess$2; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isSuccess$2;-><init>(Lcom/airbnb/lottie/compose/LottieCompositionResultImpl;)V +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isSuccess$2;->invoke()Ljava/lang/Boolean; +HSPLcom/airbnb/lottie/compose/LottieCompositionResultImpl$isSuccess$2;->invoke()Ljava/lang/Object; +Lcom/airbnb/lottie/compose/LottieCompositionSpec; +Lcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes; +HSPLcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes;-><init>(I)V +HSPLcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes;->box-impl(I)Lcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes; +HSPLcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes;->constructor-impl(I)I +HSPLcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes;->equals(Ljava/lang/Object;)Z +HSPLcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes;->equals-impl(ILjava/lang/Object;)Z +HSPLcom/airbnb/lottie/compose/LottieCompositionSpec$RawRes;->unbox-impl()I +Lcom/airbnb/lottie/compose/LottieDynamicProperties; +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$ensureLeadingPeriod(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$ensureTrailingSlash(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$lottieComposition(Landroid/content/Context;Lcom/airbnb/lottie/compose/LottieCompositionSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$lottieTask(Landroid/content/Context;Lcom/airbnb/lottie/compose/LottieCompositionSpec;Ljava/lang/String;Z)Lcom/airbnb/lottie/LottieTask; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$maybeDecodeBase64Image(Lcom/airbnb/lottie/LottieImageAsset;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$maybeLoadImageFromAsset(Landroid/content/Context;Lcom/airbnb/lottie/LottieImageAsset;Ljava/lang/String;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$maybeLoadTypefaceFromAssets(Landroid/content/Context;Lcom/airbnb/lottie/model/Font;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->access$rememberLottieComposition$lambda$1(Landroidx/compose/runtime/MutableState;)Lcom/airbnb/lottie/compose/LottieCompositionResultImpl; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->await(Lcom/airbnb/lottie/LottieTask;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->ensureLeadingPeriod(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->ensureTrailingSlash(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->loadFontsFromAssets(Landroid/content/Context;Lcom/airbnb/lottie/LottieComposition;Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->loadImagesFromAssets(Landroid/content/Context;Lcom/airbnb/lottie/LottieComposition;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->lottieComposition(Landroid/content/Context;Lcom/airbnb/lottie/compose/LottieCompositionSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->lottieTask(Landroid/content/Context;Lcom/airbnb/lottie/compose/LottieCompositionSpec;Ljava/lang/String;Z)Lcom/airbnb/lottie/LottieTask; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->maybeDecodeBase64Image(Lcom/airbnb/lottie/LottieImageAsset;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->maybeLoadImageFromAsset(Landroid/content/Context;Lcom/airbnb/lottie/LottieImageAsset;Ljava/lang/String;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->maybeLoadTypefaceFromAssets(Landroid/content/Context;Lcom/airbnb/lottie/model/Font;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->rememberLottieComposition$lambda$1(Landroidx/compose/runtime/MutableState;)Lcom/airbnb/lottie/compose/LottieCompositionResultImpl; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt;->rememberLottieComposition(Lcom/airbnb/lottie/compose/LottieCompositionSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)Lcom/airbnb/lottie/compose/LottieCompositionResult; +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt$await$2$1; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$await$2$1;-><init>(Lkotlinx/coroutines/CancellableContinuation;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$await$2$1;->onResult(Ljava/lang/Object;)V +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt$await$2$2; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$await$2$2;-><init>(Lkotlinx/coroutines/CancellableContinuation;)V +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadFontsFromAssets$2; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadFontsFromAssets$2;-><init>(Lcom/airbnb/lottie/LottieComposition;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadFontsFromAssets$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadFontsFromAssets$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadImagesFromAssets$2; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadImagesFromAssets$2;-><init>(Lcom/airbnb/lottie/LottieComposition;Landroid/content/Context;Ljava/lang/String;Lkotlin/coroutines/Continuation;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadImagesFromAssets$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$loadImagesFromAssets$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt$lottieComposition$1; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$lottieComposition$1;-><init>(Lkotlin/coroutines/Continuation;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$lottieComposition$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt$rememberLottieComposition$1; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$rememberLottieComposition$1;-><init>(Lkotlin/coroutines/Continuation;)V +Lcom/airbnb/lottie/compose/RememberLottieCompositionKt$rememberLottieComposition$3; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$rememberLottieComposition$3;-><init>(Lkotlin/jvm/functions/Function3;Landroid/content/Context;Lcom/airbnb/lottie/compose/LottieCompositionSpec;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$rememberLottieComposition$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation; +HSPLcom/airbnb/lottie/compose/RememberLottieCompositionKt$rememberLottieComposition$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object; \ No newline at end of file
diff --git a/lottie/build.gradle b/lottie/build.gradle index 3c18376..7ba4d7c 100644 --- a/lottie/build.gradle +++ b/lottie/build.gradle
@@ -5,6 +5,7 @@ id 'com.android.library' id 'net.ltgt.errorprone' id 'com.vanniktech.maven.publish' + id 'androidx.baselineprofile' } android { @@ -33,6 +34,13 @@ signAllPublications() } +baselineProfile { + filter { + include 'com.airbnb.lottie.**' + exclude 'com.airbnb.lottie.compose.**' + } +} + dependencies { implementation libs.androidx.appcompat // Do not upgrade to 2.0 because it will bring in Kotlin as a transitive dependency. @@ -42,6 +50,8 @@ annotationProcessor libs.nullaway errorprone libs.errorprone.core + baselineProfile project(':baselineprofile') + testImplementation libs.mockito.core testImplementation libs.robolectric testImplementation libs.junit4
diff --git a/lottie/src/main/baseline-prof.txt b/lottie/src/main/generated/baselineProfiles/baseline-prof.txt similarity index 62% rename from lottie/src/main/baseline-prof.txt rename to lottie/src/main/generated/baselineProfiles/baseline-prof.txt index 478844b..7f4549a 100644 --- a/lottie/src/main/baseline-prof.txt +++ b/lottie/src/main/generated/baselineProfiles/baseline-prof.txt
@@ -1,197 +1,217 @@ -HPLcom/airbnb/lottie/LottieDrawable;->convertRect(Landroid/graphics/RectF;Landroid/graphics/Rect;)V -HPLcom/airbnb/lottie/LottieDrawable;->ensureSoftwareRenderingBitmap(II)V -HPLcom/airbnb/lottie/LottieDrawable;->ensureSoftwareRenderingObjectsInitialized()V -HPLcom/airbnb/lottie/LottieDrawable;->getImageAssetManager()Lcom/airbnb/lottie/manager/ImageAssetManager; -HPLcom/airbnb/lottie/LottieDrawable;->renderAndDrawAsBitmap(Landroid/graphics/Canvas;Lcom/airbnb/lottie/model/layer/CompositionLayer;)V -HPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->onValueChanged()V -HPLcom/airbnb/lottie/animation/content/ContentGroup;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V -HPLcom/airbnb/lottie/animation/content/EllipseContent;->onValueChanged()V -HPLcom/airbnb/lottie/animation/content/FillContent;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V -HPLcom/airbnb/lottie/animation/content/FillContent;->onValueChanged()V -HPLcom/airbnb/lottie/animation/content/GradientFillContent;->applyDynamicColorsIfNeeded([I)[I -HPLcom/airbnb/lottie/animation/content/GradientFillContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V -HPLcom/airbnb/lottie/animation/content/GradientFillContent;->getGradientHash()I -HPLcom/airbnb/lottie/animation/content/GradientFillContent;->getLinearGradient()Landroid/graphics/LinearGradient; -HPLcom/airbnb/lottie/animation/content/RectangleContent;->getPath()Landroid/graphics/Path; -HPLcom/airbnb/lottie/animation/content/ShapeContent;->onValueChanged()V -HPLcom/airbnb/lottie/animation/content/TrimPathContent;-><init>(Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeTrimPath;)V -HPLcom/airbnb/lottie/animation/content/TrimPathContent;->onValueChanged()V -HPLcom/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation;-><init>(Ljava/util/List;)V -HPLcom/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation;->getMaskAnimations()Ljava/util/List; -HPLcom/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Lcom/airbnb/lottie/value/ScaleXY; -HPLcom/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; -HPLcom/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation;->getValue()Landroid/graphics/PointF; -HPLcom/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation;->getValue()Ljava/lang/Object; -HPLcom/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Landroid/graphics/PointF; -HPLcom/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation;->setProgress(F)V -HPLcom/airbnb/lottie/model/layer/BaseLayer$$ExternalSyntheticLambda0;->onValueChanged()V -HPLcom/airbnb/lottie/model/layer/BaseLayer;->applyAddMask(Landroid/graphics/Canvas;Landroid/graphics/Matrix;Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V -HPLcom/airbnb/lottie/model/layer/BaseLayer;->applyMasks(Landroid/graphics/Canvas;Landroid/graphics/Matrix;)V -HPLcom/airbnb/lottie/model/layer/BaseLayer;->clearCanvas(Landroid/graphics/Canvas;)V -HPLcom/airbnb/lottie/model/layer/BaseLayer;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V -HPLcom/airbnb/lottie/model/layer/BaseLayer;->intersectBoundsWithMask(Landroid/graphics/RectF;Landroid/graphics/Matrix;)V -HPLcom/airbnb/lottie/model/layer/BaseLayer;->intersectBoundsWithMatte(Landroid/graphics/RectF;Landroid/graphics/Matrix;)V -HPLcom/airbnb/lottie/model/layer/BaseLayer;->lambda$setupInOutAnimations$0$BaseLayer()V -HPLcom/airbnb/lottie/model/layer/ImageLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V -HPLcom/airbnb/lottie/model/layer/ImageLayer;->getBitmap()Landroid/graphics/Bitmap; -HPLcom/airbnb/lottie/model/layer/NullLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V -HPLcom/airbnb/lottie/model/layer/ShapeLayer;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V -HPLcom/airbnb/lottie/parser/MaskParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/Mask; -HPLcom/airbnb/lottie/utils/GammaEvaluator;->OECF_sRGB(F)F -HPLcom/airbnb/lottie/utils/Utils;->applyTrimPathIfNeeded(Landroid/graphics/Path;FFF)V -HPLcom/airbnb/lottie/utils/Utils;->applyTrimPathIfNeeded(Landroid/graphics/Path;Lcom/airbnb/lottie/animation/content/TrimPathContent;)V -HSPLcom/airbnb/lottie/L$1;-><init>(Landroid/content/Context;)V -HSPLcom/airbnb/lottie/L$1;->getCacheDir()Ljava/io/File; +Lcom/airbnb/lottie/AsyncUpdates; +HSPLcom/airbnb/lottie/AsyncUpdates;->$values()[Lcom/airbnb/lottie/AsyncUpdates; +HSPLcom/airbnb/lottie/AsyncUpdates;-><clinit>()V +HSPLcom/airbnb/lottie/AsyncUpdates;-><init>(Ljava/lang/String;I)V +Lcom/airbnb/lottie/ImageAssetDelegate; +Lcom/airbnb/lottie/L; HSPLcom/airbnb/lottie/L;-><clinit>()V -HSPLcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V -HSPLcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F -HSPLcom/airbnb/lottie/L;->networkCache(Landroid/content/Context;)Lcom/airbnb/lottie/network/NetworkCache; -HSPLcom/airbnb/lottie/L;->networkFetcher(Landroid/content/Context;)Lcom/airbnb/lottie/network/NetworkFetcher; -HSPLcom/airbnb/lottie/L;->setTraceEnabled(Z)V +HPLcom/airbnb/lottie/L;->beginSection(Ljava/lang/String;)V +HPLcom/airbnb/lottie/L;->endSection(Ljava/lang/String;)F +HSPLcom/airbnb/lottie/L;->getDisablePathInterpolatorCache()Z +Lcom/airbnb/lottie/LottieComposition; HSPLcom/airbnb/lottie/LottieComposition;-><init>()V -HSPLcom/airbnb/lottie/LottieComposition;->addWarning(Ljava/lang/String;)V -HSPLcom/airbnb/lottie/LottieComposition;->getBounds()Landroid/graphics/Rect; -HSPLcom/airbnb/lottie/LottieComposition;->getDuration()F -HSPLcom/airbnb/lottie/LottieComposition;->getDurationFrames()F -HSPLcom/airbnb/lottie/LottieComposition;->getEndFrame()F -HSPLcom/airbnb/lottie/LottieComposition;->getFonts()Ljava/util/Map; -HSPLcom/airbnb/lottie/LottieComposition;->getFrameForProgress(F)F +HPLcom/airbnb/lottie/LottieComposition;->getBounds()Landroid/graphics/Rect; +HPLcom/airbnb/lottie/LottieComposition;->getCharacters()Landroidx/collection/SparseArrayCompat; +HPLcom/airbnb/lottie/LottieComposition;->getDuration()F +HPLcom/airbnb/lottie/LottieComposition;->getDurationFrames()F +HPLcom/airbnb/lottie/LottieComposition;->getEndFrame()F +HPLcom/airbnb/lottie/LottieComposition;->getFonts()Ljava/util/Map; +HPLcom/airbnb/lottie/LottieComposition;->getFrameForProgress(F)F HSPLcom/airbnb/lottie/LottieComposition;->getImages()Ljava/util/Map; HSPLcom/airbnb/lottie/LottieComposition;->getLayers()Ljava/util/List; HSPLcom/airbnb/lottie/LottieComposition;->getMaskAndMatteCount()I HSPLcom/airbnb/lottie/LottieComposition;->getPerformanceTracker()Lcom/airbnb/lottie/PerformanceTracker; -HSPLcom/airbnb/lottie/LottieComposition;->getPrecomps(Ljava/lang/String;)Ljava/util/List; -HSPLcom/airbnb/lottie/LottieComposition;->getStartFrame()F -HSPLcom/airbnb/lottie/LottieComposition;->getWarnings()Ljava/util/ArrayList; -HSPLcom/airbnb/lottie/LottieComposition;->hasDashPattern()Z +HPLcom/airbnb/lottie/LottieComposition;->getStartFrame()F +HPLcom/airbnb/lottie/LottieComposition;->hasDashPattern()Z HSPLcom/airbnb/lottie/LottieComposition;->hasImages()Z +HSPLcom/airbnb/lottie/LottieComposition;->incrementMatteOrMaskCount(I)V HSPLcom/airbnb/lottie/LottieComposition;->init(Landroid/graphics/Rect;FFFLjava/util/List;Landroidx/collection/LongSparseArray;Ljava/util/Map;Ljava/util/Map;Landroidx/collection/SparseArrayCompat;Ljava/util/Map;Ljava/util/List;)V HSPLcom/airbnb/lottie/LottieComposition;->setPerformanceTrackingEnabled(Z)V -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicBoolean;)V -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda2;-><init>(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicBoolean;)V -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda4;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda4;->call()Ljava/lang/Object; -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda5;-><init>(Lcom/airbnb/lottie/LottieComposition;)V -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda5;->call()Ljava/lang/Object; -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda9;-><init>(Ljava/lang/ref/WeakReference;Landroid/content/Context;ILjava/lang/String;)V -HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda9;->call()Ljava/lang/Object; +Lcom/airbnb/lottie/LottieCompositionFactory; HSPLcom/airbnb/lottie/LottieCompositionFactory;-><clinit>()V -HSPLcom/airbnb/lottie/LottieCompositionFactory;->cache(Ljava/lang/String;Ljava/util/concurrent/Callable;)Lcom/airbnb/lottie/LottieTask; +HSPLcom/airbnb/lottie/LottieCompositionFactory;->cache(Ljava/lang/String;Ljava/util/concurrent/Callable;Ljava/lang/Runnable;)Lcom/airbnb/lottie/LottieTask; HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromJsonInputStreamSync(Ljava/io/InputStream;Ljava/lang/String;)Lcom/airbnb/lottie/LottieResult; HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromJsonInputStreamSync(Ljava/io/InputStream;Ljava/lang/String;Z)Lcom/airbnb/lottie/LottieResult; -HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromJsonReaderSync(Lcom/airbnb/lottie/parser/moshi/JsonReader;Ljava/lang/String;)Lcom/airbnb/lottie/LottieResult; +HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromJsonReaderSync(Lcom/airbnb/lottie/parser/moshi/JsonReader;Ljava/lang/String;Z)Lcom/airbnb/lottie/LottieResult; HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromJsonReaderSyncInternal(Lcom/airbnb/lottie/parser/moshi/JsonReader;Ljava/lang/String;Z)Lcom/airbnb/lottie/LottieResult; HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromRawRes(Landroid/content/Context;I)Lcom/airbnb/lottie/LottieTask; HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromRawRes(Landroid/content/Context;ILjava/lang/String;)Lcom/airbnb/lottie/LottieTask; HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromRawResSync(Landroid/content/Context;ILjava/lang/String;)Lcom/airbnb/lottie/LottieResult; -HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromUrl(Landroid/content/Context;Ljava/lang/String;)Lcom/airbnb/lottie/LottieTask; -HSPLcom/airbnb/lottie/LottieCompositionFactory;->fromUrl(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Lcom/airbnb/lottie/LottieTask; HSPLcom/airbnb/lottie/LottieCompositionFactory;->isNightMode(Landroid/content/Context;)Z HSPLcom/airbnb/lottie/LottieCompositionFactory;->isZipCompressed(Lokio/BufferedSource;)Ljava/lang/Boolean; -HSPLcom/airbnb/lottie/LottieCompositionFactory;->lambda$cache$8(Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/LottieResult; -HSPLcom/airbnb/lottie/LottieCompositionFactory;->lambda$cache$9(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicBoolean;Lcom/airbnb/lottie/LottieComposition;)V +HSPLcom/airbnb/lottie/LottieCompositionFactory;->lambda$cache$15(Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/LottieResult; +HSPLcom/airbnb/lottie/LottieCompositionFactory;->lambda$cache$16(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicBoolean;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/LottieCompositionFactory;->lambda$fromRawRes$2(Ljava/lang/ref/WeakReference;Landroid/content/Context;ILjava/lang/String;)Lcom/airbnb/lottie/LottieResult; -HSPLcom/airbnb/lottie/LottieCompositionFactory;->lambda$fromUrl$0(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Lcom/airbnb/lottie/LottieResult; +HSPLcom/airbnb/lottie/LottieCompositionFactory;->notifyTaskCacheIdleListeners(Z)V HSPLcom/airbnb/lottie/LottieCompositionFactory;->rawResCacheKey(Landroid/content/Context;I)Ljava/lang/String; -HSPLcom/airbnb/lottie/LottieDrawable$1;-><init>(Lcom/airbnb/lottie/LottieDrawable;)V -HSPLcom/airbnb/lottie/LottieDrawable$1;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V -HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;-><clinit>()V -HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;-><init>(Ljava/lang/String;I)V +Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda4; +HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda4;-><init>(Lcom/airbnb/lottie/LottieComposition;)V +HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda4;->call()Ljava/lang/Object; +Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda5; +HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda5;-><init>(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicBoolean;)V +HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda5;->onResult(Ljava/lang/Object;)V +Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda6; +HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda6;-><init>(Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicBoolean;)V +Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda8; +HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda8;-><init>(Ljava/lang/ref/WeakReference;Landroid/content/Context;ILjava/lang/String;)V +HSPLcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda8;->call()Ljava/lang/Object; +Lcom/airbnb/lottie/LottieDrawable; +HSPLcom/airbnb/lottie/LottieDrawable;-><clinit>()V HSPLcom/airbnb/lottie/LottieDrawable;-><init>()V -HSPLcom/airbnb/lottie/LottieDrawable;->access$000(Lcom/airbnb/lottie/LottieDrawable;)Lcom/airbnb/lottie/model/layer/CompositionLayer; -HSPLcom/airbnb/lottie/LottieDrawable;->access$100(Lcom/airbnb/lottie/LottieDrawable;)Lcom/airbnb/lottie/utils/LottieValueAnimator; HSPLcom/airbnb/lottie/LottieDrawable;->buildCompositionLayer()V HSPLcom/airbnb/lottie/LottieDrawable;->clearComposition()V -HSPLcom/airbnb/lottie/LottieDrawable;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;)V -HSPLcom/airbnb/lottie/LottieDrawable;->enableMergePathsForKitKatAndAbove(Z)V -HSPLcom/airbnb/lottie/LottieDrawable;->getClipToCompositionBounds()Z -HSPLcom/airbnb/lottie/LottieDrawable;->getComposition()Lcom/airbnb/lottie/LottieComposition; -HSPLcom/airbnb/lottie/LottieDrawable;->invalidateSelf()V -HSPLcom/airbnb/lottie/LottieDrawable;->isApplyingOpacityToLayersEnabled()Z +HPLcom/airbnb/lottie/LottieDrawable;->computeRenderMode()V +HPLcom/airbnb/lottie/LottieDrawable;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;)V +HPLcom/airbnb/lottie/LottieDrawable;->enableMergePathsForKitKatAndAbove(Z)V +HPLcom/airbnb/lottie/LottieDrawable;->getAsyncUpdates()Lcom/airbnb/lottie/AsyncUpdates; +HPLcom/airbnb/lottie/LottieDrawable;->getAsyncUpdatesEnabled()Z +HPLcom/airbnb/lottie/LottieDrawable;->getBitmapForId(Ljava/lang/String;)Landroid/graphics/Bitmap; +HPLcom/airbnb/lottie/LottieDrawable;->getComposition()Lcom/airbnb/lottie/LottieComposition; +HSPLcom/airbnb/lottie/LottieDrawable;->getContext()Landroid/content/Context; +HPLcom/airbnb/lottie/LottieDrawable;->getImageAssetManager()Lcom/airbnb/lottie/manager/ImageAssetManager; +HSPLcom/airbnb/lottie/LottieDrawable;->getLottieImageAssetForId(Ljava/lang/String;)Lcom/airbnb/lottie/LottieImageAsset; +HPLcom/airbnb/lottie/LottieDrawable;->getMaintainOriginalImageBounds()Z +HPLcom/airbnb/lottie/LottieDrawable;->invalidateSelf()V +HPLcom/airbnb/lottie/LottieDrawable;->isApplyingOpacityToLayersEnabled()Z +HPLcom/airbnb/lottie/LottieDrawable;->lambda$new$0$com-airbnb-lottie-LottieDrawable(Landroid/animation/ValueAnimator;)V HSPLcom/airbnb/lottie/LottieDrawable;->setApplyingOpacityToLayersEnabled(Z)V +HPLcom/airbnb/lottie/LottieDrawable;->setAsyncUpdates(Lcom/airbnb/lottie/AsyncUpdates;)V HSPLcom/airbnb/lottie/LottieDrawable;->setClipToCompositionBounds(Z)V HSPLcom/airbnb/lottie/LottieDrawable;->setComposition(Lcom/airbnb/lottie/LottieComposition;)Z +HSPLcom/airbnb/lottie/LottieDrawable;->setFontMap(Ljava/util/Map;)V HSPLcom/airbnb/lottie/LottieDrawable;->setMaintainOriginalImageBounds(Z)V HSPLcom/airbnb/lottie/LottieDrawable;->setOutlineMasksAndMattes(Z)V -HSPLcom/airbnb/lottie/LottieDrawable;->setProgress(F)V -HSPLcom/airbnb/lottie/LottieDrawable;->setScale(F)V -HSPLcom/airbnb/lottie/LottieDrawable;->useSoftwareRendering(Z)V +HPLcom/airbnb/lottie/LottieDrawable;->setProgress(F)V +HPLcom/airbnb/lottie/LottieDrawable;->setRenderMode(Lcom/airbnb/lottie/RenderMode;)V +HPLcom/airbnb/lottie/LottieDrawable;->useTextGlyphs()Z +Lcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda0; +HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda0;-><init>(Lcom/airbnb/lottie/LottieDrawable;)V +HPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda0;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +Lcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda9; +HSPLcom/airbnb/lottie/LottieDrawable$$ExternalSyntheticLambda9;-><init>(Lcom/airbnb/lottie/LottieDrawable;)V +Lcom/airbnb/lottie/LottieDrawable$OnVisibleAction; +HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;->$values()[Lcom/airbnb/lottie/LottieDrawable$OnVisibleAction; +HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;-><clinit>()V +HSPLcom/airbnb/lottie/LottieDrawable$OnVisibleAction;-><init>(Ljava/lang/String;I)V +Lcom/airbnb/lottie/LottieImageAsset; +HSPLcom/airbnb/lottie/LottieImageAsset;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/airbnb/lottie/LottieImageAsset;->getBitmap()Landroid/graphics/Bitmap; +HSPLcom/airbnb/lottie/LottieImageAsset;->getFileName()Ljava/lang/String; +HSPLcom/airbnb/lottie/LottieImageAsset;->getId()Ljava/lang/String; +HSPLcom/airbnb/lottie/LottieImageAsset;->setBitmap(Landroid/graphics/Bitmap;)V +Lcom/airbnb/lottie/LottieListener; +Lcom/airbnb/lottie/LottieLogger; +Lcom/airbnb/lottie/LottieResult; HSPLcom/airbnb/lottie/LottieResult;-><init>(Ljava/lang/Object;)V HSPLcom/airbnb/lottie/LottieResult;->getException()Ljava/lang/Throwable; HSPLcom/airbnb/lottie/LottieResult;->getValue()Ljava/lang/Object; -HSPLcom/airbnb/lottie/LottieTask$$ExternalSyntheticLambda0;-><init>(Lcom/airbnb/lottie/LottieTask;)V -HSPLcom/airbnb/lottie/LottieTask$$ExternalSyntheticLambda0;->run()V -HSPLcom/airbnb/lottie/LottieTask$LottieFutureTask;-><init>(Lcom/airbnb/lottie/LottieTask;Ljava/util/concurrent/Callable;)V -HSPLcom/airbnb/lottie/LottieTask$LottieFutureTask;->done()V +Lcom/airbnb/lottie/LottieTask; HSPLcom/airbnb/lottie/LottieTask;-><clinit>()V HSPLcom/airbnb/lottie/LottieTask;-><init>(Ljava/util/concurrent/Callable;)V HSPLcom/airbnb/lottie/LottieTask;-><init>(Ljava/util/concurrent/Callable;Z)V HSPLcom/airbnb/lottie/LottieTask;->access$000(Lcom/airbnb/lottie/LottieTask;Lcom/airbnb/lottie/LottieResult;)V HSPLcom/airbnb/lottie/LottieTask;->addFailureListener(Lcom/airbnb/lottie/LottieListener;)Lcom/airbnb/lottie/LottieTask; HSPLcom/airbnb/lottie/LottieTask;->addListener(Lcom/airbnb/lottie/LottieListener;)Lcom/airbnb/lottie/LottieTask; -HSPLcom/airbnb/lottie/LottieTask;->lambda$notifyListeners$0$LottieTask()V +HSPLcom/airbnb/lottie/LottieTask;->lambda$notifyListeners$0$com-airbnb-lottie-LottieTask()V HSPLcom/airbnb/lottie/LottieTask;->notifyListeners()V HSPLcom/airbnb/lottie/LottieTask;->notifySuccessListeners(Ljava/lang/Object;)V HSPLcom/airbnb/lottie/LottieTask;->setResult(Lcom/airbnb/lottie/LottieResult;)V -HSPLcom/airbnb/lottie/PerformanceTracker$1;-><init>(Lcom/airbnb/lottie/PerformanceTracker;)V +Lcom/airbnb/lottie/LottieTask$$ExternalSyntheticLambda0; +HSPLcom/airbnb/lottie/LottieTask$$ExternalSyntheticLambda0;-><init>(Lcom/airbnb/lottie/LottieTask;)V +HSPLcom/airbnb/lottie/LottieTask$$ExternalSyntheticLambda0;->run()V +Lcom/airbnb/lottie/LottieTask$LottieFutureTask; +HSPLcom/airbnb/lottie/LottieTask$LottieFutureTask;-><init>(Lcom/airbnb/lottie/LottieTask;Ljava/util/concurrent/Callable;)V +HSPLcom/airbnb/lottie/LottieTask$LottieFutureTask;->done()V +Lcom/airbnb/lottie/PerformanceTracker; HSPLcom/airbnb/lottie/PerformanceTracker;-><init>()V -HSPLcom/airbnb/lottie/PerformanceTracker;->recordRenderTime(Ljava/lang/String;F)V +HPLcom/airbnb/lottie/PerformanceTracker;->recordRenderTime(Ljava/lang/String;F)V HSPLcom/airbnb/lottie/PerformanceTracker;->setEnabled(Z)V -HSPLcom/airbnb/lottie/RenderMode$1;-><clinit>()V +Lcom/airbnb/lottie/PerformanceTracker$1; +HSPLcom/airbnb/lottie/PerformanceTracker$1;-><init>(Lcom/airbnb/lottie/PerformanceTracker;)V +Lcom/airbnb/lottie/RenderMode; +HSPLcom/airbnb/lottie/RenderMode;->$values()[Lcom/airbnb/lottie/RenderMode; HSPLcom/airbnb/lottie/RenderMode;-><clinit>()V HSPLcom/airbnb/lottie/RenderMode;-><init>(Ljava/lang/String;I)V -HSPLcom/airbnb/lottie/RenderMode;->useSoftwareRendering(IZI)Z +HPLcom/airbnb/lottie/RenderMode;->useSoftwareRendering(IZI)Z HSPLcom/airbnb/lottie/RenderMode;->values()[Lcom/airbnb/lottie/RenderMode; +Lcom/airbnb/lottie/RenderMode$1; +HSPLcom/airbnb/lottie/RenderMode$1;-><clinit>()V +Lcom/airbnb/lottie/animation/LPaint; HSPLcom/airbnb/lottie/animation/LPaint;-><init>()V HSPLcom/airbnb/lottie/animation/LPaint;-><init>(I)V HSPLcom/airbnb/lottie/animation/LPaint;-><init>(ILandroid/graphics/PorterDuff$Mode;)V HSPLcom/airbnb/lottie/animation/LPaint;-><init>(Landroid/graphics/PorterDuff$Mode;)V -HSPLcom/airbnb/lottie/animation/LPaint;->setAlpha(I)V +HPLcom/airbnb/lottie/animation/LPaint;->setAlpha(I)V HSPLcom/airbnb/lottie/animation/LPaint;->setTextLocales(Landroid/os/LocaleList;)V +Lcom/airbnb/lottie/animation/content/BaseStrokeContent; +HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Landroid/graphics/Paint$Cap;Landroid/graphics/Paint$Join;FLcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Ljava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;)V +HPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->applyDashPatternIfNeeded(Landroid/graphics/Matrix;)V +HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V +HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup; HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;-><init>(Lcom/airbnb/lottie/animation/content/TrimPathContent;)V HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;-><init>(Lcom/airbnb/lottie/animation/content/TrimPathContent;Lcom/airbnb/lottie/animation/content/BaseStrokeContent$1;)V -HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List; -HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$200(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Lcom/airbnb/lottie/animation/content/TrimPathContent; -HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Landroid/graphics/Paint$Cap;Landroid/graphics/Paint$Join;FLcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Ljava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;)V -HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->applyDashPatternIfNeeded(Landroid/graphics/Matrix;)V -HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V -HSPLcom/airbnb/lottie/animation/content/BaseStrokeContent;->setContents(Ljava/util/List;Ljava/util/List;)V +HPLcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$100(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Ljava/util/List; +HPLcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;->access$200(Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup;)Lcom/airbnb/lottie/animation/content/TrimPathContent; +Lcom/airbnb/lottie/animation/content/CompoundTrimPathContent; HSPLcom/airbnb/lottie/animation/content/CompoundTrimPathContent;-><init>()V HSPLcom/airbnb/lottie/animation/content/CompoundTrimPathContent;->apply(Landroid/graphics/Path;)V -HSPLcom/airbnb/lottie/animation/content/ContentGroup;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeGroup;)V +Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/animation/content/ContentGroup; +HSPLcom/airbnb/lottie/animation/content/ContentGroup;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeGroup;Lcom/airbnb/lottie/LottieComposition;)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Ljava/lang/String;ZLjava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableTransform;)V -HSPLcom/airbnb/lottie/animation/content/ContentGroup;->contentsFromModels(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Ljava/util/List;)Ljava/util/List; +HSPLcom/airbnb/lottie/animation/content/ContentGroup;->contentsFromModels(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;Ljava/util/List;)Ljava/util/List; HSPLcom/airbnb/lottie/animation/content/ContentGroup;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->findTransform(Ljava/util/List;)Lcom/airbnb/lottie/model/animatable/AnimatableTransform; +HSPLcom/airbnb/lottie/animation/content/ContentGroup;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V +HSPLcom/airbnb/lottie/animation/content/ContentGroup;->getPath()Landroid/graphics/Path; HSPLcom/airbnb/lottie/animation/content/ContentGroup;->onValueChanged()V HSPLcom/airbnb/lottie/animation/content/ContentGroup;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/DrawingContent; +Lcom/airbnb/lottie/animation/content/EllipseContent; HSPLcom/airbnb/lottie/animation/content/EllipseContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/CircleShape;)V -HSPLcom/airbnb/lottie/animation/content/EllipseContent;->getPath()Landroid/graphics/Path; +HPLcom/airbnb/lottie/animation/content/EllipseContent;->getPath()Landroid/graphics/Path; HSPLcom/airbnb/lottie/animation/content/EllipseContent;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/FillContent; HSPLcom/airbnb/lottie/animation/content/FillContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeFill;)V -HSPLcom/airbnb/lottie/animation/content/FillContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HPLcom/airbnb/lottie/animation/content/FillContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HSPLcom/airbnb/lottie/animation/content/FillContent;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V HSPLcom/airbnb/lottie/animation/content/FillContent;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/GreedyContent; +Lcom/airbnb/lottie/animation/content/KeyPathElementContent; +Lcom/airbnb/lottie/animation/content/ModifierContent; +Lcom/airbnb/lottie/animation/content/PathContent; +Lcom/airbnb/lottie/animation/content/PolystarContent; +HSPLcom/airbnb/lottie/animation/content/PolystarContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/PolystarShape;)V +HSPLcom/airbnb/lottie/animation/content/PolystarContent;->createPolygonPath()V +HSPLcom/airbnb/lottie/animation/content/PolystarContent;->createStarPath()V +HSPLcom/airbnb/lottie/animation/content/PolystarContent;->getPath()Landroid/graphics/Path; +HPLcom/airbnb/lottie/animation/content/PolystarContent;->invalidate()V +HSPLcom/airbnb/lottie/animation/content/PolystarContent;->onValueChanged()V +HSPLcom/airbnb/lottie/animation/content/PolystarContent;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/PolystarContent$1; +HSPLcom/airbnb/lottie/animation/content/PolystarContent$1;-><clinit>()V +Lcom/airbnb/lottie/animation/content/RectangleContent; +HSPLcom/airbnb/lottie/animation/content/RectangleContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/RectangleShape;)V +HPLcom/airbnb/lottie/animation/content/RectangleContent;->getPath()Landroid/graphics/Path; +HSPLcom/airbnb/lottie/animation/content/RectangleContent;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/RepeaterContent; +HSPLcom/airbnb/lottie/animation/content/RepeaterContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/Repeater;)V +HSPLcom/airbnb/lottie/animation/content/RepeaterContent;->absorbContent(Ljava/util/ListIterator;)V +HPLcom/airbnb/lottie/animation/content/RepeaterContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HPLcom/airbnb/lottie/animation/content/RepeaterContent;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V +HSPLcom/airbnb/lottie/animation/content/RepeaterContent;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/RoundedCornersContent; +Lcom/airbnb/lottie/animation/content/ShapeContent; HSPLcom/airbnb/lottie/animation/content/ShapeContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapePath;)V HSPLcom/airbnb/lottie/animation/content/ShapeContent;->getPath()Landroid/graphics/Path; -HSPLcom/airbnb/lottie/animation/content/ShapeContent;->setContents(Ljava/util/List;Ljava/util/List;)V +Lcom/airbnb/lottie/animation/content/ShapeModifierContent; +Lcom/airbnb/lottie/animation/content/StrokeContent; HSPLcom/airbnb/lottie/animation/content/StrokeContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/ShapeStroke;)V -HSPLcom/airbnb/lottie/animation/content/StrokeContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;-><init>(Ljava/util/List;)V -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->findKeyframe(F)Lcom/airbnb/lottie/value/Keyframe; -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->getCurrentKeyframe()Lcom/airbnb/lottie/value/Keyframe; -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->getEndProgress()F -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->getStartDelayProgress()F -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->isCachedValueEnabled(F)Z -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->isEmpty()Z -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->isValueChanged(F)Z -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;-><init>(Ljava/util/List;)V -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->getCurrentKeyframe()Lcom/airbnb/lottie/value/Keyframe; -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->getEndProgress()F -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->getStartDelayProgress()F -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->isCachedValueEnabled(F)Z -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->isEmpty()Z -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->isValueChanged(F)Z +HPLcom/airbnb/lottie/animation/content/StrokeContent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +Lcom/airbnb/lottie/animation/content/TrimPathContent; +Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->addUpdateListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getCurrentKeyframe()Lcom/airbnb/lottie/value/Keyframe; @@ -200,44 +220,113 @@ HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getLinearCurrentKeyframeProgress()F HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getStartDelayProgress()F HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getValue()Ljava/lang/Object; -HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->notifyListeners()V +HPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->notifyListeners()V HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->setIsDiscrete()V HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->setProgress(F)V HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->wrap(Ljava/util/List;)Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapper; +Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener; +Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapper; +Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl; +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;-><init>(Ljava/util/List;)V +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->findKeyframe(F)Lcom/airbnb/lottie/value/Keyframe; +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->getCurrentKeyframe()Lcom/airbnb/lottie/value/Keyframe; +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->getEndProgress()F +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->getStartDelayProgress()F +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->isCachedValueEnabled(F)Z +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->isEmpty()Z +HPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl;->isValueChanged(F)Z +Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper; +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;-><init>(Ljava/util/List;)V +HPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->getCurrentKeyframe()Lcom/airbnb/lottie/value/Keyframe; +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->getEndProgress()F +HSPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->getStartDelayProgress()F +HPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->isCachedValueEnabled(F)Z +HPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->isEmpty()Z +HPLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper;->isValueChanged(F)Z +Lcom/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation;->getIntValue()I -HSPLcom/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation;->getIntValue(Lcom/airbnb/lottie/value/Keyframe;F)I +HPLcom/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation;->getIntValue(Lcom/airbnb/lottie/value/Keyframe;F)I +Lcom/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation; +Lcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;-><init>(Ljava/util/List;)V -HSPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;->getFloatValue()F +HPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;->getFloatValue()F HSPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;->getFloatValue(Lcom/airbnb/lottie/value/Keyframe;F)F -HSPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Float; -HSPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; +HPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Float; +HPLcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; +Lcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation;-><init>(Ljava/util/List;)V -HSPLcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation;->getIntValue()I -HSPLcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation;->getIntValue(Lcom/airbnb/lottie/value/Keyframe;F)I +HPLcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation;->getIntValue()I +HPLcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation;->getIntValue(Lcom/airbnb/lottie/value/Keyframe;F)I HSPLcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Integer; HSPLcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; +Lcom/airbnb/lottie/animation/keyframe/KeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/KeyframeAnimation;-><init>(Ljava/util/List;)V +Lcom/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation; +Lcom/airbnb/lottie/animation/keyframe/PathKeyframe; HSPLcom/airbnb/lottie/animation/keyframe/PathKeyframe;-><init>(Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/value/Keyframe;)V HSPLcom/airbnb/lottie/animation/keyframe/PathKeyframe;->createPath()V -HSPLcom/airbnb/lottie/animation/keyframe/PathKeyframe;->getPath()Landroid/graphics/Path; +HPLcom/airbnb/lottie/animation/keyframe/PathKeyframe;->getPath()Landroid/graphics/Path; +Lcom/airbnb/lottie/animation/keyframe/PathKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/PathKeyframeAnimation;-><init>(Ljava/util/List;)V -HSPLcom/airbnb/lottie/animation/keyframe/PathKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Landroid/graphics/PointF; +HPLcom/airbnb/lottie/animation/keyframe/PathKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Landroid/graphics/PointF; HSPLcom/airbnb/lottie/animation/keyframe/PathKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; +Lcom/airbnb/lottie/animation/keyframe/PointKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/PointKeyframeAnimation;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/animation/keyframe/PointKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Landroid/graphics/PointF; HSPLcom/airbnb/lottie/animation/keyframe/PointKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; HSPLcom/airbnb/lottie/animation/keyframe/PointKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;FFF)Landroid/graphics/PointF; +Lcom/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation; +HSPLcom/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation;-><init>(Ljava/util/List;)V +HSPLcom/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Lcom/airbnb/lottie/value/ScaleXY; +HSPLcom/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; +Lcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Landroid/graphics/Path; HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; -HSPLcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation;->setShapeModifiers(Ljava/util/List;)V +Lcom/airbnb/lottie/animation/keyframe/TextKeyframeAnimation; +HSPLcom/airbnb/lottie/animation/keyframe/TextKeyframeAnimation;-><init>(Ljava/util/List;)V +HPLcom/airbnb/lottie/animation/keyframe/TextKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Lcom/airbnb/lottie/model/DocumentData; +HPLcom/airbnb/lottie/animation/keyframe/TextKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; +Lcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;-><init>(Lcom/airbnb/lottie/model/animatable/AnimatableTransform;)V HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->addAnimationsToLayer(Lcom/airbnb/lottie/model/layer/BaseLayer;)V HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->addListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V +HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->getEndOpacity()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->getMatrix()Landroid/graphics/Matrix; -HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->getOpacity()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -HSPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->setProgress(F)V +HPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->getMatrixForRepeater(F)Landroid/graphics/Matrix; +HPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->getOpacity()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; +HPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->getStartOpacity()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; +HPLcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation;->setProgress(F)V +Lcom/airbnb/lottie/animation/keyframe/ValueCallbackKeyframeAnimation; +Lcom/airbnb/lottie/benchmark/app/BenchmarkActivity; +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity;-><clinit>()V +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity;-><init>()V +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity;->Content$lambda$0(Lcom/airbnb/lottie/compose/LottieCompositionResult;)Lcom/airbnb/lottie/LottieComposition; +HPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity;->Content$lambda$1(Lcom/airbnb/lottie/compose/LottieAnimationState;)F +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity;->Content(Landroidx/compose/runtime/Composer;I)V +HPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity;->access$Content$lambda$1(Lcom/airbnb/lottie/compose/LottieAnimationState;)F +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity;->onCreate(Landroid/os/Bundle;)V +Lcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$1$1; +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$1$1;-><init>(Lcom/airbnb/lottie/compose/LottieAnimationState;)V +HPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$1$1;->invoke()Ljava/lang/Float; +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$1$1;->invoke()Ljava/lang/Object; +Lcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$2; +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$2;-><init>(Lcom/airbnb/lottie/benchmark/app/BenchmarkActivity;I)V +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$2;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$Content$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/benchmark/app/BenchmarkActivity$onCreate$1; +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$onCreate$1;-><init>(Lcom/airbnb/lottie/benchmark/app/BenchmarkActivity;)V +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$onCreate$1;->invoke(Landroidx/compose/runtime/Composer;I)V +HSPLcom/airbnb/lottie/benchmark/app/BenchmarkActivity$onCreate$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lcom/airbnb/lottie/benchmark/app/R$raw; +Lcom/airbnb/lottie/manager/ImageAssetManager; +HSPLcom/airbnb/lottie/manager/ImageAssetManager;-><clinit>()V +HSPLcom/airbnb/lottie/manager/ImageAssetManager;-><init>(Landroid/graphics/drawable/Drawable$Callback;Ljava/lang/String;Lcom/airbnb/lottie/ImageAssetDelegate;Ljava/util/Map;)V +HPLcom/airbnb/lottie/manager/ImageAssetManager;->bitmapForId(Ljava/lang/String;)Landroid/graphics/Bitmap; +HPLcom/airbnb/lottie/manager/ImageAssetManager;->hasSameContext(Landroid/content/Context;)Z +HSPLcom/airbnb/lottie/manager/ImageAssetManager;->setDelegate(Lcom/airbnb/lottie/ImageAssetDelegate;)V +Lcom/airbnb/lottie/model/CubicCurveData; HSPLcom/airbnb/lottie/model/CubicCurveData;-><init>()V HSPLcom/airbnb/lottie/model/CubicCurveData;-><init>(Landroid/graphics/PointF;Landroid/graphics/PointF;Landroid/graphics/PointF;)V HSPLcom/airbnb/lottie/model/CubicCurveData;->getControlPoint1()Landroid/graphics/PointF; @@ -246,30 +335,65 @@ HSPLcom/airbnb/lottie/model/CubicCurveData;->setControlPoint1(FF)V HSPLcom/airbnb/lottie/model/CubicCurveData;->setControlPoint2(FF)V HSPLcom/airbnb/lottie/model/CubicCurveData;->setVertex(FF)V +Lcom/airbnb/lottie/model/DocumentData; +HSPLcom/airbnb/lottie/model/DocumentData;-><init>(Ljava/lang/String;Ljava/lang/String;FLcom/airbnb/lottie/model/DocumentData$Justification;IFFIIFZLandroid/graphics/PointF;Landroid/graphics/PointF;)V +HSPLcom/airbnb/lottie/model/DocumentData;->set(Ljava/lang/String;Ljava/lang/String;FLcom/airbnb/lottie/model/DocumentData$Justification;IFFIIFZLandroid/graphics/PointF;Landroid/graphics/PointF;)V +Lcom/airbnb/lottie/model/DocumentData$Justification; +HSPLcom/airbnb/lottie/model/DocumentData$Justification;->$values()[Lcom/airbnb/lottie/model/DocumentData$Justification; +HSPLcom/airbnb/lottie/model/DocumentData$Justification;-><clinit>()V +HSPLcom/airbnb/lottie/model/DocumentData$Justification;-><init>(Ljava/lang/String;I)V +HSPLcom/airbnb/lottie/model/DocumentData$Justification;->values()[Lcom/airbnb/lottie/model/DocumentData$Justification; +Lcom/airbnb/lottie/model/Font; +HSPLcom/airbnb/lottie/model/Font;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;F)V +HPLcom/airbnb/lottie/model/Font;->getFamily()Ljava/lang/String; +HSPLcom/airbnb/lottie/model/Font;->getName()Ljava/lang/String; +HPLcom/airbnb/lottie/model/Font;->getStyle()Ljava/lang/String; +Lcom/airbnb/lottie/model/FontCharacter; +HSPLcom/airbnb/lottie/model/FontCharacter;-><init>(Ljava/util/List;CDDLjava/lang/String;Ljava/lang/String;)V +HSPLcom/airbnb/lottie/model/FontCharacter;->getShapes()Ljava/util/List; +HPLcom/airbnb/lottie/model/FontCharacter;->getWidth()D +HPLcom/airbnb/lottie/model/FontCharacter;->hashCode()I +HPLcom/airbnb/lottie/model/FontCharacter;->hashFor(CLjava/lang/String;Ljava/lang/String;)I +Lcom/airbnb/lottie/model/KeyPathElement; +Lcom/airbnb/lottie/model/LottieCompositionCache; HSPLcom/airbnb/lottie/model/LottieCompositionCache;-><clinit>()V HSPLcom/airbnb/lottie/model/LottieCompositionCache;-><init>()V HSPLcom/airbnb/lottie/model/LottieCompositionCache;->get(Ljava/lang/String;)Lcom/airbnb/lottie/LottieComposition; HSPLcom/airbnb/lottie/model/LottieCompositionCache;->getInstance()Lcom/airbnb/lottie/model/LottieCompositionCache; HSPLcom/airbnb/lottie/model/LottieCompositionCache;->put(Ljava/lang/String;Lcom/airbnb/lottie/LottieComposition;)V +Lcom/airbnb/lottie/model/animatable/AnimatableColorValue; HSPLcom/airbnb/lottie/model/animatable/AnimatableColorValue;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/model/animatable/AnimatableColorValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; +Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; HSPLcom/airbnb/lottie/model/animatable/AnimatableFloatValue;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/model/animatable/AnimatableFloatValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; HSPLcom/airbnb/lottie/model/animatable/AnimatableFloatValue;->getKeyframes()Ljava/util/List; HSPLcom/airbnb/lottie/model/animatable/AnimatableFloatValue;->isStatic()Z +Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue; HSPLcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; +Lcom/airbnb/lottie/model/animatable/AnimatablePathValue; HSPLcom/airbnb/lottie/model/animatable/AnimatablePathValue;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/model/animatable/AnimatablePathValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; HSPLcom/airbnb/lottie/model/animatable/AnimatablePathValue;->getKeyframes()Ljava/util/List; HSPLcom/airbnb/lottie/model/animatable/AnimatablePathValue;->isStatic()Z +Lcom/airbnb/lottie/model/animatable/AnimatablePointValue; HSPLcom/airbnb/lottie/model/animatable/AnimatablePointValue;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/model/animatable/AnimatablePointValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; +Lcom/airbnb/lottie/model/animatable/AnimatableScaleValue; HSPLcom/airbnb/lottie/model/animatable/AnimatableScaleValue;-><init>(Ljava/util/List;)V +HSPLcom/airbnb/lottie/model/animatable/AnimatableScaleValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; HSPLcom/airbnb/lottie/model/animatable/AnimatableScaleValue;->getKeyframes()Ljava/util/List; HSPLcom/airbnb/lottie/model/animatable/AnimatableScaleValue;->isStatic()Z +Lcom/airbnb/lottie/model/animatable/AnimatableShapeValue; HSPLcom/airbnb/lottie/model/animatable/AnimatableShapeValue;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/model/animatable/AnimatableShapeValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation; +Lcom/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue; +Lcom/airbnb/lottie/model/animatable/AnimatableTextFrame; +HSPLcom/airbnb/lottie/model/animatable/AnimatableTextFrame;-><init>(Ljava/util/List;)V +HSPLcom/airbnb/lottie/model/animatable/AnimatableTextFrame;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/TextKeyframeAnimation; +Lcom/airbnb/lottie/model/animatable/AnimatableTextProperties; +Lcom/airbnb/lottie/model/animatable/AnimatableTransform; HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;-><init>()V HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;-><init>(Lcom/airbnb/lottie/model/animatable/AnimatablePathValue;Lcom/airbnb/lottie/model/animatable/AnimatableValue;Lcom/airbnb/lottie/model/animatable/AnimatableScaleValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;)V HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation; @@ -282,53 +406,92 @@ HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;->getSkew()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;->getSkewAngle()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;->getStartOpacity()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; -HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +HSPLcom/airbnb/lottie/model/animatable/AnimatableTransform;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/animatable/AnimatableValue; +Lcom/airbnb/lottie/model/animatable/BaseAnimatableValue; HSPLcom/airbnb/lottie/model/animatable/BaseAnimatableValue;-><init>(Ljava/util/List;)V HSPLcom/airbnb/lottie/model/animatable/BaseAnimatableValue;->getKeyframes()Ljava/util/List; HSPLcom/airbnb/lottie/model/animatable/BaseAnimatableValue;->isStatic()Z +Lcom/airbnb/lottie/model/content/BlurEffect; +Lcom/airbnb/lottie/model/content/CircleShape; HSPLcom/airbnb/lottie/model/content/CircleShape;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/animatable/AnimatableValue;Lcom/airbnb/lottie/model/animatable/AnimatablePointValue;ZZ)V HSPLcom/airbnb/lottie/model/content/CircleShape;->getName()Ljava/lang/String; HSPLcom/airbnb/lottie/model/content/CircleShape;->getPosition()Lcom/airbnb/lottie/model/animatable/AnimatableValue; HSPLcom/airbnb/lottie/model/content/CircleShape;->getSize()Lcom/airbnb/lottie/model/animatable/AnimatablePointValue; HSPLcom/airbnb/lottie/model/content/CircleShape;->isHidden()Z HSPLcom/airbnb/lottie/model/content/CircleShape;->isReversed()Z -HSPLcom/airbnb/lottie/model/content/CircleShape;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +HSPLcom/airbnb/lottie/model/content/CircleShape;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/ContentModel; +Lcom/airbnb/lottie/model/content/Mask$MaskMode; +HSPLcom/airbnb/lottie/model/content/Mask$MaskMode;->$values()[Lcom/airbnb/lottie/model/content/Mask$MaskMode; HSPLcom/airbnb/lottie/model/content/Mask$MaskMode;-><clinit>()V HSPLcom/airbnb/lottie/model/content/Mask$MaskMode;-><init>(Ljava/lang/String;I)V HSPLcom/airbnb/lottie/model/content/Mask$MaskMode;->values()[Lcom/airbnb/lottie/model/content/Mask$MaskMode; +Lcom/airbnb/lottie/model/content/PolystarShape; +HSPLcom/airbnb/lottie/model/content/PolystarShape;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/content/PolystarShape$Type;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;ZZ)V +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getInnerRadius()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getInnerRoundedness()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getName()Ljava/lang/String; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getOuterRadius()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getOuterRoundedness()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getPoints()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getPosition()Lcom/airbnb/lottie/model/animatable/AnimatableValue; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getRotation()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->getType()Lcom/airbnb/lottie/model/content/PolystarShape$Type; +HSPLcom/airbnb/lottie/model/content/PolystarShape;->isHidden()Z +HSPLcom/airbnb/lottie/model/content/PolystarShape;->isReversed()Z +HSPLcom/airbnb/lottie/model/content/PolystarShape;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/PolystarShape$Type; +HSPLcom/airbnb/lottie/model/content/PolystarShape$Type;->$values()[Lcom/airbnb/lottie/model/content/PolystarShape$Type; +HSPLcom/airbnb/lottie/model/content/PolystarShape$Type;-><clinit>()V +HSPLcom/airbnb/lottie/model/content/PolystarShape$Type;-><init>(Ljava/lang/String;II)V +HSPLcom/airbnb/lottie/model/content/PolystarShape$Type;->forValue(I)Lcom/airbnb/lottie/model/content/PolystarShape$Type; +HSPLcom/airbnb/lottie/model/content/PolystarShape$Type;->values()[Lcom/airbnb/lottie/model/content/PolystarShape$Type; +Lcom/airbnb/lottie/model/content/RectangleShape; +HSPLcom/airbnb/lottie/model/content/RectangleShape;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/animatable/AnimatableValue;Lcom/airbnb/lottie/model/animatable/AnimatableValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Z)V +HSPLcom/airbnb/lottie/model/content/RectangleShape;->getCornerRadius()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/RectangleShape;->getName()Ljava/lang/String; +HSPLcom/airbnb/lottie/model/content/RectangleShape;->getPosition()Lcom/airbnb/lottie/model/animatable/AnimatableValue; +HSPLcom/airbnb/lottie/model/content/RectangleShape;->getSize()Lcom/airbnb/lottie/model/animatable/AnimatableValue; +HSPLcom/airbnb/lottie/model/content/RectangleShape;->isHidden()Z +HSPLcom/airbnb/lottie/model/content/RectangleShape;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/Repeater; +HSPLcom/airbnb/lottie/model/content/Repeater;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableTransform;Z)V +HSPLcom/airbnb/lottie/model/content/Repeater;->getCopies()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/Repeater;->getName()Ljava/lang/String; +HSPLcom/airbnb/lottie/model/content/Repeater;->getOffset()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; +HSPLcom/airbnb/lottie/model/content/Repeater;->getTransform()Lcom/airbnb/lottie/model/animatable/AnimatableTransform; +HSPLcom/airbnb/lottie/model/content/Repeater;->isHidden()Z +HSPLcom/airbnb/lottie/model/content/Repeater;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/ShapeData; HSPLcom/airbnb/lottie/model/content/ShapeData;-><init>()V HSPLcom/airbnb/lottie/model/content/ShapeData;-><init>(Landroid/graphics/PointF;ZLjava/util/List;)V HSPLcom/airbnb/lottie/model/content/ShapeData;->getCurves()Ljava/util/List; HSPLcom/airbnb/lottie/model/content/ShapeData;->getInitialPoint()Landroid/graphics/PointF; -HSPLcom/airbnb/lottie/model/content/ShapeData;->interpolateBetween(Lcom/airbnb/lottie/model/content/ShapeData;Lcom/airbnb/lottie/model/content/ShapeData;F)V +HPLcom/airbnb/lottie/model/content/ShapeData;->interpolateBetween(Lcom/airbnb/lottie/model/content/ShapeData;Lcom/airbnb/lottie/model/content/ShapeData;F)V HSPLcom/airbnb/lottie/model/content/ShapeData;->isClosed()Z HSPLcom/airbnb/lottie/model/content/ShapeData;->setInitialPoint(FF)V +Lcom/airbnb/lottie/model/content/ShapeFill; HSPLcom/airbnb/lottie/model/content/ShapeFill;-><init>(Ljava/lang/String;ZLandroid/graphics/Path$FillType;Lcom/airbnb/lottie/model/animatable/AnimatableColorValue;Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Z)V HSPLcom/airbnb/lottie/model/content/ShapeFill;->getColor()Lcom/airbnb/lottie/model/animatable/AnimatableColorValue; HSPLcom/airbnb/lottie/model/content/ShapeFill;->getFillType()Landroid/graphics/Path$FillType; HSPLcom/airbnb/lottie/model/content/ShapeFill;->getName()Ljava/lang/String; HSPLcom/airbnb/lottie/model/content/ShapeFill;->getOpacity()Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue; HSPLcom/airbnb/lottie/model/content/ShapeFill;->isHidden()Z -HSPLcom/airbnb/lottie/model/content/ShapeFill;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +HSPLcom/airbnb/lottie/model/content/ShapeFill;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/ShapeGroup; HSPLcom/airbnb/lottie/model/content/ShapeGroup;-><init>(Ljava/lang/String;Ljava/util/List;Z)V HSPLcom/airbnb/lottie/model/content/ShapeGroup;->getItems()Ljava/util/List; HSPLcom/airbnb/lottie/model/content/ShapeGroup;->getName()Ljava/lang/String; HSPLcom/airbnb/lottie/model/content/ShapeGroup;->isHidden()Z -HSPLcom/airbnb/lottie/model/content/ShapeGroup;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +HSPLcom/airbnb/lottie/model/content/ShapeGroup;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/ShapePath; HSPLcom/airbnb/lottie/model/content/ShapePath;-><init>(Ljava/lang/String;ILcom/airbnb/lottie/model/animatable/AnimatableShapeValue;Z)V HSPLcom/airbnb/lottie/model/content/ShapePath;->getName()Ljava/lang/String; HSPLcom/airbnb/lottie/model/content/ShapePath;->getShapePath()Lcom/airbnb/lottie/model/animatable/AnimatableShapeValue; HSPLcom/airbnb/lottie/model/content/ShapePath;->isHidden()Z -HSPLcom/airbnb/lottie/model/content/ShapePath;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; -HSPLcom/airbnb/lottie/model/content/ShapeStroke$1;-><clinit>()V -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;-><clinit>()V -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;-><init>(Ljava/lang/String;I)V -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;->toPaintCap()Landroid/graphics/Paint$Cap; -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;->values()[Lcom/airbnb/lottie/model/content/ShapeStroke$LineCapType; -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;-><clinit>()V -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;-><init>(Ljava/lang/String;I)V -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;->toPaintJoin()Landroid/graphics/Paint$Join; -HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;->values()[Lcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType; +HSPLcom/airbnb/lottie/model/content/ShapePath;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/ShapeStroke; HSPLcom/airbnb/lottie/model/content/ShapeStroke;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Ljava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableColorValue;Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;Lcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;FZ)V HSPLcom/airbnb/lottie/model/content/ShapeStroke;->getCapType()Lcom/airbnb/lottie/model/content/ShapeStroke$LineCapType; HSPLcom/airbnb/lottie/model/content/ShapeStroke;->getColor()Lcom/airbnb/lottie/model/animatable/AnimatableColorValue; @@ -340,85 +503,134 @@ HSPLcom/airbnb/lottie/model/content/ShapeStroke;->getOpacity()Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue; HSPLcom/airbnb/lottie/model/content/ShapeStroke;->getWidth()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; HSPLcom/airbnb/lottie/model/content/ShapeStroke;->isHidden()Z -HSPLcom/airbnb/lottie/model/content/ShapeStroke;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; -HSPLcom/airbnb/lottie/model/layer/BaseLayer$$ExternalSyntheticLambda0;-><init>(Lcom/airbnb/lottie/model/layer/BaseLayer;)V -HSPLcom/airbnb/lottie/model/layer/BaseLayer$1;-><clinit>()V -HSPLcom/airbnb/lottie/model/layer/BaseLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V +HSPLcom/airbnb/lottie/model/content/ShapeStroke;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; +Lcom/airbnb/lottie/model/content/ShapeStroke$1; +HSPLcom/airbnb/lottie/model/content/ShapeStroke$1;-><clinit>()V +Lcom/airbnb/lottie/model/content/ShapeStroke$LineCapType; +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;->$values()[Lcom/airbnb/lottie/model/content/ShapeStroke$LineCapType; +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;-><clinit>()V +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;-><init>(Ljava/lang/String;I)V +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;->toPaintCap()Landroid/graphics/Paint$Cap; +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineCapType;->values()[Lcom/airbnb/lottie/model/content/ShapeStroke$LineCapType; +Lcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType; +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;->$values()[Lcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType; +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;-><clinit>()V +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;-><init>(Ljava/lang/String;I)V +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;->toPaintJoin()Landroid/graphics/Paint$Join; +HSPLcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType;->values()[Lcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType; +Lcom/airbnb/lottie/model/layer/BaseLayer; +HPLcom/airbnb/lottie/model/layer/BaseLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->addAnimation(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V -HSPLcom/airbnb/lottie/model/layer/BaseLayer;->buildParentLayerListIfNeeded()V -HSPLcom/airbnb/lottie/model/layer/BaseLayer;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HPLcom/airbnb/lottie/model/layer/BaseLayer;->buildParentLayerListIfNeeded()V +HPLcom/airbnb/lottie/model/layer/BaseLayer;->clearCanvas(Landroid/graphics/Canvas;)V +HPLcom/airbnb/lottie/model/layer/BaseLayer;->draw(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->forModel(Lcom/airbnb/lottie/model/layer/CompositionLayer;Lcom/airbnb/lottie/model/layer/Layer;Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/layer/BaseLayer; HSPLcom/airbnb/lottie/model/layer/BaseLayer;->getBlurEffect()Lcom/airbnb/lottie/model/content/BlurEffect; +HPLcom/airbnb/lottie/model/layer/BaseLayer;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->getDropShadowEffect()Lcom/airbnb/lottie/parser/DropShadowEffect; HSPLcom/airbnb/lottie/model/layer/BaseLayer;->getLayerModel()Lcom/airbnb/lottie/model/layer/Layer; -HSPLcom/airbnb/lottie/model/layer/BaseLayer;->hasMasksOnThisLayer()Z -HSPLcom/airbnb/lottie/model/layer/BaseLayer;->hasMatteOnThisLayer()Z +HPLcom/airbnb/lottie/model/layer/BaseLayer;->hasMasksOnThisLayer()Z +HPLcom/airbnb/lottie/model/layer/BaseLayer;->hasMatteOnThisLayer()Z +HPLcom/airbnb/lottie/model/layer/BaseLayer;->intersectBoundsWithMask(Landroid/graphics/RectF;Landroid/graphics/Matrix;)V +HPLcom/airbnb/lottie/model/layer/BaseLayer;->intersectBoundsWithMatte(Landroid/graphics/RectF;Landroid/graphics/Matrix;)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->invalidateSelf()V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->onValueChanged()V -HSPLcom/airbnb/lottie/model/layer/BaseLayer;->recordRenderTime(F)V +HPLcom/airbnb/lottie/model/layer/BaseLayer;->recordRenderTime(F)V +HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setMatteLayer(Lcom/airbnb/lottie/model/layer/BaseLayer;)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setParentLayer(Lcom/airbnb/lottie/model/layer/BaseLayer;)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setProgress(F)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setVisible(Z)V HSPLcom/airbnb/lottie/model/layer/BaseLayer;->setupInOutAnimations()V -HSPLcom/airbnb/lottie/model/layer/CompositionLayer$1;-><clinit>()V +Lcom/airbnb/lottie/model/layer/BaseLayer$$ExternalSyntheticLambda0; +HSPLcom/airbnb/lottie/model/layer/BaseLayer$$ExternalSyntheticLambda0;-><init>(Lcom/airbnb/lottie/model/layer/BaseLayer;)V +Lcom/airbnb/lottie/model/layer/BaseLayer$1; +HSPLcom/airbnb/lottie/model/layer/BaseLayer$1;-><clinit>()V +Lcom/airbnb/lottie/model/layer/CompositionLayer; HSPLcom/airbnb/lottie/model/layer/CompositionLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;Ljava/util/List;Lcom/airbnb/lottie/LottieComposition;)V -HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V -HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->setProgress(F)V -HSPLcom/airbnb/lottie/model/layer/Layer$LayerType;-><clinit>()V -HSPLcom/airbnb/lottie/model/layer/Layer$LayerType;-><init>(Ljava/lang/String;I)V -HSPLcom/airbnb/lottie/model/layer/Layer$LayerType;->values()[Lcom/airbnb/lottie/model/layer/Layer$LayerType; -HSPLcom/airbnb/lottie/model/layer/Layer$MatteType;-><clinit>()V -HSPLcom/airbnb/lottie/model/layer/Layer$MatteType;-><init>(Ljava/lang/String;I)V -HSPLcom/airbnb/lottie/model/layer/Layer$MatteType;->values()[Lcom/airbnb/lottie/model/layer/Layer$MatteType; -HSPLcom/airbnb/lottie/model/layer/Layer;-><init>(Ljava/util/List;Lcom/airbnb/lottie/LottieComposition;Ljava/lang/String;JLcom/airbnb/lottie/model/layer/Layer$LayerType;JLjava/lang/String;Ljava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableTransform;IIIFFIILcom/airbnb/lottie/model/animatable/AnimatableTextFrame;Lcom/airbnb/lottie/model/animatable/AnimatableTextProperties;Ljava/util/List;Lcom/airbnb/lottie/model/layer/Layer$MatteType;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;ZLcom/airbnb/lottie/model/content/BlurEffect;Lcom/airbnb/lottie/parser/DropShadowEffect;)V +HPLcom/airbnb/lottie/model/layer/CompositionLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HSPLcom/airbnb/lottie/model/layer/CompositionLayer;->setClipToCompositionBounds(Z)V +HPLcom/airbnb/lottie/model/layer/CompositionLayer;->setProgress(F)V +Lcom/airbnb/lottie/model/layer/CompositionLayer$1; +HSPLcom/airbnb/lottie/model/layer/CompositionLayer$1;-><clinit>()V +Lcom/airbnb/lottie/model/layer/ImageLayer; +HSPLcom/airbnb/lottie/model/layer/ImageLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V +HPLcom/airbnb/lottie/model/layer/ImageLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HPLcom/airbnb/lottie/model/layer/ImageLayer;->getBitmap()Landroid/graphics/Bitmap; +Lcom/airbnb/lottie/model/layer/Layer; +HSPLcom/airbnb/lottie/model/layer/Layer;-><init>(Ljava/util/List;Lcom/airbnb/lottie/LottieComposition;Ljava/lang/String;JLcom/airbnb/lottie/model/layer/Layer$LayerType;JLjava/lang/String;Ljava/util/List;Lcom/airbnb/lottie/model/animatable/AnimatableTransform;IIIFFFFLcom/airbnb/lottie/model/animatable/AnimatableTextFrame;Lcom/airbnb/lottie/model/animatable/AnimatableTextProperties;Ljava/util/List;Lcom/airbnb/lottie/model/layer/Layer$MatteType;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;ZLcom/airbnb/lottie/model/content/BlurEffect;Lcom/airbnb/lottie/parser/DropShadowEffect;)V HSPLcom/airbnb/lottie/model/layer/Layer;->getBlurEffect()Lcom/airbnb/lottie/model/content/BlurEffect; +HSPLcom/airbnb/lottie/model/layer/Layer;->getComposition()Lcom/airbnb/lottie/LottieComposition; HSPLcom/airbnb/lottie/model/layer/Layer;->getDropShadowEffect()Lcom/airbnb/lottie/parser/DropShadowEffect; HSPLcom/airbnb/lottie/model/layer/Layer;->getId()J HSPLcom/airbnb/lottie/model/layer/Layer;->getInOutKeyframes()Ljava/util/List; HSPLcom/airbnb/lottie/model/layer/Layer;->getLayerType()Lcom/airbnb/lottie/model/layer/Layer$LayerType; HSPLcom/airbnb/lottie/model/layer/Layer;->getMasks()Ljava/util/List; HSPLcom/airbnb/lottie/model/layer/Layer;->getMatteType()Lcom/airbnb/lottie/model/layer/Layer$MatteType; -HSPLcom/airbnb/lottie/model/layer/Layer;->getName()Ljava/lang/String; +HPLcom/airbnb/lottie/model/layer/Layer;->getName()Ljava/lang/String; HSPLcom/airbnb/lottie/model/layer/Layer;->getParentId()J -HSPLcom/airbnb/lottie/model/layer/Layer;->getPreCompHeight()I -HSPLcom/airbnb/lottie/model/layer/Layer;->getPreCompWidth()I -HSPLcom/airbnb/lottie/model/layer/Layer;->getRefId()Ljava/lang/String; +HSPLcom/airbnb/lottie/model/layer/Layer;->getPreCompHeight()F +HSPLcom/airbnb/lottie/model/layer/Layer;->getPreCompWidth()F +HPLcom/airbnb/lottie/model/layer/Layer;->getRefId()Ljava/lang/String; HSPLcom/airbnb/lottie/model/layer/Layer;->getShapes()Ljava/util/List; +HPLcom/airbnb/lottie/model/layer/Layer;->getSolidColor()I +HPLcom/airbnb/lottie/model/layer/Layer;->getSolidHeight()I +HPLcom/airbnb/lottie/model/layer/Layer;->getSolidWidth()I HSPLcom/airbnb/lottie/model/layer/Layer;->getStartProgress()F +HSPLcom/airbnb/lottie/model/layer/Layer;->getText()Lcom/airbnb/lottie/model/animatable/AnimatableTextFrame; +HSPLcom/airbnb/lottie/model/layer/Layer;->getTextProperties()Lcom/airbnb/lottie/model/animatable/AnimatableTextProperties; HSPLcom/airbnb/lottie/model/layer/Layer;->getTimeRemapping()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; -HSPLcom/airbnb/lottie/model/layer/Layer;->getTimeStretch()F +HPLcom/airbnb/lottie/model/layer/Layer;->getTimeStretch()F HSPLcom/airbnb/lottie/model/layer/Layer;->getTransform()Lcom/airbnb/lottie/model/animatable/AnimatableTransform; -HSPLcom/airbnb/lottie/model/layer/Layer;->isHidden()Z -HSPLcom/airbnb/lottie/model/layer/ShapeLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;Lcom/airbnb/lottie/model/layer/CompositionLayer;)V -HSPLcom/airbnb/lottie/model/layer/ShapeLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HPLcom/airbnb/lottie/model/layer/Layer;->isHidden()Z +Lcom/airbnb/lottie/model/layer/Layer$LayerType; +HSPLcom/airbnb/lottie/model/layer/Layer$LayerType;->$values()[Lcom/airbnb/lottie/model/layer/Layer$LayerType; +HSPLcom/airbnb/lottie/model/layer/Layer$LayerType;-><clinit>()V +HSPLcom/airbnb/lottie/model/layer/Layer$LayerType;-><init>(Ljava/lang/String;I)V +HSPLcom/airbnb/lottie/model/layer/Layer$LayerType;->values()[Lcom/airbnb/lottie/model/layer/Layer$LayerType; +Lcom/airbnb/lottie/model/layer/Layer$MatteType; +HSPLcom/airbnb/lottie/model/layer/Layer$MatteType;->$values()[Lcom/airbnb/lottie/model/layer/Layer$MatteType; +HSPLcom/airbnb/lottie/model/layer/Layer$MatteType;-><clinit>()V +HSPLcom/airbnb/lottie/model/layer/Layer$MatteType;-><init>(Ljava/lang/String;I)V +HSPLcom/airbnb/lottie/model/layer/Layer$MatteType;->values()[Lcom/airbnb/lottie/model/layer/Layer$MatteType; +Lcom/airbnb/lottie/model/layer/ShapeLayer; +HSPLcom/airbnb/lottie/model/layer/ShapeLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;Lcom/airbnb/lottie/model/layer/CompositionLayer;Lcom/airbnb/lottie/LottieComposition;)V +HPLcom/airbnb/lottie/model/layer/ShapeLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V HSPLcom/airbnb/lottie/model/layer/ShapeLayer;->getBlurEffect()Lcom/airbnb/lottie/model/content/BlurEffect; +HPLcom/airbnb/lottie/model/layer/ShapeLayer;->getBounds(Landroid/graphics/RectF;Landroid/graphics/Matrix;Z)V HSPLcom/airbnb/lottie/model/layer/ShapeLayer;->getDropShadowEffect()Lcom/airbnb/lottie/parser/DropShadowEffect; -HSPLcom/airbnb/lottie/network/DefaultLottieFetchResult;-><init>(Ljava/net/HttpURLConnection;)V -HSPLcom/airbnb/lottie/network/DefaultLottieFetchResult;->bodyByteStream()Ljava/io/InputStream; -HSPLcom/airbnb/lottie/network/DefaultLottieFetchResult;->close()V -HSPLcom/airbnb/lottie/network/DefaultLottieFetchResult;->contentType()Ljava/lang/String; -HSPLcom/airbnb/lottie/network/DefaultLottieFetchResult;->isSuccessful()Z -HSPLcom/airbnb/lottie/network/DefaultLottieNetworkFetcher;-><init>()V -HSPLcom/airbnb/lottie/network/DefaultLottieNetworkFetcher;->fetchSync(Ljava/lang/String;)Lcom/airbnb/lottie/network/LottieFetchResult; -HSPLcom/airbnb/lottie/network/FileExtension;-><clinit>()V -HSPLcom/airbnb/lottie/network/FileExtension;-><init>(Ljava/lang/String;ILjava/lang/String;)V -HSPLcom/airbnb/lottie/network/FileExtension;->tempExtension()Ljava/lang/String; -HSPLcom/airbnb/lottie/network/NetworkCache;-><init>(Lcom/airbnb/lottie/network/LottieNetworkCacheProvider;)V -HSPLcom/airbnb/lottie/network/NetworkCache;->fetch(Ljava/lang/String;)Landroid/util/Pair; -HSPLcom/airbnb/lottie/network/NetworkCache;->filenameForUrl(Ljava/lang/String;Lcom/airbnb/lottie/network/FileExtension;Z)Ljava/lang/String; -HSPLcom/airbnb/lottie/network/NetworkCache;->getCachedFile(Ljava/lang/String;)Ljava/io/File; -HSPLcom/airbnb/lottie/network/NetworkCache;->parentDir()Ljava/io/File; -HSPLcom/airbnb/lottie/network/NetworkCache;->renameTempFile(Ljava/lang/String;Lcom/airbnb/lottie/network/FileExtension;)V -HSPLcom/airbnb/lottie/network/NetworkCache;->writeTempCacheFile(Ljava/lang/String;Ljava/io/InputStream;Lcom/airbnb/lottie/network/FileExtension;)Ljava/io/File; -HSPLcom/airbnb/lottie/network/NetworkFetcher;-><init>(Lcom/airbnb/lottie/network/NetworkCache;Lcom/airbnb/lottie/network/LottieNetworkFetcher;)V -HSPLcom/airbnb/lottie/network/NetworkFetcher;->fetchFromCache(Ljava/lang/String;Ljava/lang/String;)Lcom/airbnb/lottie/LottieComposition; -HSPLcom/airbnb/lottie/network/NetworkFetcher;->fetchFromNetwork(Ljava/lang/String;Ljava/lang/String;)Lcom/airbnb/lottie/LottieResult; -HSPLcom/airbnb/lottie/network/NetworkFetcher;->fetchSync(Ljava/lang/String;Ljava/lang/String;)Lcom/airbnb/lottie/LottieResult; -HSPLcom/airbnb/lottie/network/NetworkFetcher;->fromInputStream(Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;Ljava/lang/String;)Lcom/airbnb/lottie/LottieResult; -HSPLcom/airbnb/lottie/network/NetworkFetcher;->fromJsonStream(Ljava/lang/String;Ljava/io/InputStream;Ljava/lang/String;)Lcom/airbnb/lottie/LottieResult; +Lcom/airbnb/lottie/model/layer/SolidLayer; +HSPLcom/airbnb/lottie/model/layer/SolidLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V +HPLcom/airbnb/lottie/model/layer/SolidLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +Lcom/airbnb/lottie/model/layer/TextLayer; +HSPLcom/airbnb/lottie/model/layer/TextLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V +HPLcom/airbnb/lottie/model/layer/TextLayer;->configurePaint(Lcom/airbnb/lottie/model/DocumentData;I)V +HPLcom/airbnb/lottie/model/layer/TextLayer;->drawCharacterAsGlyph(Lcom/airbnb/lottie/model/FontCharacter;FLcom/airbnb/lottie/model/DocumentData;Landroid/graphics/Canvas;)V +HPLcom/airbnb/lottie/model/layer/TextLayer;->drawGlyph(Landroid/graphics/Path;Landroid/graphics/Paint;Landroid/graphics/Canvas;)V +HSPLcom/airbnb/lottie/model/layer/TextLayer;->drawGlyphTextLine(Ljava/lang/String;Lcom/airbnb/lottie/model/DocumentData;Lcom/airbnb/lottie/model/Font;Landroid/graphics/Canvas;FFF)V +HPLcom/airbnb/lottie/model/layer/TextLayer;->drawLayer(Landroid/graphics/Canvas;Landroid/graphics/Matrix;I)V +HPLcom/airbnb/lottie/model/layer/TextLayer;->drawTextWithGlyphs(Lcom/airbnb/lottie/model/DocumentData;Landroid/graphics/Matrix;Lcom/airbnb/lottie/model/Font;Landroid/graphics/Canvas;)V +HPLcom/airbnb/lottie/model/layer/TextLayer;->ensureEnoughSubLines(I)Lcom/airbnb/lottie/model/layer/TextLayer$TextSubLine; +HPLcom/airbnb/lottie/model/layer/TextLayer;->getContentsForCharacter(Lcom/airbnb/lottie/model/FontCharacter;)Ljava/util/List; +HPLcom/airbnb/lottie/model/layer/TextLayer;->getTextLines(Ljava/lang/String;)Ljava/util/List; +HPLcom/airbnb/lottie/model/layer/TextLayer;->offsetCanvas(Landroid/graphics/Canvas;Lcom/airbnb/lottie/model/DocumentData;IF)V +HSPLcom/airbnb/lottie/model/layer/TextLayer;->splitGlyphTextIntoLines(Ljava/lang/String;FLcom/airbnb/lottie/model/Font;FFZ)Ljava/util/List; +Lcom/airbnb/lottie/model/layer/TextLayer$1; +HSPLcom/airbnb/lottie/model/layer/TextLayer$1;-><init>(Lcom/airbnb/lottie/model/layer/TextLayer;I)V +Lcom/airbnb/lottie/model/layer/TextLayer$2; +HSPLcom/airbnb/lottie/model/layer/TextLayer$2;-><init>(Lcom/airbnb/lottie/model/layer/TextLayer;I)V +Lcom/airbnb/lottie/model/layer/TextLayer$3; +HSPLcom/airbnb/lottie/model/layer/TextLayer$3;-><clinit>()V +Lcom/airbnb/lottie/model/layer/TextLayer$TextSubLine; +HSPLcom/airbnb/lottie/model/layer/TextLayer$TextSubLine;-><init>()V +HSPLcom/airbnb/lottie/model/layer/TextLayer$TextSubLine;-><init>(Lcom/airbnb/lottie/model/layer/TextLayer$1;)V +HPLcom/airbnb/lottie/model/layer/TextLayer$TextSubLine;->access$000(Lcom/airbnb/lottie/model/layer/TextLayer$TextSubLine;)F +HPLcom/airbnb/lottie/model/layer/TextLayer$TextSubLine;->access$100(Lcom/airbnb/lottie/model/layer/TextLayer$TextSubLine;)Ljava/lang/String; +HPLcom/airbnb/lottie/model/layer/TextLayer$TextSubLine;->set(Ljava/lang/String;F)V +Lcom/airbnb/lottie/parser/AnimatablePathValueParser; HSPLcom/airbnb/lottie/parser/AnimatablePathValueParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/AnimatablePathValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatablePathValue; HSPLcom/airbnb/lottie/parser/AnimatablePathValueParser;->parseSplitPath(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableValue; +Lcom/airbnb/lottie/parser/AnimatableTransformParser; HSPLcom/airbnb/lottie/parser/AnimatableTransformParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/AnimatableTransformParser;->isAnchorPointIdentity(Lcom/airbnb/lottie/model/animatable/AnimatablePathValue;)Z HSPLcom/airbnb/lottie/parser/AnimatableTransformParser;->isPositionIdentity(Lcom/airbnb/lottie/model/animatable/AnimatableValue;)Z @@ -427,100 +639,150 @@ HSPLcom/airbnb/lottie/parser/AnimatableTransformParser;->isSkewAngleIdentity(Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;)Z HSPLcom/airbnb/lottie/parser/AnimatableTransformParser;->isSkewIdentity(Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;)Z HSPLcom/airbnb/lottie/parser/AnimatableTransformParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableTransform; +Lcom/airbnb/lottie/parser/AnimatableValueParser; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/parser/ValueParser;)Ljava/util/List; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/parser/ValueParser;)Ljava/util/List; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parseColor(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableColorValue; +HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parseDocumentData(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableTextFrame; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parseFloat(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parseFloat(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;Z)Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parseInteger(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parsePoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatablePointValue; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parseScale(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableScaleValue; HSPLcom/airbnb/lottie/parser/AnimatableValueParser;->parseShapeData(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/animatable/AnimatableShapeValue; +Lcom/airbnb/lottie/parser/CircleShapeParser; HSPLcom/airbnb/lottie/parser/CircleShapeParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/CircleShapeParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;I)Lcom/airbnb/lottie/model/content/CircleShape; +Lcom/airbnb/lottie/parser/ColorParser; HSPLcom/airbnb/lottie/parser/ColorParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ColorParser;-><init>()V HSPLcom/airbnb/lottie/parser/ColorParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Integer; HSPLcom/airbnb/lottie/parser/ColorParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; +Lcom/airbnb/lottie/parser/ContentModelParser; HSPLcom/airbnb/lottie/parser/ContentModelParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ContentModelParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/ContentModel; +Lcom/airbnb/lottie/parser/DocumentDataParser; +HSPLcom/airbnb/lottie/parser/DocumentDataParser;-><clinit>()V +HSPLcom/airbnb/lottie/parser/DocumentDataParser;-><init>()V +HSPLcom/airbnb/lottie/parser/DocumentDataParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Lcom/airbnb/lottie/model/DocumentData; +HSPLcom/airbnb/lottie/parser/DocumentDataParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; +Lcom/airbnb/lottie/parser/DropShadowEffect; +Lcom/airbnb/lottie/parser/FloatParser; HSPLcom/airbnb/lottie/parser/FloatParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/FloatParser;-><init>()V HSPLcom/airbnb/lottie/parser/FloatParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Float; HSPLcom/airbnb/lottie/parser/FloatParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; +Lcom/airbnb/lottie/parser/FontCharacterParser; +HSPLcom/airbnb/lottie/parser/FontCharacterParser;-><clinit>()V +HSPLcom/airbnb/lottie/parser/FontCharacterParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/FontCharacter; +Lcom/airbnb/lottie/parser/FontParser; +HSPLcom/airbnb/lottie/parser/FontParser;-><clinit>()V +HSPLcom/airbnb/lottie/parser/FontParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;)Lcom/airbnb/lottie/model/Font; +Lcom/airbnb/lottie/parser/IntegerParser; HSPLcom/airbnb/lottie/parser/IntegerParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/IntegerParser;-><init>()V HSPLcom/airbnb/lottie/parser/IntegerParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Integer; HSPLcom/airbnb/lottie/parser/IntegerParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; -HSPLcom/airbnb/lottie/parser/JsonUtils$1;-><clinit>()V +Lcom/airbnb/lottie/parser/JsonUtils; HSPLcom/airbnb/lottie/parser/JsonUtils;-><clinit>()V HSPLcom/airbnb/lottie/parser/JsonUtils;->jsonArrayToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; HSPLcom/airbnb/lottie/parser/JsonUtils;->jsonNumbersToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; HSPLcom/airbnb/lottie/parser/JsonUtils;->jsonObjectToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; +HSPLcom/airbnb/lottie/parser/JsonUtils;->jsonToColor(Lcom/airbnb/lottie/parser/moshi/JsonReader;)I HSPLcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; HSPLcom/airbnb/lottie/parser/JsonUtils;->jsonToPoints(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/util/List; HSPLcom/airbnb/lottie/parser/JsonUtils;->valueFromObject(Lcom/airbnb/lottie/parser/moshi/JsonReader;)F +Lcom/airbnb/lottie/parser/JsonUtils$1; +HSPLcom/airbnb/lottie/parser/JsonUtils$1;-><clinit>()V +Lcom/airbnb/lottie/parser/KeyframeParser; HSPLcom/airbnb/lottie/parser/KeyframeParser;-><clinit>()V -HSPLcom/airbnb/lottie/parser/KeyframeParser;->getInterpolator(I)Ljava/lang/ref/WeakReference; HSPLcom/airbnb/lottie/parser/KeyframeParser;->interpolatorFor(Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/view/animation/Interpolator; HSPLcom/airbnb/lottie/parser/KeyframeParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;FLcom/airbnb/lottie/parser/ValueParser;ZZ)Lcom/airbnb/lottie/value/Keyframe; HSPLcom/airbnb/lottie/parser/KeyframeParser;->parseKeyframe(Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; HSPLcom/airbnb/lottie/parser/KeyframeParser;->parseStaticValue(Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; -HSPLcom/airbnb/lottie/parser/KeyframeParser;->pathInterpolatorCache()Landroidx/collection/SparseArrayCompat; -HSPLcom/airbnb/lottie/parser/KeyframeParser;->putInterpolator(ILjava/lang/ref/WeakReference;)V +Lcom/airbnb/lottie/parser/KeyframesParser; HSPLcom/airbnb/lottie/parser/KeyframesParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/KeyframesParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;FLcom/airbnb/lottie/parser/ValueParser;Z)Ljava/util/List; HSPLcom/airbnb/lottie/parser/KeyframesParser;->setEndFrames(Ljava/util/List;)V +Lcom/airbnb/lottie/parser/LayerParser; HSPLcom/airbnb/lottie/parser/LayerParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/LayerParser;->parse(Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/layer/Layer; HSPLcom/airbnb/lottie/parser/LayerParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/layer/Layer; +Lcom/airbnb/lottie/parser/LayerParser$1; +HSPLcom/airbnb/lottie/parser/LayerParser$1;-><clinit>()V +Lcom/airbnb/lottie/parser/LottieCompositionMoshiParser; HSPLcom/airbnb/lottie/parser/LottieCompositionMoshiParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/LottieCompositionMoshiParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;)Lcom/airbnb/lottie/LottieComposition; HSPLcom/airbnb/lottie/parser/LottieCompositionMoshiParser;->parseAssets(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;Ljava/util/Map;Ljava/util/Map;)V +HSPLcom/airbnb/lottie/parser/LottieCompositionMoshiParser;->parseChars(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;Landroidx/collection/SparseArrayCompat;)V +HSPLcom/airbnb/lottie/parser/LottieCompositionMoshiParser;->parseFonts(Lcom/airbnb/lottie/parser/moshi/JsonReader;Ljava/util/Map;)V HSPLcom/airbnb/lottie/parser/LottieCompositionMoshiParser;->parseLayers(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;Ljava/util/List;Landroidx/collection/LongSparseArray;)V HSPLcom/airbnb/lottie/parser/LottieCompositionMoshiParser;->parseMarkers(Lcom/airbnb/lottie/parser/moshi/JsonReader;Ljava/util/List;)V +Lcom/airbnb/lottie/parser/PathKeyframeParser; HSPLcom/airbnb/lottie/parser/PathKeyframeParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/animation/keyframe/PathKeyframe; +Lcom/airbnb/lottie/parser/PathParser; HSPLcom/airbnb/lottie/parser/PathParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/PathParser;-><init>()V HSPLcom/airbnb/lottie/parser/PathParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; HSPLcom/airbnb/lottie/parser/PathParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; +Lcom/airbnb/lottie/parser/PointFParser; HSPLcom/airbnb/lottie/parser/PointFParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/PointFParser;-><init>()V HSPLcom/airbnb/lottie/parser/PointFParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; HSPLcom/airbnb/lottie/parser/PointFParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; +Lcom/airbnb/lottie/parser/PolystarShapeParser; +HSPLcom/airbnb/lottie/parser/PolystarShapeParser;-><clinit>()V +HSPLcom/airbnb/lottie/parser/PolystarShapeParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;I)Lcom/airbnb/lottie/model/content/PolystarShape; +Lcom/airbnb/lottie/parser/RectangleShapeParser; +HSPLcom/airbnb/lottie/parser/RectangleShapeParser;-><clinit>()V +HSPLcom/airbnb/lottie/parser/RectangleShapeParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/RectangleShape; +Lcom/airbnb/lottie/parser/RepeaterParser; +HSPLcom/airbnb/lottie/parser/RepeaterParser;-><clinit>()V +HSPLcom/airbnb/lottie/parser/RepeaterParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/Repeater; +Lcom/airbnb/lottie/parser/ScaleXYParser; HSPLcom/airbnb/lottie/parser/ScaleXYParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ScaleXYParser;-><init>()V HSPLcom/airbnb/lottie/parser/ScaleXYParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Lcom/airbnb/lottie/value/ScaleXY; HSPLcom/airbnb/lottie/parser/ScaleXYParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; +Lcom/airbnb/lottie/parser/ShapeDataParser; HSPLcom/airbnb/lottie/parser/ShapeDataParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ShapeDataParser;-><init>()V HSPLcom/airbnb/lottie/parser/ShapeDataParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Lcom/airbnb/lottie/model/content/ShapeData; HSPLcom/airbnb/lottie/parser/ShapeDataParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; +Lcom/airbnb/lottie/parser/ShapeFillParser; HSPLcom/airbnb/lottie/parser/ShapeFillParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ShapeFillParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/ShapeFill; +Lcom/airbnb/lottie/parser/ShapeGroupParser; HSPLcom/airbnb/lottie/parser/ShapeGroupParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ShapeGroupParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/ShapeGroup; +Lcom/airbnb/lottie/parser/ShapePathParser; HSPLcom/airbnb/lottie/parser/ShapePathParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ShapePathParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/ShapePath; +Lcom/airbnb/lottie/parser/ShapeStrokeParser; HSPLcom/airbnb/lottie/parser/ShapeStrokeParser;-><clinit>()V HSPLcom/airbnb/lottie/parser/ShapeStrokeParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/ShapeStroke; -HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Options;-><init>([Ljava/lang/String;Lokio/Options;)V -HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Options;->of([Ljava/lang/String;)Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; -HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Token;-><clinit>()V -HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Token;-><init>(Ljava/lang/String;I)V -HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Token;->values()[Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; +Lcom/airbnb/lottie/parser/ValueParser; +Lcom/airbnb/lottie/parser/moshi/JsonReader; HSPLcom/airbnb/lottie/parser/moshi/JsonReader;-><clinit>()V HSPLcom/airbnb/lottie/parser/moshi/JsonReader;-><init>()V HSPLcom/airbnb/lottie/parser/moshi/JsonReader;->access$000(Lokio/BufferedSink;Ljava/lang/String;)V HSPLcom/airbnb/lottie/parser/moshi/JsonReader;->of(Lokio/BufferedSource;)Lcom/airbnb/lottie/parser/moshi/JsonReader; HSPLcom/airbnb/lottie/parser/moshi/JsonReader;->pushScope(I)V HSPLcom/airbnb/lottie/parser/moshi/JsonReader;->string(Lokio/BufferedSink;Ljava/lang/String;)V +Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; +HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Options;-><init>([Ljava/lang/String;Lokio/Options;)V +HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Options;->of([Ljava/lang/String;)Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; +Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; +HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Token;->$values()[Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; +HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Token;-><clinit>()V +HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Token;-><init>(Ljava/lang/String;I)V +HSPLcom/airbnb/lottie/parser/moshi/JsonReader$Token;->values()[Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; +Lcom/airbnb/lottie/parser/moshi/JsonUtf8Reader; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;-><clinit>()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;-><init>(Lokio/BufferedSource;)V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->beginArray()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->beginObject()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->close()V -HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->doPeek()I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->endArray()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->endObject()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->findName(Ljava/lang/String;Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I @@ -535,326 +797,87 @@ HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->nextString()Ljava/lang/String; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->peekKeyword()I -HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->peekNumber()I -HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->readEscapeCharacter()C HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->selectName(Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->skipName()V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->skipQuotedValue(Lokio/ByteString;)V HSPLcom/airbnb/lottie/parser/moshi/JsonUtf8Reader;->skipValue()V +Lcom/airbnb/lottie/utils/BaseLottieAnimator; HSPLcom/airbnb/lottie/utils/BaseLottieAnimator;-><init>()V HSPLcom/airbnb/lottie/utils/BaseLottieAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V -HSPLcom/airbnb/lottie/utils/BaseLottieAnimator;->notifyUpdate()V -HSPLcom/airbnb/lottie/utils/GammaEvaluator;->evaluate(FII)I +HPLcom/airbnb/lottie/utils/BaseLottieAnimator;->notifyUpdate()V +Lcom/airbnb/lottie/utils/GammaEvaluator; +HPLcom/airbnb/lottie/utils/GammaEvaluator;->evaluate(FII)I +Lcom/airbnb/lottie/utils/LogcatLogger; HSPLcom/airbnb/lottie/utils/LogcatLogger;-><clinit>()V HSPLcom/airbnb/lottie/utils/LogcatLogger;-><init>()V -HSPLcom/airbnb/lottie/utils/LogcatLogger;->debug(Ljava/lang/String;)V -HSPLcom/airbnb/lottie/utils/LogcatLogger;->debug(Ljava/lang/String;Ljava/lang/Throwable;)V -HSPLcom/airbnb/lottie/utils/LogcatLogger;->warning(Ljava/lang/String;)V -HSPLcom/airbnb/lottie/utils/LogcatLogger;->warning(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLcom/airbnb/lottie/utils/LogcatLogger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V +Lcom/airbnb/lottie/utils/Logger; HSPLcom/airbnb/lottie/utils/Logger;-><clinit>()V -HSPLcom/airbnb/lottie/utils/Logger;->debug(Ljava/lang/String;)V -HSPLcom/airbnb/lottie/utils/Logger;->warning(Ljava/lang/String;)V +HSPLcom/airbnb/lottie/utils/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V +Lcom/airbnb/lottie/utils/LottieThreadFactory; +HSPLcom/airbnb/lottie/utils/LottieThreadFactory;-><clinit>()V +HSPLcom/airbnb/lottie/utils/LottieThreadFactory;-><init>()V +Lcom/airbnb/lottie/utils/LottieTrace; +Lcom/airbnb/lottie/utils/LottieValueAnimator; HSPLcom/airbnb/lottie/utils/LottieValueAnimator;-><init>()V HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->clearComposition()V HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->getAnimatedFraction()F -HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->getAnimatedValueAbsolute()F -HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->getMaxFrame()F -HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->getMinFrame()F +HPLcom/airbnb/lottie/utils/LottieValueAnimator;->getAnimatedValueAbsolute()F +HPLcom/airbnb/lottie/utils/LottieValueAnimator;->getMaxFrame()F +HPLcom/airbnb/lottie/utils/LottieValueAnimator;->getMinFrame()F HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->getSpeed()F HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->isReversed()Z HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->isRunning()Z HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->setComposition(Lcom/airbnb/lottie/LottieComposition;)V -HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->setFrame(F)V +HPLcom/airbnb/lottie/utils/LottieValueAnimator;->setFrame(F)V HSPLcom/airbnb/lottie/utils/LottieValueAnimator;->setMinAndMaxFrames(FF)V +Lcom/airbnb/lottie/utils/MiscUtils; HSPLcom/airbnb/lottie/utils/MiscUtils;-><clinit>()V HSPLcom/airbnb/lottie/utils/MiscUtils;->addPoints(Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/graphics/PointF; -HSPLcom/airbnb/lottie/utils/MiscUtils;->clamp(FFF)F -HSPLcom/airbnb/lottie/utils/MiscUtils;->clamp(III)I +HPLcom/airbnb/lottie/utils/MiscUtils;->clamp(FFF)F +HPLcom/airbnb/lottie/utils/MiscUtils;->clamp(III)I HSPLcom/airbnb/lottie/utils/MiscUtils;->getPathFromData(Lcom/airbnb/lottie/model/content/ShapeData;Landroid/graphics/Path;)V -HSPLcom/airbnb/lottie/utils/MiscUtils;->lerp(FFF)F +HPLcom/airbnb/lottie/utils/MiscUtils;->lerp(FFF)F HSPLcom/airbnb/lottie/utils/MiscUtils;->lerp(IIF)I -HSPLcom/airbnb/lottie/utils/Utils$1;-><init>()V -HSPLcom/airbnb/lottie/utils/Utils$2;-><init>()V -HSPLcom/airbnb/lottie/utils/Utils$3;-><init>()V -HSPLcom/airbnb/lottie/utils/Utils$4;-><init>()V -HSPLcom/airbnb/lottie/utils/Utils$4;->initialValue()Ljava/lang/Object; -HSPLcom/airbnb/lottie/utils/Utils$4;->initialValue()[F +Lcom/airbnb/lottie/utils/Utils; HSPLcom/airbnb/lottie/utils/Utils;-><clinit>()V HSPLcom/airbnb/lottie/utils/Utils;->closeQuietly(Ljava/io/Closeable;)V HSPLcom/airbnb/lottie/utils/Utils;->createPath(Landroid/graphics/PointF;Landroid/graphics/PointF;Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/graphics/Path; -HSPLcom/airbnb/lottie/utils/Utils;->dpScale()F +HPLcom/airbnb/lottie/utils/Utils;->dpScale()F HSPLcom/airbnb/lottie/utils/Utils;->getAnimationScale(Landroid/content/Context;)F -HSPLcom/airbnb/lottie/utils/Utils;->getScale(Landroid/graphics/Matrix;)F -HSPLcom/airbnb/lottie/utils/Utils;->hasZeroScaleAxis(Landroid/graphics/Matrix;)Z +HPLcom/airbnb/lottie/utils/Utils;->getScale(Landroid/graphics/Matrix;)F +HPLcom/airbnb/lottie/utils/Utils;->hasZeroScaleAxis(Landroid/graphics/Matrix;)Z HSPLcom/airbnb/lottie/utils/Utils;->hashFor(FFFF)I HSPLcom/airbnb/lottie/utils/Utils;->isAtLeastVersion(IIIIII)Z +HSPLcom/airbnb/lottie/utils/Utils;->saveLayerCompat(Landroid/graphics/Canvas;Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HPLcom/airbnb/lottie/utils/Utils;->saveLayerCompat(Landroid/graphics/Canvas;Landroid/graphics/RectF;Landroid/graphics/Paint;I)V +Lcom/airbnb/lottie/utils/Utils$1; +HSPLcom/airbnb/lottie/utils/Utils$1;-><init>()V +Lcom/airbnb/lottie/utils/Utils$2; +HSPLcom/airbnb/lottie/utils/Utils$2;-><init>()V +Lcom/airbnb/lottie/utils/Utils$3; +HSPLcom/airbnb/lottie/utils/Utils$3;-><init>()V +Lcom/airbnb/lottie/utils/Utils$4; +HSPLcom/airbnb/lottie/utils/Utils$4;-><init>()V +HSPLcom/airbnb/lottie/utils/Utils$4;->initialValue()Ljava/lang/Object; +HSPLcom/airbnb/lottie/utils/Utils$4;->initialValue()[F +Lcom/airbnb/lottie/value/Keyframe; HSPLcom/airbnb/lottie/value/Keyframe;-><init>(Lcom/airbnb/lottie/LottieComposition;Ljava/lang/Object;Ljava/lang/Object;Landroid/view/animation/Interpolator;FLjava/lang/Float;)V HSPLcom/airbnb/lottie/value/Keyframe;-><init>(Lcom/airbnb/lottie/LottieComposition;Ljava/lang/Object;Ljava/lang/Object;Landroid/view/animation/Interpolator;Landroid/view/animation/Interpolator;Landroid/view/animation/Interpolator;FLjava/lang/Float;)V HSPLcom/airbnb/lottie/value/Keyframe;-><init>(Ljava/lang/Object;)V HSPLcom/airbnb/lottie/value/Keyframe;->containsProgress(F)Z -HSPLcom/airbnb/lottie/value/Keyframe;->getEndProgress()F -HSPLcom/airbnb/lottie/value/Keyframe;->getEndValueFloat()F -HSPLcom/airbnb/lottie/value/Keyframe;->getEndValueInt()I -HSPLcom/airbnb/lottie/value/Keyframe;->getStartProgress()F -HSPLcom/airbnb/lottie/value/Keyframe;->getStartValueFloat()F -HSPLcom/airbnb/lottie/value/Keyframe;->getStartValueInt()I -HSPLcom/airbnb/lottie/value/Keyframe;->isStatic()Z +HPLcom/airbnb/lottie/value/Keyframe;->getEndProgress()F +HPLcom/airbnb/lottie/value/Keyframe;->getEndValueFloat()F +HPLcom/airbnb/lottie/value/Keyframe;->getEndValueInt()I +HPLcom/airbnb/lottie/value/Keyframe;->getStartProgress()F +HPLcom/airbnb/lottie/value/Keyframe;->getStartValueFloat()F +HPLcom/airbnb/lottie/value/Keyframe;->getStartValueInt()I +HPLcom/airbnb/lottie/value/Keyframe;->isStatic()Z +Lcom/airbnb/lottie/value/LottieValueCallback; +Lcom/airbnb/lottie/value/ScaleXY; +HSPLcom/airbnb/lottie/value/ScaleXY;-><init>()V HSPLcom/airbnb/lottie/value/ScaleXY;-><init>(FF)V HSPLcom/airbnb/lottie/value/ScaleXY;->equals(FF)Z -Lcom/airbnb/lottie/L$1; -Lcom/airbnb/lottie/L; -Lcom/airbnb/lottie/LottieComposition; -Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda0; -Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda2; -Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda4; -Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda5; -Lcom/airbnb/lottie/LottieCompositionFactory$$ExternalSyntheticLambda9; -Lcom/airbnb/lottie/LottieCompositionFactory; -Lcom/airbnb/lottie/LottieDrawable$1; -Lcom/airbnb/lottie/LottieDrawable$OnVisibleAction; -Lcom/airbnb/lottie/LottieDrawable; -Lcom/airbnb/lottie/LottieListener; -Lcom/airbnb/lottie/LottieLogger; -Lcom/airbnb/lottie/LottieResult; -Lcom/airbnb/lottie/LottieTask$$ExternalSyntheticLambda0; -Lcom/airbnb/lottie/LottieTask$LottieFutureTask; -Lcom/airbnb/lottie/LottieTask; -Lcom/airbnb/lottie/PerformanceTracker$1; -Lcom/airbnb/lottie/PerformanceTracker; -Lcom/airbnb/lottie/RenderMode$1; -Lcom/airbnb/lottie/RenderMode; -Lcom/airbnb/lottie/animation/LPaint; -Lcom/airbnb/lottie/animation/content/BaseStrokeContent$PathGroup; -Lcom/airbnb/lottie/animation/content/BaseStrokeContent; -Lcom/airbnb/lottie/animation/content/CompoundTrimPathContent; -Lcom/airbnb/lottie/animation/content/Content; -Lcom/airbnb/lottie/animation/content/ContentGroup; -Lcom/airbnb/lottie/animation/content/DrawingContent; -Lcom/airbnb/lottie/animation/content/EllipseContent; -Lcom/airbnb/lottie/animation/content/FillContent; -Lcom/airbnb/lottie/animation/content/GreedyContent; -Lcom/airbnb/lottie/animation/content/KeyPathElementContent; -Lcom/airbnb/lottie/animation/content/ModifierContent; -Lcom/airbnb/lottie/animation/content/PathContent; -Lcom/airbnb/lottie/animation/content/ShapeContent; -Lcom/airbnb/lottie/animation/content/ShapeModifierContent; -Lcom/airbnb/lottie/animation/content/StrokeContent; -Lcom/airbnb/lottie/animation/content/TrimPathContent; -Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener; -Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$EmptyKeyframeWrapper; -Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapper; -Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$KeyframesWrapperImpl; -Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$SingleKeyframeWrapper; -Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/ColorKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/DropShadowKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/FloatKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/IntegerKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/KeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/PathKeyframe; -Lcom/airbnb/lottie/animation/keyframe/PathKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/PointKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/ShapeKeyframeAnimation; -Lcom/airbnb/lottie/animation/keyframe/TransformKeyframeAnimation; -Lcom/airbnb/lottie/model/CubicCurveData; -Lcom/airbnb/lottie/model/KeyPathElement; -Lcom/airbnb/lottie/model/LottieCompositionCache; -Lcom/airbnb/lottie/model/animatable/AnimatableColorValue; -Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; -Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue; -Lcom/airbnb/lottie/model/animatable/AnimatablePathValue; -Lcom/airbnb/lottie/model/animatable/AnimatablePointValue; -Lcom/airbnb/lottie/model/animatable/AnimatableScaleValue; -Lcom/airbnb/lottie/model/animatable/AnimatableShapeValue; -Lcom/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue; -Lcom/airbnb/lottie/model/animatable/AnimatableTransform; -Lcom/airbnb/lottie/model/animatable/AnimatableValue; -Lcom/airbnb/lottie/model/animatable/BaseAnimatableValue; -Lcom/airbnb/lottie/model/content/BlurEffect; -Lcom/airbnb/lottie/model/content/CircleShape; -Lcom/airbnb/lottie/model/content/ContentModel; -Lcom/airbnb/lottie/model/content/Mask$MaskMode; -Lcom/airbnb/lottie/model/content/ShapeData; -Lcom/airbnb/lottie/model/content/ShapeFill; -Lcom/airbnb/lottie/model/content/ShapeGroup; -Lcom/airbnb/lottie/model/content/ShapePath; -Lcom/airbnb/lottie/model/content/ShapeStroke$1; -Lcom/airbnb/lottie/model/content/ShapeStroke$LineCapType; -Lcom/airbnb/lottie/model/content/ShapeStroke$LineJoinType; -Lcom/airbnb/lottie/model/content/ShapeStroke; -Lcom/airbnb/lottie/model/layer/BaseLayer$$ExternalSyntheticLambda0; -Lcom/airbnb/lottie/model/layer/BaseLayer$1; -Lcom/airbnb/lottie/model/layer/BaseLayer; -Lcom/airbnb/lottie/model/layer/CompositionLayer$1; -Lcom/airbnb/lottie/model/layer/CompositionLayer; -Lcom/airbnb/lottie/model/layer/Layer$LayerType; -Lcom/airbnb/lottie/model/layer/Layer$MatteType; -Lcom/airbnb/lottie/model/layer/Layer; -Lcom/airbnb/lottie/model/layer/ShapeLayer; -Lcom/airbnb/lottie/network/DefaultLottieFetchResult; -Lcom/airbnb/lottie/network/DefaultLottieNetworkFetcher; -Lcom/airbnb/lottie/network/FileExtension; -Lcom/airbnb/lottie/network/LottieFetchResult; -Lcom/airbnb/lottie/network/LottieNetworkCacheProvider; -Lcom/airbnb/lottie/network/LottieNetworkFetcher; -Lcom/airbnb/lottie/network/NetworkCache; -Lcom/airbnb/lottie/network/NetworkFetcher; -Lcom/airbnb/lottie/parser/AnimatablePathValueParser; -Lcom/airbnb/lottie/parser/AnimatableTransformParser; -Lcom/airbnb/lottie/parser/AnimatableValueParser; -Lcom/airbnb/lottie/parser/CircleShapeParser; -Lcom/airbnb/lottie/parser/ColorParser; -Lcom/airbnb/lottie/parser/ContentModelParser; -Lcom/airbnb/lottie/parser/FloatParser; -Lcom/airbnb/lottie/parser/IntegerParser; -Lcom/airbnb/lottie/parser/JsonUtils$1; -Lcom/airbnb/lottie/parser/JsonUtils; -Lcom/airbnb/lottie/parser/KeyframeParser; -Lcom/airbnb/lottie/parser/KeyframesParser; -Lcom/airbnb/lottie/parser/LayerParser; -Lcom/airbnb/lottie/parser/LottieCompositionMoshiParser; -Lcom/airbnb/lottie/parser/PathKeyframeParser; -Lcom/airbnb/lottie/parser/PathParser; -Lcom/airbnb/lottie/parser/PointFParser; -Lcom/airbnb/lottie/parser/ScaleXYParser; -Lcom/airbnb/lottie/parser/ShapeDataParser; -Lcom/airbnb/lottie/parser/ShapeFillParser; -Lcom/airbnb/lottie/parser/ShapeGroupParser; -Lcom/airbnb/lottie/parser/ShapePathParser; -Lcom/airbnb/lottie/parser/ShapeStrokeParser; -Lcom/airbnb/lottie/parser/ValueParser; -Lcom/airbnb/lottie/parser/moshi/JsonDataException; -Lcom/airbnb/lottie/parser/moshi/JsonEncodingException; -Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; -Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; -Lcom/airbnb/lottie/parser/moshi/JsonReader; -Lcom/airbnb/lottie/parser/moshi/JsonScope; -Lcom/airbnb/lottie/parser/moshi/JsonUtf8Reader; -Lcom/airbnb/lottie/utils/BaseLottieAnimator; -Lcom/airbnb/lottie/utils/GammaEvaluator; -Lcom/airbnb/lottie/utils/LogcatLogger; -Lcom/airbnb/lottie/utils/Logger; -Lcom/airbnb/lottie/utils/LottieValueAnimator; -Lcom/airbnb/lottie/utils/MiscUtils; -Lcom/airbnb/lottie/utils/Utils$1; -Lcom/airbnb/lottie/utils/Utils$2; -Lcom/airbnb/lottie/utils/Utils$3; -Lcom/airbnb/lottie/utils/Utils$4; -Lcom/airbnb/lottie/utils/Utils; -Lcom/airbnb/lottie/value/Keyframe; -Lcom/airbnb/lottie/value/ScaleXY; -PLcom/airbnb/lottie/LottieComposition;->setHasDashPattern(Z)V -PLcom/airbnb/lottie/LottieDrawable;->enableMergePathsForKitKatAndAbove()Z -PLcom/airbnb/lottie/LottieDrawable;->getBitmapForId(Ljava/lang/String;)Landroid/graphics/Bitmap; -PLcom/airbnb/lottie/LottieDrawable;->getIntrinsicHeight()I -PLcom/airbnb/lottie/LottieDrawable;->getIntrinsicWidth()I -PLcom/airbnb/lottie/LottieDrawable;->getLottieImageAssetForId(Ljava/lang/String;)Lcom/airbnb/lottie/LottieImageAsset; -PLcom/airbnb/lottie/LottieDrawable;->getMaintainOriginalImageBounds()Z -PLcom/airbnb/lottie/LottieDrawable;->getScale()F -PLcom/airbnb/lottie/LottieImageAsset;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -PLcom/airbnb/lottie/LottieImageAsset;->getBitmap()Landroid/graphics/Bitmap; -PLcom/airbnb/lottie/LottieImageAsset;->getFileName()Ljava/lang/String; -PLcom/airbnb/lottie/LottieImageAsset;->getId()Ljava/lang/String; -PLcom/airbnb/lottie/LottieImageAsset;->setBitmap(Landroid/graphics/Bitmap;)V -PLcom/airbnb/lottie/animation/content/CompoundTrimPathContent;->addTrimPath(Lcom/airbnb/lottie/animation/content/TrimPathContent;)V -PLcom/airbnb/lottie/animation/content/EllipseContent;->invalidate()V -PLcom/airbnb/lottie/animation/content/GradientFillContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/GradientFill;)V -PLcom/airbnb/lottie/animation/content/GradientFillContent;->setContents(Ljava/util/List;Ljava/util/List;)V -PLcom/airbnb/lottie/animation/content/RectangleContent;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;Lcom/airbnb/lottie/model/content/RectangleShape;)V -PLcom/airbnb/lottie/animation/content/RectangleContent;->setContents(Ljava/util/List;Ljava/util/List;)V -PLcom/airbnb/lottie/animation/content/ShapeContent;->invalidate()V -PLcom/airbnb/lottie/animation/content/TrimPathContent;->addListener(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$AnimationListener;)V -PLcom/airbnb/lottie/animation/content/TrimPathContent;->getEnd()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -PLcom/airbnb/lottie/animation/content/TrimPathContent;->getOffset()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -PLcom/airbnb/lottie/animation/content/TrimPathContent;->getStart()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -PLcom/airbnb/lottie/animation/content/TrimPathContent;->getType()Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type; -PLcom/airbnb/lottie/animation/content/TrimPathContent;->isHidden()Z -PLcom/airbnb/lottie/animation/content/TrimPathContent;->setContents(Ljava/util/List;Ljava/util/List;)V -PLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$EmptyKeyframeWrapper;-><init>()V -PLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$EmptyKeyframeWrapper;-><init>(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation$1;)V -PLcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;->getProgress()F -PLcom/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation;-><init>(Ljava/util/List;)V -PLcom/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Lcom/airbnb/lottie/model/content/GradientColor; -PLcom/airbnb/lottie/animation/keyframe/GradientColorKeyframeAnimation;->getValue(Lcom/airbnb/lottie/value/Keyframe;F)Ljava/lang/Object; -PLcom/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation;->getMasks()Ljava/util/List; -PLcom/airbnb/lottie/animation/keyframe/MaskKeyframeAnimation;->getOpacityAnimations()Ljava/util/List; -PLcom/airbnb/lottie/animation/keyframe/ScaleKeyframeAnimation;-><init>(Ljava/util/List;)V -PLcom/airbnb/lottie/animation/keyframe/SplitDimensionPathKeyframeAnimation;-><init>(Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation;)V -PLcom/airbnb/lottie/model/Marker;-><init>(Ljava/lang/String;FF)V -PLcom/airbnb/lottie/model/animatable/AnimatableGradientColorValue;-><init>(Ljava/util/List;)V -PLcom/airbnb/lottie/model/animatable/AnimatableGradientColorValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -PLcom/airbnb/lottie/model/animatable/AnimatableScaleValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -PLcom/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue;-><init>(Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;)V -PLcom/airbnb/lottie/model/animatable/AnimatableSplitDimensionPathValue;->createAnimation()Lcom/airbnb/lottie/animation/keyframe/BaseKeyframeAnimation; -PLcom/airbnb/lottie/model/content/GradientColor;-><init>([F[I)V -PLcom/airbnb/lottie/model/content/GradientColor;->getColors()[I -PLcom/airbnb/lottie/model/content/GradientColor;->getPositions()[F -PLcom/airbnb/lottie/model/content/GradientColor;->getSize()I -PLcom/airbnb/lottie/model/content/GradientColor;->lerp(Lcom/airbnb/lottie/model/content/GradientColor;Lcom/airbnb/lottie/model/content/GradientColor;F)V -PLcom/airbnb/lottie/model/content/GradientFill;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/content/GradientType;Landroid/graphics/Path$FillType;Lcom/airbnb/lottie/model/animatable/AnimatableGradientColorValue;Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Lcom/airbnb/lottie/model/animatable/AnimatablePointValue;Lcom/airbnb/lottie/model/animatable/AnimatablePointValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Z)V -PLcom/airbnb/lottie/model/content/GradientFill;->getEndPoint()Lcom/airbnb/lottie/model/animatable/AnimatablePointValue; -PLcom/airbnb/lottie/model/content/GradientFill;->getFillType()Landroid/graphics/Path$FillType; -PLcom/airbnb/lottie/model/content/GradientFill;->getGradientColor()Lcom/airbnb/lottie/model/animatable/AnimatableGradientColorValue; -PLcom/airbnb/lottie/model/content/GradientFill;->getGradientType()Lcom/airbnb/lottie/model/content/GradientType; -PLcom/airbnb/lottie/model/content/GradientFill;->getName()Ljava/lang/String; -PLcom/airbnb/lottie/model/content/GradientFill;->getOpacity()Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue; -PLcom/airbnb/lottie/model/content/GradientFill;->getStartPoint()Lcom/airbnb/lottie/model/animatable/AnimatablePointValue; -PLcom/airbnb/lottie/model/content/GradientFill;->isHidden()Z -PLcom/airbnb/lottie/model/content/GradientFill;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; -PLcom/airbnb/lottie/model/content/GradientType;-><clinit>()V -PLcom/airbnb/lottie/model/content/GradientType;-><init>(Ljava/lang/String;I)V -PLcom/airbnb/lottie/model/content/Mask;-><init>(Lcom/airbnb/lottie/model/content/Mask$MaskMode;Lcom/airbnb/lottie/model/animatable/AnimatableShapeValue;Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue;Z)V -PLcom/airbnb/lottie/model/content/Mask;->getMaskMode()Lcom/airbnb/lottie/model/content/Mask$MaskMode; -PLcom/airbnb/lottie/model/content/Mask;->getMaskPath()Lcom/airbnb/lottie/model/animatable/AnimatableShapeValue; -PLcom/airbnb/lottie/model/content/Mask;->getOpacity()Lcom/airbnb/lottie/model/animatable/AnimatableIntegerValue; -PLcom/airbnb/lottie/model/content/Mask;->isInverted()Z -PLcom/airbnb/lottie/model/content/MergePaths$MergePathsMode;-><clinit>()V -PLcom/airbnb/lottie/model/content/MergePaths$MergePathsMode;-><init>(Ljava/lang/String;I)V -PLcom/airbnb/lottie/model/content/MergePaths$MergePathsMode;->forId(I)Lcom/airbnb/lottie/model/content/MergePaths$MergePathsMode; -PLcom/airbnb/lottie/model/content/MergePaths;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/content/MergePaths$MergePathsMode;Z)V -PLcom/airbnb/lottie/model/content/MergePaths;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; -PLcom/airbnb/lottie/model/content/RectangleShape;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/animatable/AnimatableValue;Lcom/airbnb/lottie/model/animatable/AnimatableValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Z)V -PLcom/airbnb/lottie/model/content/RectangleShape;->getCornerRadius()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; -PLcom/airbnb/lottie/model/content/RectangleShape;->getName()Ljava/lang/String; -PLcom/airbnb/lottie/model/content/RectangleShape;->getPosition()Lcom/airbnb/lottie/model/animatable/AnimatableValue; -PLcom/airbnb/lottie/model/content/RectangleShape;->getSize()Lcom/airbnb/lottie/model/animatable/AnimatableValue; -PLcom/airbnb/lottie/model/content/RectangleShape;->isHidden()Z -PLcom/airbnb/lottie/model/content/RectangleShape;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; -PLcom/airbnb/lottie/model/content/ShapeTrimPath$Type;-><clinit>()V -PLcom/airbnb/lottie/model/content/ShapeTrimPath$Type;-><init>(Ljava/lang/String;I)V -PLcom/airbnb/lottie/model/content/ShapeTrimPath$Type;->forId(I)Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type; -PLcom/airbnb/lottie/model/content/ShapeTrimPath;-><init>(Ljava/lang/String;Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue;Z)V -PLcom/airbnb/lottie/model/content/ShapeTrimPath;->getEnd()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; -PLcom/airbnb/lottie/model/content/ShapeTrimPath;->getName()Ljava/lang/String; -PLcom/airbnb/lottie/model/content/ShapeTrimPath;->getOffset()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; -PLcom/airbnb/lottie/model/content/ShapeTrimPath;->getStart()Lcom/airbnb/lottie/model/animatable/AnimatableFloatValue; -PLcom/airbnb/lottie/model/content/ShapeTrimPath;->getType()Lcom/airbnb/lottie/model/content/ShapeTrimPath$Type; -PLcom/airbnb/lottie/model/content/ShapeTrimPath;->isHidden()Z -PLcom/airbnb/lottie/model/content/ShapeTrimPath;->toContent(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/BaseLayer;)Lcom/airbnb/lottie/animation/content/Content; -PLcom/airbnb/lottie/model/layer/ImageLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V -PLcom/airbnb/lottie/model/layer/NullLayer;-><init>(Lcom/airbnb/lottie/LottieDrawable;Lcom/airbnb/lottie/model/layer/Layer;)V -PLcom/airbnb/lottie/parser/AnimatableValueParser;->parseGradientColor(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;I)Lcom/airbnb/lottie/model/animatable/AnimatableGradientColorValue; -PLcom/airbnb/lottie/parser/GradientColorParser;-><init>(I)V -PLcom/airbnb/lottie/parser/GradientColorParser;->addOpacityStopsToGradientIfNeeded(Lcom/airbnb/lottie/model/content/GradientColor;Ljava/util/List;)V -PLcom/airbnb/lottie/parser/GradientColorParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Lcom/airbnb/lottie/model/content/GradientColor; -PLcom/airbnb/lottie/parser/GradientColorParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; -PLcom/airbnb/lottie/parser/GradientFillParser;-><clinit>()V -PLcom/airbnb/lottie/parser/GradientFillParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/GradientFill; -PLcom/airbnb/lottie/parser/MergePathsParser;-><clinit>()V -PLcom/airbnb/lottie/parser/MergePathsParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;)Lcom/airbnb/lottie/model/content/MergePaths; -PLcom/airbnb/lottie/parser/RectangleShapeParser;-><clinit>()V -PLcom/airbnb/lottie/parser/RectangleShapeParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/RectangleShape; -PLcom/airbnb/lottie/parser/ShapeTrimPathParser;-><clinit>()V -PLcom/airbnb/lottie/parser/ShapeTrimPathParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;)Lcom/airbnb/lottie/model/content/ShapeTrimPath; -PLcom/airbnb/lottie/utils/Utils$1;->initialValue()Landroid/graphics/PathMeasure; -PLcom/airbnb/lottie/utils/Utils$1;->initialValue()Ljava/lang/Object; -PLcom/airbnb/lottie/utils/Utils$2;->initialValue()Landroid/graphics/Path; -PLcom/airbnb/lottie/utils/Utils$2;->initialValue()Ljava/lang/Object; -PLcom/airbnb/lottie/utils/Utils$3;->initialValue()Landroid/graphics/Path; -PLcom/airbnb/lottie/utils/Utils$3;->initialValue()Ljava/lang/Object; -PLcom/airbnb/lottie/utils/Utils;->saveLayerCompat(Landroid/graphics/Canvas;Landroid/graphics/RectF;Landroid/graphics/Paint;I)V -PLcom/airbnb/lottie/value/ScaleXY;-><init>()V -PLcom/airbnb/lottie/value/ScaleXY;->getScaleX()F -PLcom/airbnb/lottie/value/ScaleXY;->getScaleY()F -PLcom/airbnb/lottie/value/ScaleXY;->set(FF)V +HPLcom/airbnb/lottie/value/ScaleXY;->getScaleX()F +HSPLcom/airbnb/lottie/value/ScaleXY;->getScaleY()F +HSPLcom/airbnb/lottie/value/ScaleXY;->set(FF)V \ No newline at end of file
diff --git a/sample-compose-benchmark/build.gradle b/sample-compose-benchmark/build.gradle deleted file mode 100644 index df2da67..0000000 --- a/sample-compose-benchmark/build.gradle +++ /dev/null
@@ -1,43 +0,0 @@ -plugins { - id 'com.android.test' - id 'org.jetbrains.kotlin.android' -} - -android { - namespace 'com.airbnb.lottie.sample.compose.benchmark' - compileSdk 34 - - kotlinOptions { - freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn" - } - - defaultConfig { - minSdk 30 - targetSdk 34 - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - debuggable = true - signingConfig = debug.signingConfig - } - } - - targetProjectPath = ":sample-compose" - experimentalProperties["android.experimental.self-instrumenting"] = true -} - -dependencies { - implementation AndroidX.test.ext.junit - implementation AndroidX.test.espresso.core - implementation AndroidX.test.uiAutomator - implementation AndroidX.benchmark.macroJunit4 -} - -androidComponents { - beforeVariants(selector().all()) { - enabled = buildType == "release" - } -}
diff --git a/sample-compose-benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineProfiles.kt b/sample-compose-benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineProfiles.kt deleted file mode 100644 index 04aed45..0000000 --- a/sample-compose-benchmark/src/main/java/com/airbnb/lottie/sample/compose/benchmark/LottieBaselineProfiles.kt +++ /dev/null
@@ -1,95 +0,0 @@ -package com.airbnb.lottie.sample.compose.benchmark - -import android.content.Context -import androidx.benchmark.macro.ExperimentalBaselineProfilesApi -import androidx.benchmark.macro.junit4.BaselineProfileRule -import androidx.test.core.app.ApplicationProvider -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice -import androidx.test.uiautomator.UiObject -import androidx.test.uiautomator.UiScrollable -import androidx.test.uiautomator.UiSelector -import org.junit.Before -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith -import kotlin.time.Duration -import kotlin.time.Duration.Companion.seconds -import kotlin.time.DurationUnit -import kotlin.time.ExperimentalTime - -@RunWith(AndroidJUnit4::class) -@OptIn(ExperimentalBaselineProfilesApi::class) -class LottieBaselineProfiles { - - @get:Rule - val baselineProfileRule = BaselineProfileRule() - - private lateinit var context: Context - private lateinit var device: UiDevice - - @Before - fun setUp() { - val instrumentation = InstrumentationRegistry.getInstrumentation() - context = ApplicationProvider.getApplicationContext() - device = UiDevice.getInstance(instrumentation) - } - - @Test - fun baselineProfiles() { - baselineProfileRule.collectBaselineProfile( - packageName = PACKAGE_NAME, - ) { - pressHome() - startActivityAndWait() - // Find the ScrollView in the Showcase route - val selector = UiSelector().className("android.widget.ScrollView") - val scrollable = UiScrollable(selector) - scrollable.waitUntilReady() - for (i in 0 until scrollable.childCount) { - val childSelector = UiSelector() - .enabled(true) - .clickable(true) - .instance(i) - val child = scrollable.getChild(childSelector) - scrollable.scrollIntoView(child) - child.clickAndWait() - } - } - } - - private fun UiScrollable.waitUntilReady() { - this.waitUntil { - // We know that there are at least 9 children - childCount >= EXPECTED_ITEM_INDEX_COUNT - } - } - - private fun UiObject.clickAndWait(maxWaitTime: Duration = 5.seconds) { - val maxWaitTimeMs = maxWaitTime.toLong(DurationUnit.MILLISECONDS) - click() - device.waitForIdle(maxWaitTimeMs) - Thread.sleep(maxWaitTimeMs) - device.pressBack() - } - - private fun <T> T.waitUntil(maxWaitTime: Duration = 5.seconds, condition: (T) -> Boolean) { - var waitTime = 0L - val maxWaitTimeMs = maxWaitTime.toLong(DurationUnit.MILLISECONDS) - val incrementalDelay = 150L - while (waitTime <= maxWaitTimeMs) { - val ready = condition(this) - if (ready) { - break - } - Thread.sleep(incrementalDelay) - waitTime += incrementalDelay - } - } - - companion object { - private const val PACKAGE_NAME = "com.airbnb.lottie.sample.compose" - private const val EXPECTED_ITEM_INDEX_COUNT = 9 - } -}
diff --git a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/showcase/ShowcasePage.kt b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/showcase/ShowcasePage.kt index e3bfe7b..c47a64c 100644 --- a/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/showcase/ShowcasePage.kt +++ b/sample-compose/src/main/java/com/airbnb/lottie/sample/compose/showcase/ShowcasePage.kt
@@ -10,6 +10,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.testTag import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavController import androidx.navigation.compose.rememberNavController @@ -58,4 +59,4 @@ LottieTheme { ShowcasePage(navController) } -} \ No newline at end of file +}
diff --git a/sample/src/main/res/layout/player_fragment.xml b/sample/src/main/res/layout/player_fragment.xml index c9d9d64..cfd17eb 100644 --- a/sample/src/main/res/layout/player_fragment.xml +++ b/sample/src/main/res/layout/player_fragment.xml
@@ -81,4 +81,4 @@ <include android:id="@+id/bottom_sheet_key_paths" layout="@layout/bottom_sheet_key_paths" /> -</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file +</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/settings.gradle b/settings.gradle index e7fc7f9..731a19c 100644 --- a/settings.gradle +++ b/settings.gradle
@@ -10,6 +10,7 @@ //// # available:'0.60.0' //// # available:'0.60.1' //// # available:'0.60.2' +//// # available:'0.60.3' } dependencyResolutionManagement { @@ -28,4 +29,6 @@ include ':issue-repro' include ':issue-repro-compose' include ':snapshot-tests' -include ':sample-compose-benchmark' +include ':benchmark' +include ':app-benchmark' +include ':baselineprofile'
diff --git a/update-baseline-profiles.sh b/update-baseline-profiles.sh new file mode 100755 index 0000000..d1de047 --- /dev/null +++ b/update-baseline-profiles.sh
@@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -uo pipefail + +# If on CI, add indirect swiftshader arg +# Source: https://developer.android.com/studio/test/gradle-managed-devices +gpu_arg="" +if [ "${CI:-}" == "true" ]; then + gpu_arg="-Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect" +fi + +./gradlew cleanManagedDevices --unused-only && + ./gradlew lottie:generateBaselineProfile lottie-compose:generateBaselineProfile \ + -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile + -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=20 \ + "${gpu_arg}" \ + --info
diff --git a/versions.properties b/versions.properties index 94dcf4d..3f4a318 100644 --- a/versions.properties +++ b/versions.properties
@@ -13,21 +13,38 @@ ## # available=8.2.0-alpha02 version.androidx.compose=2023.08.00 +## # available=2023.09.00 +## # available=2023.09.01 +## # available=2023.09.02 +## # available=2023.10.00 +## # available=2023.10.01 version.androidx.compose.ui=1.5.0 +## # available=1.5.1 +## # available=1.5.2 +## # available=1.5.3 +## # available=1.5.4 ## # available=1.6.0-alpha01 ## # available=1.6.0-alpha02 ## # available=1.6.0-alpha03 ## # available=1.6.0-alpha04 +## # available=1.6.0-alpha05 +## # available=1.6.0-alpha06 +## # available=1.6.0-alpha07 +## # available=1.6.0-alpha08 version.coil-kt=2.4.0 version.robolectric=4.10.3 +## # available=4.11-beta-1 +## # available=4.11-beta-2 +## # available=4.11 version.retrofit2=2.9.0 # Do not update to 2.0. It will pull in Kotlin as a transitive dependency into the lottie library. version.okio=1.17.5 +### available=1.17.6 ### available=2.0.0-RC1 ### available=2.0.0 ### available=2.1.0 @@ -64,8 +81,10 @@ ### available=3.3.0 ### available=3.4.0 ### available=3.5.0 +### available=3.6.0 version.okhttp3=4.11.0 +## # available=4.12.0 ## # available=5.0.0-alpha.1 ## # available=5.0.0-alpha.2 ## # available=5.0.0-alpha.3 @@ -81,16 +100,32 @@ version.mockito=5.3.1 ## # available=5.4.0 ## # available=5.5.0 +## # available=5.6.0 version.kotlinx.coroutines=1.6.4 +## # available=1.7.0-Beta +## # available=1.7.0-RC +## # available=1.7.0 +## # available=1.7.1 +## # available=1.7.2 +## # available=1.7.3 version.kotlin=1.9.10 +## # available=1.9.20-Beta +## # available=1.9.20-Beta2 +## # available=1.9.20-RC +## # available=1.9.20-RC2 version.junit.junit=4.13.2 version.io.jsonwebtoken..jjwt=0.9.1 +## # available=0.12.0 +## # available=0.12.1 +## # available=0.12.2 +## # available=0.12.3 version.google.dagger=2.48 +## # available=2.48.1 version.google.android.material=1.9.0 ## # available=1.10.0-alpha01 @@ -99,13 +134,20 @@ ## # available=1.10.0-alpha04 ## # available=1.10.0-alpha05 ## # available=1.10.0-alpha06 +## # available=1.10.0-beta01 +## # available=1.10.0-rc01 +## # available=1.10.0 ## # available=1.11.0-alpha01 ## # available=1.11.0-alpha02 +## # available=1.11.0-alpha03 +## # available=1.11.0-beta01 version.com.uber.nullaway..nullaway=0.10.10 ## # available=0.10.11 ## # available=0.10.12 ## # available=0.10.13 +## # available=0.10.14 +## # available=0.10.15 version.com.nhaarman.mockitokotlin2..mockito-kotlin=2.2.0 @@ -113,10 +155,13 @@ ## # available=2.20.0 ## # available=2.21.0 ## # available=2.21.1 +## # available=2.22.0 +## # available=2.23.0 version.com.google.code.gson..gson=2.10.1 version.com.github.bumptech.glide..glide=4.16.0 +## # available=5.0.0-rc01 version.com.github.PhilJay..MPAndroidChart=3.1.0 @@ -136,8 +181,10 @@ version.com.airbnb.android..mavericks-compose=3.0.6 +## # available=3.0.7 version.com.airbnb.android..mavericks=3.0.6 +## # available=3.0.7 version.com.airbnb.android..epoxy-processor=5.1.3 @@ -160,10 +207,13 @@ version.androidx.test.core=1.5.0 ## # available=1.6.0-alpha01 +## # available=1.6.0-alpha02 version.androidx.recyclerview=1.3.0 ## # available=1.3.1-rc01 ## # available=1.3.1 +## # available=1.3.2 +## # available=1.4.0-alpha01 version.androidx.profileinstaller=1.3.1 @@ -177,18 +227,45 @@ ## # available=3.2.0-beta01 ## # available=3.2.0-rc01 ## # available=3.2.0 +## # available=3.2.1 +## # available=3.3.0-alpha01 +## # available=3.3.0-alpha02 version.androidx.navigation=2.6.0 +## # available=2.7.0-alpha01 +## # available=2.7.0-beta01 +## # available=2.7.0-beta02 +## # available=2.7.0-rc01 +## # available=2.7.0 +## # available=2.7.1 +## # available=2.7.2 +## # available=2.7.3 +## # available=2.7.4 version.androidx.multidex=2.0.1 version.androidx.lifecycle=2.5.1 +## # available=2.6.0-alpha01 +## # available=2.6.0-alpha02 +## # available=2.6.0-alpha03 +## # available=2.6.0-alpha04 +## # available=2.6.0-alpha05 +## # available=2.6.0-beta01 +## # available=2.6.0-rc01 +## # available=2.6.0 +## # available=2.6.1 +## # available=2.6.2 ## # available=2.7.0-alpha01 +## # available=2.7.0-alpha02 +## # available=2.7.0-alpha03 version.androidx.fragment=1.6.1 ## # available=1.7.0-alpha01 ## # available=1.7.0-alpha02 ## # available=1.7.0-alpha03 +## # available=1.7.0-alpha04 +## # available=1.7.0-alpha05 +## # available=1.7.0-alpha06 version.androidx.core=1.10.1 ## # available=1.11.0-alpha01 @@ -203,6 +280,8 @@ ## # available=1.12.0-alpha05 ## # available=1.12.0-beta01 ## # available=1.12.0-rc01 +## # available=1.12.0 +## # available=1.13.0-alpha01 version.androidx.constraintlayout=2.1.4 ## # available=2.2.0-alpha01 @@ -217,6 +296,7 @@ ## # available=2.2.0-alpha10 ## # available=2.2.0-alpha11 ## # available=2.2.0-alpha12 +## # available=2.2.0-alpha13 ## unused version.androidx.compose.material=1.4.3 @@ -239,6 +319,10 @@ ## # available=1.3.0-alpha03 ## # available=1.3.0-alpha04 ## # available=1.3.0-beta01 +## # available=1.3.0-rc01 +## # available=1.3.0 +## # available=1.4.0-alpha01 +## # available=1.4.0-alpha02 version.androidx.cardview=1.0.0 @@ -248,29 +332,13 @@ ## # available=1.6.0-beta01 ## # available=1.6.0-rc01 ## # available=1.6.0 +## # available=1.7.0-alpha01 +## # available=1.7.0-beta01 -version.androidx.benchmark=1.1.1 -## # available=1.2.0-alpha01 -## # available=1.2.0-alpha02 -## # available=1.2.0-alpha03 -## # available=1.2.0-alpha04 -## # available=1.2.0-alpha05 -## # available=1.2.0-alpha06 -## # available=1.2.0-alpha07 -## # available=1.2.0-alpha08 -## # available=1.2.0-alpha09 -## # available=1.2.0-alpha10 -## # available=1.2.0-alpha11 -## # available=1.2.0-alpha12 -## # available=1.2.0-alpha13 -## # available=1.2.0-alpha14 -## # available=1.2.0-alpha15 -## # available=1.2.0-alpha16 -## # available=1.2.0-beta01 -## # available=1.2.0-beta02 -## # available=1.2.0-beta03 -## # available=1.2.0-beta04 -## # available=1.2.0-beta05 +version.androidx.benchmark=1.2.0-beta05 +## # available=1.2.0-rc01 +## # available=1.2.0-rc02 +## # available=1.2.0 version.androidx.appcompat=1.6.1 ## # available=1.7.0-alpha01 @@ -278,6 +346,16 @@ ## # available=1.7.0-alpha03 version.androidx.activity=1.6.1 +## # available=1.7.0-alpha01 +## # available=1.7.0-alpha02 +## # available=1.7.0-alpha03 +## # available=1.7.0-alpha04 +## # available=1.7.0-beta01 +## # available=1.7.0-beta02 +## # available=1.7.0-rc01 +## # available=1.7.0 +## # available=1.7.1 +## # available=1.7.2 ## # available=1.8.0-alpha01 ## # available=1.8.0-alpha02 ## # available=1.8.0-alpha03 @@ -285,12 +363,20 @@ ## # available=1.8.0-alpha05 ## # available=1.8.0-alpha06 ## # available=1.8.0-alpha07 +## # available=1.8.0-beta01 +## # available=1.8.0-rc01 +## # available=1.8.0 plugin.net.ltgt.errorprone=3.1.0 plugin.com.google.devtools.ksp=1.9.10-1.0.13 +## # available=1.9.20-Beta-1.0.13 +## # available=1.9.20-Beta2-1.0.13 +## # available=1.9.20-RC-1.0.13 +## # available=1.9.20-RC2-1.0.13 plugin.org.ajoberstar.grgit=5.2.0 +## # available=5.2.1 plugin.com.vanniktech.maven.publish=0.25.2 ## # available=0.25.3-rc1 @@ -298,3 +384,9 @@ plugin.org.jetbrains.dokka=1.8.20 ## # available=1.9.0 +## # available=1.9.10 + +plugin.androidx.baselineprofile=1.2.0-beta05 +## # available=1.2.0-rc01 +## # available=1.2.0-rc02 +## # available=1.2.0