Merge "Minimize use of merged Semantics `config`" into androidx-main
diff --git a/activity/activity-compose-lint/src/test/java/androidx/activity/compose/lint/ActivityResultLaunchDetectorTest.kt b/activity/activity-compose-lint/src/test/java/androidx/activity/compose/lint/ActivityResultLaunchDetectorTest.kt
index 7d5fc8b..df01c3d 100644
--- a/activity/activity-compose-lint/src/test/java/androidx/activity/compose/lint/ActivityResultLaunchDetectorTest.kt
+++ b/activity/activity-compose-lint/src/test/java/androidx/activity/compose/lint/ActivityResultLaunchDetectorTest.kt
@@ -43,7 +43,7 @@
private val MANAGED_ACTIVITY_RESULT_LAUNCHER = bytecodeStub(
filename = "ActivityResultRegistry.kt",
filepath = "androidx/activity/compose",
- checksum = 0x42f3e9f,
+ checksum = 0xef067b97,
source = """
package androidx.activity.compose
@@ -53,23 +53,23 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3AJcrFnZyfq5dakZhbkJMqxBaSWlzi
- XaLEoMUAAIXWemUvAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgEuXiTs7P1UutSMwtyEkVYgtJLS7x
+ LlFi0GIAAJY6UNwvAAAA
""",
- """
+ """
androidx/activity/compose/ManagedActivityResultLauncher.class:
- H4sIAAAAAAAAAJ1Ry24aMRQ9NjAQQsqQNBTo+7EgWXQIatVXFCmNVJWKpBKJ
- 2LAyYBEH8ERjD0p2fEv/oKtKXVSoy35U1esJmyZd1Ytzzz0+1/fa/vX7+w8A
- L/CM4ZXQwyhUw4tADKyaKXsZDMLpeWhkcCi0GMnh/lLvSBNPbFvEenAqoywY
- Q3239bZ9JmYimAg9Cj73z+TAvtu7KTH417Us0gzertLK7jGk6lvdAjxk88gg
- x5C2p8owvGn/53jU0ZsknGGzfnOgrS4Z6iethGSUPo8tw/q/Bi+1x6GdKB0c
- SiuGwgrS+HSWogdkDjIMbEzShXJZg9hwh+HjYl7O8wrPL+Z57jvIcSLcxcpi
- vp3OLeY+a/IGf5/5+cXjfurThp+u8Uam6flejb9ezBM5685rUosWo36o/n3b
- jhwpY6PL52OaPn0QDiVDsa20PIqnfRmdiP5EumuFAzHpiki5fCmuHKuRFjaO
- iOePwzgayA/KbVQ7sbZqKrvKKHLuax1aYVWoDXbA6Xfc4jQLfRbhA8oCisw9
- xfY3rHxNth8SeomYxiPCwpUBeaxSLFG+Ri5X/DLx0+WuF2aSwvLV5rLQsSJ8
- wseJ+xZSS5bCkyTex1OKB+Qo0QnrPaRa2GjhNiE2HZRbuINKD8ygiloPOYNV
- g7sG9wyyBoWEFA3W/gCvD9WQJgMAAA==
+ H4sIAAAAAAAA/51Ry24TMRQ9dpLJoy2ZtDSk5f2S0i6YNALxqiqVSohBKUhp
+ lU1WTmKlbhJPNfZE7S7fwh+wQmKBIpZ8FOJ6mg0tK7w499zjc+177V+/v/8A
+ 8BxPGV4KPYgjNTgPRN+qqbIXQT+anEVGBodCi6Ec7C/0tjTJ2LZEovsnMs6D
+ MdR3wzetUzEVwVjoYfC5dyr79u3edYnBv6rlkWXwdpVWdo8hU9/qLMNDvoQc
+ CgxZe6IMw+vWf7ZHN3rjlDOs1683tNUhQ/04TElO6bPEMqz+q/FKaxTZsdLB
+ obRiIKwgjU+mGXpA5qDoAAxsRPq5clmD2GCH4cN8Vi3xGi/NZyXuOyhwItzF
+ 2ny2nS3MZz5r8gZ/l/v5xeN+5uOan93kjVzT871N/mo+S+W8O69JV4TM3bTx
+ 98htOVTGxhfPRjRC9iAaSIZyS2n5KZn0ZHwsemPpZov6YtwRsXL5QiweqaEW
+ NomJl46iJO7L98ptbLQTbdVEdpRR5NzXOrLCqkgb7IDTF7nFqRf6McL7lAXu
+ DSjmtr+h+DXdfkDopWIWDwmXLw0oYYlihfIVcrniF6mfhrtamEsLq5ebi0LH
+ yvAJH6XuG8gsWAaP03gPTygekKNCJ6x2kQmxFuJmiHVUieJWiBo2umAGm7jd
+ RcFgyeCOwV2DvMFySsoGK38AjaXx2SsDAAA=
"""
)
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/ExternalRequestProcessor.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/ExternalRequestProcessor.kt
index 396ace8..1726cce 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/ExternalRequestProcessor.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/ExternalRequestProcessor.kt
@@ -138,9 +138,12 @@
)
}
- override fun submit(captureSequence: ExternalCaptureSequence): Int {
- check(!closed.value)
+ override fun submit(captureSequence: ExternalCaptureSequence): Int? {
check(captureSequence.captureRequestList.isNotEmpty())
+ if (closed.value) {
+ Log.warn { "Cannot submit $captureSequence because $this is closed" }
+ return null
+ }
if (captureSequence.repeating) {
check(captureSequence.captureRequestList.size == 1)
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraControlImpl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraControlImpl.java
index 9016fda..25f1192 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraControlImpl.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraControlImpl.java
@@ -736,12 +736,24 @@
* <p><pre>If preferredMode is not supported, fallback with the following priority (highest to
* lowest).
* 1) {@link CaptureRequest#CONTROL_AE_MODE_ON}
- * 2) {@link CaptureRequest#CONTROL_AE_MODE_OFF)}
+ * 2) {@link CaptureRequest#CONTROL_AE_MODE_OFF}
* </pre>
*/
@ExecutedBy("mExecutor")
int getSupportedAeMode(int preferredMode) {
- int[] modes = mCameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
+ return getSupportedAeMode(mCameraCharacteristics, preferredMode);
+ }
+
+ /**
+ * Returns a supported AE mode which will be preferredMode if it is supported.
+ *
+ * @see #getSupportedAeMode(int preferredMode)
+ */
+ public static int getSupportedAeMode(
+ @NonNull CameraCharacteristicsCompat cameraCharacteristics,
+ int preferredMode
+ ) {
+ int[] modes = cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
if (modes == null) {
return CaptureRequest.CONTROL_AE_MODE_OFF;
@@ -791,7 +803,7 @@
}
@ExecutedBy("mExecutor")
- private boolean isModeInList(int mode, int[] modeList) {
+ private static boolean isModeInList(int mode, int[] modeList) {
for (int m : modeList) {
if (mode == m) {
return true;
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CapturePipeline.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CapturePipeline.java
index 57e535d..a77732e 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CapturePipeline.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CapturePipeline.java
@@ -47,6 +47,7 @@
import androidx.camera.camera2.internal.compat.CameraCharacteristicsCompat;
import androidx.camera.camera2.internal.compat.workaround.FlashAvailabilityChecker;
import androidx.camera.camera2.internal.compat.workaround.OverrideAeModeForStillCapture;
+import androidx.camera.camera2.internal.compat.workaround.UseFlashModeTorchFor3aUpdate;
import androidx.camera.camera2.internal.compat.workaround.UseTorchAsFlash;
import androidx.camera.camera2.interop.ExperimentalCamera2Interop;
import androidx.camera.core.ImageCapture;
@@ -199,7 +200,8 @@
}
if (flashMode == FLASH_MODE_SCREEN) {
- pipeline.addTask(new ScreenFlashTask(mCameraControl, mExecutor, mScheduler));
+ pipeline.addTask(new ScreenFlashTask(mCameraControl, mExecutor, mScheduler,
+ new UseFlashModeTorchFor3aUpdate(mCameraQuirk)));
} else {
if (mHasFlashUnit) {
if (isTorchAsFlash(flashType)) {
@@ -685,12 +687,15 @@
private final Executor mExecutor;
private final ScheduledExecutorService mScheduler;
private final ImageCapture.ScreenFlashUiControl mScreenFlashUiControl;
+ private final UseFlashModeTorchFor3aUpdate mUseFlashModeTorchFor3aUpdate;
- ScreenFlashTask(@NonNull Camera2CameraControlImpl cameraControl,
- @NonNull Executor executor, @NonNull ScheduledExecutorService scheduler) {
+ ScreenFlashTask(@NonNull Camera2CameraControlImpl cameraControl, @NonNull Executor executor,
+ @NonNull ScheduledExecutorService scheduler,
+ @NonNull UseFlashModeTorchFor3aUpdate useFlashModeTorchFor3aUpdate) {
mCameraControl = cameraControl;
mExecutor = executor;
mScheduler = scheduler;
+ mUseFlashModeTorchFor3aUpdate = useFlashModeTorchFor3aUpdate;
mScreenFlashUiControl =
Objects.requireNonNull(mCameraControl.getScreenFlashUiControl());
@@ -728,11 +733,13 @@
true),
mExecutor
).transformAsync(
- // Won't have any effect if CONTROL_AE_MODE_ON_EXTERNAL_FLASH is supported
input -> CallbackToFutureAdapter.getFuture(
completer -> {
+ if (!mUseFlashModeTorchFor3aUpdate.shouldUseFlashModeTorch()) {
+ completer.set(null);
+ return "EnableTorchInternal";
+ }
Logger.d(TAG, "ScreenFlashTask#preCapture: enable torch");
- // TODO: Enable torch only if actual flash unit doesn't exist
mCameraControl.enableTorchInternal(true);
completer.set(null);
return "EnableTorchInternal";
@@ -763,7 +770,9 @@
@Override
public void postCapture() {
Logger.d(TAG, "ScreenFlashTask#postCapture");
- mCameraControl.enableTorchInternal(false);
+ if (mUseFlashModeTorchFor3aUpdate.shouldUseFlashModeTorch()) {
+ mCameraControl.enableTorchInternal(false);
+ }
mCameraControl.getFocusMeteringControl().enableExternalFlashAeMode(false).addListener(
() -> Log.d(TAG, "enableExternalFlashAeMode disabled"), mExecutor
);
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java
index a95a720..cfba49c 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ProcessingCaptureSession.java
@@ -425,49 +425,41 @@
updateParameters(mSessionOptions, mStillCaptureOptions);
mSessionProcessor.startCapture(captureConfig.isPostviewEnabled(),
new SessionProcessor.CaptureCallback() {
- @Override
- public void onCaptureStarted(int captureSequenceId, long timestamp) {
- mExecutor.execute(() -> {
- for (CameraCaptureCallback cameraCaptureCallback :
- captureConfig.getCameraCaptureCallbacks()) {
- cameraCaptureCallback.onCaptureStarted();
+ @Override
+ public void onCaptureStarted(int captureSequenceId, long timestamp) {
+ for (CameraCaptureCallback cameraCaptureCallback :
+ captureConfig.getCameraCaptureCallbacks()) {
+ cameraCaptureCallback.onCaptureStarted();
+ }
}
- });
- }
- @Override
- public void onCaptureFailed(
- int captureSequenceId) {
- mExecutor.execute(() -> {
- for (CameraCaptureCallback cameraCaptureCallback :
- captureConfig.getCameraCaptureCallbacks()) {
- cameraCaptureCallback.onCaptureFailed(new CameraCaptureFailure(
- CameraCaptureFailure.Reason.ERROR));
+ @Override
+ public void onCaptureFailed(
+ int captureSequenceId) {
+ for (CameraCaptureCallback cameraCaptureCallback :
+ captureConfig.getCameraCaptureCallbacks()) {
+ cameraCaptureCallback.onCaptureFailed(new CameraCaptureFailure(
+ CameraCaptureFailure.Reason.ERROR));
+ }
}
- });
- }
- @Override
- public void onCaptureSequenceCompleted(int captureSequenceId) {
- mExecutor.execute(() -> {
- for (CameraCaptureCallback cameraCaptureCallback :
- captureConfig.getCameraCaptureCallbacks()) {
- cameraCaptureCallback.onCaptureCompleted(
- new CameraCaptureResult.EmptyCameraCaptureResult());
+ @Override
+ public void onCaptureSequenceCompleted(int captureSequenceId) {
+ for (CameraCaptureCallback cameraCaptureCallback :
+ captureConfig.getCameraCaptureCallbacks()) {
+ cameraCaptureCallback.onCaptureCompleted(
+ new CameraCaptureResult.EmptyCameraCaptureResult());
+ }
}
- });
- }
- @Override
- public void onCaptureProcessProgressed(int progress) {
- mExecutor.execute(() -> {
- for (CameraCaptureCallback cameraCaptureCallback :
- captureConfig.getCameraCaptureCallbacks()) {
- cameraCaptureCallback.onCaptureProcessProgressed(progress);
+ @Override
+ public void onCaptureProcessProgressed(int progress) {
+ for (CameraCaptureCallback cameraCaptureCallback :
+ captureConfig.getCameraCaptureCallbacks()) {
+ cameraCaptureCallback.onCaptureProcessProgressed(progress);
+ }
}
});
- }
- });
}
/**
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/quirk/CameraQuirks.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/quirk/CameraQuirks.java
index a185882..efffb01 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/quirk/CameraQuirks.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/quirk/CameraQuirks.java
@@ -97,6 +97,9 @@
if (IncorrectCaptureStateQuirk.load(cameraCharacteristicsCompat)) {
quirks.add(new IncorrectCaptureStateQuirk());
}
+ if (TorchFlashRequiredFor3aUpdateQuirk.load(cameraCharacteristicsCompat)) {
+ quirks.add(new TorchFlashRequiredFor3aUpdateQuirk(cameraCharacteristicsCompat));
+ }
return new Quirks(quirks);
}
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/quirk/TorchFlashRequiredFor3aUpdateQuirk.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/quirk/TorchFlashRequiredFor3aUpdateQuirk.java
new file mode 100644
index 0000000..9da886f
--- /dev/null
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/quirk/TorchFlashRequiredFor3aUpdateQuirk.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.camera2.internal.compat.quirk;
+
+import static android.hardware.camera2.CameraMetadata.LENS_FACING_FRONT;
+
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CaptureRequest;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.camera.camera2.internal.Camera2CameraControlImpl;
+import androidx.camera.camera2.internal.compat.CameraCharacteristicsCompat;
+import androidx.camera.core.impl.Quirk;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * <p>QuirkSummary
+ * Bug Id: 294870640
+ * Description: Quirk denoting the devices where {@link CaptureRequest#FLASH_MODE_TORCH} has
+ * to be set for 3A states to be updated with good values (in some cases, AWB
+ * scanning is not triggered at all). This results in problems like color tint
+ * or bad exposure in captured image during captures where lighting condition
+ * changes (e.g. screen flash capture). This maybe required even if a flash unit
+ * is not available (e.g. with front camera) and
+ * {@link CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER} has been requested. If
+ * {@link CaptureRequest#CONTROL_AE_MODE_ON_EXTERNAL_FLASH} is supported, it can
+ * be used instead and thus setting {@code FLASH_MODE_TORCH} won't be required.
+ * Device(s): Pixel 6A, 6 PRO, 7, 7A, 7 PRO, 8, 8 PRO
+ */
+@RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
+public class TorchFlashRequiredFor3aUpdateQuirk implements Quirk {
+ private static final List<String> AFFECTED_PIXEL_MODELS = Arrays.asList(
+ "PIXEL 6A",
+ "PIXEL 6 PRO",
+ "PIXEL 7",
+ "PIXEL 7A",
+ "PIXEL 7 PRO",
+ "PIXEL 8",
+ "PIXEL 8 PRO"
+ );
+
+ @NonNull
+ private final CameraCharacteristicsCompat mCameraCharacteristics;
+
+ public TorchFlashRequiredFor3aUpdateQuirk(
+ @NonNull CameraCharacteristicsCompat cameraCharacteristics) {
+ mCameraCharacteristics = cameraCharacteristics;
+ }
+
+ /**
+ * Checks if the quirk should be loaded based on device model info and camera lens facing.
+ */
+ static boolean load(@NonNull CameraCharacteristicsCompat cameraCharacteristics) {
+ return isAffectedModel(cameraCharacteristics);
+ }
+
+ /**
+ * Returns whether {@link CaptureRequest#FLASH_MODE_TORCH} is required to be set.
+ *
+ * <p> This will also check if the {@link CaptureRequest#CONTROL_AE_MODE_ON_EXTERNAL_FLASH} is
+ * supported, which is more recommended than using a quirk like using {@code FLASH_MODE_TORCH}.
+ */
+ public boolean isFlashModeTorchRequired() {
+ return !isExternalFlashAeModeSupported(mCameraCharacteristics);
+ }
+
+ private static boolean isAffectedModel(
+ @NonNull CameraCharacteristicsCompat cameraCharacteristics) {
+ return isAffectedPixelModel() && isFrontCamera(cameraCharacteristics);
+ }
+
+ private static boolean isAffectedPixelModel() {
+ for (String model : AFFECTED_PIXEL_MODELS) {
+ if (Build.MODEL.toUpperCase(Locale.US).equals(model)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static boolean isFrontCamera(
+ @NonNull CameraCharacteristicsCompat cameraCharacteristics) {
+ return cameraCharacteristics.get(CameraCharacteristics.LENS_FACING) == LENS_FACING_FRONT;
+ }
+
+ private static boolean isExternalFlashAeModeSupported(
+ @NonNull CameraCharacteristicsCompat cameraCharacteristics
+ ) {
+ if (Build.VERSION.SDK_INT < 28) {
+ return false;
+ }
+
+ return Camera2CameraControlImpl.getSupportedAeMode(cameraCharacteristics,
+ CaptureRequest.CONTROL_AE_MODE_ON_EXTERNAL_FLASH)
+ == CaptureRequest.CONTROL_AE_MODE_ON_EXTERNAL_FLASH;
+ }
+}
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/workaround/UseFlashModeTorchFor3aUpdate.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/workaround/UseFlashModeTorchFor3aUpdate.java
new file mode 100644
index 0000000..379ef3b
--- /dev/null
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/compat/workaround/UseFlashModeTorchFor3aUpdate.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.camera2.internal.compat.workaround;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.camera.camera2.internal.compat.quirk.TorchFlashRequiredFor3aUpdateQuirk;
+import androidx.camera.core.Logger;
+import androidx.camera.core.impl.Quirks;
+
+/**
+ * Workaround to use torch as flash.
+ *
+ * @see TorchFlashRequiredFor3aUpdateQuirk
+ */
+@RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
+public class UseFlashModeTorchFor3aUpdate {
+ private static final String TAG = "UseFlashModeTorchFor3aUpdate";
+
+ @Nullable
+ private final TorchFlashRequiredFor3aUpdateQuirk mTorchFlashRequiredFor3AUpdateQuirk;
+
+ public UseFlashModeTorchFor3aUpdate(@NonNull Quirks quirks) {
+ mTorchFlashRequiredFor3AUpdateQuirk = quirks.get(TorchFlashRequiredFor3aUpdateQuirk.class);
+ }
+
+ /** Returns if torch should be used as flash. */
+ public boolean shouldUseFlashModeTorch() {
+ boolean shouldUse = mTorchFlashRequiredFor3AUpdateQuirk != null
+ && mTorchFlashRequiredFor3AUpdateQuirk.isFlashModeTorchRequired();
+ Logger.d(TAG, "shouldUseFlashModeTorch: " + shouldUse);
+ return shouldUse;
+ }
+}
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CapturePipelineTest.kt b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CapturePipelineTest.kt
index 3d5f2e0..74be647 100644
--- a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CapturePipelineTest.kt
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/Camera2CapturePipelineTest.kt
@@ -36,6 +36,7 @@
import androidx.camera.camera2.internal.compat.CameraCharacteristicsCompat
import androidx.camera.camera2.internal.compat.quirk.AutoFlashUnderExposedQuirk
import androidx.camera.camera2.internal.compat.quirk.CameraQuirks
+import androidx.camera.camera2.internal.compat.quirk.TorchFlashRequiredFor3aUpdateQuirk
import androidx.camera.camera2.internal.compat.quirk.UseTorchAsFlashQuirk
import androidx.camera.camera2.internal.compat.workaround.OverrideAeModeForStillCapture
import androidx.camera.core.ImageCapture
@@ -53,6 +54,7 @@
import androidx.camera.core.impl.CaptureConfig
import androidx.camera.core.impl.DeferrableSurface
import androidx.camera.core.impl.ImmediateSurface
+import androidx.camera.core.impl.Quirk
import androidx.camera.core.impl.Quirks
import androidx.camera.core.impl.SessionConfig
import androidx.camera.core.impl.utils.executor.CameraXExecutors
@@ -359,8 +361,21 @@
screenFlash_screenFlashUiControlInvokedProperly(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
}
- private fun screenFlash_screenFlashUiControlInvokedProperly(imageCaptureMode: Int) {
- val cameraControl = createCameraControl().apply {
+ @Test
+ fun maxQuality_screenFlashCapture_withFlashModeTorchQuirk_screenFlashTaskInvokedProperly() {
+ screenFlash_screenFlashUiControlInvokedProperly(
+ ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY,
+ addFlashModeTorchQuirk = true
+ )
+ }
+
+ private fun screenFlash_screenFlashUiControlInvokedProperly(
+ imageCaptureMode: Int,
+ addFlashModeTorchQuirk: Boolean = false
+ ) {
+ val cameraControl = createCameraControl(
+ addTorchFlashRequiredFor3aUpdateQuirk = addFlashModeTorchQuirk
+ ).apply {
// Arrange.
flashMode = FLASH_MODE_SCREEN
@@ -401,6 +416,20 @@
}
}
+ if (addFlashModeTorchQuirk) {
+ // Submit a repeating request for FLASH_MODE_TORCH
+ CountDownLatch(5).let {
+ cameraControl.simulateRepeatingResult(
+ initialDelay = 100,
+ period = 50,
+ resultParameters = mapOf(CaptureResult.FLASH_MODE
+ to CaptureResult.FLASH_MODE_TORCH),
+ requestCountLatch = it
+ )
+ it.await(1, TimeUnit.SECONDS)
+ }
+ }
+
// Assert, verify AE precapture is triggered
immediateCompleteCapture.verifyRequestResult {
it.requestContains(
@@ -1177,12 +1206,23 @@
cameraId: String = CAMERA_ID_0,
quirks: Quirks? = null,
updateCallback: CameraControlInternal.ControlUpdateCallback = immediateCompleteCapture,
+ addTorchFlashRequiredFor3aUpdateQuirk: Boolean = false,
): Camera2CameraControlImpl {
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val characteristics = cameraManager.getCameraCharacteristics(cameraId)
val characteristicsCompat = CameraCharacteristicsCompat
.toCameraCharacteristicsCompat(characteristics, cameraId)
- val cameraQuirk = quirks ?: CameraQuirks.get(cameraId, characteristicsCompat)
+ var cameraQuirk = quirks ?: CameraQuirks.get(cameraId, characteristicsCompat)
+
+ if (addTorchFlashRequiredFor3aUpdateQuirk) {
+ cameraQuirk = Quirks(cameraQuirk.getAll(Quirk::class.java).apply {
+ add(
+ TorchFlashRequiredFor3aUpdateQuirk(
+ characteristicsCompat
+ )
+ )
+ })
+ }
return Camera2CameraControlImpl(
characteristicsCompat,
diff --git a/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/quirk/TorchFlashRequiredFor3AUpdateQuirkTest.kt b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/quirk/TorchFlashRequiredFor3AUpdateQuirkTest.kt
new file mode 100644
index 0000000..c356459
--- /dev/null
+++ b/camera/camera-camera2/src/test/java/androidx/camera/camera2/internal/compat/quirk/TorchFlashRequiredFor3AUpdateQuirkTest.kt
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.camera2.internal.compat.quirk
+
+import android.hardware.camera2.CameraCharacteristics
+import android.hardware.camera2.CameraMetadata.CONTROL_AE_MODE_ON
+import android.hardware.camera2.CameraMetadata.CONTROL_AE_MODE_ON_EXTERNAL_FLASH
+import android.os.Build
+import androidx.camera.camera2.internal.compat.CameraCharacteristicsCompat
+import androidx.camera.core.impl.Quirks
+import com.google.common.truth.Truth
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.ParameterizedRobolectricTestRunner
+import org.robolectric.annotation.Config
+import org.robolectric.annotation.internal.DoNotInstrument
+import org.robolectric.shadow.api.Shadow
+import org.robolectric.shadows.ShadowBuild
+import org.robolectric.shadows.ShadowCameraCharacteristics
+
+private const val CAMERA_ID_0 = "0"
+
+@RunWith(ParameterizedRobolectricTestRunner::class)
+@DoNotInstrument
+@Config(minSdk = Build.VERSION_CODES.LOLLIPOP)
+class TorchFlashRequiredFor3AUpdateQuirkTest(
+ private val model: String,
+ private val lensFacing: Int,
+ private val externalFlashAeModeSupported: Boolean,
+ private val enabled: Boolean
+) {
+ companion object {
+ @JvmStatic
+ @ParameterizedRobolectricTestRunner.Parameters(
+ name = "Model: {0}, lens facing: {1}, external ae mode: {2}, enabled: {3}"
+ )
+ fun data() = listOf(
+ arrayOf("Pixel 3a", CameraCharacteristics.LENS_FACING_FRONT, false, false),
+ arrayOf("Pixel 4", CameraCharacteristics.LENS_FACING_FRONT, true, false),
+ arrayOf("Pixel 6", CameraCharacteristics.LENS_FACING_FRONT, false, false),
+ arrayOf("Pixel 6A", CameraCharacteristics.LENS_FACING_BACK, false, false),
+ arrayOf("Pixel 6A", CameraCharacteristics.LENS_FACING_FRONT, false, true),
+ arrayOf("Pixel 7 pro", CameraCharacteristics.LENS_FACING_FRONT, false, true),
+ arrayOf("Pixel 8", CameraCharacteristics.LENS_FACING_FRONT, false, true),
+ arrayOf("SM-A320FL", CameraCharacteristics.LENS_FACING_FRONT, false, false),
+ )
+ }
+
+ private fun getCameraQuirks(
+ lensFacing: Int,
+ externalFlashAeModeSupported: Boolean,
+ ): Quirks {
+ val characteristics = ShadowCameraCharacteristics.newCameraCharacteristics()
+ val shadowCharacteristics = Shadow.extract<ShadowCameraCharacteristics>(characteristics)
+ shadowCharacteristics.set(
+ CameraCharacteristics.LENS_FACING,
+ lensFacing
+ )
+ shadowCharacteristics.set(
+ CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES,
+ if (externalFlashAeModeSupported) {
+ intArrayOf(CONTROL_AE_MODE_ON_EXTERNAL_FLASH)
+ } else intArrayOf(
+ CONTROL_AE_MODE_ON
+ )
+ )
+ val characteristicsCompat =
+ CameraCharacteristicsCompat.toCameraCharacteristicsCompat(characteristics, CAMERA_ID_0)
+ return CameraQuirks.get(CAMERA_ID_0, characteristicsCompat)
+ }
+
+ @Test
+ fun canEnableQuirkCorrectly() {
+ // Arrange
+ ShadowBuild.setModel(model)
+
+ // Act
+ val cameraQuirks = getCameraQuirks(lensFacing, externalFlashAeModeSupported)
+
+ // Verify
+ Truth.assertThat(
+ cameraQuirks.get(
+ TorchFlashRequiredFor3aUpdateQuirk::class.java
+ )?.isFlashModeTorchRequired ?: false
+ ).isEqualTo(enabled)
+ }
+}
diff --git a/camera/camera-core/api/current.txt b/camera/camera-core/api/current.txt
index 92f0b23..4a977b9 100644
--- a/camera/camera-core/api/current.txt
+++ b/camera/camera-core/api/current.txt
@@ -288,11 +288,14 @@
@RequiresApi(21) public final class ImageCapture extends androidx.camera.core.UseCase {
method public int getCaptureMode();
method public int getFlashMode();
+ method public static androidx.camera.core.ImageCaptureCapabilities getImageCaptureCapabilities(androidx.camera.core.CameraInfo);
method @IntRange(from=1, to=100) public int getJpegQuality();
+ method public androidx.camera.core.resolutionselector.ResolutionSelector? getPostviewResolutionSelector();
method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
method public androidx.camera.core.ImageCapture.ScreenFlashUiControl? getScreenFlashUiControl();
method public int getTargetRotation();
+ method public boolean isPostviewEnabled();
method public void setCropAspectRatio(android.util.Rational);
method public void setFlashMode(int);
method public void setScreenFlashUiControl(androidx.camera.core.ImageCapture.ScreenFlashUiControl?);
@@ -321,6 +324,8 @@
method public androidx.camera.core.ImageCapture.Builder setFlashMode(int);
method public androidx.camera.core.ImageCapture.Builder setIoExecutor(java.util.concurrent.Executor);
method public androidx.camera.core.ImageCapture.Builder setJpegQuality(@IntRange(from=1, to=100) int);
+ method public androidx.camera.core.ImageCapture.Builder setPostviewEnabled(boolean);
+ method public androidx.camera.core.ImageCapture.Builder setPostviewResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
method public androidx.camera.core.ImageCapture.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
method public androidx.camera.core.ImageCapture.Builder setScreenFlashUiControl(androidx.camera.core.ImageCapture.ScreenFlashUiControl);
method @Deprecated public androidx.camera.core.ImageCapture.Builder setTargetAspectRatio(int);
@@ -341,15 +346,19 @@
public abstract static class ImageCapture.OnImageCapturedCallback {
ctor public ImageCapture.OnImageCapturedCallback();
+ method public void onCaptureProcessProgressed(int);
method public void onCaptureStarted();
method public void onCaptureSuccess(androidx.camera.core.ImageProxy);
method public void onError(androidx.camera.core.ImageCaptureException);
+ method public void onPostviewBitmapAvailable(android.graphics.Bitmap);
}
public static interface ImageCapture.OnImageSavedCallback {
+ method public default void onCaptureProcessProgressed(int);
method public default void onCaptureStarted();
method public void onError(androidx.camera.core.ImageCaptureException);
method public void onImageSaved(androidx.camera.core.ImageCapture.OutputFileResults);
+ method public default void onPostviewBitmapAvailable(android.graphics.Bitmap);
}
public static final class ImageCapture.OutputFileOptions {
@@ -376,6 +385,11 @@
method @UiThread public void clearScreenFlashUi();
}
+ public interface ImageCaptureCapabilities {
+ method public boolean isCaptureProcessProgressSupported();
+ method public boolean isPostviewSupported();
+ }
+
@RequiresApi(21) public class ImageCaptureException extends java.lang.Exception {
ctor public ImageCaptureException(int, String, Throwable?);
method public int getImageCaptureError();
diff --git a/camera/camera-core/api/restricted_current.txt b/camera/camera-core/api/restricted_current.txt
index 92f0b23..4a977b9 100644
--- a/camera/camera-core/api/restricted_current.txt
+++ b/camera/camera-core/api/restricted_current.txt
@@ -288,11 +288,14 @@
@RequiresApi(21) public final class ImageCapture extends androidx.camera.core.UseCase {
method public int getCaptureMode();
method public int getFlashMode();
+ method public static androidx.camera.core.ImageCaptureCapabilities getImageCaptureCapabilities(androidx.camera.core.CameraInfo);
method @IntRange(from=1, to=100) public int getJpegQuality();
+ method public androidx.camera.core.resolutionselector.ResolutionSelector? getPostviewResolutionSelector();
method public androidx.camera.core.ResolutionInfo? getResolutionInfo();
method public androidx.camera.core.resolutionselector.ResolutionSelector? getResolutionSelector();
method public androidx.camera.core.ImageCapture.ScreenFlashUiControl? getScreenFlashUiControl();
method public int getTargetRotation();
+ method public boolean isPostviewEnabled();
method public void setCropAspectRatio(android.util.Rational);
method public void setFlashMode(int);
method public void setScreenFlashUiControl(androidx.camera.core.ImageCapture.ScreenFlashUiControl?);
@@ -321,6 +324,8 @@
method public androidx.camera.core.ImageCapture.Builder setFlashMode(int);
method public androidx.camera.core.ImageCapture.Builder setIoExecutor(java.util.concurrent.Executor);
method public androidx.camera.core.ImageCapture.Builder setJpegQuality(@IntRange(from=1, to=100) int);
+ method public androidx.camera.core.ImageCapture.Builder setPostviewEnabled(boolean);
+ method public androidx.camera.core.ImageCapture.Builder setPostviewResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
method public androidx.camera.core.ImageCapture.Builder setResolutionSelector(androidx.camera.core.resolutionselector.ResolutionSelector);
method public androidx.camera.core.ImageCapture.Builder setScreenFlashUiControl(androidx.camera.core.ImageCapture.ScreenFlashUiControl);
method @Deprecated public androidx.camera.core.ImageCapture.Builder setTargetAspectRatio(int);
@@ -341,15 +346,19 @@
public abstract static class ImageCapture.OnImageCapturedCallback {
ctor public ImageCapture.OnImageCapturedCallback();
+ method public void onCaptureProcessProgressed(int);
method public void onCaptureStarted();
method public void onCaptureSuccess(androidx.camera.core.ImageProxy);
method public void onError(androidx.camera.core.ImageCaptureException);
+ method public void onPostviewBitmapAvailable(android.graphics.Bitmap);
}
public static interface ImageCapture.OnImageSavedCallback {
+ method public default void onCaptureProcessProgressed(int);
method public default void onCaptureStarted();
method public void onError(androidx.camera.core.ImageCaptureException);
method public void onImageSaved(androidx.camera.core.ImageCapture.OutputFileResults);
+ method public default void onPostviewBitmapAvailable(android.graphics.Bitmap);
}
public static final class ImageCapture.OutputFileOptions {
@@ -376,6 +385,11 @@
method @UiThread public void clearScreenFlashUi();
}
+ public interface ImageCaptureCapabilities {
+ method public boolean isCaptureProcessProgressSupported();
+ method public boolean isPostviewSupported();
+ }
+
@RequiresApi(21) public class ImageCaptureException extends java.lang.Exception {
ctor public ImageCaptureException(int, String, Throwable?);
method public int getImageCaptureError();
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt
index ac60c54..128a2c3 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt
@@ -16,6 +16,7 @@
package androidx.camera.core.imagecapture
+import android.graphics.Bitmap
import androidx.camera.core.ImageCapture.OutputFileResults
import androidx.camera.core.ImageCaptureException
import androidx.camera.core.ImageProxy
@@ -33,7 +34,7 @@
private var onDiskResult: OutputFileResults? = null
private var onDiskResultCont: Continuation<OutputFileResults>? = null
- override fun onPostviewImageAvailable(imageProxy: ImageProxy) {
+ override fun onPostviewBitmapAvailable(bitmap: Bitmap) {
}
override fun onCaptureProcessProgressed(progress: Int) {
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/Image2BitmapTest.kt b/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/Image2BitmapTest.kt
new file mode 100644
index 0000000..71e4ad9
--- /dev/null
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/imagecapture/Image2BitmapTest.kt
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.core.imagecapture
+
+import android.graphics.BitmapFactory
+import android.graphics.Matrix
+import android.graphics.Rect
+import androidx.camera.core.internal.utils.ImageUtil
+import androidx.camera.core.processing.Packet
+import androidx.camera.testing.impl.ExifUtil
+import androidx.camera.testing.impl.TestImageUtil
+import androidx.camera.testing.impl.fakes.FakeImageInfo
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SdkSuppress
+import androidx.test.filters.SmallTest
+import com.google.common.truth.Truth
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@SdkSuppress(minSdkVersion = 21)
+class Image2BitmapTest {
+ private val operation = Image2Bitmap()
+
+ @Test
+ fun processYuvImage_rotation0_assertOutput() {
+ processYuvImage_assertOutput(rotationDegrees = 0)
+ }
+ @Test
+ fun processYuvImage_rotation90_assertOutput() {
+ processYuvImage_assertOutput(rotationDegrees = 90)
+ }
+
+ @Test
+ fun processYuvImage_rotation180_assertOutput() {
+ processYuvImage_assertOutput(rotationDegrees = 180)
+ }
+
+ @Test
+ fun processYuvImage_rotation270_assertOutput() {
+ processYuvImage_assertOutput(rotationDegrees = 270)
+ }
+
+ private fun processYuvImage_assertOutput(rotationDegrees: Int) {
+ // Arrange.
+ val imageInfo = FakeImageInfo()
+ val yuvImage = TestImageUtil.createYuvFakeImageProxy(imageInfo, Utils.WIDTH, Utils.HEIGHT)
+ val input = Packet.of(
+ yuvImage,
+ null, // YuvImage doesn't have exif info.
+ Rect(0, 0, Utils.WIDTH, Utils.HEIGHT),
+ rotationDegrees,
+ Matrix(),
+ Utils.CAMERA_CAPTURE_RESULT
+ )
+ val inputDecodedBitmap = ImageUtil.createBitmapFromImageProxy(yuvImage)
+
+ // Act.
+ val outputBitmap = operation.apply(input)
+
+ // Assert: the image is the same.
+ val inputRotatedBitmap = TestImageUtil.rotateBitmap(inputDecodedBitmap, rotationDegrees)
+ Truth.assertThat(TestImageUtil.getAverageDiff(
+ inputRotatedBitmap, outputBitmap)).isEqualTo(0)
+
+ // Assert: image is closed.
+ Truth.assertThat(yuvImage.isClosed).isTrue()
+ }
+
+ @Test
+ fun processJpegImage_rotation0_assertOutput() {
+ processJpegImage_assertOutput(rotationDegrees = 0)
+ }
+
+ @Test
+ fun processJpegImage_rotation90_assertOutput() {
+ processJpegImage_assertOutput(rotationDegrees = 90)
+ }
+
+ @Test
+ fun processJpegImage_rotation180_assertOutput() {
+ processJpegImage_assertOutput(rotationDegrees = 180)
+ }
+
+ @Test
+ fun processJpegImage_rotation270_assertOutput() {
+ processJpegImage_assertOutput(rotationDegrees = 270)
+ }
+
+ private fun processJpegImage_assertOutput(rotationDegrees: Int) {
+ // Arrange.
+ val imageInfo = FakeImageInfo()
+ val jpegBytes = TestImageUtil.createJpegBytes(Utils.WIDTH, Utils.HEIGHT)
+ val jpegImage = TestImageUtil.createJpegFakeImageProxy(imageInfo, jpegBytes)
+ val exif = ExifUtil.createExif(jpegBytes)
+ val input = Packet.of(
+ jpegImage,
+ exif,
+ Rect(0, 0, Utils.WIDTH, Utils.HEIGHT),
+ rotationDegrees,
+ Matrix(),
+ Utils.CAMERA_CAPTURE_RESULT
+ )
+ val inputDecodedBitmap = BitmapFactory.decodeByteArray(jpegBytes, 0, jpegBytes.size)
+
+ // Act.
+ val outputBitmap = operation.apply(input)
+
+ // Assert: the image is the same.
+ val inputRotatedBitmap = TestImageUtil.rotateBitmap(inputDecodedBitmap, rotationDegrees)
+ Truth.assertThat(TestImageUtil.getAverageDiff(
+ inputRotatedBitmap, outputBitmap)).isEqualTo(0)
+
+ // Assert: image is closed.
+ Truth.assertThat(jpegImage.isClosed).isTrue()
+ }
+}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
index 683aab2..58a3170 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
@@ -59,6 +59,7 @@
import android.content.ContentResolver;
import android.content.ContentValues;
+import android.graphics.Bitmap;
import android.graphics.ImageFormat;
import android.graphics.Rect;
import android.location.Location;
@@ -883,7 +884,6 @@
*
* @return {@link ImageCaptureCapabilities}
*/
- @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public static ImageCaptureCapabilities getImageCaptureCapabilities(
@NonNull CameraInfo cameraInfo) {
@@ -1174,6 +1174,7 @@
boolean isPostviewEnabled =
getCurrentConfig().retrieveOption(OPTION_POSTVIEW_ENABLED, false);
Size postViewSize = null;
+ int postviewFormat = ImageFormat.YUV_420_888;
if (isPostviewEnabled) {
SessionProcessor sessionProcessor = getSessionProcessor();
@@ -1183,9 +1184,14 @@
null);
Map<Integer, List<Size>> map =
sessionProcessor.getSupportedPostviewSize(resolution);
- List<Size> sizes = map.get(ImageFormat.JPEG);
+ // Prefer YUV because it takes less time to decode to bitmap.
+ List<Size> sizes = map.get(ImageFormat.YUV_420_888);
+ if (sizes == null || sizes.isEmpty()) {
+ sizes = map.get(ImageFormat.JPEG);
+ postviewFormat = ImageFormat.JPEG;
+ }
- if (sizes != null) {
+ if (sizes != null && !sizes.isEmpty()) {
if (postviewSizeSelector != null) {
Collections.sort(sizes, new CompareSizesByArea(true));
CameraInternal camera = getCamera();
@@ -1215,7 +1221,7 @@
}
mImagePipeline = new ImagePipeline(config, resolution, getEffect(), isVirtualCamera,
- postViewSize);
+ postViewSize, postviewFormat);
if (mTakePictureManager == null) {
// mTakePictureManager is reused when the Surface is reset.
@@ -1420,6 +1426,26 @@
}
/**
+ * Returns if postview is enabled or not.
+ *
+ * @see Builder#setPostviewEnabled(boolean)
+ */
+ public boolean isPostviewEnabled() {
+ return getCurrentConfig().retrieveOption(OPTION_POSTVIEW_ENABLED, false);
+ }
+
+ /**
+ * Returns the {@link ResolutionSelector} used to select the postview size.
+ *
+ * @see Builder#setPostviewResolutionSelector(ResolutionSelector)
+ */
+ @Nullable
+ public ResolutionSelector getPostviewResolutionSelector() {
+ return getCurrentConfig().retrieveOption(OPTION_POSTVIEW_RESOLUTION_SELECTOR,
+ null);
+ }
+
+ /**
* Describes the error that occurred during an image capture operation (such as {@link
* ImageCapture#takePicture(Executor, OnImageCapturedCallback)}).
*
@@ -1503,46 +1529,38 @@
*
* <p>To know in advanced if this callback will be invoked or not, check the
* capabilities by {@link #getImageCaptureCapabilities(CameraInfo)} and
- * {@link ImageCaptureCapabilities#isCaptureProcessProgressSupported()}.
+ * {@link ImageCaptureCapabilities#isCaptureProcessProgressSupported()}. If supported,
+ * this callback will be called multiple times with monotonically increasing
+ * values. At the minimum the callback will be called once with value 100 to
+ * indicate the processing is finished. This callback will always be called before
+ * {@link #onImageSaved(OutputFileResults)}.
*
* @param progress the progress ranging from 0 to 100.
*/
- @RestrictTo(Scope.LIBRARY_GROUP)
default void onCaptureProcessProgressed(int progress) {
}
/**
- * Callback to notify that the postview image is available. The postview is intended to be
+ * Callback to notify that the postview bitmap is available. The postview is intended to be
* shown on UI before the long-processing capture is completed in order to provide a
- * better UX. The image format is {@link ImageFormat#JPEG}.
+ * better UX.
*
* <p>The postview is only available when the
* {@link ImageCaptureCapabilities#isPostviewSupported()} returns true for the specified
* {@link CameraInfo} and applications must explicitly enable the postview using the
- * {@link Builder#setPostviewEnabled(boolean)}. Please note that if something goes wrong
- * when processing the postview, this callback method won't be invoked.
+ * {@link Builder#setPostviewEnabled(boolean)}. This callback will be called before
+ * {@link #onImageSaved(OutputFileResults)}. But if something goes wrong when processing
+ * the postview, this callback method could be skipped.
*
- * <p>Please close the {@link ImageProxy} once you no longer need it. The default
- * implementation of this method will close it in case apps don't implement the method.
- *
- * <p>The image is provided as captured by the underlying {@link ImageReader} without
- * rotation applied. The value in {@code image.getImageInfo().getRotationDegrees()}
- * describes the magnitude of clockwise rotation, which if applied to the image will make
- * it match the currently configured target rotation.
- *
- * <p>For example, if the current target rotation is set to the display rotation,
- * rotationDegrees is the rotation to apply to the image to match the display orientation.
- * A rotation of 90 degrees would mean rotating the image 90 degrees clockwise produces an
- * image that will match the display orientation.
+ * <p>The bitmap is rotated according to the target rotation set to the {@link ImageCapture}
+ * to make it upright. If target rotation is not set, the display rotation is used.
*
* <p>See also {@link ImageCapture.Builder#setTargetRotation(int)} and
* {@link #setTargetRotation(int)}.
*
- * @param image the postview {@link ImageProxy}
+ * @param bitmap the postview bitmap.
*/
- @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
- default void onPostviewImageAvailable(@NonNull ImageProxy image) {
- image.close();
+ default void onPostviewBitmapAvailable(@NonNull Bitmap bitmap) {
}
}
@@ -1610,46 +1628,39 @@
*
* <p>To know in advanced if this callback will be invoked or not, check the
* capabilities by {@link #getImageCaptureCapabilities(CameraInfo)} and
- * {@link ImageCaptureCapabilities#isCaptureProcessProgressSupported()}.
+ * {@link ImageCaptureCapabilities#isCaptureProcessProgressSupported()}. If supported,
+ * this callback will be called multiple times with monotonically increasing
+ * values. At the minimum the callback will be called once with value 100 to
+ * indicate the processing is finished. This callback will always be called before
+ * {@link #onCaptureSuccess(ImageProxy)}.
*
* @param progress the progress ranging from 0 to 100.
*/
- @RestrictTo(Scope.LIBRARY_GROUP)
public void onCaptureProcessProgressed(int progress) {
}
/**
- * Callback to notify that the postview image is available. The postview is intended to be
+ * Callback to notify that the postview bitmap is available. The postview is intended to be
* shown on UI before the long-processing capture is completed in order to provide a
- * better UX. The image format is {@link ImageFormat#JPEG}.
+ * better UX.
*
* <p>The postview is only available when the
* {@link ImageCaptureCapabilities#isPostviewSupported()} returns true for the specified
* {@link CameraInfo} and applications must explicitly enable the postview using the
- * {@link Builder#setPostviewEnabled(boolean)}. Please note that if something goes wrong
- * when processing the postview, this callback method won't be invoked.
+ * {@link Builder#setPostviewEnabled(boolean)}. This callback will be called before
+ * {@link #onCaptureSuccess(ImageProxy)}. But if something goes wrong when processing the
+ * postview, this callback method could be skipped.
*
- * <p>Please close the {@link ImageProxy} once you no longer need it. The default
- * implementation of this method will close it in case apps don't implement the method.
- *
- * <p>The image is provided as captured by the underlying {@link ImageReader} without
- * rotation applied. The value in {@code image.getImageInfo().getRotationDegrees()}
- * describes the magnitude of clockwise rotation, which if applied to the image will make
- * it match the currently configured target rotation.
- *
- * <p>For example, if the current target rotation is set to the display rotation,
- * rotationDegrees is the rotation to apply to the image to match the display orientation.
- * A rotation of 90 degrees would mean rotating the image 90 degrees clockwise produces an
- * image that will match the display orientation.
+ * <p>The bitmap is rotated according to the target rotation set to the {@link ImageCapture}
+ * to make it upright. If target rotation is not set, the display rotation is used.
*
* <p>See also {@link ImageCapture.Builder#setTargetRotation(int)} and
* {@link #setTargetRotation(int)}.
*
- * @param image the postview {@link ImageProxy}
+ * @param bitmap the postview bitmap.
+
*/
- @RestrictTo(Scope.LIBRARY_GROUP)
- public void onPostviewImageAvailable(@NonNull ImageProxy image) {
- image.close();
+ public void onPostviewBitmapAvailable(@NonNull Bitmap bitmap) {
}
}
@@ -2533,22 +2544,27 @@
}
/**
- * Enables the postview which allows you to get the unprocessed image before the processing
- * is done during the <code>takePicture</code> call.
+ * Enables postview image generation. A postview image is a low-quality image
+ * that's produced earlier during image capture than the final high-quality image,
+ * and can be used as a thumbnail or placeholder until the final image is ready.
*
- * <p>By default the largest available postview size that are smaller or equal to the
+ * <p>When the postview is available,
+ * {@link OnImageCapturedCallback#onPostviewBitmapAvailable(Bitmap)} or
+ * {@link OnImageSavedCallback#onPostviewBitmapAvailable(Bitmap)} will be called.
+ *
+ * <p>By default the largest available postview size that is smaller or equal to the
* ImagaeCapture size will be used to configure the postview. The {@link ResolutionSelector}
* can also be used to select a specific size via
* {@link #setPostviewResolutionSelector(ResolutionSelector)}.
*
- * <p>It is recommended to query the capture capability via
- * {@link #getImageCaptureCapabilities(CameraInfo)} before enabling this feature to avoid
- * unnecessary initializations.
+ * <p>You can query the postview capability by invoking
+ * {@link #getImageCaptureCapabilities(CameraInfo)}. If
+ * {@link ImageCaptureCapabilities#isPostviewSupported()} returns false and you still
+ * enable the postview, the postview image won't be generated.
*
* @param postviewEnabled whether postview is enabled or not
* @return the current Builder.
*/
- @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public Builder setPostviewEnabled(boolean postviewEnabled) {
getMutableConfig().insertOption(OPTION_POSTVIEW_ENABLED,
@@ -2558,15 +2574,17 @@
/**
* Set the {@link ResolutionSelector} to select the postview size from the available
- * postview sizes. Please note the selected size will be smaller or equal to the
- * ImageCapture size.
+ * postview sizes. These available postview sizes are smaller or equal to the
+ * ImageCapture size. You can implement the
+ * {@link androidx.camera.core.resolutionselector.ResolutionFilter} and set it to the
+ * {@link ResolutionSelector} to get the list of available sizes and determine which size
+ * to use.
*
* <p>If no sizes can be selected using the given {@link ResolutionSelector}, it will throw
* an {@link IllegalArgumentException} when {@code bindToLifecycle()} is invoked.
*
* @return the current Builder.
*/
- @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public Builder setPostviewResolutionSelector(
@NonNull ResolutionSelector resolutionSelector) {
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureCapabilities.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureCapabilities.java
index 1c81d44..9c05020 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureCapabilities.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureCapabilities.java
@@ -16,24 +16,29 @@
package androidx.camera.core;
-import androidx.annotation.RestrictTo;
-
/**
* ImageCaptureCapabilities is used to query {@link ImageCapture} use case capabilities on the
* device.
*/
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public interface ImageCaptureCapabilities {
/**
- * Returns if the takePicture() call in {@link ImageCapture} is capable of outputting post
- * view images ahead of final images. If supported, apps can enable the postview using
+ * Returns if the takePicture() call in {@link ImageCapture} is capable of outputting
+ * postview images.
+ *
+ * <p>A postview image is a low-quality image that's produced earlier during image capture
+ * than the final high-quality image, and can be used as a thumbnail or placeholder until the
+ * final image is ready.
+ *
+ * If supported, apps can enable the postview using
* {@link ImageCapture.Builder#setPostviewEnabled(boolean)}.
*/
boolean isPostviewSupported();
/**
* Returns if the takePicture() call in {@link ImageCapture} is capable of notifying the
- * onCaptureProcessProgressed callback to the apps.
+ * {@link ImageCapture.OnImageSavedCallback#onCaptureProcessProgressed(int)} or
+ * {@link ImageCapture.OnImageCapturedCallback#onCaptureProcessProgressed(int)} callback to
+ * the apps.
*/
boolean isCaptureProcessProgressSupported();
}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/CaptureNode.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/CaptureNode.java
index 0bfb216..2baba27 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/CaptureNode.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/CaptureNode.java
@@ -177,7 +177,7 @@
createImageReaderProxy(inputEdge.getImageReaderProxyProvider(),
inputEdge.getPostviewSize().getWidth(),
inputEdge.getPostviewSize().getHeight(),
- ImageFormat.JPEG);
+ inputEdge.getPostviewImageFormat());
postviewImageReader.setOnImageAvailableListener(imageReader -> {
try {
ImageProxy image = imageReader.acquireLatestImage();
@@ -191,7 +191,8 @@
mSafeCloseImageReaderForPostview = new SafeCloseImageReaderProxy(postviewImageReader);
inputEdge.setPostviewSurface(
- postviewImageReader.getSurface(), inputEdge.getPostviewSize());
+ postviewImageReader.getSurface(),
+ inputEdge.getPostviewSize(), inputEdge.getPostviewImageFormat());
}
inputEdge.getRequestEdge().setListener(requestConsumer);
@@ -393,6 +394,11 @@
abstract Size getPostviewSize();
/**
+ * The image format of the postview.
+ */
+ abstract int getPostviewImageFormat();
+
+ /**
* Edge that accepts {@link ProcessingRequest}.
*/
@NonNull
@@ -428,8 +434,8 @@
mSurface = new ImmediateSurface(surface, getSize(), getInputFormat());
}
- void setPostviewSurface(@NonNull Surface surface, @NonNull Size size) {
- mPostviewSurface = new ImmediateSurface(surface, size, ImageFormat.JPEG);
+ void setPostviewSurface(@NonNull Surface surface, @NonNull Size size, int imageFormat) {
+ mPostviewSurface = new ImmediateSurface(surface, size, imageFormat);
}
/**
@@ -448,10 +454,19 @@
@NonNull
static In of(Size size, int inputFormat, int outputFormat, boolean isVirtualCamera,
- @Nullable ImageReaderProxyProvider imageReaderProxyProvider,
- @Nullable Size postviewSize) {
+ @Nullable ImageReaderProxyProvider imageReaderProxyProvider) {
return new AutoValue_CaptureNode_In(size, inputFormat, outputFormat, isVirtualCamera,
- imageReaderProxyProvider, postviewSize, new Edge<>(), new Edge<>());
+ imageReaderProxyProvider, null, ImageFormat.YUV_420_888,
+ new Edge<>(), new Edge<>());
+ }
+
+ @NonNull
+ static In of(Size size, int inputFormat, int outputFormat, boolean isVirtualCamera,
+ @Nullable ImageReaderProxyProvider imageReaderProxyProvider,
+ @Nullable Size postviewSize, int postviewImageFormat) {
+ return new AutoValue_CaptureNode_In(size, inputFormat, outputFormat, isVirtualCamera,
+ imageReaderProxyProvider, postviewSize, postviewImageFormat,
+ new Edge<>(), new Edge<>());
}
}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/Image2Bitmap.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/Image2Bitmap.java
new file mode 100644
index 0000000..1f0dd60
--- /dev/null
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/Image2Bitmap.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.core.imagecapture;
+
+import static androidx.camera.core.ImageCapture.ERROR_UNKNOWN;
+import static androidx.camera.core.ImageProcessingUtil.convertYUVToRGB;
+
+import android.graphics.Bitmap;
+import android.graphics.ImageFormat;
+import android.graphics.PixelFormat;
+import android.os.Build;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.camera.core.ImageCaptureException;
+import androidx.camera.core.ImageProxy;
+import androidx.camera.core.ImageReaderProxys;
+import androidx.camera.core.SafeCloseImageReaderProxy;
+import androidx.camera.core.internal.utils.ImageUtil;
+import androidx.camera.core.processing.Operation;
+import androidx.camera.core.processing.Packet;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Convert an {@link ImageProxy} to a {@link Bitmap}.
+ *
+ * <p>An {@link ImageCaptureException} will be thrown if the conversion failed.
+ * Currently it supports only {@link ImageFormat#YUV_420_888} and
+ * {@link ImageFormat#JPEG} image. {@link IllegalArgumentException} will be thrown if the input
+ * image format is not supported.
+ */
+@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+public class Image2Bitmap implements
+ Operation<Packet<ImageProxy>, Bitmap> {
+ @NonNull
+ @Override
+ public Bitmap apply(@NonNull Packet<ImageProxy> imageProxyPacket)
+ throws ImageCaptureException {
+ Bitmap result;
+ SafeCloseImageReaderProxy rgbImageReader = null;
+ try {
+ if (imageProxyPacket.getFormat() == ImageFormat.YUV_420_888) {
+ ImageProxy yuvImage = imageProxyPacket.getData();
+ boolean needFlip = (imageProxyPacket.getRotationDegrees() % 180) != 0;
+ int tempImageReaderWidth = needFlip ? yuvImage.getHeight() : yuvImage.getWidth();
+ int tempImageReaderHeight = needFlip ? yuvImage.getWidth() : yuvImage.getHeight();
+
+ // TODO(b/313548792): remove the usage of ImageReader by creating a version of
+ // convertYUVToBitmap that also rotates the output.
+ rgbImageReader = new SafeCloseImageReaderProxy(
+ ImageReaderProxys.createIsolatedReader(
+ tempImageReaderWidth, tempImageReaderHeight,
+ PixelFormat.RGBA_8888, 2)
+ );
+
+ ByteBuffer rgbConvertedBuffer = ByteBuffer.allocateDirect(
+ yuvImage.getWidth() * yuvImage.getHeight() * 4);
+ ImageProxy imageProxyRGB = convertYUVToRGB(
+ yuvImage,
+ rgbImageReader,
+ rgbConvertedBuffer,
+ imageProxyPacket.getRotationDegrees(),
+ /* onePixelShiftEnabled */false);
+ yuvImage.close();
+ if (imageProxyRGB == null) {
+ throw new ImageCaptureException(ERROR_UNKNOWN, "Can't covert YUV to RGB", null);
+ }
+ Bitmap bitmap = ImageUtil.createBitmapFromImageProxy(imageProxyRGB);
+ imageProxyRGB.close();
+ result = bitmap;
+ } else if (imageProxyPacket.getFormat() == ImageFormat.JPEG) {
+ ImageProxy jpegImage = imageProxyPacket.getData();
+ Bitmap bitmap = ImageUtil.createBitmapFromImageProxy(jpegImage);
+ jpegImage.close();
+ result = ImageUtil.rotateBitmap(bitmap, imageProxyPacket.getRotationDegrees());
+ } else {
+ throw new IllegalArgumentException("Invalid postview image format : "
+ + imageProxyPacket.getFormat());
+ }
+ return result;
+ } catch (UnsupportedOperationException e) {
+ String format = imageProxyPacket.getFormat() == ImageFormat.YUV_420_888
+ ? "YUV" : "JPEG";
+ throw new ImageCaptureException(ERROR_UNKNOWN,
+ "Can't convert " + format + " to bitmap", e);
+ } finally {
+ if (rgbImageReader != null) {
+ rgbImageReader.close();
+ }
+ }
+ }
+}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ImagePipeline.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ImagePipeline.java
index 9aeb2b3..6b17899 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ImagePipeline.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ImagePipeline.java
@@ -91,7 +91,17 @@
@NonNull ImageCaptureConfig useCaseConfig,
@NonNull Size cameraSurfaceSize) {
this(useCaseConfig, cameraSurfaceSize, /*cameraEffect=*/ null,
- /*isVirtualCamera=*/ false, /* postviewSize */ null);
+ /*isVirtualCamera=*/ false, /* postviewSize */ null, ImageFormat.YUV_420_888);
+ }
+
+ @MainThread
+ public ImagePipeline(
+ @NonNull ImageCaptureConfig useCaseConfig,
+ @NonNull Size cameraSurfaceSize,
+ @Nullable CameraEffect cameraEffect,
+ boolean isVirtualCamera) {
+ this(useCaseConfig, cameraSurfaceSize, cameraEffect, isVirtualCamera,
+ null, ImageFormat.YUV_420_888);
}
@MainThread
@@ -100,7 +110,8 @@
@NonNull Size cameraSurfaceSize,
@Nullable CameraEffect cameraEffect,
boolean isVirtualCamera,
- @Nullable Size postviewSize) {
+ @Nullable Size postviewSize,
+ int postviewImageFormat) {
checkMainThread();
mUseCaseConfig = useCaseConfig;
mCaptureConfig = CaptureConfig.Builder.createFrom(useCaseConfig).build();
@@ -119,7 +130,8 @@
getOutputFormat(),
isVirtualCamera,
mUseCaseConfig.getImageReaderProxyProvider(),
- postviewSize);
+ postviewSize,
+ postviewImageFormat);
CaptureNode.Out captureOut = mCaptureNode.transform(mPipelineIn);
ProcessingNode.In processingIn = mBundlingNode.transform(captureOut);
mProcessingNode.transform(processingIn);
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingNode.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingNode.java
index e889383..5b57a4f 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingNode.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingNode.java
@@ -74,6 +74,7 @@
private Operation<Packet<byte[]>, Packet<Bitmap>> mJpegBytes2CroppedBitmap;
private Operation<Packet<ImageProxy>, ImageProxy> mJpegImage2Result;
private Operation<Packet<byte[]>, Packet<ImageProxy>> mJpegBytes2Image;
+ private Operation<Packet<ImageProxy>, Bitmap> mImage2Bitmap;
private Operation<Packet<Bitmap>, Packet<Bitmap>> mBitmapEffect;
/**
@@ -110,6 +111,7 @@
inputPacket -> {
if (inputPacket.getProcessingRequest().isAborted()) {
// No-ops if the request is aborted.
+ inputPacket.getImageProxy().close();
return;
}
mBlockingExecutor.execute(() -> processInputPacket(inputPacket));
@@ -131,6 +133,7 @@
mBitmap2JpegBytes = new Bitmap2JpegBytes();
mJpegBytes2Disk = new JpegBytes2Disk();
mJpegImage2Result = new JpegImage2Result();
+ mImage2Bitmap = new Image2Bitmap();
if (inputEdge.getInputFormat() == YUV_420_888 || mImageProcessor != null) {
// Convert JPEG bytes to ImageProxy for:
// - YUV input: YUV -> JPEG -> ImageProxy
@@ -178,8 +181,8 @@
ProcessingRequest request = inputPacket.getProcessingRequest();
try {
Packet<ImageProxy> image = mInput2Packet.apply(inputPacket);
- ImageProxy result = mJpegImage2Result.apply(image);
- mainThreadExecutor().execute(() -> request.onPostviewImageAvailable(result));
+ Bitmap bitmap = mImage2Bitmap.apply(image);
+ mainThreadExecutor().execute(() -> request.onPostviewBitmapAvailable(bitmap));
} catch (Exception e) {
inputPacket.getImageProxy().close();
Logger.e(TAG, "process postview input packet failed.", e);
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingRequest.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingRequest.java
index 807a54f..f112e2d 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingRequest.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/ProcessingRequest.java
@@ -18,6 +18,7 @@
import static java.util.Objects.requireNonNull;
+import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.os.Build;
@@ -149,8 +150,8 @@
mCallback.onFinalResult(outputFileResults);
}
- void onPostviewImageAvailable(@NonNull ImageProxy imageProxy) {
- mCallback.onPostviewImageAvailable(imageProxy);
+ void onPostviewBitmapAvailable(@NonNull Bitmap bitmap) {
+ mCallback.onPostviewBitmapAvailable(bitmap);
}
/**
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/RequestWithCallback.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/RequestWithCallback.java
index e01ba85..6cbd546 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/RequestWithCallback.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/RequestWithCallback.java
@@ -21,6 +21,7 @@
import static java.util.Objects.requireNonNull;
+import android.graphics.Bitmap;
import android.os.Build;
import androidx.annotation.MainThread;
@@ -143,6 +144,7 @@
public void onFinalResult(@NonNull ImageProxy imageProxy) {
checkMainThread();
if (mIsAborted) {
+ imageProxy.close();
// Do not deliver result if the request has been aborted.
return;
}
@@ -162,14 +164,14 @@
}
@Override
- public void onPostviewImageAvailable(@NonNull ImageProxy imageProxy) {
+ public void onPostviewBitmapAvailable(@NonNull Bitmap bitmap) {
checkMainThread();
if (mIsAborted) {
// Do not deliver result if the request has been aborted.
return;
}
- mTakePictureRequest.onPostviewImageAvailable(imageProxy);
+ mTakePictureRequest.onPostviewBitmapAvailable(bitmap);
}
@MainThread
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/SingleBundlingNode.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/SingleBundlingNode.java
index 73cd04b..8c95d23 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/SingleBundlingNode.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/SingleBundlingNode.java
@@ -103,7 +103,12 @@
@MainThread
private void matchPostviewImageWithRequest(@NonNull ImageProxy imageProxy) {
checkMainThread();
- checkState(mPendingRequest != null);
+ // if the final image arrives earlier than the post image, mPendingRequest will be set to
+ // null in matchImageWithRequest. In this case, we will ignore the postview processing.
+ if (mPendingRequest == null) {
+ imageProxy.close();
+ return;
+ }
mOutputEdge.getPostviewEdge().accept(
ProcessingNode.InputPacket.of(mPendingRequest, imageProxy));
}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureCallback.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureCallback.java
index 5b61165..ce23053 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureCallback.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureCallback.java
@@ -16,6 +16,8 @@
package androidx.camera.core.imagecapture;
+import android.graphics.Bitmap;
+
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.camera.core.ImageCapture;
@@ -70,9 +72,9 @@
void onFinalResult(@NonNull ImageProxy imageProxy);
/**
- * Invoked when the postview image is available.
+ * Invoked when the postview bitmap is available.
*/
- void onPostviewImageAvailable(@NonNull ImageProxy imageProxy);
+ void onPostviewBitmapAvailable(@NonNull Bitmap bitmap);
/**
* Invoked when camera fails to return the image.
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureRequest.java b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureRequest.java
index 1851232..5feb8a4 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureRequest.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/imagecapture/TakePictureRequest.java
@@ -21,6 +21,7 @@
import static java.util.Objects.requireNonNull;
+import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.os.Build;
@@ -212,14 +213,14 @@
}
/**
- * Delivers postview image result to the app.
+ * Delivers postview bitmap result to the app.
*/
- void onPostviewImageAvailable(@NonNull ImageProxy imageProxy) {
+ void onPostviewBitmapAvailable(@NonNull Bitmap bitmap) {
getAppExecutor().execute(() -> {
if (getOnDiskCallback() != null) {
- getOnDiskCallback().onPostviewImageAvailable(imageProxy);
+ getOnDiskCallback().onPostviewBitmapAvailable(bitmap);
} else if (getInMemoryCallback() != null) {
- getInMemoryCallback().onPostviewImageAvailable(imageProxy);
+ getInMemoryCallback().onPostviewBitmapAvailable(bitmap);
}
});
}
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/internal/utils/ImageUtil.java b/camera/camera-core/src/main/java/androidx/camera/core/internal/utils/ImageUtil.java
index c198150..3ca31bf 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/internal/utils/ImageUtil.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/internal/utils/ImageUtil.java
@@ -114,6 +114,17 @@
}
/**
+ * Rotates the bitmap by the given rotation degrees.
+ */
+ @NonNull
+ public static Bitmap rotateBitmap(@NonNull Bitmap bitmap, int rotationDegrees) {
+ Matrix matrix = new Matrix();
+ matrix.postRotate(rotationDegrees);
+ return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix,
+ true);
+ }
+
+ /**
* Creates a direct {@link ByteBuffer} and copy the content of the {@link Bitmap}.
*/
@NonNull
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/CaptureNodeTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/CaptureNodeTest.kt
index 6c2969f..c25d59a 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/CaptureNodeTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/CaptureNodeTest.kt
@@ -16,8 +16,8 @@
package androidx.camera.core.imagecapture
-import android.graphics.ImageFormat
import android.graphics.ImageFormat.JPEG
+import android.graphics.ImageFormat.YUV_420_888
import android.os.Build
import android.os.Looper.getMainLooper
import android.util.Size
@@ -55,7 +55,7 @@
@Before
fun setUp() {
- captureNodeIn = CaptureNode.In.of(Size(10, 10), JPEG, JPEG, false, null, null)
+ captureNodeIn = CaptureNode.In.of(Size(10, 10), JPEG, JPEG, false, null)
captureNodeOut = captureNode.transform(captureNodeIn)
captureNodeOut.imageEdge.setListener {
imagePropagated.add(it)
@@ -77,7 +77,7 @@
val imageReaderProvider = ImageReaderProxyProvider { _, _, _, _, _ ->
imageReader
}
- val input = CaptureNode.In.of(Size(10, 10), JPEG, JPEG, false, imageReaderProvider, null)
+ val input = CaptureNode.In.of(Size(10, 10), JPEG, JPEG, false, imageReaderProvider)
// Act: transform.
val node = CaptureNode()
node.transform(input)
@@ -171,12 +171,13 @@
}
@Test
- fun transformWithPostviewSize() {
+ fun transformWithPostviewSizeAndYuv() {
// Arrange: set the postviewSize to the CaptureNode.In
val postviewSize = Size(640, 480)
val input = CaptureNode.In.of(Size(10, 10), JPEG, JPEG, false, null,
- postviewSize)
+ postviewSize, YUV_420_888
+ )
// Act: transform.
val node = CaptureNode()
@@ -185,7 +186,26 @@
// Assert: postview surface is created
assertThat(input.postviewSurface).isNotNull()
assertThat(input.postviewSurface!!.prescribedSize).isEqualTo(postviewSize)
- assertThat(input.postviewSurface!!.prescribedStreamFormat).isEqualTo(ImageFormat.JPEG)
+ assertThat(input.postviewSurface!!.prescribedStreamFormat).isEqualTo(YUV_420_888)
+ node.release()
+ }
+
+ @Test
+ fun transformWithPostviewSizeAndJpeg() {
+ // Arrange: set the postviewSize to the CaptureNode.In
+ val postviewSize = Size(640, 480)
+
+ val input = CaptureNode.In.of(Size(10, 10), JPEG, JPEG, false, null,
+ postviewSize, JPEG)
+
+ // Act: transform.
+ val node = CaptureNode()
+ node.transform(input)
+
+ // Assert: postview surface is created
+ assertThat(input.postviewSurface).isNotNull()
+ assertThat(input.postviewSurface!!.prescribedSize).isEqualTo(postviewSize)
+ assertThat(input.postviewSurface!!.prescribedStreamFormat).isEqualTo(JPEG)
node.release()
}
}
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt
index 018c083..866772e 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/FakeTakePictureCallback.kt
@@ -16,6 +16,7 @@
package androidx.camera.core.imagecapture
+import android.graphics.Bitmap
import androidx.camera.core.ImageCapture.OutputFileResults
import androidx.camera.core.ImageCaptureException
import androidx.camera.core.ImageProxy
@@ -32,7 +33,7 @@
var processFailure: ImageCaptureException? = null
var onDiskResult: OutputFileResults? = null
var captureProcessProgress = -1
- var onPostviewImageAvailable: ImageProxy? = null
+ var onPostviewBitmapAvailable: Bitmap? = null
var aborted = false
@@ -68,7 +69,7 @@
captureProcessProgress = progress
}
- override fun onPostviewImageAvailable(imageProxy: ImageProxy) {
- >
+ override fun onPostviewBitmapAvailable(bitmap: Bitmap) {
+ >
}
}
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ImagePipelineTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ImagePipelineTest.kt
index 0c108e2..47151d6 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ImagePipelineTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ImagePipelineTest.kt
@@ -137,7 +137,7 @@
imagePipeline.close()
imagePipeline =
ImagePipeline(imageCaptureConfig, SIZE,
- /*cameraEffect=*/null, /*isVirtualCamera=*/true, /*postviewSize*/ null)
+ /*cameraEffect=*/null, /*isVirtualCamera=*/true)
// Act & assert: send and receive ImageProxy.
sendInMemoryRequest_receivesImageProxy()
@@ -155,8 +155,7 @@
imageCaptureConfig,
SIZE,
GrayscaleImageEffect(),
- false,
- /*postviewSize*/ null
+ false
).processingNode.mImageProcessor
).isNotNull()
}
@@ -260,10 +259,29 @@
}
@Test
- fun createSessionConfigBuilderWithPostviewEnabled() {
+ fun createSessionConfigBuilderWithYuvPostviewEnabled() {
// Arrange.
val postviewSize = Size(640, 480)
- imagePipeline = ImagePipeline(imageCaptureConfig, SIZE, null, false, postviewSize)
+ imagePipeline = ImagePipeline(imageCaptureConfig, SIZE, null, false,
+ postviewSize, ImageFormat.YUV_420_888)
+
+ // Act: create SessionConfig
+ val sessionConfig = imagePipeline.createSessionConfigBuilder(SIZE).build()
+
+ // Assert: SessionConfig contains the postview output config.
+ assertThat(sessionConfig.postviewOutputConfig).isNotNull()
+ assertThat(sessionConfig.postviewOutputConfig!!.surface.prescribedSize)
+ .isEqualTo(postviewSize)
+ assertThat(sessionConfig.postviewOutputConfig!!.surface.prescribedStreamFormat)
+ .isEqualTo(ImageFormat.YUV_420_888)
+ }
+
+ @Test
+ fun createSessionConfigBuilderWithJpegPostviewEnabled() {
+ // Arrange.
+ val postviewSize = Size(640, 480)
+ imagePipeline = ImagePipeline(imageCaptureConfig, SIZE, null, false,
+ postviewSize, ImageFormat.JPEG)
// Act: create SessionConfig
val sessionConfig = imagePipeline.createSessionConfigBuilder(SIZE).build()
@@ -280,7 +298,8 @@
fun createCameraRequestWithPostviewEnabled() {
// Arrange.
val postviewSize = Size(640, 480)
- imagePipeline = ImagePipeline(imageCaptureConfig, SIZE, null, false, postviewSize)
+ imagePipeline = ImagePipeline(imageCaptureConfig, SIZE, null, false,
+ postviewSize, ImageFormat.YUV_420_888)
// Act: create requests
val result =
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ProcessingNodeTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ProcessingNodeTest.kt
index 31ed105..0e0be4b 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ProcessingNodeTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/imagecapture/ProcessingNodeTest.kt
@@ -135,7 +135,7 @@
shadowOf(getMainLooper()).idle()
// Assert: postview image is received.
- assertThat(callback.onPostviewImageAvailable).isNotNull()
+ assertThat(callback.onPostviewBitmapAvailable).isNotNull()
}
@Test
@@ -161,7 +161,7 @@
shadowOf(getMainLooper()).idle()
// Assert: the postview image is not received.
- assertThat(callback.onPostviewImageAvailable).isNull()
+ assertThat(callback.onPostviewBitmapAvailable).isNull()
}
@Test
diff --git a/camera/camera-extensions-stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java b/camera/camera-extensions-stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java
index dbcd1ef..98cf915 100644
--- a/camera/camera-extensions-stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java
+++ b/camera/camera-extensions-stub/src/main/java/androidx/camera/extensions/impl/ImageCaptureExtenderImpl.java
@@ -91,7 +91,7 @@
/**
* Returns supported output format/size map for postview image. OEM is required to support
- * both JPEG and YUV_420_888 format output.
+ * YUV_420_888 format output.
*
* <p>Pair list composed with {@link ImageFormat} and {@link Size} array will be returned.
* The sizes must be smaller than or equal to the provided capture size and have the same
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureTest.kt b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureTest.kt
index 3a8d018..0328edf 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureTest.kt
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ImageCaptureTest.kt
@@ -17,10 +17,13 @@
package androidx.camera.extensions
import android.content.Context
+import android.graphics.Bitmap
import android.graphics.ImageFormat
import android.graphics.SurfaceTexture
import android.util.Size
+import android.view.Surface
import androidx.camera.camera2.Camera2Config
+import androidx.camera.core.Camera
import androidx.camera.core.CameraSelector
import androidx.camera.core.ImageCapture
import androidx.camera.core.ImageCaptureException
@@ -47,6 +50,7 @@
import kotlinx.coroutines.withContext
import kotlinx.coroutines.withTimeoutOrNull
import org.junit.After
+import org.junit.Assert.assertTrue
import org.junit.Assume.assumeTrue
import org.junit.Before
import org.junit.Rule
@@ -216,14 +220,16 @@
private suspend fun bindAndTakePicture(
onImageCaptureCallback: ImageCapture.OnImageCapturedCallback,
+ targetRotation: Int? = null,
enablePostview: Boolean = false
- ) {
+ ): Camera {
// To test bind/unbind and take picture.
- val imageCapture = ImageCapture.Builder()
- .setPostviewEnabled(enablePostview)
- .build()
+ val imageCapture = ImageCapture.Builder().apply {
+ targetRotation?.let { setTargetRotation(it) }
+ setPostviewEnabled(enablePostview)
+ }.build()
val preview = Preview.Builder().build()
- withContext(Dispatchers.Main) {
+ return withContext(Dispatchers.Main) {
// To set the update listener and Preview will change to active state.
preview.setSurfaceProvider(
SurfaceTextureProvider.createSurfaceTextureProvider(
@@ -243,7 +249,7 @@
})
)
- cameraProvider.bindToLifecycle(
+ val camera = cameraProvider.bindToLifecycle(
fakeLifecycleOwner,
extensionsCameraSelector,
preview,
@@ -254,19 +260,22 @@
CameraXExecutors.mainThreadExecutor(),
onImageCaptureCallback
)
+ camera
}
}
private suspend fun bindAndTakePicture(
onImageSavedCallback: ImageCapture.OnImageSavedCallback,
+ targetRotation: Int? = null,
enablePostview: Boolean = false
- ) {
+ ): Camera {
// To test bind/unbind and take picture.
- val imageCapture = ImageCapture.Builder()
- .setPostviewEnabled(enablePostview)
- .build()
+ val imageCapture = ImageCapture.Builder().apply {
+ targetRotation?.let { setTargetRotation(it) }
+ setPostviewEnabled(enablePostview)
+ }.build()
val preview = Preview.Builder().build()
- withContext(Dispatchers.Main) {
+ return withContext(Dispatchers.Main) {
// To set the update listener and Preview will change to active state.
preview.setSurfaceProvider(
SurfaceTextureProvider.createSurfaceTextureProvider(
@@ -286,7 +295,7 @@
})
)
- cameraProvider.bindToLifecycle(
+ val camera = cameraProvider.bindToLifecycle(
fakeLifecycleOwner,
extensionsCameraSelector,
preview,
@@ -302,6 +311,7 @@
CameraXExecutors.mainThreadExecutor(),
onImageSavedCallback
)
+ camera
}
}
@@ -385,10 +395,11 @@
val captureStartedDeferred = CompletableDeferred<Boolean>()
val captureSuccessDeferred = CompletableDeferred<ImageProxy>()
- val PostviewDeferred = CompletableDeferred<ImageProxy>()
+ val PostviewDeferred = CompletableDeferred<Bitmap>()
var hasError = false
+ val targetRotation = Surface.ROTATION_0
- bindAndTakePicture(object : ImageCapture.OnImageCapturedCallback() {
+ val camera = bindAndTakePicture(object : ImageCapture.OnImageCapturedCallback() {
override fun onError(exception: ImageCaptureException) {
hasError = true
}
@@ -398,19 +409,21 @@
override fun onCaptureSuccess(image: ImageProxy) {
captureSuccessDeferred.complete(image)
}
- override fun onPostviewImageAvailable(image: ImageProxy) {
- PostviewDeferred.complete(image)
+ override fun onPostviewBitmapAvailable(bitmap: Bitmap) {
+ PostviewDeferred.complete(bitmap)
}
- }, enablePostview = true)
+ }, enablePostview = true, targetRotation = targetRotation)
+ val rotationDegree = camera.cameraInfo.getSensorRotationDegrees(targetRotation)
+ val isFlipped = (rotationDegree % 180) != 0
assertThat(withTimeoutOrNull(5000) { captureStartedDeferred.await() }).isTrue()
- withTimeoutOrNull(5000) { PostviewDeferred.await() }.use {
+ withTimeoutOrNull(5000) { PostviewDeferred.await() }.let {
assertThat(it).isNotNull()
- assertThat(it!!.format).isEqualTo(ImageFormat.JPEG)
- if (isRotationOptionSupportedDevice()) {
- val exif = ExifUtil.getExif(it)
- assertThat(exif!!.rotation).isEqualTo(it.imageInfo.rotationDegrees)
+ if (isFlipped) {
+ assertTrue(it!!.width <= it.height)
+ } else {
+ assertTrue(it!!.height <= it.width)
}
}
@@ -432,10 +445,11 @@
val captureStartedDeferred = CompletableDeferred<Boolean>()
val imageSavedDeferred = CompletableDeferred<ImageCapture.OutputFileResults>()
- val PostviewDeferred = CompletableDeferred<ImageProxy>()
+ val PostviewDeferred = CompletableDeferred<Bitmap>()
var hasError = false
+ val targetRotation = Surface.ROTATION_0
- bindAndTakePicture(object : ImageCapture.OnImageSavedCallback {
+ val camera = bindAndTakePicture(object : ImageCapture.OnImageSavedCallback {
override fun onError(exception: ImageCaptureException) {
hasError = true
}
@@ -446,19 +460,21 @@
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
imageSavedDeferred.complete(outputFileResults)
}
- override fun onPostviewImageAvailable(image: ImageProxy) {
- PostviewDeferred.complete(image)
+ override fun onPostviewBitmapAvailable(bitmap: Bitmap) {
+ PostviewDeferred.complete(bitmap)
}
}, enablePostview = true)
+ val rotationDegree = camera.cameraInfo.getSensorRotationDegrees(targetRotation)
+ val isFlipped = (rotationDegree % 180) != 0
assertThat(withTimeoutOrNull(5000) { captureStartedDeferred.await() }).isTrue()
- withTimeoutOrNull(5000) { PostviewDeferred.await() }.use {
+ withTimeoutOrNull(5000) { PostviewDeferred.await() }.let {
assertThat(it).isNotNull()
- assertThat(it!!.format).isEqualTo(ImageFormat.JPEG)
- if (isRotationOptionSupportedDevice()) {
- val exif = ExifUtil.getExif(it)
- assertThat(exif!!.rotation).isEqualTo(it.imageInfo.rotationDegrees)
+ if (isFlipped) {
+ assertTrue(it!!.width <= it.height)
+ } else {
+ assertTrue(it!!.height <= it.width)
}
}
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/BasicExtenderSessionProcessorTest.kt b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/BasicExtenderSessionProcessorTest.kt
index 22d42d2..a2757be 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/BasicExtenderSessionProcessorTest.kt
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/BasicExtenderSessionProcessorTest.kt
@@ -662,10 +662,8 @@
fakeCaptureExtenderImpl.postviewSupportedSizes = postviewSizes
// 2. Act and Assert
- // BasiccVendorExtender is supposed to convert the YUV supported sizes into JPEG supported
- // size.s
assertThat(basicExtenderSessionProcessor.getSupportedPostviewSize(Size(1920, 1080))
- .get(ImageFormat.JPEG)).containsExactly(Size(1920, 1080), Size(640, 480))
+ .get(ImageFormat.YUV_420_888)).containsExactly(Size(1920, 1080), Size(640, 480))
}
private suspend fun initBasicExtenderSessionProcessor(): AutoCloseable {
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessorTest.kt b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessorTest.kt
index ceb3377..8519505 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessorTest.kt
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessorTest.kt
@@ -263,7 +263,7 @@
}
@Test
- fun canStartCaptureWithPostviewWithRotation(): Unit = runBlocking {
+ fun canStartCaptureWithPostview(): Unit = runBlocking {
Assume.assumeTrue(
ClientVersion.isMinimumCompatibleVersion(Version.VERSION_1_4) &&
ExtensionVersion.isMinimumCompatibleVersion(Version.VERSION_1_4)
@@ -281,20 +281,18 @@
)
val postviewImageReader = ImageReaderProxys.createIsolatedReader(
- WIDTH, HEIGHT, ImageFormat.JPEG, 2)
+ WIDTH, HEIGHT, ImageFormat.YUV_420_888, 2)
val postviewOutputSurface = OutputSurface.create(
postviewImageReader.surface!!,
- Size(WIDTH, HEIGHT), ImageFormat.JPEG
+ Size(WIDTH, HEIGHT), ImageFormat.YUV_420_888
)
- val rotationDegrees = 270
stillCaptureProcessor = StillCaptureProcessor(
fakeCaptureProcessorImpl,
imageReaderJpeg.surface!!,
Size(WIDTH, HEIGHT),
postviewOutputSurface
)
- stillCaptureProcessor.setRotationDegrees(rotationDegrees)
val captureSession = Camera2Util.openCaptureSession(
cameraDevice!!.unwrap(), listOf(cameraYuvImageReader!!.surface), backgroundHandler
@@ -318,9 +316,7 @@
}
val postviewImage = postviewDeferred.await()
- assertThat(postviewImage.format).isEqualTo(ImageFormat.JPEG)
- val exif = Exif.createFromImageProxy(postviewImage)
- assertThat(exif.rotation).isEqualTo(rotationDegrees)
+ assertThat(postviewImage.format).isEqualTo(ImageFormat.YUV_420_888)
}
postviewImageReader.close()
diff --git a/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/BasicVendorExtender.java b/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/BasicVendorExtender.java
index 657cfd5..d36458c 100644
--- a/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/BasicVendorExtender.java
+++ b/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/BasicVendorExtender.java
@@ -379,18 +379,13 @@
public Map<Integer, List<Size>> getSupportedPostviewResolutions(@NonNull Size captureSize) {
if (ClientVersion.isMinimumCompatibleVersion(Version.VERSION_1_4)
&& ExtensionVersion.isMinimumCompatibleVersion(Version.VERSION_1_4)) {
- // For OEMs implementing basic extender, the supported format of the postview
- // can only be YUV.
List<Pair<Integer, Size[]>> list =
mImageCaptureExtenderImpl.getSupportedPostviewResolutions(captureSize);
Map<Integer, List<Size>> result = new HashMap<>();
for (Pair<Integer, Size[]> pair : list) {
int format = pair.first;
Size[] sizes = pair.second;
- if (format == ImageFormat.YUV_420_888) {
- // Basic Extender convert the YUV format into JPEG format.
- result.put(ImageFormat.JPEG, Arrays.asList(sizes));
- }
+ result.put(format, Arrays.asList(sizes));
}
return Collections.unmodifiableMap(result);
}
diff --git a/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessor.java b/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessor.java
index 5646194..639b172 100644
--- a/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessor.java
+++ b/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/sessionprocessor/StillCaptureProcessor.java
@@ -44,6 +44,7 @@
import androidx.camera.extensions.internal.ClientVersion;
import androidx.camera.extensions.internal.ExtensionVersion;
import androidx.camera.extensions.internal.Version;
+import androidx.core.util.Preconditions;
import org.jetbrains.annotations.TestOnly;
@@ -78,14 +79,9 @@
final CaptureResultImageMatcher mCaptureResultImageMatcher = new CaptureResultImageMatcher();
@NonNull
final ImageReaderProxy mProcessedYuvImageReader;
- @Nullable
- private ImageReaderProxy mPostviewYuvImageReader;
private boolean mIsPostviewConfigured;
@NonNull
YuvToJpegConverter mYuvToJpegConverter;
- @Nullable
- YuvToJpegConverter mYuvToJpegConverterPostview;
-
final Object mLock = new Object();
@GuardedBy("mLock")
@NonNull
@@ -166,33 +162,10 @@
if (postviewOutputSurface != null
&& ClientVersion.isMinimumCompatibleVersion(Version.VERSION_1_4)
&& ExtensionVersion.isMinimumCompatibleVersion(Version.VERSION_1_4)) {
- mPostviewYuvImageReader = ImageReaderProxys.createIsolatedReader(
- postviewOutputSurface.getSize().getWidth(),
- postviewOutputSurface.getSize().getHeight(),
- ImageFormat.YUV_420_888, MAX_IMAGES);
- mPostviewYuvImageReader.setOnImageAvailableListener(
- imageReader -> {
- synchronized (mLock) {
- if (mIsClosed) {
- Logger.d(TAG, "Ignore JPEG processing in closed state");
- return;
- }
- ImageProxy imageProxy = imageReader.acquireNextImage();
- if (imageProxy != null) {
- try {
- mYuvToJpegConverterPostview.writeYuvImage(imageProxy);
- } catch (YuvToJpegConverter.ConversionFailedException e) {
- }
- }
- }
- }, CameraXExecutors.ioExecutor());
-
-
+ Preconditions.checkArgument(
+ postviewOutputSurface.getImageFormat() == ImageFormat.YUV_420_888);
mCaptureProcessorImpl.onResolutionUpdate(surfaceSize, postviewOutputSurface.getSize());
- mCaptureProcessorImpl.onPostviewOutputSurface(mPostviewYuvImageReader.getSurface());
-
- mYuvToJpegConverterPostview =
- new YuvToJpegConverter(90, postviewOutputSurface.getSurface());
+ mCaptureProcessorImpl.onPostviewOutputSurface(postviewOutputSurface.getSurface());
} else {
mCaptureProcessorImpl.onResolutionUpdate(surfaceSize);
@@ -289,7 +262,7 @@
progress);
}
- }, CameraXExecutors.ioExecutor());
+ }, CameraXExecutors.directExecutor());
} else if (ExtensionVersion.isMinimumCompatibleVersion(
Version.VERSION_1_3)
&& ClientVersion.isMinimumCompatibleVersion(
@@ -311,7 +284,7 @@
onCaptureResultCallback
.onCaptureProcessProgressed(progress);
}
- }, CameraXExecutors.ioExecutor());
+ }, CameraXExecutors.directExecutor());
} else {
mCaptureProcessorImpl.process(convertedResult);
}
@@ -348,17 +321,11 @@
void setJpegQuality(@IntRange(from = 0, to = 100) int quality) {
mYuvToJpegConverter.setJpegQuality(quality);
- if (mYuvToJpegConverterPostview != null) {
- mYuvToJpegConverterPostview.setJpegQuality(quality);
- }
}
void setRotationDegrees(
@ImageOutputConfig.RotationDegreesValue int rotationDegrees) {
mYuvToJpegConverter.setRotationDegrees(rotationDegrees);
- if (mYuvToJpegConverterPostview != null) {
- mYuvToJpegConverterPostview.setRotationDegrees(rotationDegrees);
- }
}
/**
@@ -374,10 +341,6 @@
mCaptureResultImageMatcher.clearImageReferenceListener();
mCaptureResultImageMatcher.clear();
mProcessedYuvImageReader.close();
- if (mPostviewYuvImageReader != null) {
- mPostviewYuvImageReader.clearOnImageAvailableListener();
- mPostviewYuvImageReader.close();
- }
}
}
}
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/AudioVideoSyncTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/AudioVideoSyncTest.kt
index 48b91fd..257ecd5 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/AudioVideoSyncTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/AudioVideoSyncTest.kt
@@ -198,6 +198,8 @@
assertThat(timeDiff).isLessThan(diffThresholdUs)
recording.stopSafely()
+ inOrder.verify(videoRecordEventListener, Mockito.timeout(5000L))
+ .accept(ArgumentMatchers.any(VideoRecordEvent.Finalize::class.java))
file.delete()
}
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
index 0ccbd4e..c132254 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/RecorderTest.kt
@@ -276,6 +276,13 @@
fun tearDown() {
for (recording in recordingsToStop) {
recording.stop()
+ try {
+ // Wait for recording done to avoid overlapping to next recording test.
+ // Overlapping recording tests may lead to uncertainty and flaky-ness.
+ recording.listener.verifyFinalize(inOrder = false)
+ } catch (e: AssertionError) {
+ // Ignored.
+ }
}
if (this::cameraUseCaseAdapter.isInitialized) {
@@ -739,6 +746,8 @@
@Test
fun stop_WhenUseCaseDetached() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
// Arrange.
val recording = createRecordingProcess()
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
index a00c5d8..8b56757 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/VideoRecordingTest.kt
@@ -61,6 +61,8 @@
import androidx.camera.testing.impl.mocks.helpers.CallTimesAtLeast
import androidx.camera.video.VideoRecordEvent.Finalize.ERROR_NONE
import androidx.camera.video.VideoRecordEvent.Finalize.ERROR_SOURCE_INACTIVE
+import androidx.camera.video.internal.compat.quirk.DeviceQuirks
+import androidx.camera.video.internal.compat.quirk.StopCodecAfterSurfaceRemovalCrashMediaServerQuirk
import androidx.core.util.Consumer
import androidx.test.core.app.ApplicationProvider
import androidx.test.filters.LargeTest
@@ -426,6 +428,8 @@
@Test
fun stopRecording_when_useCaseUnbind() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
// Arrange.
val file = File.createTempFile("CameraX", ".tmp").apply { deleteOnExit() }
latchForVideoSaved = CountDownLatch(1)
@@ -454,6 +458,8 @@
@Test
fun stopRecordingWhenLifecycleStops() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
// Arrange.
val file = File.createTempFile("CameraX", ".tmp").apply { deleteOnExit() }
latchForVideoSaved = CountDownLatch(1)
@@ -482,6 +488,8 @@
@Test
fun start_finalizeImmediatelyWhenSourceInactive() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
val file = File.createTempFile("CameraX", ".tmp").apply { deleteOnExit() }
instrumentation.runOnMainSync {
@@ -701,6 +709,12 @@
)
}
+ mockVideoRecordEventConsumer.verifyAcceptCall(
+ VideoRecordEvent.Finalize::class.java,
+ true,
+ GENERAL_TIMEOUT
+ )
+
file1.delete()
file2.delete()
}
@@ -812,6 +826,8 @@
@Test
fun canReuseRecorder_sourceInactive() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
val recorder = Recorder.Builder().build()
val videoCapture1 = VideoCapture.withOutput(recorder)
@@ -1355,6 +1371,7 @@
)
}
+@RequiresApi(21)
private class VideoCaptureMonitor : Consumer<VideoRecordEvent> {
private var countDown: CountDownLatch? = null
@@ -1409,3 +1426,13 @@
assumeTrue(msg, Camera2DeviceQuirks.get(Camera2ExtraCroppingQuirk::class.java) == null)
}
}
+
+@RequiresApi(21)
+fun assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk() {
+ // Skip for b/293978082. For tests that will unbind the VideoCapture before stop the recording,
+ // they should be skipped since media server will crash if the codec surface has been removed
+ // before MediaCodec.stop() is called.
+ assumeTrue(
+ DeviceQuirks.get(StopCodecAfterSurfaceRemovalCrashMediaServerQuirk::class.java) == null
+ )
+}
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/DeviceQuirksLoader.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/DeviceQuirksLoader.java
index c5bc087..0234352 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/DeviceQuirksLoader.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/DeviceQuirksLoader.java
@@ -98,6 +98,9 @@
if (CodecStuckOnFlushQuirk.load()) {
quirks.add(new CodecStuckOnFlushQuirk());
}
+ if (StopCodecAfterSurfaceRemovalCrashMediaServerQuirk.load()) {
+ quirks.add(new StopCodecAfterSurfaceRemovalCrashMediaServerQuirk());
+ }
return quirks;
}
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/StopCodecAfterSurfaceRemovalCrashMediaServerQuirk.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/StopCodecAfterSurfaceRemovalCrashMediaServerQuirk.java
new file mode 100644
index 0000000..fa1f22f
--- /dev/null
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/compat/quirk/StopCodecAfterSurfaceRemovalCrashMediaServerQuirk.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.video.internal.compat.quirk;
+
+import android.os.Build;
+
+import androidx.annotation.RequiresApi;
+import androidx.camera.core.impl.Quirk;
+
+/**
+ * <p>QuirkSummary
+ * Bug Id: 293978082
+ * Description: Quirk denotes that the media server die when codec surface has been removed
+ * from the camera repeating and then MediaCodec.stop() is called. Media server
+ * will recover soon but sometimes the camera server will get stuck and need to
+ * reboot the device to recover. We are not able to prevent camera from stopped
+ * by all paths but we should try to call MediaCodec.stop() as soon as possible.
+ * Device(s): moto c
+ */
+@RequiresApi(21)
+public class StopCodecAfterSurfaceRemovalCrashMediaServerQuirk implements Quirk {
+
+ static boolean load() {
+ return isMotoC();
+ }
+
+ private static boolean isMotoC() {
+ return "motorola".equalsIgnoreCase(Build.BRAND) && "moto c".equalsIgnoreCase(Build.MODEL);
+ }
+}
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/encoder/EncoderImpl.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/encoder/EncoderImpl.java
index 92fc179..5eae605 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/encoder/EncoderImpl.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/encoder/EncoderImpl.java
@@ -56,6 +56,7 @@
import androidx.camera.video.internal.compat.quirk.CodecStuckOnFlushQuirk;
import androidx.camera.video.internal.compat.quirk.DeviceQuirks;
import androidx.camera.video.internal.compat.quirk.EncoderNotUsePersistentInputSurfaceQuirk;
+import androidx.camera.video.internal.compat.quirk.StopCodecAfterSurfaceRemovalCrashMediaServerQuirk;
import androidx.camera.video.internal.compat.quirk.VideoEncoderSuspendDoesNotIncludeSuspendTimeQuirk;
import androidx.camera.video.internal.workaround.EncoderFinder;
import androidx.camera.video.internal.workaround.VideoTimebaseConverter;
@@ -850,7 +851,9 @@
if (!futures.isEmpty()) {
Logger.d(mTag, "encoded data and input buffers are returned");
}
- if (mEncoderInput instanceof SurfaceInput && !mSourceStoppedSignalled) {
+ if (mEncoderInput instanceof SurfaceInput && !mSourceStoppedSignalled
+ && !hasStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+ ) {
// For a SurfaceInput, the codec is in control of de-queuing buffers from the
// underlying BufferQueue. If we stop the codec, then it will stop de-queuing
// buffers and the BufferQueue may run out of input buffers, causing the camera
@@ -1028,6 +1031,10 @@
return (bufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0;
}
+ private boolean hasStopCodecAfterSurfaceRemovalCrashMediaServerQuirk() {
+ return DeviceQuirks.get(StopCodecAfterSurfaceRemovalCrashMediaServerQuirk.class) != null;
+ }
+
@SuppressWarnings("WeakerAccess") // synthetic accessor
@RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
class MediaCodecCallback extends MediaCodec.Callback {
diff --git a/camera/camera-view/src/androidTest/java/androidx/camera/view/VideoCaptureDeviceTest.kt b/camera/camera-view/src/androidTest/java/androidx/camera/view/VideoCaptureDeviceTest.kt
index 00c47c2..10f4461 100644
--- a/camera/camera-view/src/androidTest/java/androidx/camera/view/VideoCaptureDeviceTest.kt
+++ b/camera/camera-view/src/androidTest/java/androidx/camera/view/VideoCaptureDeviceTest.kt
@@ -27,6 +27,7 @@
import android.provider.MediaStore
import android.util.Log
import androidx.annotation.MainThread
+import androidx.annotation.RequiresApi
import androidx.camera.camera2.Camera2Config
import androidx.camera.core.impl.utils.executor.CameraXExecutors
import androidx.camera.testing.impl.AndroidUtil.skipVideoRecordingTestIfNotSupportedByEmulator
@@ -48,6 +49,7 @@
import androidx.camera.video.VideoRecordEvent.Finalize.ERROR_SOURCE_INACTIVE
import androidx.camera.video.internal.compat.quirk.DeviceQuirks
import androidx.camera.video.internal.compat.quirk.MediaStoreVideoCannotWrite
+import androidx.camera.video.internal.compat.quirk.StopCodecAfterSurfaceRemovalCrashMediaServerQuirk
import androidx.camera.view.CameraController.IMAGE_ANALYSIS
import androidx.camera.view.CameraController.VIDEO_CAPTURE
import androidx.camera.view.video.AudioConfig
@@ -65,6 +67,7 @@
import java.util.concurrent.TimeUnit
import org.junit.After
import org.junit.Assume
+import org.junit.Assume.assumeTrue
import org.junit.Before
import org.junit.BeforeClass
import org.junit.Rule
@@ -217,7 +220,7 @@
@Test
fun canRecordToMediaStore() {
- Assume.assumeTrue(
+ assumeTrue(
"Ignore the test since the MediaStore.Video has compatibility issues.",
DeviceQuirks.get(MediaStoreVideoCannotWrite::class.java) == null
)
@@ -296,6 +299,8 @@
@Test
fun canRecordToFile_whenLifecycleStops() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
// Arrange.
val file = createTempFile()
val outputOptions = FileOutputOptions.Builder(file).build()
@@ -319,6 +324,8 @@
@Test
fun canRecordToFile_whenTargetQualityChanged() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
// Arrange.
val file = createTempFile()
val outputOptions = FileOutputOptions.Builder(file).build()
@@ -342,6 +349,8 @@
@Test
fun canRecordToFile_whenEnabledUseCasesChanged() {
+ assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk()
+
// Arrange.
val file = createTempFile()
val outputOptions = FileOutputOptions.Builder(file).build()
@@ -682,3 +691,13 @@
)
}
}
+
+@RequiresApi(21)
+fun assumeStopCodecAfterSurfaceRemovalCrashMediaServerQuirk() {
+ // Skip for b/293978082. For tests that will unbind the VideoCapture before stop the recording,
+ // they should be skipped since media server will crash if the codec surface has been removed
+ // before MediaCodec.stop() is called.
+ assumeTrue(
+ DeviceQuirks.get(StopCodecAfterSurfaceRemovalCrashMediaServerQuirk::class.java) == null
+ )
+}
diff --git a/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/TransitionDetectorTest.kt b/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/TransitionDetectorTest.kt
index d48f918..7eb3408 100644
--- a/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/TransitionDetectorTest.kt
+++ b/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/TransitionDetectorTest.kt
@@ -43,7 +43,7 @@
private val TransitionStub = bytecodeStub(
filename = "Transition.kt",
filepath = "androidx/compose/animation/core",
- checksum = 0x313a900e,
+ checksum = 0x7997109d,
"""
package androidx.compose.animation.core
@@ -62,90 +62,92 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3Apc8ln5iXUpSfmVKhl5yfW5BfnKqX
- mJeZm1iSmZ8HFClKFeIJKUrMK84ECXiXcPFyMafl5wuxhaQWl3iXKDFoMQAA
- iDN6X1gAAAA=
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0ueST8xLKcrPTKnQS87PLcgvTtVL
+ zMvMTSzJzM8DihSlCvGEFCXmFWeCBLxLuHi5mNPy84XYQlKLS7xLlBi0GAD5
+ +CagWAAAAA==
""",
"""
androidx/compose/animation/core/Transition$Segment.class:
- H4sIAAAAAAAAAJVQW2sTQRT+zuwm2263dltvqbd6A2se3DYUBC0FLQiBVcGU
- vORpkh3iNLuzsjMpfcxv8R/4JPggwUd/lHh2LQj6ogPznfN95zJnzvcfX74C
- OMADQk+arCp1dp5MyuJDaVUijS6k06VhpVLJSSWN1TV/OFDTQhkXgAi7h4Nn
- 6ak8k0kuzTR5Oz5VE/f86G+JEP+pBfAJ7UNttDsieLuPhxHaCEK0sELw3Xtt
- CQfp/0/Gj22ms9Ll2iSvlZOZdJI1UZx5/F+qoUWgGUvnumZ77GX7hEfLRRSK
- jgiXi1DEDMtFZ7no+isUU0/siZetbx/bIvbq9B53GBC3Q/ffJwzQIQQXYxLW
- f0eezJj7x2WmCBupNurNvBir6kSOc1a20nIi86GsdM0vxKhvjKqOc2mt4k2t
- DvTUSDevOBQOynk1Ua90nbf9bm6cLtRQW82FL4wpXTOdxT4Eb7s+/Jt6+Yy3
- mCUN5zV1P2P1EzsCtxnbjRjgDmP0KwEh1tj62GEMWRPYxg2+d5sqD/caexP3
- 2T7leMQ16yN4fVzqY4MRcQ2bfWzh8ghkcQVXR/At1iyuWVy3CH4CEksXNqoC
- AAA=
+ H4sIAAAAAAAA/5VRTW/TQBB9u3bixnWpW74SvqGVKDngNqqEBFUlqIRkyYCE
+ q1xy2sSrdBt7jbybqsf8Fv4BJyQOKOLIj0KMTSQkuMDlzbw3M7tvZ7//+PIV
+ wCF2GQZCZ1WpsstoUhYfSiMjoVUhrCo1KZWMTiuhjar5biqnhdTWA2PYO0qf
+ J+fiQkS50NPo3fhcTuyL478lhvBPzYPL0D5SWtljBmfvyTBAG56PFtYYXHum
+ DMNh8v/O6LKtZFbaXOnojbQiE1aQxosLh97LaujUAAY2I/1S1WyfsuyA4fFy
+ Efi8y/3lwuchwXLRXS767hoL2YDv81etbx/bPHTq9gGdkLL6oP6/2/TQY/BW
+ Xhk2fleezoi7J2UmGTYTpeXbeTGW1akY56RsJ+VE5ENRqZqvxCDWWlYnuTBG
+ 0ro6qZpqYecVlfy0nFcT+VrVfb33c21VIYfKKBp8qXVpG3cGB+C08tU+6h8g
+ vEssajjQ6n9G5xMlHPcI243o4T5h8KsBPtYpunhA6JPGcQu30cPDZsrBoybe
+ wQ7FZ1QPaGZjBCfGlRibMUJsUYrtGFdxbQRmcB03RnAN1g1uGnQNvJ/VVf1q
+ rwIAAA==
""",
"""
androidx/compose/animation/core/Transition.class:
- H4sIAAAAAAAAAI1RTW8TMRB99m52023apuUr4atAeygRYtuIU6gqQSWkSAtI
- bJVLTk7WCm52vWjtVD3mt/APOCFxQBFHfhRivFRCgkt9eOP3PG88Hv/89e07
- gBfYY+gJnVWlyi7jaVl8Ko2MhVaFsKrUpFQyPquENsrxEIzh4DgdJOfiQsS5
- 0LP4/eRcTu3Lk/8lhva/WgifIThWWtkTBu/g6aiFAGGEBpoMvv2oDMOz5Pod
- 0SXbyby0udLxW2lFJqwgjRcXHr2POWgwsDlJl8qxQ9plR3TJarkZ8Q6PVsuI
- tx00eWe17PnN1bLN+vyQD5j/uvHjc8DbnvP0qUzKqCbCVM4KqS1D//qN7l+Z
- QnQZNv7qz+dUxz8tM8mwlSgt3y2KiazOxCQnZScppyIfiUo5fiW2hlrL6jQX
- xkga11qqZlrYRUVHUVouqql8o1xe98NCW1XIkTKKjK+0Lm3dm8EROI3cLXqV
- +wHC+8TimtPMel+x9oU2HA8Ig1oM8JCw9ScBEdYp+tgljEi7S7kddPGodnl4
- XMd7eEJxQOct8myM4Q2xOcQWIdoOtofYwY0xmMFN3BqjYbBucNvgjkFo0PkN
- zab+FKoCAAA=
+ H4sIAAAAAAAA/41RTW/TQBB9u3HsxE1bt3wlfEN7KBHCbcQpVJWgEpIlAxKu
+ cslpE6/Sbew18m6qHvNb+AeckDigiCM/CjE2kZDgUll6M+/tvNnZ8c9f374D
+ eIl9hr7QaVmo9CqcFvmnwshQaJULqwpNSinDs1JooyrugTEcHCfD+EJcijAT
+ ehZ+mFzIqX118r/EEPyreXAY3GOllT1haBw8G3XgwvPRRIvBsefKMDyPrz8R
+ XbITzwubKR2+k1akwgrSeH7ZoPexCtoVgIHNSb9SFTukLD2im1bLLZ93ub9a
+ +jyooMW7q2Xfaa2WARvwQz5kzpvmj88uDxqVZ0BtElZ18xI5y6W2DIPrT7u/
+ Nnm4y7D5V38xpz7OaZFKhu1Yafl+kU9keSYmGSm7cTEV2UiUquJrsRNpLcvT
+ TBgjaWftRM20sIuSjvykWJRT+VZVdb2PC21VLkfKKDK+1rqw9WwGR+C09/Vy
+ qt9A+IBYWHOg2f+K9hdKOB4SurXo4hFh508BfGxQdPCY0CftHtX26HtSuxp4
+ Wsf72KM4pPMOeTbHaETYirAdIcAOpdiNcAM3x2AGt3B7jKbBhsEdg66BZ9D7
+ DXTP2E6vAgAA
""",
"""
androidx/compose/animation/core/TransitionKt$animateFloat$1.class:
- H4sIAAAAAAAAAKVVXW8bRRQ9s3ZsZ7Mljpt+JIUSGtM6dujGIbRQuwGT2mSJ
- ayocIqE8je2ps/F6ttpdW+EtD/0J/BAKEkUgIT/zo1DvrF03VkPbhJeZO3fu
- uffMnTO7//z7598ANlBlKHDZ8ly7dWQ23e4T1xcml3aXB7YryeMJc9fj0rfV
- eidID/dExXF5kM7HwRieVjtu4NjSPOx3TVsGwpPcMau822jxwsm9xz3ZVGl8
- szKy8sXqu1dP10W7K2RQ3K0XNseJf5B2QEuGxf9mEUeU4fqbmcQRY4gVbUq3
- yRDJrOwxRDPWyp6BBHQdU5ghR3Bg+wz3z8D6tZ4R1Zgt+25HMNzNnOP8BUWt
- eB7ksHMKvlx1vbZ5KIKGx21qA5fSDfiwJTU3qPUch3jqaXXetKRVAhcnWzhu
- sSUDj1LYTT+OSwyXmgei2RnleMQ93hUUyHArUz3kfW46XLbN7xqHohkUTnjq
- Kkm7oNp9BVd1XMYCw8Z5usNw85RSK6+7GNbPnj6ODwzMIqlDw4cMMydUGMdH
- DAmrVt8t1bbKDBcmJGpgGelp3MDHDNqTPEPqNEaJYtMJJahUN62KZBXwvWmy
- VhnmXqZ8KALe4gEniNbtR+gtMzVMMbCOMiLkP7KVtUZWi8rlBseGPjjWtaQW
- Tle15OB4UVtjN6KJwXFSyyZS0ZS2ra1FtnUFWafDFbl05U9dt+fTkwDlrjOs
- nkX6cRQZ5if03xKPec8JGH4+i4Lf9h05RUpvQ1iniKRiYBNf0tW9qny7Q1yj
- W25LqCtzm9zZ457NG47YVQPDbNWWotbrNoQ38kzX7bbkQc8jO/19TwZ2V1iy
- b/s2bY+fROnVk2MwLCmFt+Vw3xe0nC3LpuP6dAy66AO3RU+x7va8pqjYqsD8
- cPFANHrt8lEgiKorGRZGtfaGlU4UQJ70M0U3SB9sLChBkTKiZJPIaPyaVmmK
- oEtGLBt9DuOZUhS2aDSGXlwIMXNK+4iEiAIhNJrjudT8H1hUEA0PwmD6xBFQ
- wS8PQ0ZwZV3ENdovh9FzqCgfKQspIFmi7O+P+Hw1ym5kcwNc/x1Lv+LmLxMl
- MFHCGJcwcAuZ8Gwr49NdCWOAmb+g/fgcud/wybPQEcM3NOoUNgxYwHbYmvtE
- YMgxAiucS/iW5qf1h6VH+oQ89J1QaHq2vvTSqui5pfzSZNT/+GXo2aqeX86v
- 5u/cI7usY4eY3CXOt+lSzX1ELKxZyNOIdQufYsPCZ7izD+ZT1Of7iPr4wsc9
- HwUf114AvnRqlvwHAAA=
+ H4sIAAAAAAAA/81WX1MbVRT/3U0gyZLyJ6V/AEUssYWAXYLYKkmxkRJZCSk2
+ kRmHp5vkNixs7nZ2Nxl846EfwU/gJ2h1xjo64zA++qEcz91sKbHRFnzxIfee
+ e875nX855yR//PnLbwBWUGXIcdlwHatxZNSd1hPHEwaXVov7liOJ4wqj6nLp
+ Weq95ae7MlG0He6nszEwhqelQ8e3LWkcdFqGJX3hSm4bJd6qNXjurOxxW9aV
+ Gc8ohlQ2X3p77+mKaLaE9PPVSm7t1PDX0vLpyTD5z1HEEGWY/vdIYhhkGMxb
+ ZG6NITI3v8sQnTPnd5OIQ9cxgCFi+PuWx3DvHFG/VjMKddCSHedQMNydu0D+
+ ORVa/iLIbuUUfLbkuE3jQPg1l1tUBi6l4/NuScqOX27bNsWpp1W+aUmvOC73
+ lvC0xKb0XTJh1b0YrjBcqe+L+mFoY4e7vCVIkeHWXOmAd7hhc9k0HtYORN3P
+ neFUlJFmTpX7Gq7ruIoJhpWLVIfhZh9X86+zGJbPbz6Gd5MYwagODe8xDJ3p
+ whjeZ4ib5Uq1UF7fYLjU06JJzCKdwA18wKA9yTKk+kUUz9ftoAVV1yWUk4wC
+ DieIWmQYe2lyW/i8wX1OEK3VidAsM3Uk1AEGdqiICAmPLEU9I6pBPldOjof1
+ k2NdG9WC67q6Rk+OJ7UldiMaJ1rLxFPRlLapLUU29d+/H9TiUYVdplTzXDry
+ 25bT9mhAlJMKw+J5BiGGewzjPdPQEI952/YZvjtPP79pq/RprDchzD4tU0zi
+ M9xnyLx9ZDF8zhALe4Va4JXk9iG9M31XZcVpu3XxQNTazY0jXxCAUmQY6HC7
+ TUviaWW7sKP3WNK3AjN6pjLzkirqCzPZmV6t/7Cl9ExJz85mF7N3Vone0Gn3
+ rTsNodrWqXN7l7sWr9miqg6GkZIlRbndqgk35CQqVlNyv+0SnX7Ulr7VEqbs
+ WJ5F4tO1UHi1dhiSppTCXbe55wl6jmzIuu149OVRs+87DVpH3UIVLeVgvF/V
+ GCZCX7tdTz0Opv4exxkpsjRhA9TV9JOGCTVyNDZRomkM6TTplSYNanwMZqIv
+ kHweDNqXdCa7XFwKMGNqOyASIHKE0OiOLaTGf8akgmjYCpTpR4CACn61qxLC
+ FXUZUyQvBdpj2FY8mjakgNECWX8njOd+aD2ZWTjB9E+Y+QE3n/W4QI+L5KmL
+ JG5hLsht/jS7a4EOMPQrtG9eYOFHfPg8jKdMZ4rE01jHAypOV3ECD4MSraEQ
+ xhrBTnBv4Cu6/xdti0cUySqleJu+XGMPERNLJrImlvGRSf9/PjZxB3f3wDx8
+ gk/3MOBh1UPOQ97DlEfFrhB+mPBF+nwR6G3+BSprltw9CQAA
""",
"""
androidx/compose/animation/core/TransitionKt.class:
- H4sIAAAAAAAAAMVVT1MjRRR/PZkknSHAMAsI2d24stldYGEnZDHqJovLIsho
- iJZBLhysJmmyA5MeamZCsRcLvfgFvOzN8uDRg6ctD1aKLS9+Jsvy9ZCEQKzC
- eDFV6fev3++91/36zR9//fobACzDJwQWmKh5rl07Matu48j1ucmE3WCB7QrU
- eNzc9pjwbSl/GsSBENAP2DEzHSbq5md7B7yK2giB5Lkb33BcFhD4Zrb074EL
- pUM3cGxhHhw3zP2mqEqlb260uaVC6SJkJfBsUb/WY26DwJ/FypPS1WQLK4Nk
- VtyuFFauC1ZcHAAxU+H1BhfBZeQvhR1IcdA6i4sI0+MVnj4CyfLv9WflNUVg
- N7i5Fspsz+EFAndLrlc3D3iw5zEbwZkQbsDOA5XdoNx0HNwVKwYvbH+FgkYg
- 3ZOULQLuCeaYlpAZ+3bVj0OSwET1Ba8etv0/Zx5rcNxI4MFs/5X0lz23k4QR
- GNVgGHQCI0H3+CpHvErBIBB12B53KIwTMALm1Xmww5wmf/6ygrlzCpPqsx8A
- CIxl7Mx+5nJzEgudMrKeK4aFQZqWwJ3ruhDD9NdGYLw3aqbG91nTwejf/89v
- xuq/GdlHhUEmxKUDzSzF4R0C1CpXtlfLa+sEng5QYR9YIQl3IZOAGbh3uQf/
- oZg4PMC+CR1XOwEozBG43X/vXzVzy91LGOuc0hYPWI0FDO9LaRxHcF4SuUSx
- fQ4lo6D+xJZcFrnaEoHfW6c5rXWqKXo8JFNKh4R/Xeny4aaRrpUqqUBvnaaU
- LJlRaetUV+apoRrKppKN5DJU09VU2tCMji4maTaejZ79GFMoDddEjlJF1xBi
- KHdfT6ZmjBvG2KaCtiQdNigdMVRKZ0dDT9Lx3Dz7jr55TVqnZ98qcS1Kz17l
- skQWkyPy6ZCK7N/2cfQ29fJ/mHfolu5grZ8EHM2u6IBuvzySk2iys6E7L8pI
- 0KAKpPjmffm2CQxfwD86xDtT19waqkdLtuDlZmOPe9tytsns3SpzdphnS7mt
- TFTsumBB00P+5hfnE9ESx7Zvo3n1YvgRyFy1dvO6tG0YR071cIsdtQMkLSG4
- t+Yw3+do1ipu06vyDVvaptuQO33hYAkUUEH+FJiGKMRQeobSEcpRpOl5Y+g1
- jD00buC6YEzgumi8hWskrxpTP4d+q7jG8Opuwig8Dz/xUeQjiJcKsdMo3Qpj
- pMGA27hTcuP4V0JuEnURWAux4vBRG40iXcf/tIpCQr6Eq6uegLfhDvIy4Z/Q
- OYY0P6GqX78C7Re434LZ0oQaRSlmzG9dW0gENnBVQRlJhCWlQrwhTEl+FoZg
- Ar8LU0gf95T5uKfMPDxsl5nvlpnvlplvlxmBj1HS0DoT7p2GzbDwD8FCuov6
- BcRd3IWIBY8sMHGFrIX3lLMw2jJu8OFdyO+C7mNrwns+vO/DLR8MHz7w4Umo
- oT4UfBgP+Ukfij489WHlb+6OIxeBCQAA
+ H4sIAAAAAAAA/8VWz1PbVhD+nizbsjFgFKDgJG5KnAQIRMZQt40dGkKhqDFO
+ pqZcOHQe9sMRyBIjyUxy6dBe+g/0klunhx576CnTQ4ch00v/pk6nK2EbgztD
+ 3EsP2h9v3367+96+tf/8+7ffASzhOcMct2qObdRealW7cWi7QuOW0eCeYVu0
+ 4ghty+GWa/j6Uy8KxpDc50dcM7lV157t7osqrYYYEmduYt20ucfw7XTp3YEL
+ pQPbMw1L2z9qaHtNq+ovutp6S1oolM5DVjzHsOpXesysM/xVrDwsXU62sNxP
+ ZsWtSmH5qmDF+T4QMxVRbwjLu4j8lWV4vtpvncV5gunyCk6fgPzy7/Rm5TQt
+ z2gIbTXQ+a4pCgy3S7ZT1/aFt+twg8C5ZdkePwtUtr1y0zRpV6TovTDcZQVx
+ hnRXUoblCcfipqZbfsauUXWjSDCMVV+I6kHL/zl3eEPQRoZ7071X0lv2zHYC
+ QxiOYxBJhiGvc3yVQ1FVoDKETb4rTAWjDKrHnbrwtrnZFE9eVSh3oWBcfvwj
+ wDCSMTJ7mYvNyXRyyvj1XDLM9dO0DLeu6kIK01sbw2h31ExN7PGmSdF/+J/f
+ jN57M34fFfqZEBcONLMQxQcMil6ubK2UV9cYHvVRYQ9YIYHbyMQwhTsXe/Bf
+ ioniHvVN4LjSDqBghuFm771/3cwtdS5hpH1Km8LjNe5xui+pcRSiecl8EvMJ
+ 9RU78AWJjC8NX8qSVFtg+OPkOBc/OY5LyWjAJqQ2C76k1JGDTUMdqyKlvOTJ
+ cUrKsilZOTlOSrOKKqvShpQN5TJKPCmn0mpcba9FfJ6NZsOnP0UkRQloLKco
+ UjJOEAO5u8lEakq9po5sSGRLKIOqogypsqJMDweerO25cfq98vYNOzk+/U6K
+ xsPK6etclvnF5FhQZ8Vv4taZdHf20n8YeuSWbmOtvfQEmW2rDbr16tAfR+Pt
+ DZ2hUSZGBtkiTg/f9R84Q67/8FE8Zph9d78onjBEW84Mg+eWBweky6t2jRIZ
+ LhmWKDcbu8LZ8keqf152lZvb3DF8vbUYqxh1i3tNh+TrX54NYt06MlyDzCvn
+ M5chc9naOYkL2wZp0lUPNvlhK0BCtyzhrJrcdQWZ4xW76VTFuuHbJluQ2z3h
+ sAAJst/TxCcRRoS0ddIOSQ8TT8+qA28wcl+9RnROHSM6r75HNJSX1YlfAr/P
+ iUaoWa5jGBvBP4swySHCSwXYadJuBDHSUHGTdvrSKH1SII3TWgh6gBXFFy00
+ hfhT+iZlUmLBq7tEkzG8j1sk+wn/TM4R4vkxWf7mNeK/4u4Jpktjcpi0iDq7
+ eWUhIZSIypCGYkFJqQBvgFLyf40GMEY/RxPEF7vKXOwqM4/7rTLznTLznTLz
+ rTJD2CRNpbUVrOIz8p4KfCZRDg5gDc+I75D3HOHP7yCk44EOTUcWCzpyWNQp
+ 8oe0wSXMj3aQdOlR4GMXn7i44UJ18dBFIVhRXBRdjAbyuItHLpZdfPoPx8wC
+ mQAKAAA=
"""
)
diff --git a/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt b/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt
index c73c283..e852ff7 100644
--- a/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt
+++ b/compose/animation/animation-core-lint/src/test/java/androidx/compose/animation/core/lint/UnrememberedAnimatableDetectorTest.kt
@@ -44,7 +44,7 @@
private val AnimatableColorStub = bytecodeStub(
filename = "SingleValueAnimation.kt",
filepath = "androidx/compose/animation",
- checksum = 0x285b4455,
+ checksum = 0x98c0a447,
"""
package androidx.compose.animation
@@ -55,28 +55,28 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAHWLuwrCQBBFR3zBIBZbiIgQsFCwWBt/QCzTqdhvkiEO7CPs
- A/x8V9QqWNx74XIOAAwBYJAz/i7gEVfKNt5x85S1M50LJJVloyI7KxZXtq2m
- u9KJTr+3jHjA4r+VH09i9uFVpSkLW1z2BJ9sZEMCL2TIVOQzt8N1j0ssW6+6
- B9dBTM9Ouzc4x1GkEMXklruMG9jDC9/F7r/gAAAA
+ H4sIAAAAAAAA/3XLvQvCQAwF8IiiGEThBhERBBfBoS6Cszh2s+KetqE9uI9y
+ TcE/3xN1KgZehsf7AcAQAAYxU/gennBNrgxel8+k8LbxLSfktCXR3qllpl1l
+ +EGm48uvTQWPuP2vYhNYzT57yg1HcMZVD4TOibas8MaWbc4hFbXIHDVt7SUT
+ kjfc46YHO51UgZpaF62aXL3xUeIcR8KtqPE9/lR2cIAXLlZThPEAAAA=
""",
"""
androidx/compose/animation/SingleValueAnimationKt.class:
- H4sIAAAAAAAAAJVTXU8TQRQ9s223Zam0VFEoigooHwLbEh8wJUSCMSkWTESb
- GB7MtF3rtNsZMjvb8Ej8J/oLfJNoYgi++aOMdwuExBKFTfbOuXfPnXPvzN1f
- v7/9APAYSwxFLhtaica+W1edPRV4Lpeiw41Q0t0Rsul7Ve6H3vpZ8IVJgjFk
- W7zLXZ/Lpvuy1vLqFI0x5E5ovOZ7iyvvVoq+v87gzm7OVf6hUlfac88TSwzN
- q2Ws9nND4TY13/sg6oG7oXylS5W/Cy6tkdJURemm2/JMTXMhA9KQyvREAndb
- me3Q94k1f/lakhhgmPx/PUkMMqRqan9RdPZ8hpkLW+5vI41rGHKQRobBXhVS
- mDWG6mx/d/2RcqWtjC+k2+p2XCGNpyX33Wfeex76ZoM6NjqsG6W3uG57ujRX
- TWMYOQcOrjOkIynB/d4wMLBNhuGz/bY8wxvUPp2U1enGaLJYZBJEa0fAovi+
- iFCBUKPI8OboIOccHTjWqHXyZiMnFcvPEMgP5eI5q2D1bKzAlu1sPE/+z0N2
- dECGHX+246lE1j7+aA1S1piTSB1/miiwaPNlBuf8NhgWrjZ505e5A0YN4tZF
- P8dS2zDEN1SDlDMVIb3tsFPz9OuTWnIVVY9OUIvIPw0O7Iim5CbUhMdfhdKI
- jleWXREI+rx+Po7U144Kdd17LqK0sVNqtY+IIizEET1EQwI2Ypgh7wkhi9bM
- dzhvJw6RZQn2FTe+RDeEWbI2JQBJzJFN93AGI7hJ63yPk8SjU1aq5y/07EMs
- 0vo0OhISG91FrIyxMvJkMV7GbdwpYwJ3d8EC3MP9XSQDTAaYCjAd4EGAkQCJ
- APYfAm5eAJQEAAA=
+ H4sIAAAAAAAA/5VTXU8TQRQ9s223Za20VFEoigooHwLTEh8wJUSCMSkWTMQ0
+ MTyYaTvWabczZHa24ZH4T/QX+CbRxBB880cZZ1sIiSUKD3vn3Dvnzv3cX7+/
+ /QDwBJSgyGRDK9E4oHXV2VcBp0yKDjNCSborZNPnVeaHfOPM+NIkQQiyLdZl
+ 1GeySV/VWrxurTGCXJ/Gaj5fWn23WvT9DQI6tzVf+UeUutKcnjuWCJpX81gb
+ 5IaCNjXb/yDqAd1UvtKlyt8Jl9ZtpOmK0k3a4qammZCBjSGV6QUJ6I4yO6Hv
+ W9bC5XNJYohg6v/5JHGNIFVTB0uis+8TzF5Y8mAZaVzHsIc0MgTumpDCrBNU
+ 5warG7SUK21lfCFpq9uhQhquJfPpc/6ehb7ZtBUbHdaN0ttMt7kuzVfTGEHO
+ g4cbBOkolGB+bxkIyBbByNl729ywhi3fdsrpdGN2s0gkhiIBy21HwLGXByJC
+ BYsaRYLt48Ocd3zoOWNO/8tGSiqWn7EgP5yL55yC05OxAllxs/G81X8ekePD
+ k89uPJXIuicfnaSXSJ18miyQ6NEVAu98FASLV1u7mcsMgEQl3b7oz1huG4L4
+ pmrYyJmKkHwn7NS4ftPPJVdR9ah9WkT6qXFoVzQlM6G2eOJ1KI3o8LLsikDY
+ 643zXbR17apQ1/kLEbmNn1KrA0QU4SCOfuPHkYCLGOas9tQix56Z7/DeTh4h
+ SxLkK25+iSaDeStd6wAksWBluoczGMUtez7ucZJYPGWlevpST85i2Z7PopbY
+ YGN7iJUxXka+jAncKeMuJsu4h/t7IAEeYGoPyQDTAWYCPAzwKMBogEQA9w+x
+ P7r8kQQAAA==
"""
)
@@ -173,7 +173,8 @@
Stubs.Color,
Stubs.Composable,
Stubs.Remember,
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.skipTestModes(TestMode.TYPE_ALIAS)
.run()
@@ -338,7 +339,8 @@
Stubs.Color,
Stubs.Composable,
Stubs.Remember,
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.run()
.expectClean()
@@ -452,7 +454,8 @@
Stubs.Color,
Stubs.Composable,
Stubs.Remember,
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.run()
.expectClean()
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Bezier.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Bezier.kt
index bc16918..6585d83 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Bezier.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Bezier.kt
@@ -18,6 +18,7 @@
import androidx.collection.FloatFloatPair
import androidx.compose.ui.graphics.PathSegment
+import androidx.compose.ui.util.fastCoerceIn
import kotlin.math.abs
import kotlin.math.acos
import kotlin.math.cbrt
@@ -138,9 +139,9 @@
p2: Float,
t: Float
): Float {
- val by = 2.0 * (p1 - p0)
- val ay = p2 - 2.0 * p1 + p0
- return ((ay * t + by) * t + p0).toFloat()
+ val by = 2.0f * (p1 - p0)
+ val ay = p2 - 2.0f * p1 + p0
+ return (ay * t + by) * t + p0
}
private fun evaluateCubic(
@@ -150,10 +151,10 @@
p3: Float,
t: Float
): Float {
- val a = p3 + 3.0 * (p1 - p2) - p0
- val b = 3.0 * (p2 - 2.0 * p1 + p0)
- val c = 3.0 * (p1 - p0)
- return (((a * t + b) * t + c) * t + p0).toFloat()
+ val a = p3 + 3.0f * (p1 - p2) - p0
+ val b = 3.0f * (p2 - 2.0f * p1 + p0)
+ val c = 3.0f * (p1 - p0)
+ return ((a * t + b) * t + c) * t + p0
}
/**
@@ -167,10 +168,10 @@
p2: Float,
t: Float
): Float {
- val a = 1.0 / 3.0 + (p1 - p2)
- val b = (p2 - 2.0 * p1)
+ val a = 1.0f / 3.0f + (p1 - p2)
+ val b = (p2 - 2.0f * p1)
val c = p1
- return 3.0f * (((a * t + b) * t + c) * t).toFloat()
+ return 3.0f * ((a * t + b) * t + c) * t
}
/**
@@ -271,10 +272,10 @@
// The math used to find the roots is explained in "Solving the Cubic Equation":
// http://www.trans4mind.com/personal_development/mathematics/polynomials/cubicAlgebra.htm
- var a = 3.0 * p0 - 6.0 * p1 + 3.0 * p2
- var b = -3.0 * p0 + 3.0 * p1
+ var a = 3.0 * (p0 - 2.0 * p1 + p2)
+ var b = 3.0 * (p1 - p0)
var c = p0.toDouble()
- val d = -p0 + 3.0 * p1 - 3.0 * p2 + p3
+ val d = -p0 + 3.0 * (p1 - p2) + p3
// Not a cubic
if (d.closeTo(0.0)) {
@@ -300,42 +301,40 @@
b /= d
c /= d
- val o = (3.0 * b - a * a) / 3.0
- val o3 = o / 3.0
- val q = (2.0 * a * a * a - 9.0 * a * b + 27.0 * c) / 27.0
- val q2 = q / 2.0
+ val o3 = (3.0 * b - a * a) / 9.0
+ val q2 = (2.0 * a * a * a - 9.0 * a * b + 27.0 * c) / 54.0
val discriminant = q2 * q2 + o3 * o3 * o3
+ val a3 = a / 3.0
if (discriminant < 0.0) {
- val mp3 = -o / 3.0
- val mp33 = mp3 * mp3 * mp3
+ val mp33 = -(o3 * o3 * o3)
val r = sqrt(mp33)
- val t = -q / (2.0 * r)
- val cosPhi = min(1.0, max(-1.0, t))
+ val t = -q2 / r
+ val cosPhi = t.fastCoerceIn(-1.0, 1.0)
val phi = acos(cosPhi)
val t1 = 2.0 * cbrt(r)
- var root = clampValidRootInUnitRange((t1 * cos(phi / 3.0) - a / 3.0).toFloat())
+ var root = clampValidRootInUnitRange((t1 * cos(phi / 3.0) - a3).toFloat())
if (!root.isNaN()) return root
- root = clampValidRootInUnitRange((t1 * cos((phi + Tau) / 3.0) - a / 3.0).toFloat())
+ root = clampValidRootInUnitRange((t1 * cos((phi + Tau) / 3.0) - a3).toFloat())
if (!root.isNaN()) return root
- return clampValidRootInUnitRange((t1 * cos((phi + 2.0 * Tau) / 3.0) - a / 3.0).toFloat())
+ return clampValidRootInUnitRange((t1 * cos((phi + 2.0 * Tau) / 3.0) - a3).toFloat())
} else if (discriminant == 0.0) { // TODO: closeTo(0.0)?
- val u1 = if (q2 < 0.0) cbrt(-q2) else -cbrt(q2)
+ val u1 = -cbrt(q2)
- val root = clampValidRootInUnitRange((2.0 * u1 - a / 3.0).toFloat())
+ val root = clampValidRootInUnitRange((2.0 * u1 - a3).toFloat())
if (!root.isNaN()) return root
- return clampValidRootInUnitRange((-u1 - a / 3.0).toFloat())
+ return clampValidRootInUnitRange((-u1 - a3).toFloat())
}
val sd = sqrt(discriminant)
val u1 = cbrt(-q2 + sd)
val v1 = cbrt(q2 + sd)
- return clampValidRootInUnitRange((u1 - v1 - a / 3.0).toFloat())
+ return clampValidRootInUnitRange((u1 - v1 - a3).toFloat())
}
/**
@@ -423,14 +422,14 @@
// Quadratic derivative of a cubic function
// We do the computation inline to avoid using arrays of other data
// structures to return the result
- val d0 = 3 * (points[2] - points[0])
- val d1 = 3 * (points[4] - points[2])
- val d2 = 3 * (points[6] - points[4])
+ val d0 = 3.0f * (points[2] - points[0])
+ val d1 = 3.0f * (points[4] - points[2])
+ val d2 = 3.0f * (points[6] - points[4])
val count = findQuadraticRoots(d0, d1, d2, roots, index)
// Compute the second derivative as a line
- val dd0 = 2 * (d1 - d0)
- val dd1 = 2 * (d2 - d1)
+ val dd0 = 2.0f * (d1 - d0)
+ val dd1 = 2.0f * (d2 - d1)
count + findLineRoot(dd0, dd1, roots, index + count)
}
@@ -489,8 +488,7 @@
* range are considered to be in the [0..1] range and clamped appropriately. Returns 0 if
* no value was written, 1 otherwise.
*/
-@Suppress("NOTHING_TO_INLINE")
-private inline fun writeValidRootInUnitRange(r: Float, roots: FloatArray, index: Int): Int {
+private fun writeValidRootInUnitRange(r: Float, roots: FloatArray, index: Int): Int {
val v = clampValidRootInUnitRange(r)
roots[index] = v
return if (v.isNaN()) 0 else 1
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Easing.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Easing.kt
index b1081ad..fbcabe4 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Easing.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Easing.kt
@@ -18,6 +18,7 @@
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
+import androidx.compose.ui.util.fastCoerceIn
/**
* Easing is a way to adjust an animation’s fraction. Easing allows transitioning
@@ -110,8 +111,16 @@
}
}
+ /**
+ * Transforms the specified [fraction] in the range 0..1 by this cubic Bézier curve.
+ * To solve the curve, [fraction] is used as the x coordinate along the curve, and
+ * the corresponding y coordinate on the curve is returned. If no solution exists,
+ * this method throws an [IllegalArgumentException].
+ *
+ * @throws IllegalArgumentException If the cubic Bézier curve cannot be solved
+ */
override fun transform(fraction: Float): Float {
- if (fraction > 0f && fraction < 1f) {
+ return if (fraction > 0f && fraction < 1f) {
val t = findFirstCubicRoot(
0.0f - fraction,
a - fraction,
@@ -121,13 +130,15 @@
// No root, the cubic curve has no solution
if (t.isNaN()) {
- return fraction
+ throw IllegalArgumentException(
+ "The cubic curve with parameters ($a, $b, $c, $d) has no solution at $fraction"
+ )
}
// Clamp to clean up numerical imprecision at the extremes
- return evaluateCubic(b, d, t).coerceAtLeast(0.0f).coerceAtMost(1.0f)
+ evaluateCubic(b, d, t).fastCoerceIn(0f, 1f)
} else {
- return fraction
+ fraction
}
}
diff --git a/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/AnimatedContentDetectorTest.kt b/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/AnimatedContentDetectorTest.kt
index 3cedb40..6149723 100644
--- a/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/AnimatedContentDetectorTest.kt
+++ b/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/AnimatedContentDetectorTest.kt
@@ -43,7 +43,7 @@
private val AnimatedContentStub = bytecodeStub(
filename = "AnimatedContent.kt",
filepath = "androidx/compose/animation",
- checksum = 0xb4ed4385,
+ checksum = 0x36ddd76f,
"""
package androidx.compose.animation
@@ -73,97 +73,97 @@
content: @Composable AnimatedContentScope.(T) -> Unit
) {}
""",
- """
+"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijg0ueSSsxLKcrPTKnQS87PLcgvTtVL
- zMvMTSzJzM8TEnQEM1NTnPPzSlLzSrxLuHi5mNPy84XYQlKLgVwlBi0GAC4u
- H9hYAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0ueSSsxLKcrPTKnQS87PLcgvTtVL
+ zMvMTSzJzM8TEnQEM1NTnPPzSlLzSrxLuHi5mNPy84XYQlKLgVwlBi0GADRx
+ 8BlYAAAA
""",
"""
androidx/compose/animation/AnimatedContentKt$AnimatedContent$1.class:
- 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
+ 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
/wcAAA==
""",
"""
androidx/compose/animation/AnimatedContentKt$AnimatedContent$2.class:
H4sIAAAAAAAA/6VUW08TQRT+Zru9Um1B5aaiIkILyEJVHmxDJBXCxoqJNE0M
- T9PuAkN3Z01n2+Abf8QXf4HEBxJNDPHRH2U8s1RjUDGGZHvm2+9c5ty2X799
- /AzgIZYZVrh0OoFwDqxW4L8OlGtxKXweikBaqxFynWogQ1eGz8KpM8xUKQnG
- 8LTWDkJPSGu/51uCNB3JPavG/abDy7/qdrqypSMra72Plir1epmelTLD+N+j
- JGEyTJwfKYkEQ6IipAhXGGKFYoPBLNjFRhYpZDKIY4CIcE8ohie1i5VN2SaE
- 7AVtl2G6UNvnPW55XO5aL5r7bissF3+nGFIFKrRIPwZDhAxDfzSqtLyoBJ11
- OgMD14i0N7fqq5vVtSxGcDlN5CjD4I/OPndD7vCQ67h+L0aTZVqktAADa2sQ
- I+WB0GiRkLPEMHNyaGaMVDx/cjhubLBJM3VymGelRN7QrxuZL+8SZiqWN7V5
- iWGgwmUg3/hBV1F7WZ1h/n96mESBYeRsIx13h3c96sXbwnkTqXe4VELDf63T
- BfWlsv2HYdIGzWKOBnYm/YU2ZW5WA8fVwwxa3GvwjuBNz61rwZCrCeludv2m
- 2+kz6S2xK3nY7RDO2lK6narHlXJpJ3NrsuUFSshdGuhe4DBktoJup+WuC+05
- 9rIrQ+G7DaEEhVqVMgij7igs0kLEadL0MWJMb4iet94ApIlZIDRFFozOxKx5
- jOxRtBcWyewpi0uRzyByyJOl9lgmjUGnMfdeS7pD22nrfOQ5fKrte2o0hCuk
- X4rwIN199eftI5EtMPAJxqtjDH/A2FFExFEimelfBYziAUkTRcz3A8XoX0qf
- 9/GIzsdkOU5e17cRs3HDxk0bE7hl4zbu2JjE3W0wRcXe20ZcYVphRmFIIaeQ
- /w4vHqod9AQAAA==
+ T9PuAkN3Z01n2+Abf8QXf4HEBxJNDPHRH2U8s1RjUDGGZOecb79zmZlzzu7X
+ bx8/A3iIZYYVLp1OIJwDqxX4rwPlWlwKn4cikNZqhFynGsjQleGzcOoMM1VK
+ gjE8rbWD0BPS2u/5liBLR3LPqnG/6fDyr7adrmzpzMpa76OlSr1epmelzDD+
+ 9yxJmAwT52dKIsGQqAgpwhWGWKHYYDALdrGRRQqZDOIYICLcE4rhSe1i16bT
+ JoTsBW2XYbpQ2+c9bnlc7lovmvtuKywXf6cYUgW6aJEWgyFChqE/OlVaXnQF
+ fep0BgauEWlvbtVXN6trWYzgcprIUYbBH5V97obc4SHXef1ejDrLtEhrAQbW
+ 1iBGxgOh0SIhZ4lh5uTQzBipeP7kcNzYYJNm6uQwz0qJvKFfNzJf3iXMVCxv
+ avcSw0CFy0C+8YOuovKyOsP8/9QwiQLDyNlCOu4O73pUi7eF8zpS73CphIb/
+ GqcL2ktl+w/NpAmaxRw17MzxF9p0crMaOK5uZtDiXoN3BG96bl0LhlxNSHez
+ 6zfdTp9Jb4ldycNuh3DWltLtVD2ulEszmVuTLS9QQu5SQ/cChyGzFXQ7LXdd
+ 6Mixl10ZCt9tCCUo1aqUQRhVR2GRBiJOnaaPEWN6QnS/adEAEbNAaIo8GOnE
+ rHmM7FE0FxbJ7CmLS1HMIHLIk6eOWCaLQdqYe68l7aH9tHc+ihw+tfYjNRrC
+ FbIvRXiQ9r76c/eRyBcY+ATj1TGGP2DsKCLiKJHM9LcCRvGApIki5vuJYvSX
+ 0vo+HpF+TJ7jFHV9GzEbN2zctDGBWzZu446NSdzdBlN02XvbiCtMK8woDCnk
+ FPLfAe45AxX0BAAA
""",
"""
androidx/compose/animation/AnimatedContentKt$AnimatedContent$3.class:
- H4sIAAAAAAAA/6VVW28bRRT+Zu34sjG5QZsbBGhNaydt1knLpbUbakxCF4xB
- OIqE8jReb5Kxd2ei3bVV3vLI7+CBZyokiqiEIh75Uahn1iZN0hAwffDMmXOZ
- 75wz31n/+ddvvwO4i88ZNrhsB0q0H1uO8g9V6FpcCp9HQkmrGktuu6Zk5Mro
- iyh/TpO/kwZj+LHeVZEnpNXp+5YgSyC5Z9W532rz8mnbXk86+ubQ2hpKa5X6
- f09gO+AyFNrSdNShW74s9HTIngr88kaZYeGf80wjybB0ea5ppBhSFSFFtMGQ
- KBR3GJIFu7iTQwamiTGMkyI6ECHDwxHquqixlG1KyL7qugydwis0qThSlxiu
- 11Wwb3XcqBVwQdVzKVXEB51oqKjR8zzyMvO6zLykUwYzZzt30llbRgFdIZww
- jTcYrjgHrtMd3vE1D7jvkiPDzUK9w/vc8rjct75qdVwnKp/SNPUl+2Xd5auY
- NXEFcwwrIxSVxoJ+oKyJRbzJcClt/qWZDDcuSLb4sorh3v9GSeOdHCYxZcLA
- NQbjcI1h5iKITMXxYjJqT6osYzea29VGbTOHAiaypCwyTP89gF+6EW/ziFOg
- 4fcT9AFgesnoBQysq4UEGR8LLZVIahPy6vHRhHl8ZBpzxott6vhowSixa8kM
- ycayUUo8Mv/4IWVkkjpqnWG8wqWS3/mqF9Ko3B6Rg2yb4dYo85PGfYbZ80PU
- dvd4z4sYvr+IYZfP+iva18v2BTwhClfwgF7zXKarXUoyWVNtV7+0cri3wwPB
- W567rReGybqQbqPnt9xgqFn8picj4bu27ItQkKr6Yk4Z8uetJ+N2xi1nS+kG
- NY+HoUvHyU3peCqkaSOuHKg2Q7Yp9iWPegEhmk3VCxx3S2j4+SHAzkvgKBHv
- xohQ9NeAeU1EIlNSEw1Z0jwkKU8ejPbUcvIpck9i+lVpzQ20eC2OmdYzgEQc
- 8QlFGLRPrMy8/ivmn2Hx26d46yfSGGTTMfS5xFx8y9WB5/AWLc1giey1od80
- 7Z/SL80Gh6kqAb09TO3BECi7vHKMd3/B9bMYwOwpjOwJRpZqeo/sGdw4qXI2
- 9gHGn8GgbG/+jOUnsWIMm7Sa5DZwmMNW3KIyNvBZDJfAo3j/GDbt98lzhaJu
- 7SJh47aNVRsWSjbWsG7jDu7ugoV4Hx/sYizEhyE+CnEvxFKIyefQs6Ef6gcA
+ H4sIAAAAAAAA/6VVW3PbVBD+juz4opjcoM0NArSmtZM2ctJyae2GGpNQgTEM
+ zmSGydOxfJIcWzrKSLKnvOWR38EDz3SYoQydYTI88qOY7pFNmqQhYPqgs3v2
+ 9u2udqU///rtdwB38TnDBlftwJftx5bje4d+KCyupMcj6SurGnOiXfNVJFT0
+ RZQ/J8nfSYMx/Fjv+pErldXpe5YkTaC4a9W512rz8mndXk85OnJobQ25tUr9
+ vyewHXAVSq1pOv6hKF/metplzw+88kaZYeGf80wjybB0ea5ppBhSFalktMGQ
+ KBR3GJIFu7iTQwamiTGMkyA6kCHDwxHquqixlG1Kqr7fFQydwis0qThSlxiu
+ 1/1g3+qIqBVwSdVzpfyIDzrR8KNGz3XJyszrMvOKbhnMnO3cSWdtFQUUQjph
+ Gm8wXHEOhNMdxviaB9wTZMhws1Dv8D63XK72ra9aHeFE5VOSpg6yX9ZdvopZ
+ E1cwx7AyQlFpLOgXlDWxiDcZLh2bf2kmw40Lki2+LGK4979R0ngnh0lMmTBw
+ jcE4XGOYuQgiU3HceBi1JVWWsRvN7WqjtplDARNZEhYZpv9ewC9FxNs84uRo
+ eP0EfQCYPrL6AAPraiZBysdScyXi2oS8enw0YR4fmcac8YJMHR8tGCV2LZkh
+ 3lg2SolH5h8/pIxMUnutM4xXuPLVd57fC2lVbo84g2yb4dYo+5PGfYbZ80vU
+ Fnu850YM3180YZfv+ivq18v2BXNCI1zBA3qb5zJd7VKSyZrfFvpN+w53d3gg
+ ecsV2/pgmKxLJRo9ryWCoWTxm56KpCds1ZehJFH1xZ4y5M9rT9btjFnOVkoE
+ NZeHoaDr5KZyXD+kbaNZOfDbDNmm3Fc86gWEaDb9XuCILanh54cAOy+Bo0Rz
+ N0YDRb8GzOtBpGFK0kMbSJKHxOXJghFNLSefIvckHr8qnbmBFK/FPtN6B5CI
+ PT4hD4PoxMrM679i/hkWv32Kt34iiUE67UOfS8zFUa4OLIdRNDeDJdLXhnbT
+ RD+lJ80Gl6kqAb09TO3BECi7vHKMd3/B9bMYwOwpjOwJRpZqeo/0Gdw4qXI2
+ tgHGn8GgbG/+jOUnsWAMm3SaZDYwmMNW3KIyNvBZDJfAo5h+DJvofbJcIa9b
+ u0jYuG1j1YaFko01rNu4g7u7YCHexwe7GAvxYYiPQtwLsRRi8jmnoznY6gcA
AA==
""",
"""
androidx/compose/animation/AnimatedContentKt$AnimatedContent$4.class:
H4sIAAAAAAAA/6VUW08TQRT+Zru9Um1B5eYdEVpAFiryYBsiqRA2VkykaWJ4
- mnYXGLo7Y7rbBt949Hf4CyQ+kGhiiI/+KOOZpRqDqDEk2zPffucyM+c726/f
- Pn4GsIRlhhUunY4SzoHVUv5rFbgWl8LnoVDSWo2Q61SVDF0ZPgsnzzCTS0kw
- hqe1tgo9Ia39nm8J8nQk96wa95sOL//q2+nKlq4cWOt9tFip18v0rJQZxv9c
- JQmT4dbfKyWRYEhUhBThCkOsUGwwmAW72MgihUwGcQwQEe6JgOFJ7WLXptMm
- hOyptsswVajt8x63PC53rRfNfbcVlou/UwypAl20SD8GQ4QMQ+cGVVpedAV9
- 6nQGBq4RaW9u1Vc3q2tZjOBymshRhsEfnX3uhtzhIdd1/V6MlGXapLQBA2tr
- ECPngdBogZCzyDB9cmhmjFQ8f3I4bmywCTN1cphnpUTe0K8bmS/vEmYqljd1
- eIlhoMKlkm981Q2ovazOMPc/PUyiwDBytpGOu8O7HvXi7TlN/MfkXNBfKtvn
- 6EbDMoNZ0ubMSefbdEizqhxX66Za3GvwjuBNz61rw5CrCeludv2m2+kz6S2x
- K3nY7RDO2lK6narHg8Cl8cutyZanAiF3Sbs95TBktlS303LXhc4ce9mVofDd
- hggElVqVUoVRWwMskPZxEpW+O4zpYdDSarGRJmae0CRFMFoTM+YxskfRCFhk
- s6csLkU5g8ghT5E6Y5k8Bq3G7HttaQ8dp6PHo8zhU28/U6MhXCH/YoQHae+r
- P3cfiWKBgU8wXh1j+APGjiIijhLZTH8rYBQPyZooYq5fKEZ/SHp9gEe0PqbI
- ccq6vo2YjRs2btq4hds27uCujQnc2wYL6LL3txEPMBVgOsBQgFyA/Hcf0VY3
- 3wQAAA==
+ mnYXGLo7Y7rbBt949Hf4CyQ+kGhiiI/+KOOZpRqDqDEkO+d8+53LzJxzdr9+
+ +/gZwBKWGVa4dDpKOAdWS/mvVeBaXAqfh0JJazVCrlNVMnRl+CycPMNMLiXB
+ GJ7W2ir0hLT2e74lyNKR3LNq3G86vPyrbacrWzpzYK330WKlXi/Ts1JmGP9z
+ liRMhlt/z5REgiFREVKEKwyxQrHBYBbsYiOLFDIZxDFARLgnAoYntYtdm06b
+ ELKn2i7DVKG2z3vc8rjctV40991WWC7+TjGkCnTRIi0GQ4QMQ+c6VVpedAV9
+ 6nQGBq4RaW9u1Vc3q2tZjOBymshRhsEflX3uhtzhIdd5/V6MOsu0SGsBBtbW
+ IEbGA6HRAiFnkWH65NDMGKl4/uRw3NhgE2bq5DDPSom8oV83Ml/eJcxULG9q
+ 9xLDQIVLJd/4qhtQeVmdYe5/aphEgWHkbCEdd4d3ParF23OK+I/JuaC9VLbP
+ 6RsNywxmqTdnTjrfpkOaVeW4um+qxb0G7wje9Ny6Fgy5mpDuZtdvup0+k94S
+ u5KH3Q7hrC2l26l6PAhcGr/cmmx5KhByl3q3pxyGzJbqdlruutCRYy+7MhS+
+ 2xCBoFSrUqowKmuABep9nJpK3x3G9DDo1tKiWSFmntAkeTDSiRnzGNmjaAQs
+ ktlTFpeimEHkkCdPHbFMFoO0MfteS9pD+2nv8Shy+NTaj9RoCFfIvhjhQdr7
+ 6s/dRyJfYOATjFfHGP6AsaOIiKNEMtPfChjFQ5ImipjrJ4rRD0nrB3hE+jF5
+ jlPU9W3EbNywcdPGLdy2cQd3bUzg3jZYQJe9v414gKkA0wGGAuQC5L8D/xWd
+ 4d8EAAA=
""",
"""
androidx/compose/animation/AnimatedContentKt.class:
@@ -180,75 +180,75 @@
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
- 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
+ PiZlZY7Kypxi6N4/4yXd4RXucPqUSm3bRy81JkVICjCwTWko5NwxpJUhqzLG
+ 2NO93cnw3m5YiSphRfWFlT7l2L90eSpKwhse9yZffc/ImVQybMCv7u1GlWwg
+ 6ksqC0o2oSpRfzKm+TUlE3BlMNP26peAoqrZ2+QLJfu1mNa9oNBcRA1rqtqu
+ +VV10KdRdB/LRDJt2YFoR/KGu7ZLygXFtVmm080TbWRbCEod7U6+OI5kSG2s
+ yWivE4s8XLqE8txLst68b3T0p/jMJnNOf2I4szO0tCj6/dmHMLdDLkFR+1hK
+ z92EPfsBB++eAily+E3SJ3CQb4WxS/cnStQ0f2+Tnhb+WatCm3QtGqZeqNdW
+ dbskX3pyW6vMq8vcNuTYmwwVjXWTO3Wb7OtPGu/DvLltCIPcM4dPQYZUs/eA
+ 3bGwDmqM5c0lvuVtEMmbpm7PVrkQOrnDRatul/V5Q/oSXsrllu0wRiXpl+VG
+ MiF/PUk/pRH35hNDWvtLdA9rMZIjWpzkqNZL8ldZmlgmGaAr0wcNn5M91FhE
+ 44SbNEHzSfJL6xpZimv14Dp8+MLNEMSXXg6V9FfS76dByO0ATTIawht4k2yJ
+ cJm2CpBOxf3+Fz8h/Btu7dFjPO5va4yGaLQ0NDwy+hIjDbArLkuls8OF3UNs
+ gQgB6KA3cARxRCl7xD2FUe8UVrxTiJ3HX6Olh/xjSCPj8o8d8I8d8I8d43+v
+ hX/cfyr3sVbuHtt3G9yDjVHukPsHp3OPE/de4h6nvyRljxOor2l+gCL7Xfh9
+ 9Khq6HFP3/f0N27WEr4lXSFU05TxwxX48niQx0weH2E2j48xl8c8PlkBE1hA
+ fgUxgTaBTwUeCqQFNIFFgSWBgsAjgWsCjwU+cwN6BJ4IFAVUgVGBxN8a7RIf
yw8AAA==
""",
"""
androidx/compose/animation/AnimatedContentScope.class:
- H4sIAAAAAAAA/5VRu04CQRQ9d5BFVxTEFz5rtXDF2GlM1MSEBDVRQ2M17E50
- gJ0h7EAo+Rb/wMrEwhBLP8p4d7Wyszk5jzu5j/n8ensHcIQtQiBN1Lc6GgWh
- jXs2UWzoWDptTXCWMRVdWOOUcXeh7akCiFBuy6EMutI8BjettgpdATmCd6KN
- dqeE3M5us4g8PB9TKBCm3JNOCLXGP3sdExYaHeu62gRXyslIOsmeiIc5Hp9S
- mE4BBOqwP9KpOmAW1Qjbk7Hvi6rwRZnZZFydjA/FAZ3nP549URZp1SGlbyt/
- eu93HM98YSNFKDW0UdeDuKX697LVZafSsKHsNmVfp/rX9O/soB+qS52KtduB
- cTpWTZ1oTs+MsS5bMkENgk/yO3J6IcYqqyDTQH7vFdMvTATWGL3M9LDOWPwp
- wAz8LN/IcBWb2U8SZjkrPiBXx1wd83WUUGaKhToqWHwAJVjCMucJ/AQrCbxv
- L9u6lAYCAAA=
+ H4sIAAAAAAAA/5VRu04CQRQ9d5BFV1TEF/iq1cIVY6cxURMTEtREDA3VsDvR
+ AXbGsIOx5Fv8AysTC0Ms/Sjj3ZXKzubkPO7kPubr+/0DwBG2CIE00cDq6DkI
+ bfxoE8WGjqXT1gRnGVPRhTVOGdcM7aMqgAilrnySQV+a++Cm01WhKyBH8E60
+ 0e6UkNvZbRWRh+djCgXClHvQCaHW+GevY8Jio2ddX5vgSjkZSSfZE/FTjsen
+ FGZSAIF67D/rVB0wi2qE7fHI90VF+KLEbDyqjEeH4oDO858vniiJtOqQ0rfl
+ P733e45nvrCRIiw0tFHXw7ijBney02en3LCh7LfkQKd6YvpNOxyE6lKnono7
+ NE7HqqUTzemZMdZlSyaoQfBJJiOnF2KssAoyDeT33jD9ykSgyuhlpod1xuJv
+ AWbgZ/lGhmvYzH6SMMtZsY1cHXN1zNexgBJTLNZRxlIblGAZK5wn8BOsJvB+
+ APKoOCQGAgAA
""",
"""
androidx/compose/animation/AnimatedContentTransitionScope.class:
- H4sIAAAAAAAA/51Ru04bQRQ9d4zXzsaAMZCYJKQGChYQDTJCAqRIlhyQAnJD
- Nd4dwdjeGbQzRpT+Fv6ACilFZFHmoyLuLFQpaY7O447uY/7++/0HwD7WCQfS
- ZIXV2X2S2vzWOpVIo3PptTXJcclUdmqNV8ZfFtI4HZKL1N6qGojQHMo7mYyl
- uU7OB0OV+hoqhOhQG+2PCJWNzX4DVUQx5lAjzPkb7Qid3ru7dghLvZH1Y22S
- n8rLTHrJnsjvKrwSBagHAIFG7N/roHaYZbuE77NpHIu2iEWT2Wzank33xA6d
- VJ8fItEUoWqPwtvWf1NsjzxPf2ozRVjsaaPOJvlAFZdyMGan1bOpHPdloYN+
- M+MLOylS9UMHsfZrYrzOVV87zemxMdaX6zrsQvBx3kYOt2Jss0pKDVS3nlB/
- ZCKwxhiVZg1fGBuvBfiAuMy/lvgZ38rfJXzkrHGFShfzXSx0sYgmUyx10cLy
- FchhBaucO8QOnxyiF5mdAVoaAgAA
+ H4sIAAAAAAAA/51Ru04bQRQ9d4zXsDFgHB4mCakTChasNAiEBEhIlhyQAnJD
+ Nd4dwdjeGbQzRi79LfxBKqQUkZWSj0LcWahS0hydxx3dxzw9//kL4Ae2CPvS
+ ZIXV2SRJbX5nnUqk0bn02prkuGQqO7XGK+OvCmmcDsllau9UDURoDOS9TEbS
+ 3CQX/YFKfQ0VQnSojfZHhMq37706qohizKFGmPO32hEOuu/uekBY6Q6tH2mT
+ /FReZtJL9kR+X+GVKMBCABBoyP5EB7XLLNsjfJ1N41i0RCwazGbT1mzaFrt0
+ Uv33EImGCFVtCm+b/02xM/Q8/anNFGG5q406H+d9VVzJ/oidZtemctSThQ76
+ zYwv7bhI1ZkOYvPX2Hidq552mtNjY6wv13XYg+DjvI0cbsXYYpWUGqhuP2L+
+ NxOBTcaoNGv4xFh/LcAC4jL/XOIGvpS/S/jAWf0alQ4WO1jqYBkNpljpoImP
+ 1yCHVaxx7hA7rDtEL0Tug+oaAgAA
""",
"""
androidx/compose/animation/ContentTransform.class:
- H4sIAAAAAAAA/5VRy24aMRQ918BApzQQ2qbQ17pJlAyg7FpVIkiRkGgrtYgN
- K8O4rYGxo7GJWPIt/YOsKnURoSzzUVXuTPiBbI7Ow9Y9vr77/+8GwBneEY6l
- iVOr43U0s8mldSqSRifSa2uivjVeGT9KpXE/bZqUQYT6XF7JaCnNr+jbdK5m
- vowCIfikjfafCYUPh+MqSghCFFEmFP1v7Qgnw0fM+UjYHy6sX2oTfVFextJL
- 9kRyVeDalEElAxBowf5aZ6rNLO4Q3m83YSiaIhR1ZttNc7vpijadl27/BKIu
- slNdyu42enkDFe/mny489+3bWBFqQ23U11UyVelITpfsNIZ2JpdjmepM78zw
- h12lM3WhM9H6vjJeJ2qsnea0Z4z1+QMdOhC8jl3lbDuMTVZRroHS0V9UrpkI
- tBiD3KzgNWP14QCeIMzzNzm+wtv8BwlPOatOUBjg2QB7A9RQZ4r9ARp4PgE5
- vMBLzh1ChwOH4B4M81bb/gEAAA==
+ H4sIAAAAAAAA/5VRy04bMRQ910kmYUibBy0N0HbNQzCA2BUhBaRKkQJIgLJh
+ 5WQMOMnYaOwglvkW/oAVEgsUsexHVb0z5Ae6OToPW/f4+s/f1zcAB/hB2JIm
+ Tq2OH6OBTe6tU5E0OpFeWxOdWOOV8VepNO7GpkkZRKgP5YOMxtLcRuf9oRr4
+ MgqE4FAb7Y8IhfWNXhUlBCGKKBOK/k47wnb3P+b8IjS6I+vH2kSnystYesme
+ SB4KXJsyWMgABBqx/6gztcss3iP8nE3DULREKOrMZtPWbLovdum49P4UiLrI
+ Tu1TdrfZzhuoeD5/Z+S574mNFaHW1UadTZK+Sq9kf8xOs2sHctyTqc703Awv
+ 7SQdqN86EysXE+N1onraaU7bxlifP9BhD4LXMa+cbYexxSrKNVDafEHlmYnA
+ CmOQmxWsMlY/DmABYZ6v5fgN3/MfJCxyVr1GoYNPHXzuoIY6UzQ6aGLpGuTw
+ BV85dwgdlh2Cf9GA1Gv+AQAA
""",
"""
androidx/compose/animation/Transition.class:
- H4sIAAAAAAAA/41SXU8TQRQ9s7vdbtdCtwUUEL9QZFvUBeKDQYJBEpImVRPa
- NCY8De2mDrSzZmdKeOyTP8RfoInGxAfT8OiPMt5dNkiERF/uPffMmTP33t2f
- v77/APAUjxiWuOzGkeieBJ1o8D5SYcClGHAtIhm0Yi6VSGAejMHfbG40Dvkx
- D/pc9oI3B4dhRz/fukwxeH9zeVgM9qaQQm8xzPiXL1XbJPBbzRSYfrVdhI2C
- ixxcOtA87oWaoXL5YhFFTBRgYJLB0u+EYlhu/NdU1GiBXFuZ97RfvWqWnF+l
- rkiq/kjzm1Q8fkGjmOlZuXEU6b6QwatQ8y7XnDhjcGzSllkSnCSAgR0RfyKS
- apVQd42hOR5Nusas4Y5HruElwbFnx6Oa5YxHHls3Vo2XExXbM+eNZ+PR6Ufb
- 8Ky9hax8e/phkiiPLjrzlpPz7EXLyXtWYr1OrzVZ8mhlO5097O5EUodSPzmi
- CQpN0ZNcD+OQtrYTdSmVGkKGr4eDgzBu8YN+mGw76vB+m8ciqTPSbUbDuBPu
- iqSY2xtKLQZhWyhBp9tSRjpds8IafZJcOrWRfCHKD6kycAMmYRt5wsvEbFE2
- KLu1b7hWW/mK0udU51O0SQkUUKV4/UwFD+VkmYQuujrEVjCVeQbJrinnal9Q
- +nSlXfFMkNmdmUwTnjlvbCNrzP5nU/Z5UzYxF5syM2SiluYlrFDeJcUsvT23
- D7OO+Tpu1rGAWwRxu447uLsPpnAPi/v016GscF/hgUJRIa9QUZhSmFGY+A05
- DzSHyAMAAA==
+ H4sIAAAAAAAA/41SXU8TQRQ9s7vdtmuhSwEFxC8U2RZ1gfhgkGCQhKRJ1YQ2
+ jQlPQ7vBgXbW7EwJj33yh/gLNNGY+GAaHv1RxjvLBomQ6Mu95545c+beu/vz
+ 1/cfAJ7iEcMil90kFt2TsBP338cqCrkUfa5FLMNWwqUSBubBGIKN5nrjkB/z
+ sMflQfhm/zDq6OeblykG/28uD4fB3RBS6E2G6eDypWqbBEGrmQI7qLZLcFH0
+ kINHB5onB5FmqFy+WEIJY0VYGGdw9DuhGJYa/zUVNVok11bmPRVUr5olF1Sp
+ K5KqP9L8BhWPX9Aodno20TiKdU/I8FWkeZdrTpzVP7Zpy8yEoglgYEfEnwhT
+ rRDqrjI0R8Nxz5qxvNHQs3wTCu7MaFhzCqOhz9asFevlWMX17Tnr2Wh4+tG1
+ fGd3Pivfnn4YJ8qni4U5p5Dz3QWnkPcdY71GrzWZebSylc4edbdjqSOpnxzR
+ BMWmOJBcD5KItrYddymVG0JGrwf9/Shp8f1eZLYdd3ivzRNh6oz0mvEg6UQ7
+ whSzuwOpRT9qCyXodEvKWKdrVlilT5JLp7bMF6L8kCoLN2ATdpEnvETMJmWL
+ slf7hmu15a8of051AUWXlLQ9VCleP1PBx4RZJqGLrgViK5jMPEOza8q52heU
+ P11pVzoTZHZnJlOEp88bW88ac//ZlHvelEvMxabsDNmopXkRy5R3SDFDb8/u
+ wa5jro6bdczjFkHcruMO7u6BKdzDwh79dZhQuK/wQKGkkFeoKEwqTCuM/QaR
+ /XoCyAMAAA==
"""
)
diff --git a/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/CrossfadeDetectorTest.kt b/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/CrossfadeDetectorTest.kt
index d6d0b38..8454999 100644
--- a/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/CrossfadeDetectorTest.kt
+++ b/compose/animation/animation-lint/src/test/java/androidx/compose/animation/lint/CrossfadeDetectorTest.kt
@@ -43,7 +43,7 @@
private val CrossfadeStub = bytecodeStub(
filename = "Transition.kt",
filepath = "androidx/compose/animation",
- checksum = 0x33cac1e3,
+ checksum = 0x15a87088,
"""
package androidx.compose.animation
@@ -57,27 +57,27 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcUllZiXUpSfmVKhl5yfW5BfnKqX
- mJeZm1iSmZ8nxBNSlJhXnAlie5dw8XIxp+XnC7GFpBaXeJcoMWgxAACekN3e
- UwAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uKSSsxLKcrPTKnQS87PLcgvTtVL
+ zMvMTSzJzM8T4gkpSswrzgSxvUu4eLmY0/LzhdhCUotLvEuUGLQYAEjDUx5T
+ AAAA
""",
"""
androidx/compose/animation/TransitionKt.class:
- H4sIAAAAAAAAAIVSW08TQRT+ZnvZdgFZyr0oIhcBUbcQfLHExJAQGisYW3nh
- abpd6vQya3amDY/9Lf4D34wPpvHRH2U8s1RBasIme86Zb77znTNn5uevb98B
- 7OMpwyaX9SgU9UvPDzufQhV4XIoO1yKUXjXiUgkTvtE2GIPb5D3utblseKe1
- ZuATmmDIHkahUhe8HjC82Crf5hTLrVC3hfSavY530ZW+EVTe0TDaLW6fMZwe
- VF+OZr7aqlbvSj94doPzQQrKihU3yiMni7pSi07gHcZrXmsHRYa1chg1vGag
- axEXJMylDDW/KnIS6pNuu00s2w+lDqTOwGFYvtGRIDiSvO2VpI4oX/jKxjjD
- rP8x8FtDgXc84p2AiDTv/w3oGqkYkQYdYBz3MOlgAi7DmOZRI9AVaotGnBsV
- YFi5a8gMU38obwPN61xzwqxOL0EvgRmTYmAtE1iEXwoTFSiq7zJUBv0ZZ9B3
- LNdyrEzCsRas+B/08/suGavAVpOZQd+19tJuIm8dW3vzbjI/nUvmKDa2wAqp
- H5/TViZ9bBvv2kZ6j1FtsKo51LC5mx1PXD/A5y3NkDwMzRubLAsZnHQ7tSCq
- mks02aHP22c8EmY9BLMV0ZBcdyOKl95fXX1J9oQStP36+pYZ1m/v/r2vf2hO
- JexGfnAkjPriMOdsRA+7sJCE+YiGFNK0WqdVkXCLvL2TG/uKqS9m1NggmyZi
- Gg4eUzx3RUEO07GETfgM7W/GbBtbQ36G/Db9WSuuk423n8R2DTvkDwmdpepz
- 50iUMF/CAlkslpDHUgn38eAcTGEZD8+RUUgprCg8UsgpOAqryoDp38bsatcp
- BAAA
+ H4sIAAAAAAAA/4VSW08TQRT+Zlq67QKylHvxglwERNxC8MUSE9OE0FjB2MoL
+ T9PtUqeXWbM7bXjsb/Ef+GZ8MI2P/ijjmW0VBBMe5syZ73znmzPnzM9f374D
+ OMAuw6ZQ9TCQ9UvXCzqfgsh3hZIdoWWg3GooVCSN+0ZbYAxOU/SE2xaq4Z7W
+ mr5HaIIhUwyDKLoQdZ/hxVb5JqdQbgW6LZXb7HXci67yjGDkHo28vcL2GcPp
+ YfXl7cxXW9XqXemHu9c4H5SkrFhxo3zrZWFXadnx3WJ8FrW2X2BYKwdhw236
+ uhYKScJCqUCL4SUngT7pttvEsrxAaV/pNGyGh9cqkgSHSrTdktIh5UsvsjDB
+ MOd99L3WSOCdCEXHJyL1+38NukIqRqRBD5jAPUzZmITDMK5F2PB1hcqiFmdv
+ CzCs3NVkhuk/lLe+FnWhBWG800vQT2DGZIwBA2sZh1PwUhovT159j6Ey6M/a
+ g77NHW7zdMLmizxeg37uwCHD82w1mR70Hb6fchI5fsz3F5xkbiabzJJvbJ7l
+ x358TvF06tgyu2MZ6X0W31o1LxtVeL3syatf+LylGZLFwHy0qbJU/km3U/PD
+ qpmkyQ480T4ToTTnEZipyIYSuhuSv/x+OP+S6slIUvj11agZ1m9G/w7tH5pd
+ Cbqh5x9Jo740yjm7pYc9cCQx7OgSxpCi0wadCoRz2q2d7PhXTH8xrcYTsiki
+ pmBjk/z5IQVZzMQSFuGzFN+K2Ra2R/w07U/N6Hh8TyYO78R2Hc9oLxI6R7fP
+ nyNRwkIJiyWqJlfCMu6X8AAPz8EiPMLKOdIRxiI8jrAaIRvBjrAWGTD1G1Xc
+ nh8uBAAA
"""
)
diff --git a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/BoxWithConstraintsDetectorTest.kt b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/BoxWithConstraintsDetectorTest.kt
index 8052414..8575d8f 100644
--- a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/BoxWithConstraintsDetectorTest.kt
+++ b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/BoxWithConstraintsDetectorTest.kt
@@ -29,7 +29,7 @@
private val ExternalModuleFunctionStub = kotlinAndBytecodeStub(
filename = "Other.kt",
filepath = "bar/compose",
- checksum = 0xad5be2a5,
+ checksum = 0xdc553c55,
source = """
package bar.compose
@@ -51,54 +51,54 @@
}
""".trimIndent(),
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGJ2KM3AZcWllJiXUpSfmVKhl5yfW5BfnKqX
- ll+al5JYkpmfp5eTWJlfWiIk4pRfEZ5ZkuGcn1dcUpSYmVdS7F3CJcbFnZRY
- BNMmxO5fkpFaBBTn5WJOy88XYgtJLS7xLlFi0GIAALeBd4B7AAAA
- """,
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuJSSsxLKcrPTKnQS87PLcgvTtVL
+ yy/NS0ksyczP08tJrMwvLRESccqvCM8syXDOzysuKUrMzCsp9i7hEuPiTkos
+ gmkTYvcvyUgtAorzcjGn5ecLsYWkFpd4lygxaDEAADRmnbZ7AAAA
+ """,
"""
- bar/compose/OtherKt$Test$1.class:
- H4sIAAAAAAAA/6VU33MTVRT+7ibNJtvFlCLQFgSVCGmrbIv4i8RiCa2sxOCY
- Usfp083m0myzubezezdT3vrm/+FfIDojjM44HR/9oxzP3cYQhuKDPOTck3PP
- +c53zv2Sv/7+7Q8AN3GfYaHDYy9Qg32VCO+B7on4vq5siURXVm0whh+afaWj
- UHp7w4EXSi1iySOvyQedLq9N3j1KZaBDJRNvc+St1ptcdmMVdg/GHR6pVHa5
- ufUi/lil2rujDr4Lda9BlTrm1CFpB2pfjLEfylDX1mrE9NVEbOQZLv03GRsF
- hkI9JLg1hlx1cZshX/UXt10U4TiYwjQFdC9MGC42X70VYlII5VD1BcPt6utM
- aBhcaap419sTumNuEo9LqTQ/pt5SupVGETWcqxhelZeBiph9cfDxYnypYwIM
- g8TGmwxng54I+iPEb3jMB4ISGa5Vm3t8yImq3PUedPZEoGsTkbYB2a2ZJZ3D
- eQdnMcdw5oTl2FhgsB8mYouIuriIGQcX8BbDa2mA4eoJ/BZfDjHc+v9tbLzj
- omwYW7jCMD0hPBvvMRT9VntrvdXYYDj1gipdXEO1hKtYZLD2VxlmT2JWrAdR
- pjojtJJpct0UvlEib4Xh9L+QXwvNiS+nEmswzNEPlBljM7C+cXIUPwiNR1VW
- l9pVjg5d5+jQsWYsx5qzyJ05OlywVtiStWLdc/78sWAVTVX3Bk1V51LJxwOV
- JiR/kNSNnF3cRokoZq94va8p3FBdYSZRAY+2eRzyTiS2jGEoN0MpWumgI+JR
- pPJtKnU4EL4chklIobG01p8LmcH1pRRxI+JJIuhreUMGkUpIWTRzT3UZSu1w
- V3KdxoTptFUaB2IzNA3mRw22j+EnULFC+5uiQehvCvNmobSZPH1oyRS5Q16F
- MmhWFJbyT+E+MRtFg6x7HMWprOa0eXvKNBUNOi06p5dnzzzD/PIzXDJlFu6S
- NU9XoFSHSgzMuePUEYzxZnGZoDdGr0ZpmFkn9LdHfL4YobtLy0d491dUfsbS
- T2P4QsaqPAHtjqFdLON9ui/ig/F057Mcavs7rO+fwvsFq0+ywBQ2M7ZslDCH
- L7PVXCAC97J2OfjZuY6v6PyEMm9Q1Yc7yPm46eMjsvjYp4tPfXyGWztgCWqo
- 7yCf4PMEawkuJyj/AyfuA+BHBgAA
- """,
+ bar/compose/OtherKt$Test$1.class:
+ H4sIAAAAAAAA/6VU33PbRBD+TnYsW1FxmtI2SUsL1LROAlVSCoXapE1NQkWN
+ y+A0DJOns3yNFct3GenkSd/yxv/BX0BhhnZghsnwyB/FsKcY405THuiD9lb7
+ 49tv91b6869ffwdwE02GhQ6PvUAN9lUivIe6J+IHurIlEl1ZtcEYvm/2lY5C
+ 6e0NB14otYglj7wmH3S6vDbpe5zKQIdKJt7mSFutN7nsxirsHowrPFap7HLj
+ 9SL+RKXau6cOvg11r0GZOuZUIWkHal+MsR/JUNfWasT01URs5Bku/TcZGwWG
+ Qj0kuDWGXHVxmyFf9Re3XRThOJjCNBl0L0wYLjZfPRViUgjlUPUFw53q63Ro
+ GFxpqnjX2xO6YzyJx6VUmh9TbyndSqOICs5VDK/Ky0BFzL7Y+HgwvtQxAYZB
+ YuNNhrNBTwT9EeLXPOYDQYEM16rNPT7kRFXueg87eyLQtQlL24Ds1syQzuG8
+ g7OYYzhzwnBsLDDYjxKxRURdXMSMgwt4i+G1doDh6gn8Fl82Mdz+/2VsvOOi
+ bBhbuMIwPbF4Nt5jKPqt9tZ6q7HBcOqFrXRxDdUSrmKRwdpfZZg9iVmxHkTZ
+ 1plFK5ki103iGyXSVhhO/wP5ldCc+HJKsQbDHH2gzIiSEWBgfaPkyHkQGo1S
+ rS7VrBwdus7RoWPNWI41Z5E6c3S4YK2wJWvFuu/88UPBKpqs7g1qrc6lkk8G
+ Kk3oGyDQvNlpF3dRIp7ZVV7vazI3VFeYdlTAo20eh7wTiS0jGMrNUIpWOuiI
+ eGSpfJNKHQ6EL4dhEpJpvF/r/24zg+tLKeJGxJNE0Gt5QwaRSmi9qPGe6jKU
+ 2uGu5DqNCdNpqzQOxGZoCsyPCmwfw0+gYoWGOEWN0L8K82aqNJk8PTRpsjRI
+ q1AE9YrCUv4Z3KfZLD8n6R5bcSrLOW0WgCJNRoNOi87p5dkzzzG//ByXTJqF
+ DZLm/goU6lCKgTl3HDqCMdosLhP0Juk23RqFYWad0N8e8bk7QneXlo/w7i+o
+ /ISlH8fwhYxVeQLaHUO7WMb75C/ig3F357MYKvsbrO+ewfsZq08zwxS+yNiy
+ UcAc7mejuYB1+Fm5HL7Mznt4QOctirxBWR/uIOfjpo+PfHyMWz4+wac+bqO2
+ A5agjs92kE+wluBOgssJyn8D0BOnRkwGAAA=
+ """,
"""
- bar/compose/OtherKt.class:
- H4sIAAAAAAAA/6VUWVMTQRD+ZhNICEGWcMglHgQJqCzggRo8MCXlljFYglgl
- T5PNAAubWWpnQuEbf0mfKB8snv1Rlj1LRDnUKk1Vpo/p/rr7m06+fvv8BcAd
- FBm6qzxyvLC+EyrhLOlNEb3UKTAGe4vvcifgcsNZqm4Jj7wJhpY4hOFJocxl
- LQr92t5x9nrYkDWu/VBS2oewoZ1n4d47X2+WQql0xH2p1bIX7ojixCrD2FmA
- qCG1XxdOKbZ5NRDU4Gg5jDacLaGrBkE5XMpQx1WUUwl1pREEFNU6rzd99TiN
- NoaR7VAHvnS2dusO1RSR5IHjSh1Ruu+pFNoZer1N4W0381/ziNeFNnONF8qn
- 5y7+4lk2IBvUfxYduJBBFp0M7XlTO99kZv5/iGFIvVViheCIamVcafQwJFeE
- 0gyJgiFu8JwXy5uA/EwK/Qxpt7K8slApPWcYLv8+tpjFIIbaMIDhk5StN6R3
- RO9iUyPcEYa5f5rLbNMVavrsTb4m1nkjoLnmCu/Lf26g6J59FvMI1zCawVXk
- Gbp+ILwSmlNTnLi06rsJ2nNmjhQD2zaKRf4932jTpNVmGJ4e7tuZw/2MZVsZ
- K03ffovMwbRNhzXNXqQGbdsy2myrnSCZJE/WbjGeydgyOLOMCiEdczy1TUMl
- S2FNMHSWfSkqjXpVRCtmoxly5dDjwSqPfGM3nUNvjnbflbu+8sm18HPNGfKn
- b4839kRY1pVSRKWAKyXIzCyHjcgTi74pMNCEWD0DjxlYSMJ8ErQNLWgleZss
- 42eGuslc5gD2R0Me/WmAAugHhzTukp49CkEXciTvNW9TJOearFMgCLf7PNze
- c3DbT+D2/A23Dxcp3eBONKfoSHzCpUNcTrIDjBl0FqNnKAzoJOTcCbwE7se3
- xFGc3o8HcUezeEjyEfmvEynja0i4KLiYoBOTLm7gpotbmFoDU3AwvYZWhT5i
- U6FboUchp9DyHfyqvvRqBQAA
- """
+ bar/compose/OtherKt.class:
+ H4sIAAAAAAAA/6VT21ITQRA9s7kSoqwBkYt3owZUFvCCGrxgSsotY7QEsUqe
+ JpuBLNnMWjsTCt/4JXyifLB49qMse5aIRlCr9GFnus90n54+0/vl66fPAG5h
+ nmGwziPHC9vvQyWcl7opouc6A8Zgb/BN7gRcrjsv6xvCIzTBkIpDGB6Vqlw2
+ otBvbB1kr4Ud2eDaDyWlfQg72nkSbr31dbMSSqUj7kutlrzwvShPrDBcPkwQ
+ daT228KpxD6vB6LMcKkaRuvOhtB1w6AcLmWo4yrKqYW61gkCikrP66avHmbR
+ x3C2FerAl87GZtuhmiKSPHBcqSNK9z2VQT/DSa8pvFY3/xWPeFto09fVUvXX
+ vss/IUuGZJ3un8cxHM8hjwGG/qKpXewqM/8/wjBk3iixTHQktTJQFkMMyWWh
+ NEOiZIQbO+LFiiagOJPBCEPWrS0tL9QqTxlOV38fW85jDON9GMXpXsnWOtLb
+ l3exaxHvWYa5f+rLTNN5uvThk2JDrPFOQH3Nld5V/3yBsnv4WcwjXMSlHC6g
+ yHDiO8MLoTldipOWVnszQXPOzNJnFjCwljEsOtzyjTVNVmOG4fHetp3b285Z
+ tpWzsvSNWOSOZW1arGn2LDNm25axZtN2gvYkIXk7ZZDJ2DM8s8yUyMZCT7Wo
+ s2QlbAiGgaovRa3Troto2Yw1Q6EaejxY4ZFv/C44/nr/B3Dlpq98ghZ+zDpD
+ 8dfTg7HtCcu7UoqoEnClBLm5pbATeWLRNwVGuxQrh+gxAwtJIxESNBIppGm/
+ RZ7BqStkJgu5Xdg7RjzcpjVNcBpZ3CE7vx+CEyjQPtc9zdB+1+DMiELGKAaP
+ 4j15BG9/D+/Q33iHcYrSDe9Et4tjiY84s4dzSbaLyzvx0xv2HIUBA8Rc6OFL
+ 4F58ShrF6SO4H9/oJsq0PyD8ColydRUJFyUXEy4mcc3FddxwMQVnFUxhGjOr
+ SCsMK8wqDCoMKRQUUt8ADl3qEW8FAAA=
+ """
)
@RunWith(JUnit4::class)
@@ -111,7 +111,7 @@
private val BoxWithConstraintsStub = bytecodeStub(
filename = "BoxWithConstraints.kt",
filepath = "androidx/compose/foundation/layout",
- checksum = 0xddc1f733,
+ checksum = 0x12a1c0a0,
source =
"""
package androidx.compose.foundation.layout
@@ -137,67 +137,67 @@
) {}
""".trimIndent(),
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGJ2KM3AZcWllJiXUpSfmVKhl5yfW5BfnKqX
- ll+al5JYkpmfp5eTWJlfWiIk4pRfEZ5ZkuGcn1dcUpSYmVdS7F3CxcvFnJaf
- L8QWklpc4l2ixKDFAAD5174zYwAAAA==
- """,
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuJSSsxLKcrPTKnQS87PLcgvTtVL
+ yy/NS0ksyczP08tJrMwvLRESccqvCM8syXDOzysuKUrMzCsp9i7hEuPiTkos
+ gmkTYvcvyUgt8i5RYtBiAADDkmqHbAAAAA==
+ """,
"""
- androidx/compose/foundation/layout/BoxWithConstraintsKt.class:
- H4sIAAAAAAAA/6VTXU8TQRQ9sy394qsU+SqIKCAgwhZiwkOJiRKJjQWNRYzw
- NGyHsrSdaXZnCbwY/oav/gPfiA+G+OiPMt7ZtlrsA4lusnfunTl77p17z/74
- +fUbgCdYZ9jgsuwpt3xuO6reUL6wj1Ugy1y7Sto1fqECbT9X5+9dfbKlpK89
- 7krtv9JxMIb0KT/jhJIV+/XRqXBoN8KQ6cYzzC0eFKtK11xpn57V7eNAOiaF
- b2+3vLX80j5D41bY5krxn0ouOaoh8m3yd9LV+adhyvluPi+Q2q0LeyuM+VFN
- 5Blmi8qr2KdCHxlC3+ZSKs2b1e0qvRvUaoSKO0pqIXUCKYbpjqtQDcKTvGYX
- pPboe9fx4+hjGHFOhFNtEbzhHq8LAjIsLBb/7m6+Y6dkSCp0gT4MYDCFfqQZ
- xhqeavAK12LHlTfazw4YZm4bAEO2u29zZXHMg5omqdw+wkJ3zabCHsRSsDDG
- MNRm2BGa08g4JbXqZxGSIzMmTqVWjWPR/rlrvBx55TWGD9eX06nry5SVtppL
- b7iMW51vNpe+vsxaObaeSBCQvMj6VDqaHc9EM1YuFlqW6/n+OWYl4qFNvIyb
- BPQrgKTbLq+zKZv/IzgSQZvzxTkJw6dv2uR7FyFgpPvb1Sr1O7qlyoJhsOhK
- sRvUj4S3Z6RoqlQOr+1zzzVxazNZciuS68Ajf/JtU8AFeeb6Lh0/+6NV+hX/
- Pv2tuhuw/pLmTnWHN1oJUiUVeI7Ydk0w0eLY7+LHGk06CvNYmDCjp2iJojzF
- lhnxcqb3CkNfQsAjsjFqfAwjWCZ/tAlBBsMhRRwp3KHzxyE6jpUWPkHrKr1J
- A6fLA+kkUYySb3JttGoYmIp+/ISeSD67fIXxZkqbbAQsEeYegJFYhjiHiTND
- x7kQtEjXALaJzlwhe4hIAZMFTJHF3QKmca+AGdw/BPPxALOHSPro8THnIxPa
- lI95Hw99JHws/AJecgBzcAUAAA==
- """,
+ androidx/compose/foundation/layout/BoxWithConstraintsKt.class:
+ H4sIAAAAAAAA/6VTW08TQRT+Zlt6A7GucrEioqKCqNuiCQ81JkokNhY0FjHK
+ 03Q7lO1lptmdbcqL4W/46j/wzfhgiI/+KOOZbavVPpDoQ89l55vvnDnn6/cf
+ X74CeID7DBtc1nzl1XqOq9odFQjnQIWyxrWnpNPiRyrUzhPVe+Ppw00lA+1z
+ T+rguU6CMWQbvMsJJevOi2pDuPQ1xmCP4xmWV96Vm0q3POk0um3nIJSuKRE4
+ W4OoUFzdY+icCnt4t/xPLVdc1RHFIflr6enio6jkjXE+P5TaawtnM8p5tSWK
+ DNfLyq87DaGrhjBwuJRK8353O0rvhK0WoZKuklpInUKGYXHkKdSD8CVvOSWp
+ fbrvuUESUwwz7qFwmwOCl9znbUFAhlsr5b+nWxz5UjEkdXrAFKZxNoMzyDLM
+ dXzV4XWuxbYn/xg/e8ewdNoCGHLjc1uuiQMetjRJ5fQVlsZ7Nh1OIJGBhTmG
+ c0OGbaE5rYxTUavdjZEcmTFpY0D9Nk1g0WHPM1GeolqB4e3J8WLm5DhjZa2+
+ m4zcvDX6y+WzJ8c5K8/WUykCUhRbX8jGc/N23Lbyiciy/MS3jwkrlYxs6lnS
+ FFhnprY97HF0Mg//R3WkhCHn0x6pI6A7Q/LdowgwM373XpOGHt9UNcFwtuxJ
+ sRO2q8LfNXo0XSqXt/a475l88DFd8eqS69Cn+NKrvopLsusFHh0//i1Y+j/+
+ ffpLen/AzlQ0d5vbvDMokKmo0HfFlmeSiwOOvTF+FGjdcbNK8hfN/im7TVmR
+ cot8cs2e/IxznyLAGtkEDT6BGdyheLYPgY3zEUUSGVyg87sROol7A3yKvGNE
+ Y0WaSQPZNFHMUmxqbQx6mF6Iv/+AiVgxt/YZ8/2SebIxsFRUexpGYjZxnidO
+ m44LEWgV6+S3iM48IbePWAmXSlgo4TIWS7iCpRKu4to+WIDrWN5HOsBEgBsB
+ 7MhmAtwMcCtAKsDKT2vS8Et1BQAA
+ """,
"""
- androidx/compose/foundation/layout/BoxWithConstraintsScope.class:
- H4sIAAAAAAAA/5WSzW7aQBDH/2vA2IYQJ21aQvqdSm0uNUU9tb30Q1WRSCol
- UhOJkzEOLNi7iF0QvfEUfYAe+hA9VCjHPlTVMSUBQSpRazWz89N/dtYz++v3
- j58AXuAxw0tfNPuSN0deIOOeVKF3Lgei6WsuhRf5X+RAe2/l6JTr9jsplO77
- XGh1EshemAVjcDv+0CehaHmfGp0w0FmkGAqtUC/IGSpPD2prVFrIecWwX5P9
- ltcJdSNByvOFkHqqV96R1EeDKCJVjmodcnHKm7rNcLBeofe9y0x/NMvM/z3n
- Y8hbbT0L/dFluFXrSh1x4R2G2qezfMo34mGK+sgSk2VgXUIjnkRl2jWfM3yd
- jEuOUTQcw52MHVrTvZWaecs6L07GFaPMjrddo2SUU2cX39MX30yzlLbSboao
- STS7QC3XJuos0dyU5pfoxpQWluimaye3qzC8XqdT/xg+/T6og8HikMv/P2I7
- nrf4ydqDs+KrqdnxfGRWfPUMdlav/axLkr3jgdA8DqtiyBVvROGb+ZticE7k
- oB+EH3gUMuzOpJ9XhCb1D2kkXybNkIFJrXhIUeKzADEL9gpzrmG5a1h+mVG1
- R1P7APvk60Q3qGqhjlQVm1W4ZLGVmO0qbuAmCRR2cKsOV+G2QlFhV6GkkFEw
- FfYU7ijkFWyFuwqOwj2FnMJ9BesPb1xrKxsEAAA=
- """,
+ androidx/compose/foundation/layout/BoxWithConstraintsScope.class:
+ H4sIAAAAAAAA/5WS3W4SQRTH/7MLy+5C6bZapdTvarQ3LhKv1Bs/YiShNWkT
+ a8LVAlsY2J0hzEDwjqfwAbzwIbwwpJc+lPEs0kKgJphszscv/zNn9pz59fvH
+ TwDP8YjhRSCafcmbI78h455UoX8mB6IZaC6FHwVf5ED7b+TolOv2WymU7gdc
+ aHXSkL0wA8bgdYJhQELR8j/WO2FDZ2Ay5FuhXpAzlJ8cVNfotFDzkmG/Kvst
+ vxPqeoKUHwgh9VSv/COpjwZRRKos9Trk4pQ3dZvhYL1G73oXlcFoVpn7e86H
+ kLfaepYGo4t0q9qVOuLCPwx1QGcFVG/EQ5PmyBLjJAYMrEt8xJOsRFHzGcPX
+ ybjoGgXDNbzJ2KVvGtvmzNv2WWEyLhsldrztGUWjZH4+/546/2ZZxZSd8tJE
+ LaKZBWp7DlF3iWanNLdEN6Y0v0Q3PSe5XZnh1Trj+scLoBnQL2cbi5su/f+e
+ nXg+58drb8+OL1fnxPO92fHlW9hZvfbTLkn2jgdC8zisiCFXvB6Fr+cPi8E9
+ kYN+I3zPo5Bhdyb9tCK0aH5IJUtHOsWQhkWjeEBZ4jMAMRvOCnOvYNkrWG6Z
+ Ubf9qb2Ph+RrRDeoa74Gs4LNCrwKtrBNIa5VcB07JFC4gZs1eAoFhV2FosKe
+ QlrBUrilcFshp+Ao3FFwFe4qZBXuKdh/AAfjFM8gBAAA
+ """,
"""
- androidx/compose/foundation/layout/Constraints.class:
- H4sIAAAAAAAA/5WPz07CQBDGv9mWUot/CooiT6AXWonxYjyoiQkJxAQTMeFU
- aIEVumvYheCNZ/HgQ3gwhKMPZdxyMF7dbH47szO73zdf3x+fAM5xRKhFIp5K
- Hi+CvkxfpEqCgZyJONJcimASvcqZDm6lUHoacaFVHkTwn6N5ZIpiGNz3npO+
- zsMiFIaJbnHR4bEeEayT0wah2BxLPeEiaCU6Mp9GlwSWzi2jThnyBBqbqwXP
- stBE8RnhYrUseazCPOavlp7ZzHc95jJ3UFkt6yykdslnVRZaT+t3e/3mOFXb
- tf1c9rpOCJv/G8lYAsFNf62Xb+Siw/XoT09trAneg5xN+8kdnySE4/ZMaJ4m
- j1zx3iS5FkLqjYJyjA/YyBbZhBwcEzGUNzzAoTmvjGDeVNwurAa2GvAMUciw
- 3cAOdrsghT34XTgKRYWSwv6GOQXnB5/tt/C/AQAA
- """,
+ androidx/compose/foundation/layout/Constraints.class:
+ H4sIAAAAAAAA/5VPy07CQBQ9d1pKKT4KiiJfoBtaiXFjXKiJSROICSZiwqrQ
+ AsNjxjADwR3f4sKPcGEISz/KOLAwbk0mZ859nnO/vj8+AVygTKjGIplKniyC
+ rpy8SJUGPTkTSay5FME4fpUzHdxJofQ05kKrLIjgD+N5bIqiHzx0hmlXZ2ER
+ 8v1UN7ho8UQPCNbpWUQo1EdSj7kIGqmOzdL4isAmc8uo0wZyGwCBRia/4Jso
+ NCw5J1yulkWPlZnH/NXSM4/5rsdc5vbKq2WNhdQs+qzCQut5/W6v3xynYru2
+ n9lM1whh/X93GV/Ghjv59V+6lYsW14M/PdWRJniPcjbtpvd8nBJOmjOh+SR9
+ 4op3xumNEFJvFZRjfMDG9jqbkIFjGMPRFks4Nv+1EcyaituGFSEXwYuQx46h
+ 2I2wh/02SMFHoQ1HoahwoHC4xYyC8wPcDr7hxAEAAA==
+ """,
"""
- androidx/compose/foundation/layout/Dp.class:
- H4sIAAAAAAAA/41Oy07DQAwcb6Ep4ZXykMoHIG6krXrjxENIlYqQQIJDT9tm
- C9sku1V2U4Vbv4sD6pmPQjjlB7Cl8diWZ/z98/kFYIATwrk0SWF1UsVTmy+s
- U/HMliaRXlsTZ/LDlj6+WwQgQjSXS8kz8xY/TuZq6gM0CO1Ran2mTfygvOQ7
- eUUQ+bLBBlRDQKCUR5Wuuy6zpEc4Xa9aoeiIUETMZp31qi+6VC/7hIvRv55i
- I7DSja1etX+/tcb5Qmrj3WXqCeGzLYuputeZIpw9lcbrXL1opyeZujbG+o2a
- a7IntvAXAkcbbOOYa4/VtzmbYzSGCIZoMWKnhnCIXeyNQQ77OBhDOBw6RL/m
- nxtjWQEAAA==
- """
+ androidx/compose/foundation/layout/Dp.class:
+ H4sIAAAAAAAA/41Oy07DQAwcb6GP8GqBSuUDEDfSVr1x4iGkSEVIIMGhp22z
+ hW2S3Sq7qcKt38UB9cxHIZzyA9jSeGzLM/7++fwCMEKXcC5NnFsdl+HMZkvr
+ VDi3hYml19aEqfywhQ/vlg0Qob2QK8kz8xY+Thdq5huoETrjxPpUm/BBecl3
+ 8oogslWNDaiCVgUgUMLzUlddn1k8IHQ362YgeiIQbWbz3mY9FH2qlkPCxfhf
+ n7Ebi3dvbPmq/futNc7nUhvvLhNPCJ5tkc/UvU4V4eypMF5n6kU7PU3VtTHW
+ b9VcnT2xg78QONniMU65Dlh9l7M+QS1CI0IzQgsBU+xF2MfBBORwiKMJhEPb
+ ofMLzHJE/14BAAA=
+ """
)
@Test
diff --git a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/LazyLayoutStateReadInCompositionDetectorTest.kt b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/LazyLayoutStateReadInCompositionDetectorTest.kt
index 3fb5c9a..1fe039d 100644
--- a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/LazyLayoutStateReadInCompositionDetectorTest.kt
+++ b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/LazyLayoutStateReadInCompositionDetectorTest.kt
@@ -37,7 +37,7 @@
private val lazyGridStateStub = bytecodeStub(
filename = "LazyGridState.kt",
filepath = "androidx/compose/foundation/lazy/grid",
- checksum = 0xd5891ae4,
+ checksum = 0x1f30c0f3,
source = """
package androidx.compose.foundation.lazy.grid
@@ -51,59 +51,59 @@
val layoutInfo: LazyGridLayoutInfo get() = object : LazyGridLayoutInfo {}
}
""",
- """
+"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGI2Bijg0uSST8xLKcrPTKnQS87PLcgvTtVL
- yy/NS0ksyczPAzLzhdhCUotLvEuUGLQYAJ1f4slDAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uSST8xLKcrPTKnQS87PLcgvTtVL
+ yy/NS0ksyczPAzLzhdhCUotLvEuUGLQYAAC6oXVDAAAA
""",
"""
androidx/compose/foundation/lazy/grid/LazyGridLayoutInfo.class:
- H4sIAAAAAAAAAJ2OzU7CQBSFzx2UYv0rKgm+hAPEhdGVG02TGhNJ3LAa2ikZ
- KDOGTgm44rlcGNY+lPEW4ws4Nznz3bmTc8/X98cngGt0CDfKZgtnspVM3fzN
- lVrmrrKZ8sZZWaj3tZwsTCYTpkeGRK1d5WObuwBEiKZqqfibncjn8VSnPkCD
- 0E5mzhfGyiftFVupO4KYLxu8k2pp1gICzfh9Zequx5T1CZ3tphWKrghFxJR3
- t5uB6FE9HBBuk/+G5QC8L/obDL3y+mrmCeHQVYtUP5hCEy5fKuvNXL+a0owL
- fW+t8zvvsskJsIffI3C+0zNc8N1n432u5giNGEGMVowDhIw4jHGE4xGoxAlO
- RxAlohLtH5JfRp1/AQAA
+ H4sIAAAAAAAA/52OzU4CMRSFzy3Kz/g3qCT4EhaIC4MrN5pJxphI4oZVmemQ
+ wtAapkPAFc/lwrD2oYx3ML6Avcnpd3ubc8/X98cngBt0CLfKpktn0rVM3OLN
+ FVpmrrSp8sZZmav3jZwuTSpjpkeGWG1c6SObuQaIEM7USvE3O5XPk5lOfAM1
+ QjueO58bK5+0V2yl7ghisarxTqqkVQkINOf3tam6HlPaJ3R222YguiIQIVPW
+ 3W0HokfVcEAYxv8NywF4X/g3GHnl9fXcE4KRK5eJfjC5Jly9lNabhX41hZnk
+ +t5a5/feRZ0T4AC/R+Bir+e45LvPxodc9TFqERoRmhFaCBhxFOEYJ2NQgVOc
+ jSEKhAXaP+1d5AJ/AQAA
""",
"""
androidx/compose/foundation/lazy/grid/LazyGridState$layoutInfo$1.class:
- H4sIAAAAAAAAAKVSTW/TQBB946R1a1zSlo8mfBcCanvATeGAoEJABciSAYlW
- ueS0sbfpNs4ustdVyyl/iRMSB5QzPwoxGxAVx5bLzJu3M7Oz++bHz2/fATzG
- A8ILobPCqOw4Ss3okylltG8qnQmrjI5y8fkkGhQqixJGbxnsWmFlOxcnprKx
- 3jftjg8iLB6KI8HpehB96B/K1PqoEZ6crXfyt6uPGcLsttLKPifU1ta7IXzM
- BahjnlC3B6okvEr+d/RnhKVkaGyudPROWsGlgjlvdFTj7yFnZp0BgYbMHysX
- bTLKOoSVyXg+mIwDr+lt0GQ8FzQn4y1vk9zxFuHpGcc7fT2P8OgcT/PRIiwM
- pD3tRNheWz//HCGu4waL+881D4eWJdgxmSQ0EqXl+2rUl8We6OfMLCcmFXlX
- FMrFf8gw1loWO7koS8nCNV7rNDel0gP+9AOTEYJdUxWpfKNcdutjpa0aya4q
- FZe/1NrY6bAlOvB4BXg1pprA7QT724wipxH7mY2vCL4w8HDHyTclL2CVbfg7
- gaOQfR132QbMeU5htHBvyl7DTbSn9bdwn32HMxa46mIPtRiNGIsxlrDMEJdi
- XMaVHqjEVaz04JUONn8B8d9xtF4DAAA=
+ H4sIAAAAAAAA/6VSTW/TQBB946R1Y1zSlo8mfH8E1PaAm8IBQYWACpAlAxJF
+ ueS0sbfpNs4ustdVyyl/iRMSB5QzPwoxGxAVx5bLzJu3M7Oz++bHz2/fATzC
+ fcJzobPCqOwoSs34kylltGcqnQmrjI5y8fk4GhYqixJGbxjsWmFlJxfHprKx
+ 3jOdrg8iLB2IQ8Hpehi9HxzI1PqoER6frnfyt6uPOcL8ttLKPiPU1tZ7IXws
+ BKijQajbfVUSXib/O/pTwnIyMjZXOnorreBSwZw3Pqzx95AzDWdAoBHzR8pF
+ m4yyLmF1OmkE00ngtbwNmk4WgtZ0suVtkjveIjw55Xgnr+cRHp7haT7ahMWh
+ tCedCNtr62efI8RVXGNx/7nmwciyBDsmk4RmorR8V40HsvgoBjkzK4lJRd4T
+ hXLxHzKMtZbFTi7KUrJwzVc6zU2p9JA/fd9khGDXVEUqXyuX3f5QaavGsqdK
+ xeUvtDZ2NmyJLjxeAV6NmSZwO8H+JqPIacR+buMrgi8MPNxiOz8jz+E22/B3
+ Akch+zrusA2Y85zCaOPujL2C6+jM6m/gHvsuZyxy1fk+ajGaMZZiLGOFIS7E
+ uIhLfVCJy1jtwysdbP0CBEAxIl4DAAA=
""",
"""
androidx/compose/foundation/lazy/grid/LazyGridState.class:
- H4sIAAAAAAAAAKVTS08UQRD+evbJ7CKzKLo8FBVUQGUAJSFKjEqCmWSEBMwm
- htPsbu/a7GyPme4l4Inf4tmDnkg0MRuP/ihj9bDhJQfFOdTj6/qqaqq6f/76
- +h3AY8wyPApkPY5EfdetRe33keJuI+rIeqBFJN0w+LDnNmNRd32yXpGxqQPN
- c2AMznawE1CEbLrr1W1e0zmkGLLLQgr9jCE1NV0pIoOsjTRyDGn9TiiGRf8C
- 9Z4ylJtcr4pY6YpQohpyT/O2J+t8N6nkMYyfE7BZi6MwXG80FNcM/RThB3tR
- R3uyETEsT03/YzPHbOpowo/iprvNdTUOhFRuIGWkE6Zy1yK91glDinp+gd+d
- DI/qTM7nULIxaCa4dNFmc7jCUPJbkQ6FdF9zHRApoOas9k6K7gEzImsEGFiL
- 8F1hvDmy6vMMre7+mG2VLdtyuvu2lTdGnnTmEMxb5e7+gjXHXmZ+fMxajrVR
- clIj1lx6aZX87Eg6n3GyhOVOYfkE6yPMPsIKTtGUXGCmkaHG+eseO4uf3rId
- nljxk/9ZsHNqKbMtSp5eieqcYcAXkq912lUevwmoC4ZBP6oFYSWIhfF74OhG
- R2rR5p7cOez2xfEVYSh6UvJ4JQyU4uTam1EnrvFVYZjDPWblDx7mYdGDMl+a
- hkTvi+Q98lyzO9KZmQPkv5BhYcqsNQHzmCZZPAxAH2zSJRQSxJAf9MhW6tMZ
- Zt8JpnXE7P8Lpn0u8xIGyDPMRdLmrPANg28PcLmLoc9nUhROpCj0Usz0Th3S
- KdxPCtH8k4kMUzsmw108JL1B+FX63WtbSHkoexj2MIJRMjHm4TpubIEpjOPm
- FvoVbIVbClmF24lRUCgqTChzNKlwR+GSwsBv73s6jzkFAAA=
+ H4sIAAAAAAAA/6VTW08TQRT+ZnvfFtiiaLkoKqiAygJKQpQYlQSzSYUETBPD
+ 07ad1qHbWbMzJeATv8VnH/SJRBPT+OiPMp5ZGm7yILgP5/LN+c45e87Mr9/f
+ fgB4glmGx76sR6Go77q1sP0hVNxthB1Z97UIpRv4H/fcZiTqbpms12Rsal/z
+ DBiDs+3v+BQhm+56dZvXdAYJhvSykEI/Z0hMTVcKSCFtI4kMQ1K/F4phsXyJ
+ es8YSk2uV0WkdEUoUQ24p3nbk3W+G1fyGMbPCdisRWEQrDcaimuGPooo+3th
+ R3uyETIsT01fsJljNnU0UQ6jprvNdTXyhVSuL2WoY6Zy10K91gkCinpxid+d
+ DI7qTM5nULQxaCa4dNlmM7jKUCy3Qh0I6b7h2ieST81Z7Z0E3QNmRM4IMLAW
+ 4bvCeHNk1ecZWt39MdsqWbbldPdtK2uMLOnUIZi1St39BWuOvUr9/JS2HGuj
+ 6CRGrLnk0ir56ZFkNuWkCcucwrIxliPMPsLyTsGUXGCmkaHG+eseO4uf3rId
+ nFjx0/9ZsHNqKbMtSp5cCeucYaAsJF/rtKs8eutTFwyD5bDmBxU/EsbvgaMb
+ HalFm3ty57Dbl8dXhKHgScmjlcBXipNrb4adqMZXhWEO95iVv3iYh0UPynxJ
+ GhK9L5L3yXPN7kinZg6Q/UqGhSmS6RjMYppk4TAAOdiki8jHiCE/7JGtxOcz
+ zNwJpnXE7PsHpn0usx8D5BnmImlzlv+OwXcHuNLF0JczKfInUuR7KWZ6pw7p
+ BB7EhWj+8USGqR2T4R4ekd4g/Br97vUtJDyUPAx7GMEomRjzcAM3t8AUxnFr
+ C30KtsJthbTCndjIKxQUJpQ5mlS4q9CvMPAH6p7bvDkFAAA=
"""
)
private val lazyListStateStub = bytecodeStub(
filename = "LazyListState.kt",
filepath = "androidx/compose/foundation/lazy",
- checksum = 0xb9a80c68,
+ checksum = 0x4e68cddf,
source = """
package androidx.compose.foundation.lazy
@@ -117,52 +117,52 @@
val layoutInfo: LazyListLayoutInfo get() = object : LazyListLayoutInfo {}
}
""",
- """
+"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGI2Bijg0uSST8xLKcrPTKnQS87PLcgvTtVL
- yy/NS0ksyczPAzLzhdhCUotLvEuUGLQYAJ1f4slDAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uSST8xLKcrPTKnQS87PLcgvTtVL
+ yy/NS0ksyczPAzLzhdhCUotLvEuUGLQYAAC6oXVDAAAA
""",
"""
androidx/compose/foundation/lazy/LazyListLayoutInfo.class:
- H4sIAAAAAAAAAJ1OTU/CQBB9s9WC9auoJPgnLKCePHkxaVJjIokXTku7NQtl
- 17BbAp74XR4MZ3+UcYrxDziTvHnzkffm6/vjE8ANuoRraYqF1cUqye38zTqV
- lLY2hfTamqSS7+skY8i085lc29qnprQtECGeyqXkC/OaPE2mKvctBIRONrO+
- 0iZ5VF6yirwjiPkyYDtqIGwABJrxfKWbrs+sGBC62007Ej0RiZhZ2dtuhqJP
- zXJIuM3+8Sd7s1X8txh56dXVzBOika0XuXrQlSJcPtfG67l60U5PKnVvjPU7
- WReyOfbwGwLnOzzDBdcBC+9zhmMEKVop2ikOEDHFYYojHI9BDic4HUM4xA6d
- H5nueFN1AQAA
+ H4sIAAAAAAAA/51OTU/CQBB9syiF+lVUEvwTFlBOnryYNKkxkcRLT0u7mIWy
+ a9gtAU/8Lg+Gsz/KOMX4B5xJ3rz5yHvz9f3xCeAWXcKNNMXS6mId53bxZp2K
+ p7YyhfTamriU75s4ZUi186nc2MonZmoDECGayZXkC/MaP01mKvcBGoROOre+
+ 1CZ+VF6yirwjiMWqwXZUQ7sGEGjO87Wuuz6zYkDo7ratUPREKCJm095uOxR9
+ qpdDwij9x5/szVbR32LspVfXc08Ix7Za5upBl4pw9VwZrxfqRTs9KdW9Mdbv
+ ZV2TzXGA3xC42OM5LrkOWPiQs5mhkSBI0ErQRsgURwmOcZKBHE5xlkE4RA6d
+ H25NYfx1AQAA
""",
"""
androidx/compose/foundation/lazy/LazyListState$layoutInfo$1.class:
- H4sIAAAAAAAAAKVSS2/TQBD+xknr1rikLY8mvKEpanuomwLiUEBCFUiWDJUo
- yiWnjb1Nt3F2kb2uWk75S5yQOKCc+VGI2YB43Apcvpn5PK+dz1++fvoM4CHu
- E3aFzgqjstMoNaN3ppTRoal0JqwyOsrF+7MoYUhUaQ+ssLKdizNT2VgfmnbH
- BxEWj8WJ4Ew9iPb7xzK1PmqEB+dum/xs6GOGMPtEaWWfEWrrG90QPuYC1DFP
- qNsjVRKeJv+x8C5hKRkamysdvZJWcJVgzhud1Pge5GDWAQg0ZP5UuWibvaxD
- WJmM54PJOPCa3iZNxnNBczLe8bbJfd4hPDr/Zr/ezNO3/u5BPlqEhYH8rQnh
- 8frGP00PcR03WMM/JmwNLZ97z2SS0EiUlq+rUV8Wb0U/Z2Y5ManIu6JQLv5B
- hrHWstjLRVlKFqnxQqe5KZUe8JWPTEYIDkxVpPKlctmtN5W2aiS7qlRc/lxr
- Y6d7lujAY7n5N5iKAKc/29vsRU4UtjObHxF8YMfDHafXlLyAu4zh9wSOQrZ1
- 3GMMmPOcpGhhdcpew020p/W3sMa2wxkLXHWxh1qMRozFGEtYZheXYlzGlR6o
- xFWs9OCVzm1+A4nVJzVAAwAA
+ H4sIAAAAAAAA/6VSS2/TQBD+xknrxqSkLY8mvB8BtT3UTQFxKCChCiRLhkoU
+ 5ZLTxt6m2zi7yF5XLaf8JU5IHFDO/CjErEE8bgUu38x8ntfO5y9fP30G8BD3
+ CTtCp7lR6UmYmMk7U8jwwJQ6FVYZHWbi/WkYM8SqsPtWWNnNxKkpbaQPTLfn
+ gwhLR+JYcKYehXvDI5lYHzXCgzO3jX829DFHmH+itLLPCLW19X4TPhYC1NEg
+ 1O2hKghP4/9YeIewHI+NzZQOX0kruEow502Oa3wPctBwAAKNmT9RLtpiL+0R
+ VmfTRjCbBl7b26DZdCFoz6bb3ha5z9uER2ff7Nebefrm3z3IR4ewOJK/NSE8
+ Xlv/p+lNXMU11vCPCZtjy+feNakktGKl5etyMpT5WzHMmFmJTSKyvsiVi3+Q
+ zUhrme9moigki9R6oZPMFEqP+MqHJiUE+6bME/lSuezOm1JbNZF9VSguf661
+ sdWeBXrwWG7+DSoR4PRne5O90InCdm7jI4IP7Hi4xThfkedwm7H5PYGjJts6
+ 7jAGzHlOUnRwt2Kv4Dq6Vf0N3GPb44xFrjo/QC1CK8JShGWssIsLES7i0gBU
+ 4DJWB/AK57a/AQF0+xNAAwAA
""",
"""
androidx/compose/foundation/lazy/LazyListState.class:
- H4sIAAAAAAAAAJ1TS08UQRD+evbJ7AKzKLo8FBVUQGUWlGiCMVESkkkGSMBs
- YjjN7vZis7M9ZrqXgCd+i2cPeiLRxGw8+qOM1cOGlxyAOdTj6/qqqqum//z9
- 8QvAC8wxzAWyEUeisefWo/anSHG3GXVkI9Aikm4YfN53fRK+UHpTB5rnwBic
- nWA3oEO57a7Xdnhd55BiyL4WUug3DKnpmWoRGWRtpJFjSOuPQjFU/KuVWmIo
- b3O9ImKlq0KJWsg9zduebPC9pIjHMHFBwGY9jsJwvdlUXDP0U4Qf7Ecd7clm
- xPByeubyfZwQqZlJP4q33R2ua3EgpHIDKSOdkJS7Fum1ThhS1NLVLjkVHpeY
- ms+hZGPIjOz5NVrM4SZDyW9FOhTSXeU6oPiAWrLauylaNzMiawQYWIvwPWG8
- ClmNeYZW92DctsqWbTndA9vKGyNPOnME5q1y92DBqrB3md9fspZjbZSc1KhV
- Sb9aIT87ms5nnCxhuTNYPsH6CLOPsYJTNCUXmGlkuHnxfsfP42fXaoendrp4
- zY06Z1Yx16K86eWowRkGfSH5Wqdd4/H7gBpgGPKjehBWg1gYvweObXSkFm3u
- yd2jRt+e/BMMRU9KHi+HgVKcXHsz6sR1viIMc6THrP7HwzwsejfmS9N86BmR
- fEyea9ZGOjN7iPx3MixMm40mYB4zJItHAeiDTbqEQoIY8tMe2Up9PcfsO8W0
- jpn9l2DaFzIHMEieYS6SNmeFnxj6cIgbXQx/O5eicCpFoZditnfqkE7hSVKI
- 5p9MZITaMRke4RnpDcJv0XVvbyHloexhxMMoxsjEuIc7uLsFpjCBe1voV7AV
- 7itkFR4kRkGhqDCpzNGUwkOFAYXBf29R2u4bBQAA
+ H4sIAAAAAAAA/51TS08UQRD+evY9u8gsii4PRQUVUJkFJZpgTJSEZJIREjCb
+ GE6zu73Y7GyPme4l4Inf4tmDnkg0MRuP/ihj9bDhJQdgDvX4ur6q6qrpP39/
+ /ALwHHMMc4FsxpFo7rqNqPMpUtxtRV3ZDLSIpBsGn/dcn4QvlN7QgeY5MAZn
+ O9gJ6FBuuWv1bd7QOaQYsq+EFPo1Q2p6plZCBlkbaeQY0vqjUAxV/3Kllhgq
+ W1yviFjpmlCiHnJP844nm3w3KeIxTJwTsNGIozBca7UU1wwDFOEHe1FXe7IV
+ MbyYnrl4H8dEambSj+Itd5vrehwIqdxAykgnJOWuRnq1G4YUtXS5S06FRyWm
+ 5nMo2xgyI3t2hRZzuMFQ9tuRDoV033EdUHxALVmdnRStmxlRMAIMrE34rjBe
+ lazmPEO7tz9uWxXLtpzevm3ljZEnnTkE81alt79gVdnbzO8vWcux1stOatSq
+ pl+ukJ8dTeczTpaw3Cksn2AFwuwjrOiUTMkFZhoZbp2/3/Gz+Om12uGJnS5e
+ caPOqVXMtSlvejlqcoZBX0i+2u3Uefw+oAYYhvyoEYS1IBbG74Nj612pRYd7
+ cuew0TfH/wRDyZOSx8thoBQn196IunGDrwjDHOkza//xMA+L3o350jQfekYk
+ H5HnmrWRzsweIP+dDAvTJLMJmMcMydJhAAqwSZdRTBBDftInW6mvZ5iFE0zr
+ iDlwAaZ9LvMaBskzzEXS5qz4E0MfDnC9h+FvZ1IUT6Qo9lPM9k8d0ik8TgrR
+ /JOJjFA7JsNDPCW9TvhNuu6tTaQ8VDyMeBjFGJkY93AbdzbBFCZwdxMDCrbC
+ PYWswv3EKCqUFCaVOZpSeKBwTWHwHwU6zXobBQAA
"""
)
diff --git a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetectorTest.kt b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetectorTest.kt
index 6b70cb7..0eb8d9a 100644
--- a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetectorTest.kt
+++ b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/NonLambdaOffsetModifierDetectorTest.kt
@@ -23,6 +23,7 @@
import com.android.tools.lint.checks.infrastructure.TestFile
import com.android.tools.lint.detector.api.Detector
import com.android.tools.lint.detector.api.Issue
+import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@@ -216,6 +217,7 @@
override fun getIssues(): MutableList<Issue> =
mutableListOf(NonLambdaOffsetModifierDetector.UseOfNonLambdaOverload)
+ @Ignore("b/309832115")
@Test
fun lambdaOffset_simpleUsage_shouldNotWarn() {
lint().files(
@@ -251,6 +253,7 @@
.expectClean()
}
+ @Ignore("b/309832115")
@Test
fun lambdaOffset_withStateUsages_shouldNotWarn() {
lint().files(
@@ -300,6 +303,7 @@
.expectClean()
}
+ @Ignore("b/309832115")
@Test
fun lambdaOffset_withAnimatableUsage_shouldNotWarn() {
lint().files(
@@ -354,6 +358,7 @@
.expectClean()
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingVariableDp_shouldNotWarn() {
lint().files(
@@ -397,6 +402,7 @@
.expectClean()
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingPassedStaticArguments_shouldNotWarn() {
lint().files(
@@ -433,6 +439,7 @@
// State tests
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingStateLocalVariable_shouldWarn() {
lint().files(
@@ -479,6 +486,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingDelegatedStateVariable_shouldWarn() {
lint().files(
@@ -526,6 +534,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingStateReceiver_shouldWarn() {
lint().files(
@@ -584,6 +593,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingTopLevelStateVariables_shouldWarn() {
lint().files(
@@ -630,6 +640,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingClassPropertiesState_shouldWarn() {
lint().files(
@@ -678,6 +689,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingLambdaMethodWithState_shouldWarn() {
lint().files(
@@ -724,6 +736,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingStateArgumentsHoisted_shouldWarn() {
lint().files(
@@ -769,6 +782,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingStateVariableWithSecondaryMethodCallNoStateInSignature_shouldWarn() {
lint().files(
@@ -821,6 +835,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingStateVariableWithSecondaryMethodCallStateInSignature_shouldWarn() {
lint().files(
@@ -874,6 +889,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingDelegatedStateVariableWithComplexExpression_shouldWarn() {
lint().files(
@@ -923,6 +939,7 @@
// Animatable tests
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingAnimatableArgumentsLocalVariable_shouldWarn() {
lint().files(
@@ -968,6 +985,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingAnimatableArgumentsHoisted_shouldWarn() {
lint().files(
@@ -1012,6 +1030,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingAnimatableReceiver_shouldWarn() {
lint().files(
@@ -1071,6 +1090,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingLambdaMethodWithAnimatable_shouldWarn() {
lint().files(
@@ -1118,6 +1138,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingTopLevelAnimatableVariables_shouldWarn() {
lint().files(
@@ -1165,6 +1186,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingClassPropertiesAnimatable_shouldWarn() {
lint().files(
@@ -1214,6 +1236,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingAnimatableVariableWithComplexExpression_shouldWarn() {
lint().files(
@@ -1259,6 +1282,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_animatableVariableWithSecondaryMethodCallNoStateInSignature_shouldWarn() {
lint().files(
@@ -1311,6 +1335,7 @@
)
}
+ @Ignore("b/309832115")
@Test
fun nonLambdaOffset_usingAnimatableArgumentsWithMethodCallStateInSignature_shouldWarn() {
lint().files(
@@ -1365,6 +1390,7 @@
// Non modifier related tests
+ @Ignore("b/309832115")
@Test
fun nonModifierOffset_bytecode_shouldNotWarn() {
lint().files(
@@ -1389,6 +1415,7 @@
.expectClean()
}
+ @Ignore("b/309832115")
@Test
fun nonModifierOffsetKotlin_shouldNotWarn() {
lint().files(
diff --git a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/UnrememberedMutableInteractionSourceDetectorTest.kt b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/UnrememberedMutableInteractionSourceDetectorTest.kt
index c59797b..a1a3bf9 100644
--- a/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/UnrememberedMutableInteractionSourceDetectorTest.kt
+++ b/compose/foundation/foundation-lint/src/test/java/androidx/compose/foundation/lint/UnrememberedMutableInteractionSourceDetectorTest.kt
@@ -32,7 +32,7 @@
private val InteractionSourceStub: TestFile = bytecodeStub(
filename = "InteractionSource.kt",
filepath = "androidx/compose/foundation/interaction",
- checksum = 0x7b8a9d44,
+ checksum = 0xac2a176d,
source = """
package androidx.compose.foundation.interaction
@@ -46,54 +46,54 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgsuNST8xLKcrPTKnQS87PLcgvTtVL
- yy/NS0ksyczP08vMK0ktSkwGsYWEPRGc4PzSouRU7xIuNS4JDP1FpXklmbmp
- QlxBqbmpuUmpRUB1fFwsJanFJUJsIUDSu0SJQYsBAEnB5baQAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuNST8xLKcrPTKnQS87PLcgvTtVL
+ yy/NS0ksyczP08vMK0ktSkwGsYWEPRGc4PzSouRU7xIubi6WktTiEiHmeO8S
+ JQYtBgD0QcfwZQAAAA==
""",
"""
androidx/compose/foundation/interaction/InteractionSource.class:
- H4sIAAAAAAAA/52OP0/DMBDF3znQhPAvhVYqX4K0FQvqxIIUqQgJJJZMbuIi
- N4mNYqfq2M/VAXXmQyGcdGBg4yw9/+5Ouve+vnefAO4wJNxzldda5ps409WH
- NiJe6kbl3EqtYqmsqHnWcfLLr7qpM+GDCNGKr3lccvUePy9WIrM+PEJ/Xmhb
- ShU/CcvdLT4jsGrtOVNqJWgFBCrcfCPbbuwonxCG+20QshELWeRoOdpvp2xM
- 7XJKmM3/ndYlcIaDP/PbwhLCAz/KUhBuXhplZSXepJGLUjwopW1nYHouBo5w
- KIbrTq8wcP/EHT92r5fCS+AnCBKcIHSI0wRnOE9BBhe4TMEMIoP+DyYeb+yF
+ H4sIAAAAAAAA/52OP0/DMBDF3znQtOFfCq1UvgRuKxbUiQUpUhESSCyZ3MRF
+ bhIbxW7VsZ+LAXXmQyGcdGBg4yw9/+5Ouve+vj8+AdxiSLgTOq+Nyrc8M9W7
+ sZIvzVrnwimjudJO1iJrOfnlF7OuMxmCCPFKbAQvhX7jT4uVzFyIgNCfF8aV
+ SvNH6YS/JWYEVm0Cb0qN9BoBgQo/36qmG3vKJ4ThfteN2IhFLPa0HO13Uzam
+ ZjklzOb/TusTeMPBn/lN4QjRgR9UKQnXz2vtVCVflVWLUt5rbVxrYDs+Bo5w
+ KIarVi8x8P/EHz/2r5MiSBAm6CboIfKIkwSnOEtBFue4SMEsYov+D8H/p5CF
AQAA
""",
"""
androidx/compose/foundation/interaction/InteractionSourceKt.class:
- H4sIAAAAAAAA/61R30sbQRD+5qIXPW2NP5vE/s6Lvnim+GaRtkrhaJpCW4SS
- p01uK5vc7crdXvAxf1LfBAXJc/8ocTYKPoSCYPdh5pvZb77Znfl7fXEFYA8N
- wr7QcWZUfBb2THpqchn+NoWOhVVGh0pbmYneBEf3+Icpsp78YssgQqUvhiJM
- hD4Jv3X7ssfZEqH6tbCim8ipKsLR1nbroU3/pbJPaLRMdhL2pe1mQuk8FFob
- O1HIw7ax7SJJmHX02E5RepqUMUfw3yut7AGhtLV9vIgACwHmsUj48NgWZTwl
- LLcGxiaKWdIKLhb8eC8dlnhP5MycMyDQwAGPL8+UQ7uM4iZhdTzyg/Eo8Kpe
- 3a+MR3Vvl9zVO8Kn/zHutankzsASZg5NzDtdaikt20XaldlPp0DY/F5oq1LW
- Gqpccerj/X4Iwa3EZ+WotTvq8RQRTXiYwe3Pa5iFz/FLjhrs3Vm4xPyvczwZ
- Y+nPhPSKrc+eB4bXd7jsBoY3E/sCb9k3OVthueUOShFWIqxGWMN6hA08i1BF
- rQPKUcdmB16O2RzPbwCz5fAqMwMAAA==
+ H4sIAAAAAAAA/61R308TQRD+5gpXevwqAtoWRbAv8OJR4xvGqBCSi7UmakhM
+ n7a9lWx7t0vu9hoe+yf5ZqIJ6bN/lHG2kPDQkJDAPsx8M/vNN7szf//9vgTw
+ Gk3CodBxZlR8EfZNem5yGf4whY6FVUaHSluZif4URzf4qymyvvxoyyBCdSBG
+ IkyEPgs/9wayz9kSofapsKKXyJkqwvHefvuuTW9TOSQ02yY7CwfS9jKhdB4K
+ rY2dKuRhx9hOkSTMOr5vpyg9T8pYIPhvlFb2LaG0t3+6hACLASpYIry7b4sy
+ Vghr7aGxiWKWtIKLBT/eS0cl3hM5U3EGBBo64PHlhXLogFHcIqxPxn4wGQde
+ zWv41cm44R2Qu3pF+PAQ496YSb4cWsLckYl5p6ttpWWnSHsy++YUCFtfCm1V
+ ylojlStOvb/ZDyG4kjhRjlq/pp7OENGChzlc/byOefgcb3PUZO/O4h9Uvv/C
+ 8gSrP6ek52x99sACdq5x2Q0Mu1P7DC/YtzhbZbm1LkoRHkVYj7CBzQiP8SRC
+ DfUuKEcDW114OeZzPP0PDZ9NFzMDAAA=
""",
"""
androidx/compose/foundation/interaction/MutableInteractionSource.class:
- H4sIAAAAAAAA/6VQvU7DMBi8L4E2hL8WApSXIG3VBXUBBqRIRUggsXRyExe5
- SWyUOFXHPhcD6sxDIb6UgYEOlRh8Pp/1ne/8+fX+AWCAC8KN0ElhVLIIY5O/
- mVKGU1PpRFhldKi0lYWI1/yhsmKSyehXejZVEcsmiNCaibkIM6Ffw8fJTMa2
- CZdwva33BtNdQnuUGpspflpawVNiSHDyucvRqQavBhAoZX2h6lOXWdIjBKul
- 5zsdp17etLNa9p0u1Xd9wt3ov5U5x3Brk03TwR/xKrUE/4ffq0wSLp8qbVUu
- X1SpOMSt1sau3csGF8EOF2/U/ZmfrTHAOe891vn34I3hRtiL4EfYxwFTHEY4
- wvEYVKKF9hhOiZMSp9/lIS6TDgIAAA==
+ H4sIAAAAAAAA/6VQvU7DMBi8L4E2DX8tBCgvQdqKBXUBBqRIRUggsWRyExe5
+ SW3UOFXHPhcD6sxDIb6EgYEOlRh8Pp/1ne/8+fX+AeAK54QbodO5UekyTMzs
+ zRQynJhSp8Iqo0OlrZyLpOYPpRXjXEa/0rMp54lsggjtqViIMBf6NXwcT2Vi
+ m3AJ19t6bzDdJXRGmbG54qelFTwlhgRntnA5OlXQqgAEylhfqurUY5b2CcF6
+ 5flO16mWN+muVwOnR9XdgHA3+m9lzjHc2mTTdPBHvMwswf/h9yqXhIunUls1
+ ky+qUBziVmtja/eiwUWww8UbVX/mpzUGOOO9zzr/HrwYboRWBD/CHvaZ4iDC
+ IY5iUIE2OjGcAscFTr4BtDhpnA4CAAA=
""",
"""
androidx/compose/foundation/interaction/MutableInteractionSourceImpl.class:
- H4sIAAAAAAAA/61Sy04bMRQ91yGPTgMESiG0PLa0i06KugNVvIQ0UgpSi7Jh
- 5cy4xWTGRjMexDLf0j/oColFFXXJR1VcTyp1wRIWPjrn3Ieur33/9+43gE/Y
- JBxJk+RWJzdhbLMrW6jwuy1NIp22JtTGqVzGFf9SOjlMVfTf+mbLPFZRdpU2
- QYTOpbyWYSrNj/B0eKli10SNsPfU/k3UCY1dbbT7TKhtvRu00UQrwAxeEGbc
- hS4Ix/3nuMYOYaE/si7VnKec5HLJnsiua7wu8tDyAAKN2L/RXvWYJR8Jm5Nx
- EIiuqM5k3BLdyXhb9Oig/udnQ3SET9smHDx5VB5p6ZH5YeR4G4c2UYT5vjbq
- pMyGKj/zHQiLfRvLdCBz7fU/M5hWHmsvVr+WxulMDXShObpvjHXVSAV6ELxs
- foTpzf32Gd+wCisN1N/fIvjFROAtY6MyA6wxtqcJeMnMx9crXMVG9QEJsxyb
- O0ctwnyEToQFLDLFqwhLeH0OKrCMFY4XaBfoFmg9AJ+La3K9AgAA
+ H4sIAAAAAAAA/61Sy04bMRQ91yEPpqEEyiO0ULa0i06KugOhFhDSSGkrFZQN
+ K2fGUJMZG814EMt8S/+AFRILFLHsR6FeT5C66JIufHTOuQ9dX/v34909gE/Y
+ JBxKk+RWJ9dhbLNLW6jwzJYmkU5bE2rjVC7jin8tnRymKvprHdsyj1WUXaZN
+ EKFzIa9kmEpzHn4fXqjYNVEjfH5u/ybqhMauNtrtEWpb7wZtNNEKMINZwoz7
+ qQvCUf9/XGOHsNAfWZdqzlNOcrlkT2RXNV4XeZj1AAKN2L/WXvWYJR8Jm5Nx
+ EIiuqM5k3BLdyXhb9Gi//vCrITrCp20T9p89Ko+09I/5YeR4Gwc2UYT5vjbq
+ W5kNVX7iOxAW+zaW6UDm2usnM5hWHmkv1n6UxulMDXShOfrFGOuqkQr0IHjZ
+ /AjTm/vtM75mFVYaqL+/RXDDROANY6MyA6wztqcJeMHMxzcqXMPb6gMS5jj2
+ 8hS1CPMROhEWsMgUryIsYfkUVGAFqxwv0C7QLdD6A/UGq929AgAA
"""
)
diff --git a/compose/foundation/foundation/api/current.txt b/compose/foundation/foundation/api/current.txt
index f6e6a59..972e769 100644
--- a/compose/foundation/foundation/api/current.txt
+++ b/compose/foundation/foundation/api/current.txt
@@ -1262,6 +1262,7 @@
}
public final class PagerStateKt {
+ method @SuppressCompatibility @androidx.compose.foundation.ExperimentalFoundationApi public static androidx.compose.foundation.pager.PagerState PagerState(optional int currentPage, optional float currentPageOffsetFraction, kotlin.jvm.functions.Function0<java.lang.Integer> pageCount);
method @SuppressCompatibility @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static androidx.compose.foundation.pager.PagerState rememberPagerState(optional int initialPage, optional float initialPageOffsetFraction, kotlin.jvm.functions.Function0<java.lang.Integer> pageCount);
}
diff --git a/compose/foundation/foundation/api/restricted_current.txt b/compose/foundation/foundation/api/restricted_current.txt
index 4ea377e..e802b3d 100644
--- a/compose/foundation/foundation/api/restricted_current.txt
+++ b/compose/foundation/foundation/api/restricted_current.txt
@@ -1264,6 +1264,7 @@
}
public final class PagerStateKt {
+ method @SuppressCompatibility @androidx.compose.foundation.ExperimentalFoundationApi public static androidx.compose.foundation.pager.PagerState PagerState(optional int currentPage, optional float currentPageOffsetFraction, kotlin.jvm.functions.Function0<java.lang.Integer> pageCount);
method @SuppressCompatibility @androidx.compose.foundation.ExperimentalFoundationApi @androidx.compose.runtime.Composable public static androidx.compose.foundation.pager.PagerState rememberPagerState(optional int initialPage, optional float initialPageOffsetFraction, kotlin.jvm.functions.Function0<java.lang.Integer> pageCount);
}
diff --git a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerContentTest.kt b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerContentTest.kt
index d4ca45f..a55a2a4 100644
--- a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerContentTest.kt
+++ b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerContentTest.kt
@@ -129,10 +129,10 @@
@Test
fun scrollableState_isScrollableWhenChangingPages() {
val states = mutableMapOf<Int, ScrollState>()
- val pagerState = PagerStateImpl(
- initialPage = 0,
- initialPageOffsetFraction = 0.0f,
- updatedPageCount = { 2 })
+ val pagerState = PagerState(
+ currentPage = 0,
+ currentPageOffsetFraction = 0.0f,
+ pageCount = { 2 })
rule.setContent {
HorizontalPager(
state = pagerState,
diff --git a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerPinnableContainerTest.kt b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerPinnableContainerTest.kt
index 3de9193..762f095 100644
--- a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerPinnableContainerTest.kt
+++ b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerPinnableContainerTest.kt
@@ -312,10 +312,10 @@
@Test
fun unpinnedWhenPagerStateChanges() {
var state by mutableStateOf(
- PagerStateImpl(
- initialPage = 2,
- initialPageOffsetFraction = 0f,
- updatedPageCount = { 100 })
+ PagerState(
+ currentPage = 2,
+ currentPageOffsetFraction = 0f,
+ pageCount = { 100 })
)
// Arrange.
rule.setContent {
@@ -349,10 +349,10 @@
rule.runOnIdle {
assertThat(composed).contains(2)
- state = PagerStateImpl(
- initialPage = 0,
- initialPageOffsetFraction = 0f,
- updatedPageCount = { 100 })
+ state = PagerState(
+ currentPage = 0,
+ currentPageOffsetFraction = 0f,
+ pageCount = { 100 })
}
rule.waitUntil {
@@ -367,10 +367,10 @@
@Test
fun pinAfterPagerStateChange() {
var state by mutableStateOf(
- PagerStateImpl(
- initialPage = 0,
- initialPageOffsetFraction = 0f,
- updatedPageCount = { 100 })
+ PagerState(
+ currentPage = 0,
+ currentPageOffsetFraction = 0f,
+ pageCount = { 100 })
)
// Arrange.
rule.setContent {
@@ -387,10 +387,10 @@
}
rule.runOnIdle {
- state = PagerStateImpl(
- initialPage = 0,
- initialPageOffsetFraction = 0f,
- updatedPageCount = { 100 })
+ state = PagerState(
+ currentPage = 0,
+ currentPageOffsetFraction = 0f,
+ pageCount = { 100 })
}
rule.runOnIdle {
diff --git a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerStateNonGestureScrollingTest.kt b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerStateNonGestureScrollingTest.kt
index 825ddb5..219d247 100644
--- a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerStateNonGestureScrollingTest.kt
+++ b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerStateNonGestureScrollingTest.kt
@@ -58,7 +58,7 @@
@Test
fun pagerStateNotAttached_shouldReturnDefaultValues_andChangeAfterAttached() = runBlocking {
// Arrange
- val state = PagerStateImpl(5, 0.2f) { DefaultPageCount }
+ val state = PagerState(5, 0.2f) { DefaultPageCount }
Truth.assertThat(state.currentPage).isEqualTo(5)
Truth.assertThat(state.currentPageOffsetFraction).isEqualTo(0.2f)
@@ -179,9 +179,11 @@
dataset.value.size
}, pageContent = {
val item = dataset.value[it]
- Box(modifier = Modifier
- .fillMaxSize()
- .testTag(item.item))
+ Box(
+ modifier = Modifier
+ .fillMaxSize()
+ .testTag(item.item)
+ )
})
Truth.assertThat(dataset.value[pagerState.currentPage].item).isEqualTo("B")
@@ -382,7 +384,7 @@
fun currentPage_shouldUpdateWithSnapPositionInLayout() {
// snap position is 200dp from edge of Pager
val customSnapPosition = SnapPosition { _, _, _, _, _ ->
- with(rule.density) {
+ with(rule.density) {
200.dp.roundToPx()
}
}
@@ -465,7 +467,7 @@
rule.runOnIdle {
// find page whose offset is closest to the centre
val candidatePage = pagerState.layoutInfo.visiblePagesInfo.fastMaxBy {
- -(abs(it.offset - pagerSize/2))
+ -(abs(it.offset - pagerSize / 2))
}
// check we moved
diff --git a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerTest.kt b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerTest.kt
index 106e684..6aabc08 100644
--- a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerTest.kt
+++ b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/pager/PagerTest.kt
@@ -167,7 +167,7 @@
fun pageCount_readBeforeCompositionIsAccurate() {
// Arrange
val pageCount = mutableStateOf(2)
- val state = PagerStateImpl(0, 0f) { pageCount.value }
+ val state = PagerState(0, 0f) { pageCount.value }
assertThat(state.pageCount).isEqualTo(pageCount.value)
rule.setContent {
HorizontalOrVerticalPager(
@@ -194,7 +194,7 @@
// Arrange
var recomposeCount = 0
val pageCount = mutableStateOf(2)
- val state = PagerStateImpl(0, 0f) { pageCount.value }
+ val state = PagerState(0, 0f) { pageCount.value }
assertThat(state.pageCount).isEqualTo(pageCount.value)
rule.setContent {
@@ -226,7 +226,7 @@
fun pageCountDecreased_currentPageIsAdjustedAccordingly() {
// Arrange
val pageCount = mutableStateOf(5)
- val state = PagerStateImpl(0, 0f) { pageCount.value }
+ val state = PagerState(0, 0f) { pageCount.value }
assertThat(state.pageCount).isEqualTo(pageCount.value)
rule.setContent {
@@ -319,7 +319,7 @@
fun pagerStateChange_flingBehaviorShouldRecreate() {
var previousFlingBehavior: SnapFlingBehavior? = null
var latestFlingBehavior: SnapFlingBehavior? = null
- val stateHolder = mutableStateOf(PagerStateImpl(0, 0.0f) { 10 })
+ val stateHolder = mutableStateOf(PagerState(0, 0.0f) { 10 })
rule.setContent {
HorizontalOrVerticalPager(
modifier = Modifier
@@ -339,7 +339,7 @@
}
rule.runOnIdle {
- stateHolder.value = PagerStateImpl(0, 0.0f) { 20 }
+ stateHolder.value = PagerState(0, 0.0f) { 20 }
}
rule.waitForIdle()
diff --git a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text2/BasicTextField2Test.kt b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text2/BasicTextField2Test.kt
index fc37758..29b37de 100644
--- a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text2/BasicTextField2Test.kt
+++ b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/text2/BasicTextField2Test.kt
@@ -46,11 +46,14 @@
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.key.Key
+import androidx.compose.ui.platform.ClipboardManager
+import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.platform.LocalWindowInfo
import androidx.compose.ui.platform.WindowInfo
import androidx.compose.ui.platform.testTag
+import androidx.compose.ui.semantics.SemanticsActions
import androidx.compose.ui.semantics.SemanticsProperties.TextSelectionRange
import androidx.compose.ui.semantics.getOrNull
import androidx.compose.ui.test.ExperimentalTestApi
@@ -59,9 +62,11 @@
import androidx.compose.ui.test.assertIsNotFocused
import androidx.compose.ui.test.assertTextEquals
import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.longClick
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performKeyInput
+import androidx.compose.ui.test.performSemanticsAction
import androidx.compose.ui.test.performTextInput
import androidx.compose.ui.test.performTextInputSelection
import androidx.compose.ui.test.performTextReplacement
@@ -1150,6 +1155,36 @@
}
}
+ // Regression test for b/311834126
+ @Test
+ fun whenPastingTextThatIncreasesEndOffset_noCrashAndCursorAtEndOfPastedText() {
+ val longText = "Text".repeat(4)
+ val shortText = "Text".repeat(2)
+
+ lateinit var tfs: TextFieldState
+ lateinit var clipboardManager: ClipboardManager
+ inputMethodInterceptor.setTextFieldTestContent {
+ tfs = rememberTextFieldState(shortText)
+ clipboardManager = LocalClipboardManager.current
+ BasicTextField2(
+ state = tfs,
+ modifier = Modifier.testTag(Tag),
+ )
+ }
+ clipboardManager.setText(AnnotatedString(longText))
+ rule.waitForIdle()
+
+ val node = rule.onNodeWithTag(Tag)
+ node.performTouchInput { longClick(center) }
+ rule.waitForIdle()
+
+ node.performSemanticsAction(SemanticsActions.PasteText) { it() }
+ rule.waitForIdle()
+
+ assertThat(tfs.text.toString()).isEqualTo(longText)
+ assertThat(tfs.text.selectionInChars).isEqualTo(TextRange(longText.length))
+ }
+
private fun requestFocus(tag: String) =
rule.onNodeWithTag(tag).requestFocus()
diff --git a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt
index 51379d4..122622c 100644
--- a/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt
+++ b/compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/textfield/TextFieldTest.kt
@@ -66,7 +66,10 @@
import androidx.compose.ui.graphics.Shadow
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.toPixelMap
+import androidx.compose.ui.input.key.Key
import androidx.compose.ui.layout.onGloballyPositioned
+import androidx.compose.ui.platform.ClipboardManager
+import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalFontFamilyResolver
@@ -93,9 +96,11 @@
import androidx.compose.ui.test.isNotFocused
import androidx.compose.ui.test.junit4.StateRestorationTester
import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.longClick
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.performImeAction
+import androidx.compose.ui.test.performKeyInput
import androidx.compose.ui.test.performSemanticsAction
import androidx.compose.ui.test.performTextClearance
import androidx.compose.ui.test.performTextInput
@@ -1479,6 +1484,40 @@
assertThat(actual).isEqualTo(TextRange(0))
}
+ // Regression test for b/311834126
+ @Test
+ fun whenPastingTextThatIncreasesEndOffset_noCrashAndCursorAtEndOfPastedText() {
+ val longText = "Text".repeat(4)
+ val shortText = "Text".repeat(2)
+
+ var tfv by mutableStateOf(TextFieldValue(shortText))
+ lateinit var clipboardManager: ClipboardManager
+ rule.setTextFieldTestContent {
+ clipboardManager = LocalClipboardManager.current
+ BasicTextField(
+ value = tfv,
+ tfv = it },
+ modifier = Modifier.testTag(Tag)
+ )
+ }
+ clipboardManager.setText(AnnotatedString(longText))
+ rule.waitForIdle()
+
+ val node = rule.onNodeWithTag(Tag)
+ node.performTouchInput { longClick(center) }
+ rule.waitForIdle()
+
+ node.performSemanticsAction(SemanticsActions.PasteText) { it() }
+ rule.waitForIdle()
+
+ val expectedTfv = TextFieldValue(
+ text = longText,
+ selection = TextRange(longText.length)
+ )
+ assertThat(tfv.text).isEqualTo(expectedTfv.text)
+ assertThat(tfv.selection).isEqualTo(expectedTfv.selection)
+ }
+
@Test
fun decorationBoxIntrinsics() {
var size: IntSize? = null
@@ -1556,6 +1595,57 @@
rule.onNodeWithTag(decorationTag, true).assertDoesNotExist()
}
+
+ // Regression test for b/311007530
+ @OptIn(ExperimentalTestApi::class)
+ @Test
+ fun whenToggleReadOnly_onEditedTextField_noChangeNorCrash() {
+ val tag = "tag"
+
+ val text = "text"
+ val tfv = TextFieldValue(
+ text = text,
+ selection = TextRange(text.length)
+ )
+
+ val textAfterBackspace = text.run { substring(0, length - 1) }
+ val tfvAfterBackspace = TextFieldValue(
+ text = textAfterBackspace,
+ selection = TextRange(textAfterBackspace.length),
+ )
+
+ var value by mutableStateOf(tfv)
+ var readOnly by mutableStateOf(false)
+ rule.setTextFieldTestContent {
+ BasicTextField(
+ value = value,
+ value = it },
+ readOnly = readOnly,
+ modifier = Modifier.testTag(tag),
+ )
+ }
+ val node = rule.onNodeWithTag(tag)
+ // gain focus and place cursor at end of text
+ node.performTouchInput { click(centerRight - Offset(5f, 0f)) }
+ rule.waitForIdle()
+ assertThat(value.text).isEqualTo(tfv.text)
+ assertThat(value.selection).isEqualTo(tfv.selection)
+
+ node.performKeyInput { keyDown(Key.Backspace) }
+ rule.waitForIdle()
+ assertThat(value.text).isEqualTo(tfvAfterBackspace.text)
+ assertThat(value.selection).isEqualTo(tfvAfterBackspace.selection)
+
+ rule.runOnUiThread { readOnly = true }
+ rule.waitForIdle()
+ assertThat(value.text).isEqualTo(tfvAfterBackspace.text)
+ assertThat(value.selection).isEqualTo(tfvAfterBackspace.selection)
+
+ rule.runOnUiThread { readOnly = false }
+ rule.waitForIdle()
+ assertThat(value.text).isEqualTo(tfvAfterBackspace.text)
+ assertThat(value.selection).isEqualTo(tfvAfterBackspace.selection)
+ }
}
private fun SemanticsNodeInteraction.assertEditableTextEquals(
diff --git a/compose/foundation/foundation/src/androidUnitTest/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt b/compose/foundation/foundation/src/androidUnitTest/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt
index 012152c..591b4d6 100644
--- a/compose/foundation/foundation/src/androidUnitTest/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt
+++ b/compose/foundation/foundation/src/androidUnitTest/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManagerTest.kt
@@ -18,6 +18,7 @@
import androidx.compose.foundation.text.HandleState
import androidx.compose.foundation.text.InternalFoundationTextApi
+import androidx.compose.foundation.text.TextDelegate
import androidx.compose.foundation.text.TextFieldState
import androidx.compose.foundation.text.TextLayoutResultProxy
import androidx.compose.ui.focus.FocusRequester
@@ -63,6 +64,7 @@
@RunWith(JUnit4::class)
class TextFieldSelectionManagerTest {
private val text = "Hello World"
+ private val textAnnotatedString = AnnotatedString(text)
private val density = Density(density = 1f)
private val offsetMapping = OffsetMapping.Identity
private val maxLines = 2
@@ -100,7 +102,7 @@
whenever(layoutResult.layoutInput).thenReturn(
TextLayoutInput(
- text = AnnotatedString(text),
+ text = textAnnotatedString,
style = TextStyle.Default,
placeholders = mock(),
maxLines = maxLines,
@@ -135,8 +137,12 @@
whenever(layoutResultProxy.value).thenReturn(layoutResult)
+ val textDelegate = mock<TextDelegate> {
+ on { this.text }.thenReturn(textAnnotatedString)
+ }
+
state = TextFieldState(
- textDelegate = mock(),
+ textDelegate = textDelegate,
recomposeScope = mock(),
keyboardController = null
)
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
index 25d0931..5781bf4 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
@@ -76,8 +76,8 @@
initialPageOffsetFraction: Float = 0f,
pageCount: () -> Int
): PagerState {
- return rememberSaveable(saver = PagerStateImpl.Saver) {
- PagerStateImpl(
+ return rememberSaveable(saver = DefaultPagerState.Saver) {
+ DefaultPagerState(
initialPage,
initialPageOffsetFraction,
pageCount
@@ -87,12 +87,31 @@
}
}
+/**
+ * Creates a default [PagerState] to be used with a [Pager]
+ *
+ * Please refer to the sample to learn how to use this API.
+ * @sample androidx.compose.foundation.samples.PagerWithStateSample
+ *
+ * @param currentPage The pager that should be shown first.
+ * @param currentPageOffsetFraction The offset of the initial page as a fraction of the page size.
+ * This should vary between -0.5 and 0.5 and indicates how to offset the initial page from the
+ * snapped position.
+ * @param pageCount The amount of pages this Pager will have.
+ */
@ExperimentalFoundationApi
-internal class PagerStateImpl(
- initialPage: Int,
- initialPageOffsetFraction: Float,
+fun PagerState(
+ currentPage: Int = 0,
+ currentPageOffsetFraction: Float = 0f,
+ pageCount: () -> Int
+): PagerState = DefaultPagerState(currentPage, currentPageOffsetFraction, pageCount)
+
+@ExperimentalFoundationApi
+private class DefaultPagerState(
+ currentPage: Int,
+ currentPageOffsetFraction: Float,
updatedPageCount: () -> Int
-) : PagerState(initialPage, initialPageOffsetFraction) {
+) : PagerState(currentPage, currentPageOffsetFraction) {
var pageCountState = mutableStateOf(updatedPageCount)
override val pageCount: Int get() = pageCountState.value.invoke()
@@ -101,7 +120,7 @@
/**
* To keep current page and current page offset saved
*/
- val Saver: Saver<PagerStateImpl, *> = listSaver(
+ val Saver: Saver<DefaultPagerState, *> = listSaver(
save = {
listOf(
it.currentPage,
@@ -110,9 +129,9 @@
)
},
restore = {
- PagerStateImpl(
- initialPage = it[0] as Int,
- initialPageOffsetFraction = it[1] as Float,
+ DefaultPagerState(
+ currentPage = it[0] as Int,
+ currentPageOffsetFraction = it[1] as Float,
updatedPageCount = { it[2] as Int }
)
}
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
index 5213275..0ad563e 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt
@@ -353,7 +353,7 @@
startInputSession(
textInputService,
state,
- value,
+ manager.value,
imeOptions,
offsetMapping
)
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManager.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManager.kt
index e3b7eb4..f7a6ffb 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManager.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/selection/TextFieldSelectionManager.kt
@@ -648,9 +648,17 @@
}
internal fun getHandlePosition(isStartHandle: Boolean): Offset {
+ val textLayoutResult = state?.layoutResult?.value ?: return Offset.Unspecified
+
+ // If layout and value are out of sync, return unspecified.
+ // This will be called again once they are in sync.
+ val transformedText = transformedText ?: return Offset.Unspecified
+ val layoutInputText = textLayoutResult.layoutInput.text.text
+ if (transformedText.text != layoutInputText) return Offset.Unspecified
+
val offset = if (isStartHandle) value.selection.start else value.selection.end
return getSelectionHandleCoordinates(
- textLayoutResult = state?.layoutResult!!.value,
+ textLayoutResult = textLayoutResult,
offset = offsetMapping.originalToTransformed(offset),
isStart = isStartHandle,
areHandlesCrossed = value.selection.reversed
diff --git a/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt b/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
index 1d2a07a..747301d 100644
--- a/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
+++ b/compose/lint/common-test/src/main/java/androidx/compose/lint/test/Stubs.kt
@@ -31,7 +31,7 @@
val Color: TestFile = bytecodeStub(
filename = "Color.kt",
filepath = "androidx/compose/ui/graphics",
- checksum = 0x2a148ced,
+ checksum = 0x143250ca,
source = """
package androidx.compose.ui.graphics
@@ -76,113 +76,112 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcolmZiXUpSfmVKhl5yfW5BfnKqX
- m1iSWpSZmCPE4Zyfk19U7F3Cpc4li1OZXlp+vhBbSGpxCVihDIbC0ky99KLE
- gozM5GIhdrCR3iVKDFoMAMec7K6RAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ TSxJLcpMzBHicM7PyS8q9i7hUueSxalMLy0/X4gtJLW4BKxQBkNhaaZeelFi
+ QUZmcrEQO9hI7xIlBi0GAPW9qnSRAAAA
""",
"""
androidx/compose/ui/graphics/Color$Companion.class:
- H4sIAAAAAAAAAJWWXVMcRRSG3579ZFiW5TNACBpcI2BgAWOiIUbDYpBkSZQQ
- YkTFZnaEgdkZanoWkzvKKv0feu+FV6a8sCi883/4NyxP9ywMjl2roYrunvO+
- Tx+mZ84Z/vjr198AXIPFcJV79cB36s8qlt848IVdaTqVnYAf7DqWqFR91w/K
- VVK45/heDoyhtMcPecXl3k7l4faebYU5pBiytxzPCW8zpCYmNwrIIGsijRxD
- Otx1BMNM7WUSLVCaHTtcdLm1Pz1bv7F1f++x2voew/h/b5RDF0MvtyxbiPLp
- PmXroIBuFEwUUWLoo/gSD/aXA/48TjEQQ6ei4voirp+hm6R/Mj0xc+a/EPmH
- GPopXHN2dhPQYAydqYq8GJGj0Qk82XVCO6bO3ZNSFPFKRLzKUKT4ml2P/aXY
- T3Hlfi1yl6P9lwPb9rT7K0URb0TERHTvi27T1t67FJT/zch/lVQKP7Vd1/8m
- JvpiIpIUU4mY2ShH9Tn3tDmkoPxvRf5r9CdTeJXv2F7IY6Q/Rlqaom5E1Dt0
- /KSsB9wTBzwgOSaHYvKcruiFiL7FMDdR2/dD1/Eqe4eNiuOFduBxt7Jkf82b
- blj1PREGTSv0g1V6h+xgYXLDhCGLoa9sxeJWQ6myNl5qNzqRU2DVDnmdh5xi
- RuMwRUXN5JBhYPsUeubIKzpUoz7H2J/HR/2mMWSYRun4yDTyRnSRH86ffJ8a
- Oj6aN2bZYi5vnPyYNUrG2mgpNWLMpn9/wY6PaGD0KyWT8NxIOp8pZcmSb2fp
- UBaznaVTWQrtLF3KUmxn6VaWUjtLj7L0trP0KUt/O8uAsgy2s1xQlqF2lmFl
- GWlnuagso+0sl0rZk2+NbvkAzUz+5IexWUbry/JhzzN6EZBRbY+h/D9aL71A
- jHprWhYxTbLOGPKnLZAi0ZRRXYGh46xnMeRaFUb9mXoMQ+e5uiFC9Sn6PkTF
- TuhZk6cEKvfMfihT+nWyddccz37QbGzbwTrfdinSW/Mt7m7wwJHXrWBhxfPs
- oOpyIWz6uJiP/GZg2XcdqQ2vNb3QadgbjnDIfMfz/JCHlE9gjqowDflTpBV9
- o+iUvqCrCs1M1s3UL8j/TAsDX9KYjYLYorHQWnfApLkHnSoi4RlySy39Aj0/
- JdjsOTZ9xvbq2IEkm9Oygzp2OMnmteyIjr2UZDu07JiOvZxkTS07rmNfT7Kd
- WvaKjp1MsgUtO6Vjp5Nsl5ad0bFzSbaoZed17NtJtlvLXtex7ybZkpa9qWPf
- S7I9/2bp36EMbrfYaZqNVjG8L4uBKWAwCraSydUHuENaCl+pBy+hIjYxDK4S
- fo5tmr+j+CJ5q5tIrWBpBR/SiLtyWF7BR1jZBBO4h/ubGBMwBWoCWYFVgQcC
- nQIFgYcCHwtMCXwiMC+wJtAr8EhgUGBd4IrAY4ERgQ2B6wJPBMYFPhW4KfBU
- yD0/E5j5G4ru30HxCgAA
+ H4sIAAAAAAAA/5WW3VfcRBiHf5P9JLvA8lmWtmhxrYCFBaytlloti8Vtl1Yp
+ pVZUHLIRAtmEk8lie8fxHP0/9N4LruzxwsPBO/8oj28mC8E4OdqbmeR93mfe
+ zcc72T//+u13ANfRZLjGnabnWs3nVcNt7bvCrLat6rbH93csQ1Rrru16lRoR
+ 7liukwNjKO3yA161ubNdfbS1axp+DimG7G3Lsfw7DKmJyfUiMsjqSCPHkPZ3
+ LMEw03iVQgtUZtv0F21u7E3PNm9uPth9Ipe+zzD+3wvl0M3Qzw3DFKJyuk7F
+ 2C+iF0UdPSgxDFB8iXt7yx5/EZUYiqRTKL2B0Btk6CX0T6cvcs7yL4T5IwyD
+ FG5Y2zsxaTiSzqg0L4bmpfAOPN2xfDOyzl2TJNJ4LTReZ+ih+KrZjPJLUT7F
+ ZfYbYXYlXH/ZM01Hub4k0ngrNCbCa1+026by2gMg898O868RpfAz07bd7yJj
+ IDJCJJ1q6MyGNWovuKOsEQCZ/06Yf51+MoVX+Lbp+DxSBiOlw6R1M7Teo9tP
+ ZM3jjtjnHuHIHInMc1zaC6F9m2FuorHn+rblVHcPWlXL8U3P4XZ1yfyWt22/
+ 5jrC99qG73or9A6Z3sLkug4taIaBihHBzZakQW+80mp0R06FFdPnTe5zimmt
+ gxQ1NQuGrmAAA9uj+HMrOKM7qzXnGDs6PhzUtRFN10rHh7qW18KTfDl/8mNq
+ 5PhwXptli7m8dvJzVitpq+VSalSbTf/xkh0f0sAorJOaG03nM6Us4XwS7pJY
+ T8IFiYtJuFviniTcK3EpCfdJ3J+EByQeTMJDEg8n4QsSjyThssSjSfiixJeS
+ 8OVS9uR7raBn8ic/jc0yejBXggc3z4LHmZH7GEPlf+yl9EYw2izTQVfSFDQO
+ Q/50T6NIOGVkmzN0nW1CDLlOy9CGS5sGQ+FcI5AhNx7a8MPuJfVs16YCsvbM
+ nh+UdJuU1tuwHPNhu7Vlemt8y6ZIf8M1uL3OPSs47wSLdccxvZrNhTDpa6E/
+ dtueYd6zAlZebTu+1TLXLWFR8l3HcX3uUz2BOWqrdPCuU19qwUeH7tLXdFYN
+ Xn6aM1O/In9EBxo2acyGQXxDY7Fz3AWd5j4UZCSQZyg7YOmX6Psl5mbPuekz
+ t1/lDsXdnNIdVrnluJtXuqMq93Lc7VK6Yyr3StzVle64yn0z7haU7lWVOxl3
+ i0p3SuVOx91upTujcufibo/SnVe578bdXqV7Q+W+H3dLSveWyv0g7vb926X/
+ Nxnc6bjTNGudZvjwSH4YAmE4DHaKBUcf4S6xFLh88IHUgy9RxpYs+BUMmn+g
+ +CLl1jaQqmOpjo/ruIdlOsQnddRxfwNM4AEaGxgT0AVWBLICDwUeCRQEigKf
+ CnwmMCWwKjAv8FigX2BNYFjgicBVgXWBUYGnAjcEPhcYF3gmcEvgCxGsuSEw
+ 8zddh+AewgoAAA==
""",
"""
androidx/compose/ui/graphics/Color.class:
- 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
- UC9ZO4QPAAA=
+ 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
""",
"""
androidx/compose/ui/graphics/ColorKt.class:
- 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
+ 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
+ WZBopE7xb1ipCXciBgAA
"""
)
val Composable: TestFile = bytecodeStub(
filename = "Composable.kt",
filepath = "androidx/compose/runtime",
- checksum = 0x12c49724,
+ checksum = 0xbcdac3c7,
source = """
package androidx.compose.runtime
@@ -198,31 +197,30 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlkZiXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbKsQVlJqbmpuUWuRdwqXJJYyhrjRTSMgZwk7xzU/JTMsEK+XjYilJ
- LS4RYgsBkt4lSgxaDACMRj6sewAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuaSTMxLKcrPTKnQS0wuySzLLKnU
+ S87PLcgvThViC0ktLvEu4RLl4gYK6aVWJOYW5MCFlRi0GADOEtiIVAAAAA==
""",
"""
androidx/compose/runtime/Composable.class:
- H4sIAAAAAAAAAI1STW/aQBB9ayBQ2ibQT0ia5pu0PdRp1FtPQJwWiS8ZJxLi
- EG3sVeRg7AivaXLjUKn/qYcK9dgfVXUWVKCSpdaW3s7OvNnZeTs/f337DuA9
- 3jDscd8ZBq5zq9vB4CYIhT6MfOkOhF6d7vmlJ9JgDLlrPuK6x/0rvXV5LWyZ
- RoJha+Hlvh9ILt3A18tzM40Uw369H0jP9ZcpjSiUFXES2NFA+FI4Hxg2Y2im
- kBQmi+KpEfciwXAYw1tUXM5YqdSaZbPLsB6TYvHhlZDEWuWeF3wWzswRxt93
- UWCelzk9a1atWqvJkLS6bYNOUstFu2yWG4ZlmAxrbbPVNkyre/HRsKaenXqs
- Yn8JsR3PWe6s9A9KO/Bc+06JVq2XOx0lbmzCvJnd+LjhCXUt6+5GKD2prU+t
- E2p92uhZh3rO/xGrISR3uOTE0wajBA0YU0Dvz/rkunXV7ogs5x1DcTLOZLWC
- ltVyG5kfX7XCZHysHbHKZKwIxwwH9f8YTCoFhocLx9u+ZMh2gmhoi1PXo2Ep
- mrOsczd0ibB4xrBElZCk/BWoT8OrKR7iNa1fkKYfyFD8nkAW9/FAleohKbCK
- NQU5BXkFj/CYuE9m3Kd4hufK7CEhUEBRQV7BOjaQwgvy17BZw0tCbCnYrmEH
- uz2wEHvY70ELcRCi9BuuoX9IqAMAAA==
+ H4sIAAAAAAAA/41SW28SQRT+ZoFCUVuwXqC19k6tJm5tfPMJ6FY34ZZl24Tw
+ 0EzZSbNl2W3YAds3Hkz8Tz4Y4qM/yngGImCyiWaTb7455ztzLnt+/vr2HcB7
+ vGHY477TD1znTu8EvdsgFHp/4Eu3J/Ty5M6vPJEEY8jc8CHXPe5f6/WrG9GR
+ ScQYtuZW7vuB5NINfL04o0kkGPYr3UB6rr8oqQ5CWRKnQWfQE74UzgeGzQiZ
+ JSS5iZE/MeTeQDAcRujmGRcjlkpmrWi1GNYjQmzevxaSVCvc84LPwpkawuh6
+ 5wlmcamz81rZNus1hrjdahj0kjouG0WrWDVsw2JYbVj1hmHZrcuPhj2x7FQi
+ J/bXILajNYudFf4haQSe27lXQytXis2mGm5kwKyZ3Wi/4QlVln1/K9Q8qa1P
+ 9VNqfdLoeZN6zv4ZVlVI7nDJSaf1hjFaMKZgWQEYWJfsd666HRNz3jHkx6NU
+ WstpaS2zkfrxVcuNRyfaMSuNR0pwwnBQ+Y/tpHz0/KO54W1XMqSbwaDfEWeu
+ RxuTt6ZRF27okmD+L8MCZUKc4pdUlcSPJvgKr+n8giR9QIr8ywJpPMBDlaqN
+ uMAKVhVkFGQVPMYaaZ9MtU/xDM8VbSMmkENeQVbBOjaQwAuym9g08dLEFraJ
+ YsfELvbaYCH2cdCGFqIQ4vA3hGOdXq0DAAA=
"""
)
val Composables: TestFile = bytecodeStub(
filename = "Composables.kt",
filepath = "androidx/compose/runtime",
- checksum = 0x92d0959f,
+ checksum = 0x8882d27,
source = """
package androidx.compose.runtime
@@ -251,41 +249,41 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgMuWSSMxLKcrPTKnQS87PLcgvTtUr
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgMuWSSMxLKcrPTKnQS87PLcgvTtUr
Ks0rycxNFeJ1BgskJuWkFnuXCHEFpeam5ialFnmXcPFxsZSkFpcIsYUASe8S
- JQYtBgDjkUhNXwAAAA==
+ JQYtBgAsMUsXXwAAAA==
""",
"""
androidx/compose/runtime/ComposablesKt.class:
- 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
+ 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
- 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
+ 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
- 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
+ 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
- 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
+ U0gCtnxawyPi35L1XeruvX2E6rhdh1pHBet1VHGnTn/nd/fBHHyAD/cx72DZ
+ wUcOIj7NO/jYgehg1cGab7nnQPIFxUH0X0eNH/YRCAAA
"""
)
val Modifier: TestFile = bytecodeStub(
filename = "Modifier.kt",
filepath = "androidx/compose/ui",
- checksum = 0xe49bcfc1,
+ checksum = 0x33b78359,
source = """
package androidx.compose.ui
@@ -308,113 +306,114 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlkZiXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbKsQVlJqbmpuUWuRdwqXJJYyhrjRTSMgZwk7xzU/JTMsEK+XjYilJ
- LS4RYgsBkt4lSgxaDACMRj6sewAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUueSTMxLKcrPTKnQS87PLcgvTtXL
+ TSxJLcpMzBHiCk5OTEvLz0nxLuHi5WJOy88XYgtJLS7xLlFi0GIAADDzNLNQ
+ AAAA
""",
"""
androidx/compose/ui/CombinedModifier.class:
- H4sIAAAAAAAAAKVTWU8TURT+7nRlKFJGyw6iVOmCDCAusQajGJMmBQ0QYoIv
- t+0FbjudITPThkfiT/EX6AOR+GAIj/4o47ltKVpIeTBNz/Lds58zv37/+Alg
- Bc8Zktwuu44sH5klp3boeMKsS3PNqRWlLcrrTlnuSeFGwBjiFd7gpsXtffN9
- sSJKfgQBhsnr/C/9Qgzhl9KW/irDq1Shl3Gu92t6h2G24Lj7ZkX4RZdL2zO5
- bTs+96VD8objb9QtK8cQcuq+cKPQGaarjm9J26w0aqa0CbW5ZeZt3yVvWfIi
- iDEkSgeiVG27f+AurwkyZJhLFbo7zv2FbKkg+1RWDLcwqGMAcUotbVulNhgC
- KfUUwR0dQSSolN7txaBjpA8aRmMwWtI4Q9A/kB7Dw2t9u7eUa9oLm2H1hkmn
- ez8zpHu9J9+KPV63/Hzt0KIRzjB8+r/N3jSZadzXcQ+zarXUIO1mqNBe7Lrw
- eZn7nGrWao0AXTVThM6OVQk6kkpbJKm8xLB9dhzTtVGt9Y8GRs+Ol7VF9iZh
- hOPaOEnEA4qffwlr8eDmrZb28fxzUCH62TFBWhekYi8z9F/Uu1D1GSY267Yv
- ayJvN6Qni5Z4fXmptKU1pywYBgu0vY16rSjcbU42DEbBKXFrh7tS6W0w2R2r
- c6P/BNW3nLpbEu+k8hlr++xcyY4luqwg6LMkbqijI3mJhhQm3kfcUOfXhWnE
- I4gSXyZNEFdjncga/acYmjduE818x3Ame4KxzPwJJr41nR43wwURQ5x+Q0iQ
- Nk7SCuEzrRCYxBTQlFqlKEkVoOEJyQNau4ILOo275KiqeEEmmqoxkz1F8msn
- YbgZpJVkuGXRSRLGgyu9qTQR1mn0aZMu4lkzBX16CGFuF4E8UnmkiSKjSDaP
- eTzaBfOwAHMXIQ9THkY86B4MD9E/kXas0GMFAAA=
+ H4sIAAAAAAAA/6VTWU8TURT+7nRlKFBG2RdBqnRBBhDXGoxiTJoUNECICb7c
+ the47XSGzEwbHok/xV+gD0TigyE8+qOM57ZlsZDyYJqe7Z7znXV+//n5C8Ay
+ sgwJbpdcR5YOzaJTPXA8YdakuepUC9IWpTWnJHelcCNgDPEyr3PT4vae+aFQ
+ FkU/ggDD+E3xl3EhhvAraUt/heF1Mt/JOdv5NbXNMJN33D2zLPyCy6Xtmdy2
+ HZ/70iF53fHXa5ZFLYWcmi/cKHSGyYrjW9I2y/WqKW2y2twyc7bvUrQsehHE
+ GAaK+6JYaYV/5C6vCnJkmE3m2zvOXrFsKpA9KiuGXvTp6EGcUkvbVqkNhkBS
+ PUVwV0cQA1RK5/Zi0DHUBQ3DMRhNaZQh6O9Lj+HhjbHtW8o2/IXNsHLLpFOd
+ nxlSnd4T78Qur1l+rnpg0QinGD7/32Zvm8wk7uuYxoxaLTVIu+nPtxa7Jnxe
+ 4j6nmrVqPUBXzRTpUgQMrEL2Q6m0BZJKiwxbp0cxXRvWmv9oYPj0aElbYG8H
+ jHBcGyWJeEDxs69hLR7c6G1qn86+BJVFPz0ik9ZmUthLDLGrk2HoPu9hvuIz
+ jG3UbF9WRc6uS08WLPHm8nppc6tOSTD05Wmj67VqQbhbnHwYjLxT5NY2d6XS
+ W8ZEO9bF3f4DGsupc1y1uOcJUvVNp+YWxXupIEZaENvXisEiHV+Qphcmbqi7
+ JPkxjTBMvIu4oS60zaYRjyBKfJk0QVwNfSxjdJ+gf864QzT9A4PpzDFG0nPH
+ GPveCHrSgAsihjj9+jFA2ihJT8k+1YTAOCbUNklqlqIkVYCGZyT3aK0Kzukk
+ 7lGgquIluWiqxnTmBIlvFwnDDZBmksGmx0WSMB5c602libCWEsBzojpp0+Sw
+ iBG8aAAvUTqVkr5WhDC7g0AOyRxSOaSRIRFzOTzC/A6YBxMLOwh5mPAw5EH3
+ YHiI/gWbMWV0lgUAAA==
""",
"""
androidx/compose/ui/Modifier$Companion.class:
- H4sIAAAAAAAAAI1SXU8TQRQ9s1u6y1JkQYHyIX5QoYCyQHwwlpBgo7GmVCOE
- xPA03Y4w7XbW7G4bHnnyJ/gD/AUSHzCaGMKjP8p4p1QUTMCHuTP3zDn33rl3
- fvz8+h3AQ6wwzHBVi0JZ2/f8sPkujIXXkt5GWJNvpYhyRcK4kqGywBjcOm9z
- L+Bq13tZrQs/sWAyTF4WwUIPQ3pVKpmsMZj5ue0MLNgOUuhlSCV7MmbIl/+v
- iEJHIRTD2uWSwtzl1wzT5TDa9eoiqUZcqtjjSoUJTyhJ7FXCpNIKAmL1hJQu
- suEyTDXCJJDKq7ebnlSJiBQPvJJKIlJLP7YwxDDs7wm/0ZW/4hFvCiIyzObL
- FztX+AvZ1EF2C7o1NzDs4DpGKN9VL7BX/aDTVgeG7qWTy5Uqm1vrleLTDCaQ
- 6SV4kmGw3C18QyS8xhNOUqPZNmn+TBsaD2sQtC+1t0Sn2jLDo+ODjGNkjdNl
- m/bJezN7fLBiLLEnlm2cfEwbrvFi0DXHCVlJuym9Pz/5kNJ6+lW9ZzNj6Ptd
- 9GIjoQEWw5pgGChLJSqtZlVEW7waEDJUDn0ebPNIar8LTrxuqUQ2RUm1ZSwJ
- Wv8zJ4bcxduznp+jZUpKiagY8DgW5DqbYSvyxTOpE4x1Q2z/Ex7L1MAU6PeC
- uVndUeqPSRh9X0LnyfNoZ7qH80dwDulgYIFsugP24T7ZzCmBPC1n6Mc1CqLF
- q8Q2aLcXhga/YHTh0zl9mvhaP3LK6er1yUWW7h90eQO0L9KyWNexMXZW32hH
- TKV8g/HmCOOfcfOwA5hUOuAQzaAoeZIsdbLP0aOBx4RPUc23dmCWcLuEO2Rx
- V5vpEnK4twMWYwazO+iJkYmRjWHH6I/h/gJ6Cp4UWgQAAA==
+ H4sIAAAAAAAA/41SXU8TQRQ9s1va7bLIggLlQ/ygQgFlofpgLCHBRuOaUo0Q
+ EsPTdDvCtNtZs7tteOTJn+AP8BdIfMBoYgiP/ijj3VJRMEEfeufeM+fce3tm
+ v//48g3AA9xnmOWqHgayvu94QettEAmnLZ2NoC7fSBHmy4RxJQOVAWOwG7zD
+ HZ+rXedFrSG8OAOdYeqyDhn0MaRXpZLxGoNemN+2kIFhIoUsQyrekxFDofJ/
+ S5S6CqEY1i6XlOYvv2aYqQThrtMQcS3kUkUOVyqIeUxDIqcaxNW27xOrL6Bx
+ oQGbYboZxL5UTqPTcqSKRai477gqDkktvSiDYYYRb094zZ78JQ95SxCRYa5Q
+ uehc6Q9kM2myW0qsuYYRE1cxSvP+9Q+MVc/v2mpCS7w083m3urm1Xi0/sTAJ
+ K0vwFMNQpbf4hoh5ncecpFqro9P7syRkkwAG1iR8XybVMmX1FYaHxweWqeW0
+ 05+hGyfv9NzxQVFbZo8zhnbyIa3Z2vMhW58gpJi2U8n57OR9KtEXGbJnD8fQ
+ /2vzpWZMr1gO6oJhsCKVqLZbNRFu8ZpPyHAl8Li/zUOZ1D1w8lVbxbIlXNWR
+ kSRo/fdjMeQv3p4Zf45muUqJsOzzKBJUmptBO/TEU5kMGO+12P6rPVbIxRTZ
+ kwazc4mt5I9OGH3DhC5S5STm0dm3cATzkBINdymmu2A/7lG0TglUWV2vB3CF
+ miTiVWJrdBqLw0OfMbb48Zw+TfxEP3rK6emTzEaO7pd6vMHuGkCG9QoD42f7
+ jXXFtMpXaK+PMPEJ1w+7gI5liibRNOoyT5KV7vQFFOl8RPg07XxjB7qLmy5u
+ ubiNGUqRd3EHsztgEeZQ2EFfBCtCLoIRYSCC/RM2YumyXwQAAA==
""",
"""
androidx/compose/ui/Modifier$DefaultImpls.class:
- H4sIAAAAAAAAAKVSXU8TQRQ9swW2LUVKEbCCoFKlLcqi8a1GYzAmG9tqrGli
- 9GW6HWDa3RmyO9vwi/TV+KLRxPjsjzLehRUQTX1wk71zz/04M/fj+4/PXwHc
- w12GGlf9UMv+oePp4EBHwoml09J9uStFWHksdnnsGzc48CMbjKE44CPu+Fzt
- Oc96A+EZGxmGCbMvFMObanMcW2O8tzbezbDe1OGeMxCmF3KpIocrpQ03UpPe
- 1qYd+37j6C0yyiLLsDrUxpfKGYwCRyojQsV9x1UmpGTpUT15hgVvX3jDNPs5
- D3kgKJBho9o8X2njjKWTkOw1at0CCpjJYxoXGCY1tSHMosiwMq4UGyWG3A45
- uKLHM4xvW+UkslHARSzkMI9Fhsrfcii0J5Xon151iWHqvlTSPGB4+H/zoWIv
- YzmPMlaouf+a1lwzbX9LGN7nhpPNCkYZWjyWiEkGNkwU2h/rUCbaNkPh7MYx
- TP8i3BoaGu2O7guGmY7h3rDFD17ynk94tkklt+OgJ8LUUmpqj/tdHsoEp8bl
- F7EyMhCuGslIkunR6f5QO897T5bht7CCq5QId3weRYJgvqPj0BNPZHJBOaXo
- /kGPO7AwgeSjyWMSU8igRkiQ1aKzUi/lPmF2szSXyA9Yegu7/g6zX1B+Vd/8
- iCvfMP8+6RXqJG1YS09tWoNNAlNEWSDTLdIXj8mQxerRZRUUSWO4ncbZdG7R
- P2Ol4Fhm4JDME7KIdIMGvE3YQpXejSOCNYq5+hoZF9dcXCeJdZfYb7i4+RNB
- PoFzTQQAAA==
+ H4sIAAAAAAAA/6VS308TQRD+9gq9thShVUAE8QcVWqqcP3ir0Zgak4stGjFN
+ jCZme13abe92yd224S/SV+OLRhPjs3+UcQ5OQDTVxIebm/lmdnbnm+/b909f
+ AGxhi6HCVSfUsrPveDrY05FwhtJp6o7clSIsPRS7fOgbN9jzIxuMYbbPR9zx
+ ueo6T9p94RkbKYYJ0xOK4VW5Ma5bbXy2Mj7NsNrQYdfpC9MOuVSRw5XShhup
+ yd/WZnvo+1Q1qekxYQYZhpWBNr5UTn8UOFIZESruO64yIZ2WHg2UY5jzesIb
+ JMef8pAHggoZ1suN06PWTiA7cZNurdLKI4/pHKZwhmF53AA2ZhmydUpwRU9m
+ GE9W6aiylkcRZ7Mo4BxD6U9nqLQtlegcXzXPkL4rlTT3GO7/31ZowvNYzGEB
+ F4jckunJiJj9264KjYT7pjC8ww0nzApGKZIdi002NmBgg9ghCVn7MvZuMqz9
+ Gy021hnyJwXKMPWzbHNgSJV13REM0zuGe4Mm33vO2z7FMw3iansYtEWYIMWG
+ 9rjf4qGM4wRcejZURgbCVSMZSYIeHMuN9nA6eySdX8ryrlIirPs8igSFuR09
+ DD3xSMYXLCYtWr+1xy1YmMAhQ1lMIo0UqhS9JtSi/0q1mP2Imep7zL2BvfEW
+ M5+x8GKj+gFLX1F4FzOK62RtWIXHNinnBgVpapYmaJP8+cM2WMbFg2tWkCGP
+ wUnq7HgV9E1bSXBoU/QykBotlKlpEYvkFVCh/23CLWzgzkEzEgjVXnqJlIvL
+ Lq64uIpVFyVcc7H2Ayw1Nq9+BAAA
""",
"""
androidx/compose/ui/Modifier$Element$DefaultImpls.class:
- H4sIAAAAAAAAAKVSS2/TQBD+Ni8nqUvTlBRKS3k0tHlATSVuOaECkiU3IIpy
- gcvG2aab2LuVvYn6szhWHBBnfhRinBpoixQiYcmz8/hmZveb+f7jy1cAL/Cc
- 4YCrQaTl4NzxdXimY+FMpHOkB/JEiqj+OhChUKb+SpzwSWDc8CyILTCGyohP
- uRNwNXTe9kfCNxayDDlzKhTDoOEtUrUzF9Vpzg8z7Hg6GjojYfoRlyp2uFLa
- cCM16V1tupMg6MzuJOMiigzbY20CqZzRNHSkMiJSPHBcZSJKlj69q8xQ80+F
- P06z3/GIh4KADHsN7+aLO1c8x0mRYafZs2FjuYwl3GLIa6IjKqLCsDXvKRaq
- DM25jF3n/zbDp/kU/x+1NvJYL6OGOwy7i42S2P3XuFa9lP8jYfiAG06+TDjN
- 0iayROQZ2DhRaJEy5zLRaD/ri7S3sMNgXyWJwUpjDEu/4PtjsnKHeiAYVjyp
- RHcS9kX0gfcD8lQ97fOgxyOZ2Klz8/1EGRkKV01lLMn18s+S0eVuRn9vzDWY
- 7SolosOAx7Egs3ysJ5Ev3sikwUZaovdXeRwggxySj6FEIykgiwZZLvkzdNZa
- 1dIFVtrVVZKtb1hrX+DuZwpk0CRZoDSbElukr18moIiNWcEaKrhH8XaKs+h8
- Sv9yJjUuZRbPSFZn/ep4Qsl1rGG3UML+rM0eHDq3Cb1J2K2PyLq472KbJB64
- eIhHLh7/BG04LjBuBAAA
+ H4sIAAAAAAAA/6VSXW8SQRQ9A5QFSqVQW62t9aO0haJdm/jGk0FNNqFoWsOL
+ vgzLFAZ2Z5rdWdKf5WPjg/HZH2W8C6u2NUESH/Z+nHvu3Zkz9/uPL18BvMQL
+ hmOu+oGW/Uvb1f6FDoUdSftE9+W5FEH1jSd8oUz1tTjnkWcc/8ILLTCG1RGf
+ cNvjamC/642EayykGTJmKBRDv9ZeZGpzLqtZn19m2G3rYGCPhOkFXKrQ5kpp
+ w43UFHe06USeR6wlTYcKcsgx7Iy18aSyRxPflsqIQHHPdpQJqFu6dLECw7o7
+ FO44aX/PA+4LIjIc1Nq3r9y8hpzFQwbNereIIlYKWMYdhu15F7CwylCfq9NN
+ 1SsMn+YL+3+CFrGEuwWsYZ1Eq5qhDBn2F3tIkvZfj1VuJ+KfCMP73HDCUv4k
+ TXvIYpOPDRjYOA5ol1KXMo5oRYvXdWCoLnIkC1UGK0kYln/Vj8aUZVq6LxhK
+ balEJ/J7IvjAex4hlbZ2udflgYzzBNw6jZSRvnDURIaSoFd/9oxOc7v6e2du
+ 0IqOUiJoeTwMBaWFMx0Frngr4x9sJiO6f43HMVLIYKZMnt4nizRqlLUIT5Ev
+ NSr5K5QOv6HcuMLGZ4JSqJPNUkOWWg4p3phRcQ/3p6NKyGGT6o2EZ5F/Rt9K
+ KklmNo3nZB+QX0MZu9SyR34/m6dxe9P8aPq7A9jkd6gr5m59RNrBtoOHDmGP
+ HDzGEwdPfwJuilgecwQAAA==
""",
"""
androidx/compose/ui/Modifier$Element.class:
- H4sIAAAAAAAAAI1QTU8CMRB9s6ssXyogKqjxRDy6QLx5Mn4km0BMNPHCqbDF
- VHZbst0lHPldHgxnf5RxNtHEE6HJvL5586ad9uv74xPANc4IHaHDxKhw6U9M
- PDdW+pnyhyZUUyWTzkMkY6lTD0SovYuF8COh3/yn8bucsOoSzjf1e9gl1Acz
- k0ZK+0OZilCk4obgxAuXJ6Ac2EIzlpYqz7rMwh6huV4Vy07LyaM4ba1XfadL
- ea1PuBxsMzRfc7HRyIbeNgd17uVUZFEaxPPIejgkVP8rBO/XSKj89V7NOKsG
- WsvkLhLWSraVX0yWTOSjiiSh/ZzpVMXyVVk1juSt1iYVqTLaFviV2AGhgHy5
- aDE2WGtyHKHNWMBxocQMzE9wynuP/fzbKI7gBigFKDOikkM1wB72RyCLA9RG
- cCzqFo0fJIqRGAUCAAA=
+ H4sIAAAAAAAA/42QTU/CQBCG32mVUkAFRAUlnohHC8SbJ+NH0gRiookXTgtd
+ zEK7Jd2WcOR3eTCc/VHGaaKJJ8JhZ2efeedj5+v74xPADdqEjtBBEqtg5U3i
+ aBEb6WXKG8aBmiqZdB5DGUmdOiBCdSaWwguFfveexzM5YWoT2tvyHewTaoN5
+ nIZKe0OZikCk4pZgRUubJ6DcuLkBgebMVyp/ddkLeoTGZl0sWU0rP8Vpc7Pu
+ W13KY33C1WCXybnX5VYhC5xfLaG3S8nOg5yKLEz9aBEaByeEyn9CKP9lXM+5
+ ZsXXWib3oTBGcrD0GmfJRD6pUBJaL5lOVSTflFHjUN5pHaciVbE2Bf4l9ngr
+ hXw5sNFiW2dmMWkUXJyyd8b0nLmFJi747rGeV47iCLYP10fJR5kHgIsDH4c4
+ GoEMqqiNYBnUDY5/AJ5HRJ4KAgAA
""",
"""
androidx/compose/ui/Modifier.class:
- H4sIAAAAAAAAAIVSS2/TQBD+ZuPESRogoTzSB6XQUBJeLhVcKFSqQhFGbUAU
- 9dLTNtmUbZ115d1EPeZX8D+AGwcUceRHIcZVoRSkYMvzzXwzOzOe2e8/vnwF
- 8Aj3CbPSdJJYd46Cdtw7jK0K+jrYjDu6q1XigwjlfTmQQSTNXvB6d1+1nY8M
- wXPvlSGs1jfGJVhpjHcTFjbiZC/YV243kdrYQBoTO+l0zHordq1+FHFU/mk7
- 0ka7VUKm3tgmLI5LW2syJw3n8FEkFGu1sLX1bq3VXCeM7/f05EoJJZwrYALn
- CYXfdAnllBWoECobB7HjtoJN5WRHOsmNit4gw6OlVGQJdMDUkU6tJdY6DwmP
- R8NSUVRFUZRHw6LIe/ludTSc95bFEj0RXvZVpSymxdJouJwrZ46Vl98+eOnh
- ZcLc/8YJQjbm1SQEfz1SPWUcoTb2l0/CfNwgNMZGPldd2Y9c2DuMrI8FQulP
- hjDxK/LBAVededs3TvdUaAba6t1IrZ2ulnv62/tGJrKnnErOhHnNuKO4UGiM
- SpqRtFYxW9yK+0lbvdAR+6ZOMm3/UyXHU4OXrgNT6d4Yb7OVY/QZBU81y5Y4
- w9b58+nEyPNbYL3B+iRj+vifcOEzLn48NjK4w3Ka8Sbnmc+lF0ZwrSnUGG8x
- 3k0rYRH3GJ9xikmueWkHmRCXQ1xhiaupqIYcO70DspjB7A5yFtcs5iyyFtct
- yhbzPwFNAZX3twMAAA==
+ H4sIAAAAAAAA/4VRTW/TQBB94zhxkgZwKB/9orQ0lIaPulRwoVCpCkUYpQFR
+ 1EtOm2RbtnXWlXcT9Zhfwf8AbhxQxJEfhRhHhVKQgi3vm3m7+9545vuPL18B
+ PMIqYU7oThKrzknQjrvHsZFBTwU7cUftK5l4IIJ/KPoiiIQ+CF63DmXbesgQ
+ XPteasLmSn2cwEZ1/DZhqR4nB8GhtK1EKG0CoXVshVUxx43YNnpRxKfyT9uR
+ 0spuEjIr1T3C8jjZSo05oVnDQ5FQrFTCxu67rUZtmzC+3rObGyWUcKGACVwk
+ FH7TJfgp66BMKNePYstlBTvSio6wggt1uv0Mt5bSpZAuINAR8ycqzdY46jwk
+ PB4OSkVnyik6/nBQdPJufn9qOFhw1501euK42Vdl35lx1oaD9ZyfGQUvv31w
+ 08vrhPn/9ZQ9szHPJyF425HsSm0J1bH//Vzui15kw+5xZDzcIpT+ZAiVsbdP
+ TTzcJkz8YleP2HX2bU9b1ZWh7iujWpHcOpsvq/69+0YkoiutTM4dc2txR3JJ
+ odYyqUXCGMlscTfuJW35QkW8N32qtPePS467Bnc0iOl0eIwrnOUYPUaHu5rl
+ zDnHVvnz6DTJ81vg+C7Hk4zp433Cpc+4/HGUZHCP1xnGCdbx2WeJscK4zLiY
+ K+B+6oQ7eMD4jCUm2fNKE5kQV0NcC3EdUxxiOmSV2SbIYA43msgZzBvcNMga
+ LBj4Bos/AU5gqBi8AwAA
"""
)
val PaddingValues: TestFile = bytecodeStub(
filename = "Padding.kt",
filepath = "androidx/compose/foundation/layout",
- checksum = 0xeedd3f96,
+ checksum = 0x393214e7,
"""
package androidx.compose.foundation.layout
@@ -426,18 +425,18 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGI2BijgUueSTMxLKcrPTKnQS87PLcgvTtXL
- TSxJLcpMzBHiCk5OTEvLz0nxLuHi5WJOy88XYgtJLS7xLlFi0GIAACJwI+tQ
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUueSTMxLKcrPTKnQS87PLcgvTtXL
+ TSxJLcpMzBHiCk5OTEvLz0nxLuHi5WJOy88XYgtJLS7xLlFi0GIAADDzNLNQ
AAAA
""",
"""
androidx/compose/foundation/layout/PaddingValues.class:
- H4sIAAAAAAAAAJVOTUvDQBB9s9Gkxq9ULdQ/YdrizZMXIVBRFHrJaZtsyzbp
- rnQ3pd76uzxIz/4ocVL9A87Amzfz4L35+v74BHCLHmEgTbmyutykhV2+WafS
- mW1MKb22Jq3lu218+izLUpv5RNaNchGIkCzkWrJs5unTdKEKHyEgdMeV9bU2
- 6aPyki3kHUEs1wFnUQthCyBQxfeNbrcBs3JI6O22nVj0RSwSZrP+bjsSA2rF
- EWE0/u+THMw58d/tpvK8vNpmVagHXSvC9UtjvF6qiXZ6Wqt7Y6zfu7mQM3GA
- 3xK43OMFrngO2fKQO8wRZIgydDIcIWaK4wwnOM1BDmc4zyEcEofuD692uKBp
+ H4sIAAAAAAAA/5VOTU/CQBB9syiF+lVUEvwTFog3T15MmmA0mnDpaWkXsrTd
+ NeyWwI3f5cFw9kcZp+gfcCZ582Ze8t58fX98ArhDnzCUJl9ZnW/izFbv1ql4
+ bmuTS6+tiUu5tbWPX2Sea7OYyrJWLgARoqVcS5bNIn6eLVXmA7QIvUlhfalN
+ /KS8ZAt5TxDVusVZ1EC3ARCo4PtGN9uQWT4i9Pe7TigGIhQRs/lgvxuLITXi
+ mDCe/PdJDuac8O92W3he3my9ytSjLhXh5rU2Xldqqp2elerBGOsPbq7NmTjC
+ bwlcHfAS1zxHbHnM3U7RShAk6CToImSKkwSnOEtBDue4SCEcIofeD+cWtEFp
AQAA
"""
)
@@ -445,7 +444,7 @@
val Remember: TestFile = bytecodeStub(
filename = "Remember.kt",
filepath = "androidx/compose/runtime",
- checksum = 0x736631c7,
+ checksum = 0x715f1bc1,
source = """
package androidx.compose.runtime
@@ -482,44 +481,44 @@
): V = calculation()
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuOSSMxLKcrPTKnQS87PLcgvTtUr
- Ks0rycxNFeIKSs1NzU1KLfIu4eLjYilJLS4RYgsBkt4lSgxaDAC9VMzjUAAA
- AA==
- """,
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuOSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIKSs1NzU1KLfIu4RLl4gZK66VWJOYW5KQKsYWkFpd4lygxaDEA
+ ALrkMh5XAAAA
+ """,
"""
- androidx/compose/runtime/RememberKt.class:
- H4sIAAAAAAAA/61WWXPbVBT+rrzJjhfFWUgcCCFL62yV44YCdeoSAqEe3MDU
- HsNMnmRbTeVF6kiyKW8ZXvgNvPILeCw8MJnwxo9iOFeWHW9JXdIHXZ17dO53
- vnO/u+iff//8C8A+vmRYU/SqaWjVV3LFaL40LFU2W7qtNVX5mdpUm2XV/MYO
- gDFINaWtyA1FP5O/LdfUCnk9DKLpRjHsJ/N1w25oulxrN+XnLb1ia4Zuyceu
- lcps5ocxMgyHB8WHo/7sm8AOtovFTDazSS3DRv7aKo6cvlJuqBS3ljfMM7mm
- 2mVT0QhN0XXDVjrIJ4Z90mo0KGqqojQqrYbjFxFiWO6joum2aupKQ87ptkkY
- WsUKIMwwV3mhVuouyHeKqTRVm8/K3eRocX2eAgc5y2yWwogiFkIE0mC+MaUH
- EGfwa3rbqKsMs8kx0xrGLOamMIN5hsi6tv58/UonlmNYeZNUDMfjiP8fgQvX
- Cfy28AOSr98kJUngKu6tqz/tMcTHEfvhZmluU7M6ec23mgVeXpqhNhnwu6nt
- x9vUdutq7zN8nTx9R6UUD0pjS3l7fOJZcniWMs7efNmyLRFJhpkxWAzTXbin
- qq1UFVshn9Bse+hUZrwReQPaq3VuCPTxlcatFFnVPcZeXJwnQoLoCQkLAr3p
- kS7OyQiQMR2ijxvUTwhP2KpXvDiXWDosCQkx7o2TK+V5cvmL+PdrdnF++Ztf
- kLyJvaFgUfIlvAss5U9HRe/1AwOJzLUDRUmcBCKY+GoCCFEKTQI2lXjcAQt3
- wMLpeSmSCMdFkcWd4ano6ihMeBgmdvmzEAj5xMtf0ynG55s2GCvyM8TVrP+U
- 5BqV6MroXpb36jat0yOjSidzLK/p6kmLu4v8OOIQBt0tJcXUeN91Bgvama7Y
- LZPspWedayuntzVLo8+HV8canXnDX3v3zEBYqGC0zIp6rHH0RXdMaQQPexDg
- 5esMPizS46feAfWOyC/QO7YVn3qNac/B1h94j+F3vhLxiFo/VS0igCzZ8+Tj
- 9gJBMD4IISTo/diJDuDzXjxwSE+AJgxBMnjGJTfjUwrlyzu23cn4aHtsxoiT
- cYVCuxkdmljGh04ZndzMzf3+SO6IQJ0PnI3VZbDiMvjenYvYTodBdmcsg1mH
- wRaFdhl4hhisknU1D4LL5aMRLjOeHpdBRmsuozIN89Fb2u0weuDdHUMpSGVm
- nX85H9kdSrwOqUdJ6lGSsEGW4FicnMcltz5CbtE7RG6Q4h2XYsGVbW4rvkkU
- bxIvSiy64kX7xJtDkqYTjtUv3t3x4gV7PAR84bQZWq7AKXm3idnOKTw57OZw
- LwcZqRyt8XQO97FPARY+xoNTSBZ8Fj6xELLwqQW/hWULn1lYsrBqYcXChoU1
- Cw8tJB3/nf8A7cabHS4LAAA=
+ androidx/compose/runtime/RememberKt.class:
+ H4sIAAAAAAAA/61WS3PbVBT+rvySHT8U50HiQAh5tM6rctxQoHZdQiDUgxuY
+ 2mOYyUq21VR+SB1JNmWXYcNvYMsvYFlYMJmw40cxnCvLjmM7qUu60NW5R+d+
+ 5zv3uw/98++ffwHYx5cMa4peMw2t9kquGq2XhqXKZlu3tZYqP1Nbaquimt/Y
+ ATAGqa50FLmp6Kfyt5W6WiWvh0E03SiG/WShYdhNTZfrnZb8vK1Xbc3QLfnI
+ tVKZzcIwRobhIFt6OOrPvQksu10qZXKZTWoZNgrXVnHo9JVKU6W4tYJhnsp1
+ 1a6YikZoiq4bttJFPjbs43azSVFTVaVZbTcdv4gQw/IAFU23VVNXmnJet03C
+ 0KpWAGGGueoLtdpwQb5TTKWl2nxW7iZHixvwFDnIaWazHEYUsRAikK7mG1N6
+ AHEGv6Z3jIbKMJscM61hzGJuCjOYZ4isa+vP1y91YnmGlTdJxXA0jvj/Ebh4
+ ncBvC39F8vWbpCQJXMW9DfWnPYb4OGI/3CzNbWpWJ6/5VrPAy0sz1CcDfje1
+ /Xib2m5d7X2Gr5Mn76iUUrY8tpS3xyeeZYdnOePszZdt2xKRZJgZg8Uw3YN7
+ qtpKTbEV8gmtjodOZcabIG9Ae7XBDYE+vtK4lSKrtsfYi/OzREgQPSFhQaA3
+ PdL5GRkBMqZD9HGD+gnhCVv1iudnEkuHJSEhxr1xcqU8Ty5+Ef9+zc7PLn7z
+ C5I3sTcULEq+hHeBpfzpqOi9fmAgkbl2oCiJk0AEE19NACFKoUnAphKPu2Dh
+ Llg4PS9FEuG4KLK4MzwVXR2FCQ/DxC5+FgIhn3jxazrF+HzTBmMlfoa4mg2e
+ klyjMl0ZvcvyXsOmdXpo1OhkjhU0XT1uc3eJH0ccwqC7payYGu+7zmBRO9UV
+ u22SvfSse23l9Y5mafT54PJYozNv+Gv/nrkSFioabbOqHmkcfdEdUx7Bwx4E
+ ePk6gw+L9Pipl6XeIfkFese24lOvMe3Jbv2B9xh+5ysRj6j1U9UiAsiRPU8+
+ bi8QBOODEEKC3o+d6AA+78cDB/QEaMIQJINnXHIzPqVQvrxj292Mj7bHZow4
+ GVcotJfRoYllfOiU0c3N3Nzvj+SOCNT5wNlYPQYrLoPv3bmI7XQZ5HbGMph1
+ GGxRaI+BZ4jBKlmX8yC4XD4a4TLj6XO5ymjNZVShYT56S7tdRg+8u2MoBanM
+ nPMv5yO7S4nXIfUpSX1KEjbIEhyLk/O45NZHyC16h8hdpXjHpVh0ZZvbim8S
+ xZvEixKLnnjRAfHmkKTphGMNind3vHjBPg8BXzhthpYrcELebWK2cwJPHrt5
+ 3MtDRipPazydx33sU4CFj/HgBJIFn4VPLIQsfGrBb2HZwmcWliysWlixsGFh
+ zcJDC0nHf+c//GYG8S4LAAA=
"""
)
val StateFactoryMarker: TestFile = bytecodeStub(
filename = "StateFactoryMarker.kt",
filepath = "androidx/compose/runtime/snapshots",
- checksum = 0x79ef0e9d,
+ checksum = 0x2ecf44e1,
source = """
package androidx.compose.runtime.snapshots
@@ -529,31 +528,31 @@
annotation class StateFactoryMarker
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgMueSSMxLKcrPTKnQS87PLcgvTtUr
- Ks0rycxNFeIKSs1NzU1KLfIuEeIPzkssKM7ILwkuSSxJ9S7hUuOSwaVRLy0/
- X4gtJLW4xLtEiUGLAQDM+x9weQAAAA==
- """,
- """
- androidx/compose/runtime/snapshots/StateFactoryMarker.class:
- H4sIAAAAAAAA/51STW/TQBB965AmBCgpUEhaSj8o6Q2XCsSBU9I2wlI+UJIi
- oZy29qq4dryRdx2aW278Jw4o4siPQsw2IgnCAglZGr+ZefPxdvf7jy9fAbzE
- AcMrHnmx9L0r25WDoVTCjpNI+wNhq4gP1Uepld3VXIs6d7WMx00eByLOgTEU
- L/mI2yGPLuz2+aVwdQ4Zhu1FlEeRpFJfRnZ1DnPIMuw3AqlDP1qmNBOla+JE
- uslARFp4bxg2Umg9Hl8ITclVHobyk/BmAZXedDF3Xpevn7WOe067xbCVUtER
- msYTImp2xMNEMBz8tfNyxUrNaVU7Hxh2G6nn8Ju8nXTOcr/KPyjvZOi7Y7Pq
- caPa7RpJqQVz9Xvp+dNQmLV646EwKpqnvbftE4a1X8KbQnOPa05JazDK0Oth
- xuSNAQMLKH7lG++QkPeCoTyd5AtWySpYxc38t89WaTo5sg5ZbToxhCOG143/
- enq0AQ1c/zPxPNAMha5MYlfU/ZCurdyZ9XvvK/88FIsbUxXaATeoz4rZn/Cz
- a7uPCv0D5OgjcZS/2QcTKOAWbpN3R2AVd1Gk5NrMvYf7eGDgNW8dD/EIWZT6
- yDgoO9hwsInHBLHl4Am2iaWwg90+LIU9hac/AcQycP6LAwAA
- """
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuOSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFRL0LS1JTMpJ9cwrCS5JLEn1LhHiD85LLCjOyIcJcOlwKeHSr5eT
+ mVeiV5JaXCLEFgIkvUuUGLQYAH5U0JeGAAAA
+ """,
+ """
+ androidx/compose/runtime/snapshots/StateFactoryMarker.class:
+ H4sIAAAAAAAA/51Sy27TQBQ945AmDVBSoJC0lD4o6Q6XCsSCVdI2wlIeKAlI
+ KKupPSquHU/kGYdmlx3/xAJFLPkoxJ1GJEFYICFL1+fec+5rZr7/+PIVwAsc
+ MrzkkRdL37uyXTkYSiXsOIm0PxC2ivhQfZRa2V3NtahzV8t43ORxIOIcGEPx
+ ko+4HfLowm6fXwpX55Bh2FlEeRRJSvVlZFfnMIcsw0EjkDr0o2VJM1G6Jk6l
+ mwxEpIX3mmEzRdbj8YXQRK7xMJSfhDcLqPSii77zvHz9Xeuk57RbDNspGR2h
+ qT0hkmZHPEwEw+FfKy9nrNScVrXzgWGvkXoOv623m65Zrlf5h+StDH13bEY9
+ aVS7XbNSasJ8+/10/iwUZqzeeCjMFs2z3pv2KcP6r8WbQnOPa06kNRhl6PUw
+ Y1aNAQMLKH7lG++IkPecoTyd5AtWySpYxa38t89WaTo5to5YbToxgmOGV43/
+ eno0ATXc+JN4FmiGQlcmsSvqfkjXVu7M6r33lX8eisWNqQrNgBtUZ8XMT/jp
+ tT1Ahf4BcvQBeeJX+2ACBdzELfJuC6zhDopErs/cu7iH+wZe6zbwAA+RRamP
+ jIOyg00HW3hEENsOHmOHVAq72OvDUthXePITiiesbIsDAAA=
+ """
)
val SnapshotState: TestFile = bytecodeStub(
filename = "SnapshotState.kt",
filepath = "androidx/compose/runtime",
- checksum = 0xa797b7e1,
+ checksum = 0xe6e3c192,
source = """
package androidx.compose.runtime
@@ -672,348 +671,347 @@
override fun toString() = "NeverEqualPolicy"
}
""",
-
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgMueSSMxLKcrPTKnQS87PLcgvTtUr
- Ks0rycxNFeIKSs1NzU1KLfIuEeIPzkssKM7ILwkuSSxJ9S7hUuOSwaVRLy0/
- X4gtJLW4xLtEiUGLAQDM+x9weQAAAA==
- """,
- """
- androidx/compose/runtime/DerivedState.class:
- H4sIAAAAAAAA/4VRTW/TQBB9Yzuxk4bghhbSAG1BQiQccKk4IFJVQnyISKmQ
- mihCymkbL2Ebx668m6jH/BYO/AgOyOqRH4UYp6hCRIXLzLzZN29Hb378/PYd
- wHM8IDwScZgmKjwPRsn0LNEySGexUVMZvJGpmsuwZ4SRLohwdNB/2T0VcxFE
- Ih4HH05O5ci0D1db3Ws1l2IH/X77sE3w/x504RC2/z3sokjwxtIMRDSThI1m
- a3UBQqHZ4l+Yqa+Ym81VYmtAKDaZmRfr3UliIhUHR9KIUBjB89Z0brNVlAcv
- DyDQhPvnKkd7XIXPCG+zRbVs1a1ytlgmyyt4n+rZ4onjZQuf9r2aU7Pe0551
- XPfthvUiW3y8+Fq9+FKsNBzP8QsPHa/ou7nYPuHx9f79eRPejvqE3f+4nZsx
- v3TA78XiTH9OzPLh6cQQSj01joWZpfxc7iWzdCTfqYjB1vGlyEBpdRLJV3Gc
- 8JBKYs3+WyiwDy4bYPHFPJQYbecIZcZrqFzhG7B/VzZ2lvk+djm/ZkaVVW4O
- YXfgd7DeQQ23uMRGB5u4PQRp3EF9yCfElkZD467GPZ3DksaaRuUXZ2oGC8cC
- AAA=
- """,
- """
- androidx/compose/runtime/DerivedStateImpl.class:
- H4sIAAAAAAAA/41S204TURRd58x0OoylDOWOeEORtgiDxAcDTY2XEJtUTWjT
- GHk6tBM40M6QOacNj/0KP8Av0ERj4oNpePSjjHvahqg1sS97r71mn732ZX78
- /PYdwCNsMeRE0IhC2bjw6mHrPFS+F7UDLVu+98KPZMdvVLTQfql13kyCMVQL
- 1d3yqegIrymCY+/N0alf13vFUao8Vt1CtbpX3GNw/36fhMmwNlaNJCwGqyAD
- qYsMc9nRXnI1SsiSVAyMbK6Wgo1rDhJIMSQ6otn2GTKj71JIY2oCHC6DqU+k
- YtgYb654XzSWfezr2qD8bDY3KkDq2Rz1RZnqKjNZILz5hGYx+p+my2ehbsrA
- e+Vr0RBaEMdbHYMuyGJjxwYM7Iz4CxlH24QaDxne9bpphy9yp9ftO25bNl/s
- dfOm3eu6bMfOmBn+km3zZ5MZyzWW+eNe9/KDxV3zYGUYvr18nybKdbhrL5t2
- wrVWTTvpmrHCDolWGdbH20l85kogztVJqPvE1plmmKjI40DodkSTm8/DBrmp
- sgz81+3WkR9VxVGzf5uwLpo1Eck4HpJOJWxHdX9fxsHSwUCxJpWkr0+DICQJ
- GQYK23TABO2H/l9CdFHyWVoSxxIMwjbiE+eIKZLn5J38V0zmN75g+lM/L0/W
- okzQ2w2y84MsZDATr57Q71UdQrOYG9b04suQT+Q/Y/rjP8ulBgnDcoMi88Qt
- XDW2O2zM+m9T1lVTFhb/aMoYIgMP+n4dm+T3KWOZtK8fwihhpYQbJdzELYK4
- XcIdrB6CKdzFvUNMKMworCncV0irOJxVmFNYUJj6BY25tQRSBAAA
- """,
- """
- androidx/compose/runtime/MutableState.class:
- H4sIAAAAAAAA/4VR0WoTURA9c3eT3aQxbmOradRaBTHxwa3FBzGlIKIYSBCa
- EIQ83SZrvM1mt+TeDX3cb/HBj/BBlj76UeJsKkUM1Zc7c+aeOTOc+fHz23cA
- L/CQ8FhGk0WsJuf+OJ6fxTrwF0lk1Dzwe4mRJ2HQN9IEDojQOxy86p7KpfRD
- GU39Dyenwdi0j9ZL3Ws1V2KHg0H7qE3w/m50YBN2/93soEhwp4EZyjAJCFvN
- 1voChEKzxVOYqa+Y2811YmtIKDaZmSeb3VlsQhX5vcDIiTSS+8V8abFVlD9u
- /oBAM66fqxztczZ5TnibpdWyqItylq6CcAvup3qWPrXdLPXowK3ZNfGe9sVx
- 3bMa4mWWfrz4Wr34Uqw0bNf2Co9st+g5udgB4cn1/v15E96OBoS9/7idm7G8
- dMDrR/JMf47N6uPZzBBKfTWNpEkW/F3ux8liHLxTIYOd40uRodKKJ76Oopib
- VBxp9l+gwD44bIDgi7koMdrNEcqMN1C5wjdg/c4sPFjF+9jj+IYZVVa5OYLV
- gdfBZgc13OIUWx1s4/YIpHEH9RGfEDsaDY27Gvd0DksaGxqVX4ySaL/HAgAA
- """,
- """
- androidx/compose/runtime/MutableStateImpl.class:
- H4sIAAAAAAAA/41S224SURRdZ2YYpiOFKb3XeqvWArWd2vhgWoJRk0YSqkkh
- xNinU5jQU2Cm4RyaPvIVfoBfoInGxAdD+uhHGfcB0jRiIi97rb1mn32dX79/
- /ATwDNsMWR7WO5GoX/q1qH0eycDvdEMl2oF/2FX8pBWUFVdBsX3eioMxVPKV
- vdIZv+B+i4cN/93JWVBT+4VxqTRR3nylsl/YZ/D+fh+HxbA+UY44bAY7L0Kh
- CgzzmfFeslUKyFApTcxMtpqAg1suYkgwxC54qxswpMffJZBEagoGPAZLnQrJ
- sDnZXHpfNJbTCFR1mH4ukx0vQNUzWeqLIuV1ZDxPfOsFzWIOPs2UmpFqidA/
- DBSvc8VJM9oXJl2QaeNoAwbWJP1SaG+HWP0pw4d+L+kaS4bb7w3AcGzHWOr3
- cpbT73ls10lbaeMN2zFeTadtz1wxnvd7V59sw7OOVkfu+6uPSZI81/CcFcuJ
- efaa5cQ9S1fYpaIVho3JdqLPXA75uTyN1EDYbiqGqbJohFx1OzS59TqqE6RK
- IgzedtsnQaeiX+vbRDXeqvKO0P5IdMtRt1MLDoR2lo+GFatCCvr6MgwjKiGi
- UGKHDhij/dD/S4wuSpihJRlYhkncgT5xlpQCoUHo5r5jOrf5DTNfBnE5sjZF
- AkvYJLswjEIas3r1xG5mdYnNYX6U09eXIYzlvmLm8z/TJYYBo3TDJAukLV43
- tjdqzP5vU/Z1UzbpN5syR8zEkwFuYIvwgCJWqPbtY5hFrBZxp4i7uEcU94t4
- gLVjMImHeHSMKYlZiXWJxxJJqd05iXmJRYnUH5JR7zxSBAAA
- """,
- """
- androidx/compose/runtime/NeverEqualPolicy.class:
- H4sIAAAAAAAA/5VU3W8bRRD/7Z0/zhcndZyQpmn4KA3UTpqeE8pnTNoSinqR
- ayJcBUGe1vbibnK+c+/2rCJeIv4Unnmg4qEIJBTBW/8oxOydCcFJUSLLO7Mz
- s7/5zc7svfjr198B3MZdhir3u2Egu0+dTtAfBJFwwthXsi+cphiK8P6TmHs7
- gSc73+bBGL5s7PMhdzzu95zP2/uiozYaL0Vo+XwQPQ7Uw1hxJQM/xamfhtjc
- YCiNW/PIMDgXBM8jx5CrS1+qTQazUt0twkLBRhY2Q0Y9lhHDysspjxdNxGzx
- JJZD7glfMdyonHEBpyzVrxmWGkHYc/aFaodc+hEV4gcp08hpxp7H254gdMYZ
- yqcRyNFmsFTQUqH0ewyzleqJqNRKUdf/L0ugdCJ9t+NlWbjMkO2LsCcYts9V
- 0xlVnkW7fsGGLX0qvuGxp9z+wIvyuMrwXeWiE3UutufiX8QVvGpjEa/R5Q9C
- MZRBTAOT78RhmPQ/zwcDT4ouuesdLxkzG4aeLcttth7da27dL+ItTBbI+DbD
- dOMgUBTmPBSKd7nidENGf2jS62N6sfQCavYB2Z9KvauR1l1jEEeHi7Yxb6T/
- 0tGhbVhamSBpkpyy/vzemD86XLfLuXJmntWMGvskbxl//JAzSub2YimzYNSy
- 61Ypt5B4Scun2oO5batkkbfwYE4nW2dYu/CVM027eLJ5NGb/xLYoVNw6oPu6
- +kUK4/pDGUka+Xv/Dii9x62gSwN4qSF90Yz7bRE+0s9Cv4igw71dHkq9HxmX
- xrF2eMj7QonwP6BF1/dFuOXxKBK0LbRkz+cqDgnBbgVx2BGfSQ13ZQS3e4oY
- atS9LNVHnzwaCGonyfepNzmScySz5KevCu0+oJ2jG6ity88x8YwUAx+OgoEQ
- H9FaTANITib9nsIlitKH79JOt90wfxw7GSUn30i9o5Nam0Y58RuYIc3ABumT
- BplKCXS6zuKVUYLVETuzPP/TWAZ1gps5ynCyTF38Ank0zA4y9KOJXV65ufoL
- Xh/HSutcTmOO2VrEP2Vr4VrCVmtvkmYeZ9KEdQ0z5lgNpST4+vE9X06OAxO/
- wfjqOZZ+xo1niSGDOq02hS1Sy94l1h8n7ExsJvI93CHpkr9CPajuwXSx7GLF
- xU2skopbLjWxtgcWYQ3re7AjTEZ4J8LtCIUIU4kyHWEmwizpfwOnXXg5QAcA
- AA==
- """,
- """
- androidx/compose/runtime/ProduceStateScope.class:
- H4sIAAAAAAAA/41T328SQRCeXSgcSPWKv4BWq7ZGJcY7iU9CiEbTFENrI+gL
- T8tx4MKxS273sI/EP8UH/wbjgyH45h9lnINeG4u1fbid2ZlvvtnZ/e7X7+8/
- AOAZbBMoMtHxJe8cWo4cjqRyLT8Qmg9d68CXncBxG5ppt+HIkZsEQqBZaT6v
- 99mYWR4TPettu+86ulxdDtXPJN4LNGt7C+JKs1mulgmYp+uTECdw/0IcSUgQ
- yLBPjOvXXIUwPObD+kBqjwurPx5a3UA4mkuhrJ0jzy5HeUf6MtBcuMp6JZFc
- BCwElB8tj0Sgex5tJcq/Fxyv5bwulWL1342269LvWX1Xt33GsQETQmq2aLYf
- eF44PMK2/geTOkQiai06xZ6rWYdphjE6HMdQAyRcjHABAmSA8UMe7mz0Ok9x
- 4OlkI01zND2dHBuTRDtqhhGjm5tOinFjOjFJycjGs3SX2PTNphkrUDteypgr
- hXnUTtqJ3dnXFz+/kelk9iVBTWP2mcbT1MiH3UoEHp8tmiU14gykSeDBxXSG
- aBwwJcWxQrLRpZxIAmXYEGykPko9L3oy0FjT4D3BdOBjzfq7BXVNjLniyP3y
- 5L7xzU5nD5jPhq52/b9g6YYMfMfd4R4y5o9qPizxoaYprOChk+Hb4M9gQApi
- sIk7Cmm4gzaB2Uto7+K3SnGTmT9juEbAGNyb29uwhXYHs6tIerkFsRpcqYFZ
- gzXIogtXa3ANrreAKLgBN1uQUpBTkFdQUGAoWFewoeDW3En9Ae+dQkpABAAA
- """,
- """
- androidx/compose/runtime/ReferentialEqualityPolicy.class:
- H4sIAAAAAAAA/5VUW08bRxT+ZteX9WITYygBQq8hiblljUuvuDSUpoqRIShG
- RC1PY3viDKx3nb1YifqC+lP60L70oVEfUrVShdq3/qiqZ3Zd6hqoQJbnnDnn
- zHe+M+fM/vnXL78BWMUGQ5k7Lc+VredW0+10XV9YXugEsiOsR+KJ8ATp3L7/
- LOS2DF7surZsvkiDMTyuHfIet2zutK2HjUPRDNZqF0LVHd71n7rBdhjwQLpO
- jFM5C7G+xpAftqaRYLCuCJ5GiiFVkY4M1hn04vx+FgYyJpIwGRLBU+kzrF5M
- +cLqiaEpnoWyx21yM9wpnnMTZyzzXzHM1VyvbR2KoOFx6fhUkePGlH1rJ7Rt
- 3rAFoTPOUDiLQI4GgxG49cCTTpthojg/EBVbKerm/2VxA5WIoqYvrM/AdYZk
- R3htwbB1qeLOKfc8/pUrtnDuc/GEh3ZQ7XRtP40bDF8Xrzpjl2J7Kf5ZTON1
- E7N4g7rQ9URPuiGNULoZel40CGne7dpStMhdadrR4JnQ1LQZ1Z363sbO5v0s
- biGXIeNthrHakRtQmLUtAt7iAacb0jo9nR4mU4uhFlDXj8j+XKpdibTWCoM4
- OZ41tSkt/udPjk3NUMoISZ3kqPHHN9rUyXHZLKQKiSlW0krss7Sh/f5tSsvr
- W7P5xIxWSpaNfGom8pKWjrUHk1tG3iBv5sGkSlZmWLnylTNFOzvYPHrU/8TW
- KVTcPaL7uvEohqk6PelLmv2NfyeVXuim26IBvFaTjtgJOw3h7an3oZ6G2+T2
- Pvek2veNOYJtHm3zbn8/N4y9yz3eEYHw/pMkW3Uc4W3a3PcFbTN12XZ4EHqE
- YNbd0GuKL6SCm+7D7Z8hihJ1M0n10keRBoTaS/ID6lWK5CTJJPnpu0O7D2ln
- qYYq68IrjLwkRcNH/WCA42Nas3EAyVzU/1Fcoyh1eI+kGoORxaXvkE58j4T+
- A211rMV5MvfYAFojQnsrPtFHU9oYCpF/BOOkaaiQntPIlI/SxesEXusnXe4z
- 1gtTPw7xbQ7w1fsZBktXFzJDHgWziwT9aKoXFpeWf8abw1hx7QtxzClbg/jH
- bA28HbFV2juk6aeZFGFVw7g+VEM+Cr55evfXo+NU+K/QvnyFuZ9w52VkSOAT
- Wk0Km6U2vkes1yN2Oj6N5Pu4R7JK/iJd8/wB9CoWqlisYgnLpOJulRpbOgDz
- sYLyAUwfOR/v+lj1kfExGiljPsZ9TJD+NyU9ROd/BwAA
- """,
- """
- androidx/compose/runtime/SnapshotMutationPolicy$DefaultImpls.class:
- H4sIAAAAAAAA/5VSTW/TQBB96yR1GlL6wWcotEADohwwlTiRqBIqQjJKS0Wi
- Hspp4yzpJvautV5HRfwpzhz4AfwoxKyTCmgQIpY9++bNm5n17H7/8fUbgBd4
- zNDmamC0HJwHkU5SnYnA5MrKRARdxdPsTNvD3HIrtTrWsYw+NV+LjzyPbZik
- ceaDMayN+IQHMVfD4F1/JCLro8RQSYQZCobPTzoLdmh1Lhf8L2Z3nmI4bfde
- zvP7C++p3eu19ltkpu8ufQzNjjbDYCRs33CpsoArpadJWXCUxzHvx4JkO/+S
- aeuUpKo07ZnMGPYWHhdDNTViInVO6Rt/m4If5cYIZQnxNI2lGDCsd8baxlIF
- h8LyAbecdF4yKdG9YM5UnQEDGztAB+qdS4eeMwQL7tBHg6H++72hS3Mh7ZJS
- PBvT3soHekAXZrUjlTjKk74wPTdB90864vEJN9L5M3K5K4eK29wQ3nw/7R+q
- icwkhV/9GjEd0+XoMTc8EVaYP2T1UClhDmKeZYLcWlfnJhJvpGvWmJU4mSuP
- PXgoYzqrZVSwRN498t6S73iPfXEWW2SXiANOsU326TSKGq4U2R7qWCniHq4S
- 8gq0SqiE+wX28WBWo0rrQ/pWykXTi6eEHbI14jzcwSYaaBaJd/GI1i3i10iz
- /gGlEBshroW4jhshbuJWiNs/Ac089AgUBAAA
- """,
- """
- androidx/compose/runtime/SnapshotMutationPolicy.class:
- H4sIAAAAAAAA/5VTzW7TQBD+1kltx2mLC6WkKeU3NCkHnFYcEK2QEAjhKgXU
- RBzoaZNswybOOnjtqHDKs/AYHFDEkYdCjJ1WINIDlbzz/83szox//vr2HcBj
- bDN4XHWjUHZPvU44HIVaeFGiYjkUXlPxkf4YxodJzGMZqndhIDufLTCG2n7r
- aaPPx9wLuOp5b9t90Yn3ns2bGNx/bRbyDI74lMgxD4SKGaq1eeC8ZfsDQ6HW
- au3Rl8oLQxH1BMPBf6EvyHfRbZfPCqQ16DBUGmHU8/oibkdcKk3dUuGsHdp7
- kwQBbweCwlYagzAOpPIORcy7POZkM4bjHHWZpcROCRjYgOynMtXqJHV3GL5M
- J6uOUTKc6cQxXCIZLzqGbdsnpenkYd6eTly2a9SNg003Vzbq+V3TXSgbT6YT
- EsxMeL3146tpuNZB1bXL+RKb+QrnQc65UJxFr2XRi+kNdhl2GpfcAXoca7Hs
- PZxOm8EeRWIsw0QzWJ0kirK5Wnw0CqToMuxfskDlpTjhSRD7w1GgLdxhWPzb
- Qlt1jmsSTDwaULVCU/YUj5OIdmLjaJbeV2OpJY3o+Z+xUS5fKRG9CLjWglSn
- GSZRR7ySASHXz5Dv53AmdQsL6Rhh0AaboD8BlVSDTXoBDkkzvYgHxE3yLxLP
- Y4uoQ9pd8t3D+llUDtWM30eN+BH5lyj/8jFyPq74cH2s4CqJuOZjFdePwTTW
- cOMYSxoljXWNsoaZ0Q2NmxqWRkFjU+OWxm0N5zfYvY915wMAAA==
- """,
- """
- androidx/compose/runtime/SnapshotStateKt$produceState$1.class:
- H4sIAAAAAAAA/41T0U4TURA9d7ttl7XQUgGhKqJW3RZloZqoKZAYIklj1YSS
- xoSnZXcpF9q7ZPe24bFf4Qf4BZpoTHwwDY9+lHHutjEoCKbpzLmTmTPn3pn9
- 8fPbdwBP8JjhqSO8MODese0GnaMg8u2wKyTv+HZDOEfRfiAb0pH+K1k8CgOv
- 6/rxsbiSBqPi+oHTc+y2I1r2290D35XV+r/5VOHq9nZ1vcqQ+7swDZ1h/uLi
- NFIMqVUuuFxnmLbOdi81KcGiHgokrFIzAwNXTCSRYUj2nHbXZ8ifrctgAtkx
- aMgx6HKfRwzPL7jJhS9DtxsvKo3caTeHHY2WL0dwyiqdbU/arBKpJs2xnawf
- BrLNhf3al47nSIdiWqeXoKExZQxlwMAOKX7M1WmZkLfCsDboj5uDvqnNaqZm
- 6GU26Bvm7KBfMfJ6Xns26C+zrZmcVlDw3cl7/eRDyjS1XLKgG4mcrkgqDAuX
- TJHkWP/7OmncY8icfiKGvXNGd05k9AgHvY691xWu5IGI7M0RqlRLl6nM4AEs
- 2rU/FC0dSoaxBm8JR3ZDEqNvBB65bJ0L/023s+uH285uO96TwFUjDLk6j4KZ
- mhB+uNF2osinLcm+FG47iLho0aj2A4/BbATd0PU3ucqe2xoKavKIU/kLIQLS
- oO6BFdq2JM2QPiTk1fqRX6RBapilP80Yah8fEtokryJm+SvGy4tfMPkpzntE
- dgJq+EvQYVP+Ev2AmWE2sV5Va0Jo6hS7SWg6zlHcttoi8snyZ0x+/E2bioN2
- TJcZJozohiTX6GzH1CxuBsxhmayO+yiNchJ0ReXLqJBfo8w5qirsIFHD9Rpu
- 1HAT8wRxq4YF3N4Bi3AHd3eQihQsRpiIMB1hJkL2F+yJDPSyBAAA
- """,
- """
- androidx/compose/runtime/SnapshotStateKt$produceState$2.class:
- H4sIAAAAAAAA/41TUU8TQRD+9nptj7PQUgEBFVGrXotyUE1UCiSGQNJYNaGk
- MeFpac+y0O6Ru23DY3+FP8BfoInGxAfT8OiPMs5eG4OiwMPNfDuZ+ebbnbkf
- P799B/AEjxmectkIfNE4dut++8gPPTfoSCXanluV/Cjc91VVceW9VLmjwG90
- 6l50zBWTYFRcOeBd7ra4bLpv9g68uipV/s+nC1d3dkrrJYbM34VJmAxz5xcn
- kWBIrAop1DrDpHO2e75GCQ710CDm5GspWLhiI44UQ7zLWx2PIXu2LoUxpEdg
- IMNgqn0RMjw/5ybnvgzdbjSnNQreqg06Wk1PDeGEkz/bnrQ5eVJNmiM7Xjn0
- VUtI95WneIMrTjGj3Y3R0Jg2ljZgYIcUPxb6tESoscyw1u+N2v2ebUwbtmGZ
- BdbvWfZ0v1e0smbWeNbvLbHtqYwxq+Hbk/fmyYeEbRuZ+KxpxTKmJikyzF8w
- RZLjXPZ1krjHkDr9RAzH/xjdpSLDZznott13HVlXwpehuzVExVL+It0pPIBD
- 2/eHxsVDxTBSFU3JVScgeeaG3yCXrgjpve6097xgh++1os3x63qogdDnYTBV
- ltILNlo8DD3am/SmrLf8UMgmDW/fbzDYVb8T1L0tobNntgeCaiIUVP5CSp80
- 6HtgmfYvTlOlXwtZvZDkF2i0Bqbpo6lDb+hDQlvkdcQufMVoYeELxj9FeY/I
- jkGvwwpMlCh/BYt0mhpkE+tVvTiEJk6x24QmoxzN7eq9Ih8vfMb4x9+0iShY
- iuhSg4Qh3YDkGp3diJpFzYAZLJE1cR/5YU6Mrqh9AUXya5Q5Q1Wzu4iVcb2M
- G2XcxBxB3CpjHrd3wULcwd1dJEINcyHGQkyGmAqR/gVj7U/wxAQAAA==
- """,
- """
- androidx/compose/runtime/SnapshotStateKt$produceState$3.class:
- H4sIAAAAAAAA/41TXU8TURA9d7v9YF1oqYCAiqhVt0VZKCZqCiSG0KSxakJJ
- Y9KnpV3Lhe1dsnvb8Nhf4Q/wF2iiMfHBNDz6o4xzt41BQeBhZ87czJw5987s
- z1/ffwB4ijWGZ45oBT5vHdtNv3Pkh64ddIXkHdeuCeco3PdlTTrSfSVzR4Hf
- 6jbdKMytJcGouHrg9Bzbc0Tbfrt34DZlqfp/PlW4vrtb2iwxZP4tTEJnWLi4
- OIkEQ2KdCy43Gaats93zdUqwqIcCMStfN5HCNQNxmAzxnuN1XYbs2ToTE0iP
- QUOGQZf7PGR4ccFNLnwZut14Tmnkjlcfdky1XTmCU1b+bHvSZuVJNWmO7GT1
- 0JceF/ZrVzotRzp0pnV6MRoaUyalDBjYIZ0fcxWtEGqtMmwM+uPGoG9os5qh
- pfQCG/RTxuygX0xl9az2fNBfYTszGW1ewXcnH/STjwnD0DLxeT0Vy+iKpMiw
- eMkUSY511ddJ4gGDefqJGNrnjK5xzi6NXuGg17Hfd0VTcl+EdnmEiqX8ZTJN
- PIJFy/aXpOVDyTBW423hyG5AavQtv0UuXeXCfdPt7LnBrrPnRYviN9UMA67i
- 0aFZEcINtjwnDF1ak/S2aHp+yEWbZrXvtxiMmt8Nmm6Zq+y5naGgOg85lb8U
- wicN6h5YpXWL0xDpT0JW7R/5JZqkhln6aMhQC/mYUJm8OjEK3zBeWPqKyc9R
- 3hOyE1DT34ZOWWPklymaGWYT63W1J4SmTrEbhKajHMVtqzUiHy98weSnP7SJ
- 6LAc0ZnDhBHdkOQGxXZEzaJmwBxWyOp4iPwoJ0ZXVL6AIvkNypyjqvkGYhXc
- rOBWBbexQBB3KljE3QZYiHu430AiVDAXYiLEdIiZEOnfCWOj1bMEAAA=
- """,
- """
- androidx/compose/runtime/SnapshotStateKt.class:
- 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
- """,
- """
- androidx/compose/runtime/SnapshotStateList.class:
- H4sIAAAAAAAA/41QTUsjQRSs7smXY3YdXT/irruKJzcsOyqCoCKoIARmd8GE
- XHLqZBptk3TLdEc8zm/xH3gSPMjg0R8lvoleVi9e6r2qLt571Y9Pd/cAtrDC
- UBc6ToyKr8KeGV4YK8NkpJ0ayrCpxYU9M67phJORsq4MxrC219qJzsWlCAdC
- n4b/uuey53b330sMwVutjAJDaU9p5fYZvLWf7SpKKPsoosJQcGfKMvyKPn4R
- LZmO+sYNlA7/SCdi4QRpfHjpUT6WQyUHMLA+6VcqZ+vUxRsUJUurPq9xP0t9
- HhBkaS1L64VKlgZsk6/zw+LDdYkHXu7fpBEtlk8K/jvjd9/R6UcmlgxTkdLy
- 72jYlUlLdAekzESmJwZtkaicv4oTTXWqhRsl1PtNM0p68ljlD4snL0Hbyipy
- HmhtaIUy2mIDnH7pNUr+aYRfiYVjDhTrt5i4oYbjG2FpLK5iibD6YoCPSaoe
- vo9dHn6M6yKWqW6Tp0qeTx14DXxuYKqBANPUYqaBL5jtgFnMYb6DgsWkxYJF
- zaL8DHqS9VZKAgAA
- """,
- """
- androidx/compose/runtime/SnapshotStateMap.class:
- H4sIAAAAAAAA/41QyU4bQRB91eONwYGBbCZ7LlEgUgZQTsRCSiJFshgSKY7m
- 4lPb04LGdrc13UYc51vyB5yQOKBRjvmoKDWGS5ZDDvWq6vXr2n78vLwC8AbP
- CZvSZLnV2Vk8stOZdSrO58brqYr7Rs7csfV9L706lLMmiNDtHuwlJ/JUxhNp
- juLPwxM18m/Tf3D7f1OE6E+uiRqh0dVG+31C8HIzbaOBZog6WoSaP9aO8Cr5
- 7yG5x1oytn6iTXyovMykl8yJ6WnAG1MFrQpAoDHzZ7rKtjnKdghxWayEoiNC
- 0WKLyiIsi05ZbNVaZRERO4rErtgO3te/f2uIqFZ92+VKB2wpVUWj3wZ6Pfa8
- xAebKcJqoo36NJ8OVf5VDifMrCd2JCepzHWV35BLfX1kpJ/nHId9O89H6qOu
- Hja+XK+caqdZ+c4Yyy20NQ47EHyvm62q8zE+5Cxe5EB96wJL5xwIPGJsLMgX
- eMzYvhYgxDL7AE8WqgBPF/4BnrHfY02bNbcGCHpY6WG1hwhrHGK9h9u4MwA5
- 3MW9AeoOyw73HToOGw7NXygOZ4ZqAgAA
- """,
- """
- androidx/compose/runtime/State.class:
- H4sIAAAAAAAA/31Qy07jQBCsthPHmJeT5RECQhzDHtaAOKx4SXtBihSERCKE
- lNOQDGGIM0aZScTR38KBj+CALI77USvaYU+AuHR1VU/3VPfff88vAPaxQdgU
- ujdKVO8h6ibD+8TIaDTWVg1l1LLCyhKIUD9qHzTvxEREsdD96Pz6Tnbt4cln
- iRB+1EooEPy+tJciHkvCUn37q75ifbvdZiw3B4mNlY7OpBU9YQVrznDisl3K
- g58HEGjA+oPK2Q5nvV3CUZYuBE7VCbI0cMI8+K5/U83Sn56fpSFt0Z6z41xU
- Qrfm/M7Sq9enwuuj59UKfiEs5jP2CFvN78/BbqhNuYHi5H2fsKXFvblN7LT+
- a2AJMy3V18KOR1wOWsl41JWnKmaydvE+61IZdR3LP1on3KQSbTz+H0VMd+N7
- eeC7Y42ZAx/u/8xFbYpVrDMe84sZ7gk6cBuYbWCugXkscIrFBkKUOyCDCn50
- 4BksGSwbrBismpyW3gBNs/uhAwIAAA==
- """,
- """
- androidx/compose/runtime/StructuralEqualityPolicy.class:
- H4sIAAAAAAAA/5VVW08bRxT+ZteX9WLAcVJqCE2ThjbmljWkdygtIVQxciiq
- I6qWp7E9dcasd53dWStRX1B/Sp/70KgPiVqpQu1bflTVM7suIQYikOU5Z845
- c+Y7t9mX//7xF4APscmwxL1W4MvWE6fpd3t+KJwg8pTsCqeugqipooC7m48j
- 7kr1dMd3ZfNpFozhu1qH97njcq/tfNPoiKZaqZ3tyeO98JGvHkSKK+l7iZ/V
- ky7WVhgKw9IsUgzOBZ1nkWHIrEpPqjUGszy7m4eFnI00bIaUeiRDhjtvgHxG
- 8ATQFo8j2eeu8BTDrfIpiTghmf2BYabmB22nI1Qj4NILKSDPTxCHznbkurzh
- CvJ+bd9XrvScTr/rSE+JwOOuU/VUQGdkM8ziEoPFAxHDyuMyxm0UcYWBcYbi
- yatJ0aATyq9rF22GK+XZY1aJlKxuvgmerzRCsiqdlRcL0wzprgjagmHrXEk5
- JU2nwV+9YOVn7okfeeSqarfnUrquM/xUvmhrngvtufDncQ3v2biBm1SEXiD6
- 0o+o87LNKAjiBsryXs+VokXq1aYb96sNQzepVd2uP1zf3tjMYw6jORLOM1yq
- DfrjgVC8xRWnDBndvknjzPRi6QVU9H2SP5F6VyGutcQgDg+mbaNkJP/C4YFt
- WJoZIWoSHbP++dkoHR4s28VMMVViFaPC7mYt4+9fMkbB3JoupKaMSnrZKmSm
- Yi1x2YS7P7FlFSzS5u5P6MuW6Vm5cMqZhp0/Xjx6C/63rZOpuL1P+br6beKm
- 6vVlKGlm1l81Kg32ht+iBhyvSU9sR92GCB7qudKT4Te5u8sDqfcD4cywrx0e
- 8K6goXvNab7qeSLYcHkYCtrm6rLtcZoB8mDX/Shoiq+ldjc5cLd7AhgqVL00
- xUdvJyZ1OYmuUm0yRK8STZOenifafUE7RxdQS+eeY+QZMQbWBsZAB1/Smk8M
- iI7G9R7DOFnpw/eI6rJn5hde4K1fh07vx6evJxaD05qbwNuxPoMScQa+In7U
- IFEhdp+sk5gaXLI4QGgW3/lt6Ab3GD5zcMPxUOmJw7uk0W52kKIfde3c/MLi
- C8wM+0pinUtsjtBaeH+A1sIHMVrN3SLOPLpJA9YxXDaHYijExuWjXCfHgZE/
- YXz/HLO/Y+FZLEhhnVabzG5Q2T6n4O/G6ExsxHSFMg1USb9Idbi9B7MKp4pK
- FUtYJhZ3qvSF/WgPLMTH+GQPdojREJ+G+CxELsRYzEyEKIWYJP4//rdNjpUH
- AAA=
- """
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuOSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFRL0LS1JTMpJ9cwrCS5JLEn1LhHiD85LLCjOyIcJcOlwKeHSr5eT
+ mVeiV5JaXCLEFgIkvUuUGLQYAH5U0JeGAAAA
+ """,
+ """
+ androidx/compose/runtime/DerivedState.class:
+ H4sIAAAAAAAA/4VRTW/TQBB9Yzuxk4bghhbSAG1BQiQccKk4IFJVQnyISKmQ
+ mihCymkbL2Ebx668m6jH/BYO/AgOyOqRH4UYp6hCRIXLzLzZN29Hb378/PYd
+ wHM8IDwScZgmKjwPRsn0LNEySGexUVMZvJGpmsuwZ4SRLohwdNB/2T0VcxFE
+ Ih4HH05O5ci0D1db3Ws1l2IH/X77sE3w/x504RC2/z3sokjwxtIMRDSThI1m
+ a3UBQqHZ4l+Yqa+Ym81VYmtAKDaZmRfr3UliIhUHR9KIUBjB89Z0brNVlIdS
+ HkCgCffPVY72uAqfEd5mi2rZqlvlbLFMllfwPtWzxRPHyxY+7Xs1p2a9pz3r
+ uO7bDetFtvh48bV68aVYaTie4xceOl7Rd3OxfcLj6/378ya8HfUJu/9xOzdj
+ fumA34vFmf6cmOXD04khlHpqHAszS/m53Etm6Ui+UxGDreNLkYHS6iSSr+I4
+ 4SGVxJr9t1BgH1w2wOKLeSgx2s4RyozXULnCN2D/rmzsLPN97HJ+zYwqq9wc
+ wu7A72C9gxpucYmNDjZxewjSuIP6kE+ILY2Gxl2NezqHJY01jcovIuyLgMcC
+ AAA=
+ """,
+ """
+ androidx/compose/runtime/DerivedStateImpl.class:
+ H4sIAAAAAAAA/41S224SURRdZ2YYhpHClN5rvVVrgdpObXwwLcF4SSMJalII
+ MfbpABN6Wphp5hxIH/kKP8Av0ERj4oMhffSjjHuANCom8rL32mv22Wtf5sfP
+ b98BPMIOQ477zTAQzQu3EXTOA+m5YddXouO5L7xQ9LxmRXHllTrn7TgYQ7VQ
+ 3S+f8h5329xvuW/qp15DHRQnqfJUdQvV6kHxgMH5+30cBsPGVDXiMBnMgvCF
+ KjIsZCd7ydUoIUtSEdCzuVoSFq7ZiCHJEOvxdtdjyEy+SyKFdAIaHAZDnQjJ
+ sDXdXNG+aCyr5anaqPx8NjcpQOrZHPVFmfIqM14gvP2EZtGHn2bLZ4FqC999
+ 5Sne5IoTp3V6Ol2QRSYRGTCwM+IvRBTtEmo+ZHg36KdsbVmzB/2h0yzT0pYH
+ /bxhDfoO27MyRkZ7yXa1ZzMZ09FXtceD/uUHU3OMo7Vx+PbyfYoox9Yca9Ww
+ Yo65blhxx4gU9ki0yrA53U6iM1d8fi5PAjUkds4UQ6IiWj5X3ZAmN54HTXLp
+ svC9191O3QurvN4e3iZo8HaNhyKKx6RdCbphwzsUUbByNFKsCSno61PfD0hC
+ BL7ELh0wRvuh/5cQXZR8lpakYQU6YQvRiXPEFMlr5O38V8zkt75g9tMwL0/W
+ pEzQ2y2yi6MsZDAXrZ7Q71VtQvNYGNd0o8uQj+U/Y/bjP8slRwnjcqMii8Qt
+ XTW2P27M/G9T5lVTJpb/aEofIx0Phn4T2+QPKWOVtK8fQy9hrYQbJdzELYK4
+ XcIdrB+DSdzFvWMkJOYkNiTuS6RkFM5LLEgsSaR/Aaib5exSBAAA
+ """,
+ """
+ androidx/compose/runtime/MutableState.class:
+ H4sIAAAAAAAA/4VR0WoTURA9c3eT3aQxbmOradRaBTHxwa3FBzGlIKIYSBCa
+ EIQ83SZr3GZzt+TeDX3cb/HBj/BBlj76UeJsKkUM1Zc7c+aeOTOc+fHz23cA
+ L/CQ8FiqySIOJ+f+OJ6fxTrwF4ky4Tzwe4mRJ1HQN9IEDojQOxy86p7KpfQj
+ qab+h5PTYGzaR+ul7rWaK7HDwaB91CZ4fzc6sAm7/252UCS408AMZZQEhK1m
+ a30BQqHZ4inM1FfM7eY6sTUkFJvMzJPN7iw2Uaj8XmDkRBrJ/WK+tNgqyp9S
+ /oBAM66fhzna52zynPA2S6tlURflLF0F4RbcT/UsfWq7WerRgVuza+I97Yvj
+ umc1xMss/XjxtXrxpVhp2K7tFR7ZbtFzcrEDwpPr/fvzJrwdDQh7/3E7N2N5
+ 6YDXV/JMf47N6uPZzBBK/XCqpEkW/F3ux8liHLwLIwY7x5ciw1CHPPG1UjE3
+ hbHS7L9AgX1w2ADBF3NRYrSbI5QZb6ByhW/A+p1ZeLCK97HH8Q0zqqxycwSr
+ A6+DzQ5quMUptjrYxu0RSOMO6iM+IXY0Ghp3Ne7pHJY0NjQqvwDJFOU0xwIA
+ AA==
+ """,
+ """
+ androidx/compose/runtime/MutableStateImpl.class:
+ H4sIAAAAAAAA/41S204TURRdZ2Y6nY6lDIVyE28o0hZhkPhgoKlRE2KToglt
+ GiNPh3YCB9oZ0nPa8Niv8AP8Ak00Jj6Yhkc/yrhP2xBiTezLXmuv2Wdf59fv
+ Hz8BPMMWQ46HjXYkGpd+PWpdRDLw251QiVbgH3QUP24GFcVVUGpdNONgDNVC
+ dbd8xrvcb/LwxH93fBbU1V5xXCpPlLdQre4V9xi8v9/HYTGsTZQjDpvBLohQ
+ qCJDJjveS65GAVkqpYmZzdWScHDLRQxJhliXNzsBQ3r8XRIpTCdgwGOw1KmQ
+ DBuTzaX3RWM5J4GqDdPPZXPjBah6Nkd9UaS8jowXiG++oFnMwaeZ8nmkmiL0
+ DwLFG1xx0oxW16QLMm0S2oCBnZN+KbS3TazxlOFDv5dyjUXD7fcGYDi2Yyz2
+ e3nL6fc8tuOkrbTxhm0br6bStmcuG8/7vatPtuFZhysj9/3VxxRJnmt4zrLl
+ xDx71XLinqUr7FDRKsP6ZDvRZ66E/EKeRmogbJ0rhkRFnIRcddo0ufU6ahBM
+ l0UYvO20joN2Vb/Wt4nqvFnjbaH9kehWok67HuwL7SwdDivWhBT09WUYRlRC
+ RKHENh0wRvuh/5cYXZQwS0sysASTuAN94hwpRUKD0M1/x1R+4xtmvgzi8mRt
+ igQWsUF2fhiFNGb16ondzOoSm0NmlNPXlyGM5b9i5vM/0yWHAaN0wyTzpC1c
+ N7Y7asz+b1P2dVM26TebMkfMxJMBrmOTcJ8ilqn27SOYJayUcKeEu7hHFPdL
+ eIDVIzCJh3h0hITErMSaxGOJlNTunERGYkFi+g+3c7/UUgQAAA==
+ """,
+ """
+ androidx/compose/runtime/NeverEqualPolicy.class:
+ H4sIAAAAAAAA/5VU3W8bRRD/7Z0/zhcndZyQpmn4KA3UTpqeE8pnTNoSinqR
+ ayJcBUGe1vbibnK+c+/2rCJeIv4Unnmg4qEIJBTBW/8oxOydCcFJUSLLO7Mz
+ s7/5zc7svfjr198B3MZdhir3u2Egu0+dTtAfBJFwwthXsi+cphiK8P6TmHs7
+ gSc73+bBGL5s7PMhdzzu95zP2/uiozYaL0Vo+XwQPQ7Uw1hxJQM/xamfhtjc
+ YCiNW/PIMDgXBM8jx5CrS1+qTQazUt0twkLBRhY2Q0Y9lhHDysspjxdNxGzx
+ JJZD7glfMdyonHEBpyzVrxmWGkHYc/aFaodc+hEV4gcp08hpxp7H254gdMYZ
+ yqcRyNFmsFTQUqH0ewyzleqJqNRKUdf/L0ugdCJ9t+NlWbjMkO2LsCcYts9V
+ 0xlVnkW7fsGGLX0qvuGxp9z+wIvyuMrwXeWiE3UutufiX8QVvGpjEa/R5Q9C
+ MZRBTAOT78RhmPQ/zwcDT4ouuesdLxkzG4aeLcttth7da27dL+ItTBbI+DbD
+ dOMgUBTmPBSKd7nidENGf2jS62N6KegF1OwDsj+VelcjrbvGII4OF21j3kj/
+ paND27C0MkHSJDll/fm9MX90uG6Xc+XMPKsZNfZJ3jL++CFnlMztxVJmwahl
+ 161SbiHxkpZPtQdz21bJIm/hwZxOts6wduErZ5p28WTzaMz+iW1RqLh1QPd1
+ 9YsUxvWHMpI08vf+HVB6j1tBlwbwUkP6ohn32yJ8pJ+FfhFBh3u7PJR6PzIu
+ jWPt8JD3hRLhf0CLru+LcMvjUSRoW2jJns9VHBKC3QrisCM+kxruyghu9xQx
+ 1Kh7WaqPPnk0ENROku9Tb3Ik50hmyU9fFdp9QDtHN1Bbl59j4hkpBj4cBQMh
+ PqK1mAaQnEz6PYVLFKUP36Wdbrth/jh2MkpOvpF6Rye1No1y4jcwQ5qBDdIn
+ DTKVEuh0ncUrowSrI3Zmef6nsQzqBDdzlOFkmbr4BfJomB1k6AdYyys3V3/B
+ 6+NYaZ3LacwxW4v4p2wtXEvYau1N0szjTJqwrmHGHKuhlARfP77ny8lxYOI3
+ GF89x9LPuPEsMWRQp9WmsEVq2bvE+uOEnYnNRL6HOyRd8leoB9U9mC6WXay4
+ uIlVUnHLpSbW9sAirGF9D3aEyQjvRLgdoRBhKlGmI8xEmCX9b4SHlftABwAA
+ """,
+ """
+ androidx/compose/runtime/ProduceStateScope.class:
+ H4sIAAAAAAAA/41SW28SQRQ+s1BYkOoWb5TitTUqMe5KfHIJ0WhIMVQbQRPD
+ 07AMOLDMkJ1Z7CO/xQd/hA+G9NEfZTwL3TYWa/swc27f+c5cvl+/f/wEgOew
+ Q6BMRS+QvHdge3I8kYrZQSg0HzN7P5C90GMtTTVreXLC0kAItKvtF80hnVLb
+ p2Jgv+8Omafd2mqqeSbxXqhp118SV9ttt+YSsE73pyFJ4MGFONKQIpCjXynX
+ b7iKYHjMR82R1D4X9nA6tvuh8DSXQtn1I89x47onAxlqLpiyX0skFyGNAO7j
+ 1SsR6J9HW43rHwXHZzlvSrVc+/egnaYMBvaQ6W5AOQ6gQkhNl8Pehb4fXR5h
+ 2/+DSR0hEbURn2KPadqjmmLOGE8TqAESbZloAwJkhPkDHkUOer1nBD7PZ6Ws
+ UTCy89mxsUgcGVaUMfuF+aycNOczi1TMfDJv7BLHeFuyEkXDSVZy1lpxkXXS
+ Tmr38PvLw28pwzKjARUCT87WyYoA8dikTeDhxaSFaLxTRopjUeTjdzhRASqv
+ JehEfZF60fR0pLGnxQeC6jDAnq0PS+qGmHLFkfvVyRPjN52u7tOAjplmwV+w
+ bEuGgcfq3EfGzaOeTyt8KGMD1vDQ6eg7UP8mZCABdzAyIAt30aawegntPVzr
+ Bga5xc9FewxMwP2FvQ3baOtYXUfSyx1INOBKA6wGbEAeXbjagGtwvQNEwQ24
+ 2YGMgoKCTQVFBaaCLQUlBbcWTuYPf2PH6TMEAAA=
+ """,
+ """
+ androidx/compose/runtime/ReferentialEqualityPolicy.class:
+ H4sIAAAAAAAA/5VUW08bRxT+ZteX9WITYygBQq8hiblljUuvuDSUpoqRIShG
+ RC1PY3viDKx3nb1YifqC+lP60L70oVEfUrVShdq3/qiqZ3Zd6hqoQJbnnDnn
+ zHe+M+fM/vnXL78BWMUGQ5k7Lc+VredW0+10XV9YXugEsiOsR+KJ8ATp3L7/
+ LOS2DF7surZsvkiDMTyuHfIet2zutK2HjUPRDNZqF0LVHd71n7rBdhjwQLpO
+ jFM5C7G+xpAftqaRYLCuCJ5GiiFVkY4M1hn04vx+FgYyJpIwGRLBU+kzrF5M
+ +cLqiaEpnoWyx21yM9wpnnMTZyzzXzHM1VyvbR2KoOFx6fhUkePGlH1rJ7Rt
+ 3rAFoTPOUDiLQI4GgxG49cCTTpthojg/EBVbKerm/2VxA5WIoqYvrM/AdYZk
+ R3htwbB1qeLOKfc8/pUrtnDuc/GEh3ZQ7XRtP40bDF8Xrzpjl2J7Kf5ZTON1
+ E7N4g7rQ9URPuiGNULoZel40CGne7dpStMhdadrR4JnQ1LQZ1Z363sbO5v0s
+ biGXIeNthrHakRtQmLUtAt7iAacb0jo9nR4mU0tGLaCuH5H9uVS7EmmtFQZx
+ cjxralNa/M+fHJuaoZQRkjrJUeOPb7Spk+OyWUgVElOspJXYZ2lD+/3blJbX
+ t2bziRmtlCwb+dRM5CUtHWsPJreMvEHezINJlazMsHLlK2eKdnawefSo/4mt
+ U6i4e0T3deNRDFN1etKXNPsb/04qvdBNt0UDeK0mHbETdhrC21PvQz0Nt8nt
+ fe5Jte8bcwTbPNrm3f5+bhh7l3u8IwLh/SdJtuo4wtu0ue8L2mbqsu3wIPQI
+ way7odcUX0gFN92H2z9DFCXqZpLqpY8iDQi1l+QH1KsUyUmSSfLTd4d2H9LO
+ Ug1V1oVXGHlJioaP+sEAx8e0ZuMAkrmo/6O4RlHq8B5JNQYji0vfIZ34Hgn9
+ B9rqWIvzZO6xAbRGhPZWfKKPprQxFCL/CMZJ01AhPaeRKR+li9cJvNZPutxn
+ rBemfhzi2xzgq/czDJauLmSGPApmFwn6AcbC4tLyz3hzGCuufSGOOWVrEP+Y
+ rYG3I7ZKe4c0/TSTIqxqGNeHashHwTdP7/56dJwK/xXal68w9xPuvIwMCXxC
+ q0lhs9TG94j1esROx6eRfB/3SFbJX6Rrnj+AXsVCFYtVLGGZVNytUmNLB2A+
+ VlA+gOkj5+NdH6s+Mj5GI2XMx7iPCdL/Br5SJwt/BwAA
+ """,
+ """
+ androidx/compose/runtime/SnapshotMutationPolicy$DefaultImpls.class:
+ H4sIAAAAAAAA/5VSTW/TQBB96yR1E1L6wWcotEADohwwlTiRqBIqQjJKS0Wi
+ Hspp4yzpJvautV5HRfwpzhz4AfwoxKyTCmgQIpY9++bNm5n17H7/8fUbgBd4
+ zNDmamC0HJwHkU5SnYnA5MrKRARdxdPsTNvD3HIrtTrWsYw+NV+LjzyPbZik
+ ceaDMayN+IQHMVfD4F1/JCLro8RQSYQZCobPTzoLdmh1Lhf8L2Z3nmI4bfde
+ zvP7C++p3eu19ltkpu8ufQzNjjbDYCRs33CpsoArpadJWXCUxzHvx4JkO/+S
+ aeuUpKo07ZnMGPYWHhfDcmrEROqc0jf+NgU/yo0RyhLiaRpLMWBY74y1jaUK
+ DoXlA2456bxkUqJ7wZypOgMGNnaADtQ7lw49ZwgW3KGPBkP993tDl+ZC2iWl
+ eDamvZUP9IAuzGpHKnGUJ31hem6C7p90xOMTbqTzZ2S1K4eK29wQ3nw/7R+q
+ icwkhV/9GjEd0+XoMTc8EVaYP2T1UClhDmKeZYLcWlfnJhJvpGvWmJU4mSuP
+ PXgoYzqrKipYIu8eeW/Jd7zHvjiLLbJLxAGn2Cb7dBpFDVeKbA91rBRxD1cJ
+ eQVaJVTC/QL7eDCrsUzrQ/pWykXTi6eEHbI14jzcwSYaaBaJd/GI1i3i10iz
+ /gGlEBshroW4jhshbuJWiNs/AT8TejEUBAAA
+ """,
+ """
+ androidx/compose/runtime/SnapshotMutationPolicy.class:
+ H4sIAAAAAAAA/5VTzW7TQBD+1kltx2mLC6WkKeU3NCkHnFYcEK2QEAjhKgXU
+ RBzoaZNswybOOnjtqHDKs/AYHFDEkYdCjJ1WINIDlbzz/83szox//vr2HcBj
+ bDN4XHWjUHZPvU44HIVaeFGiYjkUXlPxkf4YxodJzGMZqndhIDufLTCG2n7r
+ aaPPx9wLuOp5b9t90Yn3ns2bGNx/bRbyDI74lMgxD4SKGaq1eeC8ZfsDQ6HW
+ au3Rl8oLQxH1BMPBf6EvyHfRbZfPCqQ16DBUGmHU8/oibkdcKk3dUuGsHdp7
+ kwQBbweCwlYagzAOpPIORcy7POZkM4bjHHWZpaSQEjCwAdlPZarVSeruMHyZ
+ TlYdo2Q404ljuEQyXnQM27ZPStPJw7w9nbhs16gbB5turmzU87umu1A2nkwn
+ JJiZ8Hrrx1fTcK2DqmuX8yU28xXOg5xzoTiLXsuiF9Mb7DLsNC65A/Q41mLZ
+ ezidNoM9isRYholmsDpJFGVztfhoFEjRZdi/ZIHKS3HCkyD2h6NAW7jDsPi3
+ hbbqHNckmHg0oGqFpuwpHicR7cTG0Sy9r8ZSSxrR8z9jo1y+UiJ6EXCtBalO
+ M0yijnglA0KunyHfz+FM6hYW0jHCoA02QX8CKqkGm/QCHJJmehEPiJvkXySe
+ xxZRh7S75LuH9bOoHKoZv48a8SPyL1H+5WPkfFzx4fpYwVUScc3HKq4fg2ms
+ 4cYxljRKGusaZQ0zoxsaNzUsjYLGpsYtjdsazm99oitP5wMAAA==
+ """,
+ """
+ androidx/compose/runtime/SnapshotStateKt$produceState$1.class:
+ H4sIAAAAAAAA/41TbU8TQRB+9np94TxoqYBQFVGrtkU5qCZqCiSGSNJYNaGk
+ MeHT0h5l4bpH7rYNH/sr/AH+Ak00Jn4wDR/9UcbZa2NQEEzTmWcnM888uzP3
+ 4+e37wCe4DHDUy5bgS9ax07T7xz5oesEXalEx3Xqkh+F+76qK67cVyp/FPit
+ btONjvmVJBgV1w54jzsel23n7e6B21SV2r/5dOHq9nZlvcKQ+bswCZNh/uLi
+ JBIMiVUhhVpnmC6c7V5sUEKBemgQKxQbNlK4YiEOmyHe417XZcierbMxgfQY
+ DGQYTLUvQobnF9zkwpeh243ntUbBvcawY6rtqhGcKhTPtidthSKpJs2Rnawd
+ +soT0nntKt7iilPM6PRiNDSmzZg2YGCHFD8W+rRMqLXCsDboj1uDvmXMGpaR
+ Mkts0E9Zs4N+OZU1s8azQX+Zbc1kjJyG707emycfEpZlZOI5MxXLmJqkzLBw
+ yRRJTuF/XyeJewz26Sdi2DtndOdERo9w0Os4e13ZVMKXobM5QuVK8TKVNh6g
+ QLv2h6KlQ8UwVhdtyVU3IDHmht8il64J6b7pdnbdYJvvetGe+E09wkDo8yho
+ V6V0gw2Ph6FLW5J+KZueHwrZplHt+y0Gq+53g6a7KXT23NZQUEOEgspfSOmT
+ Bn0PrNC2xWmG9CEhq9eP/CIN0sAs/UF7q/fxIaFN8jpilb5ivLT4BZOforxH
+ ZCegh78EEw7lL9EPmBlmE+tVvSaEpk6xW4SmoxzN7egtIh8vfcbkx9+0iSjo
+ RHT2MGFENyS5RmcnomZRM2AOy2RN3EdxlBOjK2pfQpn8GmXOUVVuB7Eqrldx
+ o4qbmCeIW1Us4PYOWIg7uLuDRKhhPsREiOkQMyHSvwDFJnyjsgQAAA==
+ """,
+ """
+ androidx/compose/runtime/SnapshotStateKt$produceState$2.class:
+ H4sIAAAAAAAA/41TXU8TURA9d7v9YF1oqYCAiqhVt0VZqCYqBRJDIGmsmlDS
+ mPC0bNdyob1Ldu82PPZX+AP8BZpoTHwwDY/+KOPcbWNQFHjYmXMnM2fm3jn7
+ 4+e37wCe4DHDU0c0A583j23X7xz5oWcHkZC849l14RyF+76sS0d6L2XhKPCb
+ kevFx0I5DUbFtQOn69htR7TsN3sHnisrtf/zqcLVnZ3KeoUh93dhGjrD3PnF
+ aaQYUqtccLnOMGmd7V5sUIJFPRRIWMWGiQyuGEjCZEh2nXbkMeTP1pkYQ3YE
+ GnIMutznIcPzc25y7svQ7UYLakbutBuDjpmWJ4dwwiqebU+zWUWammaO7Xjt
+ 0JdtLuxXnnSajnQopnW6CVoaU2ZEGTCwQ4ofc3VaItRcZljr90aNfs/QpjVD
+ y+gl1u9ljOl+r5zJ63ntWb+3xLanctqsgm9P3usnH1KGoeWSs3omkdMVSZlh
+ /oIt0jjWZV8njXsM5uknYjj+x+ouFRk+y0G3Y7+LhCu5L0J7a4jKleJFc5t4
+ AIvU98eMi4eSYaTOW8KRUUDj6Rt+k1y2xoX3OursecGOs9eOleO7aqkBV+dh
+ 0KwK4QUbbScMPdJNdlO4bT/kokXL2/ebDEbdjwLX2+Iqe2Z7MFCDh5zKXwjh
+ 0wzqHlgm/SVpq/RrIa8ESX6BVqthmj6QkpVCHxLaIq8iRukrRksLXzD+Kc57
+ RHYMSg4r0FGh/BUs0mlqkE2sV5VwCE2cYjcITcY5ittWuiKfLH3G+MfftKk4
+ WInpzEHCkG5Aco3OdkzN4mbADJbI6riP4jAnQVdUvoQy+TXKnKGq2V0kqrhe
+ xY0qbmKOIG5VMY/bu2Ah7uDuLlKhgoUQYyEmQ0yFyP4CSN9ZzcQEAAA=
+ """,
+ """
+ androidx/compose/runtime/SnapshotStateKt$produceState$3.class:
+ H4sIAAAAAAAA/41TXU8TQRQ9s91+rQstFRBQEbXqtigLxURNgcQQmjRWTShp
+ TPq0tGsZ2M6S3WnDY3+FP8BfoInGxAfT8OiPMt7ZNgZFwYe9H5N7zz0z9+z3
+ H1+/AXiMdYYnjmgHPm+f2C2/e+yHrh30hORd164L5zg88GVdOtJ9IfPHgd/u
+ tdwoza8nwai5duj0HdtzRMd+vX/otmS59m881bixt1feKjNk/2xMQmdYvLg5
+ iQRDYoMLLrcYZqzz0wsNKrBohgpiVqFhIoUrBuIwGeJ9x+u5DLnzfSYmkUlD
+ Q5ZBlwc8ZHh2wU0ufBm63UReceSO1xhNTHVcOQ6nrcL58cTNKhBr4hzZqdqR
+ Lz0u7JeudNqOdOhM6/ZjtDSmTFoZMLAjOj/hKlulqL3GsDkcTBjDgaHNaYaW
+ 0otsOEgZc8NBKZXTc9rT4WCV7c5mtQUVvjl9p5++TxiGlo0v6KlYVlcgJYal
+ S7ZIdKz/fZ0k7jGYZ5+IofOX1TX/oqXxKxz2u/bbnmhJ7ovQroyjUrlwGU0T
+ D2CR2H6jtHIkGdJ13hGO7AXERt/22+QyNS7cV73uvhvsOfteJBS/pXYYcJWP
+ D82qEG6w7Tlh6JJMMjui5fkhFx3a1YHfZjDqfi9ouRWuqud3R4QaPOTU/lwI
+ nzioe2CN5BanJdKfhJzSH/ll2qSGOfpAwlWCfEhRhbw6MYpfMFFc/oypj1Hd
+ I7KTUNvfgU5VafIrlM2Oqgn1qtIJRdNn0A2KZqIahW0rGZGPFz9h6sMv2ER0
+ WIngzFHBGG4Eco1yO4Jm0TBgHqtkddxHYVwToysqX0SJ/CZVzlPXQhOxKq5X
+ caOKm1ikELeqWMLtJliIO7jbRCJUYT7EZIiZELMhMj8ByotGl7MEAAA=
+ """,
+ """
+ androidx/compose/runtime/SnapshotStateKt.class:
+ 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
+ ieMmxzLHPMcKh/FftSsUaNEeAAA=
+ """,
+ """
+ androidx/compose/runtime/SnapshotStateList.class:
+ H4sIAAAAAAAA/41QTUsjQRSs7smHGaMZdd2Nun7gSYM4KsKCK8IqCIFRYRNy
+ yamTabRN0i3THfE4v2X/wZ4WPCyDR3/Usm+iF3cvXuq9qi7ee9XPfx5/AzjE
+ BkND6DgxKn4I+2Z0Z6wMk7F2aiTDlhZ39sa4lhNORsq6MhjD1nH7KLoV9yIc
+ Cn0dXvVuZd99PflfYgj+1cooMJSOlVbuhMHb2u5UUULZRxFTDAV3oyzDTvT+
+ i2jJXDQwbqh0eCGdiIUTpPHRvUf5WA6VHMDABqQ/qJztURfvU5Qsrfq8zv0s
+ 9XlAkKX1LG0UprI0YAd8j58Wn36UeODl/gMa0Wb5pODNGbsDR6efmVgy1CKl
+ 5eV41JNJW/SGpMxHpi+GHZGonL+KlZa61sKNE+r9lhknfXmu8oel7y9BO8oq
+ cn7T2tAKZbTFPjj90muU/NMIl4mFEw4UG79Q+UkNxwphaSJu4jNh9cUAH9NU
+ PaxOXB7WJnUJ61S/kKdKnpkuvCZmm6g1EWCOWsw3sYAPXTCLRXzsomAxbfHJ
+ om5R/gvbVDsvSgIAAA==
+ """,
+ """
+ androidx/compose/runtime/SnapshotStateMap.class:
+ H4sIAAAAAAAA/41QyW4TQRB91eN1YpJJ2Bx2LogEiUkiTsGKBEhIViYgYTQX
+ n9qeVtKx3W1Nt6Mc51v4A05IHNAox3wUosbJheXAoV5VvX5d2+XP7z8AvMJT
+ wpY0WW51dh6P7WxunYrzhfF6puKBkXN3Yv3AS6+O5LwJIvR6h/vJqTyT8VSa
+ 4/jj6FSN/ev0H9zB3xQh+pNrokZo9LTR/oAQPN9KO2igGaKOFqHmT7QjvEj+
+ e0jusZ5MrJ9qEx8pLzPpJXNidhbwxlRBuwIQaML8ua6yHY6yXUJcFquh6IpQ
+ tNiisgjLolsW27VWWUTEjiKxJ3aCt/WLLw0R1apve1zpkC2lqmj020AvJ56X
+ eGczRVhLtFEfFrORyj/L0ZSZjcSO5TSVua7ya7I90MdG+kXOcTiwi3ys3uvq
+ YfPT1cqpdpqVb4yx3EJb47ALwfe63qo6H+N9zuJlDtS3v6H9lQOBB4yNJfkM
+ Dxk7VwKEWGEf4NFSFeDx0t/DE/b7rOmw5sYQQR+rfaz1EWGdQ2z0cRO3hiCH
+ 27gzRN1hxeGuQ9dh06H5C310h9RqAgAA
+ """,
+ """
+ androidx/compose/runtime/State.class:
+ H4sIAAAAAAAA/31QPU8bQRB9c18+XwKciQHjIERpp8g5KEWUGKQ0SJYcRcIW
+ iuRqsRez+LyHvGuL8n5LivyIFNGJMj8qYs6kShDNvHlvdmbfzO8/P38BeI8D
+ wqHQk0WmJnfJOJvfZkYmi6W2ai6TgRVWVkCEVnf4sX8jViJJhZ4mXy9v5Nh+
+ Ov1fIsT/ahV4hHAq7YVIl5JQb7Wf6vNb7eGQsdafZTZVOvkirZgIK1hz5iuX
+ 7VIZqmUAgWas36mSdTibvCN0i3wzchpOVOSRE5chdMOrRpG/CcIij+mIjp2O
+ c74du03nQ5F/u//h3X8PgqYXerFfzjgmHPWfPwe7oSGVBvzV4z7xQItbc53Z
+ df3tzBKqAzXVwi4XXI4G2XIxlmcqZbJ//jjrQhl1mcrPWmfcpDJtAv4fPta7
+ 8b0C8N2xz8xBCPdv5qK5xgZeM57wiyr3RCO4Pbzo4WUPG9jkFFs9xKiNQAbb
+ eDVCYFA32DHYNdgzJa08ADaVmL0DAgAA
+ """,
+ """
+ androidx/compose/runtime/StructuralEqualityPolicy.class:
+ H4sIAAAAAAAA/5VVW08bRxT+ZteX9WLAcVJqCE2ThjbmljWkdygtIVQxciiq
+ I6qWp7E9dcasd53dWStRX1B/Sp/70KgPiVqpQu1bflTVM7suIQYikOU5Z845
+ c+Y7t9mX//7xF4APscmwxL1W4MvWE6fpd3t+KJwg8pTsCqeugqipooC7m48j
+ 7kr1dMd3ZfNpFozhu1qH97njcq/tfNPoiKZaqZ3tyeO98JGvHkSKK+l7iZ/V
+ ky7WVhgKw9IsUgzOBZ1nkWHIrEpPqjUGszy7m4eFnI00bIaUeiRDhjtvgHxG
+ 8ATQFo8j2eeu8BTDrfIpiTghmf2BYabmB22nI1Qj4NILKSDPTxCHznbkurzh
+ CvJ+bd9XrvScTr/rSE+JwOOuU/VUQGdkM8ziEoPFAxHDyuMyxm0UcYWBcYbi
+ yatJ0aATyq9rF22GK+XZY1aJlKxuvgmerzRCsiqdlRcL0wzprgjagmHrXEk5
+ JU2nwV+9YOVn7okfeeSqarfnUrquM/xUvmhrngvtufDncQ3v2biBm1SEXiD6
+ 0o+o87LNKAjiBsryXs+VokXq1aYb96sNQzepVd2uP1zf3tjMYw6jORLOM1yq
+ DfrjgVC8xRWnDBndvknjzPSS0wuo6PskfyL1rkJca4lBHB5M20bJSP6FwwPb
+ sDQzQtQkOmb987NROjxYtouZYqrEKkaF3c1axt+/ZIyCuTVdSE0ZlfSyVchM
+ xVrisgl3f2LLKlikzd2f0Jct07Ny4ZQzDTt/vHj0FvxvWydTcXuf8nX128RN
+ 1evLUNLMrL9qVBrsDb9FDThek57YjroNETzUc6Unw29yd5cHUu8HwplhXzs8
+ 4F1BQ/ea03zV80Sw4fIwFLTN1WXb4zQD5MGu+1HQFF9L7W5y4G73BDBUqHpp
+ io/eTkzqchJdpdpkiF4lmiY9PU+0+4J2ji6gls49x8gzYgysDYyBDr6kNZ8Y
+ EB2N6z2GcbLSh+8R1WXPzC+8wFu/Dp3ej09fTywGpzU3gbdjfQYl4gx8Rfyo
+ QaJC7D5ZJzE1uGRxgNAsvvPb0A3uMXzm4IbjodITh3dJo93sIEU/wJqbX1h8
+ gZlhX0msc4nNEVoL7w/QWvggRqu5W8SZRzdpwDqGy+ZQDIXYuHyU6+Q4MPIn
+ jO+fY/Z3LDyLBSms02qT2Q0q2+cU/N0YnYmNmK5QpoEq6RepDrf3YFbhVFGp
+ YgnLxOJOlb6wH+2BhfgYn+zBDjEa4tMQn4XIhRiLmYkQpRCTxP8H9SluIpUH
+ AAA=
+ """
)
val Effects: TestFile = bytecodeStub(
filename = "Effects.kt",
filepath = "androidx/compose/runtime",
- checksum = 0xb63b1aec,
+ checksum = 0xade9931f,
"""
package androidx.compose.runtime
@@ -1129,156 +1127,155 @@
}
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgMuSSSMxLKcrPTKnQS87PLcgvTtUr
- Ks0rycxNFeJ0TUtLTS4p9i4R4gpKzU3NTUot8i7h4uNiKUktLhFiCwGS3iVK
- DFoMAHVSFrpbAAAA
- """,
- """
- androidx/compose/runtime/DisposableEffectImpl.class:
- H4sIAAAAAAAA/51TS08UQRD+enbZx4iyLPJGQEFZQJgFvS0hUYRkkxUNS4gJ
- p2a2gV5me8h0L8Eb0Yu/w3/gwWg8GMLRH2Ws3ocgxgAmM9VV1f1VfV1V/ePn
- t+8AnuIJwxxXlSiUlWPPD2uHoRZeVFdG1oT3Qmqy+U4gVnd3hW+KtcMgCcaQ
- qfIj7gVc7Xmvdqq0k0SMIbEklTTLDBO50kFoAqm86lHN260r38hQaW+tpS0U
- prcYPlx1ammudG1qZT88FIXZ6wM2hK4HprDcoDJRCqM9ryrMTsQlUeBKhYY3
- 6ayHZr0eBAW6n2ggU0gzjF6gLpURkeKBV1QmIrj0dRK3GHr9feEftPCvecRr
- gg4yTOVKl+tXuOAp2yB7xKsTt3HHRSe6GGI5a3eg20UcWYbxqyrciTTupuGg
- lyFu9qVm8K5fHdtpuvH7qzp00wb9R38YutssXgrDK9xw8jm1oxgNMLMiZQUY
- 2AH5j6W18qRVFhii05MR1xlwXCdzeuLS19Av/KcnKWfg9GTRybPno9n+jDPU
- k41nnXy8ITvysbOPCSeVsDKT3Bj71/6bs3dxq1E8m3mRWT7ZNu/zrjDkb1oy
- hoUbV43ms5179dgIGslQtUlsvm0EdZsAPX9gGNJluae4qUeCYXijGbuojqSW
- FPnZ+WOgUVoJK3SoqySVWK/XdkS0abPby4Y+D7Z4JK3dck5ejvX7FfwR1C2H
- 9cgXa9JiBluYrb+yI0/jHG+0Omunm6xZshwM4jGtCfKnmoNADyWBGObIKtG+
- Q2tmNut+RWbmC3pmZj+j71MDOU/yDp1MUAwXQ+ii1SNfXxODfgzY2SLN5mOt
- fEliAiRZK6GDhYacwSKtK+QdIgLD24gVMVLEvSJGMUYqxou4jwfbYBoTmNxG
- SmNA46FGWuORxpRGTmNaI/ELZm5MUZ8FAAA=
- """,
- """
- androidx/compose/runtime/DisposableEffectResult.class:
- H4sIAAAAAAAA/5VPzU4CMRicrwvsuiou/qIPQPTiAjHx4MlEjWswJphw4VTY
- YgrL1tBCOPJcHgxnH8r4LTyBSTOd+X4605/fr28ANzgjxDJPZ0any3hopp/G
- qng2z52eqvhBW9ZykKnH0UgNXVfZeeZ8ECEay4WMM5l/xG+DMfd8eAQ/3Wwo
- gnd51SPUOhPjMp3Hr8rJVDp5RxDThcfWVEBQAAg04fpSF6rJLG0RGutVNRR1
- EYpovQr5iEgEo/p61RZNegkicSGa3nOjmG4TWp1/foKDsG+4LdnriWPxbuaz
- oXrSGec/727Xe9pqXr3Pc+Ok0ya3FbZECZvgJUIZFWYCJxs8xinft/y0z52g
- Dy/BToIwwS72mGI/QRUHfZBFhFofJYtDiyOLMuMfURqWxJYBAAA=
- """,
- """
- androidx/compose/runtime/DisposableEffectScope$onDispose$1.class:
- H4sIAAAAAAAA/8VUXVPTQBQ9mxZaQoHwIQIqVkFtA5Km4hcwzDBYxmpRh2p9
- 4CltQ1mabpgk7fDk9CfpjI6jD06f/VGON0mRjjry8eJD9t69e/bs3bP35vuP
- r98ALGOVYcUQVcfm1SOtYjcObdfUnKbweMPUnnCX5kbZMnN7e2bFK1bsQ3Pe
- FmHcnNdjYAzKgdEyNMsQNe1l+YBgMUQYtDOz7phu06JNfQz9a1xwb51hLlWo
- 257FhXbQamh7TVHxuC1cbavrZVbTJYbsaai14/U3RLu6HmxSTi4Qns+QPO2w
- BGQMDkBCgiGSSpcSiGFYRhQjDFFvn7sMa4WLy0iPEKuGE4bZf+cSwwTpxEXL
- rhN4IpUu/C4/ZTuJy4O4hCl6hnMqxDB6HNk2PaNqeAbFpEYrQuXC/CHuD2Bg
- dYofcX/2nryqzpDqtEfkTluWpqTAKJLKOu24PNVpZ6UMexZXpBkpE3k66eOz
- DPrZNQuLhFKhk5fOp3QMKYaBX3IzFE8vrnMnloCKBQY5DLpLdSortfcYLjzT
- EYalFe2mUzGfmOVmLXfkmcKlE+lefS3DalJy74rbG696aOTnAYesFpPH3pa8
- kNSTPZCLV56sFmR9Tl/U9eUVmuRkUqrIa8Lwmg4lE920q2RGClyYL5qNsum8
- 9skYxgp2xbBKhsP9eTeYyAthOpuW4bomdcRITlQs2+WiRpW0b1dJnfDuW9xH
- T/xNCIbpnTD3Enc5sW4IYXtG8D4MV7predH6YxU6tWeUqqMfTFH8fiVfp+KU
- MEMfdRjiZLMUWScrkZXVhU8YUj9D+RDg7tFIu9GHYfozgrooQGEUY37Jk9fL
- OkDeOCFZwPnY7wiyg+pHDH3BNMPbE1I5IFICKp84EUK7xP24H2BYgAKm8YDG
- KNJYxMOA4y4ekf3PlUFXBOVDr0ACXd1FJI9reczmcR1JcnEjj5uY2wVzMY9b
- u4i6vnvbxbiLO1ihzb5WS/RpASjzE1u+Yp2EBgAA
- """,
- """
- androidx/compose/runtime/DisposableEffectScope.class:
- H4sIAAAAAAAA/51UW2/TSBT+xrnYNaVJw603CgsBWgq1E9gLpCBBF7RBoSAC
- lVCfJs60TOuMkcep+ljxsP9hX/cX7D4VLdIqKm/8KMQZJy3d7kMpljzn/p05
- c87Mp8///AvgNu4wzHPVjiPZ3vKCqPM20sKLuyqRHeH9KjXJvBWKR6urIkia
- QfRW2GAMxXW+yb2QqzXvWWudTDYyDPkFqWRynyEzM7s8jBzyLrKwGbLJG6kZ
- /MbxUtUYhiLVNwmG5kxjI0pCqbz1zY632lVBIiOlvccDzq/NfnuCF0J3w4Qy
- tI5CXdizv6Liave/K8nlRhSveesiacVcEjhXKkp4P9FSlCx1w5C8CvvF9sMd
- FBimD+xOqkTEiodeXSUx4chA2xhlOBO8EcHGAOg5j3lHkCPDtZnG4UbVDmia
- BmStZnp1CqddlHCG4e7xelTe33O5YuMclXp0l9LZGHcxhgkG75inaWOKYaQs
- y6vlA7PB6gwXj0rMMLrn8lQkvM0TTjqrs5mhu8DM4pgFBLdB+i1pJJ+4doVh
- pbc94VpjlmsVe9uu5VipYNhUZ431tquWzx7mdv/Mk/hkqpiZsPxsdcTJFnMT
- Tilbsnzbz/+2+7vz8T3rbe++s2w35+z+UfWZSVFlJnHlO4artFfUwUrdvpOe
- 30jo/i1GbTqkQkMqsdTttET80uCY0Cjg4TKPpZEHyqGmXFM86cbET77oZ6+r
- TaklmR98nVyG8mHr/uz9x224rpSIF0OutSDRbUbdOBCPpUk2PoBY/h88KrDo
- +TCfRSdDrwmtPkmeaRDR3PUdOH+n5gqt+VR5AlVah/sOGIJLdJS0wwRlgpeR
- gWnr6blS8T3OZu59wNjruR1M9nD+r30sl6iDEboWpRTvIsU4hDGNC2Sh6AGy
- 4QpkZbiVxp6kJ7W/kxGiP9Jvs4GQwU8pMKOxN984fk5DPPxCdJH0P9CGL60g
- U8flOsp1XMFVYnGtjhnMroBpXMfcChwNV+OGRl7jhMZNjYLGPGm+AB149ZDV
- BQAA
- """,
- """
- androidx/compose/runtime/EffectsKt.class:
- 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
- C7XJpgW2HAAA
- """,
- """
- androidx/compose/runtime/LaunchedEffectImpl.class:
- H4sIAAAAAAAA/5VSW08TURD+znbZbleUsgKWi4iCUKiwhfhWQqJETJOKBpSY
- 8HS6Xcppt2fJXhoeG179F/4DH4zEB9Pgmz/KONuLIKiEZPfM5Xwz852Z+fHz
- 6zcAT7HKkOOy4nuicmzZXuPICxzLj2QoGo5V4pG0D53Ki4MDxw6LjSM3CcaQ
- rvEmt1wuq9brco1ukkgwaOtCinCDYTZbqnuhK6RVazasA0oRCk8G1lZPWy0s
- 7jGI61Dry32A7fleFArpBNamR8xkxGPEOeAdFS5sFHKly8TIGdeaLXl+1ao5
- YdnngmpwKb2Qd+tte+F25LoFBjXkQV1HimH6AjMhQ8eX3LWKMvQpWNhBErcY
- Rqkxdr0X/Yb7vOEQkGEhe5XFBc9unKRKrAZxG3cMDGKIIZGN7QEMG1BhMsxc
- 18BBpDCSgoLRmPahCBiWSzcYI722cl37b9r9vzWfYbiPeuWEvMJDTj6l0UzQ
- 8rH40OMDDKxO/mMRW3nSKrSXH9qtCUPJKIaSbrcM+jp6x6ZfV/R2K9NurSl5
- 9nzenEorExmdmYapm6qp5AfyqqmZaoblWT7x/ZS1W2cfNSWt7Sz+D/j+7ETt
- g1Wqkzw7UUjq4zGlNRYTNfsPOp/GhYH9o1kEMbrdD1bqIUNqV1QlDyPfYZjc
- 6Y6pKJsiEGXXeXa+nTTdTa9CoKES5dyOGmXHf8sJE/PwbO7ucV/Eds85dznX
- 78X8I6mx60W+7WyJOGa8F7N3pTpWacPUznjMeOHIWiRLwTiWSGrk17vDo93V
- kECOrBLdKyTTOdM4RXrpC+4u5T5j7FMn8gmddwipYQsGXmKI5DL5xroxuIdM
- vA+kxfVYr14SKySTrFdQgdU5s8iT3CTvBBGY3EeiiKki7hcxjQekYqaIh3i0
- DxZgFnP70ANkAjwOkAowH2Cho2sBRn4Bxaa1HQ8FAAA=
- """
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgMuSSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeJ0TUtLTS4p9i4R4gpKzU3NTUot8i7h4uNiKUktLhFiCwGS3iVK
+ DFoMAGDKMaZbAAAA
+ """,
+ """
+ androidx/compose/runtime/DisposableEffectImpl.class:
+ H4sIAAAAAAAA/51TS08UQRD+enbZx4iyLPJGQEFZQJgFvS0hUYRkkxUNS4gJ
+ p2a2gV5me8h0L8Eb0Yu/w3/gwWg8GMLRH2Ws3ocgxgAmM9VV1f1VfV1V/ePn
+ t+8AnuIJwxxXlSiUlWPPD2uHoRZeVFdG1oT3Qmqy+U4gVnd3hW+KtcMgCcaQ
+ qfIj7gVc7Xmvdqq0k0SMIbEklTTLDBO50kFoAqm86lHN260r38hQaW+tpS0U
+ prcYPlx1ammudG1qZT88FIXZ6wM2hK4HprDcoDJRCqM9ryrMTsQlUeBKhYY3
+ 6ayHZr0eBAW6n2ggU0gzjF6gLpURkeKBV1QmIrj0dRK3GHr9feEftPCvecRr
+ gg4yTOVKl+tXuOAp2yB7xKsTt3HHRSe6GGI5a3eg20UcWYbxqyrciTTupuGg
+ lyFu9qVm8K5fHdtpuvH7qzp00wb9R38YutssXgrDK9xw8jm1oxgNMLMibQUY
+ 2AH5j6W18qRVFhii05MR1xlwXCdzeuLS19Av/KcnKWfg9GTRybPno9n+jDPU
+ k41nnXy8ITvysbOPCSeVsDKT3Bj71/6bs3dxq1E8m3mRWT7ZNu/zrjDkb1oy
+ hoUbV43ms5179dgIGslQtUlsvm0EdZsAPX9gGNJluae4qUeCYXijGbuojqSW
+ FPnZ+WOgUVoJK3SoqySVWK/XdkS0abPby4Y+D7Z4JK3dck5ejvX7FfwR1C2H
+ 9cgXa9JiBluYrb+yI0/jHG+0Omunm6xZshwM4jGtCfKnmoNADyWBGObIKtG+
+ Q2tmNut+RWbmC3pmZj+j71MDOU/yDp1MUAwXQ+ii1SNfXxODfgzY2SLN5mOt
+ fEliAiRZK6GDhYacwSKtK+QdIgLD24gVMVLEvSJGMUYqxou4jwfbYBoTmNxG
+ SmNA46FGWuORxpRGTmNaI/EL6pV/cp8FAAA=
+ """,
+ """
+ androidx/compose/runtime/DisposableEffectResult.class:
+ H4sIAAAAAAAA/5VPzU4CMRicrwssrIqLv+gDEL24QEw8eDJR4xqMCSZcOBW2
+ mMKyJbQQjjyXB8PZhzJ+C09g0kxnvp/O9Of36xvALc4JkcySudHJKhqa6cxY
+ Fc0XmdNTFT1qy1oOUvU0Gqmh6yq7SJ0PIoRjuZRRKrPP6H0w5p4Pj+An2w1F
+ 8K6ue4RaZ2JcqrPoTTmZSCfvCWK69NiacqjkAAJNuL7SuWoyS1qExmZdDURd
+ BCLcrAM+IhTlUX2zbosmvZZDcSma3ksjn24TWp1/foKDsG+wK9mbiWPxYRbz
+ oXrWKee/6O7We9pqXn3IMuOk0yazJbZEAdvgBUIRJWYCp1s8wRnfd/y0z51y
+ H16MSowgxh72meIgRhWHfZBFiFofBYsji2OLIuMfte9Y6pYBAAA=
+ """,
+ """
+ androidx/compose/runtime/DisposableEffectScope$onDispose$1.class:
+ H4sIAAAAAAAA/8VUXVPTQBQ9mxZKQ4HwIQIqVkFtA5Km4hcwzDBYxmpRh2p9
+ 4CltQ1mabpgk7fDk9CfpjI6jD06f/VGON0mRjjry8eJD9t69e/bs3bP35vuP
+ r98ALGOVYcUQVcfm1SOtYjcObdfUnKbweMPUnnCX5kbZMnN7e2bFK1bsQ3Pe
+ FmHcnNdjYAzKgdEyNMsQNe1l+YBgMUQYtDOz7phu06JNfQz9a1xwb51hLlWo
+ 257FhXbQamh7TVHxuC1cbavrZVbTJYbsaai14/U3RLu6HmxSTi4Qns+QPO2w
+ BGQMxiEhwRBJpUsJxDAsI4oRhqi3z12GtcLFZaRHiFXDCcPsv3OJYYJ04qJl
+ 1wk8kUoXfpefsp3E5UFcwhQ9wzkVYhg9jmybnlE1PINiUqMVoXJh/hD3BzCw
+ OsWPuD97T15VZ0h12iNypy1LU1JgFEllnfaAPNVpZ6UMezagSDNSJvJ00sdn
+ GfSzaxYWCaVCJy+dT+kYUgzxX3IzFE8vrnMnloCKBQY5DLpLdSortfcYLjzT
+ EYalFe2mUzGfmOVmLXfkmcKlE+lefS3DalJy74rbG696aOTnAYesFpPH3pa8
+ kNSTPZCLV56sFmR9Tl/U9eUVmuRkUqrIa8Lwmg4lE920q2RGClyYL5qNsum8
+ 9skYxgp2xbBKhsP9eTeYyAthOpuW4bomdcRITlQs2+WiRpW0b1dJnfDuW9xH
+ T/xNCIbpnTD3Enc5sW4IYXtG8D4MV7predH6YxU6tWeUqqMfTFH8fiVfp+KU
+ MEMfdRgGyGYpsk5WIiurC58wpH6G8iHA3aORdqMPw/RnBHVRgMIoxvySJ6+X
+ NU7eOCFZwPnY7wiyg+pHDH3BNMPbE1I5IFICKp84EUK7xP24H2BYgAKm8YDG
+ KNJYxMOA4y4ekf3PlUFXBOVDr0ACXd1FJI9reczmcR1JcnEjj5uY2wVzMY9b
+ u4i6vnvbxbiLO1ihzb5WS/RpASjzE60KhHSEBgAA
+ """,
+ """
+ androidx/compose/runtime/DisposableEffectScope.class:
+ H4sIAAAAAAAA/51UW2/TSBT+xrnYdbtNGm5tYaFAgJZC7YT7hkXaLVsRFAoi
+ UAn1aeJMy7TOuPI4FY8VD/wHXvkF8AQCCUXljR+12jNOWgo8dIslz7l/Z86c
+ M/P134+fAVzFLYY5rtpxJNsvvCDqbERaeHFXJbIjvLtSk8xbofhnZUUESTOI
+ NoQNxlBc45vcC7la9R621shkI8OQvy2VTO4wZKZnlkaQQ95FFjZDNnkuNYPf
+ OFiqGsNQpPomwdCcbqxHSSiVt7bZ8Va6KkhkpLS3MOD82sz/T/BY6G6YUIbW
+ fqi3d+xPqbjanV9KcrYRxavemkhaMZcEzpWKEt5PtBgli90wJK/CbrH9cAcF
+ hpN7didVImLFQ6+ukphwZKBtjDEcCZ6LYH0A9IjHvCPIkeHCdOPHRtX2aJoG
+ ZLVmenUIh12UcIThj4P1qLy753LFxjEqdf8upbMx4WIckwzeAU/TxgmG0bIs
+ r5T3zAarM0ztl5hhbMflgUh4myecdFZnM0N3gZllyCwguHXSv5BG8olrVxiW
+ e1uTrjVuuVaxt+VajpUKhk111nhvq2r57O/c9ps8ifdPFDOTlp+tjjrZYm7S
+ KWVLlm/7+Xvbr5wvH1hva/ulZbs5Z/t11WcmRZWZxJVfGK7STlF7K3X7Tnpu
+ PaH7Nx+16ZAKDanEYrfTEvETg2NCo4CHSzyWRh4oh5pyVfGkGxN//HE/e11t
+ Si3J/Ne3yWUo/2jdnb3v3EbqSol4PuRaCxLdZtSNA7EgTbKJAcTST/CowKLn
+ w3wWnQy9JrT6JHmmQURzF9/DeZeaK7TmU+UwqrSO9B0wBJfoGGlHCMoELyED
+ 09bDs6XiBxzN/PkJ489m3+N4D7+/3cVyiToYpWtRSvGmKMYhjJM4RRaKHiAb
+ rkBWhitp7G/0pPZ3Mkr0Gv02GwgZXE+BGY29+SZwIw3xcJPoPOlP04bPLCNT
+ x9k6ynWcw3licaGOacwsg2lcxOwyHA1X45JGXmNY47JGQWOONP8BWe15VNUF
+ AAA=
+ """,
+ """
+ androidx/compose/runtime/EffectsKt.class:
+ H4sIAAAAAAAA/+1Y3VMb1xU/qw+0LALL4ltJHcWQBoSxtOLDYGFcB3CsGmMq
+ 2VCX1ukiFryw2lW0KxmctHGn05m+9B9IHjqT5770pUmbGTfTx/5Rnf7u3ZWQ
+ YAHBOEwfCiPds3vPOfd3Pn539+rf//nHGyKapN8JdF0xtsqmtrWfLJjFkmmp
+ yXLFsLWimlza3lYLtvXQDpEgUGRXqSpJXTF2ko83dzERIr9AUl7bUh1FgYZG
+ lvdMW9eM5G61mNyuGAVbMw0red+VUpnRNYHSZ2nN1eafGpqdmedGHyyfCHOB
+ XyubupoBhGWzvJPcVe3NsqLBqWIYpq04C6yY9kpF16HVpnLEIkkCXWsAoxm2
+ WjYUPZk17DLMtYIVorBAvYUXamHPtV9VykpRhaJAH44sH81KpuFOnjnZAf4w
+ ddEViTop0ryeR/AhigKfZlTNPVWgnpHR4yuEqYd6O6ib+gSKn5VxFG5Rs9wE
+ tVoomef8j2dpzY2fXJWji+YLZknNjLVukFOtil4rf3cNyaJaKqsFxVa3EFmo
+ qFqWsoM8DayWzSo6Ma7YcV1VLDtuGmp8Tz0QKKirVVUXaPCoC0SwzKbgKLiU
+ yz3OCfTeYa6zuq7uKHoezaMu7RfUEtMP0XU4OmmtmyINCyTaplP3o9VzuyFM
+ P6YPJQrQCOo8p6HF59FgI95tk6AxiYboxpmFlhHFlFc3tlDnL89vd3mVHz6N
+ 0GCjy/vxlr1niyU9RGmW25hEEzQp0NiwNqwMj5fVolrcVMvj9Y1v+KjxsCyQ
+ kBWoExbbwzUDgQIoP6aixxMp0MenbxLnKNRf3oanyyvdOdKadlKI4VlrMV4o
+ f29+GN//kxmdcDKKYXpk42Lp+uoChpeXCxadJdJS7c2kYmt68l65rBzgmf0x
+ 9lZ4P3i8LdCoVxjZUY+bYcrSTyV6QA/PlWrsIO2aUarY1rBWxbPKw7NAXcsK
+ cvRC3ao9g7UWnq6uQsEsmwjPUC287CA1RoVvgIcK7ovS2PGFnVwFN3WzsCdS
+ TqRrAn12of3+bWEZO7HczRly9uk1idbZFj16YjmardgG/ae3tE2+rYhbxo7t
+ 788/2BZ16dFg6/n8YjvIpUNFg12tOX2k2sqWYivgrK9Y9eOYJLCvdvZFePrv
+ McGHyX2NSSlIW7Lg+/r719PS968lX8THhwFf04fPsC/RD+GqM7I5McjG2PuY
+ jPlSQro/4ot1RwNRXyrAv4Mp/7++bvOJbQ9CsbGakhgJxQIDQko8VX3quLoY
+ aW/B8O5phmJEasHFfM1FX6QjFo6KohDlRqnw9TON2RjpjGUjXS2AeDdyJTYA
+ 71JU5H6EVCTa5q7ld31dRUQn+2rFQxTJPOqhFbvu2IJrd1IeWvHSico7XlrR
+ 7on1RXq5dhg5run1PQixTsUWQ+w91W32xuND6rxPboHkcz+7cf6trb20b6s4
+ YptGDcSTA+40fgb/Mx742TlXcul9cw9P10TjLlM/1ufNSrmgLqqblZ366uz4
+ V1X0iioIVv7RvdUGN9JD7kNK5OM16b40FpfjDSpn/3oCi3Q85+5Bp5rUlGCT
+ WJbkIfmGLE/eliV5Yih9W5anpHSKC9NSeoYLt6SJSS7M1HRmXZ10ytVJy65O
+ On0YB8/AxYIBsMnUkMzhTM5yYVqacoRb0vQtLsxIM1NcmJVmJ5kAOHLKkRCO
+ nOYSAC1JeJFbMLdwhL+yjEqvVFj8T1jbsCqbBUVfU8oau3Zvtue1HUOxK2XI
+ 7+QceFmjqlkapu8dHg5xcjw6W//hpklNOvxJAWd712bNw5/kdM99jcHo8Wol
+ ksmHgz3766BBClIbrl7iag73QTzqSkQ7vqWrib9Tv0Drf2UPEtrHt4SxjUTq
+ pHY6wHXY0cb9AYyvuF6IPsPYhhkR4+f4gNDIB4RB/McwxZa6Q35u3O0s9R0N
+ PYt+8Dca/YbG/1lfj3mR6P2GtbpxfbO+1jv0Gx7Fb/GJYv5d3PuRRdfoPZXi
+ sDsVSdINuggkLBm9YxyJ/45//juaeDb2DU01xt7H8zQCXxYwjGA9i3polGNL
+ wIGEmWm6BWcisjoDycec0izd5hh7OXLBRZ46hq2TpV7mz+4awoyLcB9OgwzC
+ DQfhvH86wCDe8IQow6UNCDKSZWPZNIc4ibkOzNwBsADGMIfo51Y1iH00D0ng
+ EgPrc8HOHQPb7a+DbYZ814X8e7huw9g/7kCeDvingwzzuCfmDBxUgCmDlFZw
+ b45jnsdMGGveA9IgNBzMrFb9dcz9dcz99BEkH5cYer+L/ifH0A8GjqBvjmHB
+ jeEPbtqHEtH7iMFpj0Tizbe0/KheA682CcNFL1VBigW0YZWu02K9BgNA8YhH
+ 0VuvQTcotEKPOfYhWoJEXGpsmEXvhmlvQL7qRa58jVxPvMm10kSuXAO5fnZx
+ cq16kStfJ9c6y9rPj3fBU/h6CUxPsd5LdMJaE7menUquXEOunp5NrlUvcuUP
+ ybXOyOUB8Tlc7gPCcyRrH8t+0kSujRbJlWsg1y9aJdeqF7nyDeRaZ+TywPyC
+ 79ZhjD0Y+0hrItevzk2uXAO5fnk+cq2eTK78MXJ5t0mYSsj7KxCphDZ8BXJ9
+ 2kSuT1okV2PDPD+LXAH6gita9Bq3/v/+dfnvX3wbKqEcv0adlQ3yZ2kzS4Us
+ bZGapW3ayaK/tQ0Uh3Zpb4P6LRq0SMez2qKiRYZFpkUli2b5zXmLPrJoicsL
+ Fq1alLPoU4vuWpSxKGlRzKKgRWXeF11Y1canwr1X/wvUiR6dlRwAAA==
+ """,
+ """
+ androidx/compose/runtime/LaunchedEffectImpl.class:
+ H4sIAAAAAAAA/5VSW08TURD+znbZtitCWQHLRUSLUKiwhfhWQqJETJOKBpSY
+ 8HS6Xcppt2fJXhp8a/wp/gMfjMYHQ3j0RxnntEUQVEKyO7f9Zubbmfnx89t3
+ AE+wylDgshb4onZsO37ryA9dO4hlJFquXeGxdA7d2vODA9eJyq0jLwnGkGnw
+ Nrc9Luv2q2qDviSRYDDWhRTRBkMuX2n6kSek3Wi37AMqEQlfhvZW31otLe4x
+ iOtQ68tnAMcP/DgS0g3tTZ+YyZgrxDngLTUubZQKlcvEKKh65Sp+ULcbblQN
+ uKAeXEo/4r1+2360HXteiUGPeNhMIc0wc4GZkJEbSO7ZZRkFlCycMIlbDGM0
+ GKfZz37NA95yCciwkL/K4kJkVxWpE6tB3MaQiUEMMyTyyh/AiAkdFsPsdQMc
+ RBqjaWgYU7QPRciwXLnBGulva9eN/6bT/9vwGUbOUC/diNd4xCmmtdoJOj6m
+ RFoJMLAmxY+F8opk1egu3590Jk0tq5la5qRj0tO1uz69KS110smedNa0InuW
+ s6Yz2mQ2xSzTSlm6pRUHirplWHqWFVkxcfrR0DLGzvz/MO9OP+iE06l6UhFY
+ Y4qWdUb/fPYX1vOP0RDE7M06XGlGDOldUZc8igOXYWqnt5SybItQVD336fkt
+ 0i43/RqBhitUcztuVd3gDSeM4uE73NvjgVB+Pzh3udbvM/yjqLnrx4HjbgmV
+ M9HP2bvSHat0T3p3GZY6L/IWydMwgSXSBsVTvVXRpRpIoEBehb5rpDMFy/yK
+ zNIX3FkqfMb4p27mY5JDhDSwBRMvMEx6mWLjvRzcRVZtnyzVj/X7JbFCOsn6
+ DTXYXZlHkfQmRSeJwNQ+EmVMl3GvjBncJxOzZTzAw32wEDnM7SMVIhviUYh0
+ iPkQC13bCDH6C4u/Nd/9BAAA
+ """
)
val Dp: TestFile = bytecodeStub(
filename = "Dp.kt",
filepath = "androidx/compose/ui/unit",
- checksum = 0x9e27930c,
+ checksum = 0xe65966ab,
"""
package androidx.compose.ui.unit
@@ -1290,65 +1287,65 @@
inline val Int.dp: Dp get() = Dp(value = this.toFloat())
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3ApcAlkZiXUpSfmVKhl5yfW5BfnKpX
- mqlXmpdZIsTiUuBdosSgxQAA2sByTDoAAAA=
- """,
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/3XNOwvCQBAE4JUExFUQrhARQbERLGIjWIt26QzYyiVZkoN7
+ hMsG/PmeqFV0YZphPhYAIgAYhIzgc3jAhbSld6p8JIUzjWspkVYZycpZMcuU
+ rTTdpO7o9G1Txj2u/qvQeBKT917mmgI44rwHfGdZGRJ4JUMmJ5+ymGZWNm3t
+ OGPJL7jFZQ92Kqm8bGpVtGJ4dtoFiesfH8Kws4pFfGnCYowxU8siuqe8gR08
+ AekscysQAQAA
+ """,
"""
- androidx/compose/ui/unit/Dp.class:
- H4sIAAAAAAAAAH1V3VMbVRT/3c3XZlnKkrZA6KektgGkCVihSsG2UFoQWi2I
- /dDWJdnCQrKbZjdMxyfGF/0L+uCbPnc6OqOUsTMO0jf/IJ8cx3M2NyENkZnk
- fpx7Pn7nd869+9e/v/8B4BI2BU6YTr7s2vlnmZxbLLmelanYmYpj+5npUgxC
- 4Ob8urlpZgqms5q5s7Ju5fzxBskUGZllc6VgXZk/xNP45LiA0ewohrDAsVbO
- YogKqKuWv2wWKpZAKN0/IxDZrO7EjA4NbXEo0AXC/prtCZw6NL5AZy7wbi25
- Q9nRy9n1x5fIYXpmpn9WoGMfw0zBNQlYQiAmDXQcQ6eGozhOsczyapbsXH/N
- KtM2TeY6DD5X0CvQ7ruLftl2VofsYqkgcJwUGtiqnhGY7mbZ9YpdyFvlGE4L
- RK/YhHoyyHpZx1m8o+EM+gTi06V0QMGEinOkZ5ZKlpMXGEofjHEwrAwxruM8
- LrDHtMDJVvgaFQdYcZAVpw5XHGLFi1S0GgNU2XSL3HVkMcy6IzpO4hTzRoVo
- XzO9tSk3b0ne1NpexxiSTP7lgA4ie5T3CojENutpxSx40qQrPXOwU/sfCGgV
- Z8V9Fmjp+Bhxtr5K5Q2YvPOEcb5FQtABhPM6pjjwtMDpDdcv2E5mfbOYsR3f
- KjtmITPrcEKenfNioN5UqVNuMB6BC+lDr0wdmo5bmNVwE3MCiYMKVOBqgtxG
- re0nMMnZ3Kl24rKGCLeJkXMdzy9Xcr5bluTwMYOsESFwlpM+7MZw433G3r+g
- C0cPhd7AdlZeHWJXKQ3zMELdWb9g/wM4uClB8b6mcs03kDq3WZx1aGPxPa0d
- LFi+mTd9k2RKcTNED5bgIUZwNkj0zOYdIVHyhODv3a2LmtKjaIrRoe1u0RTT
- FDVCs0pzmOY2+vOBGqXFEZoVde+7qz27WyNqIpxQsrtbWXE9kYgaSq+SDb3Z
- Ebtbez9Fw2rYiMydNlQSxkeihtbLmrf2niukIfa12gx9rtdop9MjIypphXtE
- tuPWm+eh4NQwOucMI8E+SCYC2VHjGMmOk6yrLus2eu52VgHQXqVEesNq1Ijt
- fS+UaqxvFcpDTWoRde/H01nB2RP1oHpMly5u+FRpvjX0os0Tm7crxRWrvMQP
- KneYmzMLy2bZ5r0Uti/6Zm5jwSzJfXzRXnVMv1KmtbboVso5a8bmg+TdiuPb
- RWvZ9mzSvOY4rm/6NjUahqmgEUJAXwsk+F2msnSgEyriJHFpl6GZQCIy8Cva
- X9JCQYnGaFWIpzTqcn2ETEGG9KRK449IW2HtvtQOul40WUcD666qBrqD4Lzq
- oRUHpYaTfiaknziDIFcnDnMVl0B4VXUV59dKuhojHbZIvsaZ+6+QSry7jf6+
- bbxn9G8js433f+ZmbcgrKZEJfvykk/OSFJXx7OCDZhu1zsVoPYdUjci+HXz4
- oskgUg8yRqS1DHKl2WY/CD0l0uYeZcdXKzX4J5QfEAm9GNyFso1rNyjqjXP0
- 38EngTxcpbDMtxJK/B90Kw0cpurlSBGH8wGSBdyWUYYbyzG4g0/3obUqAZkb
- Cr9I0nxSmmsDr3B3IPUb2n9p2VdVX1rdlxY0KJdzEUvS11lJktL3sokepdrO
- RhKfY1lqXyBy+Cz+Gsr9vle411y4OO4HRp38sWkuXO0GiBZdn8QDPJQGl2R+
- OnOeqnLezJCOLyXBOr7irIxreITH0sPVmocBWb5tmM0tH37LW40jXZYrBC/Q
- D8EPZgcVmr+h1QrNOcKdf4jQLKxZPKERqzyszcLGOqXhYQOFh0h66PBQ9KAF
- 46KHJQ+qh7iHR4Gkx4PhodPDQrCl34SHSQ9jHkY9Ns8GwpMeTv0H1Ho+rbgK
- AAA=
- """,
+ androidx/compose/ui/unit/Dp.class:
+ H4sIAAAAAAAA/31U31MbVRT+7s2v3WWBTdpSQktbQ20DSBOwQpWCUGhKEFot
+ iLaodUlWWEiyMbthOj4xvuhf0Bn7Vl986XR0RiljZxykb/4d/hmO47mbS8iE
+ yExyf5x7vu+c+52z969/f/8DwHUUGc6ZpXzFsfOPUzmnWHZcK1W1U9WS7aVm
+ yxEwhjsLm+a2mSqYpfXUvbVNK+eNN1hmCGRWzLWCdXPhBKbxyXEGo5kogiDD
+ 6VZkEYQZlHXLWzELVYshkOzPMIS2azuW0aGhTQWHzhD0NmyXoffE+AzRnM9u
+ LTtD6dEb6c1H14kwmcn0Zxk6j3LIFByTEosxRCRAx2lENZzCGYplVtbThHO8
+ DatC2yTBdRjinKOHod1zlryKXVofsovlAsMZcmhQq3ZGyZxttt2q2oW8VYng
+ AkP4pk1ZT/q3XtFxCW9ouIgEgzpbTvoSTCi4TH5muWyV8gxDyeMxjoeVIcZ1
+ XMFVwZhkON8qv0bHAeE4KBxnTnYcEo7XqGiHClBlky3uriONYeE7ouM8eoVu
+ VIj2DdPdmHHyltRNOdzrGENciH/Dl4PEHhV7DhKxzfq6ahZcCelKZo53av9D
+ Bq1aWnMe+1463ocq0FMMsePeJGmNUhSuFZmOCUwK/O1a7Vc0hERhjJxTcr1K
+ Nec5FZmOOKaWVQ5DM1wSWp/Uo6LUdwT7IrX4NoPecL+0bFa6Dy8Pi2GE+qHe
+ 0v+TsN+bvlwrJNDCluMV7FJqc7uYmt8uZku0scSXcXiwaHlm3vRMsvHidoCe
+ CCYGVQygnLbI/tgWO0qH5ymNv/d3rmm8m2vc6NT2d2iKaFwJ0azQHKS5jf7i
+ QAnTooNmrhx8N9W9vzOixIIxnt7fSbNbnbGwwXt4OnDwYzioBI3Q/DlDob06
+ Eja0HuE0d/CEv95j+zu+R5uhz/cY7XTSMaKQR7CbpTvnXj+p4Q0jOm8YMYEn
+ G/Ntp4zTZDtDtq667azRfT9aj6tQ/j1BJWxEDr5n/OBbHtFCysGzC2km7kpq
+ kwKh2fK1LY+KK1qTno0FEvButbhmVZbFqyWaysmZhRWzYou9NLYveWZua9Es
+ y726ZK+XTK9aobW25FQrOStji4P4/WrJs4vWiu3a5DldKjme6dnUWximGoYo
+ A3qSEROPHxWhE1EoUMnyFe1SokI0hwZ+RfsLWnCs0xiuGbFBoy7XHQSlsop3
+ S4LfI28uvBN9e+h63oQO++iumgfO+sHFqptWIij1mOSZkDyqSIKozp1EpcpE
+ xKpGpYonQVKNkY9AxF/h4oOX6Iu9uYv+xC7eMvp3kdrF2z/7TXl0r7jMjIkX
+ RpJckaIoIp89vNOMUepajNbv0HcoZGIP7z5vAoTqQcZItJZBbjZjjoLQ6yEx
+ 9+l24kPqHfwT/ClCgeeD++C7mL6duEwV+EFYgjXxbBoj4Oo/iPIG9Xrrhegl
+ 9W75OcxgVvIPNxZicA+Zo6RaiU9wg4vnR8InJVwbeIm5gb7f0P5Ly46qcWl1
+ Ls1vTVHILOYl1yUpD0+8aBKG1xrZiOMDLEjvqySLOFNfgT9IvMTd5pKpuOeD
+ ouItby7ZYe+zFv0ex4f4SAKm5f06/H5/ikjwJwQDR3qHwPWpRrk6qGI1tTuw
+ JK5oTGMZH0u6KUmnD8gq7uKT5s4PNrDpdcF0WbsANn3/ALb82UKB5m9o9SnN
+ Dyihh6sIZLGaxWdZfI4vaIlHWXwJcxXMxRpyq4i76HSRd6H5Y9bFvAvFhepi
+ 2bd0uzBcRF3M+Fv6TbiYdDHmYtQV8LRvPO+i9z+OvdduJAoAAA==
+ """,
"""
- androidx/compose/ui/unit/DpKt.class:
- H4sIAAAAAAAAAH1Qz0/UQBT+ZtrtlopQUJBdXH9gD0CiXYwHg1yMm00aV02U
- cNnTbFtx2LbTtFPCccOBP8Q/wDPxYDZw848yviGcmcP3vve9N9/Me3///f4D
- 4A0Chp4okkrJ5CyMVV6qOg0bGTaF1OGg/KjbYAz+iTgVYSaK4/DL5CSNSbUY
- WsepHpQM9na0M2TYvMOnjTa5xKqoddXEWlUvZV5m5upwZ7iIBXgeXNxj8AIZ
- fA9ujVnE4Ab6h6yDhNKV0VTpTBbhp1SLRGjxjoHnpxYNwgzQE2xqCCf9TBrW
- J5bsMezPZ0vefObxDe5x3/W4y7c6/nzW5X22y/v87fUFv75k89nVT8fp2q7l
- 21fn3Ka+jnF4bYB+0BvdMSP9BrSUQflqqmmyDypJGZZHskg/N/kkrQ7FJCNl
- daRikR2JSpr8VvS+qaaK06E0SedrU2iZp0eyllR9XxRKCy1pedgDhw1zqA0t
- OBSfUnZAkVN0rYPuxSUWf5kt4Bmhc1NZwHPi68Q4KfexRCp1Y5mY6dy6wSd4
- QXGfaj55r4xhRViN8IAQDyOsYT3CI2yMwWp6vTtGq8Zmjcc1erXhzn8XAJq+
- VwIAAA==
- """
+ androidx/compose/ui/unit/DpKt.class:
+ H4sIAAAAAAAA/31Qy27TQBQ9M04cx5TWLVCalPAoRqJIxSligaAbRBTJIoBE
+ UTdZTWxTprE9lmdcdZlVP4QPYI1YoAh2fBTiTum6m3PPPfc1Z/78/fETwHM8
+ YhiIMq2VTM+iRBWV0lnUyKgppYlG1VvTAWMITsSpiHJRHkcfZidZQqrD0D7O
+ zKhiaD2Od8cM21fs6aBDWxJValM3iVH1niyq3I6Od8cr6ML34eEagx/K8HN4
+ uZjFDF5ovkgdppSuT+bK5LKM3mVGpMKIVwy8OHXICLPQtQAam1vCqXgmLRsS
+ S/cZ9paLVX+58PkW93ng+dzjO5vBctHnQ/aED/mL3+f811fX7bc8J2jZoWcW
+ 6PJgcoU3egUdbY+qp3NDjt6oNGNYm8gye98Us6z+JGY5KRsTlYj8SNTS5pei
+ f6iaOsnG0ia9j01pZJEdSS2p+roslRFG0qdhHxwt/LfXQxsuxfuUHVDkFD3n
+ oH/+HSvfrHE8IHQvKl3sEN8kxkm5jlVSqRtrxGznwwu8h5DiS6oFtHt9CifG
+ RowbMW7iVkzjt2NsoTcF0+hje4q2xh2NgcZdbbn7D0kxfkBPAgAA
+ """
)
val Animatable: TestFile = bytecodeStub(
filename = "Animatable.kt",
filepath = "androidx/compose/animation/core",
- checksum = 0x68ff47da,
+ checksum = 0xb1ce1ffe,
"""
package androidx.compose.animation.core
@@ -1366,81 +1363,85 @@
fun Animatable(initialValue: Float): Animatable<Float, Any> = Animatable(initialValue)
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3Apc8ln5iXUpSfmVKhl5yfW5BfnKqX
- mJeZm1iSmZ8HFClKFeJxBPMTk3JSvUu4tLkkMDQUleaVZOamCvEH5yUWFGfk
- lwSXJJYAFSsxaDEAAKFdFhZ2AAAA
- """,
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/3XLvQvCQAwF8IiiGEThBhERBBfBoS6Cszh2s+KetqE9uI9y
+ TcE/3xN1KgZehsf7AcAQAAYxU/gennBNrgxel8+k8LbxLSfktCXR3qllpl1l
+ +EGm48uvTQWPuP2vYhNYzT57yg1HcMZVD4TOibas8MaWbc4hFbXIHDVt7SUT
+ kjfc46YHO51UgZpaF62aXL3xUeIcR8KtqPE9/lR2cIAXLlZThPEAAAA=
+ """,
"""
- androidx/compose/animation/core/Animatable.class:
- H4sIAAAAAAAAAI1VXW8aRxQ9syywrAEv1EkwidvEcRrATtZ20tYNlNZxGgkF
- ksimqJLzsoaNswZ2rZ0BpS8V6m/oS1/7C1qpUdo+VCiP/VFR7yzEMYZUfti5
- M/fj3DP33oF/3/79D4C7+JahYLkt33NaL82m1z32uG1artO1hOO5pPFtczs4
- WgcdOwrGUCrV71WPrL5ldiz30HxycGQ3RbExQ1eeVjEYZ3VRqAyRkuM6osxw
- MzcdNK3JNxhiuXq9WG8E+5Wq5x+aR7Y48C3H5XQD1xPBFbj5uNfpSPKUO5TL
- N+KIQNcRxhxDQvxwbO94bt/2he0zpKczxZFAMgYF8wy5qUr5PVc4Xdvcc61j
- /sITe5TUfkRXSjEku72gaIHuyXOG4oyr5asfxKydCicaH2FBRxoXiLXjElvX
- 6gQmKtm5MS4hI6+yyKCKFw5nWJsO/WDzqX5x2STH6jSsTo8SN87Vq0q17YmO
- 45pH/a75jrr5wH5u9TqCis+F32sKz69Zftv2i6MORXXi+QlNy6Et6pNNWsjl
- Z81VOJenYWDQKGLMT6rqpLpxrvpE8WkcK1iew03kaFYCtBkFmhVbojxlcr/+
- f3PoCTmK5JV6V5GaLawWVZd0SrcfohfJ5BJlYG1SvXTkaZ12rQ2Gn4eDjK5k
- FF3R6DOGA9qoY0U4MxwUVG04MBgJZiibynro/mI6YqhZZWs4SOuaYoSzaoZt
- sTe/RhQjsrtgRLNaWk1L87r2/ZufktKgDwe7F0556pRpLqtqMUPfTRnxAGzr
- IRkipEwYuuS2SXTr9NE7BBW9Pyp+4v3k3G4Leq57zqFriZ5Ptsu7oxpW3L7D
- HfLYfl8nms0dr0VO81XHtR/3uge2X5co8nl6TTl8viPPY+XKWaynlm91bRqV
- CdAE9anZrlnH4zB9z+v5TfuhIw+LY4zGFBts0ByGqQsKvT36JSBZCk4FfEUy
- QheOBWd6Wie21RPbGkmVJA00QijT6RnZZVfThdeIF9ZewSis/omLr5D9PYj9
- WtooRsar0AhdR4r235Dm6igSl3EFCHZLxIgFu9PcNGyTjClyniQ9QxL4mPaS
- QIlA5IXml8I//oIwqxVW117j6ij7fVpDYNoEjQgBarQmKUkK17A8vopJiDJ5
- uPAHjN9O2EcCpRYwjo8cxoxH7K5PVC4lnxxpy8Hf0QhQJ8DsX8gznEWNn0LV
- J1BvEKnRLoSdQBbxgOR35HuLGNzeR6gCs4J1WrEhl80K7uDuPhjHZ/h8H0mO
- KxxfcGxxfMmxxJHgiHJc4shwXONY5tLnHsfKfxpFtNlABwAA
- """,
+ androidx/compose/animation/core/Animatable.class:
+ H4sIAAAAAAAA/41VXXPaRhQ9KyQQMtiC2gkmcZs4pAHsRo775Qbq1HHqGaYm
+ ydiU6YwfOjIojoyQPFrBJC8t09/Ql772F7QzzaTtQ4fJY39Up3cl4hhDWj9o
+ 9+7d3XPPvfcs/P3Pn38B+Ag7DGXTbfue3X5mtLzuicctw3TtrhnYnkse3zK2
+ wqV56FgJMIZqtXF399jsm4ZjukfGo8NjqxVUmlN8m5MuBv28LwGZIV61XTvY
+ ZLhVnLw06Sk1GZLFRqPSaIZ2Ydfzj4xjKzj0TdvllIHrBWEK3HjYcxxBnmLH
+ iqVmCnFoGhTMMKSD5yfWtuf2LT+wfIbsZKQU0phNQsIcQ3GiUn7PDeyuZey7
+ 5gl/6gX7FNT6ilLKMFzq9sKihb5HTwpt64nZcwKG76el+L/Q9V6U0GPPsVvP
+ K7UpRXk7SP0MFUrpHcxryGKBKmC7lLlrOuEWlf/CGJeRE2VZZJCDpzZnWJ28
+ +lYhUS9SouG26TRNp0eBmxfqe2234wWO7RrH/a7xmrrxIKosNZIHfq8VeH7d
+ 9DuWX4m6ndCI53ukvCMraIw3fL5YmqZRpVgiYTGodGPET7ga5Lp5ofok8H4K
+ BSzP4BaKpLsQbUqBpt2tUpxNOn7jvzTtBULWdCrzuiJ1KzDbVF3ySd1+jF43
+ E0NSDGBgHfI/s8Vqjaz2HYYfh4OcJuUkTVLp04cDMuSRQ8kNB2VZHQ50RhPT
+ pXVpLXZ/MRvX5by0MRxkNVXSlbycYxvs1c9xSY/vzeuJvJqVs2J7Tf3m1Q+z
+ YkMbDvYWzpzUKNJMXlaTuraX0VMh2MYObcTJmdY1wW2d6Dboo4dNzJV+1IH0
+ G/nc7tAzSu7bR64Z9Hzau7IXFbLm9m1u04mtN8UigW57bTo0t2u71sNe99Dy
+ GwJFvHevJRTo22I9chbOYz02fbNrkV7GQNPUrFanbp6Mrmn7Xs9vWTu2WCyO
+ MJoTbHCHxKhQFyR6gPTTQvPn4aqMTZrjlHAyXNP7Ot1bOd1bpVmmmVSNGO7R
+ 6ltCE11dKL9Eqrz6Anp5hSnsd1x6gfyv4fUvaMzSNQEhQ6UAGubJ3iLPtegy
+ ruCqEApZS0SKhdZZeiruCzVJoZiIoS44vEu24FAlEJHT3JLy3U9QWL28svoS
+ 16Lo2zTGwNQxGnECVGmcpSAZXMfyKBtDSJVmpfwb9F9O2cdDpxoyTkUHRowj
+ djfGipcRT4+898K/uAhQI8D8HygxnEdNnUHVxlBvEqnIiuFBOFfxJc1f09kP
+ iMHtA8RqMGpYq1Fb18nEhzWK+PEBGMcn+PQAsxxXOTY4PuO4y7HEkeZIcFzm
+ yHFc51jm4kyFo/Avb5BXyJQHAAA=
+ """,
"""
- androidx/compose/animation/core/AnimatableKt.class:
- H4sIAAAAAAAAAJVRTW/TQBB9a+eDuqFxw1ebAoVyoRJi08KJIKQKKZKFCRKt
- eslpE6+iTezdyl5HPeYncUQcUM78KMSsGykSXKi1np33/GY8H79+//gJ4C2O
- GF4JneRGJdd8YrIrU0gutMqEVUYTk0t+VkExTuUn2wRjCGdiIXgq9JR/Gc/k
- hFifIdjoGPjLwXH8/4n7DBe3i3gfb4oYpEbYfvx3Vf0PlPZFbPIpn0k7zoXS
- BSXUxlYZCz40dlimab+FOhoBPGwxtJRWVon0UqQl9cEGDLvx3NhUaf5ZWpHQ
- 7ymtly18GiBzpkmyuXM84q+V83rkJScMb1bLMFgtA2/PC7ywSS+B1bLbpbu7
- 06l1vJ5XWb/HThthrUvYhZ7SWm43PjDc3RCv55ah9tEk1EI7VloOy2ws84ub
- 5XRiM3Ed5srhNbl1rqZa2DIn/+Brqa3KZKQXqlD0+WwzNVr0uSnziRwoF7a/
- ll7+I8QJTbQG95DMjRg+DghxwlQw6kffEXxzc8Njso2KbOMJ2daNANvkAU8r
- TROHa9WdCj+rbBfP6X7n2if9zgh+hHaEkCx2I3RwL8J9PBiBFXiIRyPUC3f2
- CuxXZ/sPX0TSqAsDAAA=
- """
+ androidx/compose/animation/core/AnimatableKt.class:
+ H4sIAAAAAAAA/5VRy27TQBQ9Y+dB3NC44dW4PNsNSAinhRVBSBVSJAsTJFp1
+ k9UkHkWT2DPIHkdd5pNYIhYoaz4KcceJFAk2VBqf+5hzr+ee++v3j58A3uCE
+ 4SVXSa5lch1OdfZVFyLkSmbcSK0ok4vwvAr5JBUfTROMwZ/zJQ9Trmbh58lc
+ TCnrMng7HkP4fPgi/v/GA4bLm1W8i3ePGKaam0H896sG76ntSazzWTgXZpJz
+ qQpqqLSpOhbhSJtRmaaDNupoeHDQYmhLJY3k6RVPS5qDDRkO4oU2qVThJ2F4
+ Qr+ntk62dElAZqFlAcRdWMehy2tpvT55ySnD6/XK99Yrzzl0PMdv0kfBehUE
+ ZIP9bq3r9J0K3T47a/i1gGJbeka7uZmG9Ijbu8SrhWGofdAJzdGJpRKjMpuI
+ /HKzoW6sp3bMXNp4m2xdyJnipszJP/pSKiMzEamlLCRdn++ko21f6DKfiqG0
+ Zb0t9eofIk5J1ho2AvWsznDxkKLQCka2fvwd3jerGx4RNqpkB48J2xsC9sgD
+ nlScJp5uWbeq+FmFRzgm+9aOT/z9MdwInQh+hAN0I9zB3Qj3cH8MVuABDseo
+ F/b0CgTV2fsD4lpb1BADAAA=
+ """
)
val IntOffset: TestFile = bytecodeStub(
filename = "IntOffset.kt",
filepath = "androidx/compose/ui/unit",
- checksum = 0xfd7af994,
+ checksum = 0xe18c78ef,
"""
package androidx.compose.ui.unit
class IntOffset(val x: Int, val y: Int)
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJ2KM3ApcAlkZiXUpSfmVKhl5yfW5BfnKpX
- mqlXmpdZIsTiUuBdosSgxQAA2sByTDoAAAA=
- """,
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/3XLOwvCQBAE4JUI4ioIV4iIINgIFrERrMUynQFb2SRLcnCP
+ cNmAP98TtQoOTDPMBwAJAIxip/ANnnBNrgpeV8+09Lb1HafktCXR3qllrl1t
+ +E6m58tvzQSPuP2v4hJYzT9/KgxHcMbVAITeibas8MaWbcEhE7XIHbVd4yUX
+ kjfc42YAe53WgdpGl52aXL3xUeIMx8KdqOSRyQ4O8AJoAzD57gAAAA==
+ """,
"""
- androidx/compose/ui/unit/IntOffset.class:
- H4sIAAAAAAAAAI1QTWsTURQ9781HJuO0mUwbTdOqtVZts3DS4k4RVCgMpBZq
- CUo2TpJpfU0yI3kvJe7yW1y7ESyCCwku/VHifZMgCAWFmXPvuffcj3d//vr2
- HcAjPGDYitPeKBO9SdjNhu8zmYRjEY5TocIoVUenpzJRBTAG/zy+iMNBnJ6F
- R53zpEtRg8F+Ikj6lMHaiaLdFoOxs9vyYKHgwoTDwCb0Rx5cXCuCwyP2wcPy
- nJUYTPVOSIbt5r/XeEzqs0S9zodEc/KGodzsZ2og0vAwUXEvVjHp+PDCoAcy
- DQUa2afQRGjWIK+3x/B2Ng1cXuUu92dTlz7uOy53rOpsus8b7HklsH1e4w2D
- rKntj482963j8jxKzKGqmunYfoGC5t9Bxy/oOfuMdoD35wUP+4rWfpH1EoZS
- U6TJy/Gwk4xO4s6AIkEz68aDVjwSmi+C7qtsPOomB0KTteNxqsQwaQkpKPss
- TTMVK5GlEnt0TpPexxHoW5MX6CuTNWgFCzbhFrFDUug7lOpfUayvX2KpvnEJ
- /3NeepdQC0Gttgk351KUqRlyT7dmuaebc8qsYHXROiSrc1b9C5Y+XdnQmwsW
- DcuoXFns/08xx70c7+A+2QPKXafcjTaMCNUIa4SoaViPsIGbbTCJW7jdRlEi
- kNiUcHNclrAlViRWJSq/AaJQvyMZAwAA
- """
+ androidx/compose/ui/unit/IntOffset.class:
+ H4sIAAAAAAAA/41QTWsTURQ9781HJuO0mUwbTdOqtVZNs3Da4k4RVCgMpBZq
+ CUo2TpJpfU0yI3kvJe7yW1y7ESyCCwku/VHifZMgCAWFmXvvOffcj3d//vr2
+ HcAj1Bm24rQ3ykRvEnaz4ftMJuFYhONUqDBK1dHpqUxUAYzBP48v4nAQp2fh
+ Uec86RJrMNhPBEmfMlj1KNppMRj1nZYHCwUXJhwGNqE/8uDiWhEcHqEPHpbn
+ qMRgqndCMmw3/73GY1KfJep1PiSagzcM5WY/UwORhoeJinuxiknHhxcGPZBp
+ U9QGNLdP/ERotEtRb4/h7WwauLzKXe7Ppi593Hdc7ljV2XSf77LnlcD2eY3v
+ GuRN7X98tLlvHZfnLCGHqmqmY/sFIs2/Sccv6Dn7TE/3/jzjYV/R7i+yXsJQ
+ aoo0eTkedpLRSdwZEBM0s248aMUjofGCdF9l41E3ORAarB2PUyWGSUtIQdln
+ aZqpWIksldijm5r0Po5AH5yiQJ+avEErWLDJ3iV0SAp9h1LjK4qN9UssNTYu
+ 4X/OS7fJaiGo1T2ym3MpytQMeaRbszzSzTllVrC6aB3qS5O3Gl+w9OnKht5c
+ sGhYRuXKYv9/ijnu53YLD8gfUO465W60YUSoRliLUMM6hdiIcBO32mASt7HZ
+ RlEikLgj4eZ2WcKWWJFYlaj8BpHq1rYeAwAA
+ """
)
}
diff --git a/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/PrimitiveInCollectionDetectorTest.kt b/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/PrimitiveInCollectionDetectorTest.kt
index 251dd7d..9dc2cee 100644
--- a/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/PrimitiveInCollectionDetectorTest.kt
+++ b/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/PrimitiveInCollectionDetectorTest.kt
@@ -451,45 +451,45 @@
val SimpleValueClass = kotlinAndBytecodeStub(
filename = "SimpleValueClass.kt",
filepath = "test",
- checksum = 0xc2548512,
+ checksum = 0x8b98db3a,
source = """
package test
@JvmInline
value class SimpleValueClass(val value: Int)
""".trimIndent(),
- """
+ """
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBihQYtBiAABw+ypgGAAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgkucSTcxLKcrPTKnQS87PLcgvTtXL
+ ycwrEWILSS0u8S5RYtBiAAC6aGYHOQAAAA==
""",
"""
test/SimpleValueClass.class:
- H4sIAAAAAAAA/31U31MbVRT+7s2vzWaBTaBAFtT+0DbhR5NirVUKUtDapaGt
- UKMUfVjCTlhINpjdZOob44v+BT74ouOLfeBBZxTQzjhI3/ybHMdzN5uEWTLO
- ZPbee+75zvnOd87N3//+8SeAm/ic4YJrOm5uzaruVcyiUWmYSxXDcWJgDOqO
- 0TRyFcMu5x5t7pglN4YQg1Q2Xc+RIZTJ6gyRZuvEdAUxSHFwxBnC7rblMIwU
- esafZehza2tu3bLL0+KOiGT0bKGbsXVHfiNB22LDqmyZ9RgGGKJ3LNty5z0q
- RQVJpGSoGCRUMGPGYzkn4QKhjL09095imM6cz3iehJ9wVsEIRkX8NMN4L7Zn
- HceE47hwXPp/x1eF42uka1sPhqFMDyUUXMJl4XuFxDXq5byCPvTLpPZVEnPb
- cLaXalumL2aY6FFrkt0ouu2aZaHaBKVqeyuYQlbGJKYVZMSOI8eQML9oGBXH
- DzWc0QvBQZjNPmWQG/Zm7ZnnpeBNRAX6Jo1Dzd026wyp8yhSvhVadLtXUAU3
- MCPivNsqoSgjLLqplmq249YbJbdW92lJ7dwMmuhF7zETI3FHBLxL89lkUM6U
- lieuGV0XpfC9G+IzQ9UWdmtuxbJzO81qbrlZ1W06mMQ82b5YMV1jy3ANsvFq
- M0TviImPJD6gLLtkf2aJEyXgWxT495P9yzIf5TJXT/Zl+nFVkrkUoTVBa5TW
- flpD0unXC6Mn+zM8zxZTqajKNZ4PvTxmJ/unP0bDUliNLGuqRMb4jKTKWniU
- 5dn9l9+GvNuEqiyrap+AkI15tn5CqOoA2dSOLammVpOt0HSWiI4WlqJq7PQb
- xlu5vuJhYpM+fR4dFAWQKFSW+sCr/nHF+LJcrzXE4xkMqn1916W2ibliGCiQ
- bA8b1U2z/sTYrJhiHmolo1I06pY4+8a+Ndco7a4Ye/5ZXqs16iXzniUO6dWG
- 7VpVs2g5Ft3ete2aa7gWjQKNCafJEMRS4j+HdqLTEUTJ8gmdcqITtEYmfoV8
- QBuOT+kb9YyDWPcAngMStAPi4jH54LfJW9ylX0BdP8JQavgQmnaIV9TsIS4e
- 4vWfvczdIGm84XFg4on6Qa76DCTB4BjXghipk5geno+50matHeP6QQAQ6SSZ
- 6pQZSJIPYrpJ6F35mEdUnZhObfIv8O8QCR1MnoAf4q05bfx7cQy39HpK3xh4
- /B/0t0IOk5FgPg2xu0VSCQK38Y4fXPRFeMUFocljzHYZteBxn5HYeXCViyfq
- w+d9uDxxhLmJsd8g/9Kzd61YcieW7A0Bo5jzHTEv+tpwLagKb42MmsZ7WPC9
- r5Em4i7+AnxdO8JisF9xLHmgpPirC/arPWWsx2Sl8T4+CNSX0MZ+QCz8E8Kh
- rtgREnvhrFYJ3POlTuBDrz6ODc+9iM9o3aXdfVp1gi5vIKTjgY6CjhU8pC0e
- 6XiMjzbAHKxibQNDDhQHTxzEvO+8g6yDiIOog9ue5Ra9KwczDqYcZBxc8ox9
- DvodfPwfuO9oETMIAAA=
+ H4sIAAAAAAAA/31U31MbVRT+7s0m2Ww2sAktkAW1P7RN+NGkWGuVghS0djEU
+ hRql+LKEHVhINpjdZPrIm/4FPviiow++8KAzCoydcRDf/Jscx3M3m4RZMs5k
+ 9t577vnO+c53zs3f//7+B4B7+ILhqme5XmHdrh1UrbJZbVpLVdN142AM2p7Z
+ MgtV09kprG7tWRUvjgiDvGN5viNDJJc3GKKt9okZKuKQE+BIMEjeru0yjJT6
+ xp9lSHn1da9hOzvT4o6I5Ix8qZexfUd+I2HbYtOubluNOAYZYg9tx/bmfSpl
+ FWlkFGgYIlQ4Y85nOSfjKqHMgwPL2WaYzl3OeJlEkHBWxQhGRfwsw3g/thcd
+ x4TjuHBc+n/HV4Xja6RrRw+GK7k+Sqi4jhvC9yaJazZ2iipSGFBI7Vsk5q7p
+ 7i7Vt61ATInoUWvSvSiG41k7QrUJStXxVjGFvIJJTKvIiR1HgSFpfdk0q24Q
+ ajhnlMKDMJt/zqA0na36C99LxZuICfQ9Goe6t2s1GDKXUaR8O7Todr+gKu5i
+ RsR5t11CWYEkuqlV6o7rNZoVr94IaMmd3Ay66EX/MRMj8VAEfETz2WJQL5RW
+ JK45wxCl8IO74jND1Zb2617Vdgp7rVphuVUzHDpYxDzduVixPHPb9Eyy8Vor
+ Qu+IiU9CfEBZ9sn+whYnSsC3KfCPZ4c3FD7KFa6dHSr045qscDlKa5LWGK0D
+ tHL5/KuF0bPDGV5ki4OZmMZ1Xoyc/xCTZEmLLuuaTOfEjKwpujTKiuzJX9+0
+ b5OauqxpKeFNNubbBgihaYNk07q2tJZZS3ejysREl+SYFj//mnFBlcqnAobC
+ It7Z96gbYlwYBkukxtNmbctqPDO3qpZoc71iVstmwxbnwJha98zK/op5EJyV
+ 9XqzUbEe2+KQXWs6nl2zyrZr0+0jx6l7pmdTh6n7nBouWGTEXwntRAOjiJGl
+ TKeCEJjW6MSvUI5ow/EZfWO+UcLnPsB3QJJ21BXxRgLw2+Qt7rIvoW2c4Epm
+ +Bi6foxXtPwxrh3j9Z/9zL0gWbzhc2Di5QVBbgUMZMHgFLfDGLmbmN5TgLnZ
+ Ya2f4s5RCBDtJpnqlhlKUgxjeknouQSYVapODJ0++Sf4t4hGjibPwI/x1pw+
+ /p04Sm29NugbB0/8g4F2yGEyEiygIXb3SSpB4AHeCYKLvgivhCA0eYrZHqM2
+ PBEwEjsfrnHx8gL4fABXJk4wNzH2G5Rf+vauHUvpxlL8IWAUc74r5rVAG66H
+ VeHtkdGyeA8Lgfdt0kTcJV6Cb+gnWAz3K4ElH5QW/2DhfnWmjPWZrCzexweh
+ +pL62PeISz9BivTEjpLYCxe1SuJxIHUSH/r1cTz33T/FJq27tHtCq0HQ5U1E
+ DHxkoGRgBU9pi1UDH+OTTTAXa1jfxJAL1cUzF3H/O+8i7yLqIubigW+5T+/K
+ xYyLKRc5F9d9Y8rFwH8DJohDBwgAAA==
"""
)
}
diff --git a/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt b/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt
index 6c011af..c512441 100644
--- a/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt
+++ b/compose/lint/internal-lint-checks/src/test/java/androidx/compose/lint/UnnecessaryLambdaCreationDetectorTest.kt
@@ -42,7 +42,7 @@
private val stub = kotlinAndBytecodeStub(
filename = "Stub.kt",
filepath = "test",
- checksum = 0xdbff73f0,
+ checksum = 0x8a5a4526,
source = """
package test
@@ -67,29 +67,29 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3AJcbFUpJaXCLEFlxSmuQNpEOAPO8S
- JQYtBgBDd0xtMAAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgEuNiKUktLhFiCy4pTfIG0iFAnneJ
+ EoMWAwBxHEvpMAAAAA==
""",
"""
test/StubKt.class:
- H4sIAAAAAAAAAJ1UW08TQRT+ZnvZpRRZKigtCqhVCl621GuEmBgTQmNFI4gP
- PE23Cw5tZ83utOGR+OJv8MnEf+Cb+mAIvvmjjGe2FLlUUZvsnJlzvu9858yl
- 3398+QrgFu4x9CsvVM6yalUfKxOMwd7kbe40uNxwnlY3PZe8MQZrvSVdJXzJ
- ECtMrzJkHvnN137Iqw1vYT90qVCp+6ohpLPZbjpdSuh0EcU5TS2dhJrvxl9I
- oeYeRKTLFS5rgS9qW44bKXtO0JJKND3nVyVzVELFDzacTU9VAy4oKZfSV7wj
- sOSrpVajQSjT9aXypLKQZhg/UI0gdyB5wylLFRBfuKGJUwwj7ivPre8leMYD
- 3vQIyDBVqBzdr7kDnmWdZIMaSMPGUAqDyBzW69G9iWGGpJBtv+4xDBemjyuk
- cQZn+zGCUYbJk7acYbQsCeD1OrHzeZFfz/8+zsoM2eeeWBderVd8cX7l/vH6
- HvzPCY9HpfxBa6hLeuIpXuOKU2tGsx2jq8z0kKBy63pikH9L6FmRZrVZhvc7
- 28Opne2UYRuRGTU6nxXPjdk72zmjyEpDtpEbyMQzNC/Gdj8kKbho5ibsxG+j
- u2+tb58Y0afspAZdTFo727Y5egI6aVsavfvGMFMJa/ddqch0mSVGfSDTbfLg
- AbIVurL6jd6oK4b4I79GN2OwQme21GpWvWBFb5Tm+i5vrPJA6PWes29ZbEiu
- WgHNx553nkxZtkUoKPzw1+tgyB+N7t/zQ7DUst8KXG9B6OzZPc7qsXyYhYE4
- 9C+OLBJIUndFWmXR+bGPeiAYopAeszBhEVzD5omuvadmMgOfcHrmM7IMLzXH
- iDgpskkaB9CPEq3THTTZHNmbEa6P/uM62VNkb9Nn0mYSQVcxti+1SFCDrN2R
- is33FLPo9Q7SM9ZiZ6K1hXM4H8nafylrZzFOtNg/yQ6T7Mgh2cmeshOHZA3c
- iUYHd8kukPcCHcLFNcTKuFRGnkZcLuMKpsooYHoNLMQMrq6hL4QZ4lqIdIjr
- IVIhxkKMh7gRIvETuPI3KzoGAAA=
+ H4sIAAAAAAAA/51UXU8TQRQ9s4XuUoosFZQWxa8iBT+21G8hJoaEsLGiAcQH
+ nqbbBYe2s2Z32vhIfPE3+GTiP/BNfTAE3/xRxjtbiiBV1CZ7Z+bec+bcO3em
+ 375//gLgJu4x9Cs/Us6KalYeKROMwd7iLe7Uudx0nlS2fI+8CQZroyk9JQLJ
+ kChMrTFk5oPGyyDilbq/sB+6VCjXAlUX0tlqNZwOJXI6iOKsppaOQ8114s+k
+ ULMPYtJEmctqGIjqK8eLlX0nbEolGr7zM5NZSqEchJvOlq8qIRe0KZcyULwt
+ sBSopWa9TijTC6TypbKQZhg/kI0gdyh53XGlCokvvMjECYYR74Xv1fY2eMpD
+ 3vAJyDBZKP96XrMHPCt6k00qIA0bQykMInNYr0v1JoYZkkK2gprPMFyYOqqQ
+ ximc7scIRhnOH3fkDKOuJIDfrWNn8yK/kf99nLkM2WVfbAi/2i2+OLd6/2h+
+ D/6nw+NxKn/QGuqQHvuKV7niVJrRaCXoKjNt+rQB5VzTE4OCr4SeFWlWnWF4
+ t7M9nNrZThm2EQ+jRvuzenJj9s52ziiy0pBt5AYyPRmaFxO775MUXDRz5+ze
+ 30Z331hfPzKiT9pJDbqYtHa2bXP0GHTStjR697Vhpnqt3belItNplpiuINOp
+ 9GAX2SrdW/1Qr9cUQ898UKXrMVimxi01GxU/XNWnpbmBx+trPBR6vefsWxGb
+ kqtmSPOx5fa7cWVLRILCD38+EYb8r9H9y34IlloJmqHnLwi9e3aPs3ZkP8zA
+ QI9uC9ksepGk6mZolUX7xz7ELSuR1SFtszBhEVzD5oiuvSemMwMfcXL6E7IM
+ zzXHiDkpGpNkB9CPG7ROt9E05uI/OI3rw6293VM03qbPpMMkgs5ibF9qkaAG
+ jXZbKjHXVcyiJzxIb1mLnYrXFs7gbCxr/6WsncU40RL/JDtMsiOHZM93lT13
+ SNbAndgWcZfGBfJeoCZcXEfCxSUXeRcTuOxiEgUXU5heB4twBVfX0RfBjHAt
+ QjrC9QipCGMRxiM4EXp/AGJveMs/BgAA
"""
)
diff --git a/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ColorsDetectorTest.kt b/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ColorsDetectorTest.kt
index 34438f0..d04646c 100644
--- a/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ColorsDetectorTest.kt
+++ b/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ColorsDetectorTest.kt
@@ -47,7 +47,7 @@
private val ColorsStub = kotlinAndBytecodeStub(
filename = "Colors.kt",
filepath = "androidx/compose/material",
- checksum = 0x2f84988c,
+ checksum = 0x73db7d2,
"""
package androidx.compose.material
@@ -129,65 +129,66 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcolmZiXUpSfmVKhl5yfW5BfnKqX
- m1iSWpSZmCPE4Zyfk19U7F3Cpc4li1OZXlp+vhBbSGpxCVihDIbC0ky99KLE
- gozM5GIhdrCR3iVKDFoMAMec7K6RAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ TSxJLcpMzBHicM7PyS8q9i7hUueSxalMLy0/X4gtJLW4BKxQBkNhaaZeelFi
+ QUZmcrEQO9hI7xIlBi0GAPW9qnSRAAAA
""",
"""
androidx/compose/material/Colors.class:
- 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
+ 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
+ a3DJoGfgGywa9A0GNnnpExMAv0xQBQAA
""",
"""
androidx/compose/material/ColorsKt.class:
- H4sIAAAAAAAAAM1WzU8cZRj/vct+sSzLsN2dLvQLC7VgW5ZCC7XbUgr9Wlho
- LS1tQW2G3YUOLDM4M0vaxhg0scYYLx5M9GCiHjx4sFGjxBpDMPHgxZuH/hGe
- PBr1NzMwbAFTvHUO7/N7nnk+3nme3/vu/vr3Dz8BOIbbAvsVrWDoauFuOq/P
- zetmMT2nWEVDVUrpAb2kG+aQFYIQkGaUBSVdUrTp9OXJmWKe1iqBHSV1+o7l
- Oh7pfG185Ob9EwIdrYMVT1vuaSUyAs053ZhOzxStSUNRNTOtaJpuKZaqE4/o
- 1ki5VKJX09MyhRAWCJ5SNdXqFeh9Yh/juVndKqlaemZhLq1qjNMYd644pZRL
- /ATNtIxy3tKNYcWYLRqZtrEoIqiJoBpRgdC8oc4pxj0BMSgQW9XGFNbWLIFq
- s5jXtYLjIHnYex2ZVPKz04Ze1gpMZZaNKSVfFAgUDUM3GK1rV9bS1+ja6Hqu
- qK71V4TScXQtOKRr593wXVsMoaXgfpfAwBNNyOY2zjGzjfkEyBb8M4k/BFo2
- OZfV9LShzN9R86brbzNmH7/OUQT8rYNtg1E8h/0RNKHZzdWDb1xQ9fgXF4h3
- HmzFxk3ZQzjERgzwtaKRHgLtm/e/KajF889EcQTt1TiMtMDh/xMZwlEOd7po
- 3bijWsUjHYWe20Mz1wWqWu3P68KxCDpx3P2Yh2hyfftLHN+abxQvul4nowgg
- GIEPpwTiHPXsxiPUuNm4NlK3wqMHf7kgHo+74Lepe1H0umkvCNSv0X24aCkF
- xVJ4fnxzC1V0FfYSIJVnbeCj/a5qow6iwlEhcsuLUmR5MeJL+daEL1zXuPKe
- kJYXG30dojMc9kk+oioH+T0U8FDQQyEPhT1U7aGIh2o8FPVQrYdiNvp5SSwv
- chErnwX94TpJcvZU/+xsKS5JK2/5atiuhkggvPLp3g5h97STV8D6QEnz7VyJ
- LdvgNd1qKk6/czBs0D7Lk+8f0Au8KOpyqlYcKc9NFo1rymSJlnhOzysl53ai
- vmrcdbWsWepcMastqKZK09n1K1igdtQikYeV+VXvyKheNvLFC6qtNKyGjm0K
- xFGS0W/Tk2uDTXrqN6n9id1IUTY9QvWtvU2yXw7KYTkiR+WYLMlxOSHLfvE9
- ah/aBMUtrv2QuDYzTwvzHGCm5xHGQd7RrYiiDTG8QI9DiPNoJ3jGZbSzQhqN
- 6GCtZuzjXsaZ4T69WZf+dc6+mhhVxxo2qifyOyhOFHTQDqKwgxJEEQclidws
- MlHMQTuJJAeliOIOaiBKOKiRSMYEcRC8uwGpGru4L2F3Q0wxppHvHidT/jc+
- QiSBPUtoOZNMBVztALWzyVSIWk0CB6n1+JMpKezqbbYepC7Z+tfo+A7dPWHq
- TRV6hHqf699j+0eTqXosVjjEaBDwDJkeiQZfpSFOg7/SkKAhjIoc8taTXMJp
- d44vc40hGquN1fGR7MeZ7RQ7BfYnxC7GKJPsx27KZtoPUXaxOxnKAfZsiHKU
- byco89iDWUoLe/E65duc8vuUH7Ljn1B+wV+dryiXsB/LlA32/bh9BlZtxcA+
- MuQsGdjPTANkxjly4jzZcIE7v0iPS5x9llMfZL0hVshx78Os1ce9jTxjDDzj
- MXB8lYG/ewzs2y4DQ7J/nX0J9NvvPPat6hXsO7cF+zJPZV/3RvZ1b2Rf5r/Z
- d3Ej+2qeYN+r7BzIsRD/EccokzjOvnSRfd1kXxe7dIKT7cJl/nzfoLyNk5im
- nCcn71K+iVN4l/IDnMbHlJ+TZV9SfsvIHyl9eMWpf4OVgAI7fon8yU6gKovB
- LIa4IpclSUayrHFlAsLES7g6gR0mRk1cMxEzcd3kH0vUm4ibtj1hImlCNrHT
- RMpEg4lGE70mgibGTAT+BZIgXWjiCwAA
+ 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
+ AgwAAA==
"""
)
diff --git a/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ScaffoldPaddingDetectorTest.kt b/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ScaffoldPaddingDetectorTest.kt
index 65d5116..d581caf 100644
--- a/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ScaffoldPaddingDetectorTest.kt
+++ b/compose/material/material-lint/src/test/java/androidx/compose/material/lint/ScaffoldPaddingDetectorTest.kt
@@ -43,7 +43,7 @@
private val ScaffoldStub = bytecodeStub(
filename = "Scaffold.kt",
filepath = "androidx/compose/material",
- checksum = 0x2dde3750,
+ checksum = 0x7045eee1,
"""
package androidx.compose.material
@@ -60,74 +60,75 @@
) {}
""",
- """
+"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGI2BijgUueSTMxLKcrPTKnQS87PLcgvTtXL
- TSxJLcpMzBHiCk5OTEvLz0nxLuHi5WJOy88XYgtJLS7xLlFi0GIAACJwI+tQ
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUueSTMxLKcrPTKnQS87PLcgvTtXL
+ TSxJLcpMzBHiCk5OTEvLz0nxLuHi5WJOy88XYgtJLS7xLlFi0GIAADDzNLNQ
AAAA
""",
"""
androidx/compose/material/ScaffoldKt$Scaffold$1.class:
- H4sIAAAAAAAAAKVU604TQRT+Zlt6xxZEuYj3qi0o2+LdNiSEQNxQMLHYxPBr
+ H4sIAAAAAAAA/6VU604TQRT+Zlt6xxZEuYj3qi0o2+LdNiSEQNxQMLHYxPBr
2t3C0N1Z091t8B8P4RP4BKKJJJoY4k8fynhmaQ2GiBo32bMn53zfmXOb/fb9
0xcA9/CEQefS7LrC3NVbrvPK9Szd4b7VFdzW6y3ebru2uernB2q+HAdjWK11
XN8WUt/pObqQhJeEr3GnafLKcV87kC1fuNLTV/paqTrwv5DCryxUGKZ+HyyO
KMOl0wPGEWOIVQWFW2CIFIoNhmjBKDYySCCVwhDSZPC3hcdQrv1juZReTMie
27EYxgrF2g7vcd3mckt/1tyxWn4lgyySKWgYYUgfqyyOswwJY72+sbi+tMww
/EvZGZzD+STGME6gassOk1f5hqGmlPtMkrRphpEBcc3yucl9TilpTi9CA2RK
- xJQAA+soJULOXaG0EmlmmWH6cC+ROtxLaTmNPrnDvSmtxJ6mvr6NaQlNYeYp
+ JJUAA+soJULOXaG0EmlmmWH6cC+ROtxLaTmNPrnDvSmtxJ6mvr6NaQlNYeYp
8SqXrnztuIFHLaRg+b9pUxy3GXI/e2VabR7YPsObwskuB0Jfc03RFlb3Twvy
n/5yxTg5JbUMc9Cp0kG6cx3KNLrkmjTY0Zrb4naDU31N29pQgiFbE9JaD5ym
1e1bMoaUVnfJ5p5n0S5ll2XLdj0ht2gy267JkKyLLcn9oEvgVN0Nui1rRSjm
- 5PNA+sKxGsITFGpRStfnYdoo0ZSHqON0rzCpxk6ji9JLq0CWedLyhGBq0DOR
- A2T2w2HfJZk5smI45IyoPewzZkMMvQqs0T1XMGVIHyOyI2JukYi5PnFe7ZE6
- fOYjRt9j4t0p/ET/4ASlPTh4nNDqSX+G9vIAFz7g4n5oGMJ9kimCHQEm8CCs
- 8w7V/zA8JIJH4beMx+Gvia49sS5vImLgioGrBq7hukHNuGHgJm5tgnkooEh+
- DzMeZj1kfwB7t1DT1wQAAA==
+ 5PNA+sKxGsITFGpRStfnYdoo0ZSHqON0rzCpxk6ji9JLq0CWedLyhKChIDYT
+ OUBmPxz2XZKZIyuGQ86I2sM+YzbE0KvAGt1zBVOG9DEiOyLmFomY6xPn1R6p
+ w2c+YvQ9Jt6dwk/0D05Q2oODxwmtnvRnaC8PcOEDLu6HhiHcJ5ki2BFgAg/C
+ Ou9Q/Q/DQyJ4FH7LeBz+mujaE+vyJiIGrhi4auAarhvUjBsGbuLWJpiHAork
+ 9zDjYdZD9geSTRPs1wQAAA==
""",
"""
androidx/compose/material/ScaffoldKt$Scaffold$2.class:
- H4sIAAAAAAAAAKVU604TQRT+Zlt6WYotiHIR71VbULatd9uQECJxQ8HEYhPD
- r2l3C0O3s6a72+A/HsIn8AlEE0k0McSfPpTxzNIqhogaN9mzJ+d835lzm/36
- 7eNnAHfwiMHg0uq6wtoxmm7npevZRof7dldwx6g1eavlOtaKnx2o2VIcjGGl
- 2nZ9R0hju9cxhCS8JHyVdxoWLx/1tQLZ9IUrPWO5rxUqA/9zKfzyQplh+vfB
- 4ogyXDg5YBwxhlhFULgFhkguX2eI5sx8PYUEdB1DGCaDvyU8hmL1H8ul9GJC
- 9ty2zTCey1e3eY8bDpebxtPGtt30yymkkdShYZRh+EhlcZxmSJhrtfXFtaXH
- DCO/lJ3CGZxNYhwTBKo0nTB5lW8Yalq5TyVJm2EYHRBXbZ9b3OeUktbpRWiA
- TImYEmBgbaVEyLkjlFYgzSoyzBzsJvSDXV3LaPTJHOxOawX2RP/yJqYlNIUp
- UeIVLl35quMGHrWQgmX/pk1x3GTI/OiVZbd44PgMr3PHuxwIY9W1REvY3T8t
- yH/6i2Xz+JTUMszDoEoH6c63KdPokmvRYMeqbpM7dU71NRx7XQmGdFVIey3o
- NOxu35IypbS7Sw73PJt2Kf1YNh3XE3KTJrPlWgzJmtiU3A+6BNZrbtBt2stC
- MaeeBdIXHbsuPEGhFqV0fR6mjQJNeYg6TvcKU2rsNLoovbQKZCmRliUEU4Oe
- jewjtRcO+zbJ1KEVIyFnVO1hnzEXYuhVYI3uuYKxkPKTyA6JmUUiZvrEktoj
- dfjsB4y9w+TbE/iJ/sEJSntw8ASh1TP8CdqLfZx7j/N7oWEId0nqBDsETOJe
- WOctqv9+eEgED8JvEQ/DXxNde2Jd3EDExCUTl01cwVWTmnHNxHXc2ADzkEOe
- /B5mPcx5SH8Hm6I3JNcEAAA=
+ H4sIAAAAAAAA/6VU604TQRT+Zlt6o9iCKBfxXrUFZdt6tw0JIRI3FEwsNjH8
+ mna3MHR31nR3G/zHQ/gEPoFoIokmhvjThzKeWVrFEFHjJnv25JzvO3Nus1+/
+ ffwM4A4eMehcml1XmDt6y3Veup6lO9y3uoLber3F223XNlf83EDNleNgDCu1
+ juvbQurbPUcXkvCS8DXuNE1eOeprB7LlC1d6+nJfK1YH/udS+JWFCsP074PF
+ EWW4cHLAOGIMsaqgcAsMkXyhwRDNG4VGGgmkUhjCMBn8LeExlGr/WC6lFxOy
+ 53YshvF8obbNe1y3udzUnza3rZZfSSODZAoaRhmGj1QWx2mGhLFWX19cW3rM
+ MPJL2WmcwdkkxjFBoGrLDpNX+YahppX7VJK0GYbRAXHV8rnJfU4paU4vQgNk
+ SiSVAAPrKCVCzh2htCJpZolh5mA3kTrYTWlZjT7Zg91prciepL68iWkJTWHK
+ lHiVS1e+ctzAoxZSsNzftCmOmwzZH70yrTYPbJ/hdf54lwOhr7qmaAur+6cF
+ +U9/qWIcn5JahnnoVOkg3fkOZRpdck0a7FjNbXG7wam+pm2tK8GQqQlprQVO
+ 0+r2LWlDSqu7ZHPPs2iXMo9ly3Y9ITdpMluuyZCsi03J/aBL4FTdDbota1ko
+ 5tSzQPrCsRrCExRqUUrX52HaKNKUh6jjdK8wpcZOo4vSS6tAljJpOULQUBCb
+ jewjvRcO+zbJ9KEVIyFnVO1hnzEXYuhVYI3uuYKxkPKTyA6J2UUiZvvEstoj
+ dfjsB4y9w+TbE/iJ/sEJSntw8ASh1TP8CdqLfZx7j/N7oWEId0mmCHYImMS9
+ sM5bVP/98JAIHoTfEh6Gvya69sS6uIGIgUsGLhu4gqsGNeOageu4sQHmIY8C
+ +T3MepjzkPkOclh0G9cEAAA=
""",
"""
androidx/compose/material/ScaffoldKt.class:
- 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
+ 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
+ S5104ZQXCQAA
"""
)
diff --git a/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt b/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt
index 5bdd89c..32e0cb6 100644
--- a/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt
+++ b/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/MaterialImportDetectorTest.kt
@@ -41,7 +41,7 @@
private val MaterialButtonStub = bytecodeStub(
filename = "Button.kt",
filepath = "androidx/compose/material",
- checksum = 0x94880e7a,
+ checksum = 0x3ab9ae7,
"""
package androidx.compose.material
@@ -49,26 +49,27 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
TSxJLcpMzBHicCotKcnP8y7hMuNSxalMr6A0J6coNa0otThDiDcAyAmCcID6
- dLgUcOsryiwoyEkV4ggC00DVvFzMafn5QmwhqcUl3iVKDFoMAB7yTT20AAAA
+ dLgUcOsryiwoyEkV4ggC00DValxSOFUbI7mGl4s5LT9fiC0ktbjEu0SJQYsB
+ AAY211PcAAAA
""",
"""
androidx/compose/material/ButtonKt.class:
- H4sIAAAAAAAA/yVOu07DQBCcPSdOYh5xCC+npIIGJ4iOCpCQLAJIgNKkusQn
- dMS+Q/Y5SplfoqVAqfkoxB3eYnZ2Zla7P79f3wAuERFOuEoLLdNVPNf5hy5F
- nHMjCsmz+KYyRqt70wIRwne+5HHG1Vv8NHsXc6t6BL/OELzTswmhN15ok0kV
- PwjDU274FYHlS88eIwdtByDQwhFmzZV0bGhZOiL0N2s/2KwDFrKBH27WAzYk
- Z12Q2+rUx84XhtC41akgdMdSiccqn4nilc8yqwQvuirm4k66IXqulJG5mMhS
- WvdaKW24kVqVGIGhgfqdCE34th/YKUJd9PlvHVp0FmyY4ch9jX0c2z6yassu
- tqfwEnQSBAm2sJ1gB7sJuginoBI97E3BSjRL9P8AKS93K3cBAAA=
+ H4sIAAAAAAAA/yVOu07DQBCcPScOMY84hJdTUkGDE0RHBUhIFgEkQGlSXeIT
+ usS+Q/Y5SplfoqVAqfkoxB3eYnZ2Zla7P79f3wCuEBFOuUoLLdNVPNP5hy5F
+ nHMjCsmz+LYyRqsH0wIRwjlf8jjj6j1+ns7FzKoewa8zBO/sfEzojhbaZFLF
+ j8LwlBt+TWD50rPHyEHbAQi0cIRZcyUdG1iWDgm9zdoPNuuAhazvh5t1nw3I
+ WZfkttr1sYuFITTudCoInZFU4qnKp6J449PMKsGrroqZuJduiF4qZWQuxrKU
+ 1r1RShtupFYlhmBooH4nQhO+7Yd2ilAXff5bRxadBRtmOHZf4wAntg+t2rKL
+ WxN4CdoJggTb2Emwi70EHYQTUIku9idgJZolen+absHWdwEAAA==
"""
)
private val ExperimentalMaterialApiStub = bytecodeStub(
filename = "ExperimentalMaterialApi.kt",
filepath = "androidx/compose/material",
- checksum = 0x6caaf88f,
+ checksum = 0x4808c29,
"""
package androidx.compose.material
@@ -81,31 +82,31 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
TSxJLcpMzBHicCotKcnP8y7hMuNSxalMr6A0J6coNa0otThDiDcAyAmCcID6
dLgUcOsryiwoyEkV4ggC00DValxSOFUbI7mGl4s5LT9fiC0ktbjEu0SJQYsB
- ANpB3LXcAAAA
+ AAY211PcAAAA
""",
"""
androidx/compose/material/ExperimentalMaterialApi.class:
- H4sIAAAAAAAA/5VSwW4TMRB93pAmpEDTAiVpKDUcyq3bFm6ctgjQSimtEoRU
- 5eQkQ+Nmd52uvVF6y41/4oAijnwUYlY0JBJFiMv4zbxnzxvb3398+QrgJZ4J
- HKiknxrdn/g9E4+MJT9WjlKtIv/NZMQgpsSp6Pi6GIx0CUKgeqHGyo9Ucu6f
- dC+o50ooCOwsqipJjFNOm8QPfsMSigKbzaFxkU78Fl1mOiV7MnJh8kqgFJO1
- 6pwEzj4MtJVzIzI4DSXntORHsu28FukhRVfSGdkbcFuSJs2TLsmUYjMmFiXS
- DUh+ylyW0p7A9rz9ksMWOT6VEbsojlWUsYfnN+gWkyzvWDkK3wetMwHZvHH+
- Ze3uPySnJtK9q9zG62bQbgusz20ck1N95RRzXjwu8PuJPJTzAAEx5PpE59k+
- o/6BQH02LVe8mlfxqo3yt89ebTY99PbF0WyaCw4FXjT/+/G5Ozfb+gu7N3QC
- lbbJ0h691RHfYr2V8VwxfdRWdyNaXKAVaFxzYTL+g91li7jFrVby8VDADkcP
- TyB5fcd5hblVwh3cxb1fcA1VrKOIjQ4KIe6HeBDiITYZ4lGIGuodCIstNDrw
- LB5bbOMpH7bKu/lLo2xx+yc4GLrsGQMAAA==
+ H4sIAAAAAAAA/5VSTW8TMRB93pAmTflIC5SkodRwaG/dtnDjtEWAVkpplSCk
+ KicnGRo3u+uw9kbpLTf+EwcUceRHIWZFQyJRhLiM38x79ryx/f3Hl68AXuCZ
+ wKFK+qnR/YnfM/HIWPJj5SjVKvJfT0YMYkqcik6ui8FIlyAEqpdqrPxIJRf+
+ afeSeq6EgsDOoqqSxDjltEn84DcsoSiw2RwaF+nEb9GnTKdkT0cuTF4KlGKy
+ Vl2QwPn7gbZybkQGZ6HknJb8SLad1yI9pOhKOiN7A25L0qR50iWZUmzGxKJE
+ ugHJj5nLUtoX2J63X3LYIsenMmIXxbGKMvawd4NuMcnyjpXj8F3QOheQzRvn
+ X9bu/kNyZiLdu8ptvGoG7bbA+tzGCTnVV04x58XjAr+fyMNqHiAghlyf6Dw7
+ YNQ/FKjPpuWKV/MqXrVR/vbZq82mR96BOJ5Nc8GRwPPmfz8+d+dmW39h94dO
+ oNI2WdqjNzriW6y3Mp4rpg/a6m5Eiwu0Ao1rLkzGf7C7bBG3uNVKPh4K2OHo
+ 4Qkkr285rzC3RriNO7j7C95DFesoYqODQoj7IR6EeIhNhngUooZ6B8JiC40O
+ PIvHFtt4yoet8W7+0ihbrP4EIBEHSxkDAAA=
"""
)
private val Material3ButtonStub = bytecodeStub(
filename = "Button.kt",
filepath = "androidx/compose/material3",
- checksum = 0x8bce80e4,
+ checksum = 0x314468f6,
"""
package androidx.compose.material3
@@ -113,27 +114,27 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
TSxJLcpMzBHicCotKcnP8y7hMuNSxalMr6A0J6coNa0otThDiDcAyAmCcID6
dLgUcOsryiwoyEkV4ggC00DValxSOFUbI7mGl4s5LT9fiC0ktbjEu0SJQYsB
- ANpB3LXcAAAA
+ AAY211PcAAAA
""",
"""
androidx/compose/material3/ButtonKt.class:
- H4sIAAAAAAAA/yVOTU/CQBB9s4UC9YMifpWrF71YUG+e1MSkETVRw4XTQjdm
- ge6adks48pe8ejCc/VHGXTuHN2/ee5OZn9+vbwBXiAgnXKW5lukqnursQxci
- zrgRueSLy/i2NEarB9MAEcIZX/J4wdV7/DyZialVPYJfZQje6dmI0BnOtVlI
- FT8Kw1Nu+DWBZUvPXiMHTQcg0NwRZs2VdKxvWTogdDdrP9isAxaynh9u1j3W
- J2ddkNtqVcfO54ZQu9OpILSHUomnMpuI/I1PFlYJXnWZT8W9dEP0UiojMzGS
- hbTujVLacCO1KjAAQw3VOxHq8G0/sFOEqujz3zq06CzYMMOR+xr7OLZ9YNWG
- XWyO4SVoJQgSbGE7wQ52E7QRjkEFOtgbgxWoF+j+AX2HBh54AQAA
+ H4sIAAAAAAAA/yVOu07DQBCcPScOMY84hJfT0kCDE6CjAiQkiwASoDSpLvEJ
+ HbHvkH2OUuaXaClQaj4KcYe3mJ2dmdXuz+/XN4BLRIRjrtJCy3QZz3T+oUsR
+ 59yIQvLsIr6pjNHq3rRAhPCdL3iccfUWP03fxcyqHsGvMwTv5HRM6I7m2mRS
+ xQ/C8JQbfkVg+cKz18hB2wEINHeEWXMpHRtYlg4JvfXKD9argIWs74frVZ8N
+ yFnn5Lba9bGzuSE0bnUqCJ2RVOKxyqeieOXTzCrBi66KmbiTboieK2VkLsay
+ lNa9VkobbqRWJYZgaKB+J0ITvu37dopQF33+WwcWnQUbZjh0X2MPR7YPrdqy
+ ixsTeAnaCYIEm9hKsI2dBB2EE1CJLnYnYCWaJXp/zsaw43gBAAA=
"""
)
private val RippleStub = bytecodeStub(
filename = "Ripple.kt",
filepath = "androidx/compose/material/ripple",
- checksum = 0x2f218395,
+ checksum = 0x691c7742,
"""
package androidx.compose.material.ripple
@@ -141,26 +142,27 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
TSxJLcpMzBHicCotKcnP8y7hMuNSxalMr6A0J6coNa0otThDiDcAyAmCcID6
- dLgUcOsryiwoyEkV4ggC00DVvFzMafn5QmwhqcUl3iVKDFoMAB7yTT20AAAA
+ dLgUcOsryiwoyEkV4ggC00DValxSOFUbI7mGl4s5LT9fiC0ktbjEu0SJQYsB
+ AAY211PcAAAA
""",
"""
androidx/compose/material/ripple/RippleKt.class:
- H4sIAAAAAAAA/yVOTU/CQBB9s+WzKhTxq/wCuVgw3jwZE5NG1AQNF04L3ZiF
- dpe0C+HIX/LqwXD2Rxl36Rzem5k3k/d+/75/ANwhJPS5SnItk20019lKFyLK
- uBG55GmUy9UqFdH4QM+mDiIEC77hUcrVZ/Q2W4i53XqEVi4ykc1EXt4SvOv+
- hNAZLbVJpYpehOEJN/yewLKNZ73JQcMBCLR0DbPiVrpuYLtkSOjudzV/v/NZ
- wHq1YL/rsQE56ZbcV7M0u1kaQuVRJ9a2PZJKvK5dkg8+c0H8d73O5+JJuiEc
- r5WRmZjIQlr1QSltuJFaFRiCoYIyTogqapbP7RSiLPo6SBcWnQR7zHDpUuMM
- V5aHdlu3j40pvBjNGH6MIxzHOEErRhvBFFSgg9MpWIFqge4/mpQXSIYBAAA=
+ H4sIAAAAAAAA/yVOTU/CQBB9s+VDqkIRv8ovkIsF4s2TMTFpRE3QcOG00I1Z
+ aHdJuxCO/CWvHgxnf5Rxl87hvZl5M3nv9+/7B8AdQkKPqyTXMtlGc52tdCGi
+ jBuRS55GuVytUhGND/Rs6iBCsOAbHqVcfUZvs4WY261HaOYiE9lM5OUtwbvp
+ TQjt0VKbVKroRRiecMPvCSzbeNabHDQcgEBL1zArbqXr+rZLBoTOflfz9zuf
+ BaxbC/a7LuuTk4bkvhql2e3SECqPOrG2rZFU4nXtknzwmQviv+t1PhdP0g3h
+ eK2MzMREFtKqD0ppw43UqsAADBWUcUJUUbN8YacQZdHXQbq06CTYY4Yrlxrn
+ uLY8sNu6fTyawovRiOHHOMZJjFM0Y7QQTEEF2jibghWoFuj8AynVobWGAQAA
"""
)
private val IconsStub = bytecodeStub(
filename = "Icons.kt",
filepath = "androidx/compose/material/icons",
- checksum = 0x1643e419,
+ checksum = 0xe246828f,
"""
package androidx.compose.material.icons
@@ -168,51 +170,53 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
TSxJLcpMzBHicCotKcnP8y7hMuNSxalMr6A0J6coNa0otThDiDcAyAmCcID6
- dLgUcOsryiwoyEkV4ggC00DVvFzMafn5QmwhqcUl3iVKDFoMAB7yTT20AAAA
+ dLgUcOsryiwoyEkV4ggC00DValxSOFUbI7mGl4s5LT9fiC0ktbjEu0SJQYsB
+ AAY211PcAAAA
""",
"""
androidx/compose/material/icons/Icons.class:
- H4sIAAAAAAAA/42SzW7TQBSFz0wSx3UDDeWnCQUKtIifBW4rdlRIpQLJkjES
- rSKhrib2qExizyB7EnWZFQ/CG1QsKoGEItjxUIg7JoIFG2zp3nvu3Pk8c+Qf
- Pz9/BfAEWwz3hM5Ko7LTMDXFe1PJsBBWlkrkoUqNrsLIxTYYQ3ckpiLMhT4J
- Xw9HMrVtNBi8PaWVfcbQePBw0EELXoAm2gxN+05VDPfj//rCUwZ/L81rVgDu
- AH6UHB7tJwcvOriAYImaFxk2Y1OehCNph6VQtFlobaywyoESY5NJnhPqUjw2
- lmDhK2lFJqygHi+mDbo1c8F3AQxsTP1T5dQ2VdkOw9Z8FgS8xwPepWo+879/
- 4L35bJdvs+dtn3/76PEud7O7zBH8+vSPx5Zh/c1EW1XISE9VpYa53P97NrLj
- wGSSYSVWWiaTYijLI0EzDKuxSUU+EOQI6UUzODSTMpUvlRP9BXjwDxY75Eqz
- vkrfmUT5FimPcpcyp7dVqw1Sobsw5dajc/hn9fLtxTAIcodi5/cAlghFLmH5
- z+Y1mnbP8hfwt+fofMLKWd3guFvHm9is/ykynwCrx2hEuBzhSoSruEYl1iL0
- 0D8Gq3Ad67ReIahwo4L3C+qkwQ6QAgAA
+ H4sIAAAAAAAA/42Sz27TQBDGv90kjuMGmhZoEwq00CL+HHBbcaNCKhVIloyR
+ aBWp6mljr9pNbC+yN1GPOfEgvEHFoRKVUAQ3HgoxayI4cGEtzcw3O/vbnZF/
+ /PzyFcBzbDE8FHlSaJWc+7HOPuhS+pkwslAi9VWs89IPrG2CMXSGYiL8VOSn
+ /rvBUMamiRqDs6dyZV4y1B4/6bfRgOOhjiZD3ZypkuFR+F83vGBw9+K0Ynng
+ FuAG0eHRfnTwuo1r8FqUvM6wGeri1B9KMyiEosMiz7URRllQpE00TlNCLYUj
+ bQjmv5VGJMIIyvFsUqOumTUta8DARpQ/V1ZtU5TsMGzNpp7Hu9zjHYpmU/f7
+ R96dTXf5NnvVdPm3Tw7vcFu7yyzBrV7/bGQY1t6Pc6MyGeQTVapBKvf/vo3G
+ caATybAYqlxG42wgiyNBNQzLoY5F2hc0EdLzpHeox0Us3ygrenNw/x8sdmgq
+ 9aqVnh0S+XukHPId8py+RqXWSfm2YfKNp5dwL6rtjXkxCHKfbPt3AVqEAlws
+ /Dm8StV2LVyBH1+i/RmLF1WC40Fl72Kz+qdo+ARYPkEtwI0ANwPcwgqFWA3Q
+ Re8ErMRtrNF+Ca/EnRLOL4cbczOQAgAA
"""
)
private val PullRefreshStub = bytecodeStub(
filename = "PullRefresh.kt",
filepath = "androidx/compose/material/pullrefresh",
- checksum = 0x20bedb6d,
+ checksum = 0xfa59248b,
"""
package androidx.compose.material.pullrefresh
fun pullRefresh() {}
""",
- """
+"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuWSTMxLKcrPTKnQS87PLcgvTtXL
TSxJLcpMzBHicCotKcnP8y7hMuNSxalMr6A0J6coNa0otThDiDcAyAmCcID6
- dLgUcOsryiwoyEkV4ggC00DVvFzMafn5QmwhqcUl3iVKDFoMAB7yTT20AAAA
+ dLgUcOsryiwoyEkV4ggC00DValxSOFUbI7mGl4s5LT9fiC0ktbjEu0SJQYsB
+ AAY211PcAAAA
""",
"""
androidx/compose/material/pullrefresh/PullRefreshKt.class:
- H4sIAAAAAAAA/01OTU/CQBSct+XLolDEr/IL9GJBvXkyJiaN+BE0XDgtdNWF
- tkvaLeHIX/LqwXD2Rxl35aDvMG/ezLxkvr4/PgFcwCec8zTKlIyWwUQlc5WL
- IOFaZJLHwbyI40y8ZCJ/Cx4NH2z4ra6CCN6UL3gQ8/Q1eBhPxcSoDqE+/wsS
- nOOTIaHVnykdyzS4E5pHXPNLAksWjqlAFmoWQKCZJcyYS2lZ17CoR2ivVxV3
- vXKZxzoVb73qsC5Z64zsV+NftdOZJpSuVSQIzb5MxX2RjEX2zMexUdwnVWQT
- cSPt4Q+KVMtEDGUujXuVpkpzLVWaoweGEjadfJRRMXvfXD42Q++/1oFBa8GE
- GQ5tdezhyOyeUavmsTaCE2IrhBuiju0QO2iEaMIbgXK0sDsCy1HO0f4B7wOm
- OJIBAAA=
+ H4sIAAAAAAAA/01OTU/CQBSct+VDikIRv8ov0IsF9ebJmJg04kfQcOG00FUX
+ 2i5pt4Qjf8mrB8PZH2XclYO+w7x5M/OS+fr++ARwAZ9wztMoUzJaBhOVzFUu
+ goRrkUkeB/MijjPxkon8LXg0fLDht7oKInhTvuBBzNPX4GE8FROjOoT6/C9I
+ cI5PhoRWf6Z0LNPgTmgecc0vCSxZOKYCWahZAIFmljBjLqVlXcOiHqG9XlXc
+ 9cplHutUvPWqw7pkrTOyX41/1U5nmlC6VpEgNPsyFfdFMhbZMx/HRnGfVJFN
+ xI20hz8oUi0TMZS5NO5VmirNtVRpjh4YSth08lFGxex9c/nYDL3/WgcGrQUT
+ Zji01bGHI7N7Rq2ax60RnBC1EG6IOrZD7KARoglvBMrRwu4ILEc5R/sHIVOo
+ LJIBAAA=
"""
)
diff --git a/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/ScaffoldPaddingDetectorTest.kt b/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/ScaffoldPaddingDetectorTest.kt
index 014f0ab..303273a 100644
--- a/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/ScaffoldPaddingDetectorTest.kt
+++ b/compose/material3/material3-lint/src/test/java/androidx/compose/material3/lint/ScaffoldPaddingDetectorTest.kt
@@ -43,7 +43,7 @@
private val ScaffoldStub = bytecodeStub(
filename = "Scaffold.kt",
filepath = "androidx/compose/material3",
- checksum = 0xfee46355,
+ checksum = 0xc74cb7f7,
"""
package androidx.compose.material3
@@ -60,74 +60,75 @@
) {}
""",
- """
+"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGI2Bijg0uCSSsxLKcrPTKnQS87PLcgvTtXL
- TSxJLcpMzDEW4gpOTkxLy89J8S7h4uViTsvPF2ILSS0u8S5RYtBiAACpks1u
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uCSSsxLKcrPTKnQS87PLcgvTtXL
+ TSxJLcpMzDEW4gpOTkxLy89J8S7h4uViTsvPF2ILSS0u8S5RYtBiAABi9Cyd
UQAAAA==
""",
"""
androidx/compose/material3/ScaffoldKt$Scaffold$1.class:
- H4sIAAAAAAAAAKVU604TQRT+Zlt62RZbEOUi3kFbULYt3ktICIG4oWBisYnh
+ H4sIAAAAAAAA/6VU604TQRT+Zlt62RZbEOUi3kFbULYt3ktICIG4oWBisYnh
17S7haG7s6a7bfAfD+ET+ASiiSSaGOJPH8p4ZmkNhogaN9mzJ+d835lzm/32
/dMXAPfwhKHApdX2hLVnNDz3lefbhssDuy24M29UG7zZ9BxrLZjqq1PFOBjD
WqXlBY6Qxm7XNYQkguSOUeFu3eLlk75mRzYC4UnfWO1phYW+/4UUQXmxzDDx
+2BxRBmunB0wjhhDbEFQuEWGSC5fY4jmzHwtjQR0HQNIkSHYET5DqfKv9VJ+
MSG7XstmGMnlK7u8yw2Hy23jWX3XbgTlNDJI6tAwxJA6UVoc5xkS5kZ1c2lj
eYVh8Je607iAi0mMYJRACw0nzF4lHIaaUO5zSdImGYb6xHU74BYPOKWkud0I
- jZApEVMCDKyllAg594TSCqRZRYbJo/2EfrSva1mNPtmj/QmtwJ7qX9/GtISm
+ jZApkVQCDKyllAg594TSCqRZRYbJo/2EfrSva1mNPtmj/QmtwJ7qX9/GtISm
MCVKfIFLT752vY5PPaRg03/VpzjuMGR/Nsuym7zjBAxvcqf73BHGumeJprDb
f1qR//QXy+bpMal1mINBpfbTnWtRptFlz6LJDle8BndqnAqsO/amEgyZipD2
Rset2+2eJW1KabeXHe77Nm1TZkU2HM8XcptGs+NZDMmq2JY86LQJrFe9Trth
- rwrFHH/ekYFw7ZrwBYVaktILeJg2CjTmAWo53SyMq7nT7KL00i6QpUTaFCGY
- mvRM5BDpg3Da8yTTx1YMhpwhtYg9xmyIoVeBNbrqCqYMqRNEdkzMLhEx2yOW
- 1CKpw2c+Yvg9xt6dwU/0Dk5Q2v2DRwmtntRnaC8PcekDLh+EhgHcJ6kT7Bgw
- hgdhnXep/ofhIRE8Cr9FPA7/TnTxiXV1CxET10xcN3EDN01qxrSJW7i9BeYj
- hzz5fcz4mPWR+QHL6C/y2gQAAA==
+ rwrFHH/ekYFw7ZrwBYVaktILeJg2CjTmAWo53SyMq7nT7KL00i6QpUTaFCFo
+ KojNRA6RPginPU8yfWzFYMgZUovYY8yGGHoVWKOrrmDKkDpBZMfE7BIRsz1i
+ SS2SOnzmI4bfY+zdGfxE7+AEpd0/eJTQ6kl9hvbyEJc+4PJBaBjAfZI6wY4B
+ Y3gQ1nmX6n8YHhLBo/BbxOPw70QXn1hXtxAxcc3EdRM3cNOkZkybuIXbW2A+
+ csiT38eMj1kfmR/t8cYr2gQAAA==
""",
"""
androidx/compose/material3/ScaffoldKt$Scaffold$2.class:
- H4sIAAAAAAAAAKVUbU/TUBR+bjf2xnADUV7Ed9ANlI7h+wgJIRAbBiYOlxg+
+ H4sIAAAAAAAA/6VUbU/TUBR+bjf2xnADUV7Ed9ANlI7h+wgJIRAbBiYOlxg+
3bUdXNbemrVd8Bs/wl/gLxBNNNHEED/6o4znlk0xRNTYpKcn5zzPueft9uu3
j58B3MEjhhKXVtsT1p5ueu4Lz7d1lwd2W3BnXq+ZvNn0HGstmOypk+UkGMNa
teUFjpD6bsfVhSSC5I5e5W7D4pXjvmYozUB40tdXu1ppoed/JkVQWawwjP8+
WBJxhkunB0wiwZBYEBRukSFWKNYZ4gWjWM8ihUwGfegnQ7AjfIZy9V/rpfwS
Qna8ls0wXChWd3mH6w6X2/qTxq5tBpUsckhnoGGQof9YaUmcZUgZG7XNpY3l
FYaBX+rO4hzOpzGMEQItmE6UvUo4CjWu3GfSpE0wDPaI63bALR5wSklzOzEa
- IVMioQQYWEspMXLuCaWVSLPmGCYO91OZw/2Mltfokz/cH9dK7HHmy+uEltIU
+ IVMirQQYWEspMXLuCaWVSLPmGCYO91OZw/2Mltfokz/cH9dK7HHmy+uEltIU
pkyJL3DpyZeuF/rUQwo29Vd9SuIWQ/5Hsyy7yUMnYHhVONnnUOjrniWawm7/
aUX+0z9XMU6OSa3DLHQqtZfubIsyjS97Fk12qOqZ3KlzKrDh2JtKMOSqQtob
oduw211L1pDSbi873Pdt2qbcijQdzxdym0az41kM6ZrYljwI2wTO1Lywbdqr
- QjHHnoYyEK5dF76gUEtSegGP0kaJxtxHLaebhTE1d5pdnF7aBbKUSZskBFOT
- no59QPYgmvY8yeyRFQMRZ1AtYpcxE2HoVWCNrrqCsYjyk8iOiPklIua7xLJa
- JHX49HsMvcXom1P4qe7BKUq7d/AIodXT/wna8w+48A4XDyJDH+6SzBDsCDCK
- e1Gdt6n++9EhMTyIvnN4GP2d6OIT6/IWYgauGLhq4BquG9SMKQM3cHMLzEcB
- RfL7mPYx4yP3HfQNQiHaBAAA
+ QjHHnoYyEK5dF76gUEtSegGP0kaJxtxHLaebhTE1d5pdnF7aBbKUSZskBE0F
+ ienYB2QPomnPk8weWTEQcQbVInYZMxGGXgXW6KorGIsoP4nsiJhfImK+Syyr
+ RVKHT7/H0FuMvjmFn+oenKK0ewePEFo9/Z+gPf+AC+9w8SAy9OEuyQzBjgCj
+ uBfVeZvqvx8dEsOD6DuHh9HfiS4+sS5vIWbgioGrBq7hukHNmDJwAze3wHwU
+ UCS/j2kfMz5y3wHSFKv42gQAAA==
""",
"""
androidx/compose/material3/ScaffoldKt.class:
- H4sIAAAAAAAAAMVUS3PbVBT+ru1YkmOnrhKniVtCaRya5lHZbnk6FFLTtCK2
- 6eA2m6yuZdkolq8yemTKhgnDX2DDln8Aqw4LxsOSf8EfYXok2yGNOwm0zLDQ
- Pc97zneOzj1//PXrbwDuos6wwkXbdaz2M81w+oeOZ2p97puuxe07WtPgnY5j
- t3d9CYwhe8CPuGZz0dW+bB2YBmnjDPLYi+G71dpEtMDS6k7b6limW6n1HN+2
- hHZw1Nc6gTB8yxGetjPiim9oL1Vu7TH8+WYYtsb2p8LyK/f+W/fS1uYkuI4T
- iDYPzdTab5zA1x7zdtsS3T1uB6ZXOZMhrHFlMoobCN/qm1o1knnLNisMyzXH
- 7WoHpt9yuUU4uBCOz4eYGo7fCGybvOT+qDcyUgxLpyqwBE2C4LamC9+lAJbh
- SUgz5IyvTaM3ivCYu7xvkiPDzdXa2RGpnNI0wyBdqiCNGVxKIYMsQ9J3Du9z
- yq0yKC3H951+JM4xSIZDAIQvY55wnf9bGa5fND0XupTIJTue5kLb7PDA9hl+
- +J+nWp9sajgE184DJeEtamc4DFxQEIbzayiceFbSeBvXFSzhHYbiP9oNhZOW
- lSQs0zzpjeaT7Ub1AUN5MusFESj/Ct5VUMDNl2fxFZ2TcOvfYyxLWH8NYOUI
- 2KaCDdxOYwrJFGIoMlwe/7266XN6xpxmKNY/itN6ZeGRDA8wsF7IxMj4zAo5
- uhprlxi+HxzfSA2OU7FsLCILJyT65NiYzz/NDo7zsSIryzI5ExcvzxKXyGfU
- hEr64tTvPyVjcjLSShPaK1k5PxvpUiOLMrQ8kkIoZRaiVMfVnH41E8rwnbyi
- gRctMobpcTtv9+hdJapO22S4VLOE2Qj6LdN9Eu6tMKFjcHuP098geaRUmlZX
- cD9wib/61XDb6eLI8iwyb/+92BgKZ60nG+olt0zT50avzg9HCdK6EKZbtbnn
- mWRONZ3ANcwdK7QtjkLuTaRDieYgEf5joovhYJBUJYmP9Itr6vRzXF5XZ+nc
- UHN0bqpX6Pw5uvJ5OCPU+QVaiQ+IXxteQoo0iDiVPhZxc/TFIm4eecSxE0WQ
- 8HAUQyb6KLQnSFCisTtzZhVcxTXiQ4R9SpUkWs4lEt/+iNQvuDHA0m4uMTWU
- VgdYq+US0lDSSKqvrW9sPkdpCF2ncwrxmUwmqmKJkICSSIR9hmgO05RKwTLS
- VJVCeL8gu0oXC1FlC/SUhnQ3CncfNaI1AlemsHf2EddxV8d7Ot7HBzo+xEc6
- PkZlH8zDFj7Zx7SHKQ/3PKQ8LHhQPXzqQfYw52Hew2cetl8ABZTb8egIAAA=
+ H4sIAAAAAAAA/8VUy3IbVRA9V695WEoU2XJsJTghlhPHj4ykhKdMwBExGSwp
+ KZR449XVaCTGHt1xzcMVNpQpfoENW/4AVikWlIolf8GPUOkZScaxUnYgVLGY
+ vv263ad7+vYff/36G4B7eMywxEXHdazOc81w+geOZ2p97puuxe27Wsvg3a5j
+ d7Z9CYwhu8cPuWZz0dMet/dMg7RxBnnsxfDdcn0iWmBpDadjdS3Trdb3Hd+2
+ hLZ32Ne6gTB8yxGetjXiSm9pL1dv7zD8+XYYNsb2Z8Lyq/f/W/fyxvokuK4T
+ iA4PzdTab5zA157wTscSvR1uB6ZXPZUhrHFpMoobCN/qm1otknnbNqsMi3XH
+ 7Wl7pt92uUU4uBCOz4eYmo7fDGybvOT+qDcyVIaFExVYgiZBcFvThe9SAMvw
+ JKQZ8sbXprE/ivCEu7xvkiPDreX66RGpntC0wiA9qiCNC7ioIoMsQ8p3Dh5w
+ yp1jUNqO7zv9SJxhkAyHAAhfxizhOvu3Mlw/b3rOdSmTS3Y8zcWO2eWB7TP8
+ 8D9PtT7Z1HAIrp4FSsI71M5wGLigIAxn11A89qymcQ3XFSzgXYbSG+2G4nHL
+ yhIWaZ70ZuvpZrP2kKEymfWcCJR/CTcVFHHr1Vl8Teck3P7nGCsSVv8FsEoE
+ bF3BGu6kkURKRQwlhkvjv9cwfU7PmNMMxfqHcVqvLCRKSMDA9kMmRsbnVsjR
+ 1VinzPD94OiGOjhSY9lYdMwdH9Enx8Z84Vl2cFSIlVhFlsmZuHhlmrhEIZNL
+ 5EhfSv7+UyompyKtNKG9nJUL05FOHVmUoeWRFEKpsBBlblzNyVczoQzfyWsa
+ eN4iY7j5ZjMo4QHD1Lj1d/bpDSZqTsdkuFi3hNkM+m3TfRruuBCcY3B7h9Of
+ I3mkVFpWT3A/cIm/8tVwM+ri0PIsMm/+vQQZiqetx9vsFbdMy+fGfoMfjBKk
+ dSFMt2ZzzzPJrLacwDXMLSu0zY9C7kykQ5lmJhHOA53z4RCR9JAkPtLPr+Sm
+ XuDSam6a6FouT3Q9d5noz9GVLaIp+ktztD6/IH5leAkqaRBxOfpYxM3QF4u4
+ WRQQx6MoggR9FEOm88vQniBBiUb0FM0quIKrxIcI+5QqRWcln0h8+yPUX3Bj
+ gIXtfCI5lJYHWKnnE9JQ0khqrKyurb9AeQh9m2gS8QuZTFTFAiGht0FUpVoU
+ 5DFFqRQsIk1VKYS3TvYQdzGqbI6e3fCs0d1rVFUjCvs5mnTWCWSFwt/dRVzH
+ PR3v6XgfH+j4EB/p+BjVXTAPG/hkF1Mekh7ue1A9zHnIefjUg+xhxsOsh888
+ bL4EoWeehRwJAAA=
"""
)
diff --git a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateCreationDetectorTest.kt b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateCreationDetectorTest.kt
index 1dffaac..1c36c42 100644
--- a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateCreationDetectorTest.kt
+++ b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateCreationDetectorTest.kt
@@ -79,6 +79,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -115,6 +116,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -151,6 +153,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -187,6 +190,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -223,6 +227,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -256,37 +261,38 @@
@Test
fun testStateDelegate_withInferredType_andInternalSetter_thatCouldBeMutablePrimitiveStateOf() {
lint().files(
- primitiveStateStub,
- Stubs.Composable,
- Stubs.SnapshotState,
- kotlin(
- """
- package androidx.compose.runtime.lint.test
+ primitiveStateStub,
+ Stubs.Composable,
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
+ kotlin(
+ """
+ package androidx.compose.runtime.lint.test
- import androidx.compose.runtime.*
- import $fqType
+ import androidx.compose.runtime.*
+ import $fqType
- class Test(initialValue: $type = $stateValue) {
- var state by mutableStateOf(initialValue)
- private set
- }
- """
- )
- ).run().expect(
- """
-src/androidx/compose/runtime/lint/test/Test.kt:8: Information: Prefer mutable${type}StateOf instead of mutableStateOf [AutoboxingStateCreation]
- var state by mutableStateOf(initialValue)
- ~~~~~~~~~~~~~~
-0 errors, 0 warnings
- """
- ).expectFixDiffs(
- """
-Fix for src/androidx/compose/runtime/lint/test/Test.kt line 7: Replace with mutable${type}StateOf:
-@@ -8 +8
-- var state by mutableStateOf(initialValue)
-+ var state by mutable${type}StateOf(initialValue)
+ class Test(initialValue: $type = $stateValue) {
+ var state by mutableStateOf(initialValue)
+ private set
+ }
"""
)
+ ).run().expect(
+ """
+src/androidx/compose/runtime/lint/test/Test.kt:8: Information: Prefer mutable${type}StateOf instead of mutableStateOf [AutoboxingStateCreation]
+ var state by mutableStateOf(initialValue)
+ ~~~~~~~~~~~~~~
+0 errors, 0 warnings
+ """
+ ).expectFixDiffs(
+ """
+Fix for src/androidx/compose/runtime/lint/test/Test.kt line 8: Replace with mutable${type}StateOf:
+@@ -8 +8
+- var state by mutableStateOf(initialValue)
++ var state by mutable${type}StateOf(initialValue)
+ """
+ )
}
@Test
@@ -295,6 +301,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -331,6 +338,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -353,6 +361,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -389,6 +398,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -411,6 +421,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -433,6 +444,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
@@ -455,6 +467,7 @@
primitiveStateStub,
Stubs.Composable,
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
kotlin(
"""
package androidx.compose.runtime.lint.test
diff --git a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateValuePropertyDetectorTest.kt b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateValuePropertyDetectorTest.kt
index 5bac151..ed6258f 100644
--- a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateValuePropertyDetectorTest.kt
+++ b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/AutoboxingStateValuePropertyDetectorTest.kt
@@ -106,7 +106,7 @@
private val AutoboxingStateValuePropertyStub = bytecodeStub(
filename = "AutoboxingStateValueProperty.kt",
filepath = "androidx/compose/runtime/snapshots",
- checksum = 0x2c564988,
+ checksum = 0xd8b7ebd3,
source = """
package androidx.compose.runtime.snapshots
@@ -117,33 +117,33 @@
)
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijg0uaSSMxLKcrPTKnQS87PLcgvTtUr
- Ks0rycxNFeIPzkssKM7ILwkuSSxJ9S7h0uFSwqVYLyczr0SvJLW4RIgtBEh6
- lygxaDEAAJG2tCtzAAAA
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uaSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIPzkssKM7ILwkuSSxJ9S7h0uFSwqVYLyczr0SvJLW4RIgtBEh6
+ lygxaDEAAHx2CidzAAAA
""",
"""
- androidx/compose/runtime/snapshots/AutoboxingStateValueProperty.class:
- H4sIAAAAAAAA/6VSTXMSQRB9s3ytqGETEyXESBIjiRcXU960yiKKShUJ1O5W
- qlIcrIEdccOyg7sDwo2b/8Of4cGicvRHWc4EAxyoePDS/ba7X/fr3vn1+8dP
- AC9wSPCaBm7IPXdotni3xyNmhv1AeF1mRgHtRZ+5iMxSX/AmH3pB2xZUsDPq
- 91k95D0WilEKhMC4oANq+jRom7XmBWuJFGIE+XmUBgGXVI8HZmkGU0gQbPRC
- 9omFIXOvO57SLiNYP3xanfNtEcrpLwm2qx0ufC9Y7GgxwQKFZD4xUOIIDpbU
- zScvMpLHldOSdU6QW0JxaNhmQlatUN/nX5k7DUQE+zcOmPEydatWL1vO+Ue7
- 7DhlazHy/m9kp7r0UIsiC/8oqXPfa43U/m+qJdtWd1pKmOnaW54v+6wrOzqj
- HlOnOSk7H2pvCVavlz1hgrpUUJnUuoOYfEREGV0ZEJCOjA899VWUyH1O8Goy
- NtJaVktrxlZ6MpZuRTr98puWnYyPtCI51teShpbTijErM/WX35PJXFzXjLjq
- cURQqv7nI5Vypbr8TSXPOoIgbfN+2GLvPF8+oU1rOuPMi7ymz+Y/NypIXYjL
- jkm1tVSZgi6RhsKVfYID6b8ggVuyJs1wG3dwV8KVBjSGDAxlVrE2zd7DOjYU
- bIAw3McDZCV1s4FYBbkKtip4iG0J8aiCPHZkVYRd7DWQiPA4wn6E1JXV/wB4
- ImM31wMAAA==
+ androidx/compose/runtime/snapshots/AutoboxingStateValueProperty.class:
+ H4sIAAAAAAAA/6VSz28SURD+3vKzqLCtrVJqpdZK68XFxpsmhioqCS1kd9Ok
+ 4WAe8MQtyz7cfSC9cfP/8M/wYEiP/lHG2WKBA6kHLzPfzsw3883s+/X7x08A
+ L3DA8Jp7bV867ZHRkr2+DIThDzzl9IQReLwffJYqMEoDJZty5HgdS3ElTrk7
+ EHVf9oWvLhJgDPo5H3LD5V7HqDXPRUslEGHIz6Pc8yRRHekZpRlMIMaw0ffF
+ J+H7on3d8YT3BMP6wdPqnG8pn6a/ZNiudqVyHW+xoymU8EJE+dgwFMewv6Ru
+ PnmRET+qnJTMM4bcEorN/Y5QVJXmriu/ivY0EDDs3ThgxsvUzVq9bNpnH62y
+ bZfNxcj7v5Gd6tJDLYos/KOkLl2ndRHu/6ZasqzwTksJM127y/NlV/Soo33R
+ F+Fpjsv2h9pbhtXrZY+F4m2uOCW13jBCj4iFZiU0YGBdio+c8KtIqP2c4dVk
+ rKe0rJbS9K3UZEwuTS55+U3LTsaHWpEdJdfiupbTihEzM/WX3+PxXDSp6dGw
+ xyFDqfqfj5Tkkrr8TSXPuoohZcmB3xLvHJee0KY5nXHqBE7TFfOfGxRIF6LU
+ MR5uTSoTSBLSULiyT7BP/gtiWKGalMAt3MYdgukGNIEM9NCsYm2avYt1bISw
+ ASZwD/eRJepmA5EKchVsVfAA2wTxsII8dqgqwCPsNhAL8DjAXoDElU3+AfvU
+ hgfXAwAA
"""
)
private val MinimalSnapshotStateStub: TestFile = bytecodeStub(
filename = "SnapshotState.kt",
filepath = "androidx/compose/runtime",
- checksum = 0x575bf828,
+ checksum = 0x992154cd,
source = """
package androidx.compose.runtime
@@ -179,117 +179,118 @@
}
""",
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGIOBijg0uaSSMxLKcrPTKnQS87PLcgvTtUr
- Ks0rycxNFeIPzkssKM7ILwkuSSxJ9S7h0uFSwqVYLyczr0SvJLW4RIgtBEh6
- lygxaDEAAJG2tCtzAAAA
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uaSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIPzkssKM7ILwkuSSxJ9S7h0uFSwqVYLyczr0SvJLW4RIgtBEh6
+ lygxaDEAAHx2CidzAAAA
""",
"""
- androidx/compose/runtime/IntState$DefaultImpls.class:
- H4sIAAAAAAAA/4VTy27TQBQ9E7d1SAxpS1sIhUJpgKSgGiQWSF1FRUiWTFoR
- lA2rSTJJJ7FnovE4Cn/FEljwAXwU4tpJKVBQFnMfZ+6c+7K///j6DcBLPGM4
- 4qpvtOzP/J6OJzoRvkmVlbHwA2XblltRey0GPI1sEE+ixAVjWB/xKfcjrob+
- aXcketaFw1AcCtvhUSoYXtXDpbTHjfCShkAxFOaYofn/l4nik+Rc28RvplZ3
- 9UyqYU6VZz0zeiKM/Ugc2xMjBsIY0b8AWzymsopSXVR4EGoz9EfCdg2XKvG5
- UpqopCa7pW0rjSIi2l/ahYsyQ5k6D35RO/VG4OE6bpThocKwcaVNFxsM7jQL
- Px0w7NSDf83Cw01slbCJbYbVmj2XSVb28rlSxnCsbSSV/1ZY3ueWE1aIpw7t
- nGWimAkwsHFm0OoKM5lZzxm835dNm24vZp5TH40tw8qJ7lOXlVAq0UrjrjDv
- eTciZDPUPR51uJGZvwB3383LC9RUJpKg5uWgGWp/355xQ5uywvwR5gVKCXMS
- 8SQR5JbaOjU98UZmCaoLis4VerxAASuYt3oNq1iDg1r+3VPrpEuHX7DO8Bk7
- n8gr4BHJtfxmC49JevMo3MJt0k/oVCiK/gAUEyIsEVCn42ZsmeOgkcfTPOnt
- Q1RxmPMe4CnpPcKrFHPnA5wAuwHuBriHvQD38SDA/k8Blj2alAMAAA==
+ androidx/compose/runtime/IntState$DefaultImpls.class:
+ H4sIAAAAAAAA/4VTy27TQBQ9E7d1mhjSlrYQCoXSAElBNUgskLqKipAsmbQi
+ VTasJskkncSeicbjKPwVS2DBB/BRiGs3pUBBWcx9nLlz7sv+/uPrNwCv8Jzh
+ kKu+0bI/83s6nuhE+CZVVsbCD5RtW25F7Y0Y8DSyQTyJEheMYW3Ep9yPuBr6
+ J92R6FkXDkNxKGyHR6lgeF0PF9IeNcIrGgLFUJgjhub/XyaKT5JzbRO/mVrd
+ 1TOphjlVnvXU6Ikw9iNxbE2MGAhjRP8SbPGYyipKdVnhfqjN0B8J2zVcqsTn
+ SmmikprslratNIqIaG9hFy7KDGXqPPhF7dQbgYcbuFmGhwrD+rU2XawzuNMs
+ /GTAsF0P/jULD7ewWcIGthiWa/ZcJlnZi+dKGcOxtpFU/jtheZ9bTlghnjq0
+ c5aJ1UyAgY0zg1ZXmMnMesHg/b5s2nR7PvOc+nBsGZaOdZ+6rIRSiVYad4U5
+ 492IkI1Q93jU4UZm/hzceX9RXqCmMpEENa8GzVD7+/aUG9qUFeaPMC9QSpjj
+ iCeJILfU1qnpibcyS1CdU3Su0eMlCljCRaurWMYKHNTy755aJ106+II1hs/Y
+ /kReAY9JruQ3m3hC0ruIwm3cIf2UToWi6A9AMSHCEgF1Om7GljkOGnk8zZPe
+ PkIVBznvPp6R3iW8SjF3P8AJsBPgXoD72A3wAA8D7P0EkuUIJ5QDAAA=
""",
"""
- androidx/compose/runtime/IntState.class:
- H4sIAAAAAAAA/4WS304TQRTGv9n+2xaEpYJCUQRBLTdsJV6YYEyIBrNJraRN
- kISraTutW7YzzcxsU+94Ch/ACx/CC0O49KGMZ1tQomIvZuacM+f7zZmZ8/3H
- 128AnqHMsMFlW6uwPfJbqj9QRvg6ljbsCz+QtmG5FTkwhjfVHh9yP+Ky679r
- 9kTL7lVvVI5lL64pCCW6Qu+93GPw/gTlkGZY+z8shyyD2xX2iEexYFgqb/8D
- z7B/c1FG8oH5oKzx92OrmmoUyu6YPUYeajUQ2n4kxtJAi47QWrSvgjXepzPd
- UF4dv1lVuuv3hG1qHkrjcykVoUJFdk3ZWhxFBJqheoNfmlR5O2BYqJ4qG4XS
- fyssb3PLKc/pD1P0HSyZ3GQCAzul+ChMvApZ7acMh+dnXsFZdibDcwuOm3U7
- y+dnu24xXXQqToXVi16qRNbxxZf0xedstpR2016mvuhlk+jz98cXn67iOc9N
- uLvJZaa2ABW5PuW7KYXKzgwnl92Zitx6LTo8jmzQH0QmhwcMs9cj1CeNyw8b
- p++cWobV+gQSyGFowmYk9n+/O+kDKYV+FXFjBLn5RtiV3Maayik0VKxb4iCM
- yFm5pBz9xaAec5Cha+To2R3qShd58jbJm6edAtkzBrO4haRl5yhIBrZoTrbW
- KWUDK3iUiJHC4/H6EE9oPaB9j9ALJ0gFKAa4HWARS2TiToC7WD4BM6QtnSBv
- sGpwz+A+HWUwZzBvsGbgGuR/AkgwZTK5AwAA
+ androidx/compose/runtime/IntState.class:
+ H4sIAAAAAAAA/4WS304TQRTGv9n+2xaEpVKFogiCCjcsEi9MMCaNBrNJraRN
+ kISraTvUhe1MMzPb1DuewgfwwofwwpBe+lDGsy1VomIvZuacM+f7zZmZ8/3H
+ 128AnmGLYZ3LtlZhe+C3VLenjPB1LG3YFX4gbcNyK3JgDG+qZ7zP/YjLjv+u
+ eSZadr96o3Ike3FNQSjREXr/5T6D9ycohzTD6v9hOWQZ3I6wRzyKBUNpa/sf
+ eIbKzUUZyXvmg7LGr8RWNdUglJ0Re4Q81KontP1IjFJPi1OhtWhPgjXepTPd
+ UE6O36gq3fHPhG1qHkrjcykVoUJFdk3ZWhxFBJqheoNfmtTWdsCwUD1XNgql
+ /1ZY3uaWU57T7afoO1gy5ZMJDOyc4oMw8XbJaj9lOLy88ArOkjMenltw3Kx7
+ unR5secW00Vn19ll9aKXKpN1PPySHn7OZstpN+1l6oteNok+f388/DSJ5zw3
+ 4e4ll5naAlTk2pTvphQqO9MfX3ZnKnLztTjlcWSDbi8yOTxgmL0eoT5pXH3Y
+ KH3n3DKs1MeQQPZDEzYjUfn97qQPpBT6VcSNEeTmG2FHchtrKqfQULFuiYMw
+ Imf5inL0F4N6zEGGrpGjZ3eoK13kydsgb552CmTPGMziFpKWnaMgGdikOdla
+ o5R1LONRIkYKj0frQzyh9YD2PUIvnCAVoBjgdoBFlMjEnQB3sXQCZkhbPkHe
+ YMXgnsF9OspgzmDeYNXANcj/BKBShOC5AwAA
""",
"""
- androidx/compose/runtime/MutableIntState$DefaultImpls.class:
- H4sIAAAAAAAA/5VT205TQRRd0wKF9igXBUUEVKq2VXu84BMmpsGYTFIKEdMX
- n6btUAZOZ5o5cxr8K30TH/wAP8q457RcBE3wYe4ra+21956fv77/ALCOdYbX
- QnesUZ2jsG16fRPL0CbaqZ4MtxInWpHk2u064WTxndwTSeR4rx/FOTCGmQMx
- EGEkdDfcbh3ItsshyzDZla4pokQyvC3Vr8q+Ua6fsdGl7Eq7wVD7N0GsRT/e
- Ny4Oa4kzLXOkdDelSsV3rOlL6z4Tx3zfyj1preycXDZEj6KbVPok0LW6sd3w
- QLqWFUrHodDaEJUytG8Y10iiiIhKVzWTQ4GhQHngpwrZUpkHuIbrBQSYZpi9
- 5DaHWYbcwMO39xgWSvxvKQlwAzfzmMM8w3jR7auYoXL1LJPr+LQ81f8oDy83
- yVJ83tIYRdgMsIS73tMyxTMYPjBO/uqHxkVKh1vSiY5wgqQzvUGW2o75adJP
- IOyh31DbZI6U3z1nCM43GnXZ7qjQaSDVQ0fKm6ZDOtN1pWUj6bWk/eiDZZir
- m7aImsIqfx5dLn0YeuJ6oGJFV7Wz6jIUL77uCEvt4aT9AxZwraXdjEQcSzrm
- d01i2/K98gKLI4rmJXq8QAZj3imtUxjHBLJ4mn49sk5rvnKMGYZvWPiSYp7R
- PJG+LKNKczBE4RZu0xrSmCYU/T6qIxHmfcZo5DybP0xhEXdGGm8ImfGpriwd
- YyWDrxcUVlKFhSFmpOB3q7hH716rQOuplteZyox0qGTkzUdGlaMoK6T7MuV/
- glcpN8N9wjz4hCzHGkeR4yEecTxGiaP8GxKjsqaBBAAA
+ androidx/compose/runtime/MutableIntState$DefaultImpls.class:
+ H4sIAAAAAAAA/5VT205TQRRd0wKl7dECCooIqFRtq3K84BMmhmBMJimFiOmL
+ T9N2KAOnM82cOQ3+lb6JD36AH2Xcc1ougib4MLPnsrLWXrP3/Pz1/QeANawx
+ vBa6Y43qHIVt0+ubWIY20U71ZLiVONGKJNdu1wkny+/knkgix3v9KM6BMUwd
+ iIEII6G74XbrQLZdDlmGya50TRElkuFtpX5V9vVq/YyNDmVX2nWGjX8TxFr0
+ 433j4nAjcaZljpTuplSp+I41fWndZ+KY7Vu5J62VnZPDhuhRdpNKnyS6Uje2
+ Gx5I17JC6TgUWhuiUobWDeMaSRQRUeWqZnIoMhTpHfipQrZS5QGu4XoRAUoM
+ 05fc5jDNkBt4+PYew1yF/+1JAtzAzQJmMMswXnb7KmaoXf2VyXV8Wp7V/ygP
+ rzbJUnze0hhl2AywgLve0yLlMxheME7+6ofGRUqHW9KJjnCCpDO9QZbajvkp
+ 7ycQ9tAvqG0yR8qvnjME5xuNumx3VOg0kdVDR8qbpkM6pbrSspH0WtJ+9Mky
+ zNRNW0RNYZXfjw4XPgw9cT1QsaKjjbPqMpQv3u4IS+3hpP0DFnCtpd2MRBxL
+ 2hZ2TWLb8r3yAvMjiuYlerxABmPeKcU8xjGBLJ6mX4+sUyzUjjHF8A1zX1LM
+ M5on0ptFrNIcDFG4hdsUQxolQtHvozoSYcG/GI2cZ/ObPOZxZ6TxhpAZipO1
+ hWMsZfD1gsJSqjA3xIwU/GoZ9+jeaxUpnmp5nXxmpEMlI28+M6ocZVkj3Zcp
+ /xO8SrkZ7hPmwSdkOVY4yhwP8YjjMSoc1d+/bB9ggQQAAA==
""",
"""
- androidx/compose/runtime/MutableIntState.class:
- H4sIAAAAAAAA/41T3U4TQRg9sy3d7VJxKaAF/ONPWlS2NpqYYIxEY7JJqaZN
- gISrKR3qwna27sw2eMdT+ABe+BBeGMKlD2X8trRAVISLmfl+zpzzzcw3P399
- /wHgGVYZily2otBvHbq7YacbKuFGsdR+R7gbsebNQHhSNzTXwgRj+FTd5z3u
- Bly23ffNfbGr16qXEgx3/gcy0OjDXl7gpq2iLaK1V2sMzp+SJtIMc1fKmsgw
- LF1L2oTFYLWF3uRBLBimiqV/FMOwfvlJlORd9THUyl2PddgMD33Z7nP3KT9E
- YVdE+jNxTHUjsSeiSLSGwRrvkKbly6H8QjWM2u6+0M2I+1K5XMqQqPyQ7Fqo
- a3EQEJGlzupNF73SJsMoncA7Y0kVSx7F1MXYePUg1IEv3Q2heYtrTjxGp5ei
- bmDJZCUTGNgBxQ/9xCuT1XrKII+PJm2jYJwPx7INK2vtFY6PKkaZVax8Om+U
- U2WjXnDSM2Rtn3wbO/mayc2krREnM5+2TMeqLzrZJFfJnK4vtl5vbZ98GeJs
- Z5RwOcdKVCsMK1f2zlmXJfd2dS8yLF+vHQlJFzHSO72459ctY/Gt2ONxoL1O
- N1AmlhhyFyPUzo1Bp/ThqweaYbZ+yuXJnq98Ils/f3Da70kpojcBV0qQm234
- bcl1HFFVdiOMo13xzg/ImR6wbP7FQf/AwAgNE1l60TR9HxujdLoSeTcpniP7
- hsIYOcnfcjA+SCagYZISeUz0AZMEIAMrNNuUfkgcy5jGI/INpPC4vxbxhNY6
- 5adI/dYOUh5ueyh4hJwhE7Me7uDuDpjCPdzfSVQeKMwpzCsskKJCXmFCYVJh
- XGFRwVbUz3B+A5uahrjABAAA
+ androidx/compose/runtime/MutableIntState.class:
+ H4sIAAAAAAAA/41T3U4TQRg9sy3d7VJxKaAF/ONPWlS2NpqYYIxEY7JJqaZN
+ gISrKR3qwna27sw2eMdT+ABe+BBeGMKlD2X8trRAVISLmfl+zpzzzcw3P399
+ /wHgGVYZily2otBvHbq7YacbKuFGsdR+R7gbsebNQHhSNzTXwgRj+FTd5z3u
+ Bly23ffNfbGr16qXEgx3/gcy0OjDXl7gpq2iLaK1V2sMzp+SJtIMc1fKmsgw
+ LF1L2oTFYLWF3uRBLBimiqV/FMOwfvlJlORd9THUyl2PddgMD33Z7nP3KT9E
+ YVdE+jNxTHUjsSeiSLSGwRrvkKbly6H8QjWM2u6+0M2I+1K5XMqQqPyQ7Fqo
+ a3EQEJGlzupNF73SJsMoncA7Y0kVSx7F1MXYePUg1IEv3Q2heYtrTjxGp5ei
+ bmDJlE0mMLADih/6iVcmq/WUQR4fTdpGwTgfjmUbVtbaKxwfVYwyq1j5dN4o
+ p8pGveCkZ8jaPvk2dvI1k5tJWyNOZj5tmY5VX3SySa6SOV1fbL3e2j75MsTZ
+ zijhco6VqFYYVq7snbMuS+7t6l5kWL5eOxKSLmKkd3pxz69bxuJbscfjQHud
+ bqBMLDHkLkaonRuDTunDVw80w2z9lMuTPV/5RLZ+/uC035NSRG8CrpQgN9vw
+ 25LrOKKq7EYYR7vinR+QMz1g2fyLg/6BgREaJrL0omn6PjZG6XQl8m5SPEf2
+ DYUxcpK/5WB8kExAwyQl8pjoAyYJQAZWaLYp/ZA4ljGNR+QbSOFxfy3iCa11
+ yk+R+q0dpDzc9lDwCDlDJmY93MHdHTCFe7i/k6g8UJhTmFdYIEWFvMKEwqTC
+ uMKigq2on+H8BhJaxEnABAAA
""",
"""
- androidx/compose/runtime/MutableState.class:
- H4sIAAAAAAAA/4VR0WoTURA9c3eT3aQxbmOradRaBTHxwa3FBzGlIKIYSBCa
- EIQ83SZrvM1mt+TeDX3cb/HBj/BBlj76UeJsKkUM1Zc7c+aeOTOc+fHz23cA
- L/CQ8FhGk0WsJuf+OJ6fxTrwF0lk1Dzwe4mRJ2HQN9IEDojQOxy86p7KpfRD
- GU39Dyenwdi0j9ZL3Ws1V2KHg0H7qE3w/m50YBN2/93soEhwp4EZyjAJCFvN
- 1voChEKzxVOYqa+Y2811YmtIKDaZmSeb3VlsQhX5vcDIiTSS+8V8abFVlD9u
- /oBAM66fqxztczZ5TnibpdWyqItylq6CcAvup3qWPrXdLPXowK3ZNfGe9sVx
- 3bMa4mWWfrz4Wr34Uqw0bNf2Co9st+g5udgB4cn1/v15E96OBoS9/7idm7G8
- dMDrR/JMf47N6uPZzBBKfTWNpEkW/F3ux8liHLxTIYOd40uRodKKJ76Oopib
- VBxp9l+gwD44bIDgi7koMdrNEcqMN1C5wjdg/c4sPFjF+9jj+IYZVVa5OYLV
- gdfBZgc13OIUWx1s4/YIpHEH9RGfEDsaDY27Gvd0DksaGxqVX4ySaL/HAgAA
+ androidx/compose/runtime/MutableState.class:
+ H4sIAAAAAAAA/4VR0WoTURA9c3eT3aQxbmOradRaBTHxwa3FBzGlIKIYSBCa
+ EIQ83SZr3GZzt+TeDX3cb/HBj/BBlj76UeJsKkUM1Zc7c+aeOTOc+fHz23cA
+ L/CQ8FiqySIOJ+f+OJ6fxTrwF4ky4Tzwe4mRJ1HQN9IEDojQOxy86p7KpfQj
+ qab+h5PTYGzaR+ul7rWaK7HDwaB91CZ4fzc6sAm7/252UCS408AMZZQEhK1m
+ a30BQqHZ4inM1FfM7eY6sTUkFJvMzJPN7iw2Uaj8XmDkRBrJ/WK+tNgqyp9S
+ /oBAM66fhzna52zynPA2S6tlURflLF0F4RbcT/UsfWq7WerRgVuza+I97Yvj
+ umc1xMss/XjxtXrxpVhp2K7tFR7ZbtFzcrEDwpPr/fvzJrwdDQh7/3E7N2N5
+ 6YDXV/JMf47N6uPZzBBK/XCqpEkW/F3ux8liHLwLIwY7x5ciw1CHPPG1UjE3
+ hbHS7L9AgX1w2ADBF3NRYrSbI5QZb6ByhW/A+p1ZeLCK97HH8Q0zqqxycwSr
+ A6+DzQ5quMUptjrYxu0RSOMO6iM+IXY0Ghp3Ne7pHJY0NjQqvwDJFOU0xwIA
+ AA==
""",
"""
- androidx/compose/runtime/SnapshotStateKt.class:
- H4sIAAAAAAAA/5WSXW/TMBSGX6efC2XLCoO142sbsA4Jsk1IXAwhIQRSRNZK
- C1RCvXIbU9ymdpQ4VS/7r5BAgl7zoxB2WqmaEBfcvOf4PY+P7ZP8+v3tB4Dn
- OCJoUREmkoczdyAnsUyZm2RC8QlzA0Hj9ItUgaKKvVcVEAJnRKfUjagYup3+
- iA20WyDYnmSK9iPmiSXc+UzwtOUd+//sfXF1wznBoS+ToTtiqp9QLlKXCiF1
- iUudt6VqZ1GkqaP1+R9FmsWxTBQLOzFLcvTtbMBik1RQJSgFKuvvV2ETlF9y
- wdUrgp2Wv24RqISL4flxt4YartvYwCZBzZCcRl0aZYyAePp9/liqiAv3gika
- UkX1TazJtKBnSIxUjUCzY5NYujjjJjvRWXhKcLCY1+zF3LZ2rTw41eams5g3
- rRNyVnYsHQuGPCN48j8j0yc6Vz7Ss7EiKL6Rob73ls8Fa2eTPks+mH0EdV8O
- zLMSbtYrc+9y2d4TU55ybb1ez53ADmSWDNg7btDGCu3+BeIUFopYDqGBEsp6
- vZ//YQXtAPZ3bHyqX/uKrZ9mQDjQWs4rFRxqrS0pONjW8eGqWsnZR7k+wGMd
- X2i3rvvf6KHg4aaHHQ+3cNvDLhoemtjrgaS4g7s9FFOUUtxL4aS4/wetLc8s
- 8QIAAA==
+ androidx/compose/runtime/SnapshotStateKt.class:
+ H4sIAAAAAAAA/5WSXWsTQRSG39l8r7HdRqtN6lc/tKmg2xbBi4ogorC4TaDR
+ QMnVJDvGSTYzy+5syGX+laCgufZHiTObQCjihTfvOfOeZ87MnN1fv7/9APAC
+ RwRNKoJY8mDmDuQkkglz41QoPmFuR9Ao+SJVR1HFPqgSCIEzolPqhlQM3XZ/
+ xAbazRFsTVJF+yHzxBJufyZ41vSO/X/2vri+4ZzgwJfx0B0x1Y8pF4lLhZC6
+ xKXOW1K10jDU1NH6/E8iSaNIxooF7YjFGfpuNmCRSUooExQ6Ku3vlWETFF9x
+ wdVrgu2mv27RUTEXw/PjbhVV3LRRwQZB1ZCchl0apoyAePp9/liqkAv3gika
+ UEX1TazJNKdnSIxUjECzY5NYujjjJjvRWXBKsL+YV+3F3LZ2rCw45caGs5g3
+ rBNyVnQsHXOGPCN4+j8j0yc61z7S87EiyL+Vgb73ps8Fa6WTPos/mn0ENV8O
+ zLNibtYrc/dy2d4TU55wbb1Zz53A7sg0HrD33KD1Fdr9C8QpLOSxHEIdBRT1
+ ei/7w3LaAezvqFzVbnzF5k8zIOxrLWaVEg60VpcUHGzpeLiqljL2caaP8ETH
+ l9qt6f63esh5uO1h28Md3PWwg7qHBnZ7IAnu4X4P+QSFBA8SOAke/gF9don0
+ 8QIAAA==
""",
"""
- androidx/compose/runtime/State.class:
- H4sIAAAAAAAA/31Qy0rDQBQ9k6RpjK/4bquIy+rCVHEhvsCNUKgItojQ1diO
- dWw6KZ1pcZlvceFHuJDg0o8Sb1pXKm7uvefce+7r4/P1DcABNhg2uWoPYtl+
- Cltxrx9rEQ6GysieCOuGG5EHYyifNI5qj3zEw4irTnh19yha5vjsN8UQ/OTy
- cBi8jjA3PBoKhuXy9l+6XHm70SC/UOvGJpIqvBSGt7nhxFm9kU3rssx4mQED
- 6xL/JDNUoai9x3CUJnO+VbD8NPGtIDOe7d0X0mTH8dIkYPtWxbpeDOySdZgm
- t+8vzvuz65YczwlyWYd9hq3a/8+gXViDZeNzo8k1QV3xvn6IzTi/2zUMU3XZ
- UdwMB5T26/Fw0BIXMiJQvJ70upFa3kXiXKmYRDJW2qX5yGF8GX3LBX0dRUIW
- PNjfkY3S2BewTv6UKqZI4zdhVzFdxUwVs5ijEPNVBFhogmksYqkJV2NZY0Vj
- VWNNZzD/Bf5sje8BAgAA
- """
+ androidx/compose/runtime/State.class:
+ H4sIAAAAAAAA/31Qy0rDQBQ9k6RpGl+pz1pFXLYuTBUX4gvcCIWKYIsIXY3t
+ WMemE+lMi8t8iws/woUEl36UeFNdqbi5955z77mv94+XVwB7WGfY4Ko7jGX3
+ MezEg4dYi3A4UkYORNg03Ig8GEPlqHXQuOdjHkZc9cKLm3vRMYcnvymG4CeX
+ h8Pg9YS54tFIMCxWqn/pcpVqq0W+2OjHJpIqPBeGd7nhxFmDsU3rsswUMgMG
+ 1if+UWaoRlF3h+EgTWZ9q2T5aeJbQWY827stpcmW46VJwHatmnU5H9hlaz9N
+ rt+enbcn1y07nhPksg67DJuN/59Bu7AWy8bnxl/XBE3FH/RdbCb57b5hKDRl
+ T3EzGlLab8ajYUecyYjA6uVXryup5U0kTpWKSSRjpV2ajxwml9G3XNDXsUrI
+ ggf7O7JRnvgS1sgfU0WBNH4bdh1TdUzXMYNZCjFXR4BiG0xjHgttuBqLGksa
+ yxorOoP5T7cJbagBAgAA
+ """
)
}
}
diff --git a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetectorTest.kt b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetectorTest.kt
index 52d93a5..a45ff5f 100644
--- a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetectorTest.kt
+++ b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableCoroutineCreationDetectorTest.kt
@@ -44,7 +44,7 @@
private val coroutineBuildersStub: TestFile = bytecodeStub(
filename = "Builders.common.kt",
filepath = "kotlinx/coroutines",
- checksum = 0xdb1ff08e,
+ checksum = 0x8bc08fcf,
"""
package kotlinx.coroutines
@@ -60,49 +60,50 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlk5iXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbqpeWny/EFpJaXOJdwqXOJZSdX5KTmQdSVpRfWpKZl1osJOhUmpmT
- klpUHA/Um5uf512ixKDFAADN8kOtaQAAAA==
+ H4sIAAAAAAAA/2XMsQoCMRAE0BXh4LZzm2usLBQsgt+g5bX2Ipc9CCa7R7JB
+ P98IWjkw3ZsBgDUArFp7+Ab3uL2Lzxr8y02aFi3schULid2sSt2Vi42GB6SH
+ WgzyYVmrBeFCm3MN0XMut7ZNKg2ecPiHbo76JPzp0ai/aIw8tesdHOENLed0
+ U5sAAAA=
""",
"""
kotlinx/coroutines/Builders_commonKt.class:
- H4sIAAAAAAAAAK1TXU8TQRQ9M/1aliJlBWyrYpUqX8IW4lsJCRJJGhGNRV54
- MNPtWrbdzpr9aOCN+FP8BfJGfDAE3/xRxrvbLoKagNF9uHvu3XPPnJm5++37
- 5y8AnkBnKHcc37bkgW44rhP4ljQ9/Wlg2U3T9d4aTrfryOd+Bowh1xY9odtC
- tvSXjbZpUDXBkBLeoTQYNme3/qC0EcO64bw3qwOK3u519XeBNHzLkZ6+OUAr
- 1bldhk//QWh18RoaMecyRRIIRKhyLqK/kZZfXasubP16AlQMLU9vOW5Lb5t+
- wxUW+RBSOr7oe9p2/O3AtqsM6VV/3/LWFAwxTF3wb0nfdKWw9Zr0XWq3DC+D
- YYYJY980OoP+V8IVXZOIDDOzv/u4UKmHIi3ylcUIbqjIYpRuqWE7RkfBGMNw
- ObRRHlzb9DUOiqF01cXR7mxB2T5Dtq8fp2Nx6wvTF03hC+Lybi9B88fCkGJg
- nRBwqh9YIaoQai4zHJ8eldTTI5XnuMrzPIL5PuS5OFF4sUpJkVfYPK/wlZlc
- ojitMC2pUaapmhIhVklpaS2ZZ5V0JXn2Mc2VzNcTdnoUwpxCCkP/JHD2gSfJ
- SiE0vsJoZ9DibV88o9IVE0eUqZjy7MA3aRYcGQvsHEZXocU/51L/51zq+AzJ
- DadpMoxukeR20G2Y7o5o2GZowzGEvStcK8wHxaG61ZLCD1zC5dcBrd81a7Jn
- eRZ9Ph+09Z9DzKDWncA1zE0r7C8Menb7HReIWAZHEuHDUUAKaSQwS9k65Zze
- I/OaeoLcgqZRPI5ocxTTdGJZKJgnPNkn4ibGI6ERjGGCvi9E7AwehzVOBSUc
- oSgWqOmvVspeWunW9VfiWIziDJboXaNqnnZZ2EOihmINtyniTg13MVXDPZT2
- wDzcx4M9qB5SHqY9jHsY81D28DBKH3lIe5j8ASY6o3uSBQAA
+ H4sIAAAAAAAA/61TXU8TQRQ9M/1guxQpKyBUxSpVvoQtxAeTEhIkkmxENIK8
+ 8GCm27Vsu501+0HgjX9i4i/QN+ODIT76o4x3tl0ENRGNL3fOvXPumTt37nz9
+ 9ukzgAeoMVQ7fuS58si0/cCPI1c6ofkodr2mE4SvbL/b9eWTaACModQWh8L0
+ hGyZzxptx6ZohiEnwmNpM2zObv1GaSOFO7b/xqn3KWb7sGu+jqUdub4Mzc0+
+ WqnP7TG8/w9Cq4uX0Eg5FymSQCyUypmI+VK6UX2tvrD1cwcoqEqe3vKDltl2
+ okYgXKpDSOlHolfTth9tx55XZ8ivRgduuKahwDB1rn5XRk4ghWdaMgoo3bXD
+ AQwyjNkHjt3p5z8Xgeg6RGSYmf21jnORHSXSorqKGMIVHUUM0ys1PN/uaBhh
+ GKyqMqr9Z5u+RKMYKn96OLqdJ8g7YCj29FN3JE196kSiKSJBXN49zND8MWUK
+ yoCBdRTgtHnkKkSjyZvLDG9PTyr66YnOS1znEzyBEz3IS6mj8fJDcsq8xuZ5
+ ja/MlDLlaY0ZWYM8Qze0BLFazsgb2QlWy9eyX97luTagbEmj5MK/5qoyV5i6
+ gZHe9HxbKn8YMqJMpZTHR5FDz+/LVGD3OOm+kf7Hpd5/XOpEDNkNv+kwDG+R
+ 5HbcbTjBrmh4jirDt4W3JwJX+f1gYcdtSRHFAeHqi5jO7zqWPHRDl7bPZmv9
+ x9wy6Dt+HNjOpqvyJ/s5e72Mc0QsgyOr3pDWSeSQRwZz5K2Tz2kdmjf0jygt
+ GAbZDwltnmyeOlaEhgXC4z0irmI0ERrCCMZo/37CHsCiinEKaMmoKDtJSX91
+ UvHCSdcufxLHUmJnYdJqUXSCbjm5j4yFsoXrFm7gpoUp3LJQwe19sBB3ML0P
+ PUQuRDXEaIiREHdD3EvcmRD5EOPfAUeuoPKFBQAA
""",
"""
kotlinx/coroutines/CoroutineScope.class:
- H4sIAAAAAAAAAIWSTW/TQBCG390kjusGmpavlPJV2gNwqNuKGxVSG4FkKRiJ
- VJGqnjbOqmxi7yJ7HfWYEz+Ef1BxqAQSiuDGj0LMmgAHDtjSzLyzs493Zv39
- x6cvAJ5ii2FzYmyq9HmYmNyUVmlZhN3fYT8x72QTjKE9FlMRpkKfha+HY5nY
- JmoM3oHSyj5nqD16PGihAS9AHU2Gun2rCoat3n/pzxj8gyStOAG42+xHcf/4
- MO6+aOEKgiVKXnUok5+FY2mHuVC6CIXWxgqrDMWxsXGZpoRaXXwwfCWtGAkr
- KMezaY26Zc40GNiEUufKqV2KRnsM2/NZEPAOD3ibovnM//aed+azfb7Ljpo+
- //rB423uavcZcbB2VKp0JPNiJzFZZvTOxDJsvCm1VZmM9FQVapjKw78HpHl0
- zUgyrPSo7bjMhjI/FlRDrJ5JRDoQuXJ6kQz6pswT+VI5sb4AD/7BYo9GU3et
- Yd1NivxdUh75NnlOb6NS90iF5JmbwJNL+BfV8v1FMQjygGzrVwGWCAX4WP6z
- +RZVu2f5M/jJJVofsXJRJTg2K3sHD6sfim6AAGunqEW4FuE6Wdxw5mZEkM4p
- WEFnvU3rBYICGwW8n1uFkiGNAgAA
+ H4sIAAAAAAAA/4WSTW/TQBCG390kjuMGGspHE8pXaQ/AoW4rblRIbQSSpRAk
+ UkWqeto4q7KJvYvsddRjTvwQ/kHFoRJIKIIbPwoxawIcOOCVZuadnX3WM/b3
+ H5++AHiKbYbNqbGJ0udhbDJTWKVlHnZ/h4PYvJN1MIbWRMxEmAh9Fr4eTWRs
+ 66gweAdKK/ucofLo8bCJGrwAVdQZqvatyhm2ev+lP2PwD+Kk5ATg7rAf9QfH
+ h/3uiyauIGhQ8qpDmewsnEg7yoTSeSi0NlZYZSjuG9svkoRQ15YXhq+kFWNh
+ BeV4OqtQt8yZhjNgYFPKnyundika7zFsL+ZBwNs84C2KFnP/23veXsz3+S47
+ qvv86wePt7ir3WeOsHZUqGQss3wnNmlq9M7UMmy8KbRVqYz0TOVqlMjDv29J
+ Q+masWRY7VHv/SIdyexYUA2xeiYWyVBkyullMhiYIovlS+VEZwke/oPFHs2n
+ WjbVceMif4+UR75FntOqleo+qdC1Tr725BL+Rbn9YFkMgmySbf4qQINQgI+V
+ P4fXqdo9K5/BTy7R/IjVizLB8bC0d7FV/lX0GQiwdopKhOsRbkS4iVsUYj1C
+ G51TsBy3sUH7OYIcd3J4PwGm9PkckgIAAA==
"""
)
private val flowStub: TestFile = bytecodeStub(
filename = "Flow.kt",
filepath = "kotlinx/coroutines/flow",
- checksum = 0x3416a857,
+ checksum = 0x40e0a7,
"""
package kotlinx.coroutines.flow
@@ -110,29 +111,30 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlk5iXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbqpeWny/EFpJaXOJdwqXOJZSdX5KTmQdSVpRfWpKZl1osJOhUmpmT
- klpUHA/Um5ufB1RowCWOqVAvLSe/XIgLptq7RIjTOT8nJzUZaLQSgxYDAKm0
- uUqbAAAA
+ H4sIAAAAAAAA/2XMsQoCMRAE0BXh4LZzm2usLBQsgt+g5bX2Ipc9CCa7R7JB
+ P98IWjkw3ZsBgDUArFp7+Ab3uL2Lzxr8y02aFi3schULid2sSt2Vi42GB6SH
+ WgzyYVmrBeFCm3MN0XMut7ZNKg2ecPiHbo76JPzp0ai/aIw8tesdHOENLed0
+ U5sAAAA=
""",
"""
kotlinx/coroutines/flow/Flow.class:
- H4sIAAAAAAAAAH1Qz08TQRh932y7C0uVBQWLInjEHlggJCZCSNCEpEnVRJpe
- epq2Kw7dziQ7s8Bx/xb/A04mHsyGI3+U8ZvKSRPn8L7vvXnz/Zj7Xz9+AjjE
- NmFzalyu9E06NoUpndKZTb/k5jo9Y4hAhJ3j/tvepbySaS71RfppdJmN3dHJ
- vxIh+VuL0CCEx0ord0IIdl4PWggRxWhigdBwX5UlbPX+NwOXXXkwpB8yJyfS
- SdbE7CrgHchDk0BTlm6UZ3ucTfYJnbpqxaIt4rqKRcJQV+266oQLdZXQKzoQ
- e+Jd8+5bKJLAvzjgIn3iioh8292p4wHfm0lGWO7xSB/L2Sgr+nKUs7LaM2OZ
- D2ShPH8QF8/VhZauLDiPz01ZjLMz5S82PpfaqVk2UFax81Rr46RTRlvsQ/Bf
- +MPt/dcwbjBL55xX63zH4i0nAs8Zw7nYwAvG1h8DYixxDLA5dwV4OY9tbHF8
- w54Wex4NEXTxuItlRiQeVrpYxZMhyOIp1oZoWCxZrFs8s4h+Az4tHOgiAgAA
+ H4sIAAAAAAAA/31QwW4TMRSc5012m22g21IghVJ6LDmwbYWEVKpKgFQpUgCJ
+ Rrnk5CRLcbOxpbW39Ljfwh9wQuqhWnHko6o+h5xA4jJvZjx+fs+/b69vALzC
+ LmF7Zlyu9FU6MYUpndKZTb/k5lt6yhCBCHvHg6P+hbyUaS71efppfJFN3JuT
+ fy1C8rcXoUEIj5VW7oQQ7L0YthEiitHECqHhvipL2On/bwZuu74MpB8yJ6fS
+ SfbE/DLgHchDywMINGP/Snm1z2x6QOjWVTsWHRHXVSwShrrq1FU3XKmrhHbp
+ UOyLd81f30ORBP7GITcZkO8V+bdfzhxP+d5MM8Jan+f6WM7HWTGQ45ydjb6Z
+ yHwoC+X10mydqXMtXVkwj89MWUyyU+UPtj6X2ql5NlRWcfKt1sZJp4y2OIDg
+ D1nu4P+H8QmrdKGBZvcnWj+YCDxlDBdmA9uM7T8BxFjlGuDZIhVgZ1G38Jzr
+ a860OXNvhKCH+z2s9ZBgnSk2eniAzRHI4iEejdCwWLV4bNGxiO4ApHDXcycC
+ AAA=
"""
)
private val flowBuildersStub: TestFile = bytecodeStub(
filename = "Builders.kt",
filepath = "kotlinx/coroutines/flow",
- checksum = 0xb581dd7,
+ checksum = 0xa1c50396,
"""
package kotlinx.coroutines.flow
@@ -142,32 +144,32 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlk5iXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbqpeWny/EFpJaXOJdwqXOJZSdX5KTmQdSVpRfWpKZl1osJOhUmpmT
- klpUHA/Um5ufB1RowCWOqVAvLSe/XIgLptq7RIjTOT8nJzUZaLQSgxYDAKm0
- uUqbAAAA
+ H4sIAAAAAAAA/2XMsQoCMRAE0BXh4LZzm2usLBQsgt+g5bX2Ipc9CCa7R7JB
+ P98IWjkw3ZsBgDUArFp7+Ab3uL2Lzxr8y02aFi3schULid2sSt2Vi42GB6SH
+ WgzyYVmrBeFCm3MN0XMut7ZNKg2ecPiHbo76JPzp0ai/aIw8tesdHOENLed0
+ U5sAAAA=
""",
"""
kotlinx/coroutines/flow/BuildersKt.class:
- H4sIAAAAAAAAAIVR32/SUBT+TguFdSgd/trY3JS5hb3Yjfi0ERI1WSQiS1xD
- Yni6QEculN6kvcU98rf4F/hmookhPvpHGU8RYyLRNe13zvn6ndN7vn7/8fkr
- gGc4JFTGSgcyvHb7KlKJlqEfu1eBeu++SGQw8KP4tc6BCM5ITIUbiHDoXvRG
- fp9Zk2Cl0osrQq3a+ltwdtT61+xzhjNCo+6drrY1qp53Q2+dFQ0esN9S0dAd
- +boXCRnGrghDpYWWivO20u0kCFi1879ROazxGnUZSt0gmNWjTgHrKNiwcYuQ
- nYog8Qml1WMSNpZndN/4WgyEFswZk6nJ1lIKWQKN08Rg/lqm2TFngxO2az6z
- bX6MTcM28mZ5z5nPyvlSpmS8Mo6pksnPZ45RsxyzzMS3D5bhZNLOGmH3JlPJ
- I6z//nlPx5qQeakGvEOxxdp2Mun5kSd6wWIr1RdBR0QyrZfk2qUchkInEefb
- b5NQy4nfDKcylvz6+R+DCfalSqK+fy7Ttq2ltLMixAkMZJBeLEMWFkzscVVj
- njjmv8B+9wm3P6ZW4RGjteAtPGYs/NKgCIdjZaHJYX+pyi/qJwvcxQHHU2Y3
- +CulLswm7jRxlxH3mriPB01sYqsLilHGdhfZOL13YjyMUYxh/QQRN9W+GAMA
- AA==
+ H4sIAAAAAAAA/4VRXW8SQRQ9dxcW2KJs8aultVXqB31xW+JTS0jUpHEjtokl
+ JIanAbZkYNlJdmexj/wWf4FvJpoY4qM/yniXYkwk2mT33HvPnHtn5syPn1++
+ AXiOp4TqWOlAhpduX0Uq0TL0Y/ciUB/cl4kMBn4Uv9E5EMEZialwAxEO3bPe
+ yO8zaxKsVHp2QajXWn8Ljvdb/5p9wnBMaDbaR6ttzVq7fU1vgxVNHrDXUtHQ
+ Hfm6FwkZxq4IQ6WFlorzU6VPkyBg1fb/RuVQ4Gs0ZCh1k2DW9jtFrKFow8YN
+ QnYqgsQnlFePSVhfntF962sxEFowZ0ymJltLKRRSAIHGaWLw4qVMswPOBofs
+ 2Xxm2/wbG4Zt5M3KrjOfVfLlTNl4bRxQNZOfzxyjbjlmhYnvHy3DyaSddcLO
+ dc5Sm7D2+wWfjTUh80oN+CKlFmtPk0nPj9qiFyyupvoi6IhIpvWSLJzLYSh0
+ EnG+9S4JtZz4XjiVseTlF39cJtjnKon6/olM2zaX0s6KEIcwkMGVIZvIwoKJ
+ B1zVmSeO+a+w33/GzU+pVXjIaC14C1XG4pUGJTgc9xaaHB4tVflF/XiBu3jC
+ 8YjZdd6l3IXp4ZaH2x7u4K6He9jweP9KFxRjC9tdZOP0ux9jJ0YphvULZwN9
+ KR0DAAA=
"""
)
private val flowCollectStub: TestFile = bytecodeStub(
filename = "Collect.kt",
filepath = "kotlinx/coroutines/flow",
- checksum = 0x8685bc57,
+ checksum = 0xf321f548,
"""
package kotlinx.coroutines.flow
@@ -180,62 +182,62 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlk5iXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbqpeWny/EFpJaXOJdwqXOJZSdX5KTmQdSVpRfWpKZl1osJOhUmpmT
- klpUHA/Um5ufB1RowCWOqVAvLSe/XIgLptq7RIjTOT8nJzUZaLQSgxYDAKm0
- uUqbAAAA
+ H4sIAAAAAAAA/2XMsQoCMRAE0BXh4LZzm2usLBQsgt+g5bX2Ipc9CCa7R7JB
+ P98IWjkw3ZsBgDUArFp7+Ab3uL2Lzxr8y02aFi3schULid2sSt2Vi42GB6SH
+ WgzyYVmrBeFCm3MN0XMut7ZNKg2ecPiHbo76JPzp0ai/aIw8tesdHOENLed0
+ U5sAAAA=
""",
"""
kotlinx/coroutines/flow/CollectKt$launchIn$1.class:
- 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
+ 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
+ 9A8SvgNfR5+DsgPNwYaDpX8BZeuV7iUMAAA=
""",
"""
kotlinx/coroutines/flow/CollectKt.class:
- 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
+ H4sIAAAAAAAA/41UW08TURD+zrb0snJpKyAgVoEqV9lS7xSbKKZxY0ViGxLD
+ g55ul7Lt9qzZS+Wxf8kniSamz/4o4+y2FUEEX2bmzJz55puZs/vj59fvAO4j
+ zzDXtFzTEEeKZtmW5xpCd5QD0/qkbFumqWvuKzcKxpBo8DZXTC7qyptqg/xR
+ hBhiJveEdqgKhhdLpX8hFUnkz4tuD8yyZn3U88t7DB+2Kpuls7XyhYvBt1Yr
+ lXzhf0sslCy7rjR0t2pzQzgKF8JyuWtYZO9Y7o5nmjSXyJZ7aDiFGOIM6R6w
+ 0mi3FEO4ui24qajCtSnd0JworjBMaIe61uzn73Kbt3S6yLC49Hc7f3jKPkid
+ eA1jBKMyhjHGMOT4ZGNIMqxdup7MYAeZjSiu+sQNYbgF6nMwtNPzEGR4QbtB
+ 1QlMyhjHtdNdHhBkbyLFvpWLYpohcw6d555h1nTbea9ZrZYl/AdznWj0aDEU
+ z93dmb2ULq4dML2BtIxZ3GQYzfi7yZw8vvTFb8/f+eUcGJIDGq91l9e4y8kn
+ tdoh+laYL+K+AANr+oZEwSPDt7Jk1TYYNrudlNztyFJCCtTUQM2kE93OjJRl
+ 8+FYt5OQVmKpcEp6KWVDuUgiTIEhHyHHAvAKg9zf7nrTZQhvWzWdYaxETHe8
+ VlW3K7xqkidVsjRu7nHb8M99Z7xs1AV3PZvszFuPtt3SVdE2HIPCv9/ls5M3
+ zzCsCqHb2yZ3HJ2OctnybE0vGj7cdB9irwfwRx42ICGM3kSmMYQIQrhHp13y
+ SqRnV1LyMRKrqZQvv2H8HfuCqS5mjnHrsz8/+gGBsogA4nhA9mQvD3OYD3Bn
+ kcQCxR8Gt6N4RHpEIkcsKOrLEB6TlOk0HqRM4UlwOYdN0k/JnyFqt/cRUnFH
+ xaKKJSyrWMGqijXc3QdzsA5lHxGHPjtkqS0H8w6SDhZ+AcPOvm8nBQAA
"""
)
diff --git a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetectorTest.kt b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetectorTest.kt
index 58661be..b1f1f0a 100644
--- a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetectorTest.kt
+++ b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableFlowOperatorDetectorTest.kt
@@ -47,7 +47,7 @@
private val flowStub: TestFile = bytecodeStub(
filename = "Flow.kt",
filepath = "kotlinx/coroutines/flow",
- checksum = 0x8d13620c,
+ checksum = 0xab106046,
"""
package kotlinx.coroutines.flow
@@ -61,59 +61,60 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlk5iXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbqpeWny/EFpJaXOJdwqXIJZ6dX5KTmQdSVpRfWpKZl1qsl5aTXy7E
- 5gYkvUuUGLQYABYJSb1jAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuOSScxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxN1UvLzxdiC0ktLvEu4VLkEs/OL8nJzAMpK8ovLcnMSy3WS8vJLxdi
+ cwOS3iVKDFoMAPfFl7BjAAAA
""",
"""
kotlinx/coroutines/flow/Flow.class:
- H4sIAAAAAAAAAH1QPU8CQRSctwgH59fhJybGaGcsPCRWakxsSEgwJkJsqBZY
- yMKxm3B7SHm/y8Jc7Y8yvoNOE7eY2ZmdZPa9r++PTwC3OCacTq2LtFmGAzu3
- idNGxeEosu9hk8EDES4funftiVzIMJJmHL70J2rg7h//WoTgt+dhg1BtrzvC
- Z+XkUDrJSTFbFPgLlEORQFO2ljpXdb4NbwgXWer7oiZ8ZhFkaXlUy9KrUjlL
- AzqnhqiLPNggnLX/G4G7qEvcBC+X11NHqHT02EiXzBXB79hkPlBNHbE4eU2M
- 0zP1pmPdj9STMdZJp62JS1yGItangANGwXy44n0crdZJKHHG66HQQrmFCiP8
- HDZb2MJ2DxRjB7v8HiOIUY2x9wNCSdkgiwEAAA==
+ H4sIAAAAAAAA/31QPUsDQRSct9Fccn5d/Iwgop1YeDFYqQg2gYOIYIJNqk2y
+ CWsue5Ddiynvd1nI1f4o8V3SKbjFzJvZgXm7X98fnwBuUCecTBIXa7MIB8ks
+ SZ02yoajOHkPWwweiHBx371tv8m5DGNpxuFz/00N3N3DX4sQ/PY8rBFq7VVH
+ +KScHEonOSmm8xKvQAVUCwCBJuwvdKEaPA2vCed55vuiLnxmEeRZZVTPs8ty
+ Jc8COqOmaIgi2CSctv97BxdSl4oOr5BXE0eodvTYSJfOFMHvJOlsoFo6ZnH8
+ khqnp+pVW92P1aMxiZNOJ8aWuQzrWJ0SDhgF8+GS93G0/FNCmTNeD6UIlQjV
+ CD42eMRmhC1s90AWOwj43qJmsWux9wOUHf5akAEAAA==
""",
"""
kotlinx/coroutines/flow/FlowKt$map$1.class:
- H4sIAAAAAAAAAI1SXW8SQRQ9s1A+RpQWq4LWihYrReN2iSZGmiZNhYSUqikN
- LyQmA2zpwDJr2Fnkkb/kk4kPhmd/lPHuFl582LibnPsx5+49c+/+/vPzF4A3
- KDOUxq52pJqbfXfq+loq2zOvHPeb2SA406WJ+FqykmAMb1sjMROmI9TQ/NQb
- 2X1da0UVH11e1I5rDJv/liURZ9iJKk0iwZA4kkrqY4ZY+aCTQQppjg1whri+
- lh7DfmT3tXQSsLUimue2FgOhBeWMySxGI2ABbDCwMaXmMogOyRtYDLvLRZov
- F9zIGxW2XKR4frmopnLxnPFuuThkAatKrEgR1Gg3WmQSBbogKWX4Uo7+1voW
- o9nEvPJVX0tXeWZj5VVrB9HlGTzCDkMyCF6PNY3x1B3YDNkWET/6k549vRQ9
- hzK5ltsXTkdMZRCvkpmmUvb01BGeZ9Pws3XVd1xPqiEN9dodMKTbcqiE9qdE
- 5m3Xn/bthgwqt2+CD3bPH9bn2lYeyWUoXPhKy4ndkZ6kDidKuVqEd4IFgzZN
- WoMN0UurJ3xCkRnGtLLKD9z6To6BImEiTCbxlDBzQyB7Ozx5RsgpZyB4Ctgj
- jOMhHqMU1sfwPLS72Ccr2ucnn/lqRvwsHCivtItrr8FfFq3i+vx/fkBeaXFr
- z3plWe/Jr3O8oDYWCbpDIrNdxJrYbGKLELkA7jaxjXtdMA/38aALwwvc/F8g
- yNK6tAMAAA==
+ H4sIAAAAAAAA/7VSW28SQRT+ZqEFRuwFq7a2tmixtrS6bqOJkaZJU0tCStWU
+ pi8kJgNs6cAya3ZnkUd+kj6Z+GB49kcZzy6QGDUbX3yYb87tO5eZ8/3H128A
+ nuMJQ6Hrakeqgdl0PTfQUtm+eeW4H80ywaku9MSHgpUCY3hR7Yi+MB2h2ubb
+ Rsdu6lI1jnxwcV46LDEs/E5LIcmwFkdNYZZh9kAqqQ8ZEts7l1mkkeGYAWdI
+ 6mvpM2zFVp+2Tg0sTgLNM1uLltCCbEavn6AnYCFkQgAD65J9IEPtE0kti2F9
+ NMzw0ZAby0aRjYZpvjwa7qdzyZzxcjR8xsKofYqK7YSqrcd3msI9mpLaZXi/
+ HZ9rOkqn3zOvAtXU0lW+WZ5I+6WdeHoWa7jPkAqVp13NUPw1oVTa9pRwzJob
+ eE37td0I2icDbSufctMYM33hBDaDqJ0dveOTHPw0SsCLtfxUKvPdvJWf+v/l
+ l3ixyq1Na8+yXpF8En7ysduiUvNVIrwJeg3buxANhyy5qtsUzqXwZKhPjNmK
+ UrZ37Ajft2k15k9U03F9qdr05dduiyFTk20ldOBRMB+PV5Yhc+lvszKsnAdK
+ y559KX1JFY6UcrWIHpthdeKrqP4fXlgwaEvpiccrFa4t4SZpZqQDM8UvuPGZ
+ BAMFwtnImMIjwuw4gO6bkW2LkJPNCBcUK3hMmMQq1rEd8RPYie4NFOn+/9+C
+ XSpjUUNz1OR8HYkKFipYrCCHWyRiqYLbuFMH83EXy3UYfiiuYI9oc0TL03kQ
+ uR/+BILNGH6EBAAA
""",
"""
kotlinx/coroutines/flow/FlowKt.class:
- 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
+ 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
+ gfcFPhD4UOCj5Ej9ByMF+2JjBwAA
"""
)
diff --git a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetectorTest.kt b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetectorTest.kt
index 6bf3c0a..8c1c95d 100644
--- a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetectorTest.kt
+++ b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/ComposableStateFlowValueDetectorTest.kt
@@ -47,7 +47,7 @@
private val stateFlowStub: TestFile = bytecodeStub(
filename = "StateFlow.kt",
filepath = "kotlinx/coroutines/flow",
- checksum = 0x5f478927,
+ checksum = 0xd479b246,
"""
package kotlinx.coroutines.flow
@@ -61,42 +61,42 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlk5iXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbqpeWny/EFpJaXOJdosSgxQAAhojekkAAAAA=
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uKSScxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxN1UvLzxfiCkktLnHLyS/3LlFi0GIAAH26nstEAAAA
""",
"""
kotlinx/coroutines/flow/Flow.class:
- H4sIAAAAAAAAAH1QPU8CQRSct8jXiXr4iYkx2hkKD4mVGhMbEhKMiRAbqgUW
- snDsJtweUt7vsjBX+6OM76DTxC1m9s3Oy+x7X98fnwBucUI4m1kXarMKhnZh
- Y6eNioJxaN+DFkMRRLh66N11pnIpg1CaSfAymKqhu3/8KxH831oRW4RqZ5MR
- PCsnR9JJdor5MsdfoAzyBJqxtNJZ1eDb6IZwmSaeJ2rCYxZ+mpTGtTSpF0pp
- 4tMFNUVDZMYm4bzz3wicRT3iJFS6TjqVadczRyh39cRIFy8UwevaeDFULR1y
- cfoaG6fn6k1HehCqJ2MsN2progInIo/NyeGQUTAfrfkAx+udEgrsKfaRa6PU
- RpkRXgbbbVSw0wdF2MUev0fwI1Qj7P8AoQI1/5ABAAA=
+ H4sIAAAAAAAA/31QPU8CQRSctygfJ+rhJybGaGcsPCRWakxsSC7BmAixoVpg
+ IQvHXsLuIeX9LgtztT/K+A46Tdxi5r3Z2cy+9/X98QngFnXC6TR2kTbLYBDP
+ 48Rpo2wwiuL3oMVQAhEuH7p37YlcyCCSZhy89Cdq4O4f/0oE/7dWwgah1l5n
+ BM/KyaF0kp1itijwFyiHSg4g0JT1pc67BlfDG8JFlnqeqAuPWfhZWh7Vs/Sq
+ WM5Sn86pKRoiNzYJZ+3/5uBA6lKeUe046VSuXU8dodLRYyNdMlcErxMn84Fq
+ 6Yibk9fEOD1Tb9rqfqSejIn5oY6NLXIiNrE+BRwyCuajFR/geLVYQpE9pR4K
+ IcohKiE8bHGJaoht7PRAFrvw+d6iZrFnsf8DtOaVdpUBAAA=
""",
"""
kotlinx/coroutines/flow/SharedFlow.class:
- H4sIAAAAAAAAAH1RTU/CQBB9U74rKuAXJMYYYzx4sEg8CSHxQiRiTGzjhdMC
- Cy6UNmm3yJHf5cFw9kcZp8TERAN7eG9mduZN3u7n1/sHgBtUCGcTX7vKm1t9
- P/AjrTwZWkPXf7PsVxHIQYvDDIjw0HBuO2MxE5YrvJH11BvLvq43/5c66wRj
- qYbj1Jt1QuHvWAZJwvGm0QzShOKPuvUotRgILVjLmM4S7IZiSBFowqW5irMq
- R4NrwsVyYZpG2TCZmbLD8nJxmc4uFwU6pVq2lCwZ91Q14u4a4Xytg98n4bXk
- EE42muWmvK2FlnFyNdGEnK1GntBRIAmm7UdBX7aUy0nlOfK0msoXFaqeK+88
- z+dB5XshmzaQAiGD+CRwyGgwH634AOXVTxKy3JXrItGG2cYWI/IxbLexg90u
- KEQBRb4PUQqxF2L/G+H7nf0GAgAA
+ H4sIAAAAAAAA/31RTUtCQRQ992k+fVmpfWlERESLFj2TVilCG0kygpQ2rkYd
+ bfQ5D94bzaW/q0W47kdF90kQFLq5554795zhzHx+vX8AuMER4WzkG0/pmdv1
+ A39ilJah2/f8N7f5KgLZq3FrgwgPldZtYyimwvWEHrhPnaHsmnL1/6ixyjCy
+ qrRa5WqZkPkrsxEnHK+T2kgQsj/u7qM0oieMYC9rPI1xGopKKiog0IjnMxWx
+ Ine9a8LFYu44Vt5yGBmS/fxifplILuYZOqVSMhfPWfdUtKLtEuF8ZYzfd+G7
+ qUU4WZuYl9JNI4yMyNXIEFJNNdDCTAJJcJr+JOjKmvKYFJ4n2qixfFGh6njy
+ TmufhcrXISe3sMG57CgeYjjkajHml3iAwvI7CUneSrURq8OpY7OONLa4xXYd
+ O8i0QSGyyPF5iN0QeyH2vwGCO5LBCwIAAA==
""",
"""
kotlinx/coroutines/flow/StateFlow.class:
- H4sIAAAAAAAAAI1QTU/bQBB9s3YcJ6WpcWkbApXoxwE4YIp6qBqKxAU1EghB
- IoSU05Is6RJjS9l1ytG/pYf+iB4qi2N/VNUxpT00QuUyM29235uZ9+Pnt+8A
- 3uI54cU4tbFOrqJBOkkzqxNlovM4/Rx1rbRqj6sqiHC03Xu/fyGnMoplMooO
- zy7UwLZ3Zlv7d+p9khM1LAW3e732TpsQ/EuuwiW8/L9AFR7BHyl7IuNMERZW
- 12YXIVRW13gSYf52p+hAWTmUVnJPXE4dtoDKUCHQmFtXukSbXA3fEHaLvFEX
- TVEv8pskfMc/bxb5uucXeUArtOWHbig+0qY4DgOnJd4V+en1V/f6i+e1XN8N
- KqXQFuHV3Zb8sZgXoh7h9T3MK++a/j577i9/Y2wJta4eJdJmE36qd9NsMlB7
- OmaweJwlVl+qE230Wax2kyRlok4TwzYKVEColl6w+T5qjFqMBOpwbisHSzd5
- EcucP/CPB8ya68Pp4GEHDY54VIagg3mEfZDBYyz04Rk8MXhq8MygaeAb1H4B
- 5Dh0XXwCAAA=
+ H4sIAAAAAAAA/41RTU/bQBB9s3YcJ6VgAqUh/VALHIADpqiHilAkLqiRqBAk
+ Qkg5bZIlLDG2lF2nHP1bOPAjeqgsjv1RVceU9lCE2svMvNl9b2fefv/x9RuA
+ 93hNeDtKbKTjq7CfjJPU6liZ8CxKvoRtK63a56oMIhztdLYPLuREhpGMh+Fh
+ 70L1bXP3YevgUb1zOVaDQnCn02nuNgnB3+QyXMLSvwXK8Aj+UNkTGaWKML+6
+ 9nAQQml1jV8izN7PFH5WVg6kldwTlxOHLaAiVIoAAo24f6ULtMnV4B1hL8+m
+ q6Iuqnl2l4Tv+Gf1PFv3/DwL6A1t+TW3Jj7RpjiuBU5DfMiz09sb9/ba8xqu
+ 7walQmiLsPy4L7995qmoQ1j5DweL5Sa/dp/6w98YWUKlrYextOmYj6rtJB33
+ 1b6OGCwep7HVl+pEG92L1F4cJ0zUSWzYS4ES718uXOAf8FFh9IKRQBXOfeXg
+ 5V1u4BXnj3zjCbOmunBaeNrCdAszCLjEbAs1zHVBBvN41oVnsGDw3KBusGjg
+ G1R+AgX9oFiBAgAA
"""
)
diff --git a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/CompositionLocalNamingDetectorTest.kt b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/CompositionLocalNamingDetectorTest.kt
index fcb8bbf..eaf12b9 100644
--- a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/CompositionLocalNamingDetectorTest.kt
+++ b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/CompositionLocalNamingDetectorTest.kt
@@ -42,7 +42,7 @@
private val compositionLocalStub = bytecodeStub(
filename = "CompositionLocal.kt",
filepath = "androidx/compose/runtime",
- checksum = 0x48f5c823,
+ checksum = 0xeda1836e,
"""
package androidx.compose.runtime
@@ -70,96 +70,96 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcclkZiXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbKiTkDBbILMnMz/PJT07M8S7hUuOSwaVeLy0/X4gtJLW4xLtEiUGL
- AQBypVQ1cAAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uOSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFRJyBgtklmTm5/nkJyfmeJdwqXHJ4FKvl5afL8QWklpc4l2ixKDF
+ AAAiXiK7cAAAAA==
""",
"""
androidx/compose/runtime/CompositionLocal.class:
- H4sIAAAAAAAAAJVTXU8TQRQ9s91+sPKxFMWCqCCo/VC2EjUohKgYkiatKDR9
- 4cEMuwsObXfJ7rTBF9P4L3z1H/hE4oNpePRHGe9sixLUVPbhzr13zj33zNzZ
- 7z++fgPwEIsMOe45gS+cI8v2m4d+6FpBy5Oi6VrrUSyk8L2yb/NGEowhu1p9
- Wj7gbW41uLdvbe4euLZcWfszxWCezyWhMyRWhSfkGsN8tlz3ZUN41kG7ae21
- PFt1Cq2NvldcydVI3iDUaqFaXVmLsLFsrjaMBIYMxGEw6PKdCBkK5f8+Iqke
- ddw93mrIDW5LP3jPMDtIJsPWwKOUzgKEJ93A4w3rZa/VOmFl0FL9Kjyou0F0
- mjcDSS/Kqe5m3ICGtPKSyrvMMLFg/8a+bUZghsWLkTOMnxZUXMkdLjnltGY7
- Ru+MKRNnYHVKHQkVFclzHjBsdjuThpbRjG7H0Ewyau2HGS31ONPt5PVUt2Oy
- Ja2ovZhK6WkzpZmxaSOtp7XlbifDivrJ54Rmxk8+MpZQtEvUqcqoLdKnms4O
- 69G/n8PrwG8Lh+823L88jInzucW6pDe27jsuw1hZeO6rVnPXDaqqXvVWmBoP
- hIr7yaFtse9x2QrIH9mW3K5X+GF/z9j2W4HtbggVTG31JNVEKGj3uef5kkfz
- 1+dobHGoL0YezZHsXYqe0IE1ddH5Y1z6Qo6GLNkEpQEdObKTPQCGMRIRxDGK
- MdrPR+iUSX8nTIoVXZHodVrHZvQPn2h65XyBHWOiR1yIurPU2Q5R9Xi/eplA
- as6JfOEYV1QRixTM9rK/FCT6CpQ3iatRVU9NDPei9Q7u0/qMMBnSO7WDWAnT
- JVwjixllrpdwAzd3wEJin9tBMsRIiFsh5kOMhlgIVeb2T+jXEMfzBAAA
+ H4sIAAAAAAAA/5VTS08TURT+7nT6YOQxFMWCqCCofShTiRoUQlQMSZMiCk03
+ LMxlZsBL2xkyc9vgxjT+C7f+A1YkLkzD0h9lPHdalKCksjmv+51zvjPnzI+f
+ 374DeAyLIcc9J/CFc2jZfuPAD10raHpSNFxrNfKFFL5X9m1eT4IxZJcrz8v7
+ vMWtOvf2rI2dfdeWSyt/hxjM87EkdIbEsvCEXGGYzZZrvqwLz9pvNazdpmer
+ TqG11rOKS7kq0euHWi5UKksrETaWzVUHkcCAgTgMBl1+ECFDofzfIxLrYcfd
+ 5c26XOO29IOPDNP9aDJs9h2ldBYgPOkGHq9br7utVgkrg6bqt86DmhtE07zr
+ W/SyNdW3GTWgIa2spLKuMozN2X+w7xsRmGH+csUZRk8T1l3JHS45xbRGK0Z3
+ xpQYUAIMrEbxQ6G8IlnOI4aNTnvc0DKa0WkbmklC6Z6b0VJPM512Xk912iZb
+ 0Iraq4mUnjZTmhmbNNJ6WlvstDOsqJ98TWhm/OQzYwlVdoE6VZhqmD4ldnZj
+ Ty6+ibeB3xIO36m7/7iOsfOx+ZqkQ1v1HZdhpCw8902zseMGFZWveitMlQdC
+ +b3gwJbY87hsBmQPbUlu19b5Qe/N2PKbge2uCeVMbHYpVUUo6PWl5/mSR0eg
+ z9Du4uqDIkYWLZNklrxnNLBGOp4/xpUjMjTkSCYoDOjIkxzvAjCIoahAHMMY
+ ofdChE6Z9IvCJF+VK1J5nfTIlP7pC+KsnC+wY4x1Cz+IurPU2Q5R9mgve5FA
+ as+JfOEY146i9SsG093obwaJHgNljeN6lNVlE8PDSN/HPOkXhMkQ34ltxEqY
+ LOFGCVO4SSZulXAb09tgIWZwZxvJEEMhZkPMhRgOcTdUkXu/AG89zFz4BAAA
""",
"""
androidx/compose/runtime/CompositionLocalKt.class:
- H4sIAAAAAAAAAJ1UW08TQRg9s72yFChFoRQvCFW5KFtuGmklMRhiQ7lEGozh
- abq7kOlll+xuG3gx/A3/hW8aTUyf/VHGb7YlarHUdJOd+WbmzDlnv/lmf/z8
- +h3AGp4zLHLLcGxhnGu6XTuzXVNz6pYnaqa25Y+FJ2yrYOu8uuNFwBjiZd7g
- WpVbp9p+qWzqNBtgSOgd6P0ThndzhYrtVYWllRs17aRu6XLZ1bbbUSY7X+gq
- f+DYDWHwUtXsNJJlOM8VNwqdRrKbvfRyi8VidrM/1Zy/lWG2YDunWtn0Sg4X
- RM4ty/Z4S2jP9vbqVWkwfROKIFKBYBtdjby+sHhN6N39RKAyhHPCEt4mueqd
- 6qMYYhhSMYhhhtU+MhBBnGHYME94veptc92znQuG6V7CDKnrxZFu0zCUezrP
- Xz/p/uomhhDCKhSMMyRdeRx6J0aW7Yuu3If+npsyNKkiJfM73Y3+6sNjSLa8
- 3GUYvcrArulxg3uccqbUGgG6o0w2IQZWkYFC8+dCRhmKjGUGo3kZV5uXqpJU
- VCWq+H3zMpWOUxNNBBPKGyXDZoJRgikr8agSD6TU1nSSZYKEC/0HTGqtMKz3
- eVlZkf4PV5/4Z12MdYKXKlQQwS3bMBlGCsIy9+q1kukUJbHkkJgj7gg5bk8O
- HIpTi3t1h+Kpty07eashXEHLr37fOrqSnasH3OE10zOdv2BDdMh6ZZeftQXU
- Q7vu6Oa2kIPJNsfRNX4s01kGIZ8gJmWhUb9Eo2cIgFEf+4bB9wufMdLE6Cd5
- ltCoDftrt5CRiBYOCYxRv+xjIlhpo6LUr9IboYRiAIgP0LbbFLdEFMiyGJoK
- fvhI9bKz8AUTLZU1aslB1Jcb9lEJIhwjwgQZTf7LaEoanfqH0WR/Ru/caPRe
- V6PjRDhBhOO0vO6DnhID8JLY7lOOp48RyONBHjPUYjaPNB7m8QiPj8FczGH+
- GGEXIRcLLhZdJFw8cZH8BUMfUaX/BgAA
+ H4sIAAAAAAAA/51UW08TQRT+ZntfCpSiUIoXhKpclC0gqLSSGAyxoVwiDcbw
+ NN0uZHrZJbvbBl4Mf8N/4ZtGE9Nnf5TxzLZELZSavpw5M+eb73x7zpn9+evb
+ DwDP8IJhgZsl2xKlM023aqeWY2h23XRFzdA2vb1whWXmLZ1Xt90QGEOszBtc
+ q3LzRNsrlg2dTn0Mcb0DvXfM8H42X7HcqjC1cqOmHddNXYYdbavtpTNz+a7p
+ 922rIUq8WDU6hWQYzrKF9XynkMxGr3zZhUIhs9Ff1qx3lWEmb9knWtlwizYX
+ RM5N03J5K9Gu5e7Wq1Jg6iYUQWQGgq13FfLm3OQ1oXfXE4LKEMwKU7gbpKp3
+ qQ+jiGJQxQCGGFb6qEAIMYahknHM61V3i+uuZZ8zTPVKzJC8OhypNg1Duafy
+ 3NVO9zc3UQQQVKFgjCHhyHbonRg5ti+7ch94d26q0ISKpKzvVDf6yw+PItHS
+ cpdh5LICO4bLS9zlVDOl1vDRG2XSRKQBA6tIR6HgmZBemrzSEkOpeRFTmxeq
+ klBUJax4a/MimYqRCcf9ceWtkmbT/jDBlOVYWIn5kmrrOMHSfsIF/gMmcy0z
+ rPb5YlmBfhKX3/n3cIx2ghcrNBX+TatkMAznhWns1mtFwy5IYskhMYfcFnLf
+ PowciBOTu3Wb/Ml3LTk5syEcQeHXf54evcvO6D63ec1wDfsf2CB1Wq/s8NN2
+ AvXAqtu6sSXkZqLNcXiFH0vUUL9sFtkJOW20arRbg4/6B0S/Y+DD/BcMNzHy
+ WfYSabJBL3aLbhOihUMco7Que5gQVtqosPfbBkJUUESAWISu3Sa/lUSBHIvB
+ Sf/HTwiw7fmvGG9lWSVLCsJeuiEPFSfCUSKMk9DEdUKTUujkNUIT/Qm9c6PQ
+ e12FjhHhOBGOUXjNAy3iOa2viO0+1XjqCL4cHuQwncMMUjk8xKMcHmP2CMzB
+ HOaPEHQQcLDg4ImDuIOnDhK/AezqFjcEBwAA
""",
"""
androidx/compose/runtime/DynamicProvidableCompositionLocal.class:
- H4sIAAAAAAAAAJ1SXU8TQRQ9s/1khVKKaMEvlJoIJG5BTQytTRRDaFKwkYYX
- nqa7A07ZnTW7sw289bf4D3wy8cE0PvqjjHfaEtGEkLAP9+PsuWfuvTO/fn//
- AeAlnjJsceVFofTOHDcMPoexcKJEaRkI5/254oF021HYlx7v+mJ7RJBahqoV
- utzPgTG0652tVo/3ueNzdeJ86PaEq2uN1pWyV+vVO51ao8bw4ga1OaQZsnWp
- pG4wrDxrnYbal8rp9QPnOFGuIcbOziSq1lYPGVavY9XXRx0ZbqUVRidOT+hu
- xCVxuFKh5mP+fuL7pqfaNLLI2cjAZkjrTzJmqF+9iGv3S6soeOKYJ77e4a4O
- o3OG5esGY5i7oOwJzT2uOWFW0E/RjTNjMgzslKAzabIqRd4Gw+5wULKtsmUP
- B/+6/HBQHg7W0uSLbDNfSpesXVa13i2UCsXUkm3y10Rh1fTPL1mrmDF6m3RE
- h+HVTV4BdVu6mODyWPP/E5+falrzdugJhtmWVGI/Cboi6hhRo2E4hzySJp+A
- UwfyRHGdRBRXPo5baaq+jCX9bvOIB0KL6O3fu2WwD8IkcsWONPWLk5rDccUl
- IjZg0cWbj2Y37wApPKSsQbhFPru2/g23vlJk4RFZe4ROm8eCZYrujFmEzIxU
- sihglpQejyryeEI+Z6SnKEhN4BRWRv4BKuTf0N8iCc4dIdVEqYl5srhtzEKT
- Drh7BBajjMUjZGPMxFiKcS9GIcb9GLk/6rXJ3BUEAAA=
+ H4sIAAAAAAAA/51SXU8TQRQ9sy0tXaGUIljwAxQ0AolbUBNDaxPFEJpUJNLw
+ wtN0d6jT7s6a3dkG3vpb/Ac+mfhgGh/9UcY7bYloQkh4mXvumXPP3Lkzv35/
+ /wHgBZ4w7HDlRaH0zhw3DD6HsXCiRGkZCOfdueKBdA+jsCc93vLF7lAgtQxV
+ I3S5nwVjOKw2dxod3uOOz1Xb+dDqCFdXao0rba/2qzablVqF4fkNarNIM2Sq
+ UkldY1h92uiG2pfK6fQC5zRRrhHGzt4YlSvrxwzr16mqm8OOjHatEUZtpyN0
+ K+KSNFypUPOR/iDxfdNTZQoZZG1MwGZI608yZqhePYhr50ujyHvilCe+3uOu
+ DqNzhpXrLsYweyF5LzT3uObEWUEvRS/OzJIzCxhYl/gzabIyIW+LYX/QL9pW
+ ybIH/X/D5KBfGvQ30hQLbHuymC5a+6xsvZ0v5gupJdvkr0jCyumfXzJWYcL4
+ bdMRTYaXN/kK1HLx4hqX7zb3v/BZV9Osd0NPMMw0pBIHSdASUdOYGg+jOeaR
+ NPmYzB3JtuI6iQivfRy1Ulc9GUvaPuQRD4QW0Zu/D8xgH4VJ5Io9aeoXxzXH
+ o4pLQmzBotcfj9d8BqSwTFmNeItiZmPzG259JWRhhVZ7yE6ZH4OHhBZGKmKm
+ hy4Z5DFDTo+GFZNYpZg11jkCqTGdwtowPsBjiq9pt0CGsydI1VGsY66O25gn
+ iIU67qB0AhZjEUsnyMSYjnE3xr0Y+Rj3Y2T/AJbWL04aBAAA
""",
"""
androidx/compose/runtime/ProvidableCompositionLocal.class:
- H4sIAAAAAAAAAI1S308TQRD+9lracmIpRaHgLxAkAolXURNjK0YxDTUFURpe
- eNr2Ftz2umf29hp869/if+CTiQ+m8dE/yjjblogkBO5hZvabb76Z29nff378
- BPAUKwxPuPJ1KP0Trxl2PoeR8HSsjOwIb0+HXenzRiC2BhlpZKhqYZMHaTCG
- Srn+otbiXe4FXB177xst0TSlzdqFeudVyvV6abPEsHrlijSSDKmyVNJsMiw9
- rLVDE0jltbod7yhWTUuMvMooKpZWD0j9MlZ5fTCH5S7XQn3stYRpaC6Jw5UK
- DR/yd+MgsHdBA3+4tPHZvFRGaMUD76044nFgtohqdNw0od7hui00tZ5ACq6L
- MVxjSJpPMmJ4dvFFXrwYGi7rD9tUuO3whWHhsmEZpk4pO8JwnxtOmNPpJuiN
- MGvGGFiboBNpT0WK/McM7/q9vOsUHLff+99lVgr93loy0+/l2EYmn8w726zo
- vJklIJ/NJeZdCz3v9wqsmPz1NeXkxqziBjWpM6xf/QHRlPnTyc/+zvR54qO2
- oXvdCn3BMFmTSuzGnYbQdXuFVsNyDriW9jwCx/flseIm1hQvfxwOUFVdGUlK
- 73HNO4LW+vrfA2Fw98NYN0VF2vq5Uc3BsOIMMbkIhzZtP/pjWnwaCdyj0yvy
- Dvn02jr7jolvFDpYIOsO4AxRU1ikaGZIw3VkBzJpTCJHUvcHFRksWcxqj1OQ
- GMEJLA/8XTwg/5KyUzRF/hCJKqaruEEWN62ZqWIWhUOwCHOYP0QqQjbCrQi3
- I0xGuBMh/Rejxn6KQAQAAA==
+ H4sIAAAAAAAA/41SXU9TQRA9e1vacsVSikLBLxBEgcRbURNjK0YxjTUFURpe
+ eNr2Lrjt7V6zd2+Db/0t/gOfTHwwjY/+KONsWyKSEHjZmT1z5szszP7+8+Mn
+ gCe4z/CYK1+H0j/2mmHncxgJT8fKyI7wdnXYlT5vBGJrEJFGhqoWNnmQBmOo
+ lOvPay3e5V7A1ZH3vtESTVParJ2rd1alXK+XNksMq5fOSCPJkCpLJc0mw9KD
+ Wjs0gVReq9vxDmPVtMTIq4y8Yml1n9QvYpXXB31Y7nIt1EdeS5iG5pI4XKnQ
+ 8CF/Jw4COwtq+MOFhU/HpTJCKx54b8QhjwOzRVSj46YJ9TbXbaGp9ARScF2M
+ 4QpD0nySEcPT8wd5/mKouaw/LFPhtsIXhoWLmmWYOqFsC8N9bjhhTqeboD/C
+ 7DFuDzCwNuHH0t6K5PmPGN71e3nXKThuv/e/yawU+r21ZKbfy7GNTD6Zd96y
+ ovN6loB8NpeYdy30rN8rsGLy19eUkxuzihtUpM6wfvlfRK3mT9o//abps8SH
+ bUPD3Qp9wTBZk0rsxJ2G0HU7R6thOftcS3sfgeN78khxE2vylz8OG6iqrowk
+ hXe55h1Bu33175cwuHthrJuiIm3+3Chnf5hxiphchEPrHo2Vtp9GAgt0e0nW
+ IZteW2ffMfGNXAeLdLoDOEPUFO6SNzOk4SqyA5k0JpEjqaVBRgbLFrPa4+Qk
+ RnAC9wb2DlbIvqDoFHWRP0CiiukqrlVxHTPkYraKAuYOwCLM48YBUhGyEW5G
+ uBVhMsLtCOm/jQDw8EUEAAA=
""",
"""
androidx/compose/runtime/StaticProvidableCompositionLocal.class:
- H4sIAAAAAAAAAJ1SXW8SQRQ9s3x2bSmlVmn9qhYT2yYurZqoIIk2aUpCKxHC
- C0/D7hQHll2zO0vqG7/Ff+CTiQ+G+OiPMt4BGqsJIek+3I8z55699878+v39
- B4DneMzwintO4EvnwrL9wSc/FFYQeUoOhNVQXEm7HvhD6fCOK44m51JJ36v5
- NndTYAz1cvN1rceH3HK517Xed3rCVqVKba7qfL1ys1mqlBieXaM2hThDsiw9
- qSoMO09qfV+50rN6w4F1Hnm2JobW8SwqlnZbDLuLWOX9SUeaW6j5QdfqCdUJ
- uCQO9zxfr0fzzyLX1T2VlpFEykQCJkNcfZQhQ2n+IhatlzaRccQ5j1x1zG3l
- B58ZthfNxbB2STkVijtcccKMwTBG9820STCwPkEXUmdFipwDhpPxKGcaecMc
- j/516fEoPx7txcln2WE6F88ZJ6xovNvIZbKxLVPnL4nCivGfX5JGNqH1DukX
- TYYX13kE1G3ucoKrY63/T3zaV7TlI98RDKs16YmzaNARQVOLag3NafFA6nwG
- LjVk1+MqCigufJi2UvWGMpR0XOcBHwglgrd/r5bBbPhRYItjqes3ZzWtacUV
- Ig5g0L3rj2bXzwAx3KesQrhBPrm3/w03vlJk4AFZc4JmqSaDbYpuTVlYxspE
- JUn4Kik9nFSk8Yh8SksvURCbwTHsTPw9FMi/oVMtuNZGrIpcFetkcVObjSr9
- 4HYbLEQem20kQ6yE2ApxJ0QmxN0QqT/sQJiNEwQAAA==
+ H4sIAAAAAAAA/51SXW8SQRQ9s1A+1pZSaiutH60WjW0Tl1ZNVJBEmzQlwUqE
+ 8MLTsDvFgWXX7M6S+sZv8R/4ZOKDIT76o4x3gMZqQpr0Ze65Z849c+fO/Pr9
+ /QeAZ3jE8JJ7TuBL59yy/cEnPxRWEHlKDoTVUFxJux74Q+nwjiuOJvtSSd+r
+ +TZ3k2AM9XLzVa3Hh9xyude13nd6wlalSm2u63y/crNZqpQYnl6jNok4Q6Is
+ PakqDDuPa31fudKzesOBdRZ5thaG1vEMFUu7LYbdq1Tl/UlHWluo+UHX6gnV
+ CbgkDfc8X49H608j19U9lRaRQNLEAkyGuPooQ4bS/EFcNV6aRMYRZzxy1TG3
+ lR98Zti+6l4MKxeSd0JxhytOnDEYxui9mV7SegED6xN/LnVWJOQcMJyMRznT
+ yBvmePRvSI1H+fFoL04xyw5TuXjOOGFF4+1aLpONbZo6f0ESVoz//JIwsgva
+ 75COaDI8v85PoJZzF9e4fLfV/4VP+opGfeQ7gmG5Jj1xGg06ImhqU+2hNS0e
+ SJ3PyHRDdj2uooBw4cO0lao3lKGk7ToP+EAoEbz5+74MZsOPAlscS12/Matp
+ TSsuCXEAgx5/Nl79FxDDFmUV4g2Kib39b7jxlZCBbVrNCZulmgzuE1qfqrCI
+ pYlLgvhlcnowqUhhh2JSW6cJxGZ0DIVJvIeHFF/TrjZcaSNWRa6K1SpuYo0g
+ 1qu4hXwbLMQGNttIhFgKcTvEnRCZEHdDJP8AhWEFiBgEAAA=
"""
)
diff --git a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetectorTest.kt b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetectorTest.kt
index 114fae4..594cabd 100644
--- a/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetectorTest.kt
+++ b/compose/runtime/runtime-lint/src/test/java/androidx/compose/runtime/lint/MutableCollectionMutableStateDetectorTest.kt
@@ -46,7 +46,7 @@
private val KotlinMutableCollectionExtensions = kotlinAndBytecodeStub(
filename = "MutableCollectionExtensions.kt",
filepath = "stubs",
- checksum = 0x90938fc8,
+ checksum = 0xb32e2e72,
"""
package stubs
@@ -72,389 +72,389 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3Apc0lkZiXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbKsQfnJdYUJyRXxJckliS6l3CpcbFWlxSmlQsJOtbWpKYlJPqnJ+T
- k5pckpmf51pRkppXDGQUA9XxcbGUpBaXCLGFAEnvEiUGLQYASQTUpX0AAAA=
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uaSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIPzkssKM7ILwkuSSxJ9S7hUuNiLS4pTSoWkvUtLUlMykl1zs/J
+ SU0uyczPc60oSc0rBjKKger4uFhKUotLhNhCgKR3iRKDFgMAINgad30AAAA=
""",
"""
stubs/MutableCollectionExtensionsKt.class:
- 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
+ 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
""",
"""
stubs/MutableCollectionObject.class:
- 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
- A/Z2yETWRM7Ehf8A1Au5SlEPAAA=
+ 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
+ UxbOOK8jFkYtZC1M/gPQMrgUVA8AAA==
""",
"""
stubs/MutableCollectionSubclass.class:
- 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
- PrD+CPEOAAA=
+ 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
+ +vQOAAA=
""",
"""
stubs/MutableListObject.class:
- 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
- /x8chhqA3RgAAA==
+ H4sIAAAAAAAA/6VYiXsT1xH/7cqWZGmN1wLfxIZg4kMEGZKSBjs0DhAiMCZg
+ 1yW4NFnLi1lbB9WuXJM2LU3apOl90pbeaXrTFprE4NCmDumZHn9Sv868fV5L
+ 8q7xR77P3n2aN/Ob38ybN+9J7/7vzbcAPIj/KmixndKUnTpecoyprDli2c6J
+ qVkz40SgKDBGZo15I5U18jMpVzzoSkqOlU2x8lCZRjrvmDNmcfDA4Mhcwcla
+ +dTsfC5lkbSYN7KpnFGcM4t26liZr0EFerWLCGoUbKp0E0FYQe9GUSOIKggP
+ WXnLOaAg1Ns3oSGGeAy10BRsXoUeLhaNi67FphgaeFbr7p42s+aM4ZhPDxC7
+ qngHNTQiUQcVmxXUOOctW0HbSEAOKbrIjOmMWc+agkaaTGz6oKENrXFE0E5i
+ Y3qaxL3pvjMKGtckM4JOApk3siXzxDkFzaTnk3EN27A9hi7cq6Cpd+2i9Z3R
+ sBXd7HInwVF8OTPvKFCIUW1vOt03IaB9DCfYsJ8Nk6Rq5afNBUotcR7OZhW0
+ r9iI/BwsZLNkZBXygxzMQMDkUNK3Zthkx0ihOJOaNZ2pomHl7ZSRzxccg43s
+ 1GjBGS1ls5TTqORvR7FXQadfVRBskQCsjB3Bg5STzHkzMycRnjSKRs4kRQU9
+ Prkqk4wxyIxIwj48FMP78H4Nu5HidOynjPnHTgXRG5yVlP9cYFLY4SPs8AOU
+ /0zWNIoahhFnyWOUikwh73CqNBxy1/ewgviKUKzR7g04lKG7/o64/qg0QlS8
+ XFAVNSd1NRzDCOsdp4ISdcH1yXWcDqjBtIYTOMkmp9jEPpy74FwU+4KcjuOD
+ PEN1GLVoaQynUOSS7CvjnpZySnDSd8K/F2k4jacYe5IykzVsJ+2S1XDWZfMR
+ 2vRZ2rNpz297BfxI2dwgL2DQZJD/Z2Cwn4yCDi+VfsgDwbPB0CZDz9CeLJq5
+ wrzJSfPR5crrXm9z0b7g3kWQlltHVDmbfYAU1LmOqLY0FNxSuUCrJqUOA4i6
+ sIUq16FQLbmq87TgNldVC7cdXwc9vo3IrwIX8CxjfpzKyS5Ncb4UbFnFXW3a
+ Cvp8xEFJfQ6fZNhLFMC5YiGXdptexCmIkYYWtMboAPhMxdk1WspNcbt+kSs4
+ 70xwx9bwOVZ9CS9zF72Hjb6gIOEXylb08fSXeR8Lxa/yBtvOo6/zvnmSR9/k
+ mhWjy5zmWR59R0PR1bvCB8DLPCFUfsD5ucijHwny4qyjQ7R30ie7PjIF24bG
+ 9/s0id7J8XGyoAd1JINRo3iVEu/XZSL4uYKdfh16VWfcpRbBLxUcCOicG+Ss
+ 4Sf4dQy/wm+oen1jaur1jzUZ1LIDvPyevVyjtR7KZMU9gxNN14doenRsfHj0
+ 4GENr6OZ7wlvUAI2VHh0/K/cm47Tvpk2HINkam4+RHc1hR91/AAd23MkX7D4
+ E11R1Ok9ippevrQvpraqMVXfTv/RmBqtpXc8tnyJXiSOhujdSW+a0vvozapJ
+ esei77yoti5f2htN1CTUAXVAeSwSVW+/Elb10NFGPdKuDkT3hvU6eqtP3L6s
+ HG0TshjJ4iyrmOvSNanvzml6ffsK7iah0SI11s7U6Q2MK8aNul7lN0SWjQGW
+ zXpCMomvaAv+mwlnyxqOdXoT44hxg97sYbUIL4166xqLBr3N02qXUZRJyvwy
+ l47qjAkuW8nmnkD+nVX8Fcm/Re8KsOnUt5XblGdK2G6ntbjXs1FofofU617x
+ cSqh1/D49O3LtWQTbq+J1uphLii6VlGZdcoL7ep2OLzgmHSrohNj9xz12o5T
+ pbxj5cx0ft6yLdIcXj1SqHmOWTN5wykV6VCqOViYplfDiJU33U45zsjcDAsZ
+ IzthFC3+LIXd1bjela3CQf2YY2TmjhsXpFlsrFAqZszHLf7QJjEm1jDDHtqV
+ tfQfAe/PNt6oFO1faTeF6b0H0BN8yafx30im4ga66UlfIEjyd5IMI0QjYHP/
+ DdT330LDUzegLyPyBrZcFwb/oCf3AwZsoP9/0khzTdBEzji5dIhIuF7e0WzR
+ /zq2LKFDwVWhsWoV86zoFJFW+wifPWxiq46b2LGE+9Qyy2Z3VlryqEd6oqOm
+ LBBuIg0CY6sA2RXCdQ9kmzvtgTTgfgHCI4ZTaUz3YdJiuEMSLrEr8cBNPCxA
+ dy1hMFRGy0VMeIgJDzGBvRgiRDfnA3iXG54qDPeIJ92DpaOHZeyNSc9RcgmP
+ rg2/0fPTKNBXVvSAQI8oHvawt7hVq3FQKUtH9WocWm81Ht/Yahy5Q1RHNx7V
+ E9VR0QWCxGv5LWFUxTK6rq3Dz12Wsk1BT7qGBMc7trF46aLvn+kPrVf3dIWX
+ Waqy+rCCawFWblLOVMVwdr0Ynt5YDHSh92czfSc2U1Vs6P4ukR6QbOJyhc6r
+ qF6euEclLpfHBT1XBUo3Q7nsFaBUTLm18ZWD9iBPc14RzQnVwh0K9KPvoUCL
+ gQXq3FWBlu7A9WPvgStdpiVXr8+Vtc1PhCr5rtfn3M5ZyZy+c0jmByS65qIv
+ 4dMhVONqHq6G5yWuhhcErkv/UxX4J/kHJ1n2KVmytf2L+OxVrJxXYSEsP6tq
+ XSf6MP90JI0flWnV+pPLeGkRn1/EF/0x3OyWE+3Bl6AItH6JdkyGWt/fsWsF
+ 7ivXfeHcuOs9uHovn/UCWKUYD3k0T0maTcm30XUFtaGrq3y/xnxD+Jd4KnUB
+ xJs8T00e8WMYkfj7JX64v2MR37i2TgLCHk5YMj7Jv4IE8FTLeH7r7ngS9tkN
+ 4X/7rvEtL88nJH6iIs9di/juhsDLt8cq+Ep/fkSC13GSv7eI769XaHUeVJ2b
+ Z1ovy1uvCqgf0oZdb8n8oBbw7Do1+2N/uDvXrELfJF+RXeUhybEhmfgZd6xl
+ /CJ5E1erW2D5ZexV/NbrVz8VYL+TLO+TmzzKMDdxvfpUikqUKP7g3XxaBD6d
+ A7eg0o32tdeweF0IQtJFCP8W77/gP/S+QmY3qUksTSKUxptp3Erjj/gTDfFW
+ Gn/G8iQUG2/j9iR22mi28Y74i9tos9Fio9XGViHpEc/7bey2sVeMh20csnHE
+ xjEb222csDFu47SYOmvjGTGwbMzaKNgo2ijZWLBx0cZzNp638cL/AWVqBCvg
+ GAAA
""",
"""
stubs/MutableListSubclass.class:
- H4sIAAAAAAAAAKVYi1sU1xX/zSzsc5BhFRAw+MK4sOoSk5pGiAaNJquoUSg1
- 0jYddkcc2AfdmaWaNgm2TdMmfT9sa59J07dttU1QkjYl9vn1j+rXc+5cht1l
- FvczHzBz995zfud3Hvfcy/73f++8B+AR/EdBl+2Up+zUqbJjTOXMUct2xspT
- mZxh2yEoCozRGWPeSOWMwnTqzNSMmXGG3JmyY+VSLD5cIZEuOOa0WRo6NDQ6
- W3RyViE1M59PWTRbKhi5VN4ozZolO3WywtqQAr3WRAhNCjZUmwkhqCDRKGoI
- YQXBYatgOYcUBBL9ExqiiEXRDE3BxlXokVLJuOJqbIiilVe1vr6smTOnDcd8
- bpDY1fg7pKEN8QhUbFTQ5FyybAU9o3WjSP4FjGyWRBPp/gsK2tZEK4QuBaF5
- I1c2z1xU0EFyPiHV0IMtUXTjAQXtibVZ6b+goRNbYwhhG8GRA3mz4ChQ0gqa
- E+l0/4SA9lGcYMVdrPggiVqFrHmZYkecR3I5qo9Ehf9Hi7kc6VjFwhD7kvJf
- G076lgRr7BwtlqZTM6YzVTKsgp0yCoWiY7CSnTpddE6XczkKWFiyt8PYq6DX
- L+kEWyIAK0NlmqKIZC6ZmVmJ8IxRMvImCSrY7ROpipkxBpkWIXgI+6MYxMMa
- +jHAwfgQxcvfdQXdK4H0i8pgncW6YWGTH2aTByn+mZxplDQMI8Yzj1MwMsWC
- w8HScNjN7xMKYiuTIkf7GsiDdN61d8R18UmqzWnT4YKqqjkpq+E4nmK5p6mg
- RF1wfXIdp+vUYFrDCYyyyilWsY/l55wrYv+R0TN4hlfOkksWJcdwiiUuyf4K
- 7mk5TyFO+i74NxsNYxhnbKrxGG06J+2S1XDeZfMs7eocbcq0Z7e7Cn60Ym2I
- 67reYj37k/gY2/kEtQIvlH7Ig/VX60N/kqGnaE+WzHxx3uSg+chy6fWtt71o
- Z3BzIsisW0fT1Al9gBREXENUWxpm3FKZpazJWYcBRF0UhCjXoRCdc0U/RQm3
- uao6ue34Gtjt24j8KtBGmTHnqZzs8hTHS8GmVdzVrqyg32e6XlAv4wrDfoYc
- uFgq5tNu0ws5xZURbYsx63lT1C5Ve5NNHzRcxQKrfa7qzDpdzk9xF/8CF3bB
- meBGruGLWIjiZbzCzXVzlE6LLyuI+3nYiT5e/gpvbyH4Nd53W3j0Dd5OJ3n0
- LS5lMfoOR9/k0TUNeVfu+3wuvMILQuSHHDaHRz/W8BLzUPFT4Z047egYTUz6
- hN9nTsG24fGDPl0kMTk+Thr0oJZlMGoYb1Jm/NpQCL9UsMuvia/KjLvUQvi1
- gkN1TpwGOWt4Hb+N4jf4HZW3r0/tCX9fk/WOujpW/shWbpJvDRUdHf0rl6JT
- tGeyhmPQnJqfD9BVTOFHM53WtM/UyxZ/oquHmn1IUY8uLxyIqpvVqKpvp79w
- VA030zsWXV6gF02HA/TupTct6f30ZtEkvaOblxf2h+NNcXVQHVSONN99I6jq
- gRNteqhbHQzvD+oReqtP372mnOgSc1Gai/Fc1dpWXZPy7pqmt3SvoG4QEp1S
- Yu1KRG9lXDFu0/UauwHSbKuj2aHHJZPYirTgv5FwNq3hGNHbGUeMW/UOD6tT
- WGnTN6/RaNW7PKlu6UXFTIVd5tJTGzHBZQvpPFCXf28Nf0Xy79S31tHp1bdV
- 6lRGSuhup1zs8HQUWt8p5fpWbJyL6008Pn/3Guc72N0UbtaDXEr7FSoz9Mor
- 6mp5H7vsmHSRoiNi3yw118iYNV0wnHKJel/T0WKWXq2jVsF0u9w463IjK2aM
- 3IRRsviznOw7Vy44Vt5MF+Yt26Ip7x42snoM0QFZK1a12jLmGJnZU8acBI2O
- FculjHnc4g9dUnVijSJd31S626vUnCNQ9Dhf0cnbv9E+UvEn7KQxXf/puUwz
- RxGgWaB94DZaBgLD76L12dvQlxF6G5tuCZX36RkVQiGCCuEujTRSJyX66eAd
- y31dAh4gSZbdMPAWNvXcQe8Stqu4IaRYs8NdlZo82iEoMUafxBghUrztWwXG
- FgGyO4BbHsg2d9kDaUVCgPCI4VQa09WVpBjuMUmpLRnfdwePMGhyCQfWsmrz
- ANuwF496QUvi7+w9k9wjVOiOKrGflFTjezzsnj1LGApUgLts4x543GMbF2ZU
- aeYxYSaiCkXX0LCXqISIEWWCTSyB/pNbDYebjaiXjcPrZWOksWwcuUf4jjUe
- vqO14aMjnabX8ltCmqe7b67Dzw3dP2gc9PDoYlDf39ON+Us3cv9In1Mq9Gsj
- TXdtGaUarY8quFlHyw3KR2p8OL+eDxca84Fu3v5snrsXm4/XsKGLtkR6WLKJ
- yQxlVNSmJ+ZRicn0uKBGDSjd1WTaq0CpmC6t9a8SdAcsWvOK6KIQnblHgeY+
- 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
+ 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
+ AnMCBYGiQElgUeCywIsCLwm8/H/95bQCgBgAAA==
""",
"""
stubs/MutableMapObject.class:
- H4sIAAAAAAAAAJ1X63cT1xH/3dXT6wXW8hPxMAkmtqUkMpQkEBs3xnWMbGP8
- ICbBeXQtL2atlUR0Vw7kSfNOkzbP0jYf+5kPcNqSkJyT49Jv/aN6MrO7liV5
- cRyO0d65c2d+M3fuzNzL//7/w08AjuNbgQ7pVJZk5mzFMZZs86xx5dzSqplz
- YhAC5alVY83I2EZxJeOxBz1OxbHsDMkO1Qhki465YpYHA1jDg1P5kmNbxczq
- WiFjEbdcNOxMwSjnzbLMTG4aHxTQG23GEBbYVWc3hqhA7w4xY4gLRIesouUM
- C4T6+hc0qGhWEYEm0LkJPGUV8+byGUNedrV2q9jDElpPz7JpmyuGY74yILCn
- PgSDGlqQaIKCVoGwc9mSAl1TwUGl3UVytmmUNXSiuRkxdAk050pFx7CKctK8
- Rgh92f6LAi1bghjDfoHYmmFXzHOX6NhILiDSGg6iW8UBHBJo79t6fP0XNSTx
- MJs+TLHIs0mRpfBuOLHABjT0ejJ95LBrkmRXTEegZ6pUXsmsms5SmaUzRrFY
- cgzHKhE9XbFt3i7t8pEg01tZGtJ4jO08Tluz5FjhinPNPSHycgBHeeUYza9U
- yHJnXzZwxwInAozt0PxxPMlGnqL8ICMjti2Q6Gs43/4FgaEG5lA6wJMg3rCr
- fni7qJUcDhztI3ypXCrEcUrgYFBmE2SZlK2cjOG3dLq5y2Yu72vPGGWjYJIg
- VcX20ZhnkJVBroERnFbxDEY1nMTTHIYxCkPZLJTWKAHGvYM5I6DSwY+xbZMy
- u6WvvyYS8yan9Ewjb6g+WD2sfW3HrWKYIOMmqxCUhrOYZEemKUPIEaoRyekV
- bLEBibZDCe6izHko8x7KvPW66eYZZX5Y0kTDBSywwPMCTSTgVgEXcp2h0ZJt
- Uzjp2Aj6sfss3dcVt46khpewyJZerut005XCEtf472nvdOJ+FS5hQYWBHNfs
- PpVaDHmdCMrjXm/5cvDxBzeKNDcKBXmmVpkqcD08wVSJz99dfZUpd5U8n8Ak
- UxUNMx71mobn2EUF1zRcxCJTb9AOhnK22215Tg00np2ePz8yPTqm4R10cKu8
- LvDUA94klIMbl8lZ0zGWDccgnlJYC9GNJvgToZaWJ9ZVi2fUsZXlo0J8tX79
- hKp0KaqiH6FfXFXiTB+mXy/RNNe7aQzRqKjr12lopqlKYw9N4//9UOlav35s
- dyKcUAYU7zsgTsfiyr1/RBU9NNGkJ5LKQOuZezfERIveRnT7sajeQaPi8zp9
- XleV16XvTYa7xIBSIxly8ZKEt4/lXblD+v56uVoUV/7ARLd+kO0fa9O7k3oi
- Ghc1fh7yrT20xZqnnZzr0cPJtoSeqN9fdCDy/L0bEZKJJsPxmB6f69KbknF/
- tXZNpbWE3syoNVxN30Uau6sae2rWdL2FT4b6O6gozY0GE867FX7Qvzo362rs
- qmNS96OW+XieroN9c5WiYxXMbHHNkhZJjmz2VKrheWulaDiVMhVMeLS0bPK1
- bRVNr8zOMzJXUiln2AtG2eK5z+xpxK221joDu+YdI5envPXV1PlSpZwzn7V4
- stfHWNjiGY5S8kfoFwOXwV6uB9r+l5SnURqHAD3BzwmivyKegndJRuHXCnG+
- Js4oQjQH2lPfYVcqNPQj9rzwHfR1xP6Nttuuyjf0VV0hnaB0/IUojdRJif46
- uEr49eED9tHIa2rqX2i7i70Ct12JTS21qkVNyNd6kvDZwm7W2vc9HrqLHgU3
- q5od3qqvydQRPOJa6t0Oo397jJSPQZ2L1hjjpI/RsomRUbCOA7caYFqqMC2+
- Kxsxf9SVpNdGcEB+I2pcagwItUvfkXE6l5B7Lr4j+11nToTqnTnkCVWdafed
- YYp3pzS4RRczadTtNJ0Y/h6/YzPpu3hWqTmurTs9VZNJg7hBY0x4aUbf8e2i
- mH2gKNIF4bvbEMVzAptY9VH0vJuqrQH6ztwP6fwvIc02INEFFXyyL2x3snSZ
- Bdt/5Zfsv1hnf5Zf2779OT/M7en/4MC3iIRuptLrMO5g+Q4usSsh/NX9iia3
- iKMuul4T//rEWaH1WX6p7wDf+tX4KR+fHgf3wRe3NvHtWw/kvz7C/wPw8Z/2
- 8aOp9B0Ub2GjmW3FiVZxolUcesr7OLN+LbZuuPfohpdXgkG9qmytgrb6wWWK
- w8BJNb6jMJQfOAzjwWFwflUYyE96LvtVnfETN5K6g7VgGC9/Iw2VOMuv5QCQ
- qzsHmaW/C9XCqwV5/eYOQGb5kRzgwZs79+BFxPFW9ZbrdOMFNP8Ihe7Lt/+J
- P9x2GSFfPIS/ueMX+DuNX5LaewT4PjWBLD7I4kP64iP+fJzFJ/jjIoTEp/hs
- EQ9LdEj8yf3XLPHnDXpCYlLic4kZiQsSz0ksSLzkLl2UWJTodOmk+z0i0SuR
- kkhLdEsMSByXeELipMQpV2D8Z8BtlfOyEQAA
+ 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
""",
"""
stubs/MutableMapSubclass.class:
- H4sIAAAAAAAAAJ1WWXcTRxb+qrW63UBL3oRYTIKJbYlEhpAEYuMJMMTINuAl
- MYvJ0pYb01ZLIqqWA1mZ7MlkliQzeZjHeeaBnDNDQnLOHA+P+VE5ube7LUty
- 23E4sqtuV9373Vt3q/r5lx//B+AY/imQkk5tQebO1xxjwTbPGzdnawsF25Ay
- BiFQnVw2VoycbZSXchcXls2CM+yt1BzLzhH3SANDvuyYS2Z1OGBpdHiyWHFs
- q5xbXinlLFqtlg07VzKqRbMqcxPr6ocF9FadMYQFdjTpjSEq0L9NzBjiAtER
- q2w5owKhgcE5DSraVUSgCfSsA09a5aK5eM6QN1ypnSp2MYfW17do2uaS4Ziv
- DQnsanbBsIYEkm1Q0CEQdm5YUiA9uZlb6XyRgm0aVQ09aG9HDCmB9kKl7BhW
- WU6YtwljID94VSCxwY0x7BWIrRh2zbx4XaCb+AJ8rWE/elXswwGBroGNARy8
- qiGNx1n1QfJGkVWKPDl4zYg5VqCh3+MZIINdlcS7ZDoCfZOV6lJu2XQWqsyd
- M8rlimM4VoXoCzXb5gPTKZ8IUr1xSUMWT7Kep+holjxbuuncdmNEVg7hCO8c
- pe+bNdLcM5APPLHA8QBl21R/DM+ykucoQ0jJKdsWSA60RHhwTmCkZXEkG2BJ
- 0NqoK35wK69VHHYcnSN8vVopxXFSYH9QbhNklYStAlXnHyi6hRtmoehLTxlV
- o2QSI9XF1t6YZZClYa6CUzit4gWc0XACz7MbzpIbqmapskIJMOYF5pyASoE/
- y7pNyu3EwGCDJ2ZNh+yeal0baXZWH0vf3nazGCXIuMkiBKXhPCbYkAuUIWQI
- 1Yjk9ArW2IJEx6EEd1FmPJRZD2XWest084wyPyzpQ8MlzDHDZYE2YnCrgBSl
- mhSdqdg2uZPCRtBPbrK1qSluHUkNr2CeNb3a1Osu1EoLXOOv09kp4n4VLmBO
- hYEC1+welZoMWZ0MyuN+b/tGcPiDG0WWG4WCIlPLTJW4Hp5hqsLxd3ffYMrd
- JcvHMcFUTcOUR72p4WU2UcFtDVcxz9TbAs894jVB6bV2U5w3HWPRcAxaU0or
- IbqwBA8R6lZFWrpl8Re1Y2XxiBBfrt45riopRVX0Q/QfV5U40wfpv59o+tZ7
- aQ7RrKird2hqp0+V5j76TK3eObozGU4qQ4o3DonTkYf/jip6aLxNT6aVoY5z
- D78V4wm9k+iuo1G9m2bFX+vx11L1tZS+Ox1OiSGlgTPk4qUJbw/zu3wH9L3N
- fI0oLv++8V59P+s/2qn3pvVkNC4arDzga3tsgzZPOj3Tp4fTnUk92Xy66FDk
- 8sNv+YTRdDge0+MzKb0tHfd3G/dU2kvq7YzasKrpO0hiZ11iV8Oeric4JtS0
- QZVmrnWNcNEt2/3+jbheLGdvOSa1NOqDTxWpx7fNWktlw6lVKc/DZyqLJt+3
- Vtn0quMlluUCqBQMe86oWvztL+6ZqZUdq2TmyyuWtGjp1HqLpVurdbfeL5vY
- dsw6RqFIGeuDqrOVWrVgvmjxx24fY24DPo5Q2kfoP4Y2CD3JLwI6/peUoQre
- RYpoenDQ+BdaOYMQrQJdme+xIxMa+Qm7rnwPfRWx/6LzO1fkrzSqLlPC/f2N
- KI3ESYh+3VwL/HzwAQdo5j018x90PsBuge9cjnUptS5FXcSXepbwWcNOltrz
- Ax57gD4Fd+uS3d6uL8nUITzhaurfCmNwa4yMj0Gth/YY44SPkVjHyClYxb57
- LTCJOkzCN+XvREdpPuxy0nMh2CFPiwaTWh1C/c43ZIziEnLj4huy1zXmeKjZ
- mAMeU92YLt8Ypvh0SotZdLOSRNNJs8nRH/BHVpN9gBeVhnBtPOnJhkwaxlc0
- x/hwI67I2FZezD+SF6nD++a2ePGiwDpWsxc96ybrSJ5xU5shvfRbSNMtSHTD
- BEf2ylaRpdsoWP9rv6X/WpP+aX4u+/pnfDd3Zf+Pff9CJHQ3k12FcR+L93Gd
- TQnha3cUbW4RR130RIP/mxNnifan+am9DXzrd+NnfHy63TfBF/fW8e17j2S/
- foqf8D7+8z5+NJO9j/I9rDWzjTjROk60jkNvcR9n2q/FjjXzDq9ZeTMY1KvK
- jjpoh+9cptgNnFRj23JD9ZHdMBbsBud3uYHspPeuX9U5P3EjmftYCYbx8jfS
- UonT/NwNALm1fZBp+l2qF14jyFt3twEyza/cAAve2b4F1ygAHhXCN+78Z/yD
- 5q+I9z3ifZ/qO487efyJRnzAw4d5fISP5yEkPsGn83hcolviM/evXeLzNXpc
- YkLiC4kpiUsSL0vMSbzibl2VmJfocem0Ox6S6JfISGQleiWGJI5JPCNxQuKk
- yzD2KyjpAQxSEQAA
+ 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
+ 5iTmJa5K5FyB5f8CUiecwrERAAA=
""",
"""
stubs/MutableSetObject.class:
- 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
- j/0mBkycMDFiv46bOG0ibWLqfxuJKgUvDwAA
+ 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
+ mzLRb+KsiXP257CJERMTJrL/AgVNgdYyDwAA
""",
"""
stubs/MutableSetSubclass.class:
- H4sIAAAAAAAAAKVXW1cTVxT+Tu5MBjOJ3MTWWkUNpCVcLBahVKSi0QBKUqrS
- 1g7JGIZMJnZmQtXe6P367EMf++xDXatFbNfqoj72R3V1n8k4QJgoa7kg58zs
- y3f2t/c+5yT//vfn3wBO4meGLtOqLZnpmZolL2lKTrFytaWCJptmGIzhRnZF
- XpXTmqyX0nNLK0rBGqtLapaqpcl6fJtBRreUkmKMTYxly1VLU/X0ymolrZLU
- 0GUtXZGNsmKY6Utba40xSI0LhBFgaN2xSBghhhN7xAwjwhAaV3XVmmDwJ3sX
- RAiICghCZOjcAs6qelkpXpDNZdtrn4AYtxB7eoqKppRkS7kxwBDbyXdMRByJ
- FviwnyFgLasmQ3e2WQ6Jn18uFskymem9zhDflawwDjCEV2WtpszdZOggO4+M
- ijiIFwR040WG9uTumvReF9GJl6II4zDBUfgVRbcYWIZSQQFMahrDgeQ2KlNV
- TSNPtaqP8cDS3rrxlGd5ucfRbNUopVcUa8mQVd1My7petWTuZKZnq9ZsTdOI
- fcQJxYwgyXDIq4QEaxCAWqCO6yN6hWWlUHYQLsuGXFHIkMrvQXubJMdBSmO8
- 2K/gVQEp9IvowTGeEqpihzd1hmBBU2RDxDCi3PQkhVyo6hanJGKkntJTDNEn
- QjuT/XvIlhPihF2b0XogtF5YNc9Vbll37M4kzRuY4Jo3aV2VeMpW1eBd0Ltt
- gYwjJ++Up8J7D4qYxFmO/Rb1gKFUqqsKR/aw5eXseVo5qRK8sQlyup4Raqv9
- HkAMLfWFKEsisnXSM7aUJ8+WztWllykVJdoo6l3FTgUhBkx6EZFHjhu8veNo
- mK1VlvhmeYfnSbcW+H4RcQ05AVdhN3+XQHvyXYbE7hrwQtrqG5zAef4ki5jn
- zj4UKBCrOmkYMtUkmVz02FweMobD4/nTHuVOLubz5EED9ZbMUSNYZmjz6pcw
- VhiOee2JLZt8PbQwqO0mmmzgPcYsQoEuoIIqVc+TU3vSm2uq2cnRZBWTr2Lx
- ptrDXUGn4pPrYobapChbMsl8lVU/XVGMD0E6yMokuq3yN9rNvuIgY4Oba/2C
- r8sn+KSj9IkIvkiQ5ijNfpoPCZtrNJE6EqC5l89dm2tDkUQg4RvwDbCzwce/
- hnyS/2JcCnf7BiJDIamFZt+Fx/fYxU5JsGWiFO1+4iHamhaplTT77Oe4FGvw
- 9JOn1NQzzjX2c0xKuNr9tl+H1NYYhR1fOyF2NEHslDq9NfMJKcBRrj6+x1mG
- ugORoBTiiRtilFQccq6qrVqeu20pdAjTdu8vU+VacmpJl62aQbszMFUtKvwi
- VHWlvg/z3JdvtWpB1hZkQ+XvjrBnvqZbakXJ6KuqqZLIPcMnt44UhoONZju0
- rTlLLpRn5FsOqJCr1oyCMq3ylwOO68IuRwzShg7SJ4wWMCnBr2pi+xV1jQ+r
- 9jN9E6Dxa5JMwU9SoL3vIVr7/ON/IXbtIaRNhP9A2wPb5RsaBduI3/oivrWf
- GHeivw7en/zkcQBHyJLb7uv7HW0HN3DoEV724b5txT076lrHkz8dwVHSMX5P
- UTAcY9TBiKcSvRtIc6TUIwzuhom7MHEkMeSyPI7vaA5z1BO2y7BLOGmvRYw4
- 6iO8xvDABa2zElxWI09j9freWI0+g9X43lmdbmRF16Y3qzNsG2gjK7oQnYga
- vM4x/NbEqx7AFL6nOeSuT9cISTnSsMMt6rC6uJtV1GUVpeRcIp3L5oJtmn1G
- pmafI1Nzz8C+8hzYdIV6V2GhaRWkSf5F1fE640Qk9qU2cXUdi+t4776780K2
- n7gtMNENTKREvk/6K/w7moM276C1p/5B9y8I+u9vwX7AYf34wR5ZSxP8dhe/
- 3cWfdvHnHPzEDvzudSztCTzhgidc8LybwLSTwGDfOoreOajnMeh2s4KbTg+e
- ciKLpRIqr+wmyqkN3Npq6XoEMTeCGJbxoVvXkg1mOJEcdyKJcJgN1Bo3RsRB
- 8Tvefvxoz1/iJ5pNsvmIgry9CH8GdzK4SyM+5sMnGXyKzxbBTHyOtUX65YkO
- E1/Y/1ETeRPzJnImOm3JERM9JpL287A9jpgYNfGGiUn7ddrEeRNZE3P/Axpj
- kXLPDgAA
+ H4sIAAAAAAAA/6VWW3PTRhT+Vo7vCpGde6CBlgBOXOIQKDenKYFCMbmRxE1p
+ 0pYqtnAUyzKV5BToLb3fX3noY595KDNtCO1MJ+WxP6rTs7IiJ44MmXbG1q7O
+ 2e/bc9uz+vuf3/8EcAo/MnSZVmXJTE1WLHlJU+YUa66ylNNk0wyCMdycWJFX
+ 5ZQm64XU9NKKkrPSVUnFUrUUrR7ZtiCjW0pBMdKj6Yli2dJUPbWyWkqpJDV0
+ WUuVZKOoGGZqvLZXmkGq3yCIJobmHZsEEWA4tkfOIEIMgRFVV61RBl+if15E
+ BNEI/BAZOmvEE6peVPJXZXPZRu2LoIWvEPv68oqmFGRLuTnE0LLT37SIGOJh
+ CGhlaLKWVZOhZ6JRDMm/YIFe1XuKbUqGMCa9iOhGVxRB9JBYzudJnMj0LzDE
+ dkUziF4iWZW1ijJ9i6GD1nmEXMQhPB/BQbzA0J7YnbT+BREH0Me3PEJ05F9J
+ 0S0GRhYFyIAxTWPoTmzz9VJZ0wiplvU0NyzlrRtJeuafIw5PlI1CakWxlgxZ
+ 1c2UrOtlS+YgMzVVtqYqmkbhCTmmmCEcZ+j1yjHRGkSg5qgkU+ReblnJFR2G
+ 67IhlxRaSPXh4fY2yRwnKaR5NZzAcARDOCmiHwM8JC9RXL1dZ/DnNEU2RJxF
+ lC89RybnyrrFXRKRroZ0hCG6JbQjObiHaDkmjtq5Ga0acoFyo5qXS7etu3a9
+ kOYiLnHNq7SvSn7KVtngVdC/bYOMIydrk54K70Mq4gpe49y8BgylVF5VOLPH
+ Wp7OvqelkzLBK58ox6sRmWJo9SBiCFc3oiiJmKk6PWtLefBsabYqfV1EJ7oi
+ dNDe2NEkpiqlJX4q3uQB0a15fjBELPKlC3iLV/lzHPQOQ3x3sHnGbLXMLZ3g
+ sxyF3CqPGYZMIU8kFj3OjoeM4dBI9rxHNhOL2Swh6EGlI3PWEJYZ2rzKIYgV
+ hiNeJV9bk62aFgRV1WiD87lHm0Uo0CMooUzJ8fSpPeHta7JRY2iwi8l3sXjN
+ 7OGuoKa3dV1MUhXkZUsmmVBa9dEVxfgjzB+gZlUk+R2Vv1FjFvInGDuxuTYY
+ EbqEiCAdpn8oIoT8NEZp9NHYG9lco4HUoSYa+/nYtbk2HIo3xYUhYYhd9D/5
+ OSBIvmsxKdgjDIWGA1KYRuHqk/vsWqcUsWWiFO3ZQoi2Jiw1k2afPY9JLXVI
+ HyGlhsgY19jzFinualttXIfUVm+FbV87MXY0YOyUOr01s3GpibPceHKfexno
+ aQr5pQAP3DDj4ex17qtaQi/fsRRqtHSkB4uUvvCcWtBlq2JQX2i6VM4r/DZU
+ daV6BLMcy09ZOSdr87Kh8ndH2Ddb0S21pGT0VdVUSeT26bFa22DYX79sh7Z5
+ zpJzxUn5tkMamStXjJxyReUv3Q50fheQ2rtAd71APSQMJsX5fU3efkFVI2DV
+ ntPnAD2/JMkYfDQDWgceoXngD7S8+QjSJoK/oe2hDfiKnrxNACL/PMDX9syG
+ oB0ddl1Sn3LoErxKOWLgV7Q9xn6GB/aKGirioqhROajTxM932MdR+zdw+DGO
+ CtuQHVWtg+SzY85OdH+RA5zjnMMRS8YHN3CKMyUf4/RumphLE8NxnHEjk8Q3
+ NAY564s25KwbpDqvzjM8bOhV+mlevbw3r0af4dXY3r16pd4ruk69vbr8tFzR
+ RelYVIe6xvBLA1TVgKv4lsaAuz/dOiTlTCcd36KOV9O7vYq6XkUpONdJ53oz
+ aS+deUak5v5HpLLP4J7/z9wz/OvXyULKiad/YB03HrhHLmALtx83f5VbGuPf
+ sQ74gmOYOJDcxMI63l7HTW+ODucIb9knUjzftQOYdtlmHbb25F84+BP8vgc1
+ 2iVO68N39pOFG/C3u/ztLv+4yz/t8Md38B9cR35P5HGXPO6QM7pqbznVdMYh
+ b0nGVZ6jTRSTG7hdK84qSYtL0oJlvOdmqGCTGY6lR52khDjNBir1JR5yWHwO
+ 2ofv7fFz/ECjSWvep3zdWYQvg7sZ3MvgA3xIU3yUwcf4ZBHMxBo+pY82Ex0m
+ PrN/URPdJjpNLjxgS46Z6Ddx3J6ftZ9pE6MmLpq4Yr+Om5gwMWMi+y/NlFaM
+ 0g4AAA==
"""
)
@@ -465,7 +465,7 @@
private val KotlinImmutableCollectionExtensions = kotlinAndBytecodeStub(
filename = "ImmutableCollectionExtensions.kt",
filepath = "stubs",
- checksum = 0xf50711c2,
+ checksum = 0x366b10e3,
"""
package stubs
@@ -491,400 +491,388 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAC2KMQrCQBBFRzQWUyhsZSdYiYFcQiwkZbzAJhlwYXcnZP5C
- ju8WFv+9V3wi2hPRrq75m7jli8/zqmHeuknToibdWjJCEncesl/sqxjgIT34
- zo2hjOau75QK/BjlqTHKhKD5tUGy1bD6PPEBYnDHT2WPGz3oB8hyC49/AAAA
+ H4sIAAAAAAAA/y2KuwrCQBBFR3yAUyhsZSdYSYT8hFhIyvgDm2TAhd2dkLkL
+ +Xy38MI5nOIS0ZaINpUj/ccPvvg8LRqmtR01zWrSLiUjJHHnPvvZvooeHtKB
+ 77w3lMHc9Z1SgR+iPDVGGRE0v1ZIthpWnyfeQQzu8KnucKOGfhfuUbR/AAAA
""",
"""
stubs/CollectionObject.class:
- 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
- yT4bnTa6bRy1kSfJ/3e4UsLJDgAA
+ H4sIAAAAAAAA/61WW1cTVxT+zoQkwxAhRLlbGitqIEoQrVZBWqRYg1wUkKrU
+ 2iEZwsBkJp2ZULQ3e7P3PvrQ1ac++6CrrWJdq6X2rT+qq/tMxiEmg8tlXSs5
+ 58yes7+9z7cvZ/759/c/ABzGDwzNll1csFIjhqYpGVs19KmFZVqEwRiWxpfl
+ VTmlyXouVRIPlCRFW9XKVAbL9qV1W8kp5sDQwPiKYWuqnlpezadUkpq6rKXy
+ srmimFbqzIRcKCjZCedxgCFaaSmMGoYdftbCCDF0PzV4GCJDaFDVVXuIIZDo
+ notAQp2EICIMcRcn48GXc2GdIT/qGWqVfMG+Oq5aNkMs0V1GApcNRBBFo4QG
+ xBgiXV1ZRVNysq1c6aNzVe/dgaZaCGhmqLGXVIuhddw/BkRLOKfYM+o1xXE8
+ zVD/OFoYOwnFog0RdKKjDi/gRQYxY+i2rOoEXZNId19iaKyKTxi7CX1V1orK
+ 1CJlAe3zCWIEe7BXQhf2MTQlqrOh+1IEu9DN7fYQHJ07r+jEESNX6x55Maxp
+ DG0J38wZ4N71+r8bTFYbHHIUdo8bZi61rNgLJjeQknXdsOVS8CYNe7KoacSd
+ 6Lpjiehn6PRLGDqnSQBqxgrjMB0xs6RkVlyEs7Ip5xXayLDP5+hlkhkOkhvg
+ iXUERyW8jFci6EWK03KcuPU/OfGlWqM8r5zgEpMnMMRVXiXXVbIr24bJI1Oe
+ bmlXTtpJ3xf+pRjBME5y7NfJlpzN0pE2t53XrWKhYJi2kp0qcBTybnQtoxRK
+ xfYGwyFPHletOHEd9zTii4YZNxU5e8DQtavxzTISka7ImTKaJJyRcBrjVJjk
+ jZMgqadIgs0D8SwIZjRFJoZCppI3VqlEYtVRotItvXVsiKV1mhJ+V7m5xaLu
+ GEudNZWsmqHSdQwcffKewQNbuiYUqPQ7n2zBcY0XCLkWQTs6JGoKlx7rhJPF
+ /AIv1bd4Ruj2HK/WCN7mWy/jCi+9l7iSTKlkG8OmKVMqJRLzPnXqI6PeNzh7
+ 3KfEEvOzs6RBA3Esc1QRxNgevwLaDNRsyYEwlhiGtij2p/QsggyWJahYYdju
+ 63lTwv9Eya26zBZWDG6lQOwOZjTnguB00q0gpidnZocnR0YjsNHGu3WRCKho
+ 5f6lRs320cU3QeHNyrZMMiG/GqAbl/Ghlg+gJknHE9ZU/kTZImQPMvy0cX2n
+ JLQKkhDtpL8oCWKQ5jp3Toh/3xBaN673i7GamNAn9LGTYVF4+HNIiAbGGqPh
+ dqFP7A9Fa2kWTj+8GRhriUqOLBKta/d06A0bq41G+Btn3RDd5r2t53rTsWgN
+ x7jw8GaQ0EPtNWIwGuI+UiMlz+PpfL5oywuassnx6JqtUCelFty7QjdAx3RR
+ t9W8ktZXVUulncObPZoyf0bN6bJdNKlqa0aMLE0N46qulBJ+liPzcjYysjYn
+ myp/doVdlbhem37MwLYZW86s0GeAqybNGEUzo5xS+UObizFX5RkOUqiD9A+D
+ B72NR5/O+wWFKETzQSAa4/c3rW+QTMB72E4jfU6Q5EuSHKcnogiRnnvY1rOO
+ 7b+h5Y6z8ysaeXaBtEX6f813lfailaxwXqkJuDgJnh9co+dXtNxHnOGWs2NT
+ S/K0qAu4WkcIn1uo51od60jcR1Io02wuvXU1+Wo/DjiW6LZCwME45mI0JmOH
+ 1nGMIyXvY6AaptGDaUQ/Bj1K+vANzWFW4otGutb8T/Xak05FF5brUYXWKMPt
+ LbRKDoyUx4vGUx4//YTIXZce4PTF2Ng9TPxZcSjJO5TkcTNJ3AjPoF9OyhSt
+ znpZkiActgVOJQ/n0P2M3k873s88B+/7aDWL88+E8yYueDhztLr4XPw5xz93
+ XV5Sbn4Ee+5i/pZXbCFHWF5oQRfuHP9mdZWn3XRvSv6Frh8RDNzqSW7g8l28
+ cxcLHCyAb52R1VahNrvl/MjJphLp0WFKuf8XtAyyLklHXf8akrEcL8cNhJPr
+ 0G5XgDR4IA1YRN5jSnHAdNeZvS5TIodZx7uVdSS6KCJML1dbHHyg7gGEi/dg
+ /YLVO44g4JoI4Dtn/hzf08yDvUZMX51HII1rabyfxgf4kJb4KI2PcX0ezMIn
+ +HQeDRbaLHzm/OosdFpot9BhYZcj2W+h10K/hRMWhknyH/VQQCa0DgAA
""",
"""
stubs/CollectionSubclass.class:
- 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
- DgAA
+ H4sIAAAAAAAA/61WW3PTVhD+jhzbsiISx5CQC01NCeDEEIdAoeA0baChOOQC
+ SUiBlFLFVhwlsuRKchrojd7bP8BDH/vMA51pIbQzbcpjf1Sne2ShGFthGMqM
+ rXO0Z/fbb/fsnqN//v39TwAn8CNDp+1UluzMOVPX1byjmcZcZSmvK7YdBWNY
+ mVxV1pWMrhjFzMzSKmlkq5KKo+k1RiM1ejnDUYuqlR3NTq6Zjq4ZmdX1UkYj
+ qWUoeqakWGuqZWcuTinlslqYcl+zDPF6T1E0MewJ8hZFhKH/ucGjEBkiI5qh
+ OaMMoVT/ggwJzRLCkBmSHk7eh6/Nhn2ReLQwxNRS2bk1qdkOQyLVX5MELsvK
+ iKNNQisSDHJfX0HV1aLiqDeHKK5G3T1oj0FAB0OTs6LZDN2TO+0CJSZaVJ05
+ 7bbqUs8xtDyNF8U+wrFJQUYveprxCl5lEPOm4SiaQeBNqVz/dYa2hh2K4gCh
+ ryt6RZ1ZZuggvYBtlHEQhyT04TBDe6qxHvqvy9iPfu53gOAo8pJqUJYYUW1+
+ wmJM1xm6UoG1k+XsBoPXRtKNDkddgwOTplXMrKrOksUdZBTDMB2lun3TpjNd
+ 0XXKnejRsUUMM/QGlQzFaRGAlqeKP0Eh5lfU/JqHcEmxlJJKigyHA0Kvkcxx
+ kGKWl9ZJnJLwOt6QMYgMT8sZym1w5JQvzR7nleVuLmXyTYxyk7eIukZ+Fce0
+ +M7UFlzOk5N1OnAhuBlljOEsx36HfCmFAoW0rXbFsCvlsmk5amGmzFGI3fhG
+ Xi1X2+1dhuO+PKnZScp10rdILptW0lKVwlHT0G8ltxtJRK6uZmrSJOGihAuY
+ pNYkNm6BZJ6jCLYD4lUQzuuqQhmKWGrJXKcWSTTuEjVvddX1IVbnOSr4/bXu
+ liuG6yxzyVILWp6a13Vw6tk6I0d3pCaUqfl7n+3BpcYbhKjJ6EaPRMfC9afO
+ wulKaYm36vu8IgxngXerjA+46g3c5K33GjdSqJQcc8yyFCqlVGoxoE8DZHT6
+ jcyfCWix1OL8PFnQg3KscFQRlLGDQQ20vVHzVQJRrDCM7tDsz8lMRh6rEjSs
+ MewOZN6eCo4ovdMps4MXk3spU2x153RwF9E5+uRWm6KdKyiOQjKhtB6iC5Xx
+ R4w/QOcfMRc2NP5GhSAUjjHc3bqzTxI6BUmI99JflAQxTGOzN6Y6t+4Mi4mm
+ hDAkDLGz4cc/R4R4aKItHu0WhsThSDxGo3Dh8d3QxN645MrkeHO3b0ErbCIW
+ l/mKO2+N7/JXW7jdbCLexDGuPr7L0SPdTWI4HuHs6HQkzslcqVRxlCVd3U7c
+ +Iaj0vFI5+rgGh3rsTmtaChOxaJmazpnFmhondQMtVqn89yWd6GZV/QFxdL4
+ uyfsm60YjlZSc8a6Zmsk8k/Xse2zm6GnXu2p1V1zjpJfo9vdA5XmzIqVV89r
+ /KXLM11oMMQx6pEw/aOIgcUT/AqmeO/Q5giwkKA5fRHQ80uSnCEZpQPywEPs
+ GtjE7t+w9xdX8yt68m4DOiDS/2uuVdVFJ7rcfacu9nBSvAq4xcCv2PsISYZ7
+ rsa2leRbURt7VicJn3to4VY9m0g9QlqoseyornqWfHYER11PdN0g5GKc9jDa
+ 0onjmzjNkdKPkG2EafNh2jCMET8lQ/iGxihHPeaa0L0UHNXbz4qKbhyPUZ3V
+ OMP9HayqBM7hWxojvv/zfn6GCZFTl/7AhWuJiYeY+qsuKMkPSvJzM025EV7A
+ vjYpMzS75FdJinDYDjj1ebiM/hdkP+uyn3sJ7IdoNo8rL4TzHq76OAs0u/ZS
+ +Fzm36teXjJefYQHHmDxnt9sEVdY22hhD+4y/+j0jGe9cm9P/42+nxAO3RtI
+ b+HGA3z4AEscLITv3CeLNaBWSbb7JNurSY+PUcn9v03Lo+Al6ZTHrzWdKPJ2
+ 3EI0vQn9fh1Iqw/SimWU/EypLpjhkTnkZUrkMJv4qL6PRA8l5FmH8L07foEf
+ aOT7aFMSnUWEcqjksJ7Dx9igKW7lcBufLILZ+BSfLaLVRpeNz91fs41eG902
+ emzsdyVHbAzaGLbxpo0xkvwHiMP5IlQOAAA=
""",
"""
stubs/ImmutableCollectionExtensionsKt.class:
- H4sIAAAAAAAAAJ2V3VLbRhiG37X8IyvCFrZJYkMS4wCBJCAgadIUSprSJHVj
- SCZ0Mp3hSAaNR2DLjHfNJGdcS6+gLSedHnSYHvYWei+dfrsoklHsTpIBaXe/
- n/d79kfrv//9408A9/GKYZaLfpPb9U6nL5xm293sttvunvC6/tO3wvU5dfgL
- kQFjsA6cY8duO37Lftk8oKAMNIZk2+OCoTC/0FD+vvDadoNsawy3PjCuNyKR
- ui/clttb26DIm41ur2UfuKLZczyf247vd4UjMbi93RXb/XaboqqHXdH2fHsv
- hOR2BKw4swxZt3Mk3slqJi4hbcCAyZBpuaKhUJPnjRXnNZGHlUUC4wwadylk
- /AL/jivnNBe3jZpSeQgshSvKywy6oiSDiasoGbiCMkOaIHdkZU2987HqJqZw
- TRJep4iOcxQn3HKOqPCjuG0Y4SdAk4KCvvkemgwmZjFtYAZz59BbEkZT73wM
- yMQCbkvoOwxGpMtw9QJntI+EsTjCNWqtS8OCM1hmGCO4zYGixuDg8vD6Ju7h
- viT+gma8vkfr4YkNmt78whv6YD7yRM983Cl5+NlbdeeTVmi8EezsliucfUc4
- ZEt0jjW6B5h8pRjYoewkyP7Wkz1avcT+CsM/ZydzxtmJkbCu06MbCV2jthq0
- M0FbozZdMa3xil5IFhLLiWVGo0I4SlcKVrGSOx8FNoMiSmFErnbFOjuJ0v/6
- Oa1T3UpS16wk+VKRVuTKWHrtmpWNC0cBlyyTcseiKpErb1lyiquM1gDV/70C
- lw7pc8zueC3fEf2eyzD5uu8Lr+PW/WOPe5T1JLqx6IrZ7O678lPwfHe732m6
- vR+lMh2/nW6/t+c+8+SgHGi8+UABK3T6krQHSVTkrUSjH+Te4BFeUJsmXp3a
- irwPQt9XMR99dqFvLeajAx761i/4sigjRSMNDRrVyMqkV1v7HWO/yNOCLXob
- lCfpUvScq2QuqJSRCzWmlAJF/4ZCpJBW1tSI7CJKwwgqcYIsKWQDjYmYxmSo
- MUBwI05gjMiuYnoYwa04QY4IcoFGLaYxH2oMENyNE+RHZC9iKcieDQiyahfO
- sBKHKFJKMZCxYzKrocwAxIM4RGloto6H+JL6MvunAGJGQZyioDbkFDfUspzi
- 7nu4Uzz4NVSvKZ2U+tOJdowei6Y8QQ/97tEyl6jqtqpdx0tqDyjza4re2IVW
- x+M6vqE3ntTxLTbr+A5Pd8E4nuH5LiY47nF8r/5XOZY48qqf40hzLKj+PMc0
- x5TqT3KUOBY5UhxVjuJ/gOL8xQkJAAA=
+ H4sIAAAAAAAA/51VW1PbRhg9a/kiK8IWtnOxIYkxhEATEJA0aQolTWmSqjGk
+ LZ288CSDxiOQZca7ZtI3fkt/QVteOn3oMH3sX+h/6fRbWZGMsDtJbGt3v9s5
+ Zy9a//3vH38CeIjvGe5w0W9x0+p0+sJuec5W1/OcfeF2/edvheNzGvBXIgfG
+ YBzaJ7bp2X7bfN06pKQcFIa053LBUFpYbAbxvnA9s0m+dYa7l5wbzRjE8oXT
+ dnrrm5Q52+z22uahI1o92/W5aft+V9hSBjd3umKn73mUVT/qCs/1zf1IJDdj
+ wYHOPEPe6RyLnySbjivIatCgM+TajmgGUtODzkjq1VGEkUcKkwwKdyhl8oL+
+ XUfOaT7pGzel6gixlB6ovMagBirJoeMGKhquo8qQJZG7klkJ2mKCXcc0bkqF
+ tyijYx8nFW7bx0T8JOkbpfADRBNCIHr2nWhy6LiDGQ1zmB+I3pZilKAtJgTp
+ WMQnUvQ9Bi3GZbhxQWe8jyRjaUxo3FpXRiXnsMIwQeK2hki1YePaaH4dD/BQ
+ Kv6UZryxT+vhik2a3sLiG3ph3vNEz73fKXn80Vt174NWaLIZ7uy2I+wDW9jk
+ S3VOFLoHmGzysgEDO5KDFAXfunJES5g6WGX45/x0Xjs/1VLGLXpULaUq1NfD
+ fi7sG9Rna7oxWVNL6VJqJbXCyCpFVrZWMsq1wsAKfRplVKKMQuO6cX4al//1
+ c1Yl3lpaVYw0xTIxVhzKGWrjppFPAscJVwydaidiljhUNAw5xTUmZ1//33tw
+ +Yjeyfyu2/Zt0e85DFM/9H3hdhzLP3G5S1XP4muL7pmt7oEj3wfXd3b6nZbT
+ +1Ei0xnc7fZ7+84LVxrVEOPNJQSs0hFM0x6kUZNXE1mv5N7gCZrUZ0mvSn1N
+ XgpR7PNEjN69KLaeiNEpj2IbF2J5VJEhS8E2WXXyyk/6d0z8EpySHWo1qpLa
+ FHoGGLkLGFUUIoTpdwi/oRQjZANvZkx1GZXL/LUkf55y8iHC1QTCVIQwxH87
+ ya+Nqa5j5jL/3SR/gXIKIUIjgbAQIQzx30/yF8dUL2E5rJ4Nq3O0/udYTUoo
+ U1E5BDETIGsRyJCER0kJlZHVKh7jMxrL6u/C6mmScIYSbcQZbtNynOH+QNQZ
+ Hv0aoTaC+gwxy0Ok0QbRXzBNVH5LxEZ/eMT2OuD8lrCBQ6r8grI396BYeGrh
+ SwvP8JWFLXxt4Tle7IFxvMQ3e7jK8YDDCn5rHMscxWBc4MhyLAbjBY4Zjulg
+ PMVR4VjiyHDUOcr/AfU3caL+CAAA
""",
"""
stubs/ListObject.class:
- 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
- qIOnBVF1MCkWZxycczD3Pw/jQRHOFwAA
+ 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
+ O7jo4IX/Af1E8byHFwAA
""",
"""
stubs/ListSubclass.class:
- H4sIAAAAAAAAAK1Y+XcT1xX+3shaPB5jWWAb2wFUliBbARmTQmO7Dg4hzRgD
- CTZuggPpWBqbsaWROjNyTbqE7vve0DTd072lLbQJ2ElP6/Jj/6ie3vdmNJKl
- Ebg+HGDe0333fne/7x3+89/3/gngSfyDIWE75Xk7M2XYznR5PpvXbDsKxjA/
- taStaJm8Zi5mLswv6Vln1KWUHSMv2MdqOFTT0Rd1a3R8dGq56OQNM7O0UsgY
- RLVMLZ8paNaybtmZs+e0UknPnRM/Rxni9TqiaGHYsVlPFBGGgS3DRhFjiIwZ
- puGMM4RSA7MKZLTJCENhSHo42WI+T/qMomlnTlf3Z0nbDoZWvVByrnPlFKDU
- QJ3jowri6JTRgQSDcvBgTs/ri5qjvzpEHjXy7kJXKyR0M7Q41wybYddUY8wp
- GLFs0XQ0wySOlpQ6cJmhsyHAUTzGEF3R8mX9wgJDN/EFZEHBXuyTsQdJhq5U
- YyIHLivow/42RHGA4Mj8gm6Sq0xlaKtYMZHPM/SmavypxmmUW3c0+Gws3ahw
- XAgcmCpai5kl3Zm3uIKMZppFR3NzcL7onC/n8zwMnjl2DGmGvUF5Jz8tAjCy
- VKpHyMXsNT277CG8oFlaQSdGhsMBrtdQpjnI4iivjwyGZBzFMQWHkeJhOU6x
- DfacSmpRd3hcN4Xeg1dwAic5wIcYwoaZ01cpvmLl6eJpVZukRFUwig9z0XEu
- Yp/hFSjql5J1ChP85BmKjkGuaU7R4smvLUzVo5OB6cCD4HZV8CzOcOyPUOqp
- EB3VNVaB6lozSSWep0JVfb19DQ1RozvT9LCZ/imc43ouMPT7IQ1CHmp+2hz6
- RQ49TQG1y/NuO+9KqQ04hD4QQG4GewmzHPYlmhMLVrGgeml2ipUdFci08Zou
- skf5brHph4KruMLFXiWylstReVbRL5l2uVQqWo6eu1DiPlGlnVnN6iW+iWKe
- 4bhPTxp2kvom6UskF4pW0tK13JGimb+erE62GHJ1xVZT8jIWZGSxSHXKXZ+l
- mUlWiabvS6nNu36oyeGmtq9Gi4tktjAoNkuEs3ldo1KLWHqhuEKBTDR2DEXf
- PRU2y5ZeymtZ98ehWoULZVOooyBr1nU3jFRQ3OORh/MF1wAXlko07vc/XJGw
- k09UYVrI5sOjp1ptm5B5rVBOG+ZuoaRVrc4En40daWpqdzDYpvv3fLkwz++X
- z/AZYzqz/IpRcANXZLyOz/L7ol+mW+zzfMLt47sv8oE1xndf5sNC7L6q4BUu
- IeHrCjRX4pvimgqYeLOcxeAs3+GzOoglaMCu4jqX+b7ouAnL0mhKplJzAdIB
- NHoAjM2MBFxQqbmZGZKgD1WfxlFjeJOmRVDhRvEW1VjQxVTlmXFNi+InDONN
- LtEt2qzgDfxMxk/xc4adgT51pYJ9TTe7vZto+RXX8mvybUuDkN4nlcfeOSrw
- nOZoRJMKKyF6WzL+CdOTYplIqwb/Re0i5Y4xNrJxY0iWdkuyFE/Sv5gsxcK0
- ttEaonUvrRFaU7RynkFO371xYziWaElIQ9IQeyZ8/+2IFA9NdsajfdJQbDgS
- b6VVev7+zdBkT1wWNCXe1leRUOiETXbH2zkXce+ocAucDsKJeycVHDbZGu/k
- OGLfEU/4WDuFls74rgaJjniXz9UtKD21lBq9bHJfvMc/YXSy20PrrXBcTMRb
- +P6l+ze5t5G+llg4HuERHGYUXSTVQqHsaPN5vZrXM6uOTq8iek4dXaYZ0jpt
- LJqaU7ZofracLuZo6ZgyTN3t9BkuywdrMavlZzXL4L894sGLZdMxCrpqrhi2
- QST/UTVRfbLRfV3Ptum0fdrRssv0MvdA5eli2crqzxn8R68nOtsgiGPU3GH6
- F0UrWDzBn8/k79+pgCT8FgdoT695+r5DlDGiSbTuGLyH9sHQ2Bp2voueO4L3
- XfrK4jRKaxR3aaeQHHFjN3p5jfKh5iGd8JHeQU//Gj6wjoMSbgkuLtntnnqS
- fHcIj9MZ4y9GhATGUx5GZzrxxBqGOVJ6HU82wnT6MJ1I44O+ewO4x83lqINC
- hEYtkRvtW8dTEjaw5/YD7BsR9q3RPuLj0cBu7u/TW/OX3qIeRkr8pihzjHWc
- ZjXybqRlP9L0yvSiVCf1PMPtJlJuUJ6r80F9kA9nt+YDvTmDrXnhYdacr7OG
- npge0nHPmjYvQzMS6tPT5pvS5qXHBb1YB0oPTA90nFY+OxUB+tg6Xg7VoCbd
- Mx9VwWWByndztJM8/I/W4dMdHZzCjz0ohZrfLMOkl/sjv4/sywn9Hq79q85T
- 2bdJ9oNOl73ftq5XQfKuT7XyI55PLpJE+yUse22xXSTedZXo5AViykP8/3yr
- 7d4C7Ux/NPGhwJrg1Ee2iP3bjGxJRPbjj8D6AWHH2LbsEHGNT5D8ye3L0x8L
- 9rb8KGPF98Oh3SceUTzoqfmIKvY1fHKbnn3at+hTNGr6/Eq56I2brvS/sect
- hEO3BtMbeP0uPncXX+BNHMK6+LJWcRVGhEXRGj1dvp4ut5Iogyf8DI54+JHB
- /rv40m1UrtRGnIiPE/E8f5H/V0YTO6UaO7+yPTsJX90S/te2jX/Vn5AZb0KG
- B+/iG7cCw+C2c9iFoSBqfpJOecYpVZu+FYzhmlI7yisp0fBtD+2sV4Ttg/1P
- VOC+eycQzq3Jdh+u3a/JdgEsEfAqvvcA4B8Ep/yhwLR/Aze9Yj/p+d+RTvyI
- v4g28OP0Gn5Rfy92+HAdeBO/9Cv+hwLsbc/Kx71MxDjMGn5Tf1HHPJSQJx3C
- e2L9G96nlXfy7yhJv59DSMUfVPyRvvgT/9xS8Wf8ZQ7Mxl9xew59Nnpt3BF/
- 22xctfGKjSs2pxPlkI3DNtJif8LGiI19NkZtnLLxrCCqNqbE5pKNyzbm/gd3
- 15BHbhcAAA==
+ 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
""",
"""
stubs/MapObject.class:
- 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
- GwAA
+ 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
+ /wNOKu12BRsAAA==
""",
"""
stubs/MapSubclass.class:
- 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
+ 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
""",
"""
stubs/SetObject.class:
- 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
- s3GSFv8BceJNatwNAAA=
+ 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
""",
"""
stubs/SetSubclass.class:
- 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
+ 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
+ CRvD7jxr4yJN/gX455r+Zw0AAA==
"""
)
@@ -926,7 +914,8 @@
}
"""
),
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.skipTestModes(TestMode.TYPE_ALIAS)
.run()
@@ -1008,7 +997,8 @@
}
"""
),
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.skipTestModes(TestMode.TYPE_ALIAS)
.run()
@@ -1053,7 +1043,8 @@
}
"""
),
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.skipTestModes(TestMode.TYPE_ALIAS)
.run()
@@ -1110,7 +1101,8 @@
}
"""
),
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.skipTestModes(TestMode.TYPE_ALIAS)
.run()
@@ -1220,7 +1212,8 @@
}
"""
),
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.skipTestModes(TestMode.TYPE_ALIAS)
.run()
@@ -1308,6 +1301,7 @@
"""
),
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
KotlinMutableCollectionExtensions.kotlin
)
.skipTestModes(TestMode.TYPE_ALIAS)
@@ -1399,6 +1393,7 @@
"""
),
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
Stubs.Composable,
KotlinMutableCollectionExtensions.bytecode
)
@@ -1497,7 +1492,8 @@
}
"""
),
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.skipTestModes(TestMode.TYPE_ALIAS)
.run()
@@ -1536,6 +1532,7 @@
"""
),
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
KotlinImmutableCollectionExtensions.kotlin
)
.skipTestModes(TestMode.TYPE_ALIAS)
@@ -1575,6 +1572,7 @@
"""
),
Stubs.SnapshotState,
+ Stubs.StateFactoryMarker,
Stubs.Composable,
KotlinImmutableCollectionExtensions.bytecode
)
diff --git a/compose/runtime/runtime-saveable-lint/src/test/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetectorTest.kt b/compose/runtime/runtime-saveable-lint/src/test/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetectorTest.kt
index 15ce6b5..37f46b7 100644
--- a/compose/runtime/runtime-saveable-lint/src/test/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetectorTest.kt
+++ b/compose/runtime/runtime-saveable-lint/src/test/java/androidx/compose/runtime/saveable/lint/RememberSaveableDetectorTest.kt
@@ -42,7 +42,7 @@
private val rememberSaveableStub: TestFile = bytecodeStub(
filename = "RememberSaveable.kt",
filepath = "androidx/compose/runtime/saveable",
- checksum = 0x90b6d5a7,
+ checksum = 0x7556f44f,
"""
package androidx.compose.runtime.saveable
@@ -81,53 +81,54 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcUlkZiXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbKsTnW1qSmJSTGlySWJLqXcJlzqWIS61ecWJZKkitkFBQam5qblJq
- UTBUBKiRl4ulJLW4RIjVLT/fu0SJQYsBAFB+NmSMAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijg0uaSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIPzkssKM7ILwkuSSxJ9S7hMudSxKVYrzixLDUxKSdVSCgoNTc1
+ Nym1KBgqAtTIy8VSklpcIsTqlp/vXaLEoMUAALqJaBaNAAAA
""",
"""
androidx/compose/runtime/saveable/RememberSaveableKt.class:
- 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
+ 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
+ Kg8AAA==
""",
"""
androidx/compose/runtime/saveable/Saver.class:
- H4sIAAAAAAAAAI1PTUvDQBB9m/QjjVVT60f9BWIOphZBUBG8CJVKoQEvPW2b
- tWzbbCS7LT3md3mQnP1R4sTai3pwYd6bffOGmXn/eH0DcIEWwwlXUZrIaBWM
- k/gl0SJIF8rIWASaLwUfzUUQUpJWwRgebvqpnEjF51e9KV/yYM7VJOiPpmJs
- rsNv/x+l298Sg/dTq6LE0OjNEjOXKngUhkfccHJa8dKmfVkBZQY2I2kli1+b
- suicwc+zumu1LNdyKLw8c55beeaXnDzzmO84zLN8q213KIqODsNp75+H03xn
- czWlmysZ7YPmQMQiHol0o57NDEMtlBPFzSIlkxsmi3Qs7mXRcTxYT3iSWpL5
- TqnEcCMTpSu0FcpYPxsHhBbx4Rfv44j4kuZVyFMdwu7C6aJGCLeArS7q2B6C
- aexgd4iShqfR0NjTaH4C2V0QQe0BAAA=
+ H4sIAAAAAAAA/41PTU/CQBB92yKUilrED/gFxh4sEhMTNSZeTGowJDTxwmmB
+ lSzQrekuhGN/lwfTsz/KOBW5qAc3mZm3b95k3rx/vL4BuECL4YSrcZrI8SoY
+ JfFLokWQLpSRsQg0Xwo+nIsgIpBWwBgebnqpnEjF51fdKV/yYM7VJOgNp2Jk
+ rqNv/R+t298Ug/eTq6DEUO/OEjOXKngUho+54aS04qVNflmRqkUCA5sRv5LF
+ r01ofM7g51nNtZqWazkUXp45z80880tOnnnMdxzmWb7VtjsUxUSH4bT7z+vJ
+ hLM5neDmVFY4afRFLOKhSDfs2cwwVCM5UdwsUhK5UbJIR+JeFhOt/nrDk9SS
+ xHdKJYYbmShdJlfYwvrZOKJsUT3+qodoUr2kfWXSVAawQzghqiFcbBNELcQO
+ dgdgGnvwBihp1DX2NRoaB5+QkX6G8gEAAA==
"""
)
@@ -162,7 +163,8 @@
),
rememberSaveableStub,
Stubs.Composable,
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.run()
.expect(
@@ -276,7 +278,8 @@
),
rememberSaveableStub,
Stubs.Composable,
- Stubs.SnapshotState
+ Stubs.SnapshotState,
+ Stubs.StateFactoryMarker
)
.run()
.expectClean()
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ComposedModifierDetectorTest.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ComposedModifierDetectorTest.kt
index 3f30abd..3d33d33 100644
--- a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ComposedModifierDetectorTest.kt
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ComposedModifierDetectorTest.kt
@@ -46,7 +46,7 @@
private val composedStub = bytecodeStub(
filename = "ComposedModifier.kt",
filepath = "androidx/compose/ui",
- checksum = 0xad91cb77,
+ checksum = 0xc6ba0d09,
"""
package androidx.compose.ui
@@ -59,50 +59,51 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcYlkZiXUpSfmVKhl5yfW5BfnKpX
- VJpXkpmbKsQVlJqbmpuUWuRdwqXJJYyhrjRTSMgZwk7xzU/JTMsEK+XjYilJ
- LS4RYgsBkt4lSgxaDACMRj6sewAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuOSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIKSs1NzU1KLfIu4dLkEsZQV5opJOQMYaf45qdkpmWClfJxsZSk
+ FpcIsYUASe8SJQYtBgBxwST5ewAAAA==
""",
"""
androidx/compose/ui/ComposedModifierKt$composed$1.class:
- H4sIAAAAAAAAAJVUWU8TURT+7nQfipRFWdy1YgvKtOCaNiSEQJxQMBFsYni6
- 7Qxw6fSOmaXBN/6C/0Q0kUQTw7M/ynjutDW4gU4y956c831nn/n67dMXAA/w
- lKHMpeW5wjowmm77tevbRiiM5a5orbuW2BG2txbke1YrX06BMazVWm7gCGns
- d9qGkIHtSe4YNd5uWLxy2rYTymYgXOkbqz2pVO3bX0oRVBYrDFN/d5ZCnOHa
- 2Q5TSDIkq4LcLTLECsU6Q7xgFutZpKHrSGCAFMGe8BkWav9dMCWYFLLjtmyG
- sUKxts873HC43DWeN/btZlDJYggZHRqGGQZO1ZbCKEPa3NjcWtpYXmEY/Knw
- LC7iUgZjGCdQtelE6auMI1dTynwhQ9IVhuE+cd0OuMUDTilp7U6MhsjUkWBg
- LSXESH8glFQiySozjJ4cJvWTQ13LabmTwymtxJ7pyjRPqVa5dOWbthv61DYw
- TP9ba1KYZcj96I9l7/DQCRjeFv7Y2z7xvLU4x16umL93vnh2xCzuY4568GsN
- cy1KN77sWjTRkZrb5E6de4I3HHtLHQxDNSHtjbDdsL2eJmtKaXvLDvd9m9Zo
- aEU2HdcXcpdGsudaDJlNsSt5EHoE1jfd0Gvaq0IxJ1+EMhBtuy58Qa6WpHQD
- HtWGEo03QY2nTwqTat40uDi9tAOkKZOUJwTNBsmZ2DGyR2rgmKcz29ViMOIM
- qwXsMWYjDL0KrGEhgilF6hSRdYm5JSLmesR5upUtPfMRI+8x8e4MfroXOE1p
- 9wOPE1o9A5+hvTrG5Q+4ehQpEvSnAXSCdQETeBjVeQ8GHkVBYngc3SU8obtM
- yGvEur6NmIkbJm7SiVsmbiNv4g6mt8F83EVhG5qPoo+Z7xp9fu/RBAAA
+ H4sIAAAAAAAA/5VU6U4TURT+7rR0GYoti7KIO2ILyrTg3oaENBAnFEwEmxh+
+ 3XYGuHR6x8xMG/zHK/gKPoFoIokmhvjThzKeO20NbqCTzJ2Tc77v7He+fvv4
+ GcBdPGYocGl5rrD2jbrbfOn6ttESRrkjWmuuJbaF7a0GU12rNVWIgzGsVhpu
+ 4Ahp7LWbhpCB7UnuGBXerFm8eNK23ZL1QLjSN1a6Ur7Usz+XIiguFhkm/u4s
+ jijD5dMdxhFjiJUEuVtkiGRzVYZo1sxVU0hA19GHflIEu8JnWKj8d8GUYEzI
+ ttuwGUayucoeb3PD4XLHeFrbs+tBMYU0kjo0DDL0n6gtjmGGhLm+sbm0Xl5m
+ GPip8BTO40ISIxglUKnuhOmrjENXE8p8LknSJMNgj7hmB9ziAaeUtGY7QkNk
+ 6kiqAwysoYQIGfeFkvIkWQWGyeODhH58oGsZjT6Z44MJLc+e6F/exLSEpjDz
+ lHiJS1e+arotn5pIzqb/rVFx3GbI/OiWZW/zlhMwvM7+sdM94llLcoa9UDR/
+ n0Pu9IgpzMFgGP61hrkGpRstuxbNd6ji1rlT5Z7gNcfeVAdDuiKkvd5q1myv
+ q0mZUtpe2eG+b9NSpZdl3XF9IXdoQLuuxZDcEDuSBy2PwPqG2/Lq9opQzPFn
+ LRmIpl0VviBXS1K6AQ9rQ56G3UeNpwuGcTV9mmCUXtoI0syTNEUImg1iM5Ej
+ pA7DmS/QmepoMRByBtU6dhmzIYZeBdboyiuYUsRPEFmHmFkiYqZLnFfrpILP
+ fMDQO4y9PYWf6AZOUNq9wKOEVk//J2gvjnDxPS4dhoo+3KNTJ1gHMIb7YZ13
+ qP4HYZAIHobfAh6Ffym6/8S6soWIiasmrpm4jhsmNeOmiWnc2gLzkUWO7D5m
+ fMz6SH8Hu1pp5uIEAAA=
""",
"""
androidx/compose/ui/ComposedModifierKt.class:
- H4sIAAAAAAAAALVU308bRxD+9vzr7BpibJISh1DSOAkYkrNJ2qY1IY1QkE4x
- bhVTXnhazmuy+LyH7s6IvET8C33sa/+Cqk9RHyrUx0r9l6rOns+BAMKVqtq6
- uZmdmW++nZ29P//+7XcAT/Atw32uOr4nO0eW4/UPvEBYA2mtD9XOpteRXSn8
- V2EGjKGwzw+55XK1Z323uy8cWk0wmHFih+HdQvMyuBFMo9nzQlcqa/+wb3UH
- ygmlpwJrI9ZqY/z1xuLV8Ax//TcCqyP/D0qGjbVxfFYfXl1t6Wr32vj93G16
- /p61L8Jdn0sqzZXyQj6k0fLC1sB1KSq9Gr6RwZqJLMPcGcpShcJX3LVsFfqU
- Lp0gg08YrjtvhNOL87/nPu8LCmR4sNA8f8KNMyttDbLXWNzOYwKTOeRxjWGC
- cA8o0PNt1fVMTDFkulzbb02UGCYrmlvldEbmxu15ftyUjA2pU0hhVLHSEV0+
- cEOGH//n6bQvdm/sAdf/3fX70L9KPYNbdOfsVnvrRWv9JcPjS0tcCdHI4zbm
- spjFZx8PzCW7zuBOHimkczBwl2Fq1IRNEfIODzntwegfJuhzwrRIMbCeVgxa
- P5Jaq5HWqTPwk+O53MlxzpgxRi+jcKoOn/LTwslx2aixKj0rkyZFlM1ismjU
- krXEymwhVZ6JLDaUtfQfP6cNMxNJUxdaYSiOOJ4dGVyyrufk3sX2+QMVyr6I
- e8h3XdHQYxsnvzwKBV0lT41Qtt4e6IDS+ZY/6tHMJde9jmC41pRKtAb9XeFv
- aUBNxnO4u819qe14MduWe4qHA5/0W6+HNGx1KANJ7hend5+hct774Rp/FDbR
- DrnT2+QHcYG8rZTw110eBILcubY38B2xIbXvZgy5faEc6nT4SeifgZt6Gsj6
- kqzXZOsjnq4Wc+9RWCoWSS4Xp0lWf4mivyKZ1r1HFk9Jnx/G4zpuRHjTmMKn
- 5NdaCTOU8XWUl8E3caZJ7wY9pURsnJGFLNEpk67JPCPolAa6nXz3E3K/Yv4E
- nzerS8vvURmSWSVJKBMRq8mISZr+Gfqcpcl6RnaOwGYjZjNYi5K+wHN6b9D6
- PYK/v4OEjQc2Fkhi0UYVSzaW8XAHLMAjWDvIBkgFuBFgKkCNehegFGAlwOMA
- T/4BiHoaCXoHAAA=
+ H4sIAAAAAAAA/7VUUU8bRxD+9mzss2OIsUlCHEJo4yRgSM4maZvWhAShIJ1q
+ 3CqmvPC0+NZk8XkP3Z0ReYn4C33sa39B1aeoDxXqY6X+paqz53MggHClqjrd
+ 7MzOzLffzs7un3//9juAZ1hjeMiV43vSObLaXu/AC4TVl9b6QHU2PUd2pPC/
+ DdNgDPl9fsgtl6s967vdfdGm2QSDGSc6DO/nG5fBDWHqja4XulJZ+4c9q9NX
+ 7VB6KrA2Yq06wl+rL1wNz/DXfyOwMvT/oGRYXx3FZ+Xx1astXu1eHb2f+w3P
+ 37P2Rbjrc0lLc6W8kA9oNL2w2XddikqthG9lsGoiwzB7hrJUofAVdy1bhT6l
+ y3aQxjWGG+23ot2N87/nPu8JCmR4NN84f8L1MzMtDbJXX9jOYRwTWeRwnWGc
+ cA8o0PNt1fFMTDKkO1zb70wUGSbKmlv5tEdmR+15blSXjAypUUh+uGLZER3e
+ d0OGH//n7rQvVm/kAdf+3fX7WL9yLY07dOfsZmtrrbn+muHppUtcCVHP4S5m
+ M5jBvU8b5pJdp/FZDmNIZWHgPsPksAibIuQODzntwegdJug5YVpktAAD62rF
+ IOeR1FqVNKfGwE+OZ7Mnx1lj2hgORv5UHfyl5/mT45JRZRX6lydMiiiZhWTB
+ qCarieWZ/FhpOrLYQFZTf/ycMsx0JE290DJDYUj0bN/gknndLA8u1tDvq1D2
+ RFxIvuuKuu7dOPn1USjoPnlqiLL17kAHFM/X/UmXGi+57jmC4XpDKtHs93aF
+ v6UBNRmvzd1t7kttx5OZltxTPOz7pN95M6Bhq0MZSHKvnT4ADOXz3o93+ZOw
+ 8VbI291NfhAvkLOVEv66y4NAkDvb8vp+W2xI7bsdQ25fWA416oCkPl0ab+uW
+ IOsrst6QrY94qlLIfkB+sVAguVSYIln5JYp+TjKla48MviZ9bhCPG7gZ4U1h
+ ErfIr7UipinjmygvjXqcadK4Qn8xERtnZD5DdEqkazIvCHpMA91Nvv8J2V8x
+ d4LPG5XFpQ8oD8i8IEko4xGriYhJir40vWkpslbJzhLYTMRsGi+jpC/xisYN
+ mn9A8A93kLDxyMa8jQVUbCxiycZjPNkBC2ChuoNMgLEANwNMUuECLAcoBnga
+ 4FmAL/4BKp/c6X8HAAA=
"""
)
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt
index c5faed9..aba348a 100644
--- a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ModifierDeclarationDetectorTest.kt
@@ -47,25 +47,25 @@
private val DensityStub = bytecodeStub(
filename = "Density.kt",
filepath = "androidx/compose/ui/unit",
- checksum = 0xaa534a7a,
+ checksum = 0x3ceb3f57,
"""
package androidx.compose.ui.unit
interface Density
""",
- """
+"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcIlnpiXUpSfmVKhl5yfW5BfnKpX
- mqmXlp8vxOmWn++SWJLoXaLEoMUAAALEmjo+AAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuEST8xLKcrPTKnQS87PLcgvTtUr
+ zdRLy88X4nTLz3dJLEn0LlFi0GIAAHSOuCo+AAAA
""",
"""
androidx/compose/ui/unit/Density.class:
- H4sIAAAAAAAAAIVOTUvDQBB9s7FNjV+pH1Bv4g9w2+LNkyBCoCIoeMlpm6yy
- Tbor3U2pt/4uD9KzP0qcqHdn4M17M/DefH69fwC4xDHhTNly4Uy5koWbvzqv
- ZWNkY02QN9p6E95iECGdqaWStbIv8n4600WIERH6k8qF2lh5p4MqVVBXBDFf
- RuxNLXQIVPFqZVo1ZFaOCCebdS8RA5GIlNnzYLMeiyG1xzHhfPLfP5wBQvKn
- LqrA4tE1i0LfmloTTh8aG8xcPxlvprW+ttYFFYyzvssZ2MJvCRz+YB9HPEds
- 2eHu5ogyxBl6jNhuIcmwg90c5LGH/RzC48Aj/QaMxaG1RAEAAA==
+ H4sIAAAAAAAA/4VOTUvDQBB9s9GmjV+pWqg38Qe4benNkyBCoCIoeMlpm6yy
+ bbor3U2pt/4uD9KzP0qcqHdn4M17M/DefH69fwAYo0c4V7ZcOlOuZeEWr85r
+ WRtZWxPkjbbehLcYREhnaqVkpeyLvJ/OdBFiRITuZO5CZay800GVKqgrglis
+ IvamBjoNgEBz3q9NowbMyiGht920E9EXiUiZPfe3m5EYUHMcES4m/z3FQeyb
+ /KnLeWDx6OploW9NpQlnD7UNZqGfjDfTSl9b64IKxlnf4gzs4LcETn7wGKc8
+ h2y5y93KEWWIM7QzdJAwxV6GfRzkII9DHOUQHqlH9xtDUhD7SQEAAA==
"""
)
@@ -73,7 +73,7 @@
private val MeasurableAndParentDataModifierStub = bytecodeStub(
filename = "Measurable.kt",
filepath = "androidx/compose/ui/layout",
- checksum = 0xd1bf915a,
+ checksum = 0x1c810a26,
"""
package androidx.compose.ui.layout
@@ -90,51 +90,51 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3ApcIlnpiXUpSfmVKhl5yfW5BfnKpX
- mqmXlp8vxOmWn++SWJLoXaLEoMUAAALEmjo+AAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuEST8xLKcrPTKnQS87PLcgvTtUr
+ zdRLy88X4nTLz3dJLEn0LlFi0GIAAHSOuCo+AAAA
""",
"""
androidx/compose/ui/layout/Measurable.class:
- H4sIAAAAAAAAAI1PwU7bQBB9YzuO65Li0AAJvVK1veAEcaInpAopUmirIKFK
- OW2SJdrE2UXedURv+ZYe+hE9oChHPgoxRkhB7aV7eDPz5s3Om/uHP3cATtAi
- vBd6nBs1vk1HZn5jrEwLlWbipylceiGFLXIxzGQVREimYiG4pyfpt+FUjlwV
- PqE2ke67yKV2X4QThMbHT72/hZ8Jhz2TT9KpdMNcKG1TobVxwinD+dciy8ot
- LKv3ZsZlSvNuJ8b8IXPefOGzXSqhQqAZU7eqrNqcjTuEzmq5FXtNL/aS1TL2
- Ij+6bq6Wx16b+o3EOwia1KYf69/B+lcYHgSRnwTl4DHhQ++/zmcTIMQ3L86s
- bbpHM0d41y+0U3PZ1QtlFbNnmwN59NIU+Uieq0wSWs/Sq3+EIdtCgPIRW6wg
- 5LV7XJWxytHD/hPuosnxlNmIVa8G8LuIu3jNiK0Sal28wfYAZJGgPkDFYsfi
- rUXDlnn4CLI2KhoDAgAA
+ H4sIAAAAAAAA/41QwU7bQBB9YxsnMaQ1kNIQrkXApQ6IE5wqISRLgSKQEFJO
+ m2QbbeLsIu86glu+hQMfwQFFOfajqo5RJRBcepl58+bNvpn9/efpGcAhWoRt
+ oQe5UYO7pG8mt8bKpFBJJu5N4ZIzKWyRi14mKyBCPBJTwT09TH72RrLvKvAJ
+ 9aF0FyKX2p0IJwiN3b3Oe+Ex4VvH5MNkJF0vF0rbRGhtnHDKMD4vsqx0Ydlq
+ Z2xcpjR7OzHgB5nzJlOf16Uy1MoAAo2Zv1Nl1WY02Cfsz2crkdf0Ii+ezyKv
+ 6ld/NeezA69Nl43YawVNatPN4jFYPIRhK6j6cVAOHhB2Ov/1B7wJG0e3b26t
+ v3a/jx1h67LQTk1kqqfKKmZ/vF7Jo1emyPvyVGWSsPlPev1BGPJaCPByJ6+4
+ hJBtv3JV5gpnD82XuIFNzkfMVllV68JPEaVYTrGCOkN8SvEZcRdksYq1LpYs
+ 1i0aFl9sicO/4SGINQgCAAA=
""",
"""
androidx/compose/ui/layout/ParentDataModifier$DefaultImpls.class:
- H4sIAAAAAAAAAKVSW08TQRT+pqW01FZKtSii9UKVXoSVxCf7ZECTTdpKxPTF
- p+nuUKbdnSGzsw3+Kx+JD8Znf5TxbGkQK0GJm+y5f9/MnHO+//jyFcBLOAyv
- uPKNlv6J4+nwWEfCiaUT8E86ts4+N0LZPW55V/vyUApT2xOHPA6sGx4HURaM
- oTTiE04ANXTeDUbCs1mkGRbskVAMYb1zLfr2peXn2cbVaYaNjjZDZyTswHCp
- IocrpS23UpPd07YXB0F7ejkZ5ZBjqI61DaRyRpPQkcoKo3jguMoaAkuPHphn
- qHhHwhvP0HRlHgoqZNisd+af3r4QOUhIhu1Gv4ACinncwE2GjKa+mBxKDLWr
- nlJ7E4iQepNFmWHnXyrnBnObwb+89/PA/2t5ARms5lHBHQbnmrOm9v9tniud
- 2YC6wnKfwBRLhZM0LS9LRIaBjRODVi51IhPrBcPWte6RxQZD4WL7GIpdwaPY
- 8EEgtseWNmZX+4JhuSOV6MXhQJgPSY6h3NEeD/rcyMSfBdffx8rKULhqIiNJ
- ode/1pAGP58936nfygquUsLsBjyKBLn5Ax0bT7yVyQFrM4r+H/TYQQoLSD6G
- JRrOItLYJK9L8RTpSrO8dIrlVnmFZPMbbrVOcfczJVKok8yTLoD2h8AN8lfP
- QMhhbUpaQQn3iLpJ9iLpLOkW/cXUzDmTaTyfktFUUMNTAm9Nj3iGbdJViq9T
- zf2PSLt44KJKEg9dPMJjF09+As+nXNieBAAA
+ H4sIAAAAAAAA/6VSTU8TQRh+ZgvdthZKq6AI4gdVWhAWjCc5GVCzSVuNGC6e
+ ptuhnXZ3hszONvivPBIPxrM/yvguNIiVoI2Hfb+fZ+f9+P7jy1cAz/GM4QVX
+ HaNl58QLdHSsY+El0gv5J51Y7x03Qtl9bnlTd+SRFKa6L454Elo/Og5jF4xh
+ rs+HnACq671t90VgXWQYpmxPKIao1piIfvfK8ots/fo0w2pDm67XF7ZtuFSx
+ x5XSllupyW5p20rCkKqmNb3O5JBjWBloG0rl9YeRJ5UVRvHQ85U1hJYBdVhg
+ mA96IhiM4PRmHgkqZFirNcZ7370UOUhJurv1wyKKmCngBmYZqtc1UH0Viogm
+ 4mKOYedfKsfWUWHoXD3xceD/DbqIadwq4CbmaZhV25Mxgzfhpmn2f9tmuTHa
+ TlNY3iEwxZxomKHTZanIpwIMbJAadHXOiUytbYbl66hdrDK4o0kwFC8PkWFz
+ oj5crDHMNAWPE8PbodgaEOPUnu4IhlJDKtFKorYwH9IcQ6WhAx4eciNTfxRc
+ ep8oKyPhq6GMJYVe/rpaupjx7MUF/lZW9JUSZi/kcSzILRzoxATitUx/sDii
+ OPyDHjtwMIXzMeZpq1lksE7eG4o7pEsblfwpSuvfUN44xcJnCjnYIFkgnYWL
+ WYI9JX/hvBy3ceeMroQcFol0k+wsaZf0Fn0zzsg5lxl4JO+SLqOKx9k8HVUZ
+ TwjqoHamt89+WaeXAiuESmuXPiLjY9nHPZ9i9308wEMfj34CPA2YO9cEAAA=
""",
"""
androidx/compose/ui/layout/ParentDataModifier.class:
- H4sIAAAAAAAAAJVRTW/TQBB963w4mARSKJC0fLWNqoIEDhEnqh4QAdUogQok
- Ljlt4k21ib0beddRc8vv4oBy5kchxgHUkgYQh52d9/xmdjzv67fPXwA8xx7D
- E67CRMvwzB/oeKKN8FPpR3ymU+uf8EQo2+aWd3Uoh1IkLhhDdcSnnDTq1H/f
- H4mBdZFjaKxr9Kuu8ToSMfVyUaD6OGNn590Zjg8668pTJa3fFspIOzvsrD57
- +OgyRXN0dHLqj4TtJ1wq43OltOVWasrfpVHE+5Eg2d7fZNpmSlJtdMbaRlL5
- XWF5SKMS58TTHG2PZYH+ho2JOpMZalIWPmM4Wsw3PafmLM9i7jnVLCzz0rC2
- mLecJntbqzpb+Rpr5h47zXyrVC38QMf7WZMWg792I390hgbbX1uxagEJwbD7
- 730zeJMLFr34r3EabTHkaWSDeBIZF1sM5YsMQ6UruEmTzI2nY8uw/SFVVsYi
- UFNpJLEvzw0hU1e/0os8FlYkv8nKgVIieRVxYwRB76NOk4F4IyPBUP/Z4tOl
- 9kXaOPK0lGJma57BRYmY+4SKxF6h+wGdikPAyyRLKoeHFD1C2yS+izp2CDu4
- h126j4i/igLKPeQCVAJco4jrWagG2MCNHpjBTWz2UDS4ZXDbwDW4Y1AzqH8H
- FbjiFqEDAAA=
+ H4sIAAAAAAAA/5VS328SQRD+9oA7QNCrVoW2/moRfyR6SHyy6YMRTc9ANZr4
+ wtMCS7Nwt0du90h54+/ywfDsH2Wcw5pWijU+7OzMd998Mzez3398/QbgJR4x
+ PONqEEdycOL1o3ASaeEl0gv4LEqM95HHQpkWN7wTDeRQitgBY3BHfMqJo469
+ D72R6BsHGYbaOqHfebW3gQhJy0GO8sMUnZ2pMxw+bq9LT5Q0XksoLc1sv71a
+ dv/JRYj6aEfxsTcSphdzqbTHlYoMNzIi/ygJAt4LBNH2LqNFJmUSa6M9jkwg
+ ldcRhg+oVcKscJqh6bHUFFIDBjYm/ESmUYO8wQuGg8V8s2hVrOVZzIuWm5ql
+ nx9WFvOm1WDvK661la2wRuap1cg2827uV3RYT0WaDN7asfx1PdRdfW3G6h6I
+ SF3v/nvoDMXJuT3tXCbuYJvBOa3A8Oq/Wq+1xJAngfHDSaAd3GUonUcYyh3B
+ dRKn63s+JvntT4kyMhS+mkotCX19tkF6BatfqSIPhRHxH7SSr5SI3wRca0Fh
+ 8XOUxH3xTgaCoXoq8eWCvE3bQZYGaKfLz9JPI0/ILkU2oQW69+iULQqKy/eR
+ QhnUyF4noo0d3LELuEf+fVTxkHALD1Cn+4DYV5BDqYuMj7KPqz6uwSUXGz5l
+ 3+iCaWziZhe2xi2N2xqORkWjqrH1E3XfjsnaAwAA
"""
)
@@ -680,7 +680,7 @@
val inlineAndValueClassStub = bytecodeStub(
filename = "InlineAndValueClassStub.kt",
filepath = "androidx/compose/ui/foo",
- checksum = 0x16c1f1c4,
+ checksum = 0x402f4998,
"""
package androidx.compose.ui.foo
@@ -701,111 +701,110 @@
return this.then(TestModifier)
}
""",
- """
+ """
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGI2BijgsuEST8xLKcrPTKnQS87PLcgvTtUr
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuEST8xLKcrPTKnQS87PLcgvTtUr
zdRLy88XkvTMy8nMS3XMSwlLzClNdc5JLC4OLilN8i4RYgtJLS7xLlFi0GIA
- APJuU+dWAAAA
+ AA4XavBWAAAA
""",
"""
androidx/compose/ui/foo/Inline.class:
- H4sIAAAAAAAAAIVU3VMbVRT/3ZuvzbLAkvIVrJVCLQkfDdBqVVpaQGKDoShU
- LMWvJVlgIdnF7IbhkfFF/wIffPSZ6eiMAmNHB+mbf5PjeO7dDWDI1Jlk7z3n
- no/f+Z1z71///PYHgDvYZLhm2MWKYxX3MgWnvOO4ZqZqZdYdJ5OzS5ZtxsAY
- 9C1j18iUDHsjs7C2ZRa8GEIMyobpLRulqskQSqWzDJFdX2JZDTEocXDEGcLe
- puUy9OZfnWiCodlzlryKZW+MWOWdEkNHKpvOn6f2z8iuq143XbVKRbMSQytD
- 9J5lW96kxLSsoQ0JFTquUHQ/T0qCvK+gg2yNnR3TLjKMpC7nuZw6SDOhoQvd
- ImqS4WojjBcNXxOGV4XhzKsNrwnDN4jWGgsM7akG9Wu4jj5h20/cGpWNUQ3N
- aFGJ7JtU5Kbhbs44RTOgMEzwcgyt51GyJceg/g1SopqthmGkVQxhRLKW05AS
- MscoQ5P5ddUouUG4zlQ2Xz8LE+lnDGrVXnP2pJVGcxUV3m8xxCTZC+uilP/w
- JFFQKXfxjkj8Ls3htuNRfzJbu+WMZXtmxTZKNBqiZtcquDFQ4xWjYs4KPAwD
- qctAGkHTcB+TKu7hAc2n422aFYbEZUOaBb9QMXWN44zjtqhq1id1WUVYTJVe
- cGzXq1QLnlO5wDndBqVGCEO/KP5/xl+M6gciwTxdoF0G7QLx1IdIKpsVRPOd
- MfEZp17kLzA2t1s+u0ZttYN50zOKhmeQjpd3Q3TjmfhExQeUZZv0e5aQKAEv
- UuDfT/YHVd7NVa6f7Kv043pM5UqE1iZaw7QqtIZobaGVK6ffPuw+2R/no2w6
- kYjqvIePhl4es5P90x+jYSWsR+Z6dIWU8XFFV3vC3WyUPXr5fUieNunanK43
- 02kL6ZjUteo66dpIlzjTXdHbF9v80CQrBKsnrET12Ol3jPu5vuGETEmKIogY
- Kq3HJ2PKLsoHaqZkuO6SV127te1Rf8TM053Ik8XjannNrDwx1kqmmAunYJSW
- jYol5EDZvOQZhe15YyeQ1SWnWimYWUsIycWq7Vllc9lyLTqdsm3HMzyLRgJj
- 1Mqw5DkhHkPaiQ5HECXNGkkZ0QFaI4O/QH1OG46CaI5URlGUDtIATbQD4uKa
- B853yVqcJV9AXzlCe6LzED19h3hdTx+i9xA3fpKZz4Mk8abEwMTjEQS5GSBQ
- BIJjDNT7KGeJ6TkIfPprqPuOceugziFylmRYltcgyVi9z3kSul+Bz1OqTkxl
- /9Cf4D8gEjoYOgE/xNuzlPW9G/Q/xkOpDx9I4kz6xsDjf6OLy9idpBRgfTxi
- N4VpiWQG7wdZRIOEVVwgGzpG9hya7x4PoImddNe5uKOB+2Tgrg4e4dFg/69Q
- f27YRD+WehZLldPAKGYOc0Gs3oAk3ve8jh7uz46exIfIB9YDRI44i78AX+k7
- wuP6xsWxIJ3axEtc37jauLEGI5bER/g4cLgT1KcJzvt9zusZ0rAYEKxhSVbF
- sS5RG9ig1abdE1o/oQzLqwjl8GkOT3NYwTPaYjWHz/D5KpiLL/DlKjpcaC6+
- chGT35yLORcRF1EXM1Iz5WLcxW0Xw1JMuUi7uC73zS5a/gWm4bi81wgAAA==
+ H4sIAAAAAAAA/4VU3VMbVRT/3ZuvzbKEhQKF2FYaapvw0QBVq1KQjzY2GFqF
+ GqX4tUlWWEh2Y3bD8Mib/gXO2EdffJDp6IwCY2ccxDf/Jsfx3JsNYQJTZ3bu
+ vefcc87vnN85d//+9/c/ALyOAsM1wy7VHKu0my46larjmum6lf7KcdJZu2zZ
+ ZgSMQd8ydox02bA30o8LW2bRiyDAoGyYXt4o102GQDKVYQjtNCSW0RCBEgVH
+ lCHobVouw1Du5UDTDJ2es+rVLHtj3KpUywx9yUwq14Ju3JHd5XbdQt0ql8xa
+ BF0M4XuWbXmzMqe8hm70qNBxiaI3cJIyyRkFfWRrVKumXWIYT57HOQ/tw0xr
+ uIwBEXWQ4cpFOZ41fEUYXhGGiy83vCYMXyVamyww9CYvqF/DdSSE7TBxa9Q2
+ JjR0IqYS2TepyE3D3Vx0SqZPYZDSyzJ0taJkyo5B/RshoKathjGkVIxiXLKW
+ 1ZAUMscEQ4f5dd0ou364/mQm1z4L06mnDGrdLji70kqjuQoL7zcYIqLVRo1m
+ IpTMZETku3hLIL1NGsfbNGsMPecjUmcasGIGLgLUMIU7AuPdRol5FUHRY73o
+ 2K5Xqxc9p3aGAZpNpZkew7Bo2f8MoxiceQHwHo3zDoN2hoYJvxoqm1cnxTJF
+ zOS2HY9c01s7lfTSTuV0qLubF8umZ5QMzyAdr+wE6P0xsUTFAkLZJv2uJSQC
+ 4CUK/NPx3ojKB7jK9eM9lT6uR1SuhGjvoD1Iu0J7gPYY7Vw5+WZu4Hhvik+w
+ ha6esM7jfCJw8kM4qAT10FJcV0iOTim6Gg8OsAn28K/vGrcdurak6510GyMd
+ k7ouXSddN+l6TnWX9N6V7tOoCmUUDyphPXLyLeMiZaKBCok3Sp+3S/LnsFg2
+ XHfVqxdub3vUDTFvNI85snhUrxTM2hOjUDbFFDhFo5w3apaQfWXnqmcUt5eN
+ qi+rq069VjQzlhAGV+q2Z1XMvOVadDtv245neBYNACapcUHJao/4EdFJ9DOE
+ MGk+JSkt+KY9NPIr1Od04PiM1rBUhvG5dJAG6KATNUk8Md/5LlmLu8EX0NcO
+ 0dvTf4B44gBX9dQBhg5w42eJ3AoyiNdkDkw8XD/ITT8DRWRwhFvtPsopMD1F
+ 32e4mXXiCLf32xxCpyBjsrwLQCbbfVog9Jp8nxWqTszg1dE/wZ8hFNgfPQY/
+ wJsPEjeO8M73QhPcl5R9QWsEPPoPurmM2k9K8vQzEadp3JM5zGDWjy9aI6yi
+ IqfRI8y1kmq4R/2kxEm661y8Rd991ndXRw6xMDL8G9RfLmxfI5Z6GkuVc8Ao
+ 5iLu+7GGfHp44nkbMbwxNfogHiDjW98iWsRd9AX4WuIQD9tbFkVWOnWL/197
+ y5qDxi4YrkEs4X3fYd6vL5YYJrafIRL8EcFAi+8QuDZ3lq4Ycj7bMSzLEjm+
+ lObrMGi36fSI9sfk+sE6All8mMVKFqt4Qkd8lEUeH6+DufgEa+voc6G5eOoi
+ ItdFF/ddhFyEXcxIzbSLKRd3XIxJMeki5eK6PHe6iP0HcneOKFoIAAA=
""",
"""
androidx/compose/ui/foo/InlineAndValueClassStubKt.class:
- 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
+ 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
""",
"""
androidx/compose/ui/foo/TestModifier.class:
- H4sIAAAAAAAAAKVUW0/UQBg9Mwu7pRa5eOGmeGFFLkqB+AaSIGLSZFmNkE0M
- T7PbAQfaDmmnhEfiT/EXSHzAaGI2+uaPMn4tCwlykcSH+W5zzrffnJnur99f
- vwN4hmmGsoj8WCt/z23ocEcn0k2Vu6G1uyYTs6J9taFkXAJj6N4Su8INRLTp
- vq5vyYYpoXAB/5hXXg5kKCNCtjMU51WkzAJDYWy85qAEy0YbOhjazHuVMIxW
- rjLKXI6XEcPC2LmEE+D45dsMIxUdb7pb0tRjoaLEFVGkjTBKU1zVppoGAaFm
- rnLA8ku5IdLAeOFOkJTQzeBfPt0xce6/zuCgE702enCDoV2TLDHD8L+Obc03
- gvwmbPBMfsurrq4tVpeWHQzA6aDiIENPZVsbgrkr0ghfGEFEHu4W6NmwzBQz
- Awa2TfU9lWX0mLg/Q7I2922b9/N8Nfetnx94f3N/lk+zFyWL//hY5N08g85e
- dOVnNGIY9CIaRi5Gfk0EqVwKRJKsmrQ+tW0Yht6mkVGh9KJdlah6QLCTi6TX
- sqR9ydBVIX41DesyXhOEYeit6IYIaiJWWd4qlv/u9UbEIpRGxqea2qs6jRvy
- lco4Ay1O7cyvY5rUbCOZirQGMnnJj2fyke8iX6B9+hAom6DMzQQl3z5xCPuA
- Ao7JFhi4hidknSMAZU6ufyeuU5OM/JzQnHzHRBPFyS+4+encBrePQK0GWXSL
- aqenekqrxFqJhb6TAftyMrX6Bv7uEP2fMXSQFzimcjtGZ8j+WBju0JB311Hw
- MOzhnof7eEAhHnoYQXkdLMEjjNJ+AifB4wTWH5GWtQCVBAAA
+ H4sIAAAAAAAA/6VUW0/UQBT+pgvbbi1y8cJN8cKKXJQC6osQEkRImiyrEbKJ
+ 4Wl2O+BA2yHtlPBI/Cn+AokPGE0M0Td/lPG0LETkIokPM3Mu33dybu3PX1++
+ AXiKZwxlHvmxkv6O21DhlkqEm0p3TSl3RSR6SflyTYrYBGPo2ODb3A14tO6+
+ qm+IhjZROId/xCsvBCIUESFbGYozMpJ6lqEwPFJzYMKy0YISQ4t+JxOGocpl
+ UpnO8SJimB0+k3AMHLnYzTBYUfG6uyF0PeYySlweRUpzLRXJVaWraRAQavIy
+ BZZfijWeBtoLt4LERAeDf3F2R8Tp/6rBQRu6bHTiGkOrorbEDAP/KtuaaQT5
+ JGwYWfstr7q8MledX3DQC6dExj6Gzsqm0gRzl4TmPteciEa4XaC1YdlVyi4w
+ sE2y78hMmyDJn6S2HuzattFj5Odg1/rx3ug52J0yJtgL0zK+fygaHUYGnTpv
+ 5Kd6xHDrIpyJYQazCWZw/pwFQ58XUR1iLvJrPEjFfMCTZFmn9fFNwva/SSMt
+ Q+FF2zKR9YBgxztAizavfMHQXiF+NQ3rIl7hhGHoqqgGD2o8lpneNJb/jvWa
+ xzwUWsQngjpeFIk4T0OQai+rNG6IRZmF6G2GqJ1KBhM0lxZqeJFObzYoeh9T
+ 1zO9nd4C+emTIm2cNDcbDb2to/uw90gwyHQIBq5QMOQBCECak0+yDVcpSEZ+
+ TmgjQ4+Ofcb1j2eybx4imuxMukG2kylN0jFZU7HQfZxdd06mUF9hvN1Hzyf0
+ 7+WGAqbo7iJ3ESMYLZZotYsYo3Kf5Fk8on9W9t+ihaDMb6+i4GHAwx0Pd3GP
+ RNz3MIjyKliCBxgifwInwcME1m+TOp2p9AQAAA==
""",
"""
androidx/compose/ui/foo/Value.class:
- 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
+ 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
"""
)
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/MultipleAwaitPointerEventScopesDetectorTest.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/MultipleAwaitPointerEventScopesDetectorTest.kt
index 76d37c1..9112ac4 100644
--- a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/MultipleAwaitPointerEventScopesDetectorTest.kt
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/MultipleAwaitPointerEventScopesDetectorTest.kt
@@ -43,7 +43,7 @@
private val ForEachGestureStub: TestFile = bytecodeStub(
filename = "ForEachGesture.kt",
filepath = "androidx/compose/foundation/gestures",
- checksum = 0xf41a4b04,
+ checksum = 0x1be9b2ef,
"""
package androidx.compose.foundation.gestures
import androidx.compose.ui.input.pointer.PointerInputScope
@@ -52,37 +52,35 @@
block()
}
""",
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2VMQQoCMRAbUQR7EOkDBMWThzl7F1dkL4J+oGzr7oDOlHYK
+ Pt/KejOQEBISAJgCwKRyAT+Yg9k59knIv7GTV5Qc8CGFvVMSxj5kLSlku2ok
+ nVw3nMegVXM0m79lISSORTEKsYZk17eSY2BP3F/H6PLtG3pWW0+WZqb10c7v
+ VVvdwh4+IfeLY6cAAAA=
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
- tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
- Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
- 63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
- """,
+ androidx/compose/foundation/gestures/ForEachGestureKt.class:
+ H4sIAAAAAAAA/7VUzU8bRxT/zdr4C0jMBlIgjUOK2/ARsoaGNq2jqBEx7aqO
+ QTGkqjhU4/XiDLZnrN1Zi944Veq/0UPPUU9tDxXKsX9U1Te2IYBpkCL1sLO/
+ 9zHv/d57M/P3P3/+BeAhigzrXNYDJeqHjqfaHRX6zr6KZJ1roaTT8EMdBX7o
+ bKqgxL1XX/flb3USjCF7wLvcaXHZcLZqB75H2hjDtf1zvgw/L5SHckTCEbIT
+ aaejhNR+4Gz3/65RVj3V8YvlptItIZ2DbtvZj6RnCBGRAVo7tXsqUJEWklhu
+ KEkg6nEvLpYv0isyNvW/cHm88l5RV64o4fGpw64UuvikuDxc0pOr+jAU5LK+
+ IF9WQcM58HUt4IJK41IqzftlVqJWi9daPrnNv8tNaeNJXrl3dyuJDENCyK5q
+ 0ul4tDDMZ1hzCekxjGF8FKO4xrA43ANqdkAUhRc67ik0BzfLcLPh642tF1u7
+ O26l9EN1t7pdqjwrPWOYXLg0kY0bGUxgkmH0TC+TuMmQcivVnaeVjRLD+LlG
+ j2EaM2l8gFkKm9evRJi/eDHW3+vUMIzUWsprMsxddUWIb95EbvlGPrPhv+4M
+ w8SJy3Nfc3oFOOmsdjdGzwUzS9osYGBNAywyHgqDCoTqqwz7x0e5zPFRxspa
+ GWva6sHpPrSyA+H4aLZIeNYqsCWrYK3dy8Zm51PMjtsk2Rk71UOsMGIn7Pg0
+ KyQK8Te/JKxU8ps3P31lUDZlsq0xQ8Q+IXy27NyJsnSofZq8kifWnR97LZw4
+ /6A9aGqG+Iaq01TGq5p7zee8s2MOPcP1MvWpErVrfjDQ2GXl8dZLHggjD5Tp
+ qmhI3h/srRcRNbXtu7IrQkHmp2/vCd21i9ZtHvC2T1M+55apqijw/E1hos8M
+ 9rwciodVWIijP5UZjCBB0hpJHmIwk5laXrr/B67H8P3vmPoV8dff/YZbr8kQ
+ w6e0JsC2k7TlIeEMhTKaSSSxTmiuHwAf4nYvwRRyuENpDJrDXfL+zBwC8v68
+ Hwkp+j+i70aMhHSP09vVwhe9dRVf0n+TtB8R3/k9xFzkXXzs4hPcc7GARRdL
+ WN4DC3EfK3tIhxgJ8SDE7RC5EE6Iuz2xECLxLyV8urHMBgAA
"""
- androidx/compose/foundation/gestures/ForEachGestureKt.class:
- H4sIAAAAAAAAALVVz08bRxT+Zm1ss0BiNpACaRwS3IYfIWtoadM6Qo2ISVZ1
- DIohVcWhGq8XZ7C9Y+3OWuSGcqjUf6OHnqOe0h4qRG/9o6q+sQ0BTIIUqZY8
- 870337z55s2b2X/+/fMvAF/iW4YV7lcDKar7tiubLRl69q6M/CpXQvp2zQtV
- FHihvS6DAndfPuna36skGEN6j7e53eB+zd6o7HkueWMMV3bPcBl+mS32rREJ
- W/itSNktKXzlBfZmt3e0s+zKlpcv1qVqCN/eazft3ch3tSAS0kPLJ+OuDGSk
- hE8q16RPIOpoz88Vz8vLMzb+v2h5uPhRURcv2cLDE8K2L1R+Nb/Qv6XVy/LQ
- F+SivCBblEHN3vNUJeCCtsZ9Xyre3WYpajR4peERbeZDNKk0k1iZD2crCZMh
- Ify2rFN1PJjt19PvuUD0MIYxMoQhXGGY688BJTsgicINbecE6sJNM1yveWpt
- 4/nG9pZTKvxU3i5vFkqPC48ZxmYvXMjCNROjGGMYOpXLJK4zpJxSeetRaa3A
- MHIm0cOYwOQgPsEUhc2qlyLMnr8YKx9VNQwDlYZ06wzTl10R0pvVkRuetk9N
- eN+dYRg9pjzzFKdXgJPPaLZj9Fww3SQZWF0Dg/z7QqMcoeoSQ3h4kDEPD0wj
- bZjGhNGBE11opHvG4cHUKuEpI8fmjZyxfDcdm5pJMStukWWZVqqDWG7ASljx
- CZZL5OJHvyaMVPLp0c/f/f2WHR5oM506em3ETSM1qZdeZqQN1rHw09vPHDsL
- +8qjCpD+8ejWq04qR88+bPfriiG+Jqt0OiNlxd36M97a0sXPcLVI+SpFzYoX
- 9DxWUbq88YIHQts952BZ1HzePeAbzyNKbtNz/LYIBQ0/endf6M6dH93kAW96
- dNpnaGZZRoHrrQsdfbI350VfPCzBQBz6RzQMIEHWElkuYtDHNL4wf+8PXI3h
- x7cY/w3xNz/8jhtvaCCGZWoTYJtJmvIFYZNCac8YkvSRAKa7AfApbnYWGEcG
- t2gZjaZxm9gruiKI/VU3ElLUf03/azEyBjua3rUGHnTaHL6hfp28d0jvzA5i
- DrIOPqMWnzu4i1kHc5jfAQuxgHs7GAwxEGIxxM0QmRD3Q9zumHaIxH8TzBqW
- 1AYAAA==
- """
-
)
private val stubs = arrayOf(
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetectorTest.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetectorTest.kt
index faac842..1ee146d 100644
--- a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetectorTest.kt
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/ReturnFromAwaitPointerEventScopeDetectorTest.kt
@@ -36,7 +36,7 @@
private val ForEachGestureStub: TestFile = bytecodeStub(
filename = "ForEachGesture.kt",
filepath = "androidx/compose/foundation/gestures",
- checksum = 0xf41a4b04,
+ checksum = 0x1be9b2ef,
"""
package androidx.compose.foundation.gestures
import androidx.compose.ui.input.pointer.PointerInputScope
@@ -45,37 +45,35 @@
block()
}
""",
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2VMQQoCMRAbUQR7EOkDBMWThzl7F1dkL4J+oGzr7oDOlHYK
+ Pt/KejOQEBISAJgCwKRyAT+Yg9k59knIv7GTV5Qc8CGFvVMSxj5kLSlku2ok
+ nVw3nMegVXM0m79lISSORTEKsYZk17eSY2BP3F/H6PLtG3pWW0+WZqb10c7v
+ VVvdwh4+IfeLY6cAAAA=
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
- tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
- Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
- 63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
- """,
+ androidx/compose/foundation/gestures/ForEachGestureKt.class:
+ H4sIAAAAAAAA/7VUzU8bRxT/zdr4C0jMBlIgjUOK2/ARsoaGNq2jqBEx7aqO
+ QTGkqjhU4/XiDLZnrN1Zi944Veq/0UPPUU9tDxXKsX9U1Te2IYBpkCL1sLO/
+ 9zHv/d57M/P3P3/+BeAhigzrXNYDJeqHjqfaHRX6zr6KZJ1roaTT8EMdBX7o
+ bKqgxL1XX/flb3USjCF7wLvcaXHZcLZqB75H2hjDtf1zvgw/L5SHckTCEbIT
+ aaejhNR+4Gz3/65RVj3V8YvlptItIZ2DbtvZj6RnCBGRAVo7tXsqUJEWklhu
+ KEkg6nEvLpYv0isyNvW/cHm88l5RV64o4fGpw64UuvikuDxc0pOr+jAU5LK+
+ IF9WQcM58HUt4IJK41IqzftlVqJWi9daPrnNv8tNaeNJXrl3dyuJDENCyK5q
+ 0ul4tDDMZ1hzCekxjGF8FKO4xrA43ANqdkAUhRc67ik0BzfLcLPh642tF1u7
+ O26l9EN1t7pdqjwrPWOYXLg0kY0bGUxgkmH0TC+TuMmQcivVnaeVjRLD+LlG
+ j2EaM2l8gFkKm9evRJi/eDHW3+vUMIzUWsprMsxddUWIb95EbvlGPrPhv+4M
+ w8SJy3Nfc3oFOOmsdjdGzwUzS9osYGBNAywyHgqDCoTqqwz7x0e5zPFRxspa
+ GWva6sHpPrSyA+H4aLZIeNYqsCWrYK3dy8Zm51PMjtsk2Rk71UOsMGIn7Pg0
+ KyQK8Te/JKxU8ps3P31lUDZlsq0xQ8Q+IXy27NyJsnSofZq8kifWnR97LZw4
+ /6A9aGqG+Iaq01TGq5p7zee8s2MOPcP1MvWpErVrfjDQ2GXl8dZLHggjD5Tp
+ qmhI3h/srRcRNbXtu7IrQkHmp2/vCd21i9ZtHvC2T1M+55apqijw/E1hos8M
+ 9rwciodVWIijP5UZjCBB0hpJHmIwk5laXrr/B67H8P3vmPoV8dff/YZbr8kQ
+ w6e0JsC2k7TlIeEMhTKaSSSxTmiuHwAf4nYvwRRyuENpDJrDXfL+zBwC8v68
+ Hwkp+j+i70aMhHSP09vVwhe9dRVf0n+TtB8R3/k9xFzkXXzs4hPcc7GARRdL
+ WN4DC3EfK3tIhxgJ8SDE7RC5EE6Iuz2xECLxLyV8urHMBgAA
"""
- androidx/compose/foundation/gestures/ForEachGestureKt.class:
- H4sIAAAAAAAAALVVz08bRxT+Zm1ss0BiNpACaRwS3IYfIWtoadM6Qo2ISVZ1
- DIohVcWhGq8XZ7C9Y+3OWuSGcqjUf6OHnqOe0h4qRG/9o6q+sQ0BTIIUqZY8
- 870337z55s2b2X/+/fMvAF/iW4YV7lcDKar7tiubLRl69q6M/CpXQvp2zQtV
- FHihvS6DAndfPuna36skGEN6j7e53eB+zd6o7HkueWMMV3bPcBl+mS32rREJ
- W/itSNktKXzlBfZmt3e0s+zKlpcv1qVqCN/eazft3ch3tSAS0kPLJ+OuDGSk
- hE8q16RPIOpoz88Vz8vLMzb+v2h5uPhRURcv2cLDE8K2L1R+Nb/Qv6XVy/LQ
- F+SivCBblEHN3vNUJeCCtsZ9Xyre3WYpajR4peERbeZDNKk0k1iZD2crCZMh
- Ify2rFN1PJjt19PvuUD0MIYxMoQhXGGY688BJTsgicINbecE6sJNM1yveWpt
- 4/nG9pZTKvxU3i5vFkqPC48ZxmYvXMjCNROjGGMYOpXLJK4zpJxSeetRaa3A
- MHIm0cOYwOQgPsEUhc2qlyLMnr8YKx9VNQwDlYZ06wzTl10R0pvVkRuetk9N
- eN+dYRg9pjzzFKdXgJPPaLZj9Fww3SQZWF0Dg/z7QqMcoeoSQ3h4kDEPD0wj
- bZjGhNGBE11opHvG4cHUKuEpI8fmjZyxfDcdm5pJMStukWWZVqqDWG7ASljx
- CZZL5OJHvyaMVPLp0c/f/f2WHR5oM506em3ETSM1qZdeZqQN1rHw09vPHDsL
- +8qjCpD+8ejWq04qR88+bPfriiG+Jqt0OiNlxd36M97a0sXPcLVI+SpFzYoX
- 9DxWUbq88YIHQts952BZ1HzePeAbzyNKbtNz/LYIBQ0/endf6M6dH93kAW96
- dNpnaGZZRoHrrQsdfbI350VfPCzBQBz6RzQMIEHWElkuYtDHNL4wf+8PXI3h
- x7cY/w3xNz/8jhtvaCCGZWoTYJtJmvIFYZNCac8YkvSRAKa7AfApbnYWGEcG
- t2gZjaZxm9gruiKI/VU3ElLUf03/azEyBjua3rUGHnTaHL6hfp28d0jvzA5i
- DrIOPqMWnzu4i1kHc5jfAQuxgHs7GAwxEGIxxM0QmRD3Q9zumHaIxH8TzBqW
- 1AYAAA==
- """
-
)
private val stubs = arrayOf(
diff --git a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/UiStubs.kt b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/UiStubs.kt
index eef686d..4618e50 100644
--- a/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/UiStubs.kt
+++ b/compose/ui/ui-lint/src/test/java/androidx/compose/ui/lint/UiStubs.kt
@@ -24,34 +24,34 @@
val Density: TestFile = bytecodeStub(
filename = "Density.kt",
filepath = "androidx/compose/ui/unit",
- checksum = 0x8c5922ca,
+ checksum = 0xcc05f7d8,
"""
package androidx.compose.ui.unit
interface Density
""",
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2VMQQoCMRAbUQR7EOkDBMWThzl7F1dkL4J+oGzr7oDOlHYK
+ Pt/KejOQEBISAJgCwKRyAT+Yg9k59knIv7GTV5Qc8CGFvVMSxj5kLSlku2ok
+ nVw3nMegVXM0m79lISSORTEKsYZk17eSY2BP3F/H6PLtG3pWW0+WZqb10c7v
+ VVvdwh4+IfeLY6cAAAA=
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
- tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
- Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
- 63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
- """,
+ androidx/compose/ui/unit/Density.class:
+ H4sIAAAAAAAA/4VOTUvDQBB9s9GmjV+pWqg38Qe4benNkyBCoCIoeMlpm6yy
+ bbor3U2pt/4uD9KzP0qcqHdn4M17M/DefH69fwAYo0c4V7ZcOlOuZeEWr85r
+ WRtZWxPkjbbehLcYREhnaqVkpeyLvJ/OdBFiRITuZO5CZay800GVKqgrglis
+ IvamBjoNgEBz3q9NowbMyiGht920E9EXiUiZPfe3m5EYUHMcES4m/z3FQeyb
+ /KnLeWDx6OploW9NpQlnD7UNZqGfjDfTSl9b64IKxlnf4gzs4LcETn7wGKc8
+ h2y5y93KEWWIM7QzdJAwxV6GfRzkII9DHOUQHqlH9xtDUhD7SQEAAA==
"""
- androidx/compose/ui/unit/Density.class:
- H4sIAAAAAAAAAIVOTUvDQBB9s9Gmxq/UD6g38Qe4benNkyBCoCIoeMlpm6wy
- Tbor3U2pt/4uD9KzP0rcqHdn4M17M/DefH69fwAY44Rwrky5sFyuZGHnr9Zp
- 2bBsDHt5o41j/xaDCOlMLZWslXmR99OZLnyMiNCbVNbXbOSd9qpUXl0RxHwZ
- BW9qISZQFVYrbtUgsHJION2su4noi0SkgT33N+uRGFB7HBEuJv/9EzJASP7U
- ZeWDeLTNotC3XGvC2UNjPM/1Ezue1vraGOuVZ2tcJ2RgC78lcPSDPRyHOQyW
- 26E7OaIMcYZuQOy0kGTYxV4OctjHQQ7hcOiQfgOBbqTCRAEAAA==
- """
)
val PointerEvent: TestFile = bytecodeStub(
filename = "PointerEvent.kt",
filepath = "androidx/compose/ui/input/pointer",
- checksum = 0xbe2705da,
+ checksum = 0x7fd06e9b,
"""
package androidx.compose.ui.input.pointer
@@ -65,60 +65,60 @@
val id: PointerId
)
""",
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2VMQQoCMRAbUQR7EOkDBMWThzl7F1dkL4J+oGzr7oDOlHYK
+ Pt/KejOQEBISAJgCwKRyAT+Yg9k59knIv7GTV5Qc8CGFvVMSxj5kLSlku2ok
+ nVw3nMegVXM0m79lISSORTEKsYZk17eSY2BP3F/H6PLtG3pWW0+WZqb10c7v
+ VVvdwh4+IfeLY6cAAAA=
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
- tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
- Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
- 63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
- """,
+ androidx/compose/ui/input/pointer/AwaitPointerEventScope.class:
+ H4sIAAAAAAAA/51Qu04CQRQ9d1F5+AAUFTvjBzhALIxWJGqyCUYjiQ3VsDua
+ gWVmw9xF7PguC0PtRxlntaGgspgz5965j3Pm6/vjE8AFjgmX0sRTq+O5iOwk
+ tU6JTAtt0oxFarVhNRXdN6n58S+4nSnD/cimqggi1EZyJkUizat4GI5UxEUU
+ CKfrZmZGs7hRxml+L2KTUO+NLSfaiHvFMpYsrwnBZFbwyiiHcg4g0Njn5zqP
+ Wp7FbUJjuShVgmaQn9JLc7noBC3K3zqEq95/Hfn9Z2ubV6X7oupq5/mYCZW+
+ zaaRutOJIpw8ZYb1RD1rp4eJ6hpjWbK2xm15idjwlrZyZ54f/mIDR/5u+7z/
+ F5QGKIQoh6iE2MaOp9gNsYfqAORQQ32AwGHf4eAHKmYZqccBAAA=
+ """,
"""
- androidx/compose/ui/input/pointer/AwaitPointerEventScope.class:
- H4sIAAAAAAAAAJ1QTU8CMRB9syiL+AEoGrwZf4AFwsHoiURNSDAaSbxwKrvV
- FJZ2Q2cRb/wuD4azP8rY1QsHTjbpm77Xzsybfn1/fALo4IRwKU08szpeiMhO
- U+uUyLTQJs1YpFYbVjPRfZOaH//I7VwZHkQ2VSGIUB3LuRSJNK/iYTRWEYco
- EM421cyMZnGjjNP8HmKbUOtPLCfaiHvFMpYsrwnBdF7wziiHkEATLy10zpr+
- FLcI9dWyVA4aQb5LL43Vsh00Kb9rE676/x3Gtz7fmLzu2j+qrGdeTJhQHths
- Fqk7nSjC6VNmWE/Vs3Z6lKiuMZYla2tc0VvEFghF5CtA/RePcOxjy+v+S1Aa
- otDDTg9lj9jNYa+HfRwMQQ4VVIcIHGoOhz/oLRV0wgEAAA==
- """,
+ androidx/compose/ui/input/pointer/PointerId.class:
+ H4sIAAAAAAAA/5VQTW8SQRh+ZpZdlhVkwS+KH9XWQ4vRpY03TaM2mkBQm2q4
+ cBrYSZ0Cs4SdJT3yW7x7MNGYeDDEoz/K+M5CPHkxmXnmfd558rwfv35//wHg
+ Me4zPBA6nicqvohGyXSWpDLKVKT0LDPRLFHayHl0sn47cRGMITwXCxFNhD6L
+ 3g7P5cgU4TB4T5VW5oihsNfd7zM4e/v9MlwUAxTgM7gLMckkA+uWEeBSCRxl
+ EpsPKmV42PuPJp4w+GfS9Nd+VKfLUOuNEzNROnotjYiFESTi04VDQzILJQug
+ 6mPKXyjL2hTFBwzHq2U94A0e8HC1DOjwsBRw32msloe8zV5U6l7Im7zt/Pzo
+ 8bBwWvvLfFI3C74betbqkNkC1U2bLxdSm0djQyMeJzH1We0pLd9k06GcvxfD
+ CWXqvWQkJn0xV5ZvksG7JJuP5CtlydZppo2ayr5KFf0+1zoxwqhEpzig/RXy
+ kep2nRRxil14hNvEjuDAThm0vqHU2v6Kyudcc5fQagAf9wivU45UuIyq3RBF
+ 1o0WipDu2ivKvQG39QWVT/+0Ka8FGxuOnRzvYJfeZ3mTLq4M4HRwtYNrHSp7
+ g0I0OthCcwCW4iZuDVBMUU1xO0WQo5ciTFH7Azsv3rCuAgAA
+ """,
"""
- androidx/compose/ui/input/pointer/PointerId.class:
- H4sIAAAAAAAAAJVQTW8SQRh+ZpZdlhVkQa0UP6r20mJ0aeNN06iNJhD8SGu4
- cBrYSTsFZgk7S3rkt3j3YKIx8WCIR3+U8Z2FePJiMvPM+7zz5Hk/fv3+/gPA
- E+wyPBQ6nicqvoxGyXSWpDLKVKT0LDPRLFHayHn0fv124iIYQ3ghFiKaCH0W
- vRteyJEpwmHwnimtzBFDYa+732dw9vb7ZbgoBijAZ3AXYpJJBtYtI8CVEjjK
- JDbnKmV41PuPJp4y+GfS9Nd+VKfLUOuNEzNROnojjYiFESTi04VDQzILRSo8
- ptSlsqxNUXzAcLxa1gPe4AEPV8uADg9LAfedxmp5yNvsZaXuhbzJ287Pjx4P
- Cye1v8wndbPgu6FnrQ4ZlUF10+GrhdTm8djQdMdJTC1We0rLt9l0KOcfxHBC
- mXovGYlJX8yV5ZtkcJpk85F8rSzZPsm0UVPZV6mi3xdaJ0YYlegUB7S6gh0M
- dbtJijjFLjzCu8SO4MBOGbS+odTa+YrK51yzQ2g1gI97hFuUIxWuogrkkXWj
- XSKku/aKcm/AbX1B5dM/bcprwcaG436Od/CA3ud5ky6uDeB0cL2DG4TYsnCz
- gwa2B2Apmrg1QDFFNcXtFEGOXoowRe0P2i862KkCAAA=
- """,
+ androidx/compose/ui/input/pointer/PointerInputChange.class:
+ H4sIAAAAAAAA/5VSXU8TURA9d7dfLAXaIlJA8QOUUoQthPiCMSrRZJO1EjC8
+ 8HTbvSm3H3fJ7m3DI7/FX6CJRuODIT76o4xz2w0IvkiymTNnMnNmdub++v39
+ B4BtbDBscxVEoQxO3WbYOwlj4falK9VJX7snoVRaRO7eCD0T3D3mqiWyYAyF
+ Nh9wt0vcfddoi6bOwmbIPJNK6ucMtYr//9LBzuohw5IfRi23LXQj4lLFLlcq
+ 1FzLkPx6qOv9bneHwZJBDjmGxU6ou1K57UHPHaoo3nU9pSMqlc04C4dhpnks
+ mp2kdo9HvCcokWGl4l+ffuevyIERadFMeeQx4WAckwx2xfA0Cg5SKDKs3+j/
+ 8shhegwWbjGk9LGMGZ7eQOBy97SBdEtoL2BwK6s3moGh6CdLeys0D7jmZp+9
+ gU2vgRkzZgwYWIfip9KwGnnBJsPu+VnJscqWYxXOzxz6hn7OLp+fbVk19mqi
+ lClY81bN/vkhYxVS+8ULlqPs+VQuXcgYqS1mGkwlU70eCKU3OpphYb+vtOwJ
+ Tw1kLBtd8fLy+rSy3TAQVOZLJer9XkNE7znlMJT8sMm7hzyShifB5etaF6e/
+ IuochP2oKd5IUzOX1Bz+0x2bdLbUcC8lc0XCFWIZwiyhRZgmZqFCzCe0CAtr
+ pbFvmKp+Ram69gUzn4aZq2QnYVO2A/OspshWKXZ7VEM4aw5A3qjPGvlZljQq
+ ooy5pI1rjkSYrn7GzMcL7cwwOD7UzI8SEs2rEz8Z2sdYJ3xB0XnKWziC7eGO
+ h7seFnGPXNz38AAPj8BiLGH5CNkYszEexcjFmI6RiVGOMfcHIp5sr08EAAA=
"""
- androidx/compose/ui/input/pointer/PointerInputChange.class:
- H4sIAAAAAAAAAJVSXU8TURA9d9tul6XItogUUPwApRRxCyG+YIxKNGlSkYDh
- hafb3Zty2+1dsnvb8Mhv8RdootH4YIiP/ijj7HYDgi+SbObMmcycmZ25v35/
- /wFgE2sMm1z5USj9E9cL+8dhLNyBdKU6Hmj3OJRKi8jdHWEzCW4fcdURRTAG
- p8uH3A2Iu+/aXeHpInIM5jOppH7O0Ki1/l/a31o5YFhshVHH7QrdjrhUscuV
- CjXXMiR/J9Q7gyDYYjCkb8FiWOiFOpDK7Q77bqqieOA2lY6oVHpxETbDtHck
- vF5Wu8sj3heUyLBca12dfuuvyH4i0qGZSihhwsY4bjDkagkvwLGRR5lh7Vr/
- V4KFqTEYuMmQ10cyZnh6DYGL3dMGCh2hmz6DW1u51gwM5Va2tLdCc59rnuyz
- P8zRa2CJKTKwHoVOZMIa5PnrDNtnpxXbqBq24Zyd2vSlvpWrnp1uGA32aqJi
- Osac0cj9/GAaTn6vfM4syp7LWwXHTKQ2GLXBZDbQ66FQ+klPM8zvDZSWfdFU
- QxnLdiBeXhyetrUd+oLKWlKJnUG/LaL3nHIYKq3Q48EBj2TCs+DSVa3zq18S
- tffDQeSJNzKpmc1qDv7pjnW6WD7ZDirJAQkfETMJi4QGYYGYgWViLUKD0Fmt
- jH3DZP0rKvXVL5j+lGbWyN5AjrJtJC9qkuwKxW6NaghngNQb9aln50gblVHF
- bNbGRRIFCvXPmP54rm2mwfFUszRKyDQvT7ya2od4TPiConOUN3+IXBO3m7hD
- FguJudvEPdw/BIvxAIuHKMaYibEUw4oxFcOMUY0x+wcqer7sSgQAAA==
- """
)
val PointerInputScope: TestFile = bytecodeStub(
filename = "SuspendingPointerInputFilter.kt",
filepath = "androidx/compose/ui/input/pointer",
- checksum = 0xd7db138c,
+ checksum = 0xa05e1a0a,
"""
package androidx.compose.ui.input.pointer
import androidx.compose.ui.unit.Density
@@ -135,59 +135,59 @@
block: suspend PointerInputScope.() -> Unit
): Modifier = Modifier
""",
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2VMQQoCMRAbUQR7EOkDBMWThzl7F1dkL4J+oGzr7oDOlHYK
+ Pt/KejOQEBISAJgCwKRyAT+Yg9k59knIv7GTV5Qc8CGFvVMSxj5kLSlku2ok
+ nVw3nMegVXM0m79lISSORTEKsYZk17eSY2BP3F/H6PLtG3pWW0+WZqb10c7v
+ VVvdwh4+IfeLY6cAAAA=
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
- tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
- Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
- 63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
- """,
+ androidx/compose/ui/input/pointer/PointerInputScope.class:
+ H4sIAAAAAAAA/51Ty24TMRS9nsljklKYDlDSFtqSlpdQmRBg04SKClo1VYAq
+ idh05UzcyOnEjsae0O7yLSz4CBYo6pIf4S8Qd/JQSxsRxML28fXx9T328Y9f
+ 374DwEt4SOAFFY1A8saJ68l2RyrmhtzlohNqtyO50CxwD4ZjKQpWPdlhSSAE
+ 7BbtUtenoul+rLeYp5NgElidlC4UXLvvmFBcnyYhTmCefqZcj/LudJkY5iVQ
+ e1w+ltrnwm112+5RKDzNpVDu7gjlC+N1TwYy1Fww5b6VAkFII0LhSflyXQUC
+ P4uVzavxrWmHFTfK029ne6KUwsaUQosbtUphq/B0QlnTNI62TlS6XpZB020x
+ XQ8oRy1UCKnpUNeH0Pdp3WdIW/sbTeqIiay5cSHvmaYNqinGjHbXRO+QqEtF
+ HRAgxxg/4dEsh6jxnIDq97JpI2MMm2We46jZ/d4A9HvWUabfyxs5sv/aNhaN
+ PTMbs/o928w/smOLaxZxYo6RSzhpx4rQnplLOgknliE5Kxc/+5IwrNTe2dc3
+ EbLT0dF5Aq/+4dGuWBqVZSfuu+hdJJEKgXjdlx5KdsbXc+5OApv/bxn8PdPc
+ TaLrXh6zdk50VJgU4wJqp4M0K9VQdZhocNG8KHSX+wifHWsCqSpvCqrDAP/c
+ UiXEE9qsJLpccfTH9rkZ0FCXVw9oQNsME/1BS1dlGHgMj8CMC6M9n67kS+Ab
+ QQw1JCLjxAgkwQIT7uPMgBRkcUzgahrHNWyzBk5mBh6bGVDWB/0qPMCxjNFr
+ EIfZQzBLcL0EN0pgwxxCcEpwE24dAlFwG+YPYUbBHQUZBUkFCwoWFSwpuKvg
+ noJlBSsKrN90t5jzEwUAAA==
+ """,
"""
- androidx/compose/ui/input/pointer/PointerInputScope.class:
- H4sIAAAAAAAAAJ1T3U4TQRQ+s7vtLkV0WRULKGDBqDG4teoNJQSiEEqqkpZ4
- w9V0uzRTtjPNzmyFu42P4oXPYLwwDd75Ir6F8Wx/AkJjjRdz5syZb84538w3
- P359/QYAL+ABgeeU10PB6ieuJ1ptIX03Yi7j7Ui5bcG48kN3vz+XkmDVE23f
- BELAbtIOdQPKG+67WtP3lAk6gaVR6SLOlPva55KpUxNSBGboB8rUIO92x+f9
- vAQOHpWPhQoYd5udlnsUcU8xwaW7M/AKxeG+J0IRKcZ96b4SHJ2IJoDi4/Ll
- vooEfq5X1q7GN8YVW18tj7+drZFUiqtjGl1fPagUN4pPRrQ1juPg6EimK2UR
- Ntymr2ohZciFci4U7fN6GwUBrQU+wpb/BhMqQSJqetjIG1/ROlUUY1qro6N2
- SGJMAuQYQycsWeXRqz8jEHfjXEbLav1h6ed+Muxu3HO6sXWU7cYFLU/2Nm1t
- TtvVc4bVjW298NA25pYt4hiOlk87GcdKvF09bzppx8iSvJVPnX1Ka9bE7tnn
- ze9fSDdOlnbm7KNmYMHZpI8CgZf/8HhXpI0McyPPXdQwgkiFQKoWCA/5O8Nr
- OlcpgbX/lw7+onEqJ/gCsDBEbZ+opDHBhw0cnPbSLFYj2fZ5nfHGRaI7LED3
- 6bEiMFFlDU5VFOLfm69EWKHll3iHSYY62ToXBQrr8u4+DWnLx0R/wDJVEYWe
- jyUw4+zgzPsr+dL4RmAgh3SiJYOACRbosIQrDSbgPs5p3M3gnMMxpeFiMoH2
- rAbLPbsIKziXMXoNUjB1CHoJrpfgBlqwEzNdAgduHgKRcAtuH8KkhBkJdySY
- ErISZiXMSZiXcFfCPQkLEqzfOHmKfRsFAAA=
- """,
+ androidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt.class:
+ H4sIAAAAAAAA/61VW28bRRT+Zu34VkPcDSmJE9KUmObSpusYym2jiBJRycIN
+ BZe85Gm8nroTr2esnd0ofetv4RcgnhAPKOKR38JvQJzZOKnTBAehPuyZc/nm
+ 3OYc+8+/f/sdwCfYZviKq26kZffYC/RgqI3wEulJNUxib6ilikXktRMzFKor
+ Ve/pqaZpzY9lSOy3cR6MoXLIj7gXctXzvuscioC0GYbycAzPMFxrXRXsie7K
+ 51JEfutNJ36rr+NQKu/waOA9T1QQS62M93jENfz1yQ4Z/nrbIbc3r3R4sWHj
+ bWoHeij8zTO3gY50EksljLerFTEJt363zwE/Khn7O/69y5ntXF/uSktHPe9Q
+ xJ2IS0qbK6VjflrCno73kjAkVG0SiiC8EwqC5bbjF9LsFFBiWBrrSlqb4qHX
+ VHFE92Vg8igzzAYvRNAfhXnKIz4QBGRYXbuiy681beuk56/vl/Eupkt4BxWG
+ qU6og34BLsPipJrzeI+huEsGrih/hsnvXTtH+mXcwvtFzGKOwa3ZSmsXp3Xp
+ umZn++LlFl2+XB3D8nWTy3DzDPJExLzLY046Z3CUocVklhQtAQPrW8Yh47G0
+ XJ24LsU1J69qpZNXJWfOSY8KkZF4/lWckbn6NZmrTp1t0NcoVJxqdo7VM43V
+ Sra6UmBu1nXqObfkFlKuUM+7OTdF1Kf++CnnFIqWVko2dIPZrNyz7MdLevi/
+ dmOsW/+yHb59jRHkm+NY0MxpdRb42cvUx93/9u5527/bk37RHvTp8bO7uisY
+ pluUy14y6Ijomd0KW7cOeLjPI2nlkbLYlj3F4yQifuGHhBIfiKY6kkaS+dHr
+ 7aLVe9N6vicXYOWmUiLaDbkxgsRSWydRICg/CjA/crF/yT224CCL07GZxxRy
+ JH1M0vekt6Mzs+He+BU377szRH/B/Almf7azRf8EIDDFxTQeEr98CkcVC6m7
+ GSziA7JbzsUS3fg0vZfHZ6ObBTo/t/bMSKCupNTyGXxBtETSFi3cLcrty/R6
+ Az6dLdLfpmyXD5Bp4k4THzaxgloTH+FuE6tYOwAzWMfGAW4YTBksGCwa3DNw
+ De4bbBo8SEXPIPcPJkHsLNsGAAA=
"""
- androidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt.class:
- H4sIAAAAAAAAAK1VW08bVxD+ztrYi0OLs5QWDCW0OOGSkHWcSyMtQq1QIllx
- aFqnvPB0vD5xDl6fY+0FkTfUn5JfUPUpykOE0rf+lv6GqHOWhZhAjVTF0s7O
- 5Zs5M3Nm1n9/ePsOwD08ZPiRq06oZefA9XV/oCPhJtKVapDE7kBLFYvQbSXR
- QKiOVN1nx5qGMT+WAbFP4iIYQ3mP73M34Krr/tzeEz5pcwwTgyE8w2CledFh
- T3VHvpAi9JqfBvGaPR0HUrl7+333RaL8WGoVuY8zru6tjg7I8M/nPnJj/cKA
- Zxs23KaWrwfCWz8J6+tQJ7FUInK3tCIm4SbuxingNyVjb9O7eT6zzcvLXWrq
- sOvuibgdcklpc6V0zI9L2NbxdhIEhKqOQhGEtwNBsMJG/FJGmzZKDAtDXUlr
- UzxwGyoOyV/6URETDNP+S+H3smOe8ZD3BQEZllcu6PJHTcsE6XqrOxP4EpMl
- fIEyw1g70H7PhsMwP6rmIr5iGN8iA1eUP8Po+66eIr0JfI1vxjGNGQanaiqt
- np3Whcuane+JV3fI+Xx1DIuXTS7D1RPIUxHzDo856az+fo4WkxlSZGA9w1ik
- P5CGqxHXoSMPjw6rpaPDkjVjpa8ykUw8fcpWZq48InPFqrE1eup22arkZ1gt
- V18u5ytLNnPyjlUrOCXHTjm7VnQKToqojb1/XbDs8b/esKNDw5ZL73+38iXL
- njV51BklStVnVQyXdv9/7chQ1/5jSzxzKxnk0UEsaPa0Ojn4+as0xrVRX6vb
- PbrY/JbuCIbJJsXfTvptET43E29q0T4PdngojZwpx1uyq3ichMTP/ZpQMn3R
- UPsykmT+6ePm0Fp9aj3dgTOwUksnoS8oIYo4m/nsnIuHO7CQh/kRDGMokFQj
- 6RfSm2GYWnOuvMHVW84U0T8xe4TpP8y0kCMITF9fTKJO/OIxHBXMpeGmMI9v
- yW44BwvkcTf1K9IfwrGnTe/7xp7LBGpDSu0U+CClLn6gd5O01yi7xV3kGviu
- ge+JYqmBKq43cAPLu2ARVrC6iysRxiLMRZiPsBbBiXAzwq0I66l4O0LhX/yB
- 0s2YBgAA
- """
)
val Alignment: TestFile = bytecodeStub(
filename = "Alignment.kt",
filepath = "androidx/compose/ui",
- checksum = 0xd737b17c,
+ checksum = 0x72950571,
"""
package androidx.compose.ui
class Alignment {
@@ -196,47 +196,47 @@
}
}
""",
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2VMQQoCMRAbUQR7EOkDBMWThzl7F1dkL4J+oGzr7oDOlHYK
+ Pt/KejOQEBISAJgCwKRyAT+Yg9k59knIv7GTV5Qc8CGFvVMSxj5kLSlku2ok
+ nVw3nMegVXM0m79lISSORTEKsYZk17eSY2BP3F/H6PLtG3pWW0+WZqb10c7v
+ VVvdwh4+IfeLY6cAAAA=
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAAAH2NSwrCMBCGR0SErCToVrC4UsghtFakG0EvEJqxBmomJBOo
- tzfS7gQXw//6YABgCgCTfPNRQaDYamcCWdOrhl6eIqoHJWc0W3KqxcgpYJSr
- Muj2PKQSGRumULNcVBROunmOS26Wd+1/OLEXxb83nX5TYjk7UJ/ho9j8wMkq
- 63xi5ck6xiDXtxQ9OmNdex2qy3evbJdtzQXs4AM20YY08QAAAA==
- """,
+ androidx/compose/ui/Alignment$Companion.class:
+ H4sIAAAAAAAA/5WTz08TQRTHv7PdtstSpeWH8kNFpEqL2gXiDWOEGpMmBRMg
+ vXAw0+1Yp93Okp1pw7En/xD/AjlpPBjC0T/K+LasQDQRvbx57/ve583svJ3v
+ P75+A/AMFYYVrlpRKFvHnh/2jkItvL70tgLZVj2hTLFKIlcyVFkwhnyHD7gX
+ cNX23jQ7wjdZpBgyz6WS5gVDqlRu5JBGxoWNLINt3kvNUK7/4x6bDONtYQ7C
+ o33DI8OwVLqGJWK5HkZtryNMM+JSaY8rFRpuqJ32dkOz2w8Cqrr71zZZ3GSY
+ 4b4vtC5eOUHRP8ohj5yLCRQY1kv1bmgCqbzOoOdJZUSkeOC9Eu94PzBV2tFE
+ fd+E0Q6PuiLaLDdcWPFFTBX9y+Tb3ijLUPm/bgyFX8COMLzFDSfN6g1SNEsW
+ m7HYgIF1ST+WcbRGXmudYft0OO1as5Zr5U+HruVY54FjOWcfUrOnww1rjW1n
+ HevsY8bKW3uFfGreWrMpctzT4bztpPOZuNMGi/s7lxNavHY+YxfjZchdJCpd
+ gu1q2BIME3WpxG6/1xTRAW8GpEzWQ58HDR7JOE7Ehb2+MrInamogtSRp63LS
+ 1LqmlIiqAddaUOjuh/3IF69lTM4lZOMPDus0IDu+NaTIo1+XPm+FIi++RlrT
+ q5/hnJBjoUQ2MxJtlMnmzgswBpfWAsZJsUZwJYHtL5j89BubvsLaCbuaZG8A
+ eUYVU8khntJqJYeYPhmNNoZvnYsJHHszpNHzw2OK3BE0gYeYw5PR5o+oEfCS
+ 9NtUO3uIVA1zNczXsIA75OJuDfeweAimcR9Lh8hquBoPNDIayxpFjXGN3E/q
+ H9VdNgQAAA==
+ """,
"""
- androidx/compose/ui/Alignment$Companion.class:
- H4sIAAAAAAAAAJVTTW/TQBB96ziJ6waa9AP6AZTSQJNC67biVoRog5AipUVq
- q1x6QBtnCZs468q7iXrMiR/CL4ATiAOKeuRHIcapaSuQKPgwO+/NvJlZj/39
- x9dvAJ5ijWGFq2YUyuap54fdk1ALrye9nUC2VFcoU6wQyZUMVRaMId/mfe4F
- XLW814228E0WKYbMM6mkec6QKpXrOaSRcWEjy2Cbd1IzlGv/2GObYbwlzFF4
- cmh4ZBiWStdoSbFcC6OW1xamEXGptMeVCg03VE57+6HZ7wUBZd39a5ksbjLM
- cN8XWhevTFD0T3LII+diAgWGzVKtE5pAKq/d73pSGREpHngvxVveC0yFOpqo
- 55sw2uNRR0Tb5boLK34RU0X/MvimO4oyrP9fNYbCL8GeMLzJDSfO6vZTtEsW
- G+rEOkSdyhhtkNfcZNgdDqZda9Zyrfxw4FqOdQ4cyzl7n5odDrasDbabdayz
- Dxkrbx0U8ql5a8Mm5LjDwbztpPOZuNIWoy5wLpezeO1qxi42y5C7CKx3SGxX
- wqZgmKhJJfZ73YaIjngjIGayFvo8qPNIxjghFw56ysiuqKq+1JKoncslU+mq
- UiKqBFxrQdA9DHuRL17JWDmXKOt/6LBJu7ERPyny6Kul6z0i5NFJd0V69TOc
- T+RYWCGbGZE2SmRz5wkYg0tnAePEWCPxeiK2v2Dy42/a9BWtnWjLSfQGkGeU
- MZUMsUanlQwxHQ/BRuJb52Qijr0Z4ujPwyohdySaQBFzeDxq/hBP6HxB/G3K
- nT1Gqoq5KubJYiE2d6q4i3vHYBqLuH+MrIarsaSR0XigsawxrpH7CTHvlCUx
- BAAA
- """,
+ androidx/compose/ui/Alignment.class:
+ H4sIAAAAAAAA/4VSXU8TURA9d7ct7bJKqVIpHwJSpaCyQExMhJhgjUmTUhMh
+ JISn2+213nZ7l+y9bXjkt/gLRB5IJDHER3+UcbYU8COBl5mdc+fMnJnZn7++
+ fQfwAisM01w1olA2Dj0/7ByEWnhd6W0Gsqk6QpkhMIZsi/e4F3DV9N7XW8In
+ 1GZIbUglzWsGu7S46yKJlIMEhhgS5pPUDDPVGyuvM4xx3xdaF5vC7IQH24ZH
+ pugfMMyVFm/lpi8ZLu7AycDCXQI3/GAgauHGAsUygVzJUA1hlGG1VG2Hhqhe
+ q9fxpDIiUjzw3oqPvBuYcqi0ibq+CaMtHrVFtH4x7z0HOdxnyFwVY7hF+HXf
+ dRd5PIh1jztkaG3z1TBqei1h6hGXSntcqdBwQ7naq4Wm1g0Cmnv0UumWMLzB
+ DSfM6vRsOieLTSY2YGBtwg9lHNGRrcYqQ/H8yHWsccuxsudHjpW2xs+PZu01
+ a4W9Yvab5I/PKStrxblrLK7gXqlebhuGyQ9dZWRHVFRPalkPxOa1Prp5OWwI
+ hpGqVKLW7dRFtMMphyFXDX0e7PJIxvEAdCtKiagccK0FkZ3tsBv54p2M3wqD
+ Prv/dcEqLSpBA1koxMsjjYsUpchPkp+If4R/MJt8sh8tUeTFeyGfXDpF+rhf
+ 6OkgOU59Rta9SECGSiFbwHAficlT/Rcg8RUjX/or/pObRvaqzTL6N0D+DLk9
+ doqxExTOYO2dYuIEI8d/cYepl43nFMXSc6QoT8Mt97WVSDDwkvApypreh13B
+ wwpmKpjFHH3iUQXzKO6DaTzGk30kNByNBY2URv43qNs4vuQDAAA=
"""
- androidx/compose/ui/Alignment.class:
- H4sIAAAAAAAAAIVSXU8TQRQ9s9uWsqxSqlTKh4BUKagsEBMTISZYY9KkYCKE
- hPA03Y512u0s2ZlteOS3+AtEHkgkMcRHf5TxbikQNIGXe/eeOffcc2f2958f
- PwG8gscwxVUjCmXj0PPDzkGohRdLbyOQTdURygyAMeRavMu9gKum97HeEj6h
- NkNmXSpp3jLY5YVdF2lkHKQwwJAyX6RmmK7dqrzGMMp9X2hdagqzEx5sGx6Z
- kn/AMFteuLM3e9nh4h6cQVi4T+C6H/RNzd8qUKoQyJUM1QBGGFbKtXZoqNVr
- dTueVEZEigfee/GZx4GphEqbKPZNGG3yqC2itYt9HzjI4yHD4JUYwx3Gr+eu
- uSjgUeJ7zKFA1zZXC6Om1xKmHnGptMeVCg03xNXeVmi24iCgvUcunW4Kwxvc
- cMKsTtem52RJICHWJuhQJtUyfTVWGErnR65jjVmOlTs/cqysNXZ+NGOvWsvs
- DbPfpX99zVg5K+GuMtKBe2V4qW0YJj7FysiOqKqu1LIeiI1ra/TclbAhGIZr
- UomtuFMX0Q4nDkO+Fvo82OWRTOo+6FaVElEl4FoLana2wzjyxQeZnBX7c3b/
- m4IVuqMULWShmNwbeSxTlaE8QXk8+Qf+wWzK6V61QJVHmVZDevEU2eOe0GKf
- nFCfU3QvCBgkKeSKGOohSfNk7wRIfcfwt+Sib/RmkbsaswS7xyycIb/HTjF6
- guIZrL1TjJ9g+PhG7xDNsvGCqsR6nhwVaLmXPW/zpAS8JnySWFP7sKt4XMU0
- RcwkYbaKJ5jbB9Mo4ek+UhqOxjONjEbhL7J1D8vfAwAA
- """
)
}
diff --git a/constraintlayout/constraintlayout-compose-lint/src/test/java/androidx/constraintlayout/compose/lint/ConstraintLayoutDslDetectorTest.kt b/constraintlayout/constraintlayout-compose-lint/src/test/java/androidx/constraintlayout/compose/lint/ConstraintLayoutDslDetectorTest.kt
index 1687dad..4dd8cc4 100644
--- a/constraintlayout/constraintlayout-compose-lint/src/test/java/androidx/constraintlayout/compose/lint/ConstraintLayoutDslDetectorTest.kt
+++ b/constraintlayout/constraintlayout-compose-lint/src/test/java/androidx/constraintlayout/compose/lint/ConstraintLayoutDslDetectorTest.kt
@@ -35,7 +35,7 @@
private val ConstraintSetScopeStub = bytecodeStub(
filename = "ConstraintSetScope.kt",
filepath = COMPOSE_CONSTRAINTLAYOUT_FILE_PATH,
- checksum = 0x912b8878,
+ checksum = 0xb5f243fa,
source = """
package androidx.constraintlayout.compose
@@ -86,98 +86,100 @@
class ConstrainedLayoutReference(val id: Any)
""".trimIndent(),
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgMudSTMxLKcrPTKnQS87PKy4pSszM
+ K8lJrMwvLQEK5BbkF6cKCfnml2Tm5wUnp+alBifnF6R6l3AJcrGnViTmFuSk
+ CrGFpBaXeJcoMWgxAACjh5JrZAAAAA==
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGJ2KM3AJcjFnlqRmFuQkyrEFpJaXOJdosSg
- xQAASc3A6SsAAAA=
- """,
+ androidx/constraintlayout/compose/ConstrainedLayoutReference.class:
+ H4sIAAAAAAAA/6VRXU8TURA9d/u1rEW2lUoBxQ9QSlEWiG8giWJMNqloqOGF
+ p9vda7ntdpfs3jb41t/iL9BEo/HBND76o4xzy4oCvvkyZ87cmTNzZ378/PoN
+ wCOsMWzz0I8j6Z84XhQmKuYyVAF/G/UVBXrHUSKc3d8Pwm+MX/bFGxGL0BMF
+ MAa7wwfcCXjYdl62OsJTBWQY8tsylGqHoVJrXEzYWjlgWGxEcdvpCNXS0onD
+ wzBSXElq5uxFaq8fBFsMhvRNmAwL3UgFMnQ6g55DE4o45IHjhiqmUuklBVjU
+ yTsSXjetfcVj3hOUyLD8jwn+ijS1SJtmKqKISQtXcJUhU9M8B9tCFiWG8mWJ
+ Ikxcm4CBaYasOpIJw07jf7ZJ3821hXJ9hunayuWGDKVGuoYXQnGfK6431Btk
+ 6JhMmwltwMC6FD+Rmq2T52/QnUfDomVUDcuwR0PLMLPV0XDTWGdPJ8t525gj
+ 7/u7vGFn9ktnzLRGw7msmbVzWmOTaeXK2fiqKVTTi47FWlcxzO/3QyV7wg0H
+ MpGtQDz5c05az27kC4apBv16r99rifg1pxy91sjjwQGPpeZpcOmi1tktz4la
+ zagfe+K51DWzac3Bpe7YoBNlx2sp64sRLhPLExYIDcIcMQM1Ys8IDUJ7tTzx
+ BVP1zyjXVz+h8mGcuZLW5bGOOvnXT3MJZ/TeyTvVXyW/wNIGJVQxm8o7+jaE
+ ufpHVN6f00SqWTxNSDXPT/pgbO/jIeFjis5R3vwhMi5uuLjpYgG3yMVtF3dw
+ 9xAswSKWDpFPMJPgXgIz0X41wewvvckEVQIEAAA=
+ """,
"""
- androidx/constraintlayout/compose/ConstrainedLayoutReference.class:
- H4sIAAAAAAAA/6VRXU8TURA9d/u1rEW2lUoBxQ9QSlEXiG8giWJMmhQ01PSl
- T7e713Lb7S7ZvW3wrb/FX6CJRuODaXz0RxnnlhUFfPNlzpy5M2fmzvz4+fUb
- gMd4yLDDAy8KpXfiuGEQq4jLQPn8bThQFOgfh7Fw9n4/CK8+eTkUb0QkAlfk
- wBjsLh9yx+dBx3nZ7gpX5ZBiyO7IQKpdhlKlfjFhe63JsFwPo47TFaqtpWOH
- B0GouJLUzDkI1cHA97cZDOmZMBmWeqHyZeB0h32HJhRRwH2nFqiISqUb52BR
- J/dIuL2k9hWPeF9QIsPqPyb4K9LQIh2aKY88pi1cwVWGVEXzDGwLaRQYipcl
- 8jBxbQoGZhnS6kjGDLv1/9kmfTfTEarmMcxW1i43ZCjUkzXsC8U9rrjeUH+Y
- omMybXIMrEehE6nZBnneJp14PMpbRtmwDHs8sgwzXR6PtowN9my6mLWNBfK+
- v8saduqwcMZMazxaSJtpO6M1thjpo3Q2uWoI1XDDY/GopxgWDweBkn1RC4Yy
- lm1fPP1zSdrMXugJhpk6ffhg0G+L6DWnHL3R0OV+k0dS8yS4clHr7IznRK1G
- OIhc8ULqmvmkpnmpOzbpOmm9HBT1sQjvE8sS5ggNwgwxA6vEnhMahPZ6ceoL
- ZqqfUayuf0LpwySzktRlsYE18q+f5hLOARPvVL+aXGHSoIAy5hN5BzoKZKof
- UXp/ThOJZv40IdE8P+n6xN7DA8InFF2gvMUWUjXcqOEmWSxpc6uG27jTAotx
- F8stZGPMxViJYcbaL8eY/wVNn9c9/QMAAA==
- """,
+ androidx/constraintlayout/compose/ConstraintSetScope$ConstrainedLayoutReferences.class:
+ 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
+ """,
"""
- androidx/constraintlayout/compose/ConstraintSetScope$ConstrainedLayoutReferences.class:
- H4sIAAAAAAAA/62Y3VLbRhTH/ysbfwgDxjGO4xjqEIcYY2JsDCGE0pAEGoMh
- FKc0Kf0StkIERs54RYbcMb3IG7QP0F70tp1pJpl2ppPhsi/Qt8n0yCggAco4
- RAPePbva/Z/fnj2yVv737V//AChgi2FZUquNulLdzVbqKtcakqJqNel5fUej
- ju2ndS5n7xxeKMtauVJ/KicPu+RqqTl4RX4sN2S1InMvGENwU3omZWuSupG9
- v74pVzQvXAyeKUVVtGmGUqp0Frc310rHdW8OrjJEUjYXLpfqjY3spqyt6zo8
- K6lqXZM0hZSzS3VtaadWu8ngUqrcBz9D31ZdqylqdvPZdpbcyg1VqmWLqtag
- uUqFVtbO0FN5Ile2jMnLUkPalmkgw9XUSQRTT1kX2SCoADrQKSKALoqH9kTh
- yRGG8bOFI4BuhPwQcI4WkdK129Ajwo0Iw7lTQhKAH1F9/AUGt+6bYeVMnt+3
- /xRQsTlTlVUtx3ArNfghPk4Ikt5FY18q9VqN1tHcvplGQ3rOFyixPmEIbMha
- SeJaUa3Ku3b5UAzgEvpFJHCZoXCWZXtxhaFDqtAqeVKVd7VilWH+jLk8eDI7
- AriKlIgBDDJMfUzMvBiiTD0lIw9yZFhEBtcYFpJKUkoOU/DuN2ZrXB7+sJ1O
- Hm1zkjaaFRkEhTYkas6AvINu8rqbI+lRB6VHrdIFB6ULVukxB6XHrNLjDkqP
- W6WvOyh93So94aD0hFX6hoPSN3Tp9qOUp6/tkmP3z8gx8ZyT4rlj4nknxfPH
- xEedFB89Jl5wUrxwTHzMSfGxY+LjToo3783ukvFUXJQ1qSppEj0ohe1nLjrY
- Mb3w0jcyne+EXUVvUbYK1RxjvW/2YqIQFUQh+GZPpH8h2C0KPtdBn6/Lt//C
- HX2zlxdG2O0e35u9UCAoxHwhd4g6Rlz7v3iEoHveH/TEhBHvvf0XAtk+k+03
- 2aLJbjfZAZPdYbI7TXaXyQ6a7G6THTLZ50x22GT3mOzIO3slYl7Tw/0f3bQu
- N0WiTQ8S3R1gmP7oM8t7tpKezSf3/tqWRrNWdlRN2ZaL6jOFK+s1eeboxEpn
- tjv1qszQVSLRpZ3tdbnxQKIxDKFSvSLVVqWGoreNTn9Z2VAlbadBdvK47uHJ
- 1eKgo6xJla1F6akhESiqqty4U5M416nFcn2nUZHnFP1a+KBxV17f2Zjd1WQ6
- ItdVhguGp9UT/MjRydNNuSggpB9EKco/UMtDtQ8IBvXDLLW7qd1GvS5I1Fqj
- 0Xr+9mRC4msE00MvEU6/wvl05iVifzTF1qnspEEeiOhCO8JUV6gvcTARFxEH
- mpbugDUt3b2AanO+F7Jxu+gcNKgXfdSte/+JJLxU59J/IlZyfUpVeCk+9BrJ
- X+Efiud/Q2d83O0abxt+jTQmPX8j8+iC5xWyv9MkFx5TGYTwFjEvRpkXA/Ne
- CoDOG6El6tS9FJQE1Un6XKHPO+4EjRuha200wos8WXrgcsZaTGEj3IINrttp
- 3KCBGyTcIOEGLbhjLeKO2+C2OY0bMnBDhBsi3JAF93qLuBM2uB6nccMGbphw
- w4QbtuDeaBF30gbX6zRuxMCNEG6EcCMW3Jst4k7Z4Pqcxo0auFHCjRJu1IL7
- aYu404e4Pxu4+SZu8OzZcPF03hh5ytH7aoxYY/RGGDvkvUTjPmvy9pl486fy
- 3rLjPXs62PDGDd448caJN27hnWmR97Yd79nzwYa3z+DtI94+4u2z8N5pkfeu
- Ha/fad6EwZsg3gTxJiy8sy3yztnxik7z9hu8/cTbT7z9Ft7PW+S9Z8fb7jRv
- 0uBNEm+SeJMW3mKLvPN2vAGneQcM3gHiHWj+mXkXWuQt2fF2OM2bMnhTxJsi
- 2pSFd7FF3iU73k6nedMGb5p408SbtvDeb5F32Y63y2nejMGbId4M8WYsvF+0
- xOvGBpUitQRS+I74n0A/IH8Pher/yoszy+Kp7y3iQvNNVEyXE++sOXEokUuc
- PtrpX5zJVT7xWNpqip/2E/4cXVvQxHRJzF3OZQoTkzky8pOFG2J6VsQmLe4p
- LXqFQlReg6uIB0V8SSVW9eKrIh7i0RoYx9dYW8N5jjjHNxz+ZunhiHL0cnzL
- cZdjjuMexzxHiWOJY5mjwDHOMcExyTHFMc1xi+P2/ypvybWDGQAA
- """,
+ androidx/constraintlayout/compose/ConstraintSetScope.class:
+ H4sIAAAAAAAA/7VVXU8bRxQ9s/5kMY5xAuEjTUlME/MR1qE0bQNNC25JljpA
+ 7Qo14qXD7sRZWO+inTWCN9T+gv6F/oJWaiFqpAjlsT+q6p21IcFYeUDtg2fu
+ nHvvOXdn5o7//uev1wDmUGOY454d+I69b1i+J8OAO17o8gO/GRLQ2PWlMMpn
+ jpoIa5a/K1JgDLltvscNl3t1Y21rW1hhCjGG5ILjOeEjhlhxYiODBJI64kgx
+ xMMXjmR4ULmM4DwRe2I/NG2Ga8WJylvpWhg4Xp381zuxpabj2iJIoU9HVlVw
+ 41R5plN5xrHTyJEG390VHmncK16UuKjaVpjPII+rSuQaQ7YuPBHwUNhlv+mF
+ DMzMYBDXe6BhiGoomu/nGVE8owzp0G85M/gAGQXeZOizAkHUVfFcLvsBQ724
+ Wek8BarzMjs8fgYJuxIFk4oIhGcJSbtbqPhB3dgW4ZYKkQb3PD/koUNJxqof
+ rjZdl6Jiji3TKDDc3PFD1/GM7b2GQSIi8LhrmJ76IOlYMoWPGAasF8LaaSev
+ 84A3BAUy3C1e/KYup0GX6y6KOu5ggmH9v/7kFKZOb3gzdFxjMQj4AaH36JJQ
+ 7sHac4aJbrtvTnQBMzBQ0jGD+wyV4uU6oNtJRw32sY5pzDFc7RJBV4Zb9Dly
+ /LR7Vi4p36XnMuhVN1PD5wyJ8VZ791faJ/9UhNzmIacStMZejJ4bpoYeNYC6
+ YofwfUetSmTZtDE/nxze0bUhTddyJ4e6llZGWlcmYWrK9bfRLC2HTg5ntRJ7
+ yDJLiTe/JrWctlLIJUaSpWRVK5Evn0uN6PlkmuUpqpS+TWMU1rOSzukjWqn3
+ iVbN5mJkxX9481NW+YhVlTLLVIHV/6OLRt/jpoa4yDezQy9IvOzbguFKhdJW
+ m40tEXzPt1xC8hXf4u4GDxy1boOjVXp2nIYwvT1HOgQtvm1VhvFO71njnQvL
+ mB69YmWXS6kq02t+M7DEsqMEhtsUGxfocZ8uQzw6X029eWTFyab/ABq/pZWh
+ Tp7mxOQx0r+ToaFCYzICY3hKY6YVgB7oNOfVFWsnrxCZRvPYK2SfHeNKvv8I
+ A5N/YHhhcjT+458YHj3CjSN8+FsHb+Id3rE27y9k3SJFxWtShOIdmMqPv8Tk
+ K0w/m5yaev0Ss8f45DxZEumIbLCV0CZTVgEPyL/ajrtN8xr9Uqy1yA3jU3zW
+ ZRMenudnHZswH/HHsE6jTtg0xZrox3dR1gqqNFcJX6DYLzYRM/HIxJcmvsIi
+ mVgyUcbXm2AS32B5E30SusRjiaTEYGSMSTyRKET2LYneyDD/BWglTVUgCAAA
"""
- androidx/constraintlayout/compose/ConstraintSetScope.class:
- H4sIAAAAAAAA/7VUXU8bRxQ9s/5kMY5xAgGcpiTQxDaEdShN20DTglvKUgeo
- qVAjXjrsTpyF9S7aWSN4Q+0v6F/oL2ilFqJGilAe+6Oq3jELKcbKA2pf7tw5
- 984583Hv/PX3n68BzKDOMMM9O/Ade9+wfE+GAXe80OUHfiskoLnrS2FUzwPr
- Ily3/F2RAmPIbfM9brjcaxirW9vCClOIMSTnHM8JnzDEiqWNDBJI6ogjxRAP
- XziS4VHtKoKzROyJ/dC0GW4US7W30uth4HgNit/sxBZajmuLIIU+HVm1g1tn
- ylOdylOOnUaONPjurvBI40HxssRl1UhhNoM8riuRGwzZhvBEwENhV/2WFzIw
- M4NB3OyBhiHaQ9F8N8+I4ikwpEP/NJjBe8go8DZDnxUIoq6L53LRDxgaxc1a
- 5yvQPq9yw+PnkLBr7WRSEYHwLCHpdsdqftAwtkW4pVKkwT3PD3no0CJjxQ9X
- Wq5LWTHHlmmMMdze8UPX8YztvaZBIiLwuGuYnjqQdCyZwgcMA9YLYe1Ei9d4
- wJuCEhnuFy+fqctrUHHdR1HHPZQY1v7rI6cwcVbhrdBxjfkg4AeEPqAiobUH
- q88ZSt1u3yx1ATMwUNExhYcMteLVOqDbS7cb7EMdk5hhuN4lg0qGW3QcOX7W
- PctXlO/Scxn0qsrU8ClDYvy0vftr0cs/FSG3echpC1pzL0bfDVOG2pDtELTv
- qFmFPJvu5KeTw3u6NqTpWu7kUNfSyknryiVMDbn+CM3SdOjkcFqrsMcss5B4
- 80tSy2nLY7nESLKSrGsViuVzqRE9n0yzPGVV0nfJttN6ltM5fUSr9C5p9Wwu
- Rl78+zc/ZlWMWNVWphltE/X/o4EK7whTL1zmm9qhzyNe9W3BcK1Gy1ZazS0R
- fMe3XELyNd/i7gYPHDWPwEKdfhynKUxvz5EOQfNvu5RhvDN63nMX0jKmRx9Y
- 1eVSqp3p634rsMSiowSGI4qNS/R4SHUQV69MI3135MXJp++f7DLNDBrpdpEo
- HyP9GzkaviGbbIMx1MhmThPQA53GvKquaPEykWk0jr5C9tkxruX7jzBQ/h3D
- c+VC/Ic/MFw4wq0jvP9rB2/iX7yjEe/P5N0hRcVrUobiHZjIj79E+RUmn5Un
- Jl6/xPQxPrpIlkS6TTZ4uiAiU94YHlH8aZR3l8aVqNDVJDeMj/FJl0t4fJGf
- dVzCbJs/hlWyOmGTlLuEfqy1V5n4lsY64XOU+9kmYiaemPicLL5QZt7EAqqb
- YBJf4qtN9EnoEosSSYnBtjMq8bXEWNu/I9Hbdpb+AeegSxAbCAAA
- """
)
private val MotionSceneScopeStub = bytecodeStub(
filename = "MotionSceneScope.kt",
filepath = COMPOSE_CONSTRAINTLAYOUT_FILE_PATH,
- checksum = 0xc89561d0,
+ checksum = 0x499473bb,
source = """
package androidx.constraintlayout.compose
@@ -239,89 +241,90 @@
}
}
""".trimIndent(),
+"""
+ META-INF/main.kotlin_module:
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgMudSTMxLKcrPTKnQS87PKy4pSszM
+ K8lJrMwvLQEK5BbkF6cKCfnml2Tm5wUnp+alBifnF6R6l3AJcrGnViTmFuSk
+ CrGFpBaXeJcoMWgxAACjh5JrZAAAAA==
+ """,
"""
- META-INF/main.kotlin_module:
- H4sIAAAAAAAA/2NgYGBmYGBgBGJ2KM3AZc6lmJiXUpSfmVKhl5yfV1xSlJiZ
- V5KTWJlfWgIUyC3IL04VEvLNL8nMzwtOTs1LDU7OL0j1LuES5GJPrUjMLchJ
- FWILSS0u8S5RYtBiAACRUOp0ZAAAAA==
- """,
+ androidx/constraintlayout/compose/MotionSceneScope$ConstrainedLayoutReferences.class:
+ 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
+ """,
"""
- androidx/constraintlayout/compose/MotionSceneScope$ConstrainedLayoutReferences.class:
- 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
- """,
+ androidx/constraintlayout/compose/MotionSceneScope.class:
+ H4sIAAAAAAAA/61VW08bRxT+Zm1ssxjHOOHqNCWBNuYS1qH0FmhacEtY11wK
+ KWrES4fdCVlY76KdNYI31H/Qp773F7RSC1EjRSiP/VFVz6yXJBgrUqLI0pkz
+ 35z5vpkz56z//e+f5wBm8JBhmnt24Dv2oWH5ngwD7nihy4/8RkhAfd+Xwlj2
+ Q8f3NizhiQ3L3xdpMIb8Lj/ghsu9HWN1e1dYYRoJhtSc4znhfYZEaWwziw6k
+ dCSRZkiGTxzJMFN7e7lZovXEYWjaDNdKY7VXwhth4Hg7tN7fii00HNcWQRrd
+ OnJKv3iuO9Wq69gZ5EmC7+8LjyTulC4rXBaNBWazKOCq0rhGKdmhIwc8FLZp
+ V/yGFzIwM4s+9HdCwwDD9ZL5ZqYhxVRkyIR+czGLD5BV4A2GbisQRL4uHstF
+ P2AQpa1a6yPQSd8+waOV80hh16JQ0hCB8CwhKbkjNT/YMXZFuK1CpME9zw+5
+ opDGih+uNFyXohKOLTMYYbix54eu4xm7B3WDtEXgcdcwPXUd6VgyjY8Yeq0n
+ wtqLN6/xgNcFBTLcLl2+UZvXoMq6jZKOjzHGsPJ+L5zGxHlxU224xnwQ8CNC
+ 71CJ0N6j1ccMY+0yb461AbMwUNYxhbsM1dK7FH+7N4466xMdk5hhuNomgoqF
+ W3QZOXreOEvvJN6m2bLoUhWp4UuGjtFmV+deFn5c9j21uAiWRchtHnI6kVY/
+ SNBHhynTqQyoPfYIP3TUrEyeTVn67ey4pGsDmq7lz451LaOcTHMkUEH5nhjO
+ 0XTg7HhaK7N7rHuh48XvKS2vVUfyqaFUOb2ulWmtkM8M6YVUhhUoqtx5i2wU
+ plcz+a4hrZxd0tZz+QR5yZ9e/JJTa8RKUEcLpI43zdSh195/ixXfsEwv3Mo2
+ tUc5TlZ8WzBcqdGmlUZ9WwQP+bZLSKHmW9zd5IGj5jFYXKeHcerC9A4c6RA0
+ /6qLGUZbV1/25IWwrOnRO1dcLqU6l77hNwJLLDpKYDCm2LxEj7tULUl6Yo1+
+ c+iPvL5oTFI66T+CbI1mhqoIGjvGT5H5MwpbJpuKwDRWyGabAeiETmNB1WK8
+ uUpkGo3Dz5B7dIorhZ4T9I7/hcG58WLy578xWDzB9RN8+EcLb+E13uGY91fy
+ biIR8Zqkpnh7JwqjTzH+DJOPxicmnj/F9Ck+vUiWQm9E1tfcEJMpbwSf0fpq
+ HHeLxjV1Jdac5AfxOb5ok4R7F/lZSxJmI/4EfiCrEzZJsVX0YD3a9T02aPyR
+ 8K8o9v4WEia+NvGNiXkskIuKiW/x3RaYxCIebCEnoUssSaQk5iKnT2JYwpQY
+ iaY3Jboip/o/WrVkd0EIAAA=
+ """,
"""
- androidx/constraintlayout/compose/MotionSceneScope.class:
- H4sIAAAAAAAA/61VW08bRxT+Zm1ssxjHOOHqNCWBNuYS1qH0FmhScEpZ11wK
- LWrES4fdCVlY76KdNYI31H/Qp773F7RSC1EjRSiP/VFVzqyXpBgrUqLI0pkz
- 35z5vpkz56z//e+f5wBmsMEwzT078B370LB8T4YBd7zQ5Ud+IySgvu9LYSz7
- oeN7G5bwxIbl74s0GEN+lx9ww+XejrG6vSusMI0EQ2rO8ZzwPkOiNLaZRQdS
- OpJIMyTDJ45kmKm9vdws0XriMDRthmulsdpr4Y0wcLwdWu9vxRYajmuLII1u
- HTmlXzzXnWrVdewM8iTB9/eFRxJ3SpcVLovGArNZFHBVaVyjlOzQkQMeCtu0
- K37DCxmYmUUf+juhYYDhesl8M9OQYioyZEK/uZjFB8gq8AZDtxUIIl8Xj+Wi
- HzCI0lat9RHopG+f4NHKeaSwa1EoaYhAeJaQlNyRmh/sGLsi3FYh0uCe54dc
- UUhjxQ9XGq5LUQnHlhmMMNzY80PX8Yzdg7pB2iLwuGuYnrqOdCyZxkcMvdYT
- Ye3Fm9d4wOuCAhluly7fqM1rUGXdRknHxxhjWHm/F05j4ry4qTZcYz4I+BGh
- d6hEaO/R6mOGsXaZN8fagFkYKOuYwl2Gauldir/dG0ed9YmOScwwXG0TQcXC
- LbqMHD1vnKV3Em/TbFl0qYrU8CVDx2izq3OvCj8u+55aXATLIuQ2DzmdSKsf
- JOijw5ShhmR7BB06alYmz6YE/XZ2XNK1AU3X8mfHupZRTqY5EqigfE8M52g6
- cHY8rZXZPda90PHi95SW16oj+dRQqpxe18q0VshnhvRCKsMKFFXuvEU2CtOr
- mXzXkFbOLmnruXyCvORPL37JqTViJaijBVLHm2Z0dKy9/+4qvmGZHreVbWqP
- 0pus+LZguFKjTSuN+rYIfuDbLiGFmm9xd5MHjprHYHGd3sSpC9M7cKRD0Pzr
- BmYYbV191Y4XwrKmR09ccbmU6lz6ht8ILLHoKIHBmGLzEj3uUqEk6Yk1+s2h
- P/L6ojFJ6aS/B7Lf0cygkTKMjvFTZP6MwmpkUxGYxjLZbDMAndBpLKgyjDdX
- iUyjcfgZco9OcaXQc4Le8b8wODdeTP78NwaLJ7h+gg//aOEt/I93OOb9lbyb
- SES8Jqkp3t6JwuhTjD/D5KPxiYnnTzF9ik8vkqXQG5H1NTfEZMobwWe0vhLH
- 3aJxNW4ANckP4nN80SYJ9y7ys5YkzEb8CayR1QmbpFgTPfg+2lXFOo0/Ev4V
- xd7fQsLEAxNfk8W8MgsmKni4BSbxDRa3kJPQJb6VSEnMRU6fxLDEksRINL0p
- 0RU55kuxHmQmPAgAAA==
- """,
+ androidx/constraintlayout/compose/MotionSceneScopeKt.class:
+ H4sIAAAAAAAA/2WQz04iQRDGvxoUEVdEFBXc7GG9M2C8eTIrJhNhdiO7xoSD
+ aYYOaRi6zUwP0RvZR9nH2IMhHvehNlYbjQle6s+vv1R91f/+/30EcILPhBOh
+ h4lRw3s/Mjq1iVDaxuLBZJbB9M6k0u8aq4zuRVLLXmTu5KVdAxHKYzETfiz0
+ yP8+GMuIaY5Q/RWety+CsH1+G55127c/rri7IVQ67/KeTZQenRJqb8sby8sL
+ WCMcdUwy8sfSDtxL6gutjRXOTOqHxoZZHPOQ7c7E2FhpvyutGAormHnTWY4v
+ JBfWXQCBJq7w+PFeuarJ1bBF+LKY54uLedErl76Wyot53WvSzdPvn09/8h5z
+ pzomN2Bn+SMaE0vY/OasC22vRZxJwuFVpq2aykDPVKoGsTx7d00o9kyWRPJC
+ xSytvUqvPwjRgoeVF9t1rCLP3YEzjwJqnPPM191VTOovcR+HnFvMi6zf6CMX
+ 4FOAzQAlbAUoYztABTt9UIpdVPvwUqym2HsG4yzy1wsCAAA=
"""
- androidx/constraintlayout/compose/MotionSceneScopeKt.class:
- H4sIAAAAAAAA/2WQTU8CMRCG3y7yISqC32DiQe+sGm6ejGKyEVYDSkw4mLI0
- pLC0ZLdL9Eb8Kf4MD4Z49EcZp0ZjopfpzNN3Zt72/ePlFUANuww1rvqRlv0H
- N9AqNhGXyoT8USeGwHiiY+E2tZFatQOhRDvQE3FpsmAMxSGfcjfkauBe9YYi
- IJpi2Lz1z+sXnl8/v/dPm/X76xZVdwxrjV9520RSDU4Yyj/Lq3+X55BlOGjo
- aOAOhenZm9jlSmnDrZnY9bXxkzCkIaXGSJtQKrcpDO9zw4k542mKXshsoEFs
- ZBOH+IO02SFl/SOGvfksk5/P8k6xsF8ozmcV55DdvT3dvD1nHOJWdcxoDNb/
- /kF1ZBhWzqxrrkyHh4lg2G0lysix8NRUxrIXitNfwwz5tk6iQFzIkKTlb2nn
- nxBHcLBgzaOCNDJUbVvzyGGHzgzxReCLlL/iFulAXbSB9EtdpDwse1ihiIKH
- VRQ9lLDWBYuxjo0unBjpGJufnYegJwYCAAA=
- """
)
@Test
diff --git a/docs-tip-of-tree/build.gradle b/docs-tip-of-tree/build.gradle
index 615e26d..9909498 100644
--- a/docs-tip-of-tree/build.gradle
+++ b/docs-tip-of-tree/build.gradle
@@ -398,6 +398,7 @@
docs(project(":wear:wear-input-testing"))
docs(project(":wear:wear-ongoing"))
docs(project(":wear:wear-phone-interactions"))
+ samples(project(":wear:wear-phone-interactions-samples"))
docs(project(":wear:wear-remote-interactions"))
docs(project(":webkit:webkit"))
docs(project(":window:window"))
diff --git a/graphics/graphics-core/api/1.0.0-beta01.txt b/graphics/graphics-core/api/1.0.0-beta01.txt
new file mode 100644
index 0000000..e1b45be
--- /dev/null
+++ b/graphics/graphics-core/api/1.0.0-beta01.txt
@@ -0,0 +1,559 @@
+// Signature format: 4.0
+package androidx.graphics {
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class CanvasBufferedRenderer implements java.lang.AutoCloseable {
+ method public void close();
+ method public int getBufferFormat();
+ method public int getMaxBuffers();
+ method public long getUsageFlags();
+ method public boolean isClosed();
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest obtainRenderRequest();
+ method public void releaseBuffer(android.hardware.HardwareBuffer hardwareBuffer, androidx.hardware.SyncFenceCompat? fence);
+ method public void setContentRoot(android.graphics.RenderNode renderNode);
+ method public void setLightSourceAlpha(float ambientShadowAlpha, float spotShadowAlpha);
+ method public void setLightSourceGeometry(float lightX, float lightY, float lightZ, float lightRadius);
+ property public final int bufferFormat;
+ property public final int maxBuffers;
+ property public final long usageFlags;
+ }
+
+ public static final class CanvasBufferedRenderer.Builder {
+ ctor public CanvasBufferedRenderer.Builder(int width, int height);
+ method public androidx.graphics.CanvasBufferedRenderer build();
+ method public androidx.graphics.CanvasBufferedRenderer.Builder setBufferFormat(int format);
+ method public androidx.graphics.CanvasBufferedRenderer.Builder setMaxBuffers(@IntRange(from=1L, to=64L) int numBuffers);
+ method public androidx.graphics.CanvasBufferedRenderer.Builder setUsageFlags(long usageFlags);
+ }
+
+ public final class CanvasBufferedRenderer.RenderRequest {
+ method public void draw(java.util.concurrent.Executor executor, androidx.core.util.Consumer<androidx.graphics.CanvasBufferedRenderer.RenderResult> callback);
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest preserveContents(boolean preserve);
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest setBufferTransform(int bufferTransform);
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest setColorSpace(android.graphics.ColorSpace? colorSpace);
+ }
+
+ public static final class CanvasBufferedRenderer.RenderResult {
+ ctor public CanvasBufferedRenderer.RenderResult(android.hardware.HardwareBuffer buffer, androidx.hardware.SyncFenceCompat? mFence, int mStatus);
+ method public androidx.hardware.SyncFenceCompat? getFence();
+ method public android.hardware.HardwareBuffer getHardwareBuffer();
+ method public int getStatus();
+ property public final androidx.hardware.SyncFenceCompat? fence;
+ property public final android.hardware.HardwareBuffer hardwareBuffer;
+ property public final int status;
+ field public static final androidx.graphics.CanvasBufferedRenderer.RenderResult.Companion Companion;
+ field public static final int ERROR_UNKNOWN = 1; // 0x1
+ field public static final int SUCCESS = 0; // 0x0
+ }
+
+ public static final class CanvasBufferedRenderer.RenderResult.Companion {
+ }
+
+}
+
+package androidx.graphics.lowlatency {
+
+ public final class BufferInfo {
+ method public int getFrameBufferId();
+ method public int getHeight();
+ method public int getWidth();
+ property public final int frameBufferId;
+ property public final int height;
+ property public final int width;
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class CanvasFrontBufferedRenderer<T> {
+ ctor public CanvasFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.CanvasFrontBufferedRenderer.Callback<T> callback);
+ ctor public CanvasFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.CanvasFrontBufferedRenderer.Callback<T> callback, optional int bufferFormat);
+ method public void cancel();
+ method public void clear();
+ method public void commit();
+ method public int getBufferFormat();
+ method public android.graphics.ColorSpace getColorSpace();
+ method public boolean isValid();
+ method public void release(boolean cancelPending);
+ method public void release(boolean cancelPending, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onReleaseComplete);
+ method public void renderFrontBufferedLayer(T param);
+ method public void renderMultiBufferedLayer(java.util.Collection<? extends T> params);
+ method public void setColorSpace(android.graphics.ColorSpace);
+ property public final int bufferFormat;
+ property public final android.graphics.ColorSpace colorSpace;
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface CanvasFrontBufferedRenderer.Callback<T> {
+ method @WorkerThread public void onDrawFrontBufferedLayer(android.graphics.Canvas canvas, int bufferWidth, int bufferHeight, T param);
+ method @WorkerThread public void onDrawMultiBufferedLayer(android.graphics.Canvas canvas, int bufferWidth, int bufferHeight, java.util.Collection<? extends T> params);
+ method @WorkerThread public default void onFrontBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ method @WorkerThread public default void onMultiBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat multiBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ }
+
+ public final class FrontBufferSyncStrategy implements androidx.graphics.opengl.SyncStrategy {
+ ctor public FrontBufferSyncStrategy(long usageFlags);
+ method @RequiresApi(android.os.Build.VERSION_CODES.KITKAT) public androidx.hardware.SyncFenceCompat? createSyncFence(androidx.graphics.opengl.egl.EGLSpec eglSpec);
+ method public boolean isVisible();
+ method public void setVisible(boolean);
+ property public final boolean isVisible;
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class GLFrontBufferedRenderer<T> {
+ ctor public GLFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.GLFrontBufferedRenderer.Callback<T> callback);
+ ctor public GLFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.GLFrontBufferedRenderer.Callback<T> callback, optional androidx.graphics.opengl.GLRenderer? glRenderer);
+ ctor public GLFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.GLFrontBufferedRenderer.Callback<T> callback, optional androidx.graphics.opengl.GLRenderer? glRenderer, optional int bufferFormat);
+ method public void cancel();
+ method public void clear();
+ method public void commit();
+ method public void execute(Runnable runnable);
+ method public int getBufferFormat();
+ method public boolean isValid();
+ method public void release(boolean cancelPending);
+ method public void release(boolean cancelPending, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onReleaseComplete);
+ method public void renderFrontBufferedLayer(T param);
+ method public void renderMultiBufferedLayer(java.util.Collection<? extends T> params);
+ property public final int bufferFormat;
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface GLFrontBufferedRenderer.Callback<T> {
+ method @WorkerThread public void onDrawFrontBufferedLayer(androidx.graphics.opengl.egl.EGLManager eglManager, int width, int height, androidx.graphics.lowlatency.BufferInfo bufferInfo, float[] transform, T param);
+ method @WorkerThread public void onDrawMultiBufferedLayer(androidx.graphics.opengl.egl.EGLManager eglManager, int width, int height, androidx.graphics.lowlatency.BufferInfo bufferInfo, float[] transform, java.util.Collection<? extends T> params);
+ method @WorkerThread public default void onFrontBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ method @WorkerThread public default void onMultiBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat multiBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class LowLatencyCanvasView extends android.view.ViewGroup {
+ ctor public LowLatencyCanvasView(android.content.Context context);
+ ctor public LowLatencyCanvasView(android.content.Context context, optional android.util.AttributeSet? attrs);
+ ctor public LowLatencyCanvasView(android.content.Context context, optional android.util.AttributeSet? attrs, optional int defStyle);
+ method public void cancel();
+ method public void clear();
+ method public void commit();
+ method public void execute(Runnable runnable);
+ method public void renderFrontBufferedLayer();
+ method public void setRenderCallback(androidx.graphics.lowlatency.LowLatencyCanvasView.Callback? callback);
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface LowLatencyCanvasView.Callback {
+ method @WorkerThread public void onDrawFrontBufferedLayer(android.graphics.Canvas canvas, int width, int height);
+ method @WorkerThread public default void onFrontBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ method @WorkerThread public void onRedrawRequested(android.graphics.Canvas canvas, int width, int height);
+ }
+
+}
+
+package androidx.graphics.opengl {
+
+ @RequiresApi(android.os.Build.VERSION_CODES.O) public final class FrameBuffer implements java.lang.AutoCloseable {
+ ctor public FrameBuffer(androidx.graphics.opengl.egl.EGLSpec egl, android.hardware.HardwareBuffer hardwareBuffer);
+ method public void close();
+ method public android.hardware.HardwareBuffer getHardwareBuffer();
+ method public boolean isClosed();
+ method public void makeCurrent();
+ property public final android.hardware.HardwareBuffer hardwareBuffer;
+ property public final boolean isClosed;
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.O) public final class FrameBufferRenderer implements androidx.graphics.opengl.GLRenderer.RenderCallback {
+ ctor public FrameBufferRenderer(androidx.graphics.opengl.FrameBufferRenderer.RenderCallback frameBufferRendererCallbacks, optional androidx.graphics.opengl.SyncStrategy syncStrategy);
+ method public void clear();
+ method public void onDrawFrame(androidx.graphics.opengl.egl.EGLManager eglManager);
+ }
+
+ public static interface FrameBufferRenderer.RenderCallback {
+ method public androidx.graphics.opengl.FrameBuffer obtainFrameBuffer(androidx.graphics.opengl.egl.EGLSpec egl);
+ method public void onDraw(androidx.graphics.opengl.egl.EGLManager eglManager);
+ method public void onDrawComplete(androidx.graphics.opengl.FrameBuffer frameBuffer, androidx.hardware.SyncFenceCompat? syncFenceCompat);
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class GLFrameBufferRenderer {
+ method public void execute(Runnable runnable);
+ method public int getBufferFormat();
+ method public androidx.graphics.opengl.GLRenderer getGLRenderer();
+ method public int getMaxBuffers();
+ method public androidx.graphics.opengl.SyncStrategy getSyncStrategy();
+ method public long getUsageFlags();
+ method public boolean isValid();
+ method public void release(boolean cancelPending);
+ method public void release(boolean cancelPending, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onReleaseCallback);
+ method public void render();
+ property public final int bufferFormat;
+ property public final androidx.graphics.opengl.GLRenderer glRenderer;
+ property public final int maxBuffers;
+ property public final androidx.graphics.opengl.SyncStrategy syncStrategy;
+ property public final long usageFlags;
+ }
+
+ public static final class GLFrameBufferRenderer.Builder {
+ ctor public GLFrameBufferRenderer.Builder(android.view.SurfaceView surfaceView, androidx.graphics.opengl.GLFrameBufferRenderer.Callback callback);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer build();
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setBufferFormat(int format);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setGLRenderer(androidx.graphics.opengl.GLRenderer? glRenderer);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setMaxBuffers(@IntRange(from=1L, to=64L) int numBuffers);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setSyncStrategy(androidx.graphics.opengl.SyncStrategy syncStrategy);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setUsageFlags(long usageFlags);
+ }
+
+ public static interface GLFrameBufferRenderer.Callback {
+ method @WorkerThread public default void onBufferReleased(androidx.graphics.opengl.FrameBuffer frameBuffer, androidx.hardware.SyncFenceCompat? releaseFence);
+ method @WorkerThread public default void onDrawComplete(androidx.graphics.surface.SurfaceControlCompat targetSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction, androidx.graphics.opengl.FrameBuffer frameBuffer, androidx.hardware.SyncFenceCompat? syncFence);
+ method @WorkerThread public void onDrawFrame(androidx.graphics.opengl.egl.EGLManager eglManager, int width, int height, androidx.graphics.lowlatency.BufferInfo bufferInfo, float[] transform);
+ }
+
+ public final class GLRenderer {
+ ctor public GLRenderer(optional kotlin.jvm.functions.Function0<? extends androidx.graphics.opengl.egl.EGLSpec> eglSpecFactory, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.egl.EGLManager,? extends android.opengl.EGLConfig> eglConfigFactory);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget attach(android.view.Surface surface, int width, int height, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget attach(android.view.SurfaceView surfaceView, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget attach(android.view.TextureView textureView, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget createRenderTarget(int width, int height, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public void detach(androidx.graphics.opengl.GLRenderer.RenderTarget target, boolean cancelPending);
+ method public void detach(androidx.graphics.opengl.GLRenderer.RenderTarget target, boolean cancelPending, optional @WorkerThread kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onDetachComplete);
+ method public void execute(Runnable runnable);
+ method public boolean isRunning();
+ method public void registerEGLContextCallback(androidx.graphics.opengl.GLRenderer.EGLContextCallback callback);
+ method public void requestRender(androidx.graphics.opengl.GLRenderer.RenderTarget target);
+ method public void requestRender(androidx.graphics.opengl.GLRenderer.RenderTarget target, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onRenderComplete);
+ method public void resize(androidx.graphics.opengl.GLRenderer.RenderTarget target, int width, int height);
+ method public void resize(androidx.graphics.opengl.GLRenderer.RenderTarget target, int width, int height, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onResizeComplete);
+ method public void start();
+ method public void start(optional String name);
+ method public void stop(boolean cancelPending);
+ method public void stop(boolean cancelPending, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer,kotlin.Unit>? onStop);
+ method public void unregisterEGLContextCallback(androidx.graphics.opengl.GLRenderer.EGLContextCallback callback);
+ field public static final androidx.graphics.opengl.GLRenderer.Companion Companion;
+ }
+
+ public static final class GLRenderer.Companion {
+ }
+
+ public static interface GLRenderer.EGLContextCallback {
+ method @WorkerThread public void onEGLContextCreated(androidx.graphics.opengl.egl.EGLManager eglManager);
+ method @WorkerThread public void onEGLContextDestroyed(androidx.graphics.opengl.egl.EGLManager eglManager);
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface GLRenderer.RenderCallback {
+ method @WorkerThread public void onDrawFrame(androidx.graphics.opengl.egl.EGLManager eglManager);
+ method @WorkerThread public default android.opengl.EGLSurface? onSurfaceCreated(androidx.graphics.opengl.egl.EGLSpec spec, android.opengl.EGLConfig config, android.view.Surface surface, int width, int height);
+ }
+
+ public static final class GLRenderer.RenderTarget {
+ method public void detach(boolean cancelPending);
+ method public void detach(boolean cancelPending, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onDetachComplete);
+ method public boolean isAttached();
+ method public void requestRender();
+ method public void requestRender(optional @WorkerThread kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onRenderComplete);
+ method public void resize(int width, int height);
+ method public void resize(int width, int height, optional @WorkerThread kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onResizeComplete);
+ }
+
+ public interface SyncStrategy {
+ method @RequiresApi(android.os.Build.VERSION_CODES.KITKAT) public androidx.hardware.SyncFenceCompat? createSyncFence(androidx.graphics.opengl.egl.EGLSpec eglSpec);
+ field public static final androidx.graphics.opengl.SyncStrategy ALWAYS;
+ field public static final androidx.graphics.opengl.SyncStrategy.Companion Companion;
+ }
+
+ public static final class SyncStrategy.Companion {
+ }
+
+}
+
+package androidx.graphics.opengl.egl {
+
+ public final class EGLConfigAttributes {
+ method public int[] toArray();
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes.Companion Companion;
+ field public static final int EGL_COLOR_COMPONENT_TYPE_EXT = 13113; // 0x3339
+ field public static final int EGL_COLOR_COMPONENT_TYPE_FIXED_EXT = 13114; // 0x333a
+ field public static final int EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT = 13115; // 0x333b
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes RGBA_1010102;
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes RGBA_8888;
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes RGBA_F16;
+ }
+
+ public static final class EGLConfigAttributes.Builder {
+ method public androidx.graphics.opengl.egl.EGLConfigAttributes build();
+ method public void include(androidx.graphics.opengl.egl.EGLConfigAttributes attributes);
+ method public androidx.graphics.opengl.egl.EGLConfigAttributes.Builder setAttribute(int attribute, int value);
+ method @kotlin.jvm.JvmSynthetic public infix void to(int, int that);
+ }
+
+ public static final class EGLConfigAttributes.Companion {
+ }
+
+ public final class EGLConfigAttributesKt {
+ method @kotlin.jvm.JvmSynthetic public static inline androidx.graphics.opengl.egl.EGLConfigAttributes EGLConfigAttributes(kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.egl.EGLConfigAttributes.Builder,kotlin.Unit> block);
+ }
+
+ public final class EGLException extends java.lang.RuntimeException {
+ ctor public EGLException(int error, optional String msg);
+ method public int getError();
+ method public String getMsg();
+ property public final int error;
+ property public String message;
+ property public final String msg;
+ }
+
+ public final class EGLManager {
+ ctor public EGLManager(optional androidx.graphics.opengl.egl.EGLSpec eglSpec);
+ method public android.opengl.EGLContext createContext(android.opengl.EGLConfig config);
+ method public android.opengl.EGLSurface getCurrentDrawSurface();
+ method public android.opengl.EGLSurface getCurrentReadSurface();
+ method public android.opengl.EGLSurface getDefaultSurface();
+ method public android.opengl.EGLConfig? getEGLConfig();
+ method public android.opengl.EGLContext? getEGLContext();
+ method public androidx.graphics.opengl.egl.EGLSpec getEGLSpec();
+ method public androidx.graphics.opengl.egl.EGLVersion getEGLVersion();
+ method public void initialize();
+ method public boolean isExtensionSupported(String extensionName);
+ method public android.opengl.EGLConfig? loadConfig(androidx.graphics.opengl.egl.EGLConfigAttributes configAttributes);
+ method public boolean makeCurrent(android.opengl.EGLSurface drawSurface);
+ method public boolean makeCurrent(android.opengl.EGLSurface drawSurface, optional android.opengl.EGLSurface readSurface);
+ method public void release();
+ method public void swapAndFlushBuffers();
+ property public final android.opengl.EGLSurface currentDrawSurface;
+ property public final android.opengl.EGLSurface currentReadSurface;
+ property public final android.opengl.EGLSurface defaultSurface;
+ property public final android.opengl.EGLConfig? eglConfig;
+ property public final android.opengl.EGLContext? eglContext;
+ property public final androidx.graphics.opengl.egl.EGLSpec eglSpec;
+ property public final androidx.graphics.opengl.egl.EGLVersion eglVersion;
+ field public static final androidx.graphics.opengl.egl.EGLManager.Companion Companion;
+ }
+
+ public static final class EGLManager.Companion {
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public interface EGLSpec {
+ method public int eglClientWaitSyncKHR(androidx.opengl.EGLSyncKHR sync, int flags, long timeoutNanos);
+ method public android.opengl.EGLContext eglCreateContext(android.opengl.EGLConfig config);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.opengl.EGLImageKHR? eglCreateImageFromHardwareBuffer(android.hardware.HardwareBuffer hardwareBuffer);
+ method public android.opengl.EGLSurface eglCreatePBufferSurface(android.opengl.EGLConfig config, androidx.graphics.opengl.egl.EGLConfigAttributes? configAttributes);
+ method public androidx.opengl.EGLSyncKHR? eglCreateSyncKHR(int type, androidx.graphics.opengl.egl.EGLConfigAttributes? attributes);
+ method public android.opengl.EGLSurface eglCreateWindowSurface(android.opengl.EGLConfig config, android.view.Surface surface, androidx.graphics.opengl.egl.EGLConfigAttributes? configAttributes);
+ method public void eglDestroyContext(android.opengl.EGLContext eglContext);
+ method public boolean eglDestroyImageKHR(androidx.opengl.EGLImageKHR image);
+ method public boolean eglDestroySurface(android.opengl.EGLSurface surface);
+ method public boolean eglDestroySyncKHR(androidx.opengl.EGLSyncKHR sync);
+ method public android.opengl.EGLSurface eglGetCurrentDrawSurface();
+ method public android.opengl.EGLSurface eglGetCurrentReadSurface();
+ method public int eglGetError();
+ method public boolean eglGetSyncAttribKHR(androidx.opengl.EGLSyncKHR sync, int attribute, int[] value, int offset);
+ method public androidx.graphics.opengl.egl.EGLVersion eglInitialize();
+ method public boolean eglMakeCurrent(android.opengl.EGLContext context, android.opengl.EGLSurface drawSurface, android.opengl.EGLSurface readSurface);
+ method public String eglQueryString(int nameId);
+ method public boolean eglQuerySurface(android.opengl.EGLSurface surface, int attribute, int[] result, int offset);
+ method public boolean eglSwapBuffers(android.opengl.EGLSurface surface);
+ method public default String getErrorMessage();
+ method public static String getStatusString(int error);
+ method public android.opengl.EGLConfig? loadConfig(androidx.graphics.opengl.egl.EGLConfigAttributes configAttributes);
+ field public static final androidx.graphics.opengl.egl.EGLSpec.Companion Companion;
+ field public static final androidx.graphics.opengl.egl.EGLSpec V14;
+ }
+
+ public static final class EGLSpec.Companion {
+ method public String getStatusString(int error);
+ }
+
+ public final class EGLVersion {
+ ctor public EGLVersion(int major, int minor);
+ method public int component1();
+ method public int component2();
+ method public androidx.graphics.opengl.egl.EGLVersion copy(int major, int minor);
+ method public int getMajor();
+ method public int getMinor();
+ property public final int major;
+ property public final int minor;
+ field public static final androidx.graphics.opengl.egl.EGLVersion.Companion Companion;
+ field public static final androidx.graphics.opengl.egl.EGLVersion Unknown;
+ field public static final androidx.graphics.opengl.egl.EGLVersion V14;
+ field public static final androidx.graphics.opengl.egl.EGLVersion V15;
+ }
+
+ public static final class EGLVersion.Companion {
+ }
+
+}
+
+package androidx.graphics.surface {
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class SurfaceControlCompat {
+ method public boolean isValid();
+ method public void release();
+ field public static final int BUFFER_TRANSFORM_IDENTITY = 0; // 0x0
+ field public static final int BUFFER_TRANSFORM_MIRROR_HORIZONTAL = 1; // 0x1
+ field public static final int BUFFER_TRANSFORM_MIRROR_VERTICAL = 2; // 0x2
+ field public static final int BUFFER_TRANSFORM_ROTATE_180 = 3; // 0x3
+ field public static final int BUFFER_TRANSFORM_ROTATE_270 = 7; // 0x7
+ field public static final int BUFFER_TRANSFORM_ROTATE_90 = 4; // 0x4
+ field public static final int CHANGE_FRAME_RATE_ALWAYS = 1; // 0x1
+ field public static final int CHANGE_FRAME_RATE_ONLY_IF_SEAMLESS = 0; // 0x0
+ field public static final androidx.graphics.surface.SurfaceControlCompat.Companion Companion;
+ field public static final int FRAME_RATE_COMPATIBILITY_DEFAULT = 0; // 0x0
+ field public static final int FRAME_RATE_COMPATIBILITY_FIXED_SOURCE = 1; // 0x1
+ }
+
+ public static final class SurfaceControlCompat.Builder {
+ ctor public SurfaceControlCompat.Builder();
+ method public androidx.graphics.surface.SurfaceControlCompat build();
+ method public androidx.graphics.surface.SurfaceControlCompat.Builder setName(String name);
+ method public androidx.graphics.surface.SurfaceControlCompat.Builder setParent(android.view.SurfaceView surfaceView);
+ method public androidx.graphics.surface.SurfaceControlCompat.Builder setParent(androidx.graphics.surface.SurfaceControlCompat surfaceControl);
+ }
+
+ public static final class SurfaceControlCompat.Companion {
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final class SurfaceControlCompat.Transaction implements java.lang.AutoCloseable {
+ ctor public SurfaceControlCompat.Transaction();
+ method @RequiresApi(android.os.Build.VERSION_CODES.S) public androidx.graphics.surface.SurfaceControlCompat.Transaction addTransactionCommittedListener(java.util.concurrent.Executor executor, androidx.graphics.surface.SurfaceControlCompat.TransactionCommittedListener listener);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction clearFrameRate(androidx.graphics.surface.SurfaceControlCompat surfaceControl);
+ method public void close();
+ method public void commit();
+ method @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public void commitTransactionOnDraw(android.view.AttachedSurfaceControl attachedSurfaceControl);
+ method @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public androidx.graphics.surface.SurfaceControlCompat.Transaction reparent(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.view.AttachedSurfaceControl attachedSurfaceControl);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction reparent(androidx.graphics.surface.SurfaceControlCompat surfaceControl, androidx.graphics.surface.SurfaceControlCompat? newParent);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setAlpha(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float alpha);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBuffer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.hardware.HardwareBuffer? buffer);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBuffer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.hardware.HardwareBuffer? buffer, optional androidx.hardware.SyncFenceCompat? fence);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBuffer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.hardware.HardwareBuffer? buffer, optional androidx.hardware.SyncFenceCompat? fence, optional kotlin.jvm.functions.Function1<? super androidx.hardware.SyncFenceCompat,kotlin.Unit>? releaseCallback);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBufferTransform(androidx.graphics.surface.SurfaceControlCompat surfaceControl, int transformation);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setCrop(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.graphics.Rect? crop);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setDamageRegion(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.graphics.Region? region);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setDataSpace(androidx.graphics.surface.SurfaceControlCompat surfaceControl, int dataSpace);
+ method @RequiresApi(android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public androidx.graphics.surface.SurfaceControlCompat.Transaction setExtendedRangeBrightness(androidx.graphics.surface.SurfaceControlCompat surfaceControl, @FloatRange(from=1.0, fromInclusive=true) float currentBufferRatio, @FloatRange(from=1.0, fromInclusive=true) float desiredRatio);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setFrameRate(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float frameRate, int compatibility, int changeFrameRateStrategy);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setLayer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, int z);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setOpaque(androidx.graphics.surface.SurfaceControlCompat surfaceControl, boolean isOpaque);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setPosition(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float x, float y);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setScale(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float scaleX, float scaleY);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setVisibility(androidx.graphics.surface.SurfaceControlCompat surfaceControl, boolean visible);
+ }
+
+ public static interface SurfaceControlCompat.TransactionCommittedListener {
+ method public void onTransactionCommitted();
+ }
+
+}
+
+package androidx.hardware {
+
+ public final class DataSpace {
+ field public static final androidx.hardware.DataSpace.Companion Companion;
+ field public static final int DATASPACE_ADOBE_RGB = 151715840; // 0x90b0000
+ field public static final int DATASPACE_BT2020 = 147193856; // 0x8c60000
+ field public static final int DATASPACE_BT2020_HLG = 168165376; // 0xa060000
+ field public static final int DATASPACE_BT2020_PQ = 163971072; // 0x9c60000
+ field public static final int DATASPACE_BT601_525 = 281280512; // 0x10c40000
+ field public static final int DATASPACE_BT601_625 = 281149440; // 0x10c20000
+ field public static final int DATASPACE_BT709 = 281083904; // 0x10c10000
+ field public static final int DATASPACE_DCI_P3 = 155844608; // 0x94a0000
+ field public static final int DATASPACE_DEPTH = 4096; // 0x1000
+ field public static final int DATASPACE_DISPLAY_P3 = 143261696; // 0x88a0000
+ field public static final int DATASPACE_DYNAMIC_DEPTH = 4098; // 0x1002
+ field public static final int DATASPACE_HEIF = 4100; // 0x1004
+ field public static final int DATASPACE_JFIF = 146931712; // 0x8c20000
+ field public static final int DATASPACE_JPEG_R = 4101; // 0x1005
+ field public static final int DATASPACE_SCRGB = 411107328; // 0x18810000
+ field public static final int DATASPACE_SCRGB_LINEAR = 406913024; // 0x18410000
+ field public static final int DATASPACE_SRGB = 142671872; // 0x8810000
+ field public static final int DATASPACE_SRGB_LINEAR = 138477568; // 0x8410000
+ field public static final int DATASPACE_UNKNOWN = 0; // 0x0
+ field public static final int RANGE_EXTENDED = 402653184; // 0x18000000
+ field public static final int RANGE_FULL = 134217728; // 0x8000000
+ field public static final int RANGE_LIMITED = 268435456; // 0x10000000
+ field public static final int RANGE_UNSPECIFIED = 0; // 0x0
+ }
+
+ public static final class DataSpace.Companion {
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.KITKAT) public final class SyncFenceCompat implements java.lang.AutoCloseable {
+ method public boolean await(long timeoutNanos);
+ method public boolean awaitForever();
+ method public void close();
+ method public static androidx.hardware.SyncFenceCompat createNativeSyncFence();
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public long getSignalTimeNanos();
+ method public boolean isValid();
+ field public static final androidx.hardware.SyncFenceCompat.Companion Companion;
+ field public static final long SIGNAL_TIME_INVALID = -1L; // 0xffffffffffffffffL
+ field public static final long SIGNAL_TIME_PENDING = 9223372036854775807L; // 0x7fffffffffffffffL
+ }
+
+ public static final class SyncFenceCompat.Companion {
+ method public androidx.hardware.SyncFenceCompat createNativeSyncFence();
+ }
+
+}
+
+package androidx.opengl {
+
+ public final class EGLExt {
+ method public static int eglClientWaitSyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int flags, long timeoutNanos);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.opengl.EGLImageKHR? eglCreateImageFromHardwareBuffer(android.opengl.EGLDisplay eglDisplay, android.hardware.HardwareBuffer hardwareBuffer);
+ method public static androidx.opengl.EGLSyncKHR? eglCreateSyncKHR(android.opengl.EGLDisplay eglDisplay, int type, androidx.graphics.opengl.egl.EGLConfigAttributes? attributes);
+ method public static boolean eglDestroyImageKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLImageKHR image);
+ method public static boolean eglDestroySyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR eglSync);
+ method public static boolean eglGetSyncAttribKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int attribute, int[] value, int offset);
+ method public static void glEGLImageTargetTexture2DOES(int target, androidx.opengl.EGLImageKHR image);
+ method public static java.util.Set<java.lang.String> parseExtensions(String queryString);
+ field public static final androidx.opengl.EGLExt.Companion Companion;
+ field public static final String EGL_ANDROID_CLIENT_BUFFER = "EGL_ANDROID_get_native_client_buffer";
+ field public static final String EGL_ANDROID_IMAGE_NATIVE_BUFFER = "EGL_ANDROID_image_native_buffer";
+ field public static final String EGL_ANDROID_NATIVE_FENCE_SYNC = "EGL_ANDROID_native_fence_sync";
+ field public static final int EGL_CONDITION_SATISFIED_KHR = 12534; // 0x30f6
+ field public static final String EGL_EXT_BUFFER_AGE = "EGL_EXT_buffer_age";
+ field public static final String EGL_EXT_GL_COLORSPACE_BT2020_PQ = "EGL_EXT_gl_colorspace_bt2020_pq";
+ field public static final String EGL_EXT_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH = "EGL_EXT_gl_colorspace_display_p3_passthrough";
+ field public static final String EGL_EXT_GL_COLORSPACE_SCRGB = "EGL_EXT_gl_colorspace_scrgb";
+ field public static final String EGL_EXT_PIXEL_FORMAT_FLOAT = "EGL_EXT_pixel_format_float";
+ field public static final int EGL_FALSE = 0; // 0x0
+ field public static final long EGL_FOREVER_KHR = -1L; // 0xffffffffffffffffL
+ field public static final String EGL_IMG_CONTEXT_PRIORITY = "EGL_IMG_context_priority";
+ field public static final String EGL_KHR_FENCE_SYNC = "EGL_KHR_fence_sync";
+ field public static final String EGL_KHR_GL_COLORSPACE = "EGL_KHR_gl_colorspace";
+ field public static final String EGL_KHR_IMAGE = "EGL_KHR_image";
+ field public static final String EGL_KHR_IMAGE_BASE = "EGL_KHR_image_base";
+ field public static final String EGL_KHR_NO_CONFIG_CONTEXT = "EGL_KHR_no_config_context";
+ field public static final String EGL_KHR_PARTIAL_UPDATE = "EGL_KHR_partial_update";
+ field public static final String EGL_KHR_SURFACELESS_CONTEXT = "EGL_KHR_surfaceless_context";
+ field public static final String EGL_KHR_SWAP_BUFFERS_WITH_DAMAGE = "EGL_KHR_swap_buffers_with_damage";
+ field public static final String EGL_KHR_WAIT_SYNC = "EGL_KHR_wait_sync";
+ field public static final int EGL_SIGNALED_KHR = 12530; // 0x30f2
+ field public static final int EGL_SYNC_CONDITION_KHR = 12536; // 0x30f8
+ field public static final int EGL_SYNC_FENCE_KHR = 12537; // 0x30f9
+ field public static final int EGL_SYNC_FLUSH_COMMANDS_BIT_KHR = 1; // 0x1
+ field public static final int EGL_SYNC_NATIVE_FENCE_ANDROID = 12612; // 0x3144
+ field public static final int EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR = 12528; // 0x30f0
+ field public static final int EGL_SYNC_STATUS_KHR = 12529; // 0x30f1
+ field public static final int EGL_SYNC_TYPE_KHR = 12535; // 0x30f7
+ field public static final int EGL_TIMEOUT_EXPIRED_KHR = 12533; // 0x30f5
+ field public static final int EGL_TRUE = 1; // 0x1
+ field public static final int EGL_UNSIGNALED_KHR = 12531; // 0x30f3
+ }
+
+ public static final class EGLExt.Companion {
+ method public int eglClientWaitSyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int flags, long timeoutNanos);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.opengl.EGLImageKHR? eglCreateImageFromHardwareBuffer(android.opengl.EGLDisplay eglDisplay, android.hardware.HardwareBuffer hardwareBuffer);
+ method public androidx.opengl.EGLSyncKHR? eglCreateSyncKHR(android.opengl.EGLDisplay eglDisplay, int type, androidx.graphics.opengl.egl.EGLConfigAttributes? attributes);
+ method public boolean eglDestroyImageKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLImageKHR image);
+ method public boolean eglDestroySyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR eglSync);
+ method public boolean eglGetSyncAttribKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int attribute, int[] value, int offset);
+ method public void glEGLImageTargetTexture2DOES(int target, androidx.opengl.EGLImageKHR image);
+ method public java.util.Set<java.lang.String> parseExtensions(String queryString);
+ }
+
+ public interface EGLHandle {
+ method public long getNativeHandle();
+ property public abstract long nativeHandle;
+ }
+
+ public final class EGLImageKHR implements androidx.opengl.EGLHandle {
+ ctor public EGLImageKHR(long nativeHandle);
+ method public long getNativeHandle();
+ property public long nativeHandle;
+ }
+
+ public final class EGLSyncKHR implements androidx.opengl.EGLHandle {
+ ctor public EGLSyncKHR(long nativeHandle);
+ method public long getNativeHandle();
+ property public long nativeHandle;
+ }
+
+}
+
diff --git a/graphics/graphics-core/api/res-1.0.0-beta01.txt b/graphics/graphics-core/api/res-1.0.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/graphics/graphics-core/api/res-1.0.0-beta01.txt
diff --git a/graphics/graphics-core/api/restricted_1.0.0-beta01.txt b/graphics/graphics-core/api/restricted_1.0.0-beta01.txt
new file mode 100644
index 0000000..74ac194
--- /dev/null
+++ b/graphics/graphics-core/api/restricted_1.0.0-beta01.txt
@@ -0,0 +1,560 @@
+// Signature format: 4.0
+package androidx.graphics {
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class CanvasBufferedRenderer implements java.lang.AutoCloseable {
+ method public void close();
+ method public int getBufferFormat();
+ method public int getMaxBuffers();
+ method public long getUsageFlags();
+ method public boolean isClosed();
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest obtainRenderRequest();
+ method public void releaseBuffer(android.hardware.HardwareBuffer hardwareBuffer, androidx.hardware.SyncFenceCompat? fence);
+ method public void setContentRoot(android.graphics.RenderNode renderNode);
+ method public void setLightSourceAlpha(float ambientShadowAlpha, float spotShadowAlpha);
+ method public void setLightSourceGeometry(float lightX, float lightY, float lightZ, float lightRadius);
+ property public final int bufferFormat;
+ property public final int maxBuffers;
+ property public final long usageFlags;
+ }
+
+ public static final class CanvasBufferedRenderer.Builder {
+ ctor public CanvasBufferedRenderer.Builder(int width, int height);
+ method public androidx.graphics.CanvasBufferedRenderer build();
+ method public androidx.graphics.CanvasBufferedRenderer.Builder setBufferFormat(int format);
+ method public androidx.graphics.CanvasBufferedRenderer.Builder setMaxBuffers(@IntRange(from=1L, to=64L) int numBuffers);
+ method public androidx.graphics.CanvasBufferedRenderer.Builder setUsageFlags(long usageFlags);
+ }
+
+ public final class CanvasBufferedRenderer.RenderRequest {
+ method public void draw(java.util.concurrent.Executor executor, androidx.core.util.Consumer<androidx.graphics.CanvasBufferedRenderer.RenderResult> callback);
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest preserveContents(boolean preserve);
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest setBufferTransform(int bufferTransform);
+ method public androidx.graphics.CanvasBufferedRenderer.RenderRequest setColorSpace(android.graphics.ColorSpace? colorSpace);
+ }
+
+ public static final class CanvasBufferedRenderer.RenderResult {
+ ctor public CanvasBufferedRenderer.RenderResult(android.hardware.HardwareBuffer buffer, androidx.hardware.SyncFenceCompat? mFence, int mStatus);
+ method public androidx.hardware.SyncFenceCompat? getFence();
+ method public android.hardware.HardwareBuffer getHardwareBuffer();
+ method public int getStatus();
+ property public final androidx.hardware.SyncFenceCompat? fence;
+ property public final android.hardware.HardwareBuffer hardwareBuffer;
+ property public final int status;
+ field public static final androidx.graphics.CanvasBufferedRenderer.RenderResult.Companion Companion;
+ field public static final int ERROR_UNKNOWN = 1; // 0x1
+ field public static final int SUCCESS = 0; // 0x0
+ }
+
+ public static final class CanvasBufferedRenderer.RenderResult.Companion {
+ }
+
+}
+
+package androidx.graphics.lowlatency {
+
+ public final class BufferInfo {
+ method public int getFrameBufferId();
+ method public int getHeight();
+ method public int getWidth();
+ property public final int frameBufferId;
+ property public final int height;
+ property public final int width;
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class CanvasFrontBufferedRenderer<T> {
+ ctor public CanvasFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.CanvasFrontBufferedRenderer.Callback<T> callback);
+ ctor public CanvasFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.CanvasFrontBufferedRenderer.Callback<T> callback, optional int bufferFormat);
+ method public void cancel();
+ method public void clear();
+ method public void commit();
+ method public int getBufferFormat();
+ method public android.graphics.ColorSpace getColorSpace();
+ method public boolean isValid();
+ method public void release(boolean cancelPending);
+ method public void release(boolean cancelPending, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onReleaseComplete);
+ method public void renderFrontBufferedLayer(T param);
+ method public void renderMultiBufferedLayer(java.util.Collection<? extends T> params);
+ method public void setColorSpace(android.graphics.ColorSpace);
+ property public final int bufferFormat;
+ property public final android.graphics.ColorSpace colorSpace;
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface CanvasFrontBufferedRenderer.Callback<T> {
+ method @WorkerThread public void onDrawFrontBufferedLayer(android.graphics.Canvas canvas, int bufferWidth, int bufferHeight, T param);
+ method @WorkerThread public void onDrawMultiBufferedLayer(android.graphics.Canvas canvas, int bufferWidth, int bufferHeight, java.util.Collection<? extends T> params);
+ method @WorkerThread public default void onFrontBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ method @WorkerThread public default void onMultiBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat multiBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ }
+
+ public final class FrontBufferSyncStrategy implements androidx.graphics.opengl.SyncStrategy {
+ ctor public FrontBufferSyncStrategy(long usageFlags);
+ method @RequiresApi(android.os.Build.VERSION_CODES.KITKAT) public androidx.hardware.SyncFenceCompat? createSyncFence(androidx.graphics.opengl.egl.EGLSpec eglSpec);
+ method public boolean isVisible();
+ method public void setVisible(boolean);
+ property public final boolean isVisible;
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class GLFrontBufferedRenderer<T> {
+ ctor public GLFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.GLFrontBufferedRenderer.Callback<T> callback);
+ ctor public GLFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.GLFrontBufferedRenderer.Callback<T> callback, optional androidx.graphics.opengl.GLRenderer? glRenderer);
+ ctor public GLFrontBufferedRenderer(android.view.SurfaceView surfaceView, androidx.graphics.lowlatency.GLFrontBufferedRenderer.Callback<T> callback, optional androidx.graphics.opengl.GLRenderer? glRenderer, optional int bufferFormat);
+ method public void cancel();
+ method public void clear();
+ method public void commit();
+ method public void execute(Runnable runnable);
+ method public int getBufferFormat();
+ method public boolean isValid();
+ method public void release(boolean cancelPending);
+ method public void release(boolean cancelPending, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onReleaseComplete);
+ method public void renderFrontBufferedLayer(T param);
+ method public void renderMultiBufferedLayer(java.util.Collection<? extends T> params);
+ property public final int bufferFormat;
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface GLFrontBufferedRenderer.Callback<T> {
+ method @WorkerThread public void onDrawFrontBufferedLayer(androidx.graphics.opengl.egl.EGLManager eglManager, int width, int height, androidx.graphics.lowlatency.BufferInfo bufferInfo, float[] transform, T param);
+ method @WorkerThread public void onDrawMultiBufferedLayer(androidx.graphics.opengl.egl.EGLManager eglManager, int width, int height, androidx.graphics.lowlatency.BufferInfo bufferInfo, float[] transform, java.util.Collection<? extends T> params);
+ method @WorkerThread public default void onFrontBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ method @WorkerThread public default void onMultiBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat multiBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class LowLatencyCanvasView extends android.view.ViewGroup {
+ ctor public LowLatencyCanvasView(android.content.Context context);
+ ctor public LowLatencyCanvasView(android.content.Context context, optional android.util.AttributeSet? attrs);
+ ctor public LowLatencyCanvasView(android.content.Context context, optional android.util.AttributeSet? attrs, optional int defStyle);
+ method public void cancel();
+ method public void clear();
+ method public void commit();
+ method public void execute(Runnable runnable);
+ method public void renderFrontBufferedLayer();
+ method public void setRenderCallback(androidx.graphics.lowlatency.LowLatencyCanvasView.Callback? callback);
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface LowLatencyCanvasView.Callback {
+ method @WorkerThread public void onDrawFrontBufferedLayer(android.graphics.Canvas canvas, int width, int height);
+ method @WorkerThread public default void onFrontBufferedLayerRenderComplete(androidx.graphics.surface.SurfaceControlCompat frontBufferedLayerSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction);
+ method @WorkerThread public void onRedrawRequested(android.graphics.Canvas canvas, int width, int height);
+ }
+
+}
+
+package androidx.graphics.opengl {
+
+ @RequiresApi(android.os.Build.VERSION_CODES.O) public final class FrameBuffer implements java.lang.AutoCloseable {
+ ctor public FrameBuffer(androidx.graphics.opengl.egl.EGLSpec egl, android.hardware.HardwareBuffer hardwareBuffer);
+ method public void close();
+ method public android.hardware.HardwareBuffer getHardwareBuffer();
+ method public boolean isClosed();
+ method public void makeCurrent();
+ property public final android.hardware.HardwareBuffer hardwareBuffer;
+ property public final boolean isClosed;
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.O) public final class FrameBufferRenderer implements androidx.graphics.opengl.GLRenderer.RenderCallback {
+ ctor public FrameBufferRenderer(androidx.graphics.opengl.FrameBufferRenderer.RenderCallback frameBufferRendererCallbacks, optional androidx.graphics.opengl.SyncStrategy syncStrategy);
+ method public void clear();
+ method public void onDrawFrame(androidx.graphics.opengl.egl.EGLManager eglManager);
+ }
+
+ public static interface FrameBufferRenderer.RenderCallback {
+ method public androidx.graphics.opengl.FrameBuffer obtainFrameBuffer(androidx.graphics.opengl.egl.EGLSpec egl);
+ method public void onDraw(androidx.graphics.opengl.egl.EGLManager eglManager);
+ method public void onDrawComplete(androidx.graphics.opengl.FrameBuffer frameBuffer, androidx.hardware.SyncFenceCompat? syncFenceCompat);
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class GLFrameBufferRenderer {
+ method public void execute(Runnable runnable);
+ method public int getBufferFormat();
+ method public androidx.graphics.opengl.GLRenderer getGLRenderer();
+ method public int getMaxBuffers();
+ method public androidx.graphics.opengl.SyncStrategy getSyncStrategy();
+ method public long getUsageFlags();
+ method public boolean isValid();
+ method public void release(boolean cancelPending);
+ method public void release(boolean cancelPending, optional kotlin.jvm.functions.Function0<kotlin.Unit>? onReleaseCallback);
+ method public void render();
+ property public final int bufferFormat;
+ property public final androidx.graphics.opengl.GLRenderer glRenderer;
+ property public final int maxBuffers;
+ property public final androidx.graphics.opengl.SyncStrategy syncStrategy;
+ property public final long usageFlags;
+ }
+
+ public static final class GLFrameBufferRenderer.Builder {
+ ctor public GLFrameBufferRenderer.Builder(android.view.SurfaceView surfaceView, androidx.graphics.opengl.GLFrameBufferRenderer.Callback callback);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer build();
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setBufferFormat(int format);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setGLRenderer(androidx.graphics.opengl.GLRenderer? glRenderer);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setMaxBuffers(@IntRange(from=1L, to=64L) int numBuffers);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setSyncStrategy(androidx.graphics.opengl.SyncStrategy syncStrategy);
+ method public androidx.graphics.opengl.GLFrameBufferRenderer.Builder setUsageFlags(long usageFlags);
+ }
+
+ public static interface GLFrameBufferRenderer.Callback {
+ method @WorkerThread public default void onBufferReleased(androidx.graphics.opengl.FrameBuffer frameBuffer, androidx.hardware.SyncFenceCompat? releaseFence);
+ method @WorkerThread public default void onDrawComplete(androidx.graphics.surface.SurfaceControlCompat targetSurfaceControl, androidx.graphics.surface.SurfaceControlCompat.Transaction transaction, androidx.graphics.opengl.FrameBuffer frameBuffer, androidx.hardware.SyncFenceCompat? syncFence);
+ method @WorkerThread public void onDrawFrame(androidx.graphics.opengl.egl.EGLManager eglManager, int width, int height, androidx.graphics.lowlatency.BufferInfo bufferInfo, float[] transform);
+ }
+
+ public final class GLRenderer {
+ ctor public GLRenderer(optional kotlin.jvm.functions.Function0<? extends androidx.graphics.opengl.egl.EGLSpec> eglSpecFactory, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.egl.EGLManager,? extends android.opengl.EGLConfig> eglConfigFactory);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget attach(android.view.Surface surface, int width, int height, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget attach(android.view.SurfaceView surfaceView, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget attach(android.view.TextureView textureView, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public androidx.graphics.opengl.GLRenderer.RenderTarget createRenderTarget(int width, int height, androidx.graphics.opengl.GLRenderer.RenderCallback renderer);
+ method public void detach(androidx.graphics.opengl.GLRenderer.RenderTarget target, boolean cancelPending);
+ method public void detach(androidx.graphics.opengl.GLRenderer.RenderTarget target, boolean cancelPending, optional @WorkerThread kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onDetachComplete);
+ method public void execute(Runnable runnable);
+ method public boolean isRunning();
+ method public void registerEGLContextCallback(androidx.graphics.opengl.GLRenderer.EGLContextCallback callback);
+ method public void requestRender(androidx.graphics.opengl.GLRenderer.RenderTarget target);
+ method public void requestRender(androidx.graphics.opengl.GLRenderer.RenderTarget target, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onRenderComplete);
+ method public void resize(androidx.graphics.opengl.GLRenderer.RenderTarget target, int width, int height);
+ method public void resize(androidx.graphics.opengl.GLRenderer.RenderTarget target, int width, int height, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onResizeComplete);
+ method public void start();
+ method public void start(optional String name);
+ method public void stop(boolean cancelPending);
+ method public void stop(boolean cancelPending, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer,kotlin.Unit>? onStop);
+ method public void unregisterEGLContextCallback(androidx.graphics.opengl.GLRenderer.EGLContextCallback callback);
+ field public static final androidx.graphics.opengl.GLRenderer.Companion Companion;
+ }
+
+ public static final class GLRenderer.Companion {
+ }
+
+ public static interface GLRenderer.EGLContextCallback {
+ method @WorkerThread public void onEGLContextCreated(androidx.graphics.opengl.egl.EGLManager eglManager);
+ method @WorkerThread public void onEGLContextDestroyed(androidx.graphics.opengl.egl.EGLManager eglManager);
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public static interface GLRenderer.RenderCallback {
+ method @WorkerThread public void onDrawFrame(androidx.graphics.opengl.egl.EGLManager eglManager);
+ method @WorkerThread public default android.opengl.EGLSurface? onSurfaceCreated(androidx.graphics.opengl.egl.EGLSpec spec, android.opengl.EGLConfig config, android.view.Surface surface, int width, int height);
+ }
+
+ public static final class GLRenderer.RenderTarget {
+ method public void detach(boolean cancelPending);
+ method public void detach(boolean cancelPending, optional kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onDetachComplete);
+ method public boolean isAttached();
+ method public void requestRender();
+ method public void requestRender(optional @WorkerThread kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onRenderComplete);
+ method public void resize(int width, int height);
+ method public void resize(int width, int height, optional @WorkerThread kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.GLRenderer.RenderTarget,kotlin.Unit>? onResizeComplete);
+ }
+
+ public interface SyncStrategy {
+ method @RequiresApi(android.os.Build.VERSION_CODES.KITKAT) public androidx.hardware.SyncFenceCompat? createSyncFence(androidx.graphics.opengl.egl.EGLSpec eglSpec);
+ field public static final androidx.graphics.opengl.SyncStrategy ALWAYS;
+ field public static final androidx.graphics.opengl.SyncStrategy.Companion Companion;
+ }
+
+ public static final class SyncStrategy.Companion {
+ }
+
+}
+
+package androidx.graphics.opengl.egl {
+
+ public final class EGLConfigAttributes {
+ method public int[] toArray();
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes.Companion Companion;
+ field public static final int EGL_COLOR_COMPONENT_TYPE_EXT = 13113; // 0x3339
+ field public static final int EGL_COLOR_COMPONENT_TYPE_FIXED_EXT = 13114; // 0x333a
+ field public static final int EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT = 13115; // 0x333b
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes RGBA_1010102;
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes RGBA_8888;
+ field public static final androidx.graphics.opengl.egl.EGLConfigAttributes RGBA_F16;
+ }
+
+ public static final class EGLConfigAttributes.Builder {
+ ctor @kotlin.PublishedApi internal EGLConfigAttributes.Builder();
+ method public androidx.graphics.opengl.egl.EGLConfigAttributes build();
+ method public void include(androidx.graphics.opengl.egl.EGLConfigAttributes attributes);
+ method public androidx.graphics.opengl.egl.EGLConfigAttributes.Builder setAttribute(int attribute, int value);
+ method @kotlin.jvm.JvmSynthetic public infix void to(int, int that);
+ }
+
+ public static final class EGLConfigAttributes.Companion {
+ }
+
+ public final class EGLConfigAttributesKt {
+ method @kotlin.jvm.JvmSynthetic public static inline androidx.graphics.opengl.egl.EGLConfigAttributes EGLConfigAttributes(kotlin.jvm.functions.Function1<? super androidx.graphics.opengl.egl.EGLConfigAttributes.Builder,kotlin.Unit> block);
+ }
+
+ public final class EGLException extends java.lang.RuntimeException {
+ ctor public EGLException(int error, optional String msg);
+ method public int getError();
+ method public String getMsg();
+ property public final int error;
+ property public String message;
+ property public final String msg;
+ }
+
+ public final class EGLManager {
+ ctor public EGLManager(optional androidx.graphics.opengl.egl.EGLSpec eglSpec);
+ method public android.opengl.EGLContext createContext(android.opengl.EGLConfig config);
+ method public android.opengl.EGLSurface getCurrentDrawSurface();
+ method public android.opengl.EGLSurface getCurrentReadSurface();
+ method public android.opengl.EGLSurface getDefaultSurface();
+ method public android.opengl.EGLConfig? getEGLConfig();
+ method public android.opengl.EGLContext? getEGLContext();
+ method public androidx.graphics.opengl.egl.EGLSpec getEGLSpec();
+ method public androidx.graphics.opengl.egl.EGLVersion getEGLVersion();
+ method public void initialize();
+ method public boolean isExtensionSupported(String extensionName);
+ method public android.opengl.EGLConfig? loadConfig(androidx.graphics.opengl.egl.EGLConfigAttributes configAttributes);
+ method public boolean makeCurrent(android.opengl.EGLSurface drawSurface);
+ method public boolean makeCurrent(android.opengl.EGLSurface drawSurface, optional android.opengl.EGLSurface readSurface);
+ method public void release();
+ method public void swapAndFlushBuffers();
+ property public final android.opengl.EGLSurface currentDrawSurface;
+ property public final android.opengl.EGLSurface currentReadSurface;
+ property public final android.opengl.EGLSurface defaultSurface;
+ property public final android.opengl.EGLConfig? eglConfig;
+ property public final android.opengl.EGLContext? eglContext;
+ property public final androidx.graphics.opengl.egl.EGLSpec eglSpec;
+ property public final androidx.graphics.opengl.egl.EGLVersion eglVersion;
+ field public static final androidx.graphics.opengl.egl.EGLManager.Companion Companion;
+ }
+
+ public static final class EGLManager.Companion {
+ }
+
+ @kotlin.jvm.JvmDefaultWithCompatibility public interface EGLSpec {
+ method public int eglClientWaitSyncKHR(androidx.opengl.EGLSyncKHR sync, int flags, long timeoutNanos);
+ method public android.opengl.EGLContext eglCreateContext(android.opengl.EGLConfig config);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.opengl.EGLImageKHR? eglCreateImageFromHardwareBuffer(android.hardware.HardwareBuffer hardwareBuffer);
+ method public android.opengl.EGLSurface eglCreatePBufferSurface(android.opengl.EGLConfig config, androidx.graphics.opengl.egl.EGLConfigAttributes? configAttributes);
+ method public androidx.opengl.EGLSyncKHR? eglCreateSyncKHR(int type, androidx.graphics.opengl.egl.EGLConfigAttributes? attributes);
+ method public android.opengl.EGLSurface eglCreateWindowSurface(android.opengl.EGLConfig config, android.view.Surface surface, androidx.graphics.opengl.egl.EGLConfigAttributes? configAttributes);
+ method public void eglDestroyContext(android.opengl.EGLContext eglContext);
+ method public boolean eglDestroyImageKHR(androidx.opengl.EGLImageKHR image);
+ method public boolean eglDestroySurface(android.opengl.EGLSurface surface);
+ method public boolean eglDestroySyncKHR(androidx.opengl.EGLSyncKHR sync);
+ method public android.opengl.EGLSurface eglGetCurrentDrawSurface();
+ method public android.opengl.EGLSurface eglGetCurrentReadSurface();
+ method public int eglGetError();
+ method public boolean eglGetSyncAttribKHR(androidx.opengl.EGLSyncKHR sync, int attribute, int[] value, int offset);
+ method public androidx.graphics.opengl.egl.EGLVersion eglInitialize();
+ method public boolean eglMakeCurrent(android.opengl.EGLContext context, android.opengl.EGLSurface drawSurface, android.opengl.EGLSurface readSurface);
+ method public String eglQueryString(int nameId);
+ method public boolean eglQuerySurface(android.opengl.EGLSurface surface, int attribute, int[] result, int offset);
+ method public boolean eglSwapBuffers(android.opengl.EGLSurface surface);
+ method public default String getErrorMessage();
+ method public static String getStatusString(int error);
+ method public android.opengl.EGLConfig? loadConfig(androidx.graphics.opengl.egl.EGLConfigAttributes configAttributes);
+ field public static final androidx.graphics.opengl.egl.EGLSpec.Companion Companion;
+ field public static final androidx.graphics.opengl.egl.EGLSpec V14;
+ }
+
+ public static final class EGLSpec.Companion {
+ method public String getStatusString(int error);
+ }
+
+ public final class EGLVersion {
+ ctor public EGLVersion(int major, int minor);
+ method public int component1();
+ method public int component2();
+ method public androidx.graphics.opengl.egl.EGLVersion copy(int major, int minor);
+ method public int getMajor();
+ method public int getMinor();
+ property public final int major;
+ property public final int minor;
+ field public static final androidx.graphics.opengl.egl.EGLVersion.Companion Companion;
+ field public static final androidx.graphics.opengl.egl.EGLVersion Unknown;
+ field public static final androidx.graphics.opengl.egl.EGLVersion V14;
+ field public static final androidx.graphics.opengl.egl.EGLVersion V15;
+ }
+
+ public static final class EGLVersion.Companion {
+ }
+
+}
+
+package androidx.graphics.surface {
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public final class SurfaceControlCompat {
+ method public boolean isValid();
+ method public void release();
+ field public static final int BUFFER_TRANSFORM_IDENTITY = 0; // 0x0
+ field public static final int BUFFER_TRANSFORM_MIRROR_HORIZONTAL = 1; // 0x1
+ field public static final int BUFFER_TRANSFORM_MIRROR_VERTICAL = 2; // 0x2
+ field public static final int BUFFER_TRANSFORM_ROTATE_180 = 3; // 0x3
+ field public static final int BUFFER_TRANSFORM_ROTATE_270 = 7; // 0x7
+ field public static final int BUFFER_TRANSFORM_ROTATE_90 = 4; // 0x4
+ field public static final int CHANGE_FRAME_RATE_ALWAYS = 1; // 0x1
+ field public static final int CHANGE_FRAME_RATE_ONLY_IF_SEAMLESS = 0; // 0x0
+ field public static final androidx.graphics.surface.SurfaceControlCompat.Companion Companion;
+ field public static final int FRAME_RATE_COMPATIBILITY_DEFAULT = 0; // 0x0
+ field public static final int FRAME_RATE_COMPATIBILITY_FIXED_SOURCE = 1; // 0x1
+ }
+
+ public static final class SurfaceControlCompat.Builder {
+ ctor public SurfaceControlCompat.Builder();
+ method public androidx.graphics.surface.SurfaceControlCompat build();
+ method public androidx.graphics.surface.SurfaceControlCompat.Builder setName(String name);
+ method public androidx.graphics.surface.SurfaceControlCompat.Builder setParent(android.view.SurfaceView surfaceView);
+ method public androidx.graphics.surface.SurfaceControlCompat.Builder setParent(androidx.graphics.surface.SurfaceControlCompat surfaceControl);
+ }
+
+ public static final class SurfaceControlCompat.Companion {
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final class SurfaceControlCompat.Transaction implements java.lang.AutoCloseable {
+ ctor public SurfaceControlCompat.Transaction();
+ method @RequiresApi(android.os.Build.VERSION_CODES.S) public androidx.graphics.surface.SurfaceControlCompat.Transaction addTransactionCommittedListener(java.util.concurrent.Executor executor, androidx.graphics.surface.SurfaceControlCompat.TransactionCommittedListener listener);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction clearFrameRate(androidx.graphics.surface.SurfaceControlCompat surfaceControl);
+ method public void close();
+ method public void commit();
+ method @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public void commitTransactionOnDraw(android.view.AttachedSurfaceControl attachedSurfaceControl);
+ method @RequiresApi(android.os.Build.VERSION_CODES.TIRAMISU) public androidx.graphics.surface.SurfaceControlCompat.Transaction reparent(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.view.AttachedSurfaceControl attachedSurfaceControl);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction reparent(androidx.graphics.surface.SurfaceControlCompat surfaceControl, androidx.graphics.surface.SurfaceControlCompat? newParent);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setAlpha(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float alpha);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBuffer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.hardware.HardwareBuffer? buffer);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBuffer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.hardware.HardwareBuffer? buffer, optional androidx.hardware.SyncFenceCompat? fence);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBuffer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.hardware.HardwareBuffer? buffer, optional androidx.hardware.SyncFenceCompat? fence, optional kotlin.jvm.functions.Function1<? super androidx.hardware.SyncFenceCompat,kotlin.Unit>? releaseCallback);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setBufferTransform(androidx.graphics.surface.SurfaceControlCompat surfaceControl, int transformation);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setCrop(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.graphics.Rect? crop);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setDamageRegion(androidx.graphics.surface.SurfaceControlCompat surfaceControl, android.graphics.Region? region);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setDataSpace(androidx.graphics.surface.SurfaceControlCompat surfaceControl, int dataSpace);
+ method @RequiresApi(android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public androidx.graphics.surface.SurfaceControlCompat.Transaction setExtendedRangeBrightness(androidx.graphics.surface.SurfaceControlCompat surfaceControl, @FloatRange(from=1.0, fromInclusive=true) float currentBufferRatio, @FloatRange(from=1.0, fromInclusive=true) float desiredRatio);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setFrameRate(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float frameRate, int compatibility, int changeFrameRateStrategy);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setLayer(androidx.graphics.surface.SurfaceControlCompat surfaceControl, int z);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setOpaque(androidx.graphics.surface.SurfaceControlCompat surfaceControl, boolean isOpaque);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setPosition(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float x, float y);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setScale(androidx.graphics.surface.SurfaceControlCompat surfaceControl, float scaleX, float scaleY);
+ method public androidx.graphics.surface.SurfaceControlCompat.Transaction setVisibility(androidx.graphics.surface.SurfaceControlCompat surfaceControl, boolean visible);
+ }
+
+ public static interface SurfaceControlCompat.TransactionCommittedListener {
+ method public void onTransactionCommitted();
+ }
+
+}
+
+package androidx.hardware {
+
+ public final class DataSpace {
+ field public static final androidx.hardware.DataSpace.Companion Companion;
+ field public static final int DATASPACE_ADOBE_RGB = 151715840; // 0x90b0000
+ field public static final int DATASPACE_BT2020 = 147193856; // 0x8c60000
+ field public static final int DATASPACE_BT2020_HLG = 168165376; // 0xa060000
+ field public static final int DATASPACE_BT2020_PQ = 163971072; // 0x9c60000
+ field public static final int DATASPACE_BT601_525 = 281280512; // 0x10c40000
+ field public static final int DATASPACE_BT601_625 = 281149440; // 0x10c20000
+ field public static final int DATASPACE_BT709 = 281083904; // 0x10c10000
+ field public static final int DATASPACE_DCI_P3 = 155844608; // 0x94a0000
+ field public static final int DATASPACE_DEPTH = 4096; // 0x1000
+ field public static final int DATASPACE_DISPLAY_P3 = 143261696; // 0x88a0000
+ field public static final int DATASPACE_DYNAMIC_DEPTH = 4098; // 0x1002
+ field public static final int DATASPACE_HEIF = 4100; // 0x1004
+ field public static final int DATASPACE_JFIF = 146931712; // 0x8c20000
+ field public static final int DATASPACE_JPEG_R = 4101; // 0x1005
+ field public static final int DATASPACE_SCRGB = 411107328; // 0x18810000
+ field public static final int DATASPACE_SCRGB_LINEAR = 406913024; // 0x18410000
+ field public static final int DATASPACE_SRGB = 142671872; // 0x8810000
+ field public static final int DATASPACE_SRGB_LINEAR = 138477568; // 0x8410000
+ field public static final int DATASPACE_UNKNOWN = 0; // 0x0
+ field public static final int RANGE_EXTENDED = 402653184; // 0x18000000
+ field public static final int RANGE_FULL = 134217728; // 0x8000000
+ field public static final int RANGE_LIMITED = 268435456; // 0x10000000
+ field public static final int RANGE_UNSPECIFIED = 0; // 0x0
+ }
+
+ public static final class DataSpace.Companion {
+ }
+
+ @RequiresApi(android.os.Build.VERSION_CODES.KITKAT) public final class SyncFenceCompat implements java.lang.AutoCloseable {
+ method public boolean await(long timeoutNanos);
+ method public boolean awaitForever();
+ method public void close();
+ method public static androidx.hardware.SyncFenceCompat createNativeSyncFence();
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public long getSignalTimeNanos();
+ method public boolean isValid();
+ field public static final androidx.hardware.SyncFenceCompat.Companion Companion;
+ field public static final long SIGNAL_TIME_INVALID = -1L; // 0xffffffffffffffffL
+ field public static final long SIGNAL_TIME_PENDING = 9223372036854775807L; // 0x7fffffffffffffffL
+ }
+
+ public static final class SyncFenceCompat.Companion {
+ method public androidx.hardware.SyncFenceCompat createNativeSyncFence();
+ }
+
+}
+
+package androidx.opengl {
+
+ public final class EGLExt {
+ method public static int eglClientWaitSyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int flags, long timeoutNanos);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public static androidx.opengl.EGLImageKHR? eglCreateImageFromHardwareBuffer(android.opengl.EGLDisplay eglDisplay, android.hardware.HardwareBuffer hardwareBuffer);
+ method public static androidx.opengl.EGLSyncKHR? eglCreateSyncKHR(android.opengl.EGLDisplay eglDisplay, int type, androidx.graphics.opengl.egl.EGLConfigAttributes? attributes);
+ method public static boolean eglDestroyImageKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLImageKHR image);
+ method public static boolean eglDestroySyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR eglSync);
+ method public static boolean eglGetSyncAttribKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int attribute, int[] value, int offset);
+ method public static void glEGLImageTargetTexture2DOES(int target, androidx.opengl.EGLImageKHR image);
+ method public static java.util.Set<java.lang.String> parseExtensions(String queryString);
+ field public static final androidx.opengl.EGLExt.Companion Companion;
+ field public static final String EGL_ANDROID_CLIENT_BUFFER = "EGL_ANDROID_get_native_client_buffer";
+ field public static final String EGL_ANDROID_IMAGE_NATIVE_BUFFER = "EGL_ANDROID_image_native_buffer";
+ field public static final String EGL_ANDROID_NATIVE_FENCE_SYNC = "EGL_ANDROID_native_fence_sync";
+ field public static final int EGL_CONDITION_SATISFIED_KHR = 12534; // 0x30f6
+ field public static final String EGL_EXT_BUFFER_AGE = "EGL_EXT_buffer_age";
+ field public static final String EGL_EXT_GL_COLORSPACE_BT2020_PQ = "EGL_EXT_gl_colorspace_bt2020_pq";
+ field public static final String EGL_EXT_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH = "EGL_EXT_gl_colorspace_display_p3_passthrough";
+ field public static final String EGL_EXT_GL_COLORSPACE_SCRGB = "EGL_EXT_gl_colorspace_scrgb";
+ field public static final String EGL_EXT_PIXEL_FORMAT_FLOAT = "EGL_EXT_pixel_format_float";
+ field public static final int EGL_FALSE = 0; // 0x0
+ field public static final long EGL_FOREVER_KHR = -1L; // 0xffffffffffffffffL
+ field public static final String EGL_IMG_CONTEXT_PRIORITY = "EGL_IMG_context_priority";
+ field public static final String EGL_KHR_FENCE_SYNC = "EGL_KHR_fence_sync";
+ field public static final String EGL_KHR_GL_COLORSPACE = "EGL_KHR_gl_colorspace";
+ field public static final String EGL_KHR_IMAGE = "EGL_KHR_image";
+ field public static final String EGL_KHR_IMAGE_BASE = "EGL_KHR_image_base";
+ field public static final String EGL_KHR_NO_CONFIG_CONTEXT = "EGL_KHR_no_config_context";
+ field public static final String EGL_KHR_PARTIAL_UPDATE = "EGL_KHR_partial_update";
+ field public static final String EGL_KHR_SURFACELESS_CONTEXT = "EGL_KHR_surfaceless_context";
+ field public static final String EGL_KHR_SWAP_BUFFERS_WITH_DAMAGE = "EGL_KHR_swap_buffers_with_damage";
+ field public static final String EGL_KHR_WAIT_SYNC = "EGL_KHR_wait_sync";
+ field public static final int EGL_SIGNALED_KHR = 12530; // 0x30f2
+ field public static final int EGL_SYNC_CONDITION_KHR = 12536; // 0x30f8
+ field public static final int EGL_SYNC_FENCE_KHR = 12537; // 0x30f9
+ field public static final int EGL_SYNC_FLUSH_COMMANDS_BIT_KHR = 1; // 0x1
+ field public static final int EGL_SYNC_NATIVE_FENCE_ANDROID = 12612; // 0x3144
+ field public static final int EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR = 12528; // 0x30f0
+ field public static final int EGL_SYNC_STATUS_KHR = 12529; // 0x30f1
+ field public static final int EGL_SYNC_TYPE_KHR = 12535; // 0x30f7
+ field public static final int EGL_TIMEOUT_EXPIRED_KHR = 12533; // 0x30f5
+ field public static final int EGL_TRUE = 1; // 0x1
+ field public static final int EGL_UNSIGNALED_KHR = 12531; // 0x30f3
+ }
+
+ public static final class EGLExt.Companion {
+ method public int eglClientWaitSyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int flags, long timeoutNanos);
+ method @RequiresApi(android.os.Build.VERSION_CODES.O) public androidx.opengl.EGLImageKHR? eglCreateImageFromHardwareBuffer(android.opengl.EGLDisplay eglDisplay, android.hardware.HardwareBuffer hardwareBuffer);
+ method public androidx.opengl.EGLSyncKHR? eglCreateSyncKHR(android.opengl.EGLDisplay eglDisplay, int type, androidx.graphics.opengl.egl.EGLConfigAttributes? attributes);
+ method public boolean eglDestroyImageKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLImageKHR image);
+ method public boolean eglDestroySyncKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR eglSync);
+ method public boolean eglGetSyncAttribKHR(android.opengl.EGLDisplay eglDisplay, androidx.opengl.EGLSyncKHR sync, int attribute, int[] value, int offset);
+ method public void glEGLImageTargetTexture2DOES(int target, androidx.opengl.EGLImageKHR image);
+ method public java.util.Set<java.lang.String> parseExtensions(String queryString);
+ }
+
+ public interface EGLHandle {
+ method public long getNativeHandle();
+ property public abstract long nativeHandle;
+ }
+
+ public final class EGLImageKHR implements androidx.opengl.EGLHandle {
+ ctor public EGLImageKHR(long nativeHandle);
+ method public long getNativeHandle();
+ property public long nativeHandle;
+ }
+
+ public final class EGLSyncKHR implements androidx.opengl.EGLHandle {
+ ctor public EGLSyncKHR(long nativeHandle);
+ method public long getNativeHandle();
+ property public long nativeHandle;
+ }
+
+}
+
diff --git a/libraryversions.toml b/libraryversions.toml
index 099994d..26d314d 100644
--- a/libraryversions.toml
+++ b/libraryversions.toml
@@ -67,7 +67,7 @@
GLANCE_PREVIEW = "1.0.0-alpha06"
GLANCE_TEMPLATE = "1.0.0-alpha06"
GLANCE_WEAR_TILES = "1.0.0-alpha06"
-GRAPHICS_CORE = "1.0.0-alpha06"
+GRAPHICS_CORE = "1.0.0-beta01"
GRAPHICS_FILTERS = "1.0.0-alpha01"
GRAPHICS_PATH = "1.0.0-beta01"
GRAPHICS_SHAPES = "1.0.0-alpha03"
diff --git a/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/Stubs.kt b/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/Stubs.kt
index 6ab5a6b..28c7915 100644
--- a/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/Stubs.kt
+++ b/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/Stubs.kt
@@ -21,7 +21,7 @@
internal val NAV_BACK_STACK_ENTRY = bytecodeStub(
filename = "NavBackStackEntry.kt",
filepath = "androidx/navigation",
- checksum = 0x6920c3ac,
+ checksum = 0xfef36ae,
source = """
package androidx.navigation
@@ -29,27 +29,28 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3AJcTFnZyfq5dakZhbkJMqxBzvXaLE
- oMUAAMRK5d0sAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuOSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIKSs1NzU1KLfIu4RLl4gZK66VWJOYW5KQKsYWkFpd4lygxaDEA
+ ALrkMh5XAAAA
""",
"""
androidx/navigation/NavBackStackEntry.class:
- H4sIAAAAAAAAAI2Ru04CQRSG/zPAoisKKiqosTNeCleMncZEjCYkiIkYGqqB
- 3eBwmU12hw12PItvYGViYYilD2U8u9rZOMWX8/9nMucyn19v7wBOsU3YldoN
- fOVOHC0j1ZNG+dppyKgqu4OmYVxrEzxlQYRCX0bSGUrdc+46fa9rskgRrHOl
- lbkgpPYPWjlkYNlII0tIm0cVEvbq/6pwRliuD3wzVNq59Yx0pZHsiVGU4lYp
- RoZAA7YmKlbHHLkVws5satuiJGxR4Gg2Lc2mJ+KYqpmPZ0sURHzrhPgFFP/U
- PBoYbvPKdz1Cvq601xiPOl7wIDtDdlbqflcOWzJQsf417aY/DrrejYpF+X6s
- jRp5LRUqzl5q7ZtkvBAVCN5CfLjpeCnMDVZOonmWw1fMvXAgUGJaiZlGmZn7
- uYB52El+M+E6tpIvIyxwLtdGqobFGpaYyMco1LCMlTYoxCqKnA9hh1gLYX0D
- +QLjIO8BAAA=
+ H4sIAAAAAAAA/41Ru0oDQRQ9d5JsdI2axKjx2YmPwk3EThGMKCysCipprCbZ
+ RSePWdidhNjlW/wDK8FCgqUfJd5d7WxsDudxh/uYz6+3dwCH2CBsSe1HofJH
+ jpZD9SCNCrVzJYcN2e7eGoZzbaKnPIhQ7MihdHpSPzjXrU7QNnlkCNax0sqc
+ EDI7u80CcrBsZJEnZM2jignb3r86HBFKXjc0PaWdy8BIXxrJnugPMzwqJTCd
+ AAjUZX+kElVj5tcJm5OxbYuqsEWR2WRcnYwPRI0auY9nSxRFUnVAydvKn8b7
+ XcOznoV+QJj3lA6uBv1WEN3JVo+dshe2Za8pI5XoX9O+DQdRO7hQiVi5GWij
+ +kFTxYrTU61Dk+4Yow7Bp/gdOrkMY5WVk2ogt/eKqRcmAiuMVmpmscpY+CnA
+ NOw0X0txGevpvxFmOCvcI+Ni1sWci3kUmaLkooyFe1CMChY5j2HHWIphfQMn
+ 9fXa9AEAAA==
"""
)
internal val NAV_CONTROLLER = bytecodeStub(
filename = "NavController.kt",
filepath = "androidx/navigation",
- checksum = 0xa6eda16e,
+ checksum = 0xeb9f76f4,
source = """
package androidx.navigation
@@ -59,32 +60,33 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3AJcTFnZyfq5dakZhbkJMqxBzvXaLE
- oMUAAMRK5d0sAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgUuOSSMxLKcrPTKnQS87PLcgvTtUr
+ Ks0rycxNFeIKSs1NzU1KLfIu4RLl4gZK66VWJOYW5KQKsYWkFpd4lygxaDEA
+ ALrkMh5XAAAA
""",
"""
androidx/navigation/NavController.class:
- H4sIAAAAAAAAAI1SW08TQRT+Ztru4oJlQbkrioDclAXikzVGIZqU1GrEkBie
- pttJmXY7m+xOG3zjt/gL9AmjiSE++qOMZ8pGrGhkkz1nzjnf+WbO5fuPz18B
- PMA6w5zQ9SRW9aNAi65qCKNiHVRFdyfWJomjSCYuGIPfFF0RREI3gpe1pgyN
- ixyD80hpZR4z5JZX9odQgOMhD5chbw5VyjBf+S97iWGkIc22CFt7hsQzCrxj
- KC1Xzm/cM4nSjdLKv9j6k0v23jhpBE1paolQOg2E1rHpwdOgGptqJ4oIVUji
- jpEDKDLMtmITKR00u+1AaSMTLaKgrO29qQpTFz7DWHgow1aW/kokoi0JyLD0
- +1PPmlP6y+OpP6O45mEE1xkWL1WJi3EPE7afoxcJqW+V7NUvpBF1YQT5eLub
- o9EyKwoMrEWuI2WtDTrVNxkenh6Pe3ySe9w/Pfb4AO8Z9ugXJ0+Pt/gG2y58
- e+9wn+8W/dw038hvOX6BtGMZthixY+nSo/D7pr3eMrQcO3FdMgxXlJbVTrsm
- kzeiFklbZRyKaF8kytqZc+Z1RxvVlmXdVaki19PzYTIs/Bn9NZg+mLcXd5JQ
- PleWcSrL2b/Ah01wWmD7caqS9tnWSlZAmtmWrp5g4GMvvEzS6TnzWCE5dAbA
- FXikRzBInlwveZvQnHRxbXT4E8a+YOLtCSY/9LE4lGlZxs+QGYs9FTFF8dUM
- d5X0Gv0uywyOez15F/dJPyHvNFHNHCBXxo0ybpLErBW3yriNuQOwFHcwfwA3
- hZdiIYWTYjDFYooimT8B9qxp7xsEAAA=
+ H4sIAAAAAAAA/41SW08TQRT+ZtruwoJlQbkrioDclAXikzVGIZrU1GrEkBie
+ pttJmXY7m+xOG3zjt/gL9AmjiSE++qOMZ8pGrGhkkz3X73wzc875/uPzVwD3
+ ETDMC11PYlU/CrToqoYwKtZBVXR3Y22SOIpk4oIx+E3RFUEkdCN4WWvK0LjI
+ MTgPlVbmEUNuZXV/GAU4HvJwGfLmUKUMC5X/spcYRhvS7IiwtWdIPKXEO4bS
+ SuX8xD2TKN0orf6Lrb+4ZM+Nk0bQlKaWCKXTQGgdmx48DaqxqXaiiFCFJO4Y
+ OYAiw1wrNpHSQbPbDpQ2MtEiCsranpuqMHXhM4yHhzJsZeWvRCLakoAMy79f
+ 9aw5pb9cnvozhqseRnGNYelSL3Ex4WHS9nPsIiH1rZLd+oU0oi6MoBhvd3M0
+ WmbFoBVgYC2KHynrbZJV32J4cHo84fEp7nH/9NjjA7znWNMvTp0eb/NNtlP4
+ 9t7hPn9e9HMzfDO/7fgF0o5l2GaWd/nS8/D7Rr7RMrQhu3FdMoxUlJbVTrsm
+ kzeiFkn71DgU0b5IlPWz4OzrjjaqLcu6q1JFoSfnE2VY/DP7azp9MG8v7iSh
+ fKYs43RWs3+BD1vgtMX24/RKWmqSK+QFtpekC2snGPjYS6+SdHrBPNZIDp8B
+ MAiP9CiGKJLrFe8QmpMuro+NfML4F0y+PcHUhz4Whyoty8QZMmOxVhHTlF/P
+ cFdI36XfZZnDca8nl7FB+jFFZ4hq9gC5Mq6XcaOMOdwkE7fKmMftA7AUC1g8
+ gJvCS7GUwkkxlOJOiiK5PwElc7kHIAQAAA==
"""
)
internal val NAV_GRAPH_BUILDER = bytecodeStub(
filename = "NavGraphBuilder.kt",
filepath = "androidx/navigation",
- checksum = 0xf26bfe8b,
+ checksum = 0xced68271,
source = """
package androidx.navigation
@@ -92,28 +94,28 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3AZc0lnZiXUpSfmVKhl5dYlpmeWJKZ
- n6eXnJ9bkF+cKiTol1jmXpRYkOFUmpmTklrkXSLECRTyyC8u8S5RYtBiAAA0
- 5BaVVQAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuaSTsxLKcrPTKnQy0ssy0xPLMnM
+ z9NLzs8tyC9OFRL0SyxzL0osyHAqzcxJSS3yLhHiBAp55BeXeJdwiXJxAxXq
+ pVYk5hbkpAqxhaSChJUYtBgARVljGmwAAAA=
""",
"""
androidx/navigation/NavGraphBuilder.class:
- H4sIAAAAAAAAAI1RTUsCURQ996ljTVajfWlFmwiqRaPRrggqKAQzqHDT6ukM
- +nJ8EzNPcelv6R+0ClqEtOxHRXemVq16i8M951zu1/v8ensHcIRNwrbUXhQq
- b+xqOVJdaVSo3aYcXUXyqXc+VIHnR3kQwXmUI+kGUnfdm/aj3zF5ZAjWidLK
- nBIyu3utAnKwbGSRJ2RNT8WEncY/6h8Tio1+aAKl3WvfSE8ayZoYjDI8JiWQ
- I1CfpbFKWJUjr0bYmk5sW5SFLRyOppPydHIoqnSe+3i2hCOSrEPiCij96XjQ
- NzziRej5hMWG0n5zOGj70b1sB6yUGmFHBi0ZqYT/ivZdOIw6/qVKSOV2qI0a
- +C0VK3bPtA5NulqMGgRfIHk8cnIQxjVmbsp5k/1XzLxwIFBmtFIxiwpj4ScB
- s7BTfz3FVWykn0WYY6/wgEwd83UsMGIxAaeOIkoPoBhLWGY/hh1jJYb1DRVj
- VoXpAQAA
+ H4sIAAAAAAAA/41Ru04CQRQ9d4BFVhTEF/hqjIlauGrsNCZioiFBTNTQUA3s
+ BkaWWbM7EEu+xT+wMrEwxNKPMt5dqaxsTs7jzp07d76+3z8AnGCTsC21GwbK
+ fXa0HKmuNCrQTkOOrkP51KsOle96YRZEKD7KkXR8qbvObfvR65gsUgTrTGll
+ zgmp3b1mHhlYNtLIEtKmpyLCTv0f/U8JC/V+YHylnRvPSFcayZ4YjFI8JsWQ
+ iwEE6rP/rGJ1yMw9ImxNxrYtysIWRWaTcXkyPhaHVM18vliiKOKqY4rPlv5c
+ e9A3POdl4HqEQl1przEctL3wQbZ9dkr1oCP9pgxVrKemfR8Mw453pWJRuRtq
+ owZeU0WK0wutA5O8L8IRBK9hOnK8FcYyKyfRQGb/DTOvTAQqjFZiprHGmP8t
+ QA52kq8nuIqN5McIs5zlW0jVMFfDfA0FFJlioYYSFlugCEtY5jyCHWElgvUD
+ nsoUQO4BAAA=
"""
)
internal val NAV_GRAPH_COMPOSABLE = bytecodeStub(
filename = "NavGraphBuilder.kt",
filepath = "androidx/navigation/compose",
- checksum = 0x6920624a,
+ checksum = 0xc3b35ff,
source = """
package androidx.navigation.compose
@@ -129,37 +131,37 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3AZc0lnZiXUpSfmVKhl5dYlpmeWJKZ
- n6eXnJ9bkF+cKiTol1jmXpRYkOFUmpmTklrkXSLECRTyyC8u8S7hEuXiBirU
- S61IzC3ISRViC0kFCSsxaDEAAFP1RV1sAAAA
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuaSTsxLKcrPTKnQy0ssy0xPLMnM
+ z9NLzs8tyC9OFRL0SyxzL0osyHAqzcxJSS3yLhHiBAp55BeXeJdwiXJxAxXq
+ pVYk5hbkpAqxhaSChJUYtBgARVljGmwAAAA=
""",
"""
androidx/navigation/compose/NavGraphBuilderKt.class:
- H4sIAAAAAAAAAL1VS1MTQRD+ZvMkoiYbBQKKqCgvcUN8XGJRJZRaKSM+ohzk
- NNmsYfKYpXYmKbxx9WT5F/wH3iwPFuXRH2XZkwRIMBZcdFPb09PT/X090z2b
- n7++fQdwF/cZlrmsBL6o7DqSt0WVa+FLx/WbO77ynA3efhLwne21lmhUvOCp
- joExJGu8zZ0Gl1XnebnmuWQNMSS6Qbzc8BjezheH4R7DyxePkEo6ELKaL9Z9
- 3RDSqbWbzruWdE2Ych73tJX8wibDp38E/mD5b7hr3K2XNIlHUgfvD3HeSKHz
- q52crhf9oOrUPF0OuCBQLqWveZdgw9cbrUYjzxB9oLeFWo1jhGG6LxkhtRdI
- 3nAK0mSqhKtiOMNw0d323Hov/gUPeNMjR4a5+eLxGgzZ7sLmKM7iXAKjOM8Q
- CfyW9uJIMcRcnwiljiNN1Zw1Oc32V+/Gqc6Xwf6Tk2HmpBJSqxyhMnz879Uc
- xP2zlrFydy2OqcPj6c84dRDzzNO8wjWnLVnNdoiuFDMiwsDqRrHIviuMliWt
- ssLwYX/vZmJ/L2ElrYQ1YXXVc51hwjp6451xcim5vzdpZdmilbVy0WSI9HBu
- PBmZTNth28rGOpJloz8+R614nNxHhngnet7WgPcZk1COUcZUxd52+ks0d8qr
- MNAsB5+NoCW1aHrO+mFPkd/0Ac2jXeo9RXAHfK/f7xgH+1hpbtc1Q3jdr1BH
- ni8K6W20mmUveN3tUbvou7yxyQNh5j3jSElUJdetgPTZV90sCrItlKDlw/vz
- 8OhuUi+W/Fbgeo+Fic/0Yja7EX2OWIGFMMxjIYMIogjBodlLmpsKpxftxFck
- l2yb5C37AskvHecsyag5ZiQIBJjpuuMixjpwaaQwTutGS2OCInKduBjuGFuI
- luKms/pkhn4n8F8awj86wH95CP9UH//k3/kt+usw8jbu0ficrNN0Ile2ECpg
- poCrJHGtgOuYLeAGbm6BKcxhfgujChGFBYUxhVRHSSssKiwp3FLIKEwpLP8G
- Q1+Sp54GAAA=
+ H4sIAAAAAAAA/71UTVMTQRB9s4EkBNRkI8qHIgrIl7ABvw6xqFIKrJQxqCAH
+ OU02axiSzFI7kxTcuHqy/Av+A2+WB4vy6I+y7N0kJIFQcNFKpadn5vV7PdM9
+ +/vPj58AHuEpwwKXBc8VhQNL8pooci1cadluZd9VjpXjtZce3999URXlguO9
+ 0hEwhvger3GrzGXR2sjvOTathhhi9SCeLzsMH2ay3XhP8aWzLaZN7QlZTGdL
+ ri4Lae3VKtbHqrT9MGWtN7yl9Ow2w5d/RP5s4TzeF9wubWoya1J7hyc876XQ
+ 6ZUgp4ms6xWtPUfnPS6IlEvpal4XyLk6Vy2X0wzhZ3pXqJUo+hjG2pIRUjue
+ 5GUrI/1MlbBVBP0Mg/auY5ca8W+4xysOARmmZ7Kna9DluLPbA7iCqzEM4BpD
+ r+dWtRNFgiFiuyQodRRJquakn9Nke/WmLnW/DOZZTYbxi0pIrdJiZfj836vZ
+ yXu2lpF8fS+K0ZPrac840Yx57Whe4JrTkYxKLURPivmmzzdgYCXfMWjzQPhe
+ irzCEsOn46P7seOjmBE3YsaQUXevBsOQ0fpHg3FkPn58NGKk2JyRMpbD8RD5
+ Pcs3470jSbPHNFKRwLJU+NfXsBGNEryvCzrWQBsd6H4/oWXm52o2z9Rep+lL
+ voeOjml+O7yq1KLiWKsnjUW4sabM2gE1oCK6pt7W4b4PME/VZ7GkGXpW3QK1
+ 5bWskE6uWsk73la9Uc2sa/PyNveEP28s9m2KouS66pE/+a6eRUbWhBK0ffKI
+ nrceKDXkplv1bGdd+PHDjZjtekQbEEsw0OMXl8Zh9CKMEFI0e0tzv8LJOTP2
+ HfF50yT7wLxO9lsAXiIb9q8ZMSyTP16HYxA3ArokErhJ+76XxBBFPAziIvSR
+ prUQbUWDnmrZYfpdoH+ri/5Ah/7tLvqjbfoj5+sbeBxYC09o3KDVMbqROzsI
+ ZTCewd0M7mEig0lMZXAf0ztgCjOY3cGAQq/CnMINhUTgJBXmFR4oLCgMK4wq
+ LP4F8P5Vs6MGAAA=
"""
)
internal val NAV_HOST = bytecodeStub(
filename = "NavHost.kt",
filepath = "androidx/navigation/compose",
- checksum = 0x72aa34d0,
+ checksum = 0x6aac9b28,
source = """
package androidx.navigation.compose
@@ -169,25 +171,25 @@
""",
"""
META-INF/main.kotlin_module:
- H4sIAAAAAAAAAGNgYGBmYGBgBGJWKM3AZc0lnZiXUpSfmVKhl5dYlpmeWJKZ
- n6eXnJ9bkF+cKiTol1jmXpRYkOFUmpmTklrkXSLECRTyyC8u8S5RYtBiAAA0
- 5BaVVQAAAA==
+ H4sIAAAAAAAA/2NgYGBmYGBgBGJOBijgsuaSTsxLKcrPTKnQy0ssy0xPLMnM
+ z9NLzs8tyC9OFRL0SyxzL0osyHAqzcxJSS3yLhHiBAp55BeXeJdwiXJxAxXq
+ pVYk5hbkpAqxhaSChJUYtBgARVljGmwAAAA=
""",
"""
androidx/navigation/compose/NavHostKt.class:
- H4sIAAAAAAAAAJVSy24TMRQ9nrxDH0lKXwFKoS19AZNWsApCKhWFqCEgUrLp
- ypmY1MnErmY8Udn1W/gDdogFqljyUYg7k6SNVCRgpDn3+vjch33989e37wCe
- 4CHDGlctT8vWma14X7a5kVrZju6dal/YNd5/rX1zaFJgDLkO73Pb5aptv212
- hENsjCE1FDE83aheKerGk6pdrna1caWyO/2e/TFQTpjetw+G3k55s8HQ+f+4
- Z4+qf+qbWnnl8dOTF4F0W8K7zPJBSVN+HhVbqWqvbXeEaXpcUkqulDZ8kL6m
- TS1w3TJDwtOBEWlkGJbGOpHKCE9x166osE1fOn4KNxhmnRPhdIfh77jHe4KE
- DOvjJxvcWfn6WTcbE5jEVBYTmKb7bA6aTyPPULiuZlj+26Uy5EeSN8LwFjec
- OKvXj9HUWQgJBtYNHYv4Mxl6JfJaOwyHF+fF7MV51spZAzMVmQVr9BfXcySx
- Smw3mbPIxnbnc/HiTCFesErJCFkp8eNz0kqnwpS7jGrSQYYNjXe59k9DpBGM
- gl+eGUG3rtUoy9GnU0GC7PANPu7SM4zv65ZgmK5KJWpBrym8I950RdiDdrjb
- 4J4M10MyU5dtxU3gkb/6PlBG9kRF9aUvaftylHtXr4Sq1XXgOeJAhvGLw5jG
- IGJMiB1YiCP8SIYEkohhjVZ7xFtkJ7cK2a/IbRcKhF/CYeABYZLkE4Tr5M8N
- hMhgJko0iTxu0v5GpE5hM+QsItJRlXREb0W4im2y+8TOUu25Y8QqmK9ggRCL
- FRRxq4LbuHMM5mMJd4+R9pHwsewjE2Hexz0f932s/AYz8VZoLwQAAA==
+ H4sIAAAAAAAA/5VSS2/TQBD+1nmHPhKXvgK0hbb0RXFawSkIqVQUrIaAaMml
+ p42zpJs468peR+XW38I/4IY4oIojPwoxdpI2UpGAg7+Znf1m5vPM/vz17TuA
+ J9hmWOWq6XuyeW4p3pMtrqWnLMfrnnmBsGq899oL9KHOgDEU2rzHLZerlvW2
+ 0RYORRMMmQGJ4el69ZpxpH2pWpVqx9OuVFa717U+hsqJygfWwcDbqWzUGdr/
+ n/dsu/on3STllc/PTl+E0m0K/6rKByV15XncbLnq+S2rLXTD55JKcqU8zfvl
+ a56uha5bYUj5XqhFFjmGhRElUmnhK+5atopkBtIJMrjFMO2cCqczSH/Hfd4V
+ RGRYG/2z/swqN/91oz6GcUzkMYZJmmejLz6LIoN5k82w9LehMhSHlDdC8ybX
+ nGJGt5egrbMIchGAgXUix6DLcxl5ZfKaOwyHlxel/OVF3igYfTMRmzlj+JXW
+ CkQxymw3XTDIJnZnC8nSlJk0jXI6RlZO/ficNrKZqOQui7qZQ1WjUlf/aZO0
+ h2Hyy3MtaPSeGlY5/nQmiJAfPMTHHXqLyX2vKRgmq1KJWthtCP+YN1wRafAc
+ 7ta5L6PzIJg7ki3FdeiTv/I+VFp2ha16MpB0fbXPveunQt2OvNB3xIGM8ucH
+ OfV+xggROzCQRH/a80ghjQQe0mmP4gbZ8U0z/xWFLdMk/BItA2uEaaKPEa6T
+ P9MnIoepuNA4irhN9xsxO4PNKGZQIBt3ycbhrRhX8YjsPkWnqffMCRI2Zm3M
+ 2aSlZOMO7tq4h4UTsACLWDpBNkAqwP0AuRiLAR4EWA6w8hvNMdYWNAQAAA==
"""
)
diff --git a/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/UnrememberedGetBackStackEntryDetectorTest.kt b/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/UnrememberedGetBackStackEntryDetectorTest.kt
index b33210d..4874559 100644
--- a/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/UnrememberedGetBackStackEntryDetectorTest.kt
+++ b/navigation/navigation-compose-lint/src/test/java/androidx/navigation/compose/lint/UnrememberedGetBackStackEntryDetectorTest.kt
@@ -193,7 +193,8 @@
),
Stubs.Composable,
Stubs.Remember,
- NAV_CONTROLLER
+ NAV_CONTROLLER,
+ NAV_BACK_STACK_ENTRY
)
.run()
.expect(
@@ -368,7 +369,8 @@
),
Stubs.Composable,
Stubs.Remember,
- NAV_CONTROLLER
+ NAV_CONTROLLER,
+ NAV_BACK_STACK_ENTRY
)
.run()
.expectClean()
diff --git a/profileinstaller/profileinstaller/src/main/java/androidx/profileinstaller/ProfileTranscoder.java b/profileinstaller/profileinstaller/src/main/java/androidx/profileinstaller/ProfileTranscoder.java
index 700a737..adf0f86 100644
--- a/profileinstaller/profileinstaller/src/main/java/androidx/profileinstaller/ProfileTranscoder.java
+++ b/profileinstaller/profileinstaller/src/main/java/androidx/profileinstaller/ProfileTranscoder.java
@@ -38,7 +38,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -52,7 +51,6 @@
import java.util.Map;
import java.util.TreeMap;
-@RequiresApi(19)
class ProfileTranscoder {
private ProfileTranscoder() {
}
@@ -219,7 +217,7 @@
* (M|dex_map_size)
* type_index_diff[dex_map_size]
* where `M` stands for special encodings indicating missing types (kIsMissingTypesEncoding)
- * or memamorphic call (kIsMegamorphicEncoding) which both imply `dex_map_size == 0`.
+ * or megamorphic call (kIsMegamorphicEncoding) which both imply `dex_map_size == 0`.
*/
private static void writeProfileForS(
@NonNull OutputStream os,
@@ -371,7 +369,7 @@
// Method Flags
int methodFlags = computeMethodFlags(profile);
// Bitmap Contents
- byte[] bitmapContents = createMethodBitmapRegion(profile);
+ byte[] bitmapContents = createMethodBitmapRegionForS(methodFlags, profile);
// Methods with Inline Caches
byte[] methodRegionContents = createMethodsWithInlineCaches(profile);
// Profile Index
@@ -404,11 +402,12 @@
}
}
- private static byte[] createMethodBitmapRegion(
+ private static byte[] createMethodBitmapRegionForS(
+ int methodFlags,
@NonNull DexProfileData profile
) throws IOException {
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
- writeMethodBitmap(out, profile);
+ writeMethodBitmapForS(out, methodFlags, profile);
return out.toByteArray();
}
}
@@ -543,8 +542,8 @@
}
/**
- * Create compressable body only for V0.1.0 v0.0.9.
- *
+ * Create compressible body only for V0.1.0 v0.0.9.
+ * <p>
* For 0.1.0 this will write header/header/header/body/body/body
* For 0.0.9 this will write header/body/header/body/header/body
*/
@@ -613,6 +612,12 @@
return roundUpToByte(methodBitmapBits) / SIZEOF_BYTE;
}
+ private static int getMethodBitmapStorageSizeForS(int methodFlags, int numMethodIds) {
+ int bits = Integer.bitCount(methodFlags & ~HOT);
+ int methodBitmapBits = bits * numMethodIds;
+ return roundUpToByte(methodBitmapBits) / SIZEOF_BYTE;
+ }
+
private static int roundUpToByte(int bits) {
return (bits + SIZEOF_BYTE - 1) & -SIZEOF_BYTE;
}
@@ -721,6 +726,34 @@
}
}
+ private static void writeMethodBitmapForS(
+ @NonNull OutputStream os,
+ int methodFlags,
+ @NonNull DexProfileData dexData
+ ) throws IOException {
+ int methodBitmapStorageSize = getMethodBitmapStorageSizeForS(
+ methodFlags, dexData.numMethodIds
+ );
+ byte[] bitmap = new byte[methodBitmapStorageSize];
+ for (Map.Entry<Integer, Integer> entry : dexData.methods.entrySet()) {
+ int methodIndex = entry.getKey();
+ int flagValue = entry.getValue();
+
+ if ((flagValue & methodFlags) == 0) {
+ continue;
+ }
+
+ if ((flagValue & STARTUP) != 0) {
+ setMethodBitmapBit(bitmap, STARTUP, methodIndex, dexData);
+ }
+
+ if ((flagValue & POST_STARTUP) != 0) {
+ setMethodBitmapBit(bitmap, POST_STARTUP, methodIndex, dexData);
+ }
+ }
+ os.write(bitmap);
+ }
+
/**
* Writes the methods flags as a bitmap to the output stream.
* @param os the destination OutputStream to write to
diff --git a/profileinstaller/profileinstaller/src/test/java/androidx/profileinstaller/ProfileTranscoderTests.java b/profileinstaller/profileinstaller/src/test/java/androidx/profileinstaller/ProfileTranscoderTests.java
index 23a4c10..a5e9240 100644
--- a/profileinstaller/profileinstaller/src/test/java/androidx/profileinstaller/ProfileTranscoderTests.java
+++ b/profileinstaller/profileinstaller/src/test/java/androidx/profileinstaller/ProfileTranscoderTests.java
@@ -65,7 +65,7 @@
@Test
public void testTranscodeForN() throws IOException {
assertGoldenTranscode(
- testFile("baseline.prof"),
+ testFile("baseline-p.prof"),
testFile("baseline-n.prof"),
ProfileVersion.V001_N
);
@@ -74,7 +74,7 @@
@Test
public void testTranscodeForO() throws IOException {
assertGoldenTranscode(
- testFile("baseline.prof"),
+ testFile("baseline-p.prof"),
testFile("baseline-o.prof"),
ProfileVersion.V005_O
);
@@ -83,7 +83,7 @@
@Test
public void testTranscodeForO_MR1() throws IOException {
assertGoldenTranscode(
- testFile("baseline.prof"),
+ testFile("baseline-p.prof"),
testFile("baseline-o-mr1.prof"),
ProfileVersion.V009_O_MR1
);
@@ -92,7 +92,7 @@
@Test
public void testTranscodeForP() throws IOException {
assertGoldenTranscode(
- testFile("baseline.prof"),
+ testFile("baseline-p.prof"),
testFile("baseline-p.prof"),
ProfileVersion.V010_P
);
@@ -110,6 +110,17 @@
}
@Test
+ public void testTranscodeForS_methodBitmapStorage() throws IOException {
+ assertGoldenTranscodeWithMeta(
+ testFile("katana/baseline-p.prof"),
+ testFile("katana/baseline-s.profm"),
+ testFile("katana/baseline-s.prof"),
+ ProfileVersion.V015_S,
+ "" /* apkName */
+ );
+ }
+
+ @Test
public void testMultidexTranscodeForO() throws IOException {
assertGoldenTranscode(
testFile("baseline-multidex.prof"),
diff --git a/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-p.prof b/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-p.prof
new file mode 100644
index 0000000..5633b92
--- /dev/null
+++ b/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-p.prof
Binary files differ
diff --git a/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-s.prof b/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-s.prof
new file mode 100644
index 0000000..43ad67e
--- /dev/null
+++ b/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-s.prof
Binary files differ
diff --git a/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-s.profm b/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-s.profm
new file mode 100644
index 0000000..596d8bc
--- /dev/null
+++ b/profileinstaller/profileinstaller/src/test/test-data/katana/baseline-s.profm
Binary files differ
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/AnnotationMirrorExt.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/AnnotationMirrorExt.kt
new file mode 100644
index 0000000..3b1368b
--- /dev/null
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/AnnotationMirrorExt.kt
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.room.compiler.processing.javac
+
+import com.google.auto.common.MoreElements
+import com.google.auto.common.MoreTypes
+import java.lang.annotation.Repeatable
+import javax.lang.model.element.AnnotationMirror
+import javax.lang.model.type.TypeKind
+import javax.lang.model.util.ElementFilter
+
+/** Returns true if the given [AnnotationMirror] represents a repeatable annotation. */
+internal fun AnnotationMirror.isRepeatable(): Boolean {
+ val valueType =
+ ElementFilter.methodsIn(MoreTypes.asTypeElement(annotationType).enclosedElements)
+ .singleOrNull { it.simpleName.toString() == "value" }
+ ?.returnType
+
+ // The contract of a repeatable annotation requires that the container annotation have a
+ // single "default" method that returns an array typed with the repeatable annotation type.
+ if (valueType == null || valueType.kind != TypeKind.ARRAY) {
+ return false
+ }
+ val componentType = MoreTypes.asArray(valueType).componentType
+ if (componentType.kind != TypeKind.DECLARED) {
+ return false
+ }
+ val componentElement = MoreTypes.asDeclared(componentType).asElement()
+
+ // Ideally we would read the value of the Repeatable annotation to get the container class
+ // type and check that it matches "this" type. However, there seems to be a KSP bug where
+ // the value of Repeatable is not present so the best we can do is check that all the nested
+ // members are annotated with repeatable.
+ // https://github.com/google/ksp/issues/358
+ return MoreElements.isAnnotationPresent(componentElement, Repeatable::class.java) ||
+ // The java and kotlin versions of Repeatable are not interchangeable.
+ // https://github.com/google/ksp/issues/459 asks whether the built in type
+ // mapper should convert them, but it may not be possible because there are
+ // differences to how they work (eg different parameters).
+ MoreElements.isAnnotationPresent(
+ componentElement, kotlin.annotation.Repeatable::class.java
+ )
+}
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacElement.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacElement.kt
index 0cb2cff..80e9569 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacElement.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacElement.kt
@@ -70,7 +70,16 @@
override fun getAllAnnotations(): List<XAnnotation> {
return element.annotationMirrors.map { mirror -> JavacAnnotation(env, mirror) }
.flatMap { annotation ->
- annotation.unwrapRepeatedAnnotationsFromContainer() ?: listOf(annotation)
+ // TODO(b/313473892): Checking if an annotation needs to be unwrapped can be
+ // expensive with the XProcessing API, especially if we don't really care about
+ // annotation values, so do a quick check on the AnnotationMirror first to decide
+ // if its repeatable. Remove this once we've optimized the general solution in
+ // unwrapRepeatedAnnotationsFromContainer()
+ if (annotation.mirror.isRepeatable()) {
+ annotation.unwrapRepeatedAnnotationsFromContainer() ?: listOf(annotation)
+ } else {
+ listOf(annotation)
+ }
}
}
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt
index 2d66b79..fc22ded 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt
@@ -62,13 +62,12 @@
}
override val typeElement by lazy {
- val element = try {
- MoreTypes.asTypeElement(typeMirror)
- } catch (notAnElement: IllegalArgumentException) {
- null
- }
- element?.let {
- env.wrapTypeElement(it)
+ env.delegate.typeUtils.asElement(typeMirror)?.let {
+ if (MoreElements.isType(it)) {
+ env.wrapTypeElement(MoreElements.asType(it))
+ } else {
+ null
+ }
}
}
@@ -112,7 +111,16 @@
JavacKmAnnotation(env, it)
} ?: typeMirror.annotationMirrors.map { mirror -> JavacAnnotation(env, mirror) }
.flatMap { annotation ->
- annotation.unwrapRepeatedAnnotationsFromContainer() ?: listOf(annotation)
+ // TODO(b/313473892): Checking if an annotation needs to be unwrapped can be
+ // expensive with the XProcessing API, especially if we don't really care about
+ // annotation values, so do a quick check on the AnnotationMirror first to decide
+ // if its repeatable. Remove this once we've optimized the general solution in
+ // unwrapRepeatedAnnotationsFromContainer()
+ if (annotation.mirror.isRepeatable()) {
+ annotation.unwrapRepeatedAnnotationsFromContainer() ?: listOf(annotation)
+ } else {
+ listOf(annotation)
+ }
}
}
diff --git a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java
index 965156a..73d57fe 100644
--- a/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java
+++ b/samples/MediaRoutingDemo/src/main/java/com/example/androidx/mediarouting/activities/systemrouting/SystemRoutingActivity.java
@@ -152,9 +152,7 @@
private void initializeSystemRoutesSources() {
mSystemRoutesSources.clear();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- mSystemRoutesSources.add(MediaRouterSystemRoutesSource.create(/* context= */ this));
- }
+ mSystemRoutesSources.add(MediaRouterSystemRoutesSource.create(/* context= */ this));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
mSystemRoutesSources.add(MediaRouter2SystemRoutesSource.create(/* context= */ this));
@@ -162,8 +160,7 @@
mSystemRoutesSources.add(AndroidXMediaRouterSystemRoutesSource.create(/* context= */ this));
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2
- && hasBluetoothPermission()) {
+ if (hasBluetoothPermission()) {
mSystemRoutesSources.add(
BluetoothManagerSystemRoutesSource.create(/* context= */ this));
}
diff --git a/security/security-app-authenticator-testing/src/androidTest/java/androidx/security/app/authenticator/TestAppAuthenticatorBuilderTest.java b/security/security-app-authenticator-testing/src/androidTest/java/androidx/security/app/authenticator/TestAppAuthenticatorBuilderTest.java
index 83d27b6..d567ce2 100644
--- a/security/security-app-authenticator-testing/src/androidTest/java/androidx/security/app/authenticator/TestAppAuthenticatorBuilderTest.java
+++ b/security/security-app-authenticator-testing/src/androidTest/java/androidx/security/app/authenticator/TestAppAuthenticatorBuilderTest.java
@@ -294,6 +294,7 @@
public void callingAppIdentity_packageNotInstalled_returnsUnknownPackage() throws Exception {
// The TestAppAuthenticator can be configured to treat a package as uninstalled to verify
// scenarios where the package being queried is not available on the device.
+ final int packageUid = 10001;
AppAuthenticator appAuthenticatorFromResource =
mBuilderFromResource.setPackageNotInstalled(
DECLARED_PACKAGE1).setPackageNotInstalled(
@@ -305,20 +306,20 @@
assertEquals(AppAuthenticator.PERMISSION_DENIED_UNKNOWN_PACKAGE,
appAuthenticatorFromResource.checkCallingAppIdentity(
- DECLARED_PACKAGE1, TEST_PERMISSION));
+ DECLARED_PACKAGE1, TEST_PERMISSION, packageUid));
assertEquals(AppAuthenticator.PERMISSION_DENIED_UNKNOWN_PACKAGE,
appAuthenticatorFromInputStream.checkCallingAppIdentity(
- DECLARED_PACKAGE1, TEST_PERMISSION));
+ DECLARED_PACKAGE1, TEST_PERMISSION, packageUid));
assertEquals(AppAuthenticator.SIGNATURE_NO_MATCH,
appAuthenticatorFromResource.checkAppIdentity(EXPECTED_IDENTITY_PACKAGE));
assertEquals(AppAuthenticator.SIGNATURE_NO_MATCH,
appAuthenticatorFromInputStream.checkAppIdentity(EXPECTED_IDENTITY_PACKAGE));
assertThrows(SecurityException.class, () ->
appAuthenticatorFromResource.enforceCallingAppIdentity(
- DECLARED_PACKAGE1, TEST_PERMISSION));
+ DECLARED_PACKAGE1, TEST_PERMISSION, packageUid));
assertThrows(SecurityException.class, () ->
appAuthenticatorFromInputStream.enforceCallingAppIdentity(
- DECLARED_PACKAGE1, TEST_PERMISSION));
+ DECLARED_PACKAGE1, TEST_PERMISSION, packageUid));
assertThrows(SecurityException.class, () ->
appAuthenticatorFromResource.enforceAppIdentity(EXPECTED_IDENTITY_PACKAGE));
assertThrows(SecurityException.class, () ->
diff --git a/security/security-app-authenticator/api/current.txt b/security/security-app-authenticator/api/current.txt
index adb40b6..3a3da2b 100644
--- a/security/security-app-authenticator/api/current.txt
+++ b/security/security-app-authenticator/api/current.txt
@@ -4,11 +4,13 @@
public class AppAuthenticator {
method public int checkAppIdentity(String);
method public int checkCallingAppIdentity(String, String);
+ method public int checkCallingAppIdentity(String, String, int);
method public int checkCallingAppIdentity(String, String, int, int);
method public static androidx.security.app.authenticator.AppAuthenticator createFromInputStream(android.content.Context, java.io.InputStream) throws androidx.security.app.authenticator.AppAuthenticatorXmlException, java.io.IOException;
method public static androidx.security.app.authenticator.AppAuthenticator createFromResource(android.content.Context, @XmlRes int) throws androidx.security.app.authenticator.AppAuthenticatorXmlException, java.io.IOException;
method public void enforceAppIdentity(String);
method public void enforceCallingAppIdentity(String, String);
+ method public void enforceCallingAppIdentity(String, String, int);
method public void enforceCallingAppIdentity(String, String, int, int);
field public static final int PERMISSION_DENIED_NO_MATCH = -3; // 0xfffffffd
field public static final int PERMISSION_DENIED_PACKAGE_UID_MISMATCH = -5; // 0xfffffffb
diff --git a/security/security-app-authenticator/api/restricted_current.txt b/security/security-app-authenticator/api/restricted_current.txt
index adb40b6..3a3da2b 100644
--- a/security/security-app-authenticator/api/restricted_current.txt
+++ b/security/security-app-authenticator/api/restricted_current.txt
@@ -4,11 +4,13 @@
public class AppAuthenticator {
method public int checkAppIdentity(String);
method public int checkCallingAppIdentity(String, String);
+ method public int checkCallingAppIdentity(String, String, int);
method public int checkCallingAppIdentity(String, String, int, int);
method public static androidx.security.app.authenticator.AppAuthenticator createFromInputStream(android.content.Context, java.io.InputStream) throws androidx.security.app.authenticator.AppAuthenticatorXmlException, java.io.IOException;
method public static androidx.security.app.authenticator.AppAuthenticator createFromResource(android.content.Context, @XmlRes int) throws androidx.security.app.authenticator.AppAuthenticatorXmlException, java.io.IOException;
method public void enforceAppIdentity(String);
method public void enforceCallingAppIdentity(String, String);
+ method public void enforceCallingAppIdentity(String, String, int);
method public void enforceCallingAppIdentity(String, String, int, int);
field public static final int PERMISSION_DENIED_NO_MATCH = -3; // 0xfffffffd
field public static final int PERMISSION_DENIED_PACKAGE_UID_MISMATCH = -5; // 0xfffffffb
diff --git a/security/security-app-authenticator/src/main/java/androidx/security/app/authenticator/AppAuthenticator.java b/security/security-app-authenticator/src/main/java/androidx/security/app/authenticator/AppAuthenticator.java
index b547cff..b926493 100644
--- a/security/security-app-authenticator/src/main/java/androidx/security/app/authenticator/AppAuthenticator.java
+++ b/security/security-app-authenticator/src/main/java/androidx/security/app/authenticator/AppAuthenticator.java
@@ -16,7 +16,12 @@
package androidx.security.app.authenticator;
+import static android.os.Process.INVALID_PID;
+import static android.os.Process.INVALID_UID;
+
+import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Binder;
@@ -205,10 +210,12 @@
* Enforces the specified {@code packageName} has the expected signing identity for the
* provided {@code permission}.
*
- * <p>This method should be used when verifying the identity of a calling process of an IPC.
- * This is the same as calling {@link #enforceCallingAppIdentity(String, String, int, int)} with
- * the pid and uid returned by {@link Binder#getCallingPid()} and
- * {@link Binder#getCallingUid()}.
+ * <p>This method should be used for verifying the identity of a package when the UID / PID
+ * is not available. For instance, this should be used within an activity that was started
+ * with {@link Activity#startActivityForResult(Intent, int)} where the package name is
+ * available from {@link Activity#getCallingPackage()}. For instances where the calling
+ * UID is available but the calling PID is not available,
+ * ({@link #checkCallingAppIdentity(String, String, int)} should be preferred.
*
* @param packageName the name of the package to be verified
* @param permission the name of the permission as specified in the XML from which to verify the
@@ -217,15 +224,36 @@
* for the permission
*/
public void enforceCallingAppIdentity(@NonNull String packageName, @NonNull String permission) {
- enforceCallingAppIdentity(packageName, permission,
- mAppAuthenticatorUtils.getCallingPid(), mAppAuthenticatorUtils.getCallingUid());
+ enforceCallingAppIdentity(packageName, permission, INVALID_PID, INVALID_UID);
+ }
+
+ /**
+ * Enforces the specified {@code packageName} belongs to the provided {@code uid}
+ * and has the expected signing identity for the {@code permission}.
+ *
+ * <p>This method should be used for verifying the identity of a package when the UID is
+ * available but the PID is not. For instance, this should be used within an activity that
+ * is started with {@link android.app.ActivityOptions#setShareIdentityEnabled(boolean)} set to
+ * true; the package name would then be accessible via {@link Activity#getLaunchedFromPackage()}
+ * and the UID from {@link Activity#getLaunchedFromUid()}.
+ *
+ * @param packageName the name of the package to be verified
+ * @param permission the name of the permission as specified in the XML from which to verify the
+ * package / signing identity
+ * @param uid the expected uid of the package
+ * @throws SecurityException if the uid does not belong to the specified package, or if the
+ * signing identity of the package does not match that defined for the permission
+ */
+ public void enforceCallingAppIdentity(@NonNull String packageName, @NonNull String permission,
+ int uid) {
+ enforceCallingAppIdentity(packageName, permission, INVALID_PID, uid);
}
/**
* Enforces the specified {@code packageName} belongs to the provided {@code pid} / {@code uid}
* and has the expected signing identity for the {@code permission}.
*
- * <p>This method should be used when verifying the identity of a calling process of an IPC.
+ * <p>This method should be used for verifying the identity of a calling process of an IPC.
*
* @param packageName the name of the package to be verified
* @param permission the name of the permission as specified in the XML from which to verify the
@@ -248,10 +276,12 @@
* Checks the specified {@code packageName} has the expected signing identity for the
* provided {@code permission}.
*
- * <p>This method should be used when verifying the identity of a calling process of an IPC.
- * This is the same as calling {@link #checkCallingAppIdentity(String, String, int, int)} with
- * the pid and uid returned by {@link Binder#getCallingPid()} and
- * {@link Binder#getCallingUid()}.
+ * <p>This method should be used for verifying the identity of a package when the UID / PID
+ * is not available. For instance, this should be used within an activity that was started
+ * with {@link Activity#startActivityForResult(Intent, int)} where the package name is
+ * available from {@link Activity#getCallingPackage()}. For instances where the calling
+ * UID is available but the calling PID is not available,
+ * ({@link #checkCallingAppIdentity(String, String, int)} should be preferred.
*
* @param packageName the name of the package to be verified
* @param permission the name of the permission as specified in the XML from which to verify the
@@ -262,20 +292,46 @@
* the expected signing identity for the provided {@code permission},<br>
* {@link #PERMISSION_DENIED_UNKNOWN_PACKAGE} if the specified {@code packageName} does not
* exist on the device,<br>
- * {@link #PERMISSION_DENIED_PACKAGE_UID_MISMATCH} if the uid as returned from
- * {@link Binder#getCallingUid()} does not match the uid assigned to the package
*/
@AppIdentityPermissionResult
public int checkCallingAppIdentity(@NonNull String packageName, @NonNull String permission) {
- return checkCallingAppIdentity(packageName, permission,
- mAppAuthenticatorUtils.getCallingPid(), mAppAuthenticatorUtils.getCallingUid());
+ return checkCallingAppIdentity(packageName, permission, INVALID_PID, INVALID_UID);
}
/**
- * Checks the specified {@code packageName} has the expected signing identity for the
- * provided {@code permission}.
+ * Checks the specified {@code packageName} running under {@code uid} has the expected
+ * signing identity for the provided {@code permission}.
*
- * <p>This method should be used when verifying the identity of a calling process of an IPC.
+ * <p>This method should be used for verifying the identity of a package when the UID is
+ * available but the PID is not. For instance, this should be used within an activity that
+ * is started with {@link android.app.ActivityOptions#setShareIdentityEnabled(boolean)} set to
+ * true; the package name would then be accessible via {@link Activity#getLaunchedFromPackage()}
+ * and the UID from {@link Activity#getLaunchedFromUid()}.
+ *
+ * @param packageName the name of the package to be verified
+ * @param permission the name of the permission as specified in the XML from which to verify the
+ * package / signing identity
+ * @param uid the expected uid of the package
+ * @return {@link #PERMISSION_GRANTED} if the specified {@code packageName} has the expected
+ * signing identity for the provided {@code permission},<br>
+ * {@link #PERMISSION_DENIED_NO_MATCH} if the specified {@code packageName} does not have
+ * the expected signing identity for the provided {@code permission},<br>
+ * {@link #PERMISSION_DENIED_UNKNOWN_PACKAGE} if the specified {@code packageName} does not
+ * exist on the device,<br>
+ * {@link #PERMISSION_DENIED_PACKAGE_UID_MISMATCH} if the specified {@code uid} does not
+ * match the uid assigned to the package
+ */
+ @AppIdentityPermissionResult
+ public int checkCallingAppIdentity(@NonNull String packageName, @NonNull String permission,
+ int uid) {
+ return checkCallingAppIdentity(packageName, permission, INVALID_PID, uid);
+ }
+
+ /**
+ * Checks the specified {@code packageName} running with {@code pid} and {@code uid} has the
+ * expected signing identity for the provided {@code permission}.
+ *
+ * <p>This method should be used for verifying the identity of a calling process of an IPC.
*
* @param packageName the name of the package to be verified
* @param permission the name of the permission as specified in the XML from which to verify the
@@ -314,18 +370,21 @@
String permission,
int pid,
int uid) {
- // First verify that the UID of the calling package matches the specified value.
- int packageUid;
- try {
- packageUid = mAppAuthenticatorUtils.getUidForPackage(packageName);
- } catch (PackageManager.NameNotFoundException e) {
- return AppAuthenticatorResult.create(PERMISSION_DENIED_UNKNOWN_PACKAGE,
- "The app " + packageName + " was not found on the device");
- }
- if (packageUid != uid) {
- return AppAuthenticatorResult.create(PERMISSION_DENIED_PACKAGE_UID_MISMATCH,
- "The expected UID, " + uid + ", of the app " + packageName
- + " does not match the actual UID, " + packageUid);
+ // If a valid UID is provided, verify that the UID of the calling package matches the
+ // specified value.
+ if (uid != INVALID_UID) {
+ int packageUid;
+ try {
+ packageUid = mAppAuthenticatorUtils.getUidForPackage(packageName);
+ } catch (PackageManager.NameNotFoundException e) {
+ return AppAuthenticatorResult.create(PERMISSION_DENIED_UNKNOWN_PACKAGE,
+ "The app " + packageName + " was not found on the device");
+ }
+ if (packageUid != uid) {
+ return AppAuthenticatorResult.create(PERMISSION_DENIED_PACKAGE_UID_MISMATCH,
+ "The expected UID, " + uid + ", of the app " + packageName
+ + " does not match the actual UID, " + packageUid);
+ }
}
if (mAppSignatureVerifier.verifySigningIdentity(packageName, permission)) {
return AppAuthenticatorResult.create(PERMISSION_GRANTED, null);
diff --git a/security/security-app-authenticator/src/test/java/androidx/security/app/authenticator/AppAuthenticatorTest.java b/security/security-app-authenticator/src/test/java/androidx/security/app/authenticator/AppAuthenticatorTest.java
index 1e89cdf..1ec1ede 100644
--- a/security/security-app-authenticator/src/test/java/androidx/security/app/authenticator/AppAuthenticatorTest.java
+++ b/security/security-app-authenticator/src/test/java/androidx/security/app/authenticator/AppAuthenticatorTest.java
@@ -83,6 +83,7 @@
// tests, no assertion is required as making it past this statement without a
// SecurityException indicates the test was successful.
mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION);
+ mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION, TEST_UID);
mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION, TEST_PID,
TEST_UID);
}
@@ -99,6 +100,9 @@
() -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION));
assertThrows(SecurityException.class,
() -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION,
+ TEST_UID));
+ assertThrows(SecurityException.class,
+ () -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION,
TEST_PID, TEST_UID));
}
@@ -112,7 +116,8 @@
when(mMockAppAuthenticatorUtils.getUidForPackage(TEST_PACKAGE)).thenReturn(23456);
assertThrows(SecurityException.class,
- () -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION));
+ () -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION,
+ TEST_UID));
assertThrows(SecurityException.class,
() -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION,
TEST_PID, TEST_UID));
@@ -123,13 +128,20 @@
// If the specified package does not exist on the device then enforceCallingAppIdentity
// should receive a NameNotFoundException when checking for the UID; this should result
// in a SecurityException.
+ // true is returned here to ensure the test fails for the expected reason; a return value
+ // of false would still result in a SecurityException thrown by the method under test
+ // since any failures during an enforce call result in this exception. Returning true
+ // allows the method under test to return a successful response if package verification
+ // is incorrectly skipped, allowing the test to ensure that the SecurityException is the
+ // expected result from the package not existing on the system.
when(mMockAppSignatureVerifier.verifySigningIdentity(TEST_PACKAGE,
TEST_PERMISSION)).thenReturn(true);
when(mMockAppAuthenticatorUtils.getUidForPackage(TEST_PACKAGE)).thenThrow(
PackageManager.NameNotFoundException.class);
assertThrows(SecurityException.class,
- () -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION));
+ () -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION,
+ TEST_UID));
assertThrows(SecurityException.class,
() -> mAppAuthenticator.enforceCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION,
TEST_PID, TEST_UID));
@@ -145,6 +157,8 @@
assertEquals(AppAuthenticator.PERMISSION_GRANTED,
mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION));
assertEquals(AppAuthenticator.PERMISSION_GRANTED,
+ mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION, TEST_UID));
+ assertEquals(AppAuthenticator.PERMISSION_GRANTED,
mAppAuthenticator.checkCallingAppIdentity(
TEST_PACKAGE, TEST_PERMISSION, TEST_PID, TEST_UID));
}
@@ -160,6 +174,8 @@
assertEquals(AppAuthenticator.PERMISSION_DENIED_NO_MATCH,
mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION));
assertEquals(AppAuthenticator.PERMISSION_DENIED_NO_MATCH,
+ mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION, TEST_UID));
+ assertEquals(AppAuthenticator.PERMISSION_DENIED_NO_MATCH,
mAppAuthenticator.checkCallingAppIdentity(
TEST_PACKAGE, TEST_PERMISSION, TEST_PID, TEST_UID));
}
@@ -174,7 +190,7 @@
when(mMockAppAuthenticatorUtils.getUidForPackage(TEST_PACKAGE)).thenReturn(23456);
assertEquals(AppAuthenticator.PERMISSION_DENIED_PACKAGE_UID_MISMATCH,
- mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION));
+ mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION), TEST_UID);
assertEquals(AppAuthenticator.PERMISSION_DENIED_PACKAGE_UID_MISMATCH,
mAppAuthenticator.checkCallingAppIdentity(
TEST_PACKAGE, TEST_PERMISSION, TEST_PID, TEST_UID));
@@ -191,7 +207,7 @@
PackageManager.NameNotFoundException.class);
assertEquals(AppAuthenticator.PERMISSION_DENIED_UNKNOWN_PACKAGE,
- mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION));
+ mAppAuthenticator.checkCallingAppIdentity(TEST_PACKAGE, TEST_PERMISSION, TEST_UID));
assertEquals(AppAuthenticator.PERMISSION_DENIED_UNKNOWN_PACKAGE,
mAppAuthenticator.checkCallingAppIdentity(
TEST_PACKAGE, TEST_PERMISSION, TEST_PID, TEST_UID));
diff --git a/settings.gradle b/settings.gradle
index 70d9dd0..7c55ea0 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -987,6 +987,7 @@
includeProject(":wear:wear-input-testing", [BuildType.MAIN, BuildType.WEAR])
includeProject(":wear:wear-ongoing", [BuildType.MAIN, BuildType.WEAR])
includeProject(":wear:wear-phone-interactions", [BuildType.MAIN, BuildType.WEAR])
+includeProject(":wear:wear-phone-interactions-samples", "wear/wear-phone-interactions/samples", [BuildType.MAIN, BuildType.WEAR])
includeProject(":wear:wear-remote-interactions", [BuildType.MAIN, BuildType.WEAR])
includeProject(":wear:wear-samples-ambient", [BuildType.MAIN, BuildType.WEAR])
includeProject(":wear:wear-tooling-preview", [BuildType.MAIN, BuildType.WEAR])
diff --git a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/BasicSwipeToDismissBox.kt b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/BasicSwipeToDismissBox.kt
index df92362a..65d57d4 100644
--- a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/BasicSwipeToDismissBox.kt
+++ b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/BasicSwipeToDismissBox.kt
@@ -38,6 +38,7 @@
import androidx.compose.runtime.key
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.composed
import androidx.compose.ui.geometry.Offset
@@ -145,6 +146,19 @@
derivedStateOf { ((state.swipeableState.offset ?: 0f) / maxWidthPx).coerceIn(0f, 1f) }
}
val isSwiping by remember { derivedStateOf { progress > 0 } }
+ var squeezeMode by remember {
+ mutableStateOf(true)
+ }
+ LaunchedEffect(state.isAnimationRunning) {
+ if (state.targetValue == SwipeToDismissValue.Dismissed) {
+ squeezeMode = false
+ }
+ }
+ LaunchedEffect(state.targetValue) {
+ if (!squeezeMode && state.targetValue == SwipeToDismissValue.Default) {
+ squeezeMode = true
+ }
+ }
repeat(2) {
val isBackground = it == 0
@@ -164,9 +178,7 @@
max(0f, (1f - scale) * maxWidthPx / 2f)
val translationX =
- if (state.targetValue
- != SwipeToDismissValue.Dismissed
- ) {
+ if (squeezeMode) {
// Squeeze
squeezeOffset
} else {
@@ -197,10 +209,16 @@
Canvas(Modifier.fillMaxSize()) {
val color = if (isBackground) {
backgroundScrimColor
- .copy(alpha = MAX_BACKGROUND_SCRIM_ALPHA * (1 - progress))
+ .copy(
+ alpha = (MAX_BACKGROUND_SCRIM_ALPHA * (1 - progress))
+ .coerceIn(0f, 1f)
+ )
} else {
contentScrimColor
- .copy(alpha = min(MAX_CONTENT_SCRIM_ALPHA, progress / 2f))
+ .copy(
+ alpha = min(MAX_CONTENT_SCRIM_ALPHA, progress / 2f)
+ .coerceIn(0f, 1f)
+ )
}
drawRect(color = color)
}
diff --git a/wear/wear-phone-interactions/api/current.txt b/wear/wear-phone-interactions/api/current.txt
index 0be3c03..6013a71 100644
--- a/wear/wear-phone-interactions/api/current.txt
+++ b/wear/wear-phone-interactions/api/current.txt
@@ -74,11 +74,17 @@
method @UiThread public void close();
method public static androidx.wear.phone.interactions.authentication.RemoteAuthClient create(android.content.Context context);
method protected void finalize();
+ method public kotlinx.coroutines.flow.Flow<java.lang.Integer> getAvailabilityStatus();
method @UiThread public void sendAuthorizationRequest(androidx.wear.phone.interactions.authentication.OAuthRequest request, java.util.concurrent.Executor executor, androidx.wear.phone.interactions.authentication.RemoteAuthClient.Callback clientCallback);
+ property public final kotlinx.coroutines.flow.Flow<java.lang.Integer> availabilityStatus;
field public static final androidx.wear.phone.interactions.authentication.RemoteAuthClient.Companion Companion;
field public static final int ERROR_PHONE_UNAVAILABLE = 1; // 0x1
field public static final int ERROR_UNSUPPORTED = 0; // 0x0
field public static final int NO_ERROR = -1; // 0xffffffff
+ field public static final int STATUS_AVAILABLE = 3; // 0x3
+ field public static final int STATUS_TEMPORARILY_UNAVAILABLE = 2; // 0x2
+ field public static final int STATUS_UNAVAILABLE = 1; // 0x1
+ field public static final int STATUS_UNKNOWN = 0; // 0x0
}
public abstract static class RemoteAuthClient.Callback {
diff --git a/wear/wear-phone-interactions/api/restricted_current.txt b/wear/wear-phone-interactions/api/restricted_current.txt
index 0ee9fd0..d0e17bc 100644
--- a/wear/wear-phone-interactions/api/restricted_current.txt
+++ b/wear/wear-phone-interactions/api/restricted_current.txt
@@ -74,11 +74,17 @@
method @UiThread public void close();
method public static androidx.wear.phone.interactions.authentication.RemoteAuthClient create(android.content.Context context);
method protected void finalize();
+ method public kotlinx.coroutines.flow.Flow<java.lang.Integer> getAvailabilityStatus();
method @UiThread public void sendAuthorizationRequest(androidx.wear.phone.interactions.authentication.OAuthRequest request, java.util.concurrent.Executor executor, androidx.wear.phone.interactions.authentication.RemoteAuthClient.Callback clientCallback);
+ property public final kotlinx.coroutines.flow.Flow<java.lang.Integer> availabilityStatus;
field public static final androidx.wear.phone.interactions.authentication.RemoteAuthClient.Companion Companion;
field public static final int ERROR_PHONE_UNAVAILABLE = 1; // 0x1
field public static final int ERROR_UNSUPPORTED = 0; // 0x0
field public static final int NO_ERROR = -1; // 0xffffffff
+ field public static final int STATUS_AVAILABLE = 3; // 0x3
+ field public static final int STATUS_TEMPORARILY_UNAVAILABLE = 2; // 0x2
+ field public static final int STATUS_UNAVAILABLE = 1; // 0x1
+ field public static final int STATUS_UNKNOWN = 0; // 0x0
}
public abstract static class RemoteAuthClient.Callback {
diff --git a/wear/wear-phone-interactions/build.gradle b/wear/wear-phone-interactions/build.gradle
index 0406deb..0403497 100644
--- a/wear/wear-phone-interactions/build.gradle
+++ b/wear/wear-phone-interactions/build.gradle
@@ -28,6 +28,7 @@
api("androidx.core:core:1.6.0")
api("androidx.wear:wear:1.2.0")
api(libs.kotlinStdlib)
+ api(libs.kotlinCoroutinesCore)
// Needed for Assert.assertThrows
testImplementation(libs.junit)
@@ -37,6 +38,13 @@
testImplementation(libs.robolectric)
testImplementation(libs.mockitoCore4)
testImplementation(libs.truth)
+ testImplementation(libs.mockitoKotlin4)
+
+ // Includes the wear-sdk jar
+ compileOnly files("../../wear/wear_sdk/wear-sdk.jar")
+ testImplementation(files("../../wear/wear_sdk/wear-sdk.jar"))
+
+ samples(project(":wear:wear-phone-interactions-samples"))
}
android {
diff --git a/wear/wear-phone-interactions/samples/build.gradle b/wear/wear-phone-interactions/samples/build.gradle
new file mode 100644
index 0000000..3d3f23f
--- /dev/null
+++ b/wear/wear-phone-interactions/samples/build.gradle
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import androidx.build.LibraryType
+
+plugins {
+ id("AndroidXPlugin")
+ id("com.android.library")
+ id("kotlin-android")
+}
+
+dependencies {
+ implementation(libs.kotlinStdlib)
+ implementation(project(":wear:wear-phone-interactions"))
+
+ compileOnly(project(":annotation:annotation-sampled"))
+}
+
+android {
+ defaultConfig {
+ minSdkVersion 25
+ }
+ namespace "androidx.wear.phone.interactions.samples"
+}
+
+androidx {
+ name = "Android Wear Phone Interactions Samples"
+ type = LibraryType.SAMPLES
+ mavenVersion = LibraryVersions.WEAR_PHONE_INTERACTIONS
+ inceptionYear = "2023"
+ description = "Contains the sample code for the Android Wear Phone Interactions Classes"
+}
\ No newline at end of file
diff --git a/wear/wear-phone-interactions/samples/src/main/AndroidManifest.xml b/wear/wear-phone-interactions/samples/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3dc010d
--- /dev/null
+++ b/wear/wear-phone-interactions/samples/src/main/AndroidManifest.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools">
+</manifest>
\ No newline at end of file
diff --git a/wear/wear-phone-interactions/samples/src/main/java/androidx/wear/phone/interactions/samples/RemoteAuthClientSample.kt b/wear/wear-phone-interactions/samples/src/main/java/androidx/wear/phone/interactions/samples/RemoteAuthClientSample.kt
new file mode 100644
index 0000000..baeafa8
--- /dev/null
+++ b/wear/wear-phone-interactions/samples/src/main/java/androidx/wear/phone/interactions/samples/RemoteAuthClientSample.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.phone.interactions.samples
+
+import androidx.annotation.Sampled
+import androidx.wear.phone.interactions.authentication.OAuthRequest
+import androidx.wear.phone.interactions.authentication.RemoteAuthClient
+
+@Sampled
+suspend fun AuthAvailabilitySample(
+ remoteAuthClient: RemoteAuthClient,
+ oAuthRequest: OAuthRequest,
+ myAuthCallback: RemoteAuthClient.Callback
+) {
+ remoteAuthClient.availabilityStatus.collect {
+ status -> when (status) {
+ RemoteAuthClient.STATUS_UNAVAILABLE ->
+ TODO("Present alternative flow as remote auth is not available")
+ RemoteAuthClient.STATUS_TEMPORARILY_UNAVAILABLE ->
+ TODO("Present education to user to connect devices or bring to proximity.")
+ RemoteAuthClient.STATUS_AVAILABLE, RemoteAuthClient.STATUS_UNKNOWN ->
+ // Present normal auth flow when we don't know (old devices)
+ // or when we know it is available.
+ remoteAuthClient.sendAuthorizationRequest(
+ oAuthRequest,
+ Runnable::run,
+ myAuthCallback)
+ } }
+}
diff --git a/wear/wear-phone-interactions/src/main/AndroidManifest.xml b/wear/wear-phone-interactions/src/main/AndroidManifest.xml
index 3082842..4938f5f 100644
--- a/wear/wear-phone-interactions/src/main/AndroidManifest.xml
+++ b/wear/wear-phone-interactions/src/main/AndroidManifest.xml
@@ -16,4 +16,9 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+ <application>
+ <uses-library
+ android:name="wear-sdk"
+ android:required="false"/>
+ </application>
</manifest>
diff --git a/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/IRemoteInteractionsManager.kt b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/IRemoteInteractionsManager.kt
new file mode 100644
index 0000000..48b046e
--- /dev/null
+++ b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/IRemoteInteractionsManager.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.wear.phone.interactions.authentication
+
+import com.google.wear.services.remoteinteractions.RemoteInteractionsManager
+import java.util.concurrent.Executor
+import java.util.function.Consumer
+
+/**
+ * Forwards remote auth interaction availabilities to [RemoteInteractionsManager].
+ */
+internal interface IRemoteInteractionsManager {
+
+ /** Whether the availability status API is supported. */
+ val isAvailabilityStatusApiSupported: Boolean
+
+ /** Forwards a call [registerRemoteAuthClientStatusListener] to [RemoteInteractionsManager.registerRemoteAuthClientStatusListener]. */
+ fun registerRemoteAuthClientStatusListener(executor: Executor, listener: Consumer<Int>)
+
+ /** Forwards a call [unregisterRemoteAuthClientStatusListener] to [RemoteInteractionsManager.unregisterRemoteAuthClientStatusListener]. */
+ fun unregisterRemoteAuthClientStatusListener(listener: Consumer<Int>)
+}
diff --git a/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/RemoteAuthClient.kt b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/RemoteAuthClient.kt
index 8a95f2d..0b2a3b0 100644
--- a/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/RemoteAuthClient.kt
+++ b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/RemoteAuthClient.kt
@@ -32,6 +32,11 @@
import java.util.ArrayDeque
import java.util.Queue
import java.util.concurrent.Executor
+import java.util.function.Consumer
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.flowOf
/**
* Provides a client for supporting remote authentication on Wear. The authentication session
@@ -86,6 +91,7 @@
* ```
*/
public class RemoteAuthClient internal constructor(
+ private val remoteInteractionsManager: IRemoteInteractionsManager,
private val serviceBinder: ServiceBinder,
private val uiThreadExecutor: Executor,
private val packageName: String
@@ -130,6 +136,32 @@
internal const val ACTION_AUTH: String =
"android.support.wearable.authentication.action.OAUTH"
+ /**
+ * The remote auth's availability is unknown.
+ *
+ * On older devices, [STATUS_UNKNOWN] is returned as we can not determine the availability states. To preserve
+ * compatibility with existing devices behavior, try [sendAuthorizationRequest] and handle
+ * error codes accordingly.
+ */
+ public const val STATUS_UNKNOWN = 0
+
+ /**
+ * Indicates that remote auth is unavailable because there is no paired device capable of handling the remote interaction.
+ */
+ public const val STATUS_UNAVAILABLE = 1
+
+ /**
+ * Indicates that remote auth is temporarily unavailable.
+ *
+ * There is a known paired device, but it is not currently connected or reachable to handle the remote interaction.
+ */
+ public const val STATUS_TEMPORARILY_UNAVAILABLE = 2
+
+ /**
+ * Indicates that remote auth is available with a connected device capable to handle the remote interaction.
+ */
+ public const val STATUS_AVAILABLE = 3
+
/** Indicates 3p authentication is finished without error */
public const val NO_ERROR: Int = -1
@@ -158,6 +190,7 @@
public fun create(context: Context): RemoteAuthClient {
val appContext: Context = context.applicationContext
return RemoteAuthClient(
+ RemoteInteractionsManagerCompat(appContext),
object : ServiceBinder {
override fun bindService(
intent: Intent,
@@ -210,6 +243,50 @@
}
/**
+ * Returns status indicating whether remote auth operation (such as [sendAuthorizationRequest]) is available.
+ *
+ * In scenarios of restricted connection or temporary disconnection with a paired device,
+ * remote auth operations will not be available. Please check status before [sendAuthorizationRequest]
+ * to provide better experience for the user.
+ *
+ * On older wear devices which do not support availability status, it will always return [STATUS_UNKNOWN].
+ * Wear devices start to support determining the availability status from Wear Sdk WEAR_TIRAMISU_4.
+ *
+ * @sample androidx.wear.phone.interactions.samples.AuthAvailabilitySample
+ *
+ * @return a [Flow] with a stream of status updates that could be one of [STATUS_UNKNOWN],
+ * [STATUS_UNAVAILABLE], [STATUS_TEMPORARILY_UNAVAILABLE], [STATUS_AVAILABLE].
+ *
+ */
+ public val availabilityStatus: Flow<Int> get() {
+ if (!remoteInteractionsManager.isAvailabilityStatusApiSupported) {
+ return flowOf(STATUS_UNKNOWN)
+ }
+
+ return getRemoteAuthAvailableInternal()
+ }
+
+ private fun getRemoteAuthAvailableInternal(): Flow<Int> {
+ return callbackFlow {
+ val callback =
+ object : Consumer<Int> {
+ override fun accept(value: Int) {
+ // Emit WearSDK values through AndroidX with 1:1 mapping.
+ trySend(value)
+ }
+ }
+
+ remoteInteractionsManager
+ .registerRemoteAuthClientStatusListener(Runnable::run, callback)
+
+ awaitClose {
+ remoteInteractionsManager
+ .unregisterRemoteAuthClientStatusListener(callback)
+ }
+ }
+ }
+
+ /**
* Send a remote auth request. This will cause an authorization UI to be presented on
* the user's phone.
* This request is asynchronous; the callback provided will be be notified when the request
diff --git a/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/RemoteInteractionsManagerCompat.kt b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/RemoteInteractionsManagerCompat.kt
new file mode 100644
index 0000000..44b0fcb
--- /dev/null
+++ b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/RemoteInteractionsManagerCompat.kt
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.wear.phone.interactions.authentication
+
+import android.content.Context
+import com.google.wear.Sdk
+import com.google.wear.services.remoteinteractions.RemoteInteractionsManager
+import java.util.concurrent.Executor
+import java.util.function.Consumer
+
+/**
+ * Forwards remote auth interaction availabilities to [RemoteInteractionsManager].
+ */
+internal open class RemoteInteractionsManagerCompat(context: Context) : IRemoteInteractionsManager {
+
+ // TODO(b/307543793): Reuse the generalized `WearApiVersionHelper` once available.
+ private val wearApiVersion: WearApiVersion = WearApiVersion()
+
+ private val remoteInteractionsManager: RemoteInteractionsManager? =
+ if (isAvailabilityStatusApiSupported)
+ Sdk.getWearManager(context, RemoteInteractionsManager::class.java)
+ else
+ null
+
+ override val isAvailabilityStatusApiSupported: Boolean
+ get() = wearApiVersion.wearSdkVersion >= 4
+
+ override fun registerRemoteAuthClientStatusListener(
+ executor: Executor,
+ listener: Consumer<Int>
+ ) {
+ if (isAvailabilityStatusApiSupported) {
+ remoteInteractionsManager!!.registerRemoteAuthClientStatusListener(
+ executor,
+ listener
+ )
+ } else {
+ throw UnsupportedOperationException("Should not call wear sdk when not supported.")
+ }
+ }
+
+ override fun unregisterRemoteAuthClientStatusListener(listener: Consumer<Int>) {
+ if (isAvailabilityStatusApiSupported) {
+ remoteInteractionsManager!!.unregisterRemoteAuthClientStatusListener(
+ listener
+ )
+ } else {
+ throw UnsupportedOperationException("Should not call wear sdk when not supported.")
+ }
+ }
+}
diff --git a/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/WearApiVersion.kt b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/WearApiVersion.kt
new file mode 100644
index 0000000..79a2ada
--- /dev/null
+++ b/wear/wear-phone-interactions/src/main/java/androidx/wear/phone/interactions/authentication/WearApiVersion.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.wear.phone.interactions.authentication
+
+import android.os.Build
+import com.google.wear.Sdk
+
+/**
+ * Provides wear sdk api version.
+ */
+internal class WearApiVersion {
+
+ // TODO(b/307543793): Reuse the generalized `WearApiVersionHelper` once available.
+ /** Exposes version of wear sdk. Returns 0 if wear-sdk is not present. */
+ val wearSdkVersion: Int
+ get() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ // Wear SDK INT can only be accessed safely from UPSIDE_DOWN_CAKE, introduced from tiramisu kr2.
+ // Or crashes with `NoSuchField` will be experienced.
+ return Sdk.VERSION.WEAR_SDK_INT
+ }
+ return 0
+ }
+}
diff --git a/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt b/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt
index f53fb50..6c881c7 100644
--- a/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt
+++ b/wear/wear-phone-interactions/src/test/java/androidx/wear/phone/interactions/authentication/RemoteAuthTest.kt
@@ -30,9 +30,19 @@
import androidx.wear.phone.interactions.WearPhoneInteractionsTestRunner
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.Executor
+import java.util.function.Consumer
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doAnswer
+import org.mockito.kotlin.mock
+import org.mockito.kotlin.never
+import org.mockito.kotlin.reset
+import org.mockito.kotlin.verify
+import org.mockito.kotlin.whenever
import org.robolectric.Shadows
import org.robolectric.annotation.Config
import org.robolectric.annotation.internal.DoNotInstrument
@@ -90,8 +100,13 @@
private var fakeServiceBinder: FakeServiceBinder = FakeServiceBinder()
private var fakeService: FakeClockworkHomeAuthService = FakeClockworkHomeAuthService()
+ private val remoteInteractionsManager: IRemoteInteractionsManager = mock()
private var clientUnderTest: RemoteAuthClient =
- RemoteAuthClient(fakeServiceBinder, DIRECT_EXECUTOR, appPackageName)
+ RemoteAuthClient(
+ remoteInteractionsManager,
+ fakeServiceBinder,
+ DIRECT_EXECUTOR,
+ appPackageName)
private val executor: Executor = SyncExecutor()
@Test
@@ -200,6 +215,44 @@
assertThat(fakeServiceBinder.state).isEqualTo(ConnectionState.DISCONNECTED)
}
+ @Test
+ fun remoteAuthClientStatus_notSupported_unknown() {
+ whenever(remoteInteractionsManager.isAvailabilityStatusApiSupported).thenReturn(false)
+ val isAvailable = runBlocking {
+ clientUnderTest.availabilityStatus.first()
+ }
+
+ assertThat(isAvailable).isEqualTo(RemoteAuthClient.STATUS_UNKNOWN)
+ verify(remoteInteractionsManager, never())
+ .registerRemoteAuthClientStatusListener(any(), any())
+ }
+
+ @Test
+ fun remoteAuthClientStatus_isSupported_propagateListenerValues() {
+ for (remoteStatus in listOf(
+ RemoteAuthClient.STATUS_AVAILABLE,
+ RemoteAuthClient.STATUS_UNAVAILABLE,
+ RemoteAuthClient.STATUS_TEMPORARILY_UNAVAILABLE)) {
+ whenever(remoteInteractionsManager.isAvailabilityStatusApiSupported).thenReturn(true)
+ doAnswer {
+ @Suppress("UNCHECKED_CAST")
+ val consumer: Consumer<Int> = it.arguments[1] as (Consumer<Int>)
+ consumer.accept(remoteStatus)
+ }
+ .whenever(remoteInteractionsManager)
+ .registerRemoteAuthClientStatusListener(any(), any())
+
+ val isAvailable = runBlocking {
+ clientUnderTest.availabilityStatus.first()
+ }
+
+ assertThat(isAvailable).isEqualTo(remoteStatus)
+ verify(remoteInteractionsManager).registerRemoteAuthClientStatusListener(any(), any())
+ verify(remoteInteractionsManager).unregisterRemoteAuthClientStatusListener(any())
+ reset(remoteInteractionsManager)
+ }
+ }
+
internal enum class ConnectionState {
DISCONNECTED, CONNECTING, CONNECTED
}